diff --git a/package.json b/package.json index 02845670..76d45a38 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "music21j", - "version": "0.10.3", + "version": "0.10.4", "description": "A toolkit for computer-aided musicology, Javascript version", "main": "src/music21_modules.js", "files": [ diff --git a/releases/music21.debug.js b/releases/music21.debug.js index 0182b72a..8e54f036 100644 --- a/releases/music21.debug.js +++ b/releases/music21.debug.js @@ -1,5 +1,5 @@ /** - * music21j version 0.10.2 built on 2021-03-07. + * music21j version 0.10.4 built on 2021-03-20. * Copyright (c) 2013-2021 Michael Scott Cuthbert and cuthbertLab * BSD License, see LICENSE * @@ -970,14 +970,10 @@ function sampleCallback(frequency) { return 0; } // from Chris Wilson. Replace with Jordi's -function autoCorrelate(buf, sampleRate, minFrequency, maxFrequency) { +function autoCorrelate(buf, sampleRate, minFrequency = 0, maxFrequency) { var SIZE = buf.length; var MAX_SAMPLES = Math.floor(SIZE / 2); - if (minFrequency === undefined) { - minFrequency = 0; - } - if (maxFrequency === undefined) { maxFrequency = sampleRate; } @@ -1051,15 +1047,8 @@ function autoCorrelate(buf, sampleRate, minFrequency, maxFrequency) { return -1; // var best_frequency = sampleRate/best_offset; } -/** - * - * @function midiNumDiffFromFrequency - * @param {Number} frequency - * @returns {Array} [miniNumber, centsOff] - */ - function midiNumDiffFromFrequency(frequency) { - var midiNumFloat = 12 * (Math.log(frequency / 440) / Math.log(2)) + 69; + var midiNumFloat = 12 * Math.log2(frequency / 440) + 69; var midiNum = Math.round(midiNumFloat); var centsOff = Math.round(100 * (midiNumFloat - midiNum)); return [midiNum, centsOff]; @@ -1415,6 +1404,8 @@ class Music21Object extends _prebase__WEBPACK_IMPORTED_MODULE_8__.ProtoM21Object } set offset(newOffset) { + newOffset = _common__WEBPACK_IMPORTED_MODULE_4__.opFrac(newOffset); + if (this.activeSite === undefined) { this._naiveOffset = newOffset; } else { @@ -6079,22 +6070,38 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "hyphenToCamelCase": () => (/* binding */ hyphenToCamelCase), /* harmony export */ "numToIntOrFloat": () => (/* binding */ numToIntOrFloat), /* harmony export */ "pathSimplify": () => (/* binding */ pathSimplify), -/* harmony export */ "isFloat": () => (/* binding */ isFloat) +/* harmony export */ "isFloat": () => (/* binding */ isFloat), +/* harmony export */ "opFrac": () => (/* binding */ opFrac) /* harmony export */ }); /* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ "./node_modules/core-js/modules/es.array.iterator.js"); /* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.constructor.js */ "./node_modules/core-js/modules/es.regexp.constructor.js"); -/* harmony import */ var core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ "./node_modules/core-js/modules/es.regexp.to-string.js"); -/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js"); -/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.search.js */ "./node_modules/core-js/modules/es.string.search.js"); -/* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ "./node_modules/core-js/modules/es.string.split.js"); -/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_5__); -/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ "./node_modules/core-js/modules/web.dom-collections.iterator.js"); -/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__); +/* harmony import */ var core_js_modules_es_array_buffer_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array-buffer.constructor.js */ "./node_modules/core-js/modules/es.array-buffer.constructor.js"); +/* harmony import */ var core_js_modules_es_array_buffer_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_buffer_constructor_js__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var core_js_modules_es_array_buffer_slice_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array-buffer.slice.js */ "./node_modules/core-js/modules/es.array-buffer.slice.js"); +/* harmony import */ var core_js_modules_es_array_buffer_slice_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_buffer_slice_js__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.regexp.constructor.js */ "./node_modules/core-js/modules/es.regexp.constructor.js"); +/* harmony import */ var core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ "./node_modules/core-js/modules/es.regexp.to-string.js"); +/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js"); +/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.search.js */ "./node_modules/core-js/modules/es.string.search.js"); +/* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_6__); +/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ "./node_modules/core-js/modules/es.string.split.js"); +/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_7__); +/* harmony import */ var core_js_modules_es_typed_array_float32_array_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.typed-array.float32-array.js */ "./node_modules/core-js/modules/es.typed-array.float32-array.js"); +/* harmony import */ var core_js_modules_es_typed_array_float32_array_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_float32_array_js__WEBPACK_IMPORTED_MODULE_8__); +/* harmony import */ var core_js_modules_es_typed_array_int32_array_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.typed-array.int32-array.js */ "./node_modules/core-js/modules/es.typed-array.int32-array.js"); +/* harmony import */ var core_js_modules_es_typed_array_int32_array_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_int32_array_js__WEBPACK_IMPORTED_MODULE_9__); +/* harmony import */ var core_js_modules_es_typed_array_to_locale_string_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.typed-array.to-locale-string.js */ "./node_modules/core-js/modules/es.typed-array.to-locale-string.js"); +/* harmony import */ var core_js_modules_es_typed_array_to_locale_string_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_to_locale_string_js__WEBPACK_IMPORTED_MODULE_10__); +/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ "./node_modules/core-js/modules/web.dom-collections.iterator.js"); +/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_11__); + + + + + @@ -6569,27 +6576,61 @@ var pathSimplify = path => { }; function isFloat(num) { return Number(num) === num && num % 1 !== 0; -} // TODO: implement and test -// export function opFrac(num) { -// -// //const DENOM_LIMIT = 65535; // move to another location -// if (isFloat(num)) { // no builtin isFloat function exists -// // no fraction support yet -// return num; -// } -// else if (Number.isInteger(num)) { -// return num; // number, no int's -// } -// else if (num === 'Fraction') { // Replace with fraction object -// return num; // no fraction support yet -// } -// else if (num === null) { -// return null; -// } -// else { -// return null; -// } -// } +} +var shared_buffer = new ArrayBuffer(4); // just enough bytes for 32-bit Array + +var int_view = new Int32Array(shared_buffer); +var float_view = new Float32Array(shared_buffer); + +function byte_2_relevant_bits(num) { + // extract bits 24 to 28 of the floating point number. + // if all 1s or all 0s then it's close enough to a + // float expressible as fraction with power of 2 denominator + var out = ''; + + for (var i = 10; i >= 4; i -= 1) { + // noinspection JSBitwiseOperatorUsage + out += num & 1 << i ? '1' : '0'; // eslint-disable-line no-bitwise + } + + return out; +} + +function is_power_of_2_denominator(num) { + float_view[0] = num; + var float_as_int = int_view[0]; // magic conversion + + var out_bits = byte_2_relevant_bits(float_as_int); + + if (out_bits === '1111111' || out_bits === '0000000') { + return true; + } + + return false; +} +/** + * Returns either the original number (never a fraction, since js does not have them) + * or the slightly rounded, correct representation. + * + * Uses a shared memory buffer to give the conversion. + */ + + +function opFrac(num) { + if (num === Math.floor(num)) { + return num; + } + + if (num * 1024 === Math.floor(num * 1024)) { + return num; + } + + if (is_power_of_2_denominator(num)) { + return parseFloat(num.toPrecision(6)); + } else { + return num; + } +} /***/ }), @@ -6839,6 +6880,7 @@ class Duration extends _prebase__WEBPACK_IMPORTED_MODULE_5__.ProtoM21Object { ql = 1.0; } + ql = _common__WEBPACK_IMPORTED_MODULE_3__.opFrac(ql); this._quarterLength = ql; this.updateFeaturesFromQl(); } @@ -6975,7 +7017,7 @@ class Duration extends _prebase__WEBPACK_IMPORTED_MODULE_5__.ProtoM21Object { tupletCorrectedQl *= tuplet.tupletMultiplier(); }); - this._quarterLength = tupletCorrectedQl; + this._quarterLength = _common__WEBPACK_IMPORTED_MODULE_3__.opFrac(tupletCorrectedQl); } updateFeaturesFromQl() { @@ -6988,7 +7030,7 @@ class Duration extends _prebase__WEBPACK_IMPORTED_MODULE_5__.ProtoM21Object { return; } - var powerOfTwo = Math.floor(Math.log(ql + 0.00001) / Math.log(2)); + var powerOfTwo = Math.floor(Math.log2(ql + 0.00001)); var typeNumber = quarterTypeIndex - powerOfTwo; this._type = ordinalTypeFromNum[typeNumber]; // console.log(this._findDots); @@ -7597,7 +7639,7 @@ class GeneralMordent extends Ornament { } /** * note that Vexflow's definition of mordent/inverted mordent is backwards - * from music theory. + * from music theory. -- see music21p for more details. */ class Mordent extends GeneralMordent { @@ -19366,8 +19408,7 @@ class Stream extends _base__WEBPACK_IMPORTED_MODULE_14__.Music21Object { callback(el, i, this); i += 1; } - } // TODO(MSC) 2020-07-20 -- Add .map() => stream.iterator.StreamIterator.map() - + } get duration() { if (this._overriddenDuration instanceof _duration__WEBPACK_IMPORTED_MODULE_17__.Duration) { @@ -19470,8 +19511,6 @@ class Stream extends _base__WEBPACK_IMPORTED_MODULE_14__.Music21Object { /** * Return an array of the outer bounds of each MetronomeMark in the stream. * [offsetStart, offsetEnd, tempo.MetronomeMark] - * - * @returns {Array} */ @@ -21358,7 +21397,7 @@ class Stream extends _base__WEBPACK_IMPORTED_MODULE_14__.Music21Object { * * elementType can be `svg` (default) or `canvas` * - * returns a $div encompasing either the SVG or Canvas element. + * returns a $div encompassing either the SVG or Canvas element. * * if width is undefined, will use `this.estimateStaffLength()` * + `this.renderOptions.staffPadding` @@ -21419,10 +21458,6 @@ class Stream extends _base__WEBPACK_IMPORTED_MODULE_14__.Music21Object { * * Called from appendNewDOM() etc. * - * @param {number|string|undefined} [width] - * @param {number|string|undefined} [height] - * @param {string} [elementType='svg'] - what type of element, default = svg - * @returns {JQuery} canvas or svg */ @@ -23673,13 +23708,14 @@ function makeBeams(s, { continue; // nothing to beam. } - var noteStream = _m.notesAndRests; + var noteStreamIterator = _m.notesAndRests; var durList = []; - for (var n of noteStream) { + for (var n of noteStreamIterator) { durList.push(n.duration); } + var noteStream = noteStreamIterator.stream(); var durSumErr = durList.map(a => a.quarterLength).reduce((total, val) => total + val); var durSum = parseFloat(durSumErr.toFixed(8)); // remove fraction errors @@ -24624,9 +24660,10 @@ var regularExpressions = { * See music21p for examples of what can go into tinyNotation. It's an * adaptation of Lilypond format, by design Extremely simple! * - * @memberof music21.tinyNotation - * @param {string} textIn - a valid tinyNotation string - * @returns {music21.stream.Part|music21.stream.Measure} - a Stream or Part object (if multiple measures) + * * textIn - a valid tinyNotation string + * + * * returns {music21.stream.Part|music21.stream.Measure} - a Stream or Part object (if multiple measures) + * * @example * var t = "3/4 c4 B8 c d4 e2."; * var p = music21.tinyNotation.TinyNotation(t); @@ -24651,7 +24688,7 @@ function TinyNotation(textIn) { endStateAfterNote: false }; var chordObj = null; - var tnre = regularExpressions; // faster typing + var tnre = regularExpressions; // for ease in writing var measureNumber = 1; @@ -31390,6 +31427,34 @@ module.exports = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u '\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; +/***/ }), + +/***/ "./node_modules/core-js/modules/es.array-buffer.constructor.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js/modules/es.array-buffer.constructor.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var arrayBufferModule = __webpack_require__(/*! ../internals/array-buffer */ "./node_modules/core-js/internals/array-buffer.js"); +var setSpecies = __webpack_require__(/*! ../internals/set-species */ "./node_modules/core-js/internals/set-species.js"); + +var ARRAY_BUFFER = 'ArrayBuffer'; +var ArrayBuffer = arrayBufferModule[ARRAY_BUFFER]; +var NativeArrayBuffer = global[ARRAY_BUFFER]; + +// `ArrayBuffer` constructor +// https://tc39.es/ecma262/#sec-arraybuffer-constructor +$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, { + ArrayBuffer: ArrayBuffer +}); + +setSpecies(ARRAY_BUFFER); + + /***/ }), /***/ "./node_modules/core-js/modules/es.array-buffer.slice.js": @@ -32566,6 +32631,25 @@ createTypedArrayConstructor('Float32', function (init) { }); +/***/ }), + +/***/ "./node_modules/core-js/modules/es.typed-array.int32-array.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/modules/es.typed-array.int32-array.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +var createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ "./node_modules/core-js/internals/typed-array-constructor.js"); + +// `Int32Array` constructor +// https://tc39.es/ecma262/#sec-typedarray-objects +createTypedArrayConstructor('Int32', function (init) { + return function Int32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + + /***/ }), /***/ "./node_modules/core-js/modules/es.typed-array.to-locale-string.js": diff --git a/releases/music21.debug.js.map b/releases/music21.debug.js.map index 279c5b0c..560fae66 100644 --- a/releases/music21.debug.js.map +++ b/releases/music21.debug.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://music21/webpack/universalModuleDefinition","webpack://music21/./src/music21/articulations.ts","webpack://music21/./src/music21/audioRecording.ts","webpack://music21/./src/music21/audioSearch.ts","webpack://music21/./src/music21/bar.ts","webpack://music21/./src/music21/base.ts","webpack://music21/./src/music21/beam.ts","webpack://music21/./src/music21/chord.ts","webpack://music21/./src/music21/chordTables.ts","webpack://music21/./src/music21/clef.ts","webpack://music21/./src/music21/common.ts","webpack://music21/./src/music21/converter.ts","webpack://music21/./src/music21/debug.ts","webpack://music21/./src/music21/derivation.ts","webpack://music21/./src/music21/duration.ts","webpack://music21/./src/music21/dynamics.ts","webpack://music21/./src/music21/editorial.ts","webpack://music21/./src/music21/exceptions21.ts","webpack://music21/./src/music21/expressions.ts","webpack://music21/./src/music21/figuredBass.ts","webpack://music21/./src/music21/fromPython.ts","webpack://music21/./src/music21/harmony.ts","webpack://music21/./src/music21/instrument.ts","webpack://music21/./src/music21/interval.ts","webpack://music21/./src/music21/key.ts","webpack://music21/./src/music21/keyboard.ts","webpack://music21/./src/music21/layout.ts","webpack://music21/./src/music21/meter.ts","webpack://music21/./src/music21/miditools.ts","webpack://music21/./src/music21/musicxml.ts","webpack://music21/./src/music21/musicxml/m21ToXml.ts","webpack://music21/./src/music21/musicxml/xmlToM21.ts","webpack://music21/./src/music21/note.ts","webpack://music21/./src/music21/parseLoader.ts","webpack://music21/./src/music21/pitch.ts","webpack://music21/./src/music21/prebase.ts","webpack://music21/./src/music21/renderOptions.ts","webpack://music21/./src/music21/roman.ts","webpack://music21/./src/music21/scale.ts","webpack://music21/./src/music21/sites.ts","webpack://music21/./src/music21/stream.ts","webpack://music21/./src/music21/stream/filters.ts","webpack://music21/./src/music21/stream/iterator.ts","webpack://music21/./src/music21/stream/makeNotation.ts","webpack://music21/./src/music21/svgs.ts","webpack://music21/./src/music21/tempo.ts","webpack://music21/./src/music21/tie.ts","webpack://music21/./src/music21/tinyNotation.ts","webpack://music21/./src/music21/vfShow.ts","webpack://music21/./src/music21/voiceLeading.ts","webpack://music21/./src/music21/webmidi.ts","webpack://music21/./node_modules/core-js/internals/a-function.js","webpack://music21/./node_modules/core-js/internals/a-possible-prototype.js","webpack://music21/./node_modules/core-js/internals/add-to-unscopables.js","webpack://music21/./node_modules/core-js/internals/advance-string-index.js","webpack://music21/./node_modules/core-js/internals/an-instance.js","webpack://music21/./node_modules/core-js/internals/an-object.js","webpack://music21/./node_modules/core-js/internals/array-buffer-native.js","webpack://music21/./node_modules/core-js/internals/array-buffer-view-core.js","webpack://music21/./node_modules/core-js/internals/array-buffer.js","webpack://music21/./node_modules/core-js/internals/array-fill.js","webpack://music21/./node_modules/core-js/internals/array-for-each.js","webpack://music21/./node_modules/core-js/internals/array-from.js","webpack://music21/./node_modules/core-js/internals/array-includes.js","webpack://music21/./node_modules/core-js/internals/array-iteration.js","webpack://music21/./node_modules/core-js/internals/array-method-is-strict.js","webpack://music21/./node_modules/core-js/internals/array-reduce.js","webpack://music21/./node_modules/core-js/internals/array-species-create.js","webpack://music21/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://music21/./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://music21/./node_modules/core-js/internals/classof-raw.js","webpack://music21/./node_modules/core-js/internals/classof.js","webpack://music21/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://music21/./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://music21/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://music21/./node_modules/core-js/internals/create-iterator-constructor.js","webpack://music21/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://music21/./node_modules/core-js/internals/create-property-descriptor.js","webpack://music21/./node_modules/core-js/internals/create-property.js","webpack://music21/./node_modules/core-js/internals/define-iterator.js","webpack://music21/./node_modules/core-js/internals/descriptors.js","webpack://music21/./node_modules/core-js/internals/document-create-element.js","webpack://music21/./node_modules/core-js/internals/dom-iterables.js","webpack://music21/./node_modules/core-js/internals/engine-is-node.js","webpack://music21/./node_modules/core-js/internals/engine-user-agent.js","webpack://music21/./node_modules/core-js/internals/engine-v8-version.js","webpack://music21/./node_modules/core-js/internals/enum-bug-keys.js","webpack://music21/./node_modules/core-js/internals/export.js","webpack://music21/./node_modules/core-js/internals/fails.js","webpack://music21/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://music21/./node_modules/core-js/internals/flatten-into-array.js","webpack://music21/./node_modules/core-js/internals/function-bind-context.js","webpack://music21/./node_modules/core-js/internals/get-built-in.js","webpack://music21/./node_modules/core-js/internals/get-iterator-method.js","webpack://music21/./node_modules/core-js/internals/get-iterator.js","webpack://music21/./node_modules/core-js/internals/get-substitution.js","webpack://music21/./node_modules/core-js/internals/global.js","webpack://music21/./node_modules/core-js/internals/has.js","webpack://music21/./node_modules/core-js/internals/hidden-keys.js","webpack://music21/./node_modules/core-js/internals/html.js","webpack://music21/./node_modules/core-js/internals/ie8-dom-define.js","webpack://music21/./node_modules/core-js/internals/ieee754.js","webpack://music21/./node_modules/core-js/internals/indexed-object.js","webpack://music21/./node_modules/core-js/internals/inherit-if-required.js","webpack://music21/./node_modules/core-js/internals/inspect-source.js","webpack://music21/./node_modules/core-js/internals/internal-state.js","webpack://music21/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://music21/./node_modules/core-js/internals/is-array.js","webpack://music21/./node_modules/core-js/internals/is-forced.js","webpack://music21/./node_modules/core-js/internals/is-object.js","webpack://music21/./node_modules/core-js/internals/is-pure.js","webpack://music21/./node_modules/core-js/internals/is-regexp.js","webpack://music21/./node_modules/core-js/internals/iterator-close.js","webpack://music21/./node_modules/core-js/internals/iterators-core.js","webpack://music21/./node_modules/core-js/internals/iterators.js","webpack://music21/./node_modules/core-js/internals/native-symbol.js","webpack://music21/./node_modules/core-js/internals/native-url.js","webpack://music21/./node_modules/core-js/internals/native-weak-map.js","webpack://music21/./node_modules/core-js/internals/not-a-regexp.js","webpack://music21/./node_modules/core-js/internals/object-assign.js","webpack://music21/./node_modules/core-js/internals/object-create.js","webpack://music21/./node_modules/core-js/internals/object-define-properties.js","webpack://music21/./node_modules/core-js/internals/object-define-property.js","webpack://music21/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://music21/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://music21/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://music21/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://music21/./node_modules/core-js/internals/object-keys-internal.js","webpack://music21/./node_modules/core-js/internals/object-keys.js","webpack://music21/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://music21/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://music21/./node_modules/core-js/internals/own-keys.js","webpack://music21/./node_modules/core-js/internals/path.js","webpack://music21/./node_modules/core-js/internals/redefine-all.js","webpack://music21/./node_modules/core-js/internals/redefine.js","webpack://music21/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://music21/./node_modules/core-js/internals/regexp-exec.js","webpack://music21/./node_modules/core-js/internals/regexp-flags.js","webpack://music21/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://music21/./node_modules/core-js/internals/require-object-coercible.js","webpack://music21/./node_modules/core-js/internals/same-value.js","webpack://music21/./node_modules/core-js/internals/set-global.js","webpack://music21/./node_modules/core-js/internals/set-species.js","webpack://music21/./node_modules/core-js/internals/set-to-string-tag.js","webpack://music21/./node_modules/core-js/internals/shared-key.js","webpack://music21/./node_modules/core-js/internals/shared-store.js","webpack://music21/./node_modules/core-js/internals/shared.js","webpack://music21/./node_modules/core-js/internals/species-constructor.js","webpack://music21/./node_modules/core-js/internals/string-multibyte.js","webpack://music21/./node_modules/core-js/internals/string-punycode-to-ascii.js","webpack://music21/./node_modules/core-js/internals/string-repeat.js","webpack://music21/./node_modules/core-js/internals/string-trim-forced.js","webpack://music21/./node_modules/core-js/internals/string-trim.js","webpack://music21/./node_modules/core-js/internals/this-number-value.js","webpack://music21/./node_modules/core-js/internals/to-absolute-index.js","webpack://music21/./node_modules/core-js/internals/to-index.js","webpack://music21/./node_modules/core-js/internals/to-indexed-object.js","webpack://music21/./node_modules/core-js/internals/to-integer.js","webpack://music21/./node_modules/core-js/internals/to-length.js","webpack://music21/./node_modules/core-js/internals/to-object.js","webpack://music21/./node_modules/core-js/internals/to-offset.js","webpack://music21/./node_modules/core-js/internals/to-positive-integer.js","webpack://music21/./node_modules/core-js/internals/to-primitive.js","webpack://music21/./node_modules/core-js/internals/to-string-tag-support.js","webpack://music21/./node_modules/core-js/internals/typed-array-constructor.js","webpack://music21/./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","webpack://music21/./node_modules/core-js/internals/typed-array-from.js","webpack://music21/./node_modules/core-js/internals/uid.js","webpack://music21/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://music21/./node_modules/core-js/internals/well-known-symbol.js","webpack://music21/./node_modules/core-js/internals/whitespaces.js","webpack://music21/./node_modules/core-js/modules/es.array-buffer.slice.js","webpack://music21/./node_modules/core-js/modules/es.array.flat.js","webpack://music21/./node_modules/core-js/modules/es.array.iterator.js","webpack://music21/./node_modules/core-js/modules/es.array.reduce.js","webpack://music21/./node_modules/core-js/modules/es.array.reverse.js","webpack://music21/./node_modules/core-js/modules/es.array.sort.js","webpack://music21/./node_modules/core-js/modules/es.array.unscopables.flat.js","webpack://music21/./node_modules/core-js/modules/es.number.to-fixed.js","webpack://music21/./node_modules/core-js/modules/es.object.assign.js","webpack://music21/./node_modules/core-js/modules/es.regexp.constructor.js","webpack://music21/./node_modules/core-js/modules/es.regexp.exec.js","webpack://music21/./node_modules/core-js/modules/es.regexp.to-string.js","webpack://music21/./node_modules/core-js/modules/es.string.ends-with.js","webpack://music21/./node_modules/core-js/modules/es.string.includes.js","webpack://music21/./node_modules/core-js/modules/es.string.iterator.js","webpack://music21/./node_modules/core-js/modules/es.string.match.js","webpack://music21/./node_modules/core-js/modules/es.string.replace.js","webpack://music21/./node_modules/core-js/modules/es.string.search.js","webpack://music21/./node_modules/core-js/modules/es.string.split.js","webpack://music21/./node_modules/core-js/modules/es.string.starts-with.js","webpack://music21/./node_modules/core-js/modules/es.string.trim.js","webpack://music21/./node_modules/core-js/modules/es.symbol.description.js","webpack://music21/./node_modules/core-js/modules/es.typed-array.float32-array.js","webpack://music21/./node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack://music21/./node_modules/core-js/modules/es.typed-array.uint8-array.js","webpack://music21/./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack://music21/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://music21/./node_modules/core-js/modules/web.url-search-params.js","webpack://music21/./node_modules/core-js/modules/web.url.js","webpack://music21/./css/midiPlayer.css","webpack://music21/./node_modules/css-loader/dist/runtime/api.js","webpack://music21/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://music21/./node_modules/jquery-ui-bundle/jquery-ui.js","webpack://music21/./node_modules/jquery/dist/jquery.js","webpack://music21/./node_modules/jsonpickle/build/jsonpickle.min.js","webpack://music21/./node_modules/midicube/releases/midicube.js","webpack://music21/./node_modules/regenerator-runtime/runtime.js","webpack://music21/./css/midiPlayer.css?f453","webpack://music21/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://music21/./node_modules/vexflow/releases/vexflow-debug.js","webpack://music21/webpack/bootstrap","webpack://music21/webpack/runtime/compat get default export","webpack://music21/webpack/runtime/define property getters","webpack://music21/webpack/runtime/global","webpack://music21/webpack/runtime/hasOwnProperty shorthand","webpack://music21/webpack/runtime/make namespace object","webpack://music21/./src/music21_modules.js"],"names":["VERSION","window","$","jQuery","parseLoader"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVA;;;;;;;;AAQG;AACH;AAEA;AACA;AAEA,IAAY,qBAAZ;;AAAA,WAAY,qBAAZ,EAAiC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACH,CAPD,EAAY,qBAAqB,KAArB,qBAAqB,MAAjC;;AASO,IAAM,8CAA8C,GAAG,IAAI,GAAJ,CAC1D,CACI,CAAC,qBAAqB,CAAC,KAAvB,EAA8B,6EAA9B,CADJ,EAEI,CAAC,qBAAqB,CAAC,KAAvB,EAA8B,6EAA9B,CAFJ,EAGI,CAAC,qBAAqB,CAAC,IAAvB,EAA6B,4EAA7B,CAHJ,EAII,CAAC,qBAAqB,CAAC,KAAvB,EAA8B,6EAA9B,CAJJ,CAD0D,CAAvD;AAaP;;AAEG;;AACG,SAAU,iCAAV,CACF,GADE,EAEF,SAFE,EAGF,aAHE,EAGmB;AAErB,MAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB;AACH;;AACD,MAAI,CAAC,CAAC,aAAD,IAAkB,aAAa,KAAK,MAArC,MACI,SAAS,KAAK,qBAAqB,CAAC,SAApC,IACG,SAAS,KAAK,qBAAqB,CAAC,SAF3C,CAAJ,EAE2D;AACvD,aAAS,GAAG,qBAAqB,CAAC,KAAlC;AACH;;AACD,MAAI,SAAS,KAAK,qBAAqB,CAAC,SAAxC,EAAmD;AAC/C,QAAI,aAAa,KAAK,IAAtB,EAA4B;AACxB,eAAS,GAAG,qBAAqB,CAAC,KAAlC;AACH,KAFD,MAEO;AACH,eAAS,GAAG,qBAAqB,CAAC,KAAlC;AACH;AACJ,GAND,MAMO,IAAI,SAAS,KAAK,qBAAqB,CAAC,SAAxC,EAAmD;AACtD,QAAI,aAAa,KAAK,IAAtB,EAA4B;AACxB,eAAS,GAAG,qBAAqB,CAAC,KAAlC;AACH,KAFD,MAEO;AACH,eAAS,GAAG,qBAAqB,CAAC,KAAlC;AACH;AACJ;;AACD,MAAI,8CAA8C,CAAC,GAA/C,CAAmD,SAAnD,CAAJ,EAAmE;AAC/D,OAAG,CAAC,WAAJ,CAAgB,8CAA8C,CAAC,GAA/C,CAAmD,SAAnD,CAAhB;AACH;AACJ;AAED;;;;;;;;;;;AAWG;;AACG,MAAO,YAAP,SAA4B,oDAA5B,CAAkD;AAAxD;;AAII,qBAAmC,qBAAqB,CAAC,SAAzD;AAEA,wBAAuB,GAAvB;AACA,uBAAsB,GAAtB;AAYH;;AAlBuB,aAAT,SAAS;AAAK,WAAO,mCAAP;AAA6C;AAQtE;;;;AAIG;;;AACH,SAAO,CAAC;AAAC;AAAD,MAA6C,EAA9C,EAAgD;AACnD,QAAM,GAAG,GAAG,IAAI,kEAAJ,CAA0B,KAAK,eAA/B,CAAZ;AACA,qCAAiC,CAAC,GAAD,EAAM,KAAK,SAAX,EAAsB,aAAtB,CAAjC;AACA,WAAO,GAAP;AACH;;AAlBmD;AAqBxD;;;;;AAKG;;AACG,MAAO,kBAAP,SAAkC,YAAlC,CAA8C;AAC5B,aAAT,SAAS;AAAK,WAAO,yCAAP;AAAmD;;AAE5E;AACI;AACA,SAAK,IAAL,GAAY,qBAAZ;AACH;;AAN+C;AASpD;;;;;AAKG;;AACG,MAAO,mBAAP,SAAmC,YAAnC,CAA+C;AAC7B,aAAT,SAAS;AAAK,WAAO,0CAAP;AAAoD;;AAE7E;AACI;AACA,SAAK,IAAL,GAAY,sBAAZ;AACH;;AANgD;AASrD;;;;;AAKG;;AACG,MAAO,iBAAP,SAAiC,YAAjC,CAA6C;AAC3B,aAAT,SAAS;AAAK,WAAO,wCAAP;AAAkD;;AAE3E;AACI;AACA,SAAK,IAAL,GAAY,oBAAZ;AACH;;AAN8C;AASnD;;;;;AAKG;;AACG,MAAO,kBAAP,SAAkC,YAAlC,CAA8C;AAC5B,aAAT,SAAS;AAAK,WAAO,yCAAP;AAAmD;;AAE5E;AACI;AACA,SAAK,IAAL,GAAY,qBAAZ;AACH;;AAN+C;AASpD;;;;;AAKG;;AACG,MAAO,MAAP,SAAsB,mBAAtB,CAAyC;AACvB,aAAT,SAAS;AAAK,WAAO,6BAAP;AAAuC;;AAEhE;AACI;AACA,SAAK,IAAL,GAAY,QAAZ;AACA,SAAK,eAAL,GAAuB,IAAvB;AACA,SAAK,YAAL,GAAoB,GAApB;AACH;;AAR0C;AAW/C;;;;;AAKG;;AACG,MAAO,YAAP,SAA4B,MAA5B,CAAkC;AAChB,aAAT,SAAS;AAAK,WAAO,mCAAP;AAA6C;;AAEtE;AACI;AACA,SAAK,IAAL,GAAY,eAAZ;AACA,SAAK,eAAL,GAAuB,IAAvB;AACA,SAAK,YAAL,GAAoB,GAApB;AACH;;AARmC;AAWxC;;;;;AAKG;;AACG,MAAO,QAAP,SAAwB,kBAAxB,CAA0C;AACxB,aAAT,SAAS;AAAK,WAAO,+BAAP;AAAyC;;AAElE;AACI;AACA,SAAK,IAAL,GAAY,UAAZ;AACA,SAAK,eAAL,GAAuB,IAAvB;AACH;;AAP2C;AAUhD;;;;;AAKG;;AACG,MAAO,aAAP,SAA6B,QAA7B,CAAqC;AACnB,aAAT,SAAS;AAAK,WAAO,oCAAP;AAA8C;;AAEvE;AACI;AACA,SAAK,IAAL,GAAY,eAAZ;AACA,SAAK,eAAL,GAAuB,IAAvB;AACH;;AAPsC;AAU3C;;;;;AAKG;;AACG,MAAO,QAAP,SAAwB,QAAxB,CAAgC;AACd,aAAT,SAAS;AAAK,WAAO,+BAAP;AAAyC;;AAElE;AACI;AACA,SAAK,IAAL,GAAY,UAAZ;AACA,SAAK,eAAL,GAAuB,SAAvB;AACH;;AAPiC;AAUtC;;;;;;AAMG;;AACG,MAAO,OAAP,SAAuB,mBAAvB,CAA0C;AACxB,aAAT,SAAS;AAAK,WAAO,8BAAP;AAAwC;;AAEjE;AACI;AACA,+CAAa,kBAAb,EAAiC,IAAjC;AACA,SAAK,IAAL,GAAY,SAAZ;AACA,SAAK,eAAL,GAAuB,IAAvB;AACA,SAAK,YAAL,GAAoB,GAApB;AACH;;AAT2C;AAYhD;;;AAGG;;AACG,MAAO,MAAP,SAAsB,kBAAtB,CAAwC;AACtB,aAAT,SAAS;AAAK,WAAO,6BAAP;AAAuC;;AAEhE;AACI;AACA,SAAK,IAAL,GAAY,QAAZ;AACA,SAAK,eAAL,GAAuB,IAAvB;AACH;;AAPyC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5Q9C;AAgBA;;AAEG;;AACG,MAAO,QAAP,CAAe;AAajB,cAAY,MAAsB,EAAlC,EAAoC;AAVpC,qBAAqB,KAArB;AAWI,QAAM,MAAM,GAAG,GAAG,IAAI,EAAtB;AACA,SAAK,SAAL,GAAiB,MAAM,CAAC,SAAP,IAAoB,IAArC;AACA,SAAK,MAAL,GAAc,MAAd;AACA,SAAK,SAAL,GAAiB,KAAjB;AACA,SAAK,YAAL,GAAoB,SAApB;AACA,SAAK,YAAL,GAAoB,6DAApB;AACA,SAAK,mBAAL,GAA2B;AACvB,QAAE,EAAE,mBADmB;AAEvB,WAAK,EAAE,SAFgB;AAGvB,YAAM,EAAE,SAHe;AAIvB,mBAAa,EAAE,SAJQ;AAKvB,sBAAgB,EAAE;AALK,KAA3B;AAOA,SAAK,kBAAL,GAA0B;AACtB,QAAE,EAAE,gBADkB;AAEtB,WAAK,EAAE,SAFe;AAGtB,YAAM,EAAE,SAHc;AAItB,mBAAa,EAAE;AAJO,KAA1B;AAMA,SAAK,YAAL,GAAoB,SAApB;AACA;;;AAGG;;AACH,SAAK,OAAL,GAAe,SAAf;AAEH;AAED;;AAEG;;;AACH,WAAS;AACL,QAAM,WAAW,GAA2B;AACxC,WAAK,EAAE;AACH,wBAAgB,EAAE,KADf;AAEH,uBAAe,EAAE,KAFd;AAGH,wBAAgB,EAAE;AAHf,OADiC;AAMxC,WAAK,EAAE;AANiC,KAA5C;AASA,aAAS,CAAC,YAAV,CAAuB,YAAvB,CAAoC,WAApC,EACK,IADL,CACU,CAAC,IAAI,KAAK,oBAAL,CAA0B,CAA1B,CADf,EAEK,KAFL,CAEW,KAAK,IAAG;AACX,aAAO,CAAC,GAAR,CAAY,8CAAZ;AACA,aAAO,CAAC,GAAR,CAAY,KAAZ;AACH,KALL;AAMH;AAED;;;;;;;;;;AAUG;;;AACH,sBAAoB,CAAC,MAAD,EAAO;AACvB;;;AAGG;AACH,QAAM,UAAU,GAAG,KAAK,YAAL,CAAkB,UAAlB,EAAnB,CALuB,CAOvB;;AACA,QAAM,UAAU,GAAG,KAAK,YAAL,CAAkB,uBAAlB,CAA0C,MAA1C,CAAnB;AACA,cAAU,CAAC,OAAX,CAAmB,UAAnB;AAEA,QAAM,YAAY,GAAG,KAAK,YAAL,CAAkB,cAAlB,EAArB;AACA,gBAAY,CAAC,OAAb,GAAuB,wDAAvB;AACA,SAAK,YAAL,GAAoB,YAApB;AACA,cAAU,CAAC,OAAX,CAAmB,YAAnB;AAEA,SAAK,aAAL,CAAmB,UAAnB;AAEA,QAAM,QAAQ,GAAG,KAAK,YAAL,CAAkB,UAAlB,EAAjB;AACA,YAAQ,CAAC,IAAT,CAAc,KAAd,GAAsB,GAAtB;AACA,cAAU,CAAC,OAAX,CAAmB,QAAnB;AACA,YAAQ,CAAC,OAAT,CAAiB,KAAK,YAAL,CAAkB,WAAnC;AACH;AAED;;;;AAIG;;;AACH,eAAa,CAAC,MAAD,EAAO;AAChB;;;AAGG;AACH,QAAM,OAAO,GAAG,MAAM,CAAC,OAAvB;AACA,SAAK,OAAL,GAAe,OAAf;AACA,SAAK,OAAL,GAPgB,CAShB;;AACA,QAAM,UAAU,GAAG,IAAI,IAAJ,CAAS,CAAC,GAAD,EAAM,gBAAN,EAAwB,KAAxB,CAAT,EAAyC;AACxD,UAAI,EAAE;AADkD,KAAzC,CAAnB;AAGA,QAAM,SAAS,GAAG,GAAG,CAAC,eAAJ,CAAoB,UAApB,CAAlB;AACA,SAAK,MAAL,GAAc,IAAI,MAAJ,CAAW,SAAX,CAAd;AACA;;AAEG;;AACH,SAAK,MAAL,CAAY,SAAZ,GAAwB,CAAC,IAAG;AACxB,UAAM,IAAI,GAAG,CAAC,CAAC,IAAf;AACA,WAAK,YAAL,CAAkB,IAAlB;AACH,KAHD;;AAIA,OAAG,CAAC,eAAJ,CAAoB,SAApB;AAEA,SAAK,MAAL,CAAY,WAAZ,CAAwB;AACpB,aAAO,EAAE,MADW;AAEpB,YAAM,EAAE;AACJ,kBAAU,EAAE,KAAK,OAAL,CAAa;AADrB;AAFY,KAAxB;AAOA;;;;;;;AAOG;AACH;;AACA,SAAK,IAAL,CAAU,cAAV,GAA2B,CAAC,IAAG;AAC3B,UAAI,CAAC,KAAK,SAAV,EAAqB;AACjB;AACH;;AACD,WAAK,MAAL,CAAY,WAAZ,CAAwB;AACpB,eAAO,EAAE,QADW;AAEpB,cAAM,EAAE,CACJ,CAAC,CAAC,WAAF,CAAc,cAAd,CAA6B,CAA7B,CADI,EAEJ,CAAC,CAAC,WAAF,CAAc,cAAd,CAA6B,CAA7B,CAFI;AAFY,OAAxB;AAOH,KAXD;;AAaA,UAAM,CAAC,OAAP,CAAe,KAAK,IAApB;AAEA;;;;;AAKG;;AACH,SAAK,IAAL,CAAU,OAAV,CAAkB,KAAK,OAAL,CAAa,WAA/B;AACH;AAED;;;;AAIG;;;AACH,SAAO;AACH,QAAM,gBAAgB,GAAG,CAAzB;AACA,QAAM,iBAAiB,GAAG,CAA1B;AACA,SAAK,IAAL,GAAY,KAAK,OAAL,CAAa,qBAAb,CACR,KAAK,SADG,EAER,gBAFQ,EAGR,iBAHQ,CAAZ;AAKA,WAAO,KAAK,IAAZ;AACH;AAED;;AAEG;;;AACH,WAAS,CAAC,GAAD,EAAI;AACT,SAAK,IAAM,IAAX,IAAmB,GAAnB,EAAwB;AACpB,UAAI,MAAM,CAAC,cAAP,CAAsB,IAAtB,CAA2B,GAA3B,EAAgC,IAAhC,CAAJ,EAA2C;AACvC,aAAK,MAAL,CAAY,IAAZ,IAAoB,GAAG,CAAC,IAAD,CAAvB;AACH;AACJ;AACJ;;AAED,QAAM;AACF,SAAK,SAAL,GAAiB,IAAjB;AACH;;AAED,MAAI;AACA,SAAK,SAAL,GAAiB,KAAjB;AACH;;AAED,OAAK;AACD,SAAK,MAAL,CAAY,WAAZ,CAAwB;AAAE,aAAO,EAAE;AAAX,KAAxB;AACH;AAED;;AAEG;;;AACH,YAAU,CAAC,EAAD,EAAG;AACT,SAAK,YAAL,GAAoB,EAAE,IAAI,KAAK,MAAL,CAAY,QAAtC;AACA,SAAK,MAAL,CAAY,WAAZ,CAAwB;AAAE,aAAO,EAAE;AAAX,KAAxB;AACH;AAED;;AAEG;;;AACH,WAAS,CAAC,EAAD,EAAK,IAAL,EAAW,MAAX,EAAiB;AACtB,QAAI,OAAO,GAAG,WAAd;;AACA,QAAI,MAAM,KAAK,IAAf,EAAqB;AACjB;AACA,aAAO,GAAG,eAAV;AACH;;AACD,SAAK,YAAL,GAAoB,EAAE,IAAI,KAAK,MAAL,CAAY,QAAtC;AACA,QAAI,GAAG,IAAI,IAAI,KAAK,MAAL,CAAY,IAApB,IAA4B,WAAnC;;AACA,QAAI,CAAC,KAAK,YAAV,EAAwB;AACpB,WAAK,YAAL,GAAoB,IAAI,IAAG;AACvB,aAAK,aAAL,CACI,IADJ,EAEI,gBAAgB,IAAI,CAAC,GAAL,GAAW,QAAX,EAAhB,GAAwC,MAF5C;AAIH,OALD;AAMH;;AACD,SAAK,MAAL,CAAY,WAAZ,CAAwB;AACpB,aADoB;AAEpB;AAFoB,KAAxB;AAIH;;AAED,eAAa,CAAC,EAAD,EAAK,IAAL,EAAS;AAClB,SAAK,SAAL,CAAe,EAAf,EAAmB,IAAnB,EAAyB,IAAzB;AACH;;AAED,eAAa,CACT,IADS,EAET,WAAmB,YAFV,EAGT,YAAmB,MAHV,EAGgB;AAEzB,QAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAP,IAAc,MAAM,CAAC,SAAtB,EAAiC,eAAjC,CAAiD,IAAjD,CAAZ;AACA,QAAM,IAAI,GAAuB,QAAQ,CAAC,cAAT,CAAwB,SAAxB,CAAjC;AACA,QAAI,CAAC,IAAL,GAAY,GAAZ;AACA,QAAI,CAAC,QAAL,GAAgB,QAAhB;AACH;;AAED,yBAAuB,CAAC,UAAD,EAAuB;AAC1C,QAAI,UAAU,CAAC,aAAf,EAA8B;AAC1B;AACH;;AACD,QAAM,MAAM,GAAuB,QAAQ,CAAC,cAAT,CAAwB,UAAU,CAAC,EAAnC,CAAnC;;AACA,QAAI,CAAC,MAAL,EAAa;AACT;AACH;;AACD,cAAU,CAAC,KAAX,GAAmB,MAAM,CAAC,KAA1B;AACA,cAAU,CAAC,MAAX,GAAoB,MAAM,CAAC,MAA3B;AACA,cAAU,CAAC,aAAX,GAA2B,MAAM,CAAC,UAAP,CAAkB,IAAlB,CAA3B;AACH;AAED;;;;AAIG;;;AACH,iBAAe,CAAC,IAAD,EAAK;AAChB,SAAK,uBAAL,CAA6B,KAAK,mBAAlC,EADgB,CAEhB;;AACA,QAAM,OAAO,GAAG,CAAhB;AACA,QAAM,SAAS,GAAG,CAAlB;AACA,QAAM,OAAO,GAAG,IAAI,CAAC,KAAL,CAAW,KAAK,mBAAL,CAAyB,KAAzB,GAAiC,OAA5C,CAAhB;AACA,QAAM,YAAY,GAAG,IAAI,UAAJ,CACjB,KAAK,YAAL,CAAkB,iBADD,CAArB;AAIA,SAAK,YAAL,CAAkB,oBAAlB,CAAuC,YAAvC;AAEA,QAAM,aAAa,GAAG,KAAK,mBAAL,CAAyB,aAA/C;AACA,iBAAa,CAAC,SAAd,CACI,CADJ,EAEI,CAFJ,EAGI,KAAK,mBAAL,CAAyB,KAH7B,EAII,KAAK,mBAAL,CAAyB,MAJ7B;AAMA,iBAAa,CAAC,SAAd,GAA0B,SAA1B;AACA,iBAAa,CAAC,OAAd,GAAwB,OAAxB;AACA,QAAM,UAAU,GAAG,KAAK,YAAL,CAAkB,iBAAlB,GAAsC,OAAzD,CArBgB,CAuBhB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,OAApB,EAA6B,EAAE,CAA/B,EAAkC;AAC9B,UAAI,SAAS,GAAG,CAAhB;AACA,UAAM,MAAM,GAAG,IAAI,CAAC,KAAL,CAAW,CAAC,GAAG,UAAf,CAAf;;AACA,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,UAApB,EAAgC,CAAC,EAAjC,EAAqC;AACjC,iBAAS,IAAI,YAAY,CAAC,MAAM,GAAG,CAAV,CAAzB;AACH;;AACD,eAAS,GACH,SAAS,IACR,KAAK,mBAAL,CAAyB,MAAzB,GAAkC,GAD1B,CAAT,GAEA,UAHN;AAIA,mBAAa,CAAC,SAAd,GACM,UAAU,IAAI,CAAC,KAAL,CAAW,CAAC,GAAG,GAAJ,GAAU,OAArB,CAAV,GAA0C,cADhD;AAEA,mBAAa,CAAC,QAAd,CACI,CAAC,GAAG,OADR,EAEI,KAAK,mBAAL,CAAyB,MAF7B,EAGI,SAHJ,EAII,CAAC,CAAD,GAAK,SAJT;AAMH;;AAED,SAAK,mBAAL,CAAyB,gBAAzB,GAA4C,MAAM,CAAC,qBAAP,CACxC,CAAC,IAAI,KAAK,eAAL,CAAqB,CAArB,CADmC,CAA5C;AAGH;AAED;;;AAGG;;;AACH,oBAAkB,CAAC,OAAD,EAAQ;AACtB,QAAM,IAAI,GAAG,OAAO,CAAC,CAAD,CAApB,CADsB,CACG;;AACzB,SAAK,uBAAL,CAA6B,KAAK,kBAAlC;AACA,QAAM,OAAO,GAAG,KAAK,kBAAL,CAAwB,aAAxC;AACA,QAAM,IAAI,GAAG,IAAI,CAAC,IAAL,CAAU,IAAI,CAAC,MAAL,GAAc,KAAK,kBAAL,CAAwB,KAAhD,CAAb;AACA,QAAM,GAAG,GAAG,KAAK,kBAAL,CAAwB,MAAxB,GAAiC,CAA7C;AACA,WAAO,CAAC,SAAR,GAAoB,QAApB;AACA,WAAO,CAAC,SAAR,CACI,CADJ,EAEI,CAFJ,EAGI,KAAK,kBAAL,CAAwB,KAH5B,EAII,KAAK,kBAAL,CAAwB,MAJ5B;;AAMA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,kBAAL,CAAwB,KAA5C,EAAmD,CAAC,EAApD,EAAwD;AACpD,UAAI,GAAG,GAAG,GAAV;AACA,UAAI,GAAG,GAAG,CAAC,GAAX;;AACA,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,IAApB,EAA0B,CAAC,EAA3B,EAA+B;AAC3B,YAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,IAAJ,GAAW,CAAZ,CAAlB;;AACA,YAAI,KAAK,GAAG,GAAZ,EAAiB;AACb,aAAG,GAAG,KAAN;AACH;;AACD,YAAI,KAAK,GAAG,GAAZ,EAAiB;AACb,aAAG,GAAG,KAAN;AACH;AACJ;;AACD,aAAO,CAAC,QAAR,CACI,CADJ,EAEI,CAAC,IAAI,GAAL,IAAY,GAFhB,EAGI,CAHJ,EAII,IAAI,CAAC,GAAL,CAAS,CAAT,EAAY,CAAC,GAAG,GAAG,GAAP,IAAc,GAA1B,CAJJ;AAMH;AACJ;AAED;;;AAGG;;;AACH,aAAW,CAAC,OAAD,EAAQ;AACf,QAAM,QAAQ,GAAG,CAAjB;AACA,QAAM,SAAS,GAAG,OAAO,CAAC,CAAD,CAAP,CAAW,MAA7B;AACA,QAAM,WAAW,GAAG,KAAK,OAAL,CAAa,YAAb,CAChB,QADgB,EAEhB,SAFgB,EAGhB,KAAK,OAAL,CAAa,UAHG,CAApB;;AAKA,SAAK,IAAI,OAAO,GAAG,CAAnB,EAAsB,OAAO,GAAG,QAAhC,EAA0C,OAAO,EAAjD,EAAqD;AACjD,UAAM,iBAAiB,GAAG,WAAW,CAAC,cAAZ,CAA2B,OAA3B,CAA1B;;AACA,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,SAApB,EAA+B,CAAC,EAAhC,EAAoC;AAChC,yBAAiB,CAAC,CAAD,CAAjB,GAAuB,OAAO,CAAC,OAAD,CAAP,CAAiB,CAAjB,CAAvB;AACH;AACJ;;AACD,QAAM,MAAM,GAAG,KAAK,OAAL,CAAa,kBAAb,EAAf;AACA,UAAM,CAAC,MAAP,GAAgB,WAAhB;AACA,UAAM,CAAC,OAAP,CAAe,KAAK,OAAL,CAAa,WAA5B;AACA,UAAM,CAAC,KAAP;AACA,WAAO,MAAP;AACH;;AA9XgB;AAiYrB;;AAEG;;AACH,IAAM,gBAAgB,kvLAAtB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvZA;;;;;;;AAOG;AACH;CAGA;AACA;AAEA;;AAEA,MAAM,uBAAN,CAA6B;AAczB;AAbA,mBAAkB,IAAlB;AAEA,yBAA8B,IAA9B;AACA,oCAAkC,CAAC,CAAnC;AACA,wBAA6B,IAA7B;AAEA,wBAAuB,EAAvB;AACA,wBAAsB,IAAtB;AACA,8BAA4B,EAA5B;AACA,oCAAqC,EAArC;AACA,+BAAgC,EAAhC;AACA,uCAAwC,EAAxC;AAGI,SAAK,kBAAL,GAA0B,MAAM,CAAC,YAAP,IAA8B,MAAO,CAAC,kBAAhE;AACH;;AAEe,MAAZ,YAAY;AACZ,QAAI,KAAK,aAAL,KAAuB,IAA3B,EAAiC;AAC7B,aAAO,KAAK,aAAZ;AACH,KAFD,MAEO;AACH;AACA,UACI,qCAAI,KAAK,SAAT,IACG,mDAAkB,SADrB,IAEG,gEAA+B,SAHtC,EAIE;AACS,cAAO,CAAC,kBAAR,GAA6B,2DAA7B;AACV,OAND,MAMO,IAAI,OAAc,MAAO,CAAC,kBAAtB,KAA6C,WAAjD,EAA8D;AAC1D,cAAO,CAAC,kBAAR,GAA6B,IAAI,KAAK,kBAAT,EAA7B;AACV;;AACD,WAAK,aAAL,GAA4B,MAAO,CAAC,kBAApC;AACA,aAAO,KAAK,aAAZ;AACH;AACJ;;AAEe,MAAZ,YAAY,CAAC,EAAD,EAAiB;AAC7B,SAAK,aAAL,GAAqB,EAArB;AACH;;AAvCwB;;AA0CtB,IAAM,MAAM,GAAG,IAAI,uBAAJ,EAAf;AAEP;;;;;;;;;AASG;;AACG,SAAU,YAAV,CAAuB,UAAvB,EAAmC,QAAnC,EAA6C,KAA7C,EAAkD;AACpD,MAAI,KAAK,KAAK,SAAd,EAAyB;AACrB;AACA,SAAK,GAAG,MAAK;AACT,WAAK,CACD,mEADC,CAAL;AAGH,KAJD;AAKH;;AACD,MAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,YAAQ,GAAG,WAAW,IAAG;AACrB,sBAAgB,CAAC,WAAD,CAAhB;AACH,KAFD;AAGH;;AACD,MAAM,CAAC,GAAS,SAAhB,CAdoD,CAepD;AACA;;AACA,GAAC,CAAC,YAAF,GACM,CAAC,CAAC,YAAF,IACC,CAAC,CAAC,kBADH,IAEC,CAAC,CAAC,eAFH,IAGC,CAAC,CAAC,cAJT;;AAMA,MAAI,CAAC,CAAC,YAAF,KAAmB,SAAvB,EAAkC;AAC9B,SAAK;AACR;;AACD,MAAI,UAAU,KAAK,SAAnB,EAA8B;AAC1B,cAAU,GAAG;AACT,WAAK,EAAE;AACH,iBAAS,EAAE,EADR;AAEH,gBAAQ,EAAE;AAFP;AADE,KAAb;AAMH;;AACD,GAAC,CAAC,YAAF,CAAe,UAAf,EAA2B,QAA3B,EAAqC,KAArC;AACH;AAEK,SAAU,gBAAV,CAA2B,WAA3B,EAAsC;AACxC;;;AAGG;AACH,QAAM,CAAC,YAAP,GAAsB,IAAI,YAAJ,CAAiB,MAAM,CAAC,OAAP,GAAiB,CAAlC,CAAtB;AACA,MAAM,iBAAiB,GAAG,MAAM,CAAC,YAAP,CAAoB,uBAApB,CACtB,WADsB,CAA1B;AAGA,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAP,CAAoB,cAApB,EAAjB;AACA,UAAQ,CAAC,OAAT,GAAmB,MAAM,CAAC,OAA1B;AACA,mBAAiB,CAAC,OAAlB,CAA0B,QAA1B;AACA,QAAM,CAAC,eAAP,GAAyB,QAAzB;AACA,aAAW;AACd;AAEM,IAAM,WAAW,GAAG,MAAK;AAC5B,QAAM,CAAC,eAAP,CAAuB,sBAAvB,CACI,MAAM,CAAC,YADX,EAD4B,CAI5B;;AACA,MAAM,iBAAiB,GAAG,aAAa,CACnC,MAAM,CAAC,YAD4B,EAEnC,MAAM,CAAC,YAAP,CAAoB,UAFe,EAGnC,MAAM,CAAC,YAH4B,EAInC,MAAM,CAAC,YAJ4B,CAAvC;AAMA,MAAM,QAAQ,GAAY,cAAc,CAAC,iBAAD,CAAxC,CAX4B,CAY5B;AACA;;AACA,MAAI,QAAQ,KAAK,CAAC,CAAlB,EAAqB;AACjB,UAAM,CAAC,wBAAP,GAAkC,MAAM,CAAC,qBAAP,CAC9B,WAD8B,CAAlC;AAGH;AACJ,CAnBM;AAqBD,SAAU,qBAAV,CAAgC,SAAhC,EAAyC;AAC3C,MAAI,SAAS,KAAK,CAAC,CAAnB,EAAsB;AAClB,UAAM,CAAC,wBAAP,CAAgC,KAAhC;AACA,UAAM,CAAC,mBAAP,CAA2B,KAA3B;AACA,UAAM,CAAC,2BAAP,CAAmC,KAAnC;AACH,GAJD,MAIO;AACH,QAAM,CAAC,OAAD,EAAU,SAAV,IAAsB,wBAAwB,CAChD,SADgD,CAApD;;AAGA,QACI,MAAM,CAAC,wBAAP,CAAgC,MAAhC,GACE,MAAM,CAAC,kBAFb,EAGE;AACE,YAAM,CAAC,wBAAP,CAAgC,KAAhC;AACA,YAAM,CAAC,mBAAP,CAA2B,KAA3B;AACA,YAAM,CAAC,2BAAP,CAAmC,KAAnC;AACH;;AACD,UAAM,CAAC,wBAAP,CAAgC,IAAhC,CAAqC,OAAO,GAAG,EAA/C;AACA,UAAM,CAAC,mBAAP,CAA2B,IAA3B,CAAgC,OAAhC;AACA,UAAM,CAAC,2BAAP,CAAmC,IAAnC,CAAwC,SAAxC;AACH;;AACD,MAAM,oBAAoB,GAAG,qDACzB,MAAM,CAAC,wBADkB,CAA7B;;AAGA,MAAI,oBAAoB,KAAK,IAA7B,EAAmC;AAC/B,WAAO,CAAC,CAAC,CAAF,EAAK,CAAL,CAAP;AACH;;AACD,MAAM,oBAAoB,GAAG,EAA7B;AACA,MAAM,kBAAkB,GAAG,EAA3B;;AACA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,MAAM,CAAC,wBAAP,CAAgC,MAApD,EAA4D,CAAC,EAA7D,EAAiE;AAC7D,QAAI,MAAM,CAAC,wBAAP,CAAgC,CAAhC,MAAuC,oBAA3C,EAAiE;AAC7D,0BAAoB,CAAC,IAArB,CAA0B,MAAM,CAAC,mBAAP,CAA2B,CAA3B,CAA1B;AACA,wBAAkB,CAAC,IAAnB,CAAwB,MAAM,CAAC,2BAAP,CAAmC,CAAnC,CAAxB;AACH;AACJ;;AACD,MAAM,eAAe,GAAG,qDAAuB,oBAAvB,CAAxB,CAnC2C,CAqC3C;;AACA,MAAI,iBAAiB,GAAG,CAAxB;AACA,MAAI,WAAW,GAAG,CAAlB;;AACA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,kBAAkB,CAAC,MAAvC,EAA+C,CAAC,EAAhD,EAAoD;AAChD,QAAM,MAAM,GAAI,YAAK,CAAL,CAAD,GAAW,CAA1B;AACA,eAAW,IAAI,MAAM,GAAG,kBAAkB,CAAC,CAAD,CAA1C;AACA,qBAAiB,IAAI,MAArB;AACH;;AACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAL,CAAW,WAAW,GAAG,iBAAzB,CAAjB;AACA,SAAO,CAAC,eAAD,EAAkB,QAAlB,CAAP;AACH;AAEK,SAAU,cAAV,CAAyB,SAAzB,EAAkC;AACpC;AACA,MAAM,CAAC,cAAD,EAAiB,eAAjB,IAAoC,qBAAqB,CAC3D,SAD2D,CAA/D;AAGA,SAAO,CAAP;AACH,C,CAED;;AACM,SAAU,aAAV,CACF,GADE,EAEF,UAFE,EAGF,YAHE,EAIF,YAJE,EAIU;AAEZ,MAAM,IAAI,GAAG,GAAG,CAAC,MAAjB;AACA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAL,CAAW,IAAI,GAAG,CAAlB,CAApB;;AACA,MAAI,YAAY,KAAK,SAArB,EAAgC;AAC5B,gBAAY,GAAG,CAAf;AACH;;AACD,MAAI,YAAY,KAAK,SAArB,EAAgC;AAC5B,gBAAY,GAAG,UAAf;AACH;;AAED,MAAI,WAAW,GAAG,CAAC,CAAnB;AACA,MAAI,gBAAgB,GAAG,CAAvB;AACA,MAAI,GAAG,GAAG,CAAV;AACA,MAAI,oBAAoB,GAAG,KAA3B;AACA,MAAM,YAAY,GAAG,IAAI,KAAJ,CAAU,WAAV,CAArB;;AAEA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,IAApB,EAA0B,CAAC,EAA3B,EAA+B;AAC3B,QAAM,GAAG,GAAG,GAAG,CAAC,CAAD,CAAf;AACA,OAAG,IAAI,GAAG,GAAG,GAAb;AACH;;AACD,KAAG,GAAG,IAAI,CAAC,IAAL,CAAU,GAAG,GAAG,IAAhB,CAAN;;AACA,MAAI,GAAG,GAAG,IAAV,EAAgB;AACZ,WAAO,CAAC,CAAR;AACH,GAxBW,CAwBV;;;AAEF,MAAI,eAAe,GAAG,CAAtB;;AACA,OAAK,IAAI,MAAM,GAAG,CAAlB,EAAqB,MAAM,GAAG,WAA9B,EAA2C,MAAM,EAAjD,EAAqD;AACjD,QAAI,WAAW,GAAG,CAAlB;AACA,QAAM,eAAe,GAAG,UAAU,GAAG,MAArC;;AACA,QAAI,eAAe,GAAG,YAAtB,EAAoC;AAChC;AACH;;AACD,QAAI,eAAe,GAAG,YAAtB,EAAoC;AAChC;AACH;;AAED,SAAK,IAAI,EAAC,GAAG,CAAb,EAAgB,EAAC,GAAG,WAApB,EAAiC,EAAC,EAAlC,EAAsC;AAClC,iBAAW,IAAI,IAAI,CAAC,GAAL,CAAS,GAAG,CAAC,EAAD,CAAH,GAAS,GAAG,CAAC,EAAC,GAAG,MAAL,CAArB,CAAf;AACH;;AACD,eAAW,GAAG,IAAI,WAAW,GAAG,WAAhC;AACA,gBAAY,CAAC,MAAD,CAAZ,GAAuB,WAAvB,CAdiD,CAcb;;AACpC,QAAI,WAAW,GAAG,GAAd,IAAqB,WAAW,GAAG,eAAvC,EAAwD;AACpD,0BAAoB,GAAG,IAAvB;;AACA,UAAI,WAAW,GAAG,gBAAlB,EAAoC;AAChC,wBAAgB,GAAG,WAAnB;AACA,mBAAW,GAAG,MAAd;AACH;AACJ,KAND,MAMO,IAAI,oBAAJ,EAA0B;AAC7B;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA,UAAM,KAAK,GACL,CAAC,YAAY,CAAC,WAAW,GAAG,CAAf,CAAZ,GACG,YAAY,CAAC,WAAW,GAAG,CAAf,CADhB,IAEA,YAAY,CAAC,WAAD,CAHlB;AAIA,aAAO,UAAU,IAAI,WAAW,GAAG,IAAI,KAAtB,CAAjB;AACH;;AACD,mBAAe,GAAG,WAAlB;AACH;;AACD,MAAI,gBAAgB,GAAG,IAAvB,EAA6B;AACzB;AACA,WAAO,UAAU,GAAG,WAApB;AACH;;AACD,SAAO,CAAC,CAAR,CAtEY,CAuEZ;AACH;AAED;;;;;AAKG;;AACG,SAAU,wBAAV,CACF,SADE,EACO;AAET,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,GAAL,CAAS,SAAS,GAAG,GAArB,IAA4B,IAAI,CAAC,GAAL,CAAS,CAAT,CAAlC,IAAiD,EAAtE;AACA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAL,CAAW,YAAX,CAAhB;AACA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAL,CAAW,OAAO,YAAY,GAAG,OAAtB,CAAX,CAAjB;AACA,SAAO,CAAC,OAAD,EAAU,QAAV,CAAP;AACH,C;;;;;;;;;;;;;;;;;;;ACrSD;;;;;;;AAOG;AACH;AACA;AAEA,IAAM,WAAW,GAAG,CAChB,SADgB,EACL,QADK,EACK,QADL,EACe,OADf,EACwB,QADxB,EACkC,OADlC,EAEhB,aAFgB,EAED,aAFC,EAEc,MAFd,EAEsB,OAFtB,EAE+B,MAF/B,CAApB;AAIA,IAAM,WAAW,GAAG;AAChB,iBAAe,QADC;AAEhB,iBAAe;AAFC,CAApB;AAKA,IAAM,kBAAkB,GAAG;AACvB,YAAU,aADa;AAEvB,WAAS;AAFc,CAA3B;AAKM,MAAO,YAAP,SAA4B,2DAA5B,CAA4C;;AAElD,SAAS,sBAAT,CAAgC,KAAhC,EAA6C;AACzC,MAAI,kBAAkB,CAAC,KAAD,CAAlB,KAA8B,SAAlC,EAA6C;AACzC,WAAO,kBAAkB,CAAC,KAAD,CAAzB;AACH,GAFD,MAEO;AACH,WAAO,KAAP;AACH;AACJ;;AAED,SAAS,kBAAT,CAA4B,QAAc,SAA1C,EAAmD;AAC/C,OAAK,GAAG,KAAK,CAAC,WAAN,EAAR;;AAEA,MAAI,WAAW,CAAC,QAAZ,CAAqB,KAArB,CAAJ,EAAiC;AAC7B,WAAO,KAAP;AACH;;AACD,MAAI,WAAW,CAAC,KAAD,CAAX,KAAuB,SAA3B,EAAsC;AAClC,WAAO,WAAW,CAAC,KAAD,CAAlB;AACH;;AACD,QAAM,IAAI,YAAJ,iCAA0C,KAA1C,EAAN;AACH;;AAEK,MAAO,OAAP,SAAuB,gDAAvB,CAAyC;AAM3C,cAAY,IAAI,GAAC,SAAjB,EAA4B,QAAQ,GAAC,OAArC,EAA4C;AACxC;AAEA,SAAK,IAAL,GAAY,IAAZ;AACA,SAAK,QAAL,GAAgB,QAAhB,CAJwC,CAId;AAC7B;;AAPmB,aAAT,SAAS;AAAK,WAAO,qBAAP;AAA+B;;AAShD,MAAJ,IAAI;AACJ,WAAO,KAAK,KAAZ;AACH;;AAEO,MAAJ,IAAI,CAAC,CAAD,EAAU;AACd,SAAK,KAAL,GAAa,kBAAkB,CAAC,CAAD,CAA/B;AACH;;AAED,kBAAgB;AACZ,WAAO,sBAAsB,CAAC,KAAK,IAAN,CAA7B;AACH;;AAvB0C;AA0B/C,iEAAe,OAAf,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzEA;;;;;;;;;;;;;;;;;;AAkBG;AACH;AACA;AACA;AACA;AACA;AACA;AAIA;AAQA;;;;;;;;;;;;;;;;;AAiBG;;AACG,MAAO,aAAP,SAA6B,oDAA7B,CAAmD;AAkBrD;AACA;AAEA,cAAY,QAAQ,GAAC,EAArB,EAAuB;AACnB;AAnBJ,0BAAyB,EAAzB,CAkBuB,CAlBM;;AAEnB,mCAAkC,CAAlC;AACA,wBAAuB,CAAvB;AAMA,qBAAoB,CAApB;AACV,cAAoB,CAApB;AACA,kBAAmB,EAAnB,CAOuB,CAPA;;AAEvB,2BAA2B,IAA3B;AACA,oBAAoB,KAApB;AAMI,SAAK,SAAL,GAAiB,IAAI,+CAAJ,CAAsB,GAAtB,CAAjB;AACA,SAAK,EAAL,GAAU,0CAAY,IAAZ,CAAV;AACA,SAAK,KAAL,GAAa,IAAI,yCAAJ,EAAb;AACA,SAAK,eAAL,CAAqB,WAArB,GAAmC,KAAnC;AACA,SAAK,eAAL,CAAqB,uBAArB,GAA+C,KAA/C;;AACA,SAAK,eAAL,CAAqB,WAArB,GAAmC,SAAS,8CAAT,CAC/B,OAD+B,EAE/B,MAF+B,EAG/B,IAH+B,EAI/B,IAJ+B,EAK/B,IAL+B,EAK3B;AAEJ,UAAM,aAAa,GAAG,IAAI,mDAAJ,CAA0B,MAA1B,CAAtB;AACA,mBAAa,CAAC,MAAd,GAAuB,IAAvB;AACA,mBAAa,CAAC,MAAd,GAAuB,OAAvB;AACA,YAAM,CAAC,OAAD,CAAN,GAAkB,aAAlB;AACH,KAXD,CAPmB,CAoBnB;;;AACA,SAAK,eAAL,CAAqB,KAArB,GAA6B,SAAS,kCAAT,CACzB,OADyB,EAEzB,MAFyB,EAGzB,IAHyB,EAIzB,IAJyB,EAKzB,IALyB,EAKrB;AAEJ,YAAM,CAAC,KAAP,GAAe,IAAI,yCAAJ,EAAf;AACH,KARD;AASH;;AAlDmB,aAAT,SAAS;AAAK,WAAO,4BAAP;AAAsC;AAoD/D;;AAEG;;;AACH,OAAK,CAAC,OAAgB,IAAjB,EAAuB,IAAI,GAAC,SAA5B,EAAqC;AACtC,QAAM,GAAG,GAAS,MAAM,KAAN,CAAY,IAAZ,EAAkB,IAAlB,CAAlB;AACA,QAAM,aAAa,GAAG,IAAI,mDAAJ,CAA0B,GAA1B,CAAtB;AACA,iBAAa,CAAC,MAAd,GAAuB,IAAvB;AACA,iBAAa,CAAC,MAAd,GAAuB,OAAvB,CAJsC,CAIL;;AACjC,OAAG,CAAC,UAAJ,GAAiB,aAAjB;AACA,WAAO,GAAP;AACH;;AAGD,YAAU;AACN,QAAI,IAAI,GAAG,KAAK,EAAhB;;AACA,QAAI,OAAO,IAAP,KAAgB,QAApB,EAA8B;AAC1B,UAAM,QAAQ,GAAY,IAA1B;AACA,UAAI,GAAY,QAAQ,CAAC,QAAT,CAAkB,EAAlB,CAAhB;;AACA,aAAO,IAAI,CAAC,MAAL,GAAc,CAArB,EAAwB;AACpB,YAAI,GAAG,MAAM,IAAb;AACH;;AACD,UAAI,GAAG,OAAO,IAAd;AACH;;AACD,WAAO,IAAP;AACH;;AAEa,MAAV,UAAU;AACV,WAAO,KAAK,WAAZ;AACH;;AAEa,MAAV,UAAU,CAAC,IAAD,EAAK;AACf,QAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,WAAK,WAAL,GAAmB,SAAnB;AACA,WAAK,uBAAL,GAA+B,SAA/B;AACH,KAHD,MAGO;AACH,UAAI,MAAJ;;AACA,UAAI;AACA,cAAM,GAAG,IAAI,CAAC,aAAL,CAAmB,IAAnB,CAAT;AACH,OAFD,CAEE,OAAO,CAAP,EAAU;AACR,cAAM,IAAI,kDAAJ,CACF,0DADE,CAAN;AAGH;;AACD,WAAK,WAAL,GAAmB,IAAnB;AACA,WAAK,uBAAL,GAA+B,MAA/B;AACH;AACJ;;AAEa,MAAV,UAAU;AACV,QAAI,KAAK,WAAL,KAAqB,SAAzB,EAAoC;AAChC,WAAK,WAAL,GAAmB,IAAI,mDAAJ,CAA0B,IAA1B,CAAnB;AACH;;AACD,WAAO,KAAK,WAAZ;AACH;;AAEa,MAAV,UAAU,CAAC,aAAD,EAAqC;AAC/C,SAAK,WAAL,GAAmB,aAAnB;AACH;;AAEY,MAAT,SAAS;AACT,QAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,WAAK,UAAL,GAAkB,IAAI,iDAAJ,EAAlB;AACH;;AACD,WAAO,KAAK,UAAZ;AACH;;AAEY,MAAT,SAAS,CAAC,YAAD,EAAkC;AAC3C,SAAK,UAAL,GAAkB,YAAlB;AACH;;AAE0B,MAAvB,uBAAuB;AACvB,WAAQ,KAAK,UAAL,KAAoB,SAA5B;AACH;;AAEgB,MAAb,aAAa;AACb,QAAI,KAAK,UAAL,KAAoB,SAApB,IAAiC,KAAK,UAAL,CAAgB,OAAhB,CAAwB,QAAxB,CAAiC,SAAjC,CAArC,EAAkF;AAC9E,UAAM,aAAa,GAAa,KAAK,UAArC;AACA,aAAO,aAAa,CAAC,MAArB;AACH,KAHD,MAGO;AACH,UAAM,CAAC,GAAG,KAAK,KAAL,CAAW,aAAX,CAAyB,SAAzB,CAAV;;AACA,UAAI,CAAC,KAAK,SAAV,EAAqB;AACjB,eAAkB,CAAE,CAAC,MAArB;AACH,OAFD,MAEO;AACH,eAAO,SAAP;AACH;AACJ;AACJ;AAED;;;;;;;;;AASA,mBAAiB,CACb;AAAC,yBAAqB,GAAG;AAAzB,MAAoE,EADvD,EACyD;AAEtE,QAAM,OAAO,GAAW,KAAK,UAA7B;AACA,QAAI,WAAJ;;AACA,QAAI,OAAO,KAAK,SAAZ,IAAyB,OAAO,CAAC,SAArC,EAAgD;AAC5C,iBAAW,GAAG,OAAO,CAAC,aAAR,CAAsB,IAAtB,CAAd;;AACA,UAAI,qBAAJ,EAA2B;AACvB,mBAAW,IAAK,OAAmB,CAAC,WAApC;AACH;AACJ,KALD,MAKO;AACH,UAAM,CAAC,GAAY,KAAK,iBAAL,CAAuB,SAAvB,EAAkC;AAAC,0BAAkB,EAAE;AAArB,OAAlC,CAAnB;;AACA,UAAI,CAAC,KAAK,SAAV,EAAqB;AACjB,YAAI;AACA,qBAAW,GAAG,CAAC,CAAC,aAAF,CAAgB,IAAhB,CAAd;;AACA,cAAI,qBAAJ,EAA2B;AACvB,uBAAW,IAAI,CAAC,CAAC,WAAjB;AACH;AACJ,SALD,CAKE,OAAO,CAAP,EAAU;AACR,qBAAW,GAAG,KAAK,MAAnB;AACH;AACJ,OATD,MASO;AACH,mBAAW,GAAG,KAAK,MAAnB;AACH;AACJ;;AACD,WAAO,WAAP;AACH;;AAES,MAAN,MAAM;AACN,QAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,aAAO,KAAK,YAAZ;AACH,KAFD,MAEO;AACH,aAAO,KAAK,UAAL,CAAgB,aAAhB,CAA8B,IAA9B,CAAP;AACH;AACJ;;AAES,MAAN,MAAM,CAAC,SAAD,EAAkB;AACxB,QAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,WAAK,YAAL,GAAoB,SAApB;AACH,KAFD,MAEO;AACH,WAAK,UAAL,CAAgB,gBAAhB,CAAiC,IAAjC,EAAuC,SAAvC;AACH;AACJ;;AAEW,MAAR,QAAQ;AACR,WAAO,KAAK,SAAZ;AACH;;AAEW,MAAR,QAAQ,CAAC,CAAD,EAAU;AAClB,SAAK,SAAL,GAAiB,CAAjB;AACH;;AAEW,MAAR,QAAQ;AACR,WAAO,KAAK,SAAZ;AACH;;AAEW,MAAR,QAAQ,CAAC,WAAD,EAA+B;AACvC,QAAI,OAAO,WAAP,KAAuB,QAA3B,EAAqC;AACjC,WAAK,SAAL,GAAiB,WAAjB,CADiC,CAEjC;AACH,KAHD,MAGO,IAAI,OAAO,WAAP,KAAuB,QAA3B,EAAqC;AACxC,WAAK,SAAL,CAAe,aAAf,GAA+B,WAA/B;AACH,KAFM,MAEA,IAAI,OAAO,WAAP,KAAuB,QAA3B,EAAqC;AACxC,WAAK,SAAL,CAAe,IAAf,GAAsB,WAAtB;AACH;AACJ;;AAEgB,MAAb,aAAa;AACb,WAAO,KAAK,QAAL,CAAc,aAArB;AACH;;AAEgB,MAAb,aAAa,CAAC,EAAD,EAAW;AACxB,SAAK,QAAL,CAAc,aAAd,GAA8B,EAA9B;AACH;;AAED,iBAAe,CAAC,KAAD,EAAM;AACjB;AACA,SAAK,MAAL,GAAc,KAAK,CAAC,MAAN,CAAa,KAAb,EAAd;AACA,WAAO,IAAP;AACH;AAED;;;;;;;;;;;AAWG;;;AACH,iBAAe,CACX,OAAyB,SADd,EAEX,gBAAuB,KAFZ,EAEiB;AAE5B,QAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,aAAO,KAAK,YAAZ;AACH;;AACD,WAAO,IAAI,CAAC,aAAL,CAAmB,IAAnB,EAAyB,aAAzB,CAAP;AACH;AAED;;;;;AAKG;;;AACH,iBAAe,CACX,IADW,EAEX,KAFW,EAEE;AAEb,QAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,UAAI,CAAC,gBAAL,CAAsB,IAAtB,EAA4B,KAA5B;AACH,KAFD,MAEO;AACH,WAAK,YAAL,GAAoB,KAApB;AACH;AACJ;AAGD;;;;;;;;;;AAUG;;;AACH,sBAAoB,CAAC,IAAD,EAAa;AAC7B,QAAI;AACA,aAAgB,KAAK,eAAL,CAAqB,IAArB,CAAhB;AACH,KAFD,CAEE,OAAO,CAAP,EAAU,CAAE,CAHe,CAGd;AACf;;;AACA,SAAK,IAAM,CAAC,MAAD,EAAS,QAAT,EAAmB,sBAAnB,CAAX,IAAyD,KAAK,YAAL,EAAzD,EAA8E;AAC1E,UAAI,MAAM,KAAK,IAAf,EAAqB;AACjB,eAAO,QAAP;AACH;AACJ;;AACD,UAAM,IAAI,KAAJ,mBAAqB,IAArB,qCAAoD,IAApD,EAAN;AACH,GArSoD,CAuSrD;;;AAEA,mBAAiB,CACb,SADa,EAEb,OAAO,GAAC,EAFK,EAEH;AAEV,QAAM,MAAM,GAAG;AACX,sBAAgB,EAAE,sBADP;AAEX,wBAAkB,EAAE;AAFT,KAAf;AAIA,+CAAa,MAAb,EAAqB,OAArB;AAEA,QAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAhC;AACA,QAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAlC;;AAEA,QAAI,SAAS,KAAK,SAAd,IAA2B,EAAE,SAAS,YAAY,KAAvB,CAA/B,EAA8D;AAC1D,eAAS,GAAG,CAAC,SAAD,CAAZ;AACH;;AACD,QACI,gBAAgB,CAAC,QAAjB,CAA0B,IAA1B,KACG,KAAK,iBAAL,CAAuB,SAAvB,CAFP,EAGE;AACE,aAAO,IAAP;AACH;;AAED,SAAK,IAAM,CAAC,IAAD,EAAO,aAAP,EAAsB,UAAtB,CAAX,IAAgD,KAAK,YAAL,CAAkB;AAC9D,sBAAgB,EAAE,IAD4C;AAE9D;AAF8D,KAAlB,CAAhD,EAGI;AACA,UAAI,gBAAgB,CAAC,QAAjB,CAA0B,IAA1B,KACO,IAAI,CAAC,iBAAL,CAAuB,SAAvB,CADX,EAC8C;AAC1C,eAAO,IAAP;AACH;;AAED,UAAI,UAAU,KAAK,cAAf,IAAiC,UAAU,KAAK,eAApD,EAAqE;AACjE,YAAM,SAAS,GAAG,iCAAiC,CAC/C,IAD+C,EAE/C,KAF+C,EAG/C,aAH+C,EAI/C,gBAJ+C,EAK/C,SAL+C,CAAnD;;AAOA,YAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,iBAAO,SAAP;AACH;AACJ,OAXD,MAWO,IAAI,UAAU,KAAK,cAAnB,EAAmC;AACtC,YAAI,gBAAgB,CAAC,QAAjB,CAA0B,OAA1B,MACQ,SAAS,KAAK,SAAd,IACG,IAAI,CAAC,iBAAL,CAAuB,SAAvB,CAFX,CAAJ,EAEmD;AAC/C,cAAI,CAAC,gBAAgB,CAAC,QAAjB,CAA0B,SAA1B,CAAD,IACG,SAAS,IADhB,EACsB;AAClB,mBAAO,IAAP;AACH;AACJ;;AACD,YAAM,UAAS,GAAG,iCAAiC,CAC/C,IAD+C,EAE/C,UAF+C,EAG/C,aAH+C,EAI/C,gBAJ+C,EAK/C,SAL+C,CAAnD;;AAOA,YAAI,UAAS,KAAK,SAAlB,EAA6B;AACzB,iBAAO,UAAP;AACH;;AACD,YAAI,gBAAgB,CAAC,QAAjB,CAA0B,QAA1B,MACI,SAAS,KAAK,SAAd,IACG,IAAI,CAAC,iBAAL,CAAuB,SAAvB,CAFP,CAAJ,EAE+C;AAC3C,cAAI,CAAC,gBAAgB,CAAC,QAAjB,CAA0B,SAA1B,CAAD,IACM,SAAS,IADnB,EACyB;AACrB,mBAAO,IAAP;AACH;AACJ;AACJ;AACJ;;AAED,WAAO,SAAP;AACH;;AAEa,GAAZ,YAAY,CAAC,OAAO,GAAC,EAAT,EAAW;AACrB,QAAM,MAAM,GAAG;AACX,iBAAW,EAAE,SADF;AAEX,UAAI,EAAE,IAAI,GAAJ,EAFK;AAGX,kBAAY,EAAE,GAHH;AAIX,wBAAkB,EAAE,KAJT;AAKX,oBAAc,EAAE,SALL;AAMX,sBAAgB,EAAE,KANP;AAOX,sBAAgB,EAAE;AAPP,KAAf;AASA,+CAAa,MAAb,EAAqB,OAArB;AACA,QAAM,IAAI,GAAG,MAAM,CAAC,IAApB;;AACA,QAAI,MAAM,CAAC,WAAP,KAAuB,SAA3B,EAAsC;AAClC,YAAM,CAAC,WAAP,GAAqB,IAArB;;AACA,UAAI,KAAK,QAAL,IAAiB,CAAE,IAAI,CAAC,GAAL,CAAS,IAAT,CAAvB,EAAwC;AACpC,YAAM,UAAU,GAAkC,IAAlD;AACA,YAAM,aAAa,GAAG,UAAU,CAAC,aAAjC;AACA,cAAM,CAAC,IAAD,EAAO,GAAP,EAAY,aAAZ,CAAN;AACH;;AACD,UAAI,CAAC,GAAL,CAAS,IAAT,EAAe,IAAf;AACH;;AAED,QAAI,MAAM,CAAC,cAAP,KAA0B,SAA1B,IAAuC,CAAC,MAAM,CAAC,kBAAnD,EAAuE;AACnE,YAAM,CAAC,cAAP,GAAwB,KAAK,UAA7B;AACH;;AACD,QAAM,QAAQ,GAAG,IAAjB;;AACA,SAAK,IAAM,OAAX,IAAsB,KAAK,KAAL,CAAW,UAAX,CAClB,MAAM,CAAC,kBADW,EAElB,MAAM,CAAC,cAFW,EAGlB,IAHkB,CAGb;AAHa,KAAtB,EAIG;AACC,UAAI,IAAI,CAAC,GAAL,CAAS,OAAT,CAAJ,EAAuB;AACnB;AACH;;AACD,UAAI,OAAO,CAAC,OAAR,CAAgB,QAAhB,CAAyB,gBAAzB,CAAJ,EAAgD;AAC5C;AACH,OANF,CAQC;AACA;;;AACA,UAAI,cAAsB,SAA1B;;AACA,UAAI;AACA,sBAAc,GAAG,OAAO,CAAC,aAAR,CAAsB,IAAtB,CAAjB;AACH,OAFD,CAEE,OAAO,CAAP,EAAU;AACR,eAAO,CAAC,KAAR,WAAiB,OAAO,EAAxB,wBAAwC,OAAO,GAAG,EAAlD;AACA;AACH;;AAED,UAAM,SAAS,GAAG,cAAc,GAAG,MAAM,CAAC,YAA1C;AACA,UAAM,gBAAgB,GAAG,SAAzB;AACA,UAAM,cAAa,GAAG,OAAO,CAAC,aAA9B;AACA,YAAM,CAAC,OAAD,EAAU,gBAAV,EAA4B,cAA5B,CAAN;AACA,UAAI,CAAC,GAAL,CAAS,OAAT,EAAkB,IAAlB;AAEA,UAAM,SAAS,GAAG;AACd,mBAAW,EAAE,MAAM,CAAC,WADN;AAEd,YAFc;AAGd,oBAAY,EAAE,gBAHA;AAId,wBAAgB,EAAE,IAJJ;AAKd,0BAAkB,EAAE,MAAM,CAAC;AALb,OAAlB;;AAOA,WAAK,IAAM,CACP,aADO,EAEP,WAFO,EAGP,SAHO,CAAX,IAIK,OAAO,CAAC,YAAR,CAAqB,SAArB,CAJL,EAIsC;AAClC,YAAM,cAAc,GAAG,WAAvB,CADkC,CACE;AACpC;;AAEA,YAAI,CAAC,IAAI,CAAC,GAAL,CAAS,aAAT,CAAL,EAA8B;AAC1B;AACA;AACA,gBAAM,CAAC,aAAD,EAAgB,cAAhB,EAAgC,SAAhC,CAAN;AACA,cAAI,CAAC,GAAL,CAAS,aAAT,EAAwB,IAAxB;AACH;AACJ;AACJ,KA5EoB,CA6ErB;;;AACA,QAAI,MAAM,CAAC,gBAAX,EAA6B;AACzB,WAAK,IAAM,aAAX,IAA4B,QAAQ,CAAC,UAAT,CAAoB,KAApB,EAA5B,EAAyD;AACrD,aAAK,IAAM,CAAC,WAAD,EAAc,aAAd,EAA6B,kBAA7B,CAAX,IACO,aAAa,CAAC,YAAd,CAA2B;AAC1B,qBAAW,EAAE,SADa;AAE1B,cAF0B;AAG1B,sBAAY,EAAE,GAHY;AAI1B,0BAAgB,EAAE,IAJQ;AAK1B,4BAAkB,EAAE,MAAM,CAAC;AALD,SAA3B,CADP,EAOQ;AACJ,cAAM,qBAAqB,GAAG,CAC1B,WAD0B,EAE1B,aAAa,GAAG,MAAM,CAAC,YAFG,EAG1B,kBAH0B,CAA9B;AAKA,gBAAM,qBAAN;AACH;AACJ;AACJ;AACJ;;AAED,0BAAwB;AACpB;AACA,QAAM,EAAE,GAAkB,KAAK,iBAAL,CACtB,eADsB,EACL;AAAC,sBAAgB,EAAE;AAAnB,KADK,CAA1B;;AAGA,QAAI,EAAE,KAAK,SAAX,EAAsB;AAClB,YAAM,IAAI,4DAAJ,CAAqB,oDAArB,CAAN;AACH;;AACD,WAAO,EAAP;AACH;;AAEO,MAAJ,IAAI;AACJ,QAAI;AACA,UAAM,EAAE,GAAG,KAAK,wBAAL,EAAX;;AACA,aAAO,EAAE,CAAC,iBAAH,CAAqB,EAAE,CAAC,oCAAH,CAAwC,IAAxC,CAArB,CAAP;AACH,KAHD,CAGE,OAAO,CAAP,EAAU;AACR,aAAO,GAAP;AACH;AACJ;AAED;;;;;;;;;;;AAWA,cAAY,CAAO,IAAP,EAAa,aAAb,EAA0B;AAClC,QAAI,MAAM,GAAG,IAAb;;AACA,QAAI;AACA,YAAM,GAAG,IAAI,CAAC,QAAd;AACH,KAFD,CAEE,OAAO,cAAP,EAAuB;AACrB,YAAM,IAAI,2DAAJ,CAAoB,6CACxB,8CADI,CAAN;AAGH;;AACD,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,aAApB,EAAmC,CAAC,EAApC,EAAwC;AACpC,WAAK,MAAL,CAAY,IAAI,CAAC,KAAL,CAAW,IAAX,CAAZ;AACH;AACJ;;AAngBoD;;AAsgBzD,SAAS,iCAAT,CACI,OADJ,EAEI,OAFJ,EAE8B;AAC1B,aAHJ,EAII,gBAJJ,EAKI,SALJ,EAKuB;AAEnB;AACA;AACA;AAEA;AACA,MAAI,WAAW,GAAG,SAAlB,CAPmB,CAOW;;AAC9B,MAAM,eAAe,GAAG,OAAO,CAAC,QAAhC,CARmB,CAQuB;;AAE1C,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,eAAe,CAAC,MAApC,EAA4C,CAAC,EAA7C,EAAiD;AAC7C,QAAM,WAAW,GAAG,eAAe,CAAC,CAAD,CAAnC;AACA,QAAM,UAAU,GAAY,WAAW,CAAC,iBAAZ,CAA8B,SAA9B,CAA5B;;AACA,QAAI,OAAO,KAAK,KAAZ,IAAqB,CAAC,UAA1B,EAAsC;AAClC;AACH,KAFD,MAEO,IAAI,CAAC,WAAW,CAAC,QAAb,IAAyB,CAAC,UAA9B,EAA0C;AAC7C;AACH;;AACD,QAAM,WAAW,GAAG,OAAO,CAAC,aAAR,CAAsB,WAAtB,CAApB,CAR6C,CAU7C;AACA;;AACA,QAAI,gBAAgB,CAAC,QAAjB,CAA0B,QAA1B,KACO,WAAW,IAAI,aAD1B,EACyC;AACrC,UAAI,gBAAgB,CAAC,QAAjB,CAA0B,IAA1B,KACO,WAAW,KAAK,SAD3B,EACsC;AAClC,mBAAW,GAAG,WAAd;AACH,OAHD,MAGO,IAAI,WAAW,KAAK,SAAhB,IACI,WAAW,CAAC,iBAAZ,CAA8B,SAA9B,CADR,EACkD;AACrD,mBAAW,CAAC,UAAZ,GAAyB,OAAzB;AACA,eAAO,WAAP;AACH,OAJM,MAIA,IAAI,UAAJ,EAAgB;AACnB,mBAAW,CAAC,UAAZ,GAAyB,OAAzB;AACA,eAAO,WAAP;AACH;AACJ,KAbD,MAaO;AACH,iBAAW,GAAG,WAAd;AACH;;AACD,QAAI,gBAAgB,CAAC,QAAjB,CAA0B,OAA1B,KACO,WAAW,GAAG,aADrB,IAEO,UAFX,EAEuB;AACnB,iBAAW,CAAC,UAAZ,GAAyB,OAAzB;AACA,aAAO,WAAP;AACH,KAjC4C,CAkC7C;;;AACA,QAAI,WAAW,CAAC,QAAhB,EAA0B;AACtB,UAAM,gBAAgB,GAAG,iCAAiC,CAC7C,WAD6C,EAEtD,OAFsD,EAGtD,aAAa,GAAG,WAHsC,EAItD,gBAJsD,EAKtD,SALsD,CAA1D;;AAOA,UAAI,gBAAgB,KAAK,SAAzB,EAAoC;AAChC,eAAO,gBAAP;AACH;AACJ;AACJ;;AACD,MAAI,WAAW,KAAK,SAAhB,IAA6B,WAAW,CAAC,iBAAZ,CAA8B,SAA9B,CAAjC,EAA2E;AACvE,eAAW,CAAC,UAAZ,GAAyB,OAAzB;AACA,WAAO,WAAP;AACH,GAHD,MAGO;AACH,WAAO,SAAP;AACH;AACJ,C,CAID,8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACroBA;;;;;;;;;;;;;;;AAeG;AACH;AAEA;AACA;AAEO,IAAM,cAAc,GAAG;AAC1B,OAAK,EAAE,IADmB;AAE1B,MAAI,EAAE,IAFoB;AAG1B,UAAQ,EAAE,IAHgB;AAI1B,SAAO,EAAE;AAJiB,CAAvB;AAOA,IAAM,qBAAqB,GAAG,CACjC,yDADiC,EAEjC,0DAFiC,EAEH,0DAFG,EAGjC,0DAHiC,EAGH,2DAHG,EAIjC,2DAJiC,CAA9B;AAQP;;;;;;;;;;;AAWG;;AACG,MAAO,IAAP,SAAoB,oDAApB,CAA0C;AAO5C,cAAY,IAAZ,EAAkB,SAAS,GAAC,SAA5B,EAAqC;AACjC;AACA,SAAK,IAAL,GAAY,IAAZ;AACA,SAAK,SAAL,GAAiB,SAAjB;AACH;;AAVmB,aAAT,SAAS;AAAK,WAAO,mBAAP;AAA6B;;AADV;AAchD;;;;;;;;AAQG;;AACG,MAAO,KAAP,SAAqB,oDAArB,CAA2C;AAAjD;;AA0II,qBAAoB,EAApB;AACA,qBAAqB,KAArB;AAoLH;;AA9TuB,aAAT,SAAS;AAAK,WAAO,oBAAP;AAA8B;;AAEtC,SAAV,UAAU,CAAC,OAAD,EAAQ;AACrB,QAAM,SAAS,GAAG,EAAlB;;AACA,SAAK,IAAM,EAAX,IAAiB,OAAjB,EAA0B;AACtB,UAAI,CAAC,qBAAqB,CAAC,QAAtB,CAA+B,EAAE,CAAC,QAAH,CAAY,IAA3C,CAAL,EAAuD;AACnD,iBAAS,CAAC,IAAV,CAAe,SAAf;AACH,OAFD,MAEO,IAAI,EAAE,CAAC,MAAP,EAAe;AAClB,iBAAS,CAAC,IAAV,CAAe,SAAf;AACH,OAFM,MAEA;AACH,YAAM,CAAC,GAAG,IAAI,KAAJ,EAAV;AACA,SAAC,CAAC,IAAF,CAAO,EAAE,CAAC,QAAH,CAAY,IAAnB;AACA,iBAAS,CAAC,IAAV,CAAe,CAAf;AACH;AACJ;;AACD,WAAO,SAAP;AACH;;AAEiC,SAA3B,2BAA2B,CAAC,SAAD,EAAU;AACxC,QAAI,QAAJ;AACA,QAAI,QAAJ;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,SAAS,CAAC,MAA9B,EAAsC,CAAC,EAAvC,EAA2C;AACvC,UAAI,CAAC,KAAK,SAAS,CAAC,MAAV,GAAmB,CAA7B,EAAgC;AAC5B,gBAAQ,GAAG,SAAS,CAAC,CAAC,GAAG,CAAL,CAApB;AACH,OAFD,MAEO;AACH,gBAAQ,GAAG,SAAX;AACH;;AACD,UAAI,QAAQ,KAAK,SAAb,IAA0B,QAAQ,KAAK,SAA3C,EAAsD;AAClD,iBAAS,CAAC,CAAD,CAAT,GAAe,SAAf;AACH;;AACD,cAAQ,GAAG,SAAS,CAAC,CAAD,CAApB;AACH;;AACD,WAAO,SAAP;AACH;;AAE0B,SAApB,oBAAoB,CAAC,SAAD,EAAmB;AAC1C,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,SAAS,CAAC,MAA9B,EAAsC,CAAC,EAAvC,EAA2C;AACvC,UAAI,SAAS,CAAC,CAAD,CAAT,KAAiB,SAArB,EAAgC;AAC5B;AACH;;AACD,UAAM,QAAQ,GAAG,SAAS,CAAC,CAAD,CAAT,CAAa,QAAb,EAAjB;;AACA,UAAI,CAAC,QAAQ,CAAC,QAAT,CAAkB,OAAlB,CAAD,IACO,CAAC,QAAQ,CAAC,QAAT,CAAkB,MAAlB,CADR,IAEO,CAAC,QAAQ,CAAC,QAAT,CAAkB,UAAlB,CAFZ,EAE2C;AACvC;AACA,iBAAS,CAAC,CAAD,CAAT,GAAe,SAAf;AACA;AACH;;AACD,UAAI,QAAQ,GAAG,KAAf;AACA,UAAI,OAAO,GAAG,KAAd;;AACA,WAAK,IAAM,CAAX,IAAgB,SAAS,CAAC,CAAD,CAAT,CAAa,SAA7B,EAAwC;AACpC,YAAI,CAAC,CAAC,IAAF,KAAW,OAAf,EAAwB;AACpB,kBAAQ,GAAG,IAAX;AACA;AACH;;AACD,YAAI,CAAC,CAAC,IAAF,KAAW,MAAf,EAAuB;AACnB,iBAAO,GAAG,IAAV;AACA;AACH;;AACD,YAAI,QAAQ,IAAI,CAAC,CAAC,IAAF,KAAW,SAAvB,IAAoC,CAAC,CAAC,SAAF,KAAgB,MAAxD,EAAgE;AAC5D,WAAC,CAAC,SAAF,GAAc,OAAd;AACH,SAFD,MAEO,IAAI,OAAO,IAAI,CAAC,CAAC,IAAF,KAAW,SAAtB,IAAmC,CAAC,CAAC,SAAF,KAAgB,OAAvD,EAAgE;AACnE,WAAC,CAAC,SAAF,GAAc,MAAd;AACH;AACJ;AACJ;;AACD,WAAO,SAAP;AACH;;AAEiC,SAA3B,2BAA2B,CAAC,SAAD,EAAmB;AACjD,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,SAAS,CAAC,MAAV,GAAmB,CAAvC,EAA0C,CAAC,EAA3C,EAA+C;AAC3C,UAAM,KAAK,GAAG,SAAS,CAAC,CAAD,CAAvB;AACA,UAAM,KAAK,GAAG,SAAS,CAAC,CAAC,GAAG,CAAL,CAAvB;;AACA,UAAI,CAAC,KAAD,IAAU,CAAC,KAAf,EAAsB;AAClB;AACH;;AACD,UAAM,QAAQ,GAAG,KAAK,CAAC,UAAN,EAAjB;;AACA,UAAI,CAAC,QAAD,IAAa,QAAQ,CAAC,MAAT,KAAoB,CAArC,EAAwC;AACpC;AACH;;AACD,WAAK,IAAM,OAAX,IAAsB,QAAtB,EAAgC;AAC5B,YAAM,QAAQ,GAAG,KAAK,CAAC,WAAN,CAAkB,OAAlB,CAAjB;;AACA,YAAI,QAAQ,CAAC,IAAT,KAAkB,SAAlB,IAA+B,QAAQ,CAAC,SAAT,KAAuB,OAA1D,EAAmE;AAC/D;AACH;;AACD,YAAI,CAAE,KAAK,CAAC,UAAN,GAAmB,QAAnB,CAA4B,OAA5B,CAAN,EAA6C;AACzC;AACH;;AACD,YAAM,QAAQ,GAAG,KAAK,CAAC,WAAN,CAAkB,OAAlB,CAAjB;;AACA,YAAI,QAAQ,CAAC,IAAT,KAAkB,SAAlB,IAA+B,QAAQ,CAAC,SAAT,KAAuB,OAA1D,EAAmE;AAC/D;AACH;;AACD,YAAI,QAAQ,CAAC,IAAT,KAAkB,UAAlB,IAAgC,QAAQ,CAAC,IAAT,KAAkB,MAAtD,EAA8D;AAC1D;AACA;AACH;;AACD,gBAAQ,CAAC,IAAT,GAAgB,OAAhB;AACA,gBAAQ,CAAC,SAAT,GAAqB,SAArB;;AACA,YAAI,QAAQ,CAAC,IAAT,KAAkB,SAAtB,EAAiC;AAC7B,kBAAQ,CAAC,IAAT,GAAgB,MAAhB;AACH,SAFD,MAEO,IAAI,QAAQ,CAAC,IAAT,KAAkB,OAAtB,EAA+B;AAClC,kBAAQ,CAAC,IAAT,GAAgB,UAAhB;AACH;;AACD,gBAAQ,CAAC,SAAT,GAAqB,SAArB;AACH;AACJ,KApCgD,CAqCjD;;;AACA,SAAK,IAAI,EAAC,GAAG,CAAb,EAAgB,EAAC,GAAG,SAAS,CAAC,MAA9B,EAAsC,EAAC,EAAvC,EAA2C;AACvC,UAAM,MAAK,GAAG,SAAS,CAAC,EAAD,CAAvB;AACA,UAAM,KAAK,GAAG,SAAS,CAAC,EAAC,GAAG,CAAL,CAAvB;;AACA,UAAI,CAAC,MAAD,IAAU,CAAC,KAAf,EAAsB;AAClB;AACH;;AACD,UAAM,SAAQ,GAAG,MAAK,CAAC,UAAN,EAAjB;;AACA,UAAI,CAAC,SAAD,IAAa,SAAQ,CAAC,MAAT,KAAoB,CAArC,EAAwC;AACpC;AACH;;AACD,WAAK,IAAM,QAAX,IAAsB,SAAtB,EAAgC;AAC5B,YAAM,SAAQ,GAAG,MAAK,CAAC,WAAN,CAAkB,QAAlB,CAAjB;;AACA,YAAI,SAAQ,CAAC,IAAT,KAAkB,SAAlB,IAA+B,SAAQ,CAAC,SAAT,KAAuB,MAA1D,EAAkE;AAC9D;AACH;;AACD,YAAI,CAAE,KAAK,CAAC,UAAN,GAAmB,QAAnB,CAA4B,QAA5B,CAAN,EAA6C;AACzC;AACH;;AACD,YAAM,QAAQ,GAAG,KAAK,CAAC,WAAN,CAAkB,QAAlB,CAAjB;;AACA,YAAI,QAAQ,CAAC,IAAT,KAAkB,MAAtB,EAA8B;AAC1B;AACH;;AACD,iBAAQ,CAAC,IAAT,GAAgB,MAAhB;AACA,iBAAQ,CAAC,SAAT,GAAqB,SAArB;AACA,gBAAQ,CAAC,IAAT,GAAgB,UAAhB;AACH;AACJ;;AACD,WAAO,SAAP;AACH;;AAKS,MAAN,MAAM;AACN,WAAO,KAAK,SAAL,CAAe,MAAtB;AACH;AAED;;;;;;;AAOG;;;AACH,QAAM,CAAC,IAAD,EAAe,SAAS,GAAC,SAAzB,EAAkC;AACpC,QAAM,GAAG,GAAG,IAAI,IAAJ,CAAS,IAAT,EAAe,SAAf,CAAZ;AACA,OAAG,CAAC,MAAJ,GAAa,KAAK,SAAL,CAAe,MAAf,GAAwB,CAArC;AACA,SAAK,SAAL,CAAe,IAAf,CAAoB,GAApB;AACA,WAAO,GAAP;AACH;AAED;;;;;;;;;;;;;;;;AAiBA,MAAI,CAAC,KAAD,EAAuB,OAAyB,SAAhD,EAAyD;AACzD,SAAK,SAAL,GAAiB,EAAjB;AACA,QAAI,KAAK,GAAG,CAAZ;;AACA,QACI,KAAK,KAAK,CAAV,IACG,KAAK,KAAK,KADb,IAEG,KAAK,KAAK,yDAHjB,EAIE;AACE,WAAK,GAAG,CAAR;AACH,KAND,MAMO,IAAI,KAAK,KAAK,CAAV,IAAe,KAAK,KAAK,0DAA7B,EAA2D;AAC9D,WAAK,GAAG,CAAR;AACH,KAFM,MAEA,IAAI,KAAK,KAAK,CAAV,IAAe,KAAK,KAAK,0DAA7B,EAA2D;AAC9D,WAAK,GAAG,CAAR;AACH,KAFM,MAEA,IAAI,KAAK,KAAK,CAAV,IAAe,KAAK,KAAK,0DAA7B,EAA2D;AAC9D,WAAK,GAAG,CAAR;AACH,KAFM,MAEA,IAAI,KAAK,KAAK,CAAV,IAAe,KAAK,KAAK,2DAA7B,EAA4D;AAC/D,WAAK,GAAG,CAAR;AACH,KAFM,MAEA,IAAI,KAAK,KAAK,CAAV,IAAe,KAAK,KAAK,2DAA7B,EAA4D;AAC/D,WAAK,GAAG,CAAR;AACH,KAFM,MAEA;AACH,YAAM,IAAI,2DAAJ,CAAqB,iCAAiC,KAAtD,CAAN;AACH;;AACD,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,IAAI,KAArB,EAA4B,CAAC,EAA7B,EAAiC;AAC7B,UAAM,GAAG,GAAG,IAAI,IAAJ,CAAS,IAAT,CAAZ;AACA,SAAG,CAAC,MAAJ,GAAa,CAAb;AACA,WAAK,SAAL,CAAe,IAAf,CAAoB,GAApB;AACH;;AACD,WAAO,IAAP;AACH;AAED;;;;;AAKG;;;AACH,aAAW,CAAC,MAAD,EAAe;AACtB,QAAI,CAAC,KAAK,UAAL,GAAkB,QAAlB,CAA2B,MAA3B,CAAL,EAAyC;AACrC,YAAM,IAAI,2DAAJ,CAAqB,iBAAiB,MAAjB,GAA0B,qBAA/C,CAAN;AACH;;AACD,SAAK,IAAM,QAAX,IAAuB,KAAK,SAA5B,EAAuC;AACnC,UAAI,QAAQ,CAAC,MAAT,KAAoB,MAAxB,EAAgC;AAC5B,eAAO,QAAP;AACH;AACJ;;AACD,WAAO,SAAP;AACH;AAED;;;;AAIG;;;AACH,YAAU;AACN,QAAM,OAAO,GAAG,EAAhB;;AACA,SAAK,IAAM,QAAX,IAAuB,KAAK,SAA5B,EAAuC;AACnC,aAAO,CAAC,IAAR,CAAa,QAAQ,CAAC,MAAtB;AACH;;AACD,WAAO,OAAP;AACH;AAED;;;;;;AAMG;;;AACH,iBAAe,CAAC,MAAD,EAAe;AAC1B,QAAM,OAAO,GAAG,KAAK,WAAL,CAAiB,MAAjB,CAAhB;;AACA,QAAI,OAAO,KAAK,SAAhB,EAA2B;AACvB,aAAO,SAAP;AACH;;AACD,QAAI,OAAO,CAAC,SAAR,KAAsB,SAA1B,EAAqC;AACjC,aAAO,OAAO,CAAC,IAAf;AACH,KAFD,MAEO;AACH,UAAM,CAAC,GAAG,OAAO,CAAC,IAAR,GAAe,GAAf,GAAqB,OAAO,CAAC,SAAvC;AACA,aAAO,CAAP;AACH;AACJ;AAED;;;;AAIG;;;AACH,UAAQ;AACJ,QAAM,KAAK,GAAG,EAAd;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,MAAzB,EAAiC,CAAC,EAAlC,EAAsC;AAClC,WAAK,CAAC,IAAN,CAAW,KAAK,SAAL,CAAe,CAAf,EAAkB,IAA7B;AACH;;AACD,WAAO,KAAP;AACH;AAED;;;;;;AAMG;;;AACH,QAAM,CAAC,IAAD,EAAe,YAAoB,SAAnC,EAA4C;AAC9C,QAAI,cAAc,CAAC,IAAD,CAAd,KAAyB,SAA7B,EAAwC;AACpC,YAAM,IAAI,2DAAJ,CAAqB,wBAAwB,IAA7C,CAAN;AACH;;AACD,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,MAAzB,EAAiC,CAAC,EAAlC,EAAsC;AAClC,UAAM,CAAC,GAAG,KAAK,SAAL,CAAe,CAAf,CAAV;AACA,OAAC,CAAC,IAAF,GAAS,IAAT;AACA,OAAC,CAAC,SAAF,GAAc,SAAd;AACH;;AACD,WAAO,IAAP;AACH;AAED;;;;;;;AAOG;;;AACH,aAAW,CACP,MADO,EAEP,IAFO,EAGP,YAA8B,SAHvB,EAGgC;AAEvC,QAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,UAAM,OAAO,GAAG,IAAI,CAAC,KAAL,CAAW,GAAX,CAAhB;AACA,UAAI,GAAG,OAAO,CAAC,CAAD,CAAd;AACA,eAAS,GAAG,OAAO,CAAC,CAAD,CAAnB,CAHyB,CAGD;AAC3B;;AACD,QAAI,cAAc,CAAC,IAAD,CAAd,KAAyB,SAA7B,EAAwC;AACpC,YAAM,IAAI,2DAAJ,CAAqB,wBAAwB,IAA7C,CAAN;AACH;;AACD,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,MAAzB,EAAiC,CAAC,EAAlC,EAAsC;AAClC,UAAI,KAAK,SAAL,CAAe,CAAf,EAAkB,MAAlB,KAA6B,MAAjC,EAAyC;AACrC,aAAK,SAAL,CAAe,CAAf,EAAkB,IAAlB,GAAyB,IAAzB;AACA,aAAK,SAAL,CAAe,CAAf,EAAkB,SAAlB,GAA8B,SAA9B;AACH;AACJ;;AACD,WAAO,IAAP;AACH;;AA9T4C,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvEjD;;;;;;;;;;;;;;;;AAgBG;AACH;AAEA;AACA;AACA;AACA;AAMA;AAGA;;;;;;;;;;;;;AAaG;;AACG,MAAO,KAAP,SAAqB,0CAArB,CAAiC;AAYnC,cAAY,KAAZ,EAAuD;AACnD;AAVM,kBAAsB,EAAtB;AACV,mBAAU,IAAV,CAQuD,CARvC;;AAChB,kBAAS,KAAT,CAOuD,CAPvC;;AAChB,kBAAS,KAAT,CAMuD,CANvC;;AAChB,sBAAkB,EAAlB;AACA,kBAAc,EAAd;AACU,+BAA2B,SAA3B;AACA,4CAA4C,IAA5C,CAE6C,CAFK;;AAIxD,QAAI,OAAO,KAAP,KAAiB,WAArB,EAAkC;AAC9B,WAAK,GAAG,EAAR;AACH,KAFD,MAEO,IAAI,OAAO,KAAP,KAAiB,QAArB,EAA+B;AAClC,WAAK,GAAG,KAAK,CAAC,KAAN,CAAY,KAAZ,CAAR;AACH;;AAED,SAAK,IAAM,CAAX,IAAgB,KAAhB,EAAuB;AACnB,WAAK,GAAL,CAAS,CAAT,EAAY,KAAZ;AACH;;AACD,QAAI,KAAK,CAAC,MAAN,GAAe,CAAnB,EAAsB;AAClB,UAAM,EAAE,GAAG,KAAK,CAAC,CAAD,CAAhB;;AACA,UAAI,EAAE,YAAY,uCAAlB,EAA6B;AACzB,YAAI,EAAE,CAAC,QAAH,CAAY,aAAZ,KAA8B,KAAK,QAAL,CAAc,aAAhD,EAA+D;AAC3D,eAAK,QAAL,GAAgB,EAAE,CAAC,QAAnB;AACH;AACJ;AACJ;;AACD,SAAK,WAAL;AACH;;AA/BmB,aAAT,SAAS;AAAK,WAAO,qBAAP;AAA+B;;AAiCxD,YAAU;AACN,QAAM,IAAI,GAAG,KAAK,OAAL,CAAa,GAAb,CAAiB,CAAC,IAAI,CAAC,CAAC,cAAxB,CAAb;AACA,WAAO,IAAI,CAAC,IAAL,CAAU,GAAV,CAAP;AACH;;AAES,MAAN,MAAM;AACN,WAAO,KAAK,MAAL,CAAY,MAAnB;AACH,GAzCkC,CA2CnC;AACA;AACA;;;AACW,MAAP,OAAO;AACP,QAAM,WAAW,GAAG,EAApB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,MAAL,CAAY,MAAhC,EAAwC,CAAC,EAAzC,EAA6C;AACzC,iBAAW,CAAC,IAAZ,CAAiB,KAAK,MAAL,CAAY,CAAZ,EAAe,KAAhC;AACH;;AACD,WAAO,WAAP;AACH;;AAEU,MAAP,OAAO,CAAC,WAAD,EAAqB;AAC5B,SAAK,MAAL,GAAc,EAAd;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,WAAW,CAAC,MAAhC,EAAwC,CAAC,EAAzC,EAA6C;AACzC,UAAI,OAAO,SAAX;;AACA,UAAI,OAAO,WAAW,CAAC,CAAD,CAAlB,KAA0B,QAA9B,EAAwC;AACpC,eAAO,GAAG,IAAI,uCAAJ,CAAc,WAAW,CAAC,CAAD,CAAzB,CAAV;AACH,OAFD,MAEO,IAAI,WAAW,CAAC,CAAD,CAAX,CAAe,iBAAf,CAAiC,OAAjC,CAAJ,EAA+C;AAClD,eAAO,GAAG,IAAI,uCAAJ,EAAV;AACA,eAAO,CAAC,KAAR,GAAgB,WAAW,CAAC,CAAD,CAA3B;AACH,OAHM,MAGA,IAAI,WAAW,CAAC,CAAD,CAAX,CAAe,iBAAf,CAAiC,MAAjC,CAAJ,EAA8C;AACjD,eAAO,GAAG,WAAW,CAAC,CAAD,CAArB;AACH,OAFM,MAEA;AACH,eAAO,CAAC,IAAR,CAAa,WAAb,EAA0B,WAAW,CAAC,CAAD,CAArC;AACA,cAAM,IAAI,2DAAJ,CACF,2BAA2B,WAAW,CAAC,CAAD,CADpC,CAAN;AAGH;;AACD,WAAK,MAAL,CAAY,IAAZ,CAAiB,OAAjB;AACH;;AACD,SAAK,MAAL,GAAc,EAAd;AACA,SAAK,UAAL,GAAkB,EAAlB;AACH;;AAEQ,MAAL,KAAK;AACL,WAAO,CAAC,GAAG,KAAK,MAAT,CAAP;AACH;;AAEQ,MAAL,KAAK,CAAC,QAAD,EAAsB;AAC3B,SAAK,MAAL,GAAc,CAAC,GAAG,QAAJ,CAAd;AACA,SAAK,MAAL,GAAc,EAAd;AACA,SAAK,UAAL,GAAkB,EAAlB;AACH;;AAGsB,MAAnB,mBAAmB;AACnB,QAAM,OAAO,GAAG,EAAhB;;AACA,SAAK,IAAM,CAAX,IAAgB,KAAK,OAArB,EAA8B;AAC1B,UAAI,OAAO,CAAC,QAAR,CAAiB,CAAC,CAAC,UAAnB,CAAJ,EAAoC;AAChC;AACH;;AACD,aAAO,CAAC,IAAR,CAAa,CAAC,CAAC,UAAf;AACH;;AACD,WAAO,CAAC,IAAR,CAAa,CAAC,CAAD,EAAI,CAAJ,KAAU,CAAC,GAAG,CAA3B;AACA,WAAO,OAAP;AACH;;AAEqB,MAAlB,kBAAkB;AAClB,QAAI,KAAK,gCAAT,EAA2C;AACvC,WAAK,mBAAL,GAA2B,kEAAmC,IAAnC,CAA3B;AACH;;AACD,SAAK,gCAAL,GAAwC,KAAxC;AACA,WAAO,KAAK,mBAAZ;AACH;;AAEa,MAAV,UAAU;AACV;AACA,QAAM,GAAG,GAAG,KAAK,kBAAjB;AACA,QAAM,GAAG,GAAG,gEAAiC,GAAjC,CAAZ;AACA,QAAM,UAAU,GAAG,KAAK,UAAxB;AACA,QAAM,eAAe,GAAG;AACpB,eAAS,MAAM,KAAK,YAAL,EADK;AAEpB,eAAS,MAAM,KAAK,YAAL,EAFK;AAGpB,cAAQ,MAAM,KAAK,iBAAL,EAHM;AAIpB,cAAQ,MAAM,KAAK,gBAAL;AAJM,KAAxB;;AAMA,QAAI,eAAe,CAAC,UAAD,CAAf,KAAgC,SAApC,EAA+C;AAC3C,UAAI,GAAG,GAAG,GAAG,CAAC,CAAD,CAAb;AACA,UAAM,IAAI,GAAG,eAAe,CAAC,UAAD,CAA5B;;AACA,UAAI,CAAC,IAAI,EAAT,EAAa;AACT,WAAG,GAAG,8BAA8B,GAApC;AACH;;AACD,aAAO,GAAP;AACH;;AAED,QAAI,GAAG,KAAK,SAAZ,EAAuB;AACnB,aAAO,EAAP;AACH,KAFD,MAEO;AACH,aAAO,GAAG,CAAC,CAAD,CAAV;AACH;AACJ;;AAEa,MAAV,UAAU;AACV,WAAO,8DAA+B,KAAK,kBAApC,EAAwD,IAAxD,CAAP;AACH;;AAEmB,MAAhB,gBAAgB;AAChB,WAAO,KAAK,kBAAL,CAAwB,UAA/B;AACH;;AAEgB,MAAb,aAAa;AACb,WAAO,8DAA+B,KAAK,kBAApC,EAAwD,KAAxD,CAAP;AACH;;AAED,KAAG,CAAC,CAAD,EAAE;AACD,QAAI,OAAO,CAAP,KAAa,QAAjB,EAA2B;AACvB,aAAO,KAAK,MAAL,CAAY,CAAZ,CAAP;AACH,KAFD,MAEO;AACH,aAAO,SAAP,CADG,CACe;AACrB;AACJ;;AAEiB,IAAf,MAAM,CAAC,QAAQ,IAAC;AACf,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,MAAzB,EAAiC,CAAC,EAAlC,EAAsC;AAClC,YAAM,KAAK,GAAL,CAAS,CAAT,CAAN;AACH;AACJ;;AAGD,eAAa,CAAC,KAAD,EAAM;AACf,QAAM,gBAAgB,GAAG,6DAA8B,KAAK,kBAAnC,CAAzB;;AACA,QAAI,gBAAgB,KAAK,SAAzB,EAAoC;AAChC,aAAO,KAAP;AACH;;AACD,SAAK,IAAM,GAAX,IAAkB,CAAC,aAAD,EAAgB,YAAhB,EAA8B,WAA9B,CAAlB,EAA8D;AAC1D,UAAI,KAAK,CAAC,kBAAN,CAAyB,GAAzB,MAAkC,gBAAgB,CAAC,GAAD,CAAtD,EAA6D;AACzD,eAAO,KAAP;AACH;AACJ;;AACD,WAAO,IAAP;AACH;;AAED,cAAY;AACR,QAAI,CAAC,KAAK,YAAV,EAAwB;AACpB,aAAO,SAAP;AACH;;AACD,QAAM,kBAAkB,GAAG,KAAK,kBAAhC;AACA,QAAM,CAAC,GAAG,mEAAoC,kBAApC,CAAV;AACA,QAAM,SAAS,GAAG,mEAAoC,CAApC,CAAlB;AACA,QAAI,KAAJ;;AACA,SAAK,IAAM,WAAX,IAA0B,SAA1B,EAAqC;AACjC,UAAI,WAAW,CAAC,UAAZ,KAA2B,kBAAkB,CAAC,UAAlD,EAA8D;AAC1D,aAAK,GAAG,WAAR;AACH;AACJ,KAZO,CAaR;;;AACA,QAAM,KAAK,GAAG,yEAA0C,KAA1C,CAAd;AACA,WAAO,IAAI,KAAJ,CAAU,KAAV,CAAP;AACH;;AAEe,MAAZ,YAAY;AACZ,QAAM,IAAI,GAAG,6DAA8B,KAAK,kBAAnC,CAAb;;AACA,QAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,aAAO,IAAP;AACH,KAFD,MAEO;AACH,aAAO,KAAP;AACH;AACJ;;AAEiB,MAAd,cAAc;AACd,WAAO,mEAAoC,KAAK,kBAAzC,CAAP;AACH,GA5MkC,CA8MnC;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA,0BAAwB,CAAC,IAAD,EAAiB;AACrC,QAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,aAAO,IAAP;AACH,KAFD,MAEO;AACH,UAAM,OAAO,GAAG,IAAI,CAAC,UAAL,GAAkB,CAAlC,CADG,CAEH;;AACA,UAAI,gBAAgB,GAAG,CAAvB;AACA,UAAM,EAAE,GAAG,KAAK,OAAhB;;AACA,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,OAAL,CAAa,MAAjC,EAAyC,CAAC,EAA1C,EAA8C;AAC1C,YAAM,CAAC,GAAG,EAAE,CAAC,CAAD,CAAZ;AACA,YAAM,aAAa,GAAG,CAAC,CAAC,eAAF,GAAoB,OAA1C,CAF0C,CAG1C;;AACA,YAAI,IAAI,CAAC,GAAL,CAAS,aAAT,KAA2B,IAAI,CAAC,GAAL,CAAS,gBAAT,CAA/B,EAA2D;AACvD,0BAAgB,GAAG,aAAnB;AACH;AACJ;;AACD,UAAI,gBAAgB,IAAI,CAAxB,EAA2B;AACvB,aAAK,aAAL,GAAqB,MAArB;AACH,OAFD,MAEO;AACH,aAAK,aAAL,GAAqB,IAArB;AACH;;AACD,aAAO,IAAP;AACH;AACJ;AAED;;;;;;;;;AASG;;;AACH,KAAG,CAAC,KAAD,EAAQ,UAAmB,IAA3B,EAA+B;AAC9B,QAAI,EAAE,KAAK,YAAY,KAAnB,CAAJ,EAA+B;AAC3B,WAAK,GAAG,CAAC,KAAD,CAAR;AACH;;AACD,SAAK,IAAM,iBAAX,IAAgC,KAAhC,EAAuC;AACnC;AACA,UAAI,OAAkB,SAAtB;;AACA,UAAI,OAAO,iBAAP,KAA6B,QAAjC,EAA2C;AACvC,eAAO,GAAG,IAAI,uCAAJ,CAAc,iBAAd,CAAV;AACH,OAFD,MAEO,IAAI,iBAAiB,CAAC,iBAAlB,CAAoC,OAApC,CAAJ,EAAkD;AACrD,YAAM,QAAQ,GAAG,iBAAjB;AACA,YAAM,QAAQ,GAAG,IAAI,uCAAJ,EAAjB;AACA,gBAAQ,CAAC,KAAT,GAAiB,QAAjB;AACA,eAAO,GAAG,QAAV;AACH,OALM,MAKA;AACH,eAAO,GAAG,iBAAV;AACH;;AACD,WAAK,MAAL,CAAY,IAAZ,CAAiB,OAAjB;AACH,KAlB6B,CAmB9B;;;AACA,QAAI,OAAO,KAAK,IAAhB,EAAsB;AAClB,WAAK,WAAL;AACH;;AACD,SAAK,MAAL,GAAc,EAAd;AACA,WAAO,IAAP;AACH;;AAED,aAAW;AACP,SAAK,MAAL,CAAY,IAAZ,CAAiB,CAAC,CAAD,EAAe,CAAf,KAA+B;AAC5C,UAAI,IAAI,GAAW,CAAC,CAAC,KAAF,CAAQ,eAAR,GAA0B,CAAC,CAAC,KAAF,CAAQ,eAArD;;AACA,UAAI,IAAI,KAAK,CAAb,EAAgB;AACZ,YAAI,GAAG,CAAC,CAAC,KAAF,CAAQ,EAAR,GAAa,CAAC,CAAC,KAAF,CAAQ,EAA5B;AACH;;AACD,aAAO,IAAP;AACH,KAND;AAOH,GA5RkC,CA8RnC;;AAEA;;;;;AAKG;;;AACH,wBAAsB;AAClB,QAAM,UAAU,GAAG,EAAnB;AACA,QAAM,qBAAqB,GAAG,EAA9B;AACA,QAAM,OAAO,GAAG,KAAK,OAArB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,OAAO,CAAC,MAA5B,EAAoC,CAAC,EAArC,EAAyC;AACrC,UAAM,CAAC,GAAG,OAAO,CAAC,CAAD,CAAjB;;AACA,UAAI,UAAU,CAAC,OAAX,CAAmB,CAAC,CAAC,IAArB,MAA+B,CAAC,CAApC,EAAuC;AACnC,kBAAU,CAAC,IAAX,CAAgB,CAAC,CAAC,IAAlB;AACA,6BAAqB,CAAC,IAAtB,CAA2B,CAA3B;AACH;AACJ;;AACD,QAAM,WAAW,GAAG,IAAI,KAAJ,CAAU,qBAAV,CAApB;AACA,WAAO,WAAP;AACH;AAED;;AAEG;;;AACH,MAAI,CAAC,OAAD,EAAgB;AAChB,QAAI,OAAO,KAAK,SAAhB,EAA2B;AACvB,WAAK,UAAL,CAAgB,IAAhB,GAAuB,OAAvB;AACA,WAAK,MAAL,CAAY,IAAZ,GAAmB,OAAnB;AACA,WAAK,MAAL,CAAY,SAAZ,GAAwB,SAAxB;AACH;;AAED,QAAI,KAAK,UAAL,CAAgB,IAAhB,KAAyB,SAA7B,EAAwC;AACpC,aAAO,KAAK,UAAL,CAAgB,IAAvB;AACH;;AAED,QAAI,KAAK,MAAL,CAAY,IAAZ,KAAqB,SAAzB,EAAoC;AAChC,aAAO,KAAK,MAAL,CAAY,IAAnB;AACH;;AAED,QAAM,WAAW,GAAG,KAAK,sBAAL,EAApB;AACA;;AACA,QAAM,aAAa,GAAG,WAAW,CAAC,OAAlC;;AACA,QAAI,aAAa,CAAC,MAAd,KAAyB,CAA7B,EAAgC;AAC5B,YAAM,IAAI,2DAAJ,CAAqB,oBAArB,CAAN;AACH,KAFD,MAEO,IAAI,aAAa,CAAC,MAAd,KAAyB,CAA7B,EAAgC;AACnC,aAAO,KAAK,OAAL,CAAa,CAAb,CAAP;AACH,KAtBe,CAuBhB;;;AACA,QAAM,SAAS,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,aAAa,CAAC,MAAlC,EAA0C,CAAC,EAA3C,EAA+C;AAC3C,UAAM,CAAC,GAAG,aAAa,CAAC,CAAD,CAAvB;AACA,UAAM,mBAAmB,GAAG,EAA5B;;AACA,WAAK,IAAI,OAAO,GAAG,CAAnB,EAAsB,OAAO,GAAG,SAAS,CAAC,MAA1C,EAAkD,OAAO,EAAzD,EAA6D;AACzD,YAAM,cAAc,GAAG,WAAW,CAAC,YAAZ,CACnB,SAAS,CAAC,OAAD,CADU,EAEnB,CAFmB,CAAvB;;AAIA,YAAI,cAAc,KAAK,SAAvB,EAAkC;AAC9B;AACA,6BAAmB,CAAC,IAApB,CAAyB,IAAzB;AACH,SAHD,MAGO;AACH,6BAAmB,CAAC,IAApB,CAAyB,KAAzB;AACH;AACJ,OAd0C,CAe3C;;;AACA,UAAI,QAAQ,GAAG,KAAf;;AACA,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,aAAa,CAAC,MAAd,GAAuB,CAA3C,EAA8C,CAAC,EAA/C,EAAmD;AAC/C,YAAI,mBAAmB,CAAC,CAAD,CAAnB,KAA2B,KAA/B,EAAsC;AAClC,kBAAQ,GAAG,IAAX;AACH;AACJ;;AACD,UAAI,QAAQ,KAAK,KAAjB,EAAwB;AACpB;AACA,eAAO,WAAW,CAAC,OAAZ,CAAoB,CAApB,CAAP,CAFoB,CAEW;AAC/B;AACH;AACJ;;AACD,QAAM,OAAO,GAAG,WAAW,CAAC,OAAZ,CAAoB,CAApB,CAAhB,CArDgB,CAqDwB;;AACxC,SAAK,MAAL,CAAY,IAAZ,GAAmB,OAAnB;AACA,WAAO,OAAP;AACH;AAED;;;;;;;;;;AAUG;;;AACH,wBAAsB,CAAC,SAAD,EAAoB,QAApB,EAAoC;AACtD,QAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,cAAQ,GAAG,KAAK,IAAL,EAAX;AACH;;AACD,QAAM,aAAa,GAAG,KAAK,YAAL,CAAkB,SAAlB,EAA6B,QAA7B,CAAtB;;AACA,QAAI,aAAa,KAAK,SAAtB,EAAiC;AAC7B,aAAO,SAAP;AACH,KAFD,MAEO;AACH,UAAI,SAAS,GAAG,CAAC,aAAa,CAAC,EAAd,GAAmB,QAAQ,CAAC,EAA7B,IAAmC,EAAnD;;AACA,UAAI,SAAS,GAAG,CAAhB,EAAmB;AACf,iBAAS,IAAI,EAAb;AACH;;AACD,aAAO,SAAP;AACH;AACJ;AAED;;;;AAIG;;;AACH,MAAI,CAAC,OAAD,EAAgB;AAChB,QAAI,OAAO,KAAK,SAAhB,EAA2B;AACvB,WAAK,UAAL,CAAgB,IAAhB,GAAuB,OAAvB;AACA,WAAK,MAAL,CAAY,IAAZ,GAAmB,OAAnB;AACA,WAAK,MAAL,CAAY,SAAZ,GAAwB,SAAxB;AACH;;AAED,QAAI,KAAK,UAAL,CAAgB,IAAhB,KAAyB,SAA7B,EAAwC;AACpC,aAAO,KAAK,UAAL,CAAgB,IAAvB;AACH;;AAED,QAAI,KAAK,MAAL,CAAY,IAAZ,KAAqB,SAAzB,EAAoC;AAChC,aAAO,KAAK,MAAL,CAAY,IAAnB;AACH;;AAED,QAAI,MAAJ;AACA,QAAM,OAAO,GAAG,KAAK,OAArB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,OAAO,CAAC,MAA5B,EAAoC,CAAC,EAArC,EAAyC;AACrC,UAAM,CAAC,GAAG,OAAO,CAAC,CAAD,CAAjB;;AACA,UAAI,MAAM,KAAK,SAAf,EAA0B;AACtB,cAAM,GAAG,CAAT;AACH,OAFD,MAEO;AAAE;AACL,YAAI,CAAC,CAAC,EAAF,GAAO,MAAM,CAAC,EAAlB,EAAsB;AAClB,gBAAM,GAAG,CAAT;AACH;AACJ;AACJ;;AACD,WAAO,MAAP;AACH;AAED;;;;AAIG;;;AACH,aAAW;AACP,QAAM,WAAW,GAAG,KAAK,sBAAL,EAApB;AACA,WAAO,WAAW,CAAC,OAAZ,CAAoB,MAA3B;AACH;;AAED,cAAY;AACR,QAAI,KAAK,WAAL,OAAuB,CAA3B,EAA8B;AAC1B,aAAO,KAAP;AACH;;AACD,QAAM,OAAO,GAAG,KAAK,sBAAL,CAA4B,CAA5B,CAAhB;AACA,QAAM,OAAO,GAAG,KAAK,sBAAL,CAA4B,CAA5B,CAAhB;;AACA,QAAI,OAAO,KAAK,CAAZ,IAAiB,OAAO,KAAK,CAAjC,EAAoC;AAChC,aAAO,IAAP;AACH,KAFD,MAEO;AACH,aAAO,KAAP;AACH;AACJ;;AAED,cAAY;AACR,QAAI,KAAK,WAAL,OAAuB,CAA3B,EAA8B;AAC1B,aAAO,KAAP;AACH;;AACD,QAAM,OAAO,GAAG,KAAK,sBAAL,CAA4B,CAA5B,CAAhB;AACA,QAAM,OAAO,GAAG,KAAK,sBAAL,CAA4B,CAA5B,CAAhB;;AACA,QAAI,OAAO,KAAK,CAAZ,IAAiB,OAAO,KAAK,CAAjC,EAAoC;AAChC,aAAO,IAAP;AACH,KAFD,MAEO;AACH,aAAO,KAAP;AACH;AACJ;;AAED,mBAAiB;AACb,QAAI,KAAK,WAAL,OAAuB,CAA3B,EAA8B;AAC1B,aAAO,KAAP;AACH;;AACD,QAAM,OAAO,GAAG,KAAK,sBAAL,CAA4B,CAA5B,CAAhB;AACA,QAAM,OAAO,GAAG,KAAK,sBAAL,CAA4B,CAA5B,CAAhB;;AACA,QAAI,OAAO,KAAK,CAAZ,IAAiB,OAAO,KAAK,CAAjC,EAAoC;AAChC,aAAO,IAAP;AACH,KAFD,MAEO;AACH,aAAO,KAAP;AACH;AACJ;;AAED,kBAAgB;AACZ,QAAI,KAAK,WAAL,OAAuB,CAA3B,EAA8B;AAC1B,aAAO,KAAP;AACH;;AACD,QAAM,OAAO,GAAG,KAAK,sBAAL,CAA4B,CAA5B,CAAhB;AACA,QAAM,OAAO,GAAG,KAAK,sBAAL,CAA4B,CAA5B,CAAhB;;AACA,QAAI,OAAO,KAAK,CAAZ,IAAiB,OAAO,KAAK,CAAjC,EAAoC;AAChC,aAAO,IAAP;AACH,KAFD,MAEO;AACH,aAAO,KAAP;AACH;AACJ;;AAGD,mBAAiB;AACb,WAAO,KAAK,eAAL,CAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,EAAV,CAArB,CAAP;AACH;;AAED,qBAAmB;AACf,WAAO,KAAK,eAAL,CAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAArB,CAAP;AACH;;AAED,iBAAe,CAAC,aAAD,EAAwB;AACnC,QAAM,KAAK,GAAG,KAAK,KAAnB;AACA,QAAM,KAAK,GAAG,KAAK,KAAnB;AACA,QAAM,OAAO,GAAG,KAAK,OAArB;;AAEA,QACI,KAAK,KAAK,SAAV,IACG,KAAK,KAAK,SADb,IAEG,OAAO,KAAK,SAHnB,EAIE;AACE,aAAO,KAAP;AACH;;AAED,QAAM,IAAI,GAAG,KAAK,IAAL,EAAb;;AAEA,SAAK,IAAM,SAAX,IAAwB,KAAK,OAA7B,EAAsC;AAClC,UAAM,YAAY,GAAG,IAAI,+CAAJ,CAAsB,IAAtB,EAA4B,SAA5B,CAArB;;AACA,UAAI,CAAC,aAAa,CAAC,QAAd,CAAuB,YAAY,CAAC,SAAb,CAAuB,KAA9C,CAAL,EAA2D;AACvD,eAAO,KAAP;AACH,OAJiC,CAKlC;AACA;AACA;AACA;;AACH;;AACD,WAAO,IAAP;AAGH;AAGD;;AAEG;;;AACH,gBAAc;AACV,QAAI,KAAK,YAAL,MAAuB,KAAK,iBAAL,EAA3B,EAAqD;AACjD,aAAO,IAAP;AACH,KAFD,MAEO;AACH,aAAO,KAAP;AACH;AACJ;AAED;;AAEG;;;AACH,YAAU;AACN,QAAI,KAAK,YAAL,MAAuB,KAAK,YAAL,EAA3B,EAAgD;AAC5C,aAAO,IAAP;AACH,KAFD,MAEO;AACH,aAAO,KAAP;AACH;AACJ;AAED;;;;;;AAMG;;;AACH,WAAS;AACL,QAAM,IAAI,GAAG,KAAK,IAAL,EAAb;AACA,QAAM,IAAI,GAAG,KAAK,IAAL,EAAb;AACA,QAAM,sBAAsB,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAA/B;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,sBAAsB,CAAC,MAA3C,EAAmD,CAAC,EAApD,EAAwD;AACpD,UAAM,QAAQ,GAAG,KAAK,YAAL,CAAkB,sBAAsB,CAAC,CAAD,CAAxC,EAA6C,IAA7C,CAAjB;;AACA,UAAI,QAAQ,KAAK,SAAb,IAA0B,QAAQ,CAAC,IAAT,KAAkB,IAAI,CAAC,IAArD,EAA2D;AACvD,eAAO,CAAP;AACH;AACJ;;AACD,WAAO,SAAP;AACH;;AAED,UAAQ,CACJ,QAAgB,GADZ,EAEJ,WAFI,EAGJ;AACI,cAAU,GAAC,SADf;AAEI,WAAO,GAAC;AAFZ,MAGE,EANE,EAMA;AAEJ,QAAM,YAAY,GAAG,MAAM,QAAN,CAAe,KAAf,EAAsB,WAAtB,EAAmC;AAAE,gBAAF;AAAc;AAAd,KAAnC,CAArB;;AACA,QAAI,OAAO,KAAK,SAAhB,EAA2B;AACvB,aAAO,GAAG,KAAK,aAAL,EAAV;AACH;;AACD,QAAI,MAAJ;AACA,QAAM,MAAM,GAAG,KAAK,UAApB,CAPI,CAQJ;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,MAAL,CAAY,MAAhC,EAAwC,CAAC,EAAzC,EAA6C;AACzC,YAAM,GAAG,KAAK,MAAL,CAAY,CAAZ,EAAe,KAAf,CAAqB,IAA9B;;AACA,UAAI;AACA,qDAAY,OAAZ,EAAqB,MAArB,EAA6B,MAA7B,EAAqC,CAArC;AACA,sDAAa,OAAb,EAAsB,MAAtB,EAA8B,YAAY,GAAG,IAA7C;AACH,OAHD,CAGE,OAAO,CAAP,EAAU,CACR;AACH;AACJ;;AACD,WAAO,YAAP;AACH;AAED;;;;;;AAMG;;;AACH,cAAY,CAAC,SAAD,EAAoB,QAApB,EAAoC;AAC5C,QAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,cAAQ,GAAG,KAAK,IAAL,EAAX;AACH;;AACD,QAAI,SAAS,IAAI,CAAjB,EAAoB;AAChB,eAAS,IAAI,CAAb;AACH;;AACD,QAAM,WAAW,GAAG,KAAK,OAAzB;AACA,QAAM,WAAW,GAAG,QAAQ,CAAC,eAA7B;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,WAAW,CAAC,MAAhC,EAAwC,CAAC,EAAzC,EAA6C;AACzC,UAAM,SAAS,GAAG,WAAW,CAAC,CAAD,CAA7B;AACA,UAAI,YAAY,GACV,CAAC,SAAS,CAAC,eAAV,GAA4B,WAA5B,GAA0C,CAA3C,IAAgD,CADtD,CAFyC,CAGgB;;AACzD,UAAI,YAAY,IAAI,CAApB,EAAuB;AACnB,oBAAY,IAAI,CAAhB;AACH;;AACD,UAAI,YAAY,KAAK,SAArB,EAAgC;AAC5B,eAAO,SAAP;AACH;AACJ;;AACD,WAAO,SAAP;AACH;;AAEQ,MAAL,KAAK;AACL,WAAO,KAAK,YAAL,CAAkB,CAAlB,CAAP;AACH;;AAEQ,MAAL,KAAK;AACL,WAAO,KAAK,YAAL,CAAkB,CAAlB,CAAP;AACH;;AAEU,MAAP,OAAO;AACP,WAAO,KAAK,YAAL,CAAkB,CAAlB,CAAP;AACH;;AAnoBkC;AAsoBhC,IAAM,gBAAgB,GAAG;AAC5B,OAAK,EAAE,CAAC,IAAD,EAAO,IAAP,CADqB;AAE5B,OAAK,EAAE,CAAC,IAAD,EAAO,IAAP,CAFqB;AAG5B,YAAU,EAAE,CAAC,IAAD,EAAO,IAAP,CAHgB;AAI5B,WAAS,EAAE,CAAC,IAAD,EAAO,IAAP,CAJiB;AAK5B,mBAAiB,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,CALW;AAM5B,sBAAoB,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,CANQ;AAO5B,mBAAiB,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,CAPW;AAQ5B,wBAAsB,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,CARM;AAS5B,6BAA2B,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb;AATC,CAAzB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnrBP;AAEA,IAAI,EAAJ;AACA,IAAI,EAAJ;AACA,IAAI,EAAJ;AACA,IAAI,EAAJ;AACA,IAAI,EAAJ;AACA,IAAI,EAAJ;AACA,IAAI,EAAJ;AACA,IAAI,EAAJ;AACA,IAAI,EAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AACA,IAAI,GAAJ;AAEA,EAAE,GAAK,CAAC,CAAC,CAAD,CAAD,EAAM,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAN,EAA0B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,EAAb,EAAiB,EAAjB,EAAqB,EAArB,EAAyB,EAAzB,CAA1B,EAAwD,CAAxD,CAAP,C,CAAmE;;AACnE,IAAM,KAAK,GAAG,CAAC,SAAD,EAAY,EAAZ,CAAd;AAEA,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,CAAD,EAAS,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAT,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA7B,EAAuD,CAAvD,CAAP,C,CAAkE;;AAClE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,CAAD,EAAS,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAT,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA7B,EAAuD,CAAvD,CAAP,C,CAAkE;;AAClE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,CAAD,EAAS,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAT,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA7B,EAAuD,CAAvD,CAAP,C,CAAkE;;AAClE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,CAAD,EAAS,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAT,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA7B,EAAuD,CAAvD,CAAP,C,CAAkE;;AAClE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,CAAD,EAAS,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAT,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA7B,EAAuD,CAAvD,CAAP,C,CAAkE;;AAClE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,CAAD,EAAS,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAT,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,EAAb,EAAiB,EAAjB,EAAqB,EAArB,CAA7B,EAAuD,CAAvD,CAAP,C,CAAkE;;AAClE,IAAM,IAAI,GAAG,CAAC,SAAD,EAAY,EAAZ,EAAgB,EAAhB,EAAoB,EAApB,EAAwB,EAAxB,EAA4B,EAA5B,EAAgC,EAAhC,CAAb;AAEA,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EAAY,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAZ,EAAgC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhC,EAA0D,CAA1D,CAAP,C,CAAqE;;AACrE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EAAY,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAZ,EAAgC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhC,EAA0D,CAA1D,CAAP,C,CAAqE;;AACrE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EAAY,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAZ,EAAgC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhC,EAA0D,CAA1D,CAAP,C,CAAqE;;AACrE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EAAY,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAZ,EAAgC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhC,EAA0D,CAA1D,CAAP,C,CAAqE;;AACrE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EAAY,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAZ,EAAgC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhC,EAA0D,CAA1D,CAAP,C,CAAqE;;AACrE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EAAY,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAZ,EAAgC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhC,EAA0D,CAA1D,CAAP,C,CAAqE;;AACrE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EAAY,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAZ,EAAgC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhC,EAA0D,CAA1D,CAAP,C,CAAqE;;AACrE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EAAY,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAZ,EAAgC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhC,EAA0D,CAA1D,CAAP,C,CAAqE;;AACrE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EAAY,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAZ,EAAgC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhC,EAA0D,CAA1D,CAAP,C,CAAqE;;AACrE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EAAY,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAZ,EAAgC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhC,EAA0D,CAA1D,CAAN,C,CAAoE;;AACpE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EAAY,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAZ,EAAgC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhC,EAA0D,CAA1D,CAAN,C,CAAoE;;AACpE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EAAY,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAZ,EAAgC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhC,EAA0D,CAA1D,CAAN,C,CAAoE;;AACpE,IAAM,QAAQ,GAAG,CAAC,SAAD,EAAY,EAAZ,EAAgB,EAAhB,EAAoB,EAApB,EAAwB,EAAxB,EAA4B,EAA5B,EAAgC,EAAhC,EAAoC,EAApC,EAAwC,EAAxC,EAA4C,EAA5C,EAAgD,GAAhD,EAAqD,GAArD,EAA0D,GAA1D,CAAjB;AAEA,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAP,C,CAAwE;;AACxE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAP,C,CAAwE;;AACxE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAP,C,CAAwE;;AACxE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAP,C,CAAwE;;AACxE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAP,C,CAAwE;;AACxE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAP,C,CAAwE;;AACxE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAP,C,CAAwE;;AACxE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAP,C,CAAwE;;AACxE,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAP,C,CAAwE;;AACxE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAN,C,CAAuE;;AACvE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAN,C,CAAuE;;AACvE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAN,C,CAAuE;;AACvE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAN,C,CAAuE;;AACvE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAN,C,CAAuE;;AACvE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,EAA7D,CAAN,C,CAAwE;;AACxE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAN,C,CAAuE;;AACvE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAN,C,CAAuE;;AACvE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAN,C,CAAuE;;AACvE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAN,C,CAAuE;;AACvE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAN,C,CAAuE;;AACvE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAN,C,CAAuE;;AACvE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAN,C,CAAuE;;AACvE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAN,C,CAAuE;;AACvE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAN,C,CAAuE;;AACvE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAN,C,CAAuE;;AACvE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAN,C,CAAuE;;AACvE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAN,C,CAAuE;;AACvE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,CAA7D,CAAN,C,CAAuE;;AACvE,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnC,EAA6D,EAA7D,CAAN,C,CAAwE;;AACxE,IAAM,UAAU,GAAG,CAAC,SAAD,EAAY,EAAZ,EAAgB,EAAhB,EAAoB,EAApB,EAAwB,EAAxB,EAA4B,EAA5B,EAAgC,EAAhC,EAAoC,EAApC,EAAwC,EAAxC,EAA4C,EAA5C,EACf,GADe,EACV,GADU,EACL,GADK,EACA,GADA,EACK,GADL,EACU,GADV,EACe,GADf,EACoB,GADpB,EACyB,GADzB,EAC8B,GAD9B,EAEf,GAFe,EAEV,GAFU,EAEL,GAFK,EAEA,GAFA,EAEK,GAFL,EAEU,GAFV,EAEe,GAFf,EAEoB,GAFpB,EAEyB,GAFzB,EAE8B,GAF9B,CAAnB;AAKA,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAP,C,CAA2E;;AAC3E,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAP,C,CAA2E;;AAC3E,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAP,C,CAA2E;;AAC3E,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAP,C,CAA2E;;AAC3E,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAP,C,CAA2E;;AAC3E,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAP,C,CAA2E;;AAC3E,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAP,C,CAA2E;;AAC3E,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAP,C,CAA2E;;AAC3E,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAP,C,CAA2E;;AAC3E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAC,EAAD,CAAhE,CAAN,C,CAA6E;;AAC7E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAC,EAAD,CAAhE,CAAN,C,CAA6E;;AAC7E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAC,EAAD,CAAhE,CAAN,C,CAA6E;;AAC7E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,CAAhE,CAAN,C,CAA0E;;AAC1E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,EAAhE,CAAN,C,CAA2E;;AAC3E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,EAAhE,CAAN,C,CAA2E;;AAC3E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAlB,EAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAtC,EAAgE,EAAhE,CAAN,C,CAA2E;;AAC3E,IAAM,UAAU,GAAG,CAAC,SAAD,EAAY,EAAZ,EAAgB,EAAhB,EAAoB,EAApB,EAAwB,EAAxB,EAA4B,EAA5B,EAAgC,EAAhC,EAAoC,EAApC,EAAwC,EAAxC,EAA4C,EAA5C,EACf,GADe,EACV,GADU,EACL,GADK,EACA,GADA,EACK,GADL,EACU,GADV,EACe,GADf,EACoB,GADpB,EACyB,GADzB,EAC8B,GAD9B,EAEf,GAFe,EAEV,GAFU,EAEL,GAFK,EAEA,GAFA,EAEK,GAFL,EAEU,GAFV,EAEe,GAFf,EAEoB,GAFpB,EAEyB,GAFzB,EAE8B,GAF9B,EAGf,GAHe,EAGV,GAHU,EAGL,GAHK,EAGA,GAHA,EAGK,GAHL,EAGU,GAHV,EAGe,GAHf,EAGoB,GAHpB,EAGyB,GAHzB,CAAnB;AAMA,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAP,C,CAA8E;;AAC9E,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAP,C,CAA8E;;AAC9E,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAP,C,CAA+E;;AAC/E,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAP,C,CAA+E;;AAC/E,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAP,C,CAA8E;;AAC9E,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAP,C,CAA+E;;AAC/E,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAP,C,CAA8E;;AAC9E,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAP,C,CAA8E;;AAC9E,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAP,C,CAA8E;;AAC9E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAN,C,CAA8E;;AAC9E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAN,C,CAA8E;;AAC9E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAN,C,CAA8E;;AAC9E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAN,C,CAA8E;;AAC9E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAN,C,CAA6E;;AAC7E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAN,C,CAA6E;;AAC7E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAN,C,CAA6E;;AAC7E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAN,C,CAA8E;;AAC9E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAN,C,CAA6E;;AAC7E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAN,C,CAA8E;;AAC9E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAN,C,CAA6E;;AAC7E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAN,C,CAA6E;;AAC7E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAN,C,CAA6E;;AAC7E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAN,C,CAA8E;;AAC9E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAN,C,CAA8E;;AAC9E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAN,C,CAA8E;;AAC9E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAN,C,CAA8E;;AAC9E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAN,C,CAA6E;;AAC7E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAN,C,CAA8E;;AAC9E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAN,C,CAA8E;;AAC9E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAN,C,CAA6E;;AAC7E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAN,C,CAA6E;;AAC7E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAN,C,CAA6E;;AAC7E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAN,C,CAA6E;;AAC7E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAN,C,CAA6E;;AAC7E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,EAAhB,CAAD,EAAsB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAtB,EAA0C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA1C,EAAoE,CAApE,CAAN,C,CAA8E;;AAC9E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAN,C,CAA6E;;AAC7E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAN,C,CAA6E;;AAC7E,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,CAAnE,CAAN,C,CAA6E;;AAC7E,IAAM,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAZ,C,CAAoF;;AACpF,IAAM,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAZ,C,CAAoF;;AACpF,IAAM,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAZ,C,CAAoF;;AACpF,IAAM,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAZ,C,CAAoF;;AACpF,IAAM,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAZ,C,CAAoF;;AACpF,IAAM,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAZ,C,CAAoF;;AACpF,IAAM,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAZ,C,CAAoF;;AACpF,IAAM,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAZ,C,CAAoF;;AACpF,IAAM,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAZ,C,CAAoF;;AACpF,IAAM,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAZ,C,CAAoF;;AACpF,IAAM,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAZ,C,CAAoF;;AACpF,IAAM,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EAAqB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB,EAAyC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAzC,EAAmE,EAAnE,CAAZ,C,CAAoF;;AACpF,IAAM,SAAS,GAAG,CAAC,SAAD,EAAY,EAAZ,EAAgB,EAAhB,EAAoB,EAApB,EAAwB,EAAxB,EAA4B,EAA5B,EAAgC,EAAhC,EAAoC,EAApC,EAAwC,EAAxC,EAA4C,EAA5C,EACd,GADc,EACT,GADS,EACJ,GADI,EACC,GADD,EACM,GADN,EACW,GADX,EACgB,GADhB,EACqB,GADrB,EAC0B,GAD1B,EAC+B,GAD/B,EAEd,GAFc,EAET,GAFS,EAEJ,GAFI,EAEC,GAFD,EAEM,GAFN,EAEW,GAFX,EAEgB,GAFhB,EAEqB,GAFrB,EAE0B,GAF1B,EAE+B,GAF/B,EAGd,GAHc,EAGT,GAHS,EAGJ,GAHI,EAGC,GAHD,EAGM,GAHN,EAGW,GAHX,EAGgB,GAHhB,EAGqB,GAHrB,EAG0B,GAH1B,EAG+B,GAH/B,EAId,GAJc,EAIT,GAJS,EAIJ,GAJI,EAIC,GAJD,EAIM,GAJN,EAIW,GAJX,EAIgB,GAJhB,EAIqB,GAJrB,EAI0B,GAJ1B,EAI+B,GAJ/B,EAKd,GALc,CAAlB;AAQA,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAP,C,CAAiF;;AACjF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAP,C,CAAiF;;AACjF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAP,C,CAAiF;;AACjF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAP,C,CAAiF;;AACjF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAP,C,CAAiF;;AACjF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAP,C,CAAiF;;AACjF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAP,C,CAAiF;;AACjF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAP,C,CAAiF;;AACjF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAP,C,CAAiF;;AACjF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,EAAtE,CAAN,C,CAAiF;;AACjF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,EAAtE,CAAN,C,CAAiF;;AACjF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,EAAtE,CAAN,C,CAAiF;;AACjF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,CAAtE,CAAN,C,CAAgF;;AAChF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,EAAnB,CAAD,EAAyB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAzB,EAA6C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA7C,EAAuE,CAAvE,CAAN,C,CAAiF;;AACjF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,EAAnB,CAAD,EAAyB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAzB,EAA6C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA7C,EAAuE,CAAvE,CAAN,C,CAAiF;;AACjF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,EAAnB,CAAD,EAAyB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAzB,EAA6C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA7C,EAAuE,CAAvE,CAAN,C,CAAiF;;AACjF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,EAAtE,CAAN,C,CAAiF;;AACjF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,EAAtE,CAAN,C,CAAiF;;AACjF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EAAwB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB,EAA4C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA5C,EAAsE,EAAtE,CAAN,C,CAAiF;;AACjF,IAAM,UAAU,GAAG,CAAC,SAAD,EAAY,EAAZ,EAAgB,EAAhB,EAAoB,EAApB,EAAwB,EAAxB,EAA4B,EAA5B,EAAgC,EAAhC,EAAoC,EAApC,EAAwC,EAAxC,EAA4C,EAA5C,EACf,GADe,EACV,GADU,EACL,GADK,EACA,GADA,EACK,GADL,EACU,GADV,EACe,GADf,EACoB,GADpB,EACyB,GADzB,EAC8B,GAD9B,EAEf,GAFe,EAEV,GAFU,EAEL,GAFK,EAEA,GAFA,EAEK,GAFL,EAEU,GAFV,EAEe,GAFf,EAEoB,GAFpB,EAEyB,GAFzB,EAE8B,GAF9B,EAGf,GAHe,EAGV,GAHU,EAGL,GAHK,EAGA,GAHA,EAGK,GAHL,EAGU,GAHV,EAGe,GAHf,EAGoB,GAHpB,EAGyB,GAHzB,CAAnB;AAMA,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA5B,EAAgD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhD,EAA0E,CAA1E,CAAP,C,CAAqF;;AACrF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA5B,EAAgD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhD,EAA0E,CAA1E,CAAP,C,CAAqF;;AACrF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA5B,EAAgD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhD,EAA0E,CAA1E,CAAP,C,CAAqF;;AACrF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA5B,EAAgD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhD,EAA0E,CAA1E,CAAP,C,CAAqF;;AACrF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA5B,EAAgD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhD,EAA0E,CAA1E,CAAP,C,CAAqF;;AACrF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA5B,EAAgD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhD,EAA0E,CAA1E,CAAP,C,CAAqF;;AACrF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA5B,EAAgD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhD,EAA0E,CAA1E,CAAP,C,CAAqF;;AACrF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA5B,EAAgD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhD,EAA0E,CAA1E,CAAP,C,CAAqF;;AACrF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA5B,EAAgD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhD,EAA0E,CAA1E,CAAP,C,CAAqF;;AACrF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA7B,EAAiD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAjD,EAA2E,CAA3E,CAAN,C,CAAqF;;AACrF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA7B,EAAiD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAjD,EAA2E,CAA3E,CAAN,C,CAAqF;;AACrF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA7B,EAAiD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAjD,EAA2E,CAA3E,CAAN,C,CAAqF;;AACrF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA7B,EAAiD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAjD,EAA2E,CAA3E,CAAN,C,CAAqF;;AACrF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA7B,EAAiD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAjD,EAA2E,CAA3E,CAAN,C,CAAqF;;AACrF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA7B,EAAiD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAjD,EAA2E,EAA3E,CAAN,C,CAAsF;;AACtF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA7B,EAAiD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAjD,EAA2E,CAA3E,CAAN,C,CAAqF;;AACrF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA7B,EAAiD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAjD,EAA2E,CAA3E,CAAN,C,CAAqF;;AACrF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA7B,EAAiD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAjD,EAA2E,CAA3E,CAAN,C,CAAqF;;AACrF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA7B,EAAiD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAjD,EAA2E,CAA3E,CAAN,C,CAAqF;;AACrF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA7B,EAAiD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAjD,EAA2E,CAA3E,CAAN,C,CAAqF;;AACrF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,EAAtB,CAAD,EAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA5B,EAAgD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhD,EAA0E,CAA1E,CAAN,C,CAAoF;;AACpF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,EAAtB,CAAD,EAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA5B,EAAgD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhD,EAA0E,CAA1E,CAAN,C,CAAoF;;AACpF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,EAAtB,CAAD,EAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA5B,EAAgD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhD,EAA0E,CAA1E,CAAN,C,CAAoF;;AACpF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,EAAtB,CAAD,EAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA5B,EAAgD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhD,EAA0E,CAA1E,CAAN,C,CAAoF;;AACpF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,EAAtB,CAAD,EAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA5B,EAAgD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhD,EAA0E,CAA1E,CAAN,C,CAAoF;;AACpF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,EAAtB,CAAD,EAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA5B,EAAgD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhD,EAA0E,CAA1E,CAAN,C,CAAoF;;AACpF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,EAAtB,CAAD,EAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA5B,EAAgD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhD,EAA0E,CAA1E,CAAN,C,CAAoF;;AACpF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,EAAtB,CAAD,EAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA5B,EAAgD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhD,EAA0E,CAA1E,CAAN,C,CAAoF;;AACpF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA7B,EAAiD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAjD,EAA2E,EAA3E,CAAN,C,CAAsF;;AACtF,IAAM,SAAS,GAAG,CAAC,SAAD,EAAY,EAAZ,EAAgB,EAAhB,EAAoB,EAApB,EAAwB,EAAxB,EAA4B,EAA5B,EAAgC,EAAhC,EAAoC,EAApC,EAAwC,EAAxC,EAA4C,EAA5C,EACd,GADc,EACT,GADS,EACJ,GADI,EACC,GADD,EACM,GADN,EACW,GADX,EACgB,GADhB,EACqB,GADrB,EAC0B,GAD1B,EAC+B,GAD/B,EAEd,GAFc,EAET,GAFS,EAEJ,GAFI,EAEC,GAFD,EAEM,GAFN,EAEW,GAFX,EAEgB,GAFhB,EAEqB,GAFrB,EAE0B,GAF1B,EAE+B,GAF/B,CAAlB;AAIA,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,CAAD,EAA+B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA/B,EAAmD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnD,EAA6E,CAA7E,CAAP,C,CAAwF;;AACxF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,CAAD,EAA+B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA/B,EAAmD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnD,EAA6E,CAA7E,CAAP,C,CAAwF;;AACxF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,CAAD,EAA+B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA/B,EAAmD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnD,EAA6E,CAA7E,CAAP,C,CAAwF;;AACxF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,CAAD,EAA+B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA/B,EAAmD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnD,EAA6E,CAA7E,CAAP,C,CAAwF;;AACxF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,CAAD,EAA+B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA/B,EAAmD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnD,EAA6E,CAA7E,CAAP,C,CAAwF;;AACxF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,EAAzB,CAAD,EAA+B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA/B,EAAmD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnD,EAA6E,CAA7E,CAAP,C,CAAwF;;AACxF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,EAAzB,CAAD,EAA+B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA/B,EAAmD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnD,EAA6E,CAA7E,CAAP,C,CAAwF;;AACxF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,EAAzB,CAAD,EAA+B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA/B,EAAmD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnD,EAA6E,CAA7E,CAAP,C,CAAwF;;AACxF,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,EAAzB,CAAD,EAA+B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA/B,EAAmD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnD,EAA6E,CAA7E,CAAP,C,CAAwF;;AACxF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,EAAzB,CAAD,EAA+B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA/B,EAAmD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnD,EAA6E,CAA7E,CAAN,C,CAAuF;;AACvF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,EAAzB,CAAD,EAA+B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA/B,EAAmD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnD,EAA6E,CAA7E,CAAN,C,CAAuF;;AACvF,GAAG,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,EAAzB,CAAD,EAA+B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAA/B,EAAmD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAnD,EAA6E,CAA7E,CAAN,C,CAAuF;;AACvF,IAAM,SAAS,GAAG,CAAC,SAAD,EAAY,EAAZ,EAAgB,EAAhB,EAAoB,EAApB,EAAwB,EAAxB,EAA4B,EAA5B,EAAgC,EAAhC,EAAoC,EAApC,EAAwC,EAAxC,EAA4C,EAA5C,EAAgD,GAAhD,EAAqD,GAArD,EAA0D,GAA1D,CAAlB;AAEA,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,CAAD,EAAoC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAApC,EAAwD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAxD,EAAkF,CAAlF,CAAP,C,CAA6F;;AAC7F,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,EAA5B,CAAD,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAnC,EAAuD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAvD,EAAiF,CAAjF,CAAP,C,CAA4F;;AAC5F,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,EAA5B,CAAD,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAnC,EAAuD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAvD,EAAiF,CAAjF,CAAP,C,CAA4F;;AAC5F,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,EAA5B,CAAD,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAnC,EAAuD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAvD,EAAiF,CAAjF,CAAP,C,CAA4F;;AAC5F,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,EAA5B,CAAD,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAnC,EAAuD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAvD,EAAiF,CAAjF,CAAP,C,CAA4F;;AAC5F,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,EAA5B,CAAD,EAAmC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAnC,EAAuD,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAvD,EAAiF,CAAjF,CAAP,C,CAA4F;;AAC5F,IAAM,SAAS,GAAG,CAAC,SAAD,EAAY,EAAZ,EAAgB,EAAhB,EAAoB,EAApB,EAAwB,EAAxB,EAA4B,EAA5B,EAAgC,EAAhC,CAAlB;AAEA,EAAE,GAAG,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,EAA/B,CAAD,EAAqC,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,EAAqB,CAArB,CAArC,EAA8D,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAA9D,EAAwF,CAAxF,CAAL,C,CAAgG;;AAChG,IAAM,WAAW,GAAG,CAAC,SAAD,EAAY,EAAZ,CAApB;AAEA,EAAE,GAAK,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,EAA/B,EAAmC,EAAnC,CAAD,EAAyC,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,EAAqB,CAArB,CAAzC,EAAkE,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,EAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,CAAlE,EAAgG,CAAhG,CAAP,C,CAA2G;;AAC3G,IAAM,WAAW,GAAG,CAAC,SAAD,EAAY,EAAZ,CAApB,C,CAGA;;AACO,IAAM,KAAK,GAAG,CAAC,SAAD,EAAY,KAAZ,EAAmB,IAAnB,EAAyB,QAAzB,EAAmC,UAAnC,EAA+C,UAA/C,EAA2D,SAA3D,EAAsE,UAAtE,EAAkF,SAAlF,EACjB,SADiB,EACN,SADM,EACK,WADL,EACkB,WADlB,CAAd,C,CAIP;AACA;AACA;AACA;AACA;AACA;AAEA;;AACA,IAAM,MAAM,GAAE;AACV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG;AADG,CAAd,C,CAMA;;AACA,IAAM,MAAM,GAAE;AACV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CADG;AAKV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CALG;AASV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CATG;AAaV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAbG;AAiBV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAjBG;AAqBV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG;AArBG,CAAd,C,CA0BA;;AACA,IAAM,MAAM,GAAE;AACV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CADG;AAKV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CALG;AASV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CATE;AAaV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAbG;AAiBV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CAjBE;AAqBV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CArBG;AAyBV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CAzBE;AA6BV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CA7BG;AAiCV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CAjCE;AAqCV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CArCG;AAyCV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAzCG;AA6CV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CA7CE;AAiDV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAjDG;AAqDV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CArDE;AAyDV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAzDG;AA6DV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7DE;AAiEV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjEE;AAqEV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArEC;AAyEV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI;AAzEE,CAAd,C,CA8EA;;AACA,IAAM,MAAM,GAAE;AACV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CADG;AAKV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CALG;AASV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CATE;AAaV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAbG;AAiBV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAjBG;AAqBV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CArBE;AAyBV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAzBG;AA6BV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CA7BE;AAiCV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAjCG;AAqCV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CArCG;AAyCV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAzCG;AA6CV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CA7CG;AAiDV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjDE;AAqDV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArDE;AAyDV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzDC;AA6DV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7DE;AAiEV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAjEC;AAqEV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArEE;AAyEV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzEC;AA6EV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7EE;AAiFV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAjFC;AAqFV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArFE;AAyFV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzFC;AA6FV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7FE;AAiGV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAjGC;AAqGV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArGE;AAyGV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzGE;AA6GV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7GC;AAiHV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjHE;AAqHV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArHC;AAyHV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzHE;AA6HV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7HE;AAiIV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjIE;AAqIV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArIC;AAyIV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzIE;AA6IV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7IE;AAiJV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjJE;AAqJV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArJE;AAyJV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzJE;AA6JV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7JC;AAiKV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjKE;AAqKV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArKE;AAyKV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK;AAzKC,CAAd,C,CA8KA;;AACA,IAAM,MAAM,GAAE;AACV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CADG;AAKV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CALG;AASV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CATE;AAaV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAbG;AAiBV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CAjBE;AAqBV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CArBG;AAyBV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CAzBE;AA6BV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CA7BG;AAiCV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CAjCE;AAqCV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CArCG;AAyCV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CAzCE;AA6CV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CA7CG;AAiDV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CAjDE;AAqDV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CArDG;AAyDV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAzDG;AA6DV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CA7DE;AAiEV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjEE;AAqEV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArEC;AAyEV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzEE;AA6EV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7EC;AAiFV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjFE;AAqFV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArFE;AAyFV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzFC;AA6FV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7FE;AAiGV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAjGC;AAqGV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArGE;AAyGV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzGE;AA6GV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7GC;AAiHV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjHE;AAqHV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArHE;AAyHV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzHC;AA6HV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7HE;AAiIV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAjIC;AAqIV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArIE;AAyIV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzIC;AA6IV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7IE;AAiJV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAjJC;AAqJV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArJE;AAyJV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzJE;AA6JV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7JC;AAiKV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjKE;AAqKV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArKC;AAyKV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzKE;AA6KV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7KC;AAiLV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjLE;AAqLV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArLC;AAyLV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzLE;AA6LV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7LC;AAiMV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjME;AAqMV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArMC;AAyMV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzME;AA6MV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7MC;AAiNV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjNE;AAqNV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArNC;AAyNV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzNE;AA6NV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7NC;AAiOV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjOE;AAqOV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArOC;AAyOV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzOE;AA6OV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7OE;AAiPV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjPE;AAqPV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArPE;AAyPV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzPC;AA6PV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7PE;AAiQV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjQE;AAqQV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK;AArQC,CAAd,C,CA0QA;;AACA,IAAM,MAAM,GAAE;AACV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CADG;AAKV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CALG;AASV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CATE;AAaV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAbG;AAiBV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CAjBE;AAqBV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CArBG;AAyBV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAzBG;AA6BV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CA7BE;AAiCV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAjCG;AAqCV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CArCG;AAyCV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAzCG;AA6CV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CA7CG;AAiDV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CAjDE;AAqDV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArDE;AAyDV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzDC;AA6DV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7DE;AAiEV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAjEC;AAqEV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArEE;AAyEV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzEC;AA6EV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7EE;AAiFV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjFE;AAqFV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArFC;AAyFV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzFE;AA6FV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7FC;AAiGV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjGE;AAqGV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArGC;AAyGV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzGE;AA6GV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7GC;AAiHV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjHE;AAqHV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArHC;AAyHV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzHE;AA6HV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7HC;AAiIV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjIE;AAqIV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArIE;AAyIV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzIC;AA6IV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7IE;AAiJV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAjJC;AAqJV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArJE;AAyJV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzJE;AA6JV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7JC;AAiKV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjKE;AAqKV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArKC;AAyKV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzKE;AA6KV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7KE;AAiLV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAjLC;AAqLV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArLE;AAyLV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzLE;AA6LV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7LE;AAiMV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAjMC;AAqMV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArME;AAyMV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzMC;AA6MV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7ME;AAiNV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjNE;AAqNV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArNC;AAyNV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzNE;AA6NV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7NC;AAiOV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjOE;AAqOV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArOE;AAyOV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzOC;AA6OV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7OE;AAiPV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjPE;AAqPV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArPE;AAyPV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzPC;AA6PV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7PE;AAiQV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAjQC;AAqQV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArQE;AAyQV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzQC;AA6QV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7QE;AAiRV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjRE;AAqRV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArRC;AAyRV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzRE;AA6RV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7RC;AAiSV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjSE;AAqSV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArSE;AAySV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzSC;AA6SV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7SE;AAiTV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAjTC;AAqTV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArTE;AAyTV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzTE;AA6TV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI;AA7TE,CAAd,C,CAkUA;;AACA,IAAM,MAAM,GAAE;AACV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CADG;AAKV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CALG;AASV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CATE;AAaV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAbG;AAiBV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CAjBE;AAqBV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CArBG;AAyBV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CAzBE;AA6BV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CA7BG;AAiCV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CAjCE;AAqCV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CArCG;AAyCV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CAzCE;AA6CV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CA7CG;AAiDV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CAjDE;AAqDV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CArDG;AAyDV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAzDG;AA6DV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CA7DE;AAiEV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjEE;AAqEV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArEC;AAyEV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzEE;AA6EV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7EC;AAiFV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjFE;AAqFV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArFE;AAyFV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzFC;AA6FV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7FE;AAiGV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAjGC;AAqGV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArGE;AAyGV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzGE;AA6GV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7GC;AAiHV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjHE;AAqHV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArHE;AAyHV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzHC;AA6HV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7HE;AAiIV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAjIC;AAqIV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArIE;AAyIV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzIC;AA6IV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7IE;AAiJV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAjJC;AAqJV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArJE;AAyJV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzJE;AA6JV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7JC;AAiKV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjKE;AAqKV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArKC;AAyKV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzKE;AA6KV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7KC;AAiLV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjLE;AAqLV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArLC;AAyLV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzLE;AA6LV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7LC;AAiMV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjME;AAqMV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArMC;AAyMV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzME;AA6MV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7MC;AAiNV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjNE;AAqNV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArNC;AAyNV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzNE;AA6NV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7NC;AAiOV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjOE;AAqOV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArOC;AAyOV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzOE;AA6OV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7OE;AAiPV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjPE;AAqPV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArPE;AAyPV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzPC;AA6PV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7PE;AAiQV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjQE;AAqQV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK;AArQC,CAAd,C,CA0QA;;AACA,IAAM,MAAM,GAAE;AACV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CADG;AAKV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CALG;AASV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CATE;AAaV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAbG;AAiBV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAjBG;AAqBV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CArBE;AAyBV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAzBG;AA6BV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CA7BE;AAiCV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAjCG;AAqCV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CArCG;AAyCV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAzCG;AA6CV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CA7CG;AAiDV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjDE;AAqDV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArDE;AAyDV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzDC;AA6DV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7DE;AAiEV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAjEC;AAqEV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArEE;AAyEV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzEC;AA6EV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7EE;AAiFV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAjFC;AAqFV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArFE;AAyFV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAzFC;AA6FV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7FE;AAiGV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CAjGC;AAqGV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArGE;AAyGV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzGE;AA6GV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7GC;AAiHV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjHE;AAqHV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArHC;AAyHV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzHE;AA6HV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7HE;AAiIV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjIE;AAqIV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,EAAtB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArIC;AAyIV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzIE;AA6IV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7IE;AAiJV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjJE;AAqJV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArJE;AAyJV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAzJE;AA6JV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,EAAtB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CA7JC;AAiKV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjKE;AAqKV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CArKE;AAyKV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK;AAzKC,CAAd,C,CA8KA;;AACA,IAAM,MAAM,GAAE;AACV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CADG;AAKV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CALG;AASV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CATE;AAaV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAbG;AAiBV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CAjBE;AAqBV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CArBG;AAyBV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CAzBE;AA6BV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CA7BG;AAiCV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CAjCE;AAqCV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CArCG;AAyCV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAzCG;AA6CV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,EAAzB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CA7CE;AAiDV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAjDG;AAqDV,UAAQ,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,EAAzB,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFI,CArDE;AAyDV,SAAO,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAAD,EACH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CADG,EAEH,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,EAAY,CAAZ,CAFG,CAzDG;AA6DV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CA7DE;AAiEV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI,CAjEE;AAqEV,WAAS,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,EAAzB,CAAD,EACL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADK,EAEL,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFK,CArEC;AAyEV,UAAQ,CAAC,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAAD,EACJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CADI,EAEJ,KAAK,CAAC,CAAD,CAAL,CAAS,EAAT,EAAa,CAAb,CAFI;AAzEE,CAAd,C,CA8EA;;AACA,IAAM,OAAO,GAAE;AACX,SAAO,CAAC,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CAAD,EACH,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CADG,EAEH,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CAFG,CADI;AAKX,SAAO,CAAC,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CAAD,EACH,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CADG,EAEH,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CAFG,CALI;AASX,SAAO,CAAC,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CAAD,EACH,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CADG,EAEH,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CAFG,CATI;AAaX,SAAO,CAAC,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CAAD,EACH,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CADG,EAEH,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CAFG,CAbI;AAiBX,SAAO,CAAC,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CAAD,EACH,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CADG,EAEH,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CAFG,CAjBI;AAqBX,SAAO,CAAC,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CAAD,EACH,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CADG,EAEH,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CAFG;AArBI,CAAf,C,CA0BA;;AACA,IAAM,OAAO,GAAE;AACX,SAAO,CAAC,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CAAD,EACH,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CADG,EAEH,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CAFG;AADI,CAAf,C,CAMA;;AACA,IAAM,OAAO,GAAE;AACX,SAAO,CAAC,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CAAD,EACH,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CADG,EAEH,KAAK,CAAC,EAAD,CAAL,CAAU,CAAV,EAAa,CAAb,CAFG;AADI,CAAf,C,CAOA;;AACO,IAAM,MAAM,GAAG;AAClB,KAAG,MADe;AAElB,KAAG,MAFe;AAGlB,KAAG,MAHe;AAIlB,KAAG,MAJe;AAKlB,KAAG,MALe;AAMlB,KAAG,MANe;AAOlB,KAAG,MAPe;AAQlB,KAAG,MARe;AASlB,KAAG,MATe;AAUlB,MAAI,OAVc;AAWlB,MAAI,OAXc;AAYlB,MAAI;AAZc,CAAf,C,CAeP;AACA;;AACO,IAAM,KAAK,GAAG;AACjB,KAAG,CADc;AACX,KAAG,CADQ;AACL,KAAG,CADE;AACC,KAAG,EADJ;AACQ,KAAG,EADX;AACe,KAAG,EADlB;AACsB,KAAG,EADzB;AAEjB,KAAG,EAFc;AAEV,KAAG,EAFO;AAEH,KAAG,EAFA;AAEI,MAAI,CAFR;AAEW,MAAI,CAFf;AAEkB,MAAI;AAFtB,CAAd;AAIA,IAAM,MAAM,GAAG;AAClB,KAAG,CADe;AACZ,KAAG,CADS;AACN,KAAG,CADG;AACA,KAAG,EADH;AACO,KAAG,EADV;AACc,KAAG,EADjB;AACqB,KAAG,EADxB;AAElB,KAAG,EAFe;AAEX,KAAG,EAFQ;AAEJ,KAAG,EAFC;AAEG,MAAI,CAFP;AAEU,MAAI,CAFd;AAEiB,MAAI;AAFrB,CAAf,C,CAKP;;AACO,IAAM,KAAK,GAAG;AACjB,WAAS,CADQ;AAEjB,WAAS,CAFQ;AAGjB,WAAS,CAHQ;AAIjB,WAAS,CAJQ;AAKjB,WAAS,CALQ;AAMjB,WAAS,CANQ;AAOjB,WAAS,CAPQ;AAQjB,WAAS,CARQ;AASjB,WAAS,CATQ;AAUjB,YAAU,CAVO;AAWjB,WAAS,CAXQ;AAYjB,YAAU,CAZO;AAajB,WAAS,CAbQ;AAcjB,YAAU,CAdO;AAejB,WAAS,CAfQ;AAgBjB,YAAU,CAhBO;AAiBjB,WAAS,EAjBQ;AAkBjB,WAAS,EAlBQ;AAmBjB,YAAU,EAnBO;AAoBjB,WAAS,EApBQ;AAqBjB,YAAU,EArBO;AAsBjB,WAAS,EAtBQ;AAuBjB,YAAU,EAvBO;AAwBjB,YAAU,EAxBO;AAyBjB,aAAW,EAzBM;AA0BjB,YAAU,EA1BO;AA2BjB,WAAS,CA3BQ;AA4BjB,WAAS,CA5BQ;AA6BjB,YAAU,CA7BO;AA8BjB,WAAS,CA9BQ;AA+BjB,WAAS,CA/BQ;AAgCjB,YAAU,CAhCO;AAiCjB,WAAS,CAjCQ;AAkCjB,YAAU,CAlCO;AAmCjB,WAAS,CAnCQ;AAoCjB,WAAS,EApCQ;AAqCjB,WAAS,EArCQ;AAsCjB,WAAS,EAtCQ;AAuCjB,YAAU,EAvCO;AAwCjB,YAAU,EAxCO;AAyCjB,aAAW,EAzCM;AA0CjB,YAAU,EA1CO;AA2CjB,aAAW,EA3CM;AA4CjB,YAAU,EA5CO;AA6CjB,aAAW,EA7CM;AA8CjB,YAAU,EA9CO;AA+CjB,aAAW,EA/CM;AAgDjB,YAAU,EAhDO;AAiDjB,aAAW,EAjDM;AAkDjB,YAAU,EAlDO;AAmDjB,aAAW,EAnDM;AAoDjB,YAAU,EApDO;AAqDjB,YAAU,EArDO;AAsDjB,aAAW,EAtDM;AAuDjB,YAAU,EAvDO;AAwDjB,aAAW,EAxDM;AAyDjB,YAAU,EAzDO;AA0DjB,YAAU,EA1DO;AA2DjB,YAAU,EA3DO;AA4DjB,aAAW,EA5DM;AA6DjB,YAAU,EA7DO;AA8DjB,YAAU,EA9DO;AA+DjB,YAAU,EA/DO;AAgEjB,YAAU,EAhEO;AAiEjB,YAAU,EAjEO;AAkEjB,aAAW,EAlEM;AAmEjB,YAAU,EAnEO;AAoEjB,YAAU,EApEO;AAqEjB,aAAW,EArEM;AAsEjB,WAAS,CAtEQ;AAuEjB,WAAS,CAvEQ;AAwEjB,YAAU,CAxEO;AAyEjB,WAAS,CAzEQ;AA0EjB,YAAU,CA1EO;AA2EjB,WAAS,CA3EQ;AA4EjB,YAAU,CA5EO;AA6EjB,WAAS,CA7EQ;AA8EjB,YAAU,CA9EO;AA+EjB,WAAS,EA/EQ;AAgFjB,YAAU,EAhFO;AAiFjB,WAAS,EAjFQ;AAkFjB,YAAU,EAlFO;AAmFjB,WAAS,EAnFQ;AAoFjB,WAAS,EApFQ;AAqFjB,YAAU,EArFO;AAsFjB,YAAU,EAtFO;AAuFjB,aAAW,EAvFM;AAwFjB,YAAU,EAxFO;AAyFjB,aAAW,EAzFM;AA0FjB,YAAU,EA1FO;AA2FjB,YAAU,EA3FO;AA4FjB,aAAW,EA5FM;AA6FjB,YAAU,EA7FO;AA8FjB,aAAW,EA9FM;AA+FjB,YAAU,EA/FO;AAgGjB,YAAU,EAhGO;AAiGjB,aAAW,EAjGM;AAkGjB,YAAU,EAlGO;AAmGjB,YAAU,EAnGO;AAoGjB,aAAW,EApGM;AAqGjB,YAAU,EArGO;AAsGjB,aAAW,EAtGM;AAuGjB,YAAU,EAvGO;AAwGjB,aAAW,EAxGM;AAyGjB,YAAU,EAzGO;AA0GjB,aAAW,EA1GM;AA2GjB,YAAU,EA3GO;AA4GjB,YAAU,EA5GO;AA6GjB,aAAW,EA7GM;AA8GjB,YAAU,EA9GO;AA+GjB,aAAW,EA/GM;AAgHjB,YAAU,EAhHO;AAiHjB,aAAW,EAjHM;AAkHjB,YAAU,EAlHO;AAmHjB,aAAW,EAnHM;AAoHjB,YAAU,EApHO;AAqHjB,aAAW,EArHM;AAsHjB,YAAU,EAtHO;AAuHjB,aAAW,EAvHM;AAwHjB,YAAU,EAxHO;AAyHjB,aAAW,EAzHM;AA0HjB,YAAU,EA1HO;AA2HjB,aAAW,EA3HM;AA4HjB,YAAU,EA5HO;AA6HjB,aAAW,EA7HM;AA8HjB,YAAU,EA9HO;AA+HjB,aAAW,EA/HM;AAgIjB,YAAU,EAhIO;AAiIjB,YAAU,EAjIO;AAkIjB,YAAU,EAlIO;AAmIjB,YAAU,EAnIO;AAoIjB,aAAW,EApIM;AAqIjB,YAAU,EArIO;AAsIjB,YAAU,EAtIO;AAuIjB,aAAW,EAvIM;AAwIjB,WAAS,CAxIQ;AAyIjB,WAAS,CAzIQ;AA0IjB,YAAU,CA1IO;AA2IjB,WAAS,CA3IQ;AA4IjB,YAAU,CA5IO;AA6IjB,WAAS,CA7IQ;AA8IjB,WAAS,CA9IQ;AA+IjB,YAAU,CA/IO;AAgJjB,WAAS,CAhJQ;AAiJjB,WAAS,EAjJQ;AAkJjB,WAAS,EAlJQ;AAmJjB,WAAS,EAnJQ;AAoJjB,YAAU,EApJO;AAqJjB,YAAU,EArJO;AAsJjB,aAAW,EAtJM;AAuJjB,YAAU,EAvJO;AAwJjB,aAAW,EAxJM;AAyJjB,YAAU,EAzJO;AA0JjB,aAAW,EA1JM;AA2JjB,YAAU,EA3JO;AA4JjB,YAAU,EA5JO;AA6JjB,aAAW,EA7JM;AA8JjB,YAAU,EA9JO;AA+JjB,aAAW,EA/JM;AAgKjB,YAAU,EAhKO;AAiKjB,aAAW,EAjKM;AAkKjB,YAAU,EAlKO;AAmKjB,aAAW,EAnKM;AAoKjB,YAAU,EApKO;AAqKjB,aAAW,EArKM;AAsKjB,YAAU,EAtKO;AAuKjB,aAAW,EAvKM;AAwKjB,YAAU,EAxKO;AAyKjB,YAAU,EAzKO;AA0KjB,aAAW,EA1KM;AA2KjB,YAAU,EA3KO;AA4KjB,aAAW,EA5KM;AA6KjB,YAAU,EA7KO;AA8KjB,YAAU,EA9KO;AA+KjB,aAAW,EA/KM;AAgLjB,YAAU,EAhLO;AAiLjB,aAAW,EAjLM;AAkLjB,YAAU,EAlLO;AAmLjB,YAAU,EAnLO;AAoLjB,aAAW,EApLM;AAqLjB,YAAU,EArLO;AAsLjB,YAAU,EAtLO;AAuLjB,YAAU,EAvLO;AAwLjB,aAAW,EAxLM;AAyLjB,YAAU,EAzLO;AA0LjB,aAAW,EA1LM;AA2LjB,YAAU,EA3LO;AA4LjB,YAAU,EA5LO;AA6LjB,aAAW,EA7LM;AA8LjB,YAAU,EA9LO;AA+LjB,aAAW,EA/LM;AAgMjB,YAAU,EAhMO;AAiMjB,YAAU,EAjMO;AAkMjB,aAAW,EAlMM;AAmMjB,YAAU,EAnMO;AAoMjB,YAAU,EApMO;AAqMjB,YAAU,EArMO;AAsMjB,aAAW,EAtMM;AAuMjB,YAAU,EAvMO;AAwMjB,aAAW,EAxMM;AAyMjB,YAAU,EAzMO;AA0MjB,aAAW,EA1MM;AA2MjB,YAAU,EA3MO;AA4MjB,YAAU,EA5MO;AA6MjB,aAAW,EA7MM;AA8MjB,YAAU,EA9MO;AA+MjB,aAAW,EA/MM;AAgNjB,YAAU,EAhNO;AAiNjB,YAAU,EAjNO;AAkNjB,aAAW,EAlNM;AAmNjB,YAAU,EAnNO;AAoNjB,aAAW,EApNM;AAqNjB,YAAU,EArNO;AAsNjB,YAAU,EAtNO;AAuNjB,YAAU,EAvNO;AAwNjB,WAAS,CAxNQ;AAyNjB,WAAS,CAzNQ;AA0NjB,YAAU,CA1NO;AA2NjB,WAAS,CA3NQ;AA4NjB,YAAU,CA5NO;AA6NjB,WAAS,CA7NQ;AA8NjB,YAAU,CA9NO;AA+NjB,WAAS,CA/NQ;AAgOjB,YAAU,CAhOO;AAiOjB,WAAS,EAjOQ;AAkOjB,YAAU,EAlOO;AAmOjB,WAAS,EAnOQ;AAoOjB,YAAU,EApOO;AAqOjB,WAAS,EArOQ;AAsOjB,WAAS,EAtOQ;AAuOjB,YAAU,EAvOO;AAwOjB,YAAU,EAxOO;AAyOjB,aAAW,EAzOM;AA0OjB,YAAU,EA1OO;AA2OjB,aAAW,EA3OM;AA4OjB,YAAU,EA5OO;AA6OjB,YAAU,EA7OO;AA8OjB,aAAW,EA9OM;AA+OjB,YAAU,EA/OO;AAgPjB,aAAW,EAhPM;AAiPjB,YAAU,EAjPO;AAkPjB,YAAU,EAlPO;AAmPjB,aAAW,EAnPM;AAoPjB,YAAU,EApPO;AAqPjB,YAAU,EArPO;AAsPjB,aAAW,EAtPM;AAuPjB,YAAU,EAvPO;AAwPjB,aAAW,EAxPM;AAyPjB,YAAU,EAzPO;AA0PjB,aAAW,EA1PM;AA2PjB,YAAU,EA3PO;AA4PjB,aAAW,EA5PM;AA6PjB,YAAU,EA7PO;AA8PjB,YAAU,EA9PO;AA+PjB,aAAW,EA/PM;AAgQjB,YAAU,EAhQO;AAiQjB,aAAW,EAjQM;AAkQjB,YAAU,EAlQO;AAmQjB,aAAW,EAnQM;AAoQjB,YAAU,EApQO;AAqQjB,aAAW,EArQM;AAsQjB,YAAU,EAtQO;AAuQjB,aAAW,EAvQM;AAwQjB,YAAU,EAxQO;AAyQjB,aAAW,EAzQM;AA0QjB,YAAU,EA1QO;AA2QjB,aAAW,EA3QM;AA4QjB,YAAU,EA5QO;AA6QjB,aAAW,EA7QM;AA8QjB,YAAU,EA9QO;AA+QjB,aAAW,EA/QM;AAgRjB,YAAU,EAhRO;AAiRjB,aAAW,EAjRM;AAkRjB,YAAU,EAlRO;AAmRjB,YAAU,EAnRO;AAoRjB,YAAU,EApRO;AAqRjB,YAAU,EArRO;AAsRjB,aAAW,EAtRM;AAuRjB,YAAU,EAvRO;AAwRjB,YAAU,EAxRO;AAyRjB,aAAW,EAzRM;AA0RjB,WAAS,CA1RQ;AA2RjB,WAAS,CA3RQ;AA4RjB,YAAU,CA5RO;AA6RjB,WAAS,CA7RQ;AA8RjB,WAAS,CA9RQ;AA+RjB,YAAU,CA/RO;AAgSjB,WAAS,CAhSQ;AAiSjB,YAAU,CAjSO;AAkSjB,WAAS,CAlSQ;AAmSjB,WAAS,EAnSQ;AAoSjB,WAAS,EApSQ;AAqSjB,WAAS,EArSQ;AAsSjB,YAAU,EAtSO;AAuSjB,YAAU,EAvSO;AAwSjB,aAAW,EAxSM;AAySjB,YAAU,EAzSO;AA0SjB,aAAW,EA1SM;AA2SjB,YAAU,EA3SO;AA4SjB,aAAW,EA5SM;AA6SjB,YAAU,EA7SO;AA8SjB,aAAW,EA9SM;AA+SjB,YAAU,EA/SO;AAgTjB,aAAW,EAhTM;AAiTjB,YAAU,EAjTO;AAkTjB,aAAW,EAlTM;AAmTjB,YAAU,EAnTO;AAoTjB,YAAU,EApTO;AAqTjB,aAAW,EArTM;AAsTjB,YAAU,EAtTO;AAuTjB,aAAW,EAvTM;AAwTjB,YAAU,EAxTO;AAyTjB,YAAU,EAzTO;AA0TjB,YAAU,EA1TO;AA2TjB,aAAW,EA3TM;AA4TjB,YAAU,EA5TO;AA6TjB,YAAU,EA7TO;AA8TjB,YAAU,EA9TO;AA+TjB,YAAU,EA/TO;AAgUjB,YAAU,EAhUO;AAiUjB,aAAW,EAjUM;AAkUjB,YAAU,EAlUO;AAmUjB,YAAU,EAnUO;AAoUjB,aAAW,EApUM;AAqUjB,WAAS,CArUQ;AAsUjB,WAAS,CAtUQ;AAuUjB,YAAU,CAvUO;AAwUjB,WAAS,CAxUQ;AAyUjB,YAAU,CAzUO;AA0UjB,WAAS,CA1UQ;AA2UjB,YAAU,CA3UO;AA4UjB,WAAS,CA5UQ;AA6UjB,YAAU,CA7UO;AA8UjB,WAAS,EA9UQ;AA+UjB,WAAS,EA/UQ;AAgVjB,YAAU,EAhVO;AAiVjB,WAAS,EAjVQ;AAkVjB,YAAU,EAlVO;AAmVjB,WAAS,EAnVQ;AAoVjB,YAAU,EApVO;AAqVjB,YAAU,EArVO;AAsVjB,aAAW,EAtVM;AAuVjB,YAAU,EAvVO;AAwVjB,YAAU,CAxVO;AAyVjB,YAAU,CAzVO;AA0VjB,YAAU,CA1VO;AA2VjB,YAAU,CA3VO;AA4VjB,YAAU,CA5VO;AA6VjB,YAAU,CA7VO;AA8VjB,YAAU,CA9VO;AA+VjB,YAAU;AA/VO,CAAd,C,CAmWP;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AAGO,IAAM,KAAK,GAAG;AACjB,WAAS;AAAE,YAAQ,CAAC,QAAD,EAAW,OAAX,EAAoB,WAApB;AAAV,GADQ;AAEjB,WAAS;AACL,YAAQ,CAAC,kBAAD,EAAqB,cAArB,EAAqC,IAArC,EACJ,WADI,EACS,UADT;AADH,GAFQ;AAMjB,WAAS;AACL,YAAQ,CAAC,kBAAD,EAAqB,cAArB,EAAqC,IAArC,EACJ,YADI,EACU,YADV;AADH,GANQ;AAUjB,WAAS;AAAE,YAAQ,CAAC,kBAAD,EAAqB,aAArB,EAAoC,IAApC;AAAV,GAVQ;AAWjB,WAAS;AAAE,YAAQ,CAAC,kBAAD,EAAqB,aAArB,EAAoC,IAApC;AAAV,GAXQ;AAYjB,WAAS;AAAE,YAAQ,CAAC,kBAAD,EAAqB,gBAArB,EAAuC,IAAvC;AAAV,GAZQ;AAajB,WAAS;AAAE,YAAQ,CAAC,SAAD,EAAY,kBAAZ,EAAgC,kBAAhC;AAAV,GAbQ;AAcjB,WAAS;AAAE,YAAQ,CAAC,qBAAD;AAAV,GAdQ;AAejB,WAAS;AAAE,YAAQ,CAAC,mBAAD;AAAV,GAfQ;AAgBjB,YAAU;AAAE,YAAQ,CAAC,gBAAD;AAAV,GAhBO;AAiBjB,WAAS;AAAE,YAAQ,CAAC,sBAAD;AAAV,GAjBQ;AAkBjB,YAAU;AAAE,YAAQ,CAAC,sBAAD;AAAV,GAlBO;AAmBjB,WAAS;AAAE,YAAQ,CAAC,gCAAD;AAAV,GAnBQ;AAoBjB,YAAU;AAAE,YAAQ,CAAC,gCAAD;AAAV,GApBO;AAqBjB,WAAS;AAAE,YAAQ,CAAC,gBAAD;AAAV,GArBQ;AAsBjB,YAAU;AAAE,YAAQ,CAAC,gBAAD;AAAV,GAtBO;AAuBjB,WAAS;AAAE,YAAQ,CAAC,qBAAD;AAAV,GAvBQ;AAwBjB,WAAS;AAAE,YAAQ,CAAC,gCAAD;AAAV,GAxBQ;AAyBjB,YAAU;AAAE,YAAQ,CAAC,mCAAD;AAAV,GAzBO;AA0BjB,WAAS;AAAE,YAAQ,CAAC,mCAAD,EAAsC,+BAAtC;AAAV,GA1BQ;AA2BjB,YAAU;AAAE,YAAQ,CAAC,0CAAD;AAAV,GA3BO;AA4BjB,WAAS;AAAE,YAAQ,CAAC,kBAAD;AAAV,GA5BQ;AA6BjB,YAAU;AAAE,YAAQ,CAAC,kBAAD;AAAV,GA7BO;AA8BjB,YAAU;AAAE,YAAQ,CAAC,aAAD;AAAV,GA9BO;AA+BjB,aAAW;AAAE,YAAQ,CAAC,aAAD;AAAV,GA/BM;AAgCjB,YAAU;AAAE,YAAQ,CAAC,iBAAD,EAAoB,8BAApB;AAAV,GAhCO;AAiCjB,WAAS;AAAE,YAAQ,CAAC,uBAAD,EAA0B,MAA1B;AAAV,GAjCQ;AAkCjB,WAAS;AAAE,YAAQ,CAAC,2BAAD;AAAV,GAlCQ;AAmCjB,YAAU;AAAE,YAAQ,CAAC,2BAAD;AAAV,GAnCO;AAoCjB,WAAS;AAAE,YAAQ,CAAC,yBAAD;AAAV,GApCQ;AAqCjB,WAAS;AAAE,YAAQ,CAAC,0BAAD;AAAV,GArCQ;AAsCjB,YAAU;AAAE,YAAQ,CAAC,0BAAD;AAAV,GAtCO;AAuCjB,WAAS;AAAE,YAAQ,CAAC,0BAAD;AAAV,GAvCQ;AAwCjB,YAAU;AAAE,YAAQ,CAAC,0BAAD;AAAV,GAxCO;AAyCjB,WAAS;AAAE,YAAQ,CAAC,4BAAD;AAAV,GAzCQ;AA0CjB,WAAS;AAAE,YAAQ,CAAC,qBAAD;AAAV,GA1CQ;AA2CjB,WAAS;AAAE,YAAQ,CAAC,2BAAD;AAAV,GA3CQ;AA4CjB,WAAS;AAAE,YAAQ,CAAC,4BAAD;AAAV,GA5CQ;AA6CjB,YAAU;AAAE,YAAQ,CAAC,mBAAD;AAAV,GA7CO;AA8CjB,YAAU;AAAE,YAAQ,CAAC,qBAAD;AAAV,GA9CO;AA+CjB,aAAW;AAAE,YAAQ,CAAC,mBAAD,EAAsB,kBAAtB;AAAV,GA/CM;AAgDjB,YAAU;AAAE,YAAQ,CAAC,2BAAD;AAAV,GAhDO;AAiDjB,aAAW;AAAE,YAAQ,CAAC,mCAAD;AAAV,GAjDM;AAkDjB,YAAU;AAAE,YAAQ,CAAC,oCAAD;AAAV,GAlDO;AAmDjB,aAAW;AAAE,YAAQ,CAAC,sCAAD;AAAV,GAnDM;AAoDjB,YAAU;AAAE,YAAQ,CAAC,+BAAD;AAAV,GApDO;AAqDjB,aAAW;AAAE,YAAQ,CAAC,iCAAD;AAAV,GArDM;AAsDjB,YAAU;AAAE,YAAQ,CAAC,yBAAD;AAAV,GAtDO;AAuDjB,aAAW;AAAE,YAAQ,CAAC,yBAAD;AAAV,GAvDM;AAwDjB,YAAU;AAAE,YAAQ,CAAC,iCAAD;AAAV,GAxDO;AAyDjB,aAAW;AAAE,YAAQ,CAAC,4BAAD;AAAV,GAzDM;AA0DjB,YAAU;AAAE,YAAQ,CAAC,yBAAD;AAAV,GA1DO;AA2DjB,YAAU;AAAE,YAAQ,CAAC,6BAAD;AAAV,GA3DO;AA4DjB,aAAW;AAAE,YAAQ,CAAC,6BAAD;AAAV,GA5DM;AA6DjB,YAAU;AAAE,YAAQ,CAAC,4BAAD;AAAV,GA7DO;AA8DjB,aAAW;AAAE,YAAQ,CAAC,4BAAD;AAAV,GA9DM;AA+DjB,YAAU;AAAE,YAAQ,CAAC,qBAAD;AAAV,GA/DO;AAgEjB,YAAU;AAAE,YAAQ,CAAC,wBAAD;AAAV,GAhEO;AAiEjB,YAAU;AAAE,YAAQ,CAAC,+BAAD;AAAV,GAjEO;AAkEjB,aAAW;AAAE,YAAQ,CAAC,iCAAD;AAAV,GAlEM;AAmEjB,YAAU;AAAE,YAAQ,CAAC,qBAAD;AAAV,GAnEO;AAoEjB,YAAU;AAAE,YAAQ,CAAC,yBAAD;AAAV,GApEO;AAqEjB,YAAU;AAAE,YAAQ,CAAC,6BAAD,EAAgC,8BAAhC;AAAV,GArEO;AAsEjB,YAAU;AAAE,YAAQ,CAAC,qBAAD;AAAV,GAtEO;AAuEjB,YAAU;AAAE,YAAQ,CAAC,+BAAD;AAAV,GAvEO;AAwEjB,aAAW;AACP,YAAQ,CAAC,wBAAD,EACJ,2BADI,EACyB,8BADzB,EACyD,6BADzD;AADD,GAxEM;AA4EjB,YAAU;AAAE,YAAQ,CAAC,0BAAD,EAA6B,8BAA7B;AAAV,GA5EO;AA6EjB,YAAU;AAAE,YAAQ,CAAC,yBAAD;AAAV,GA7EO;AA8EjB,aAAW;AAAE,YAAQ,CAAC,yBAAD;AAAV,GA9EM;AA+EjB,WAAS;AAAE,YAAQ,CAAC,uBAAD;AAAV,GA/EQ;AAgFjB,WAAS;AAAE,YAAQ,CAAC,2BAAD;AAAV,GAhFQ;AAiFjB,YAAU;AAAE,YAAQ,CAAC,2BAAD;AAAV,GAjFO;AAkFjB,WAAS;AAAE,YAAQ,CAAC,+BAAD;AAAV,GAlFQ;AAmFjB,YAAU;AAAE,YAAQ,CAAC,sBAAD;AAAV,GAnFO;AAoFjB,WAAS;AAAE,YAAQ,CAAC,oBAAD;AAAV,GApFQ;AAqFjB,YAAU;AAAE,YAAQ,CAAC,0BAAD;AAAV,GArFO;AAsFjB,WAAS;AAAE,YAAQ,CAAC,0BAAD;AAAV,GAtFQ;AAuFjB,YAAU;AAAE,YAAQ,CAAC,0BAAD;AAAV,GAvFO;AAwFjB,WAAS;AAAE,YAAQ,CAAC,oBAAD,EAAuB,uBAAvB;AAAV,GAxFQ;AAyFjB,YAAU;AAAE,YAAQ,CAAC,oBAAD;AAAV,GAzFO;AA0FjB,WAAS;AAAE,YAAQ,CAAC,qBAAD,EAAwB,uBAAxB;AAAV,GA1FQ;AA2FjB,YAAU;AAAE,YAAQ,CAAC,qBAAD;AAAV,GA3FO;AA4FjB,WAAS;AAAE,YAAQ,CAAC,+BAAD;AAAV,GA5FQ;AA6FjB,WAAS;AAAE,YAAQ,CAAC,8BAAD;AAAV,GA7FQ;AA8FjB,YAAU;AAAE,YAAQ,CAAC,gCAAD;AAAV,GA9FO;AA+FjB,YAAU;AAAE,YAAQ,CAAC,wBAAD;AAAV,GA/FO;AAgGjB,aAAW;AAAE,YAAQ,CAAC,wBAAD;AAAV,GAhGM;AAiGjB,YAAU;AAAE,YAAQ,CAAC,2BAAD;AAAV,GAjGO;AAkGjB,aAAW;AAAE,YAAQ,CAAC,2BAAD;AAAV,GAlGM;AAmGjB,YAAU;AAAE,YAAQ,CAAC,oBAAD;AAAV,GAnGO;AAoGjB,YAAU;AAAE,YAAQ,CAAC,wBAAD;AAAV,GApGO;AAqGjB,aAAW;AAAE,YAAQ,CAAC,wBAAD;AAAV,GArGM;AAsGjB,YAAU;AAAE,YAAQ,CAAC,yCAAD;AAAV,GAtGO;AAuGjB,aAAW;AAAE,YAAQ,CAAC,yCAAD;AAAV,GAvGM;AAwGjB,YAAU;AAAE,YAAQ,CAAC,wBAAD;AAAV,GAxGO;AAyGjB,YAAU;AAAE,YAAQ,CAAC,mCAAD;AAAV,GAzGO;AA0GjB,aAAW;AAAE,YAAQ,CAAC,mCAAD;AAAV,GA1GM;AA2GjB,YAAU;AAAE,YAAQ,CAAC,yBAAD;AAAV,GA3GO;AA4GjB,YAAU;AAAE,YAAQ,CAAC,yBAAD;AAAV,GA5GO;AA6GjB,aAAW;AAAE,YAAQ,CAAC,yBAAD;AAAV,GA7GM;AA8GjB,YAAU;AAAE,YAAQ,CAAC,qBAAD;AAAV,GA9GO;AA+GjB,aAAW;AAAE,YAAQ,CAAC,qBAAD;AAAV,GA/GM;AAgHjB,YAAU;AACN,YAAQ,CAAC,2BAAD,EACJ,oBADI,EACkB,mBADlB;AADF,GAhHO;AAoHjB,aAAW;AAAE,YAAQ,CAAC,sBAAD,EAAyB,OAAzB,EAAkC,QAAlC,EAA4C,mBAA5C;AAAV,GApHM;AAqHjB,YAAU;AACN,YAAQ,CAAC,6BAAD,EAAgC,mBAAhC,EACJ,uBADI;AADF,GArHO;AAyHjB,aAAW;AAAE,YAAQ,CAAC,qBAAD,EAAwB,uBAAxB;AAAV,GAzHM;AA0HjB,YAAU;AAAE,YAAQ,CAAC,qBAAD,EAAwB,oBAAxB;AAAV,GA1HO;AA2HjB,YAAU;AAAE,YAAQ,CAAC,mBAAD,EAAsB,kBAAtB;AAAV,GA3HO;AA4HjB,aAAW;AAAE,YAAQ,CAAC,kBAAD;AAAV,GA5HM;AA6HjB,YAAU;AAAE,YAAQ,CAAC,qBAAD;AAAV,GA7HO;AA8HjB,aAAW;AAAE,YAAQ,CAAC,mBAAD;AAAV,GA9HM;AA+HjB,YAAU;AAAE,YAAQ,CAAC,8BAAD;AAAV,GA/HO;AAgIjB,aAAW;AAAE,YAAQ,CAAC,8BAAD;AAAV,GAhIM;AAiIjB,YAAU;AAAE,YAAQ,CAAC,kCAAD;AAAV,GAjIO;AAkIjB,aAAW;AAAE,YAAQ,CAAC,kCAAD;AAAV,GAlIM;AAmIjB,YAAU;AAAE,YAAQ,CAAC,mBAAD;AAAV,GAnIO;AAoIjB,aAAW;AAAE,YAAQ,CAAC,mBAAD;AAAV,GApIM;AAqIjB,YAAU;AAAE,YAAQ,CAAC,4BAAD;AAAV,GArIO;AAsIjB,aAAW;AAAE,YAAQ,CAAC,qBAAD,EAAwB,4BAAxB;AAAV,GAtIM;AAuIjB,YAAU;AAAE,YAAQ,CAAC,kBAAD;AAAV,GAvIO;AAwIjB,aAAW;AAAE,YAAQ,CAAC,kBAAD;AAAV,GAxIM;AAyIjB,YAAU;AAAE,YAAQ,CAAC,sBAAD;AAAV,GAzIO;AA0IjB,aAAW;AAAE,YAAQ,CAAC,sBAAD,EAAyB,oBAAzB;AAAV,GA1IM;AA2IjB,YAAU;AAAE,YAAQ,CAAC,8BAAD;AAAV,GA3IO;AA4IjB,aAAW;AAAE,YAAQ,CAAC,uBAAD,EAA0B,wBAA1B;AAAV,GA5IM;AA6IjB,YAAU;AAAE,YAAQ,CAAC,uBAAD;AAAV,GA7IO;AA8IjB,aAAW;AAAE,YAAQ,CAAC,uBAAD;AAAV,GA9IM;AA+IjB,YAAU;AAAE,YAAQ,CAAC,uBAAD;AAAV,GA/IO;AAgJjB,YAAU;AACN,YAAQ,CAAC,gBAAD,EAAmB,aAAnB,EAAkC,wBAAlC,EACJ,qBADI;AADF,GAhJO;AAoJjB,YAAU;AACN,YAAQ,CAAC,kBAAD,EAAqB,iBAArB,EAAwC,kBAAxC,EACJ,SADI,EACO,qBADP;AADF,GApJO;AAwJjB,YAAU;AAAE,YAAQ,CAAC,4BAAD;AAAV,GAxJO;AAyJjB,aAAW;AAAE,YAAQ,CAAC,4BAAD;AAAV,GAzJM;AA0JjB,YAAU;AAAE,YAAQ,CAAC,4BAAD;AAAV,GA1JO;AA2JjB,YAAU;AAAE,YAAQ,CAAC,yBAAD;AAAV,GA3JO;AA4JjB,aAAW;AAAE,YAAQ,CAAC,yBAAD;AAAV,GA5JM;AA6JjB,WAAS;AACL,YAAQ,CAAC,0CAAD,EAA6C,sBAA7C,EACJ,+BADI;AADH,GA7JQ;AAiKjB,WAAS;AAAE,YAAQ,CAAC,uBAAD;AAAV,GAjKQ;AAkKjB,YAAU;AAAE,YAAQ,CAAC,sBAAD;AAAV,GAlKO;AAmKjB,WAAS,EAnKQ;AAoKjB,YAAU,EApKO;AAqKjB,WAAS;AAAE,YAAQ,CAAC,wBAAD;AAAV,GArKQ;AAsKjB,WAAS;AAAE,YAAQ,CAAC,uBAAD;AAAV,GAtKQ;AAuKjB,YAAU;AAAE,YAAQ,CAAC,sBAAD;AAAV,GAvKO;AAwKjB,WAAS;AAAE,YAAQ,CAAC,2BAAD;AAAV,GAxKQ;AAyKjB,WAAS;AACL,YAAQ,CAAC,+CAAD,EACJ,mBADI,EAEJ,gCAFI;AADH,GAzKQ;AA8KjB,WAAS;AAAE,YAAQ,CAAC,mCAAD;AAAV,GA9KQ;AA+KjB,WAAS;AAAE,YAAQ,CAAC,uBAAD;AAAV,GA/KQ;AAgLjB,YAAU;AAAE,YAAQ,CAAC,sBAAD;AAAV,GAhLO;AAiLjB,YAAU,EAjLO;AAkLjB,aAAW,EAlLM;AAmLjB,YAAU,EAnLO;AAoLjB,aAAW,EApLM;AAqLjB,YAAU,EArLO;AAsLjB,aAAW,EAtLM;AAuLjB,YAAU;AAAE,YAAQ,CAAC,wBAAD,EAA2B,sBAA3B;AAAV,GAvLO;AAwLjB,YAAU;AAAE,YAAQ,CAAC,sBAAD;AAAV,GAxLO;AAyLjB,aAAW;AAAE,YAAQ,CAAC,sBAAD;AAAV,GAzLM;AA0LjB,YAAU;AAAE,YAAQ,CAAC,uBAAD;AAAV,GA1LO;AA2LjB,aAAW;AAAE,YAAQ,CAAC,sBAAD;AAAV,GA3LM;AA4LjB,YAAU;AAAE,YAAQ,CAAC,sBAAD;AAAV,GA5LO;AA6LjB,aAAW;AAAE,YAAQ,CAAC,sBAAD,EAAyB,kBAAzB;AAAV,GA7LM;AA8LjB,YAAU;AAAE,YAAQ,CAAC,yBAAD;AAAV,GA9LO;AA+LjB,aAAW;AAAE,YAAQ,CAAC,yCAAD;AAAV,GA/LM;AAgMjB,YAAU;AAAE,YAAQ,CAAC,uBAAD;AAAV,GAhMO;AAiMjB,aAAW;AAAE,YAAQ,CAAC,sBAAD;AAAV,GAjMM;AAkMjB,YAAU,EAlMO;AAmMjB,aAAW,EAnMM;AAoMjB,YAAU;AACN,YACJ,CAAC,kEAAD,EACI,6BADJ,EACmC,eADnC,EAEI,+BAFJ;AAFU,GApMO;AA0MjB,YAAU;AAAE,YAAQ,CAAC,sBAAD;AAAV,GA1MO;AA2MjB,aAAW;AAAE,YAAQ,CAAC,sBAAD;AAAV,GA3MM;AA4MjB,YAAU;AAAE,YAAQ,CAAC,uBAAD;AAAV,GA5MO;AA6MjB,aAAW;AAAE,YAAQ,CAAC,sBAAD;AAAV,GA7MM;AA8MjB,YAAU;AAAE,YAAQ,CAAC,wBAAD,EAA2B,0BAA3B;AAAV,GA9MO;AA+MjB,YAAU,EA/MO;AAgNjB,aAAW;AAAE,YAAQ,CAAC,yBAAD;AAAV,GAhNM;AAiNjB,YAAU;AAAE,YAAQ,CAAC,mBAAD;AAAV,GAjNO;AAkNjB,aAAW;AAAE,YAAQ,CAAC,iBAAD;AAAV,GAlNM;AAmNjB,YAAU;AAAE,YAAQ,CAAC,qBAAD,EAAwB,wBAAxB;AAAV,GAnNO;AAoNjB,YAAU;AAAE,YAAQ,CAAC,uBAAD;AAAV,GApNO;AAqNjB,aAAW;AAAE,YAAQ,CAAC,sBAAD,EAAyB,mBAAzB;AAAV,GArNM;AAsNjB,YAAU;AAAE,YAAQ,CAAC,2BAAD,EAA8B,wBAA9B;AAAV,GAtNO;AAuNjB,YAAU;AAAE,YAAQ,CAAC,wBAAD;AAAV,GAvNO;AAwNjB,YAAU;AACN,YAAQ,CAAC,6BAAD,EAAgC,yBAAhC,EACJ,sBADI,EACoB,0BADpB;AADF,GAxNO;AA4NjB,aAAW;AACP,YAAQ,CAAC,8BAAD,EAAiC,6BAAjC,EACJ,yBADI,EACuB,sBADvB,EAEJ,0BAFI;AADD,GA5NM;AAiOjB,YAAU;AAAE,YAAQ,CAAC,sBAAD;AAAV,GAjOO;AAkOjB,aAAW;AAAE,YAAQ,CAAC,uBAAD;AAAV,GAlOM;AAmOjB,YAAU;AACN,YAAQ,CAAC,mCAAD,EAAsC,eAAtC,EACJ,uBADI,EACqB,kBADrB,EACyC,oBADzC,EAEJ,+BAFI;AADF,GAnOO;AAwOjB,YAAU;AAAE,YAAQ,CAAC,kBAAD,EAAqB,sBAArB;AAAV,GAxOO;AAyOjB,aAAW;AAAE,YAAQ,CAAC,mBAAD,EAAsB,kBAAtB,EAA0C,sBAA1C;AAAV,GAzOM;AA0OjB,YAAU;AACN,YAAQ,CAAC,yBAAD,EAA4B,sBAA5B,EACJ,uBADI;AADF,GA1OO;AA8OjB,aAAW;AACP,YAAQ,CAAC,oBAAD,EAAuB,oBAAvB,EACJ,sBADI;AADD,GA9OM;AAkPjB,YAAU;AACN,YAAQ,CAAC,kBAAD,EAAqB,uBAArB,EACJ,mEACoB,yDAFhB,EAGJ,mBAHI,EAGiB,+BAHjB;AADF,GAlPO;AAwPjB,YAAU,EAxPO;AAyPjB,aAAW,EAzPM;AA0PjB,YAAU;AAAE,YAAQ,CAAC,wBAAD;AAAV,GA1PO;AA2PjB,YAAU;AAAE,YAAQ,CAAC,wBAAD;AAAV,GA3PO;AA4PjB,YAAU,EA5PO;AA6PjB,aAAW,EA7PM;AA8PjB,YAAU,EA9PO;AA+PjB,aAAW,EA/PM;AAgQjB,YAAU,EAhQO;AAiQjB,aAAW,EAjQM;AAkQjB,YAAU;AAAE,YAAQ,CAAC,wBAAD;AAAV,GAlQO;AAmQjB,YAAU;AAAE,YAAQ,CAAC,uCAAD;AAAV,GAnQO;AAoQjB,aAAW;AAAE,YAAQ,CAAC,uDAAD;AAAV,GApQM;AAqQjB,YAAU;AAAE,YAAQ,CAAC,8BAAD;AAAV,GArQO;AAsQjB,aAAW;AAAE,YAAQ,CAAC,kBAAD;AAAV,GAtQM;AAuQjB,YAAU;AAAE,YAAQ,CAAC,wBAAD;AAAV,GAvQO;AAwQjB,YAAU,EAxQO;AAyQjB,aAAW,EAzQM;AA0QjB,YAAU,EA1QO;AA2QjB,aAAW;AAAE,YAAQ,CAAC,aAAD;AAAV,GA3QM;AA4QjB,YAAU;AAAE,YAAQ,CAAC,wBAAD;AAAV,GA5QO;AA6QjB,YAAU;AAAE,YAAQ,CAAC,wBAAD,EAA2B,4BAA3B;AAAV,GA7QO;AA8QjB,YAAU;AAAE,YAAQ,CAAC,wBAAD;AAAV,GA9QO;AA+QjB,WAAS;AAAE,YAAQ,CAAC,uBAAD;AAAV,GA/QQ;AAgRjB,WAAS,EAhRQ;AAiRjB,YAAU,EAjRO;AAkRjB,WAAS,EAlRQ;AAmRjB,YAAU,EAnRO;AAoRjB,WAAS,EApRQ;AAqRjB,YAAU,EArRO;AAsRjB,WAAS,EAtRQ;AAuRjB,YAAU,EAvRO;AAwRjB,WAAS,EAxRQ;AAyRjB,YAAU,EAzRO;AA0RjB,WAAS,EA1RQ;AA2RjB,YAAU,EA3RO;AA4RjB,WAAS,EA5RQ;AA6RjB,WAAS,EA7RQ;AA8RjB,YAAU,EA9RO;AA+RjB,YAAU,EA/RO;AAgSjB,aAAW,EAhSM;AAiSjB,YAAU,EAjSO;AAkSjB,aAAW,EAlSM;AAmSjB,YAAU,EAnSO;AAoSjB,YAAU,EApSO;AAqSjB,aAAW,EArSM;AAsSjB,YAAU,EAtSO;AAuSjB,aAAW,EAvSM;AAwSjB,YAAU,EAxSO;AAySjB,YAAU;AAAE,YAAQ,CAAC,sBAAD;AAAV,GAzSO;AA0SjB,aAAW,EA1SM;AA2SjB,YAAU,EA3SO;AA4SjB,YAAU,EA5SO;AA6SjB,aAAW,EA7SM;AA8SjB,YAAU,EA9SO;AA+SjB,aAAW,EA/SM;AAgTjB,YAAU;AAAE,YAAQ,CAAC,4BAAD;AAAV,GAhTO;AAiTjB,aAAW;AACP,YAAQ,CAAC,iBAAD,EAAoB,sBAApB,EAA4C,kBAA5C,EACJ,wBADI,EACsB,gBADtB;AADD,GAjTM;AAqTjB,YAAU,EArTO;AAsTjB,aAAW;AAAE,YAAQ,CAAC,wBAAD;AAAV,GAtTM;AAuTjB,YAAU;AACN,YAAQ,CAAC,uBAAD,EAA0B,SAA1B,EAAqC,oBAArC,EACJ,iBADI,EACe,uBADf,EACwC,OADxC,EAEJ,2BAFI;AADF,GAvTO;AA4TjB,YAAU,EA5TO;AA6TjB,aAAW;AAAE,YAAQ,CAAC,0BAAD;AAAV,GA7TM;AA8TjB,YAAU,EA9TO;AA+TjB,aAAW;AAAE,YAAQ,CAAC,mBAAD,EAAsB,sBAAtB;AAAV,GA/TM;AAgUjB,YAAU,EAhUO;AAiUjB,aAAW,EAjUM;AAkUjB,YAAU,EAlUO;AAmUjB,aAAW,EAnUM;AAoUjB,YAAU,EApUO;AAqUjB,aAAW;AAAE,YAAQ,CAAC,gBAAD;AAAV,GArUM;AAsUjB,YAAU,EAtUO;AAuUjB,aAAW,EAvUM;AAwUjB,YAAU,EAxUO;AAyUjB,aAAW,EAzUM;AA0UjB,YAAU;AAAE,YAAQ,CAAC,uBAAD;AAAV,GA1UO;AA2UjB,aAAW,EA3UM;AA4UjB,YAAU;AAAE,YAAQ,CAAC,wBAAD,EAA2B,sBAA3B;AAAV,GA5UO;AA6UjB,aAAW;AAAE,YAAQ,CAAC,kBAAD,EAAqB,wBAArB;AAAV,GA7UM;AA8UjB,YAAU;AAAE,YAAQ,CAAC,sBAAD,EAAyB,eAAzB,EAA0C,eAA1C;AAAV,GA9UO;AA+UjB,aAAW;AACP,YAAQ,CAAC,sBAAD,EAAyB,wBAAzB,EAAmD,gBAAnD,EACJ,yBADI;AADD,GA/UM;AAmVjB,YAAU;AAAE,YAAQ,CAAC,uBAAD,EAA0B,yBAA1B;AAAV,GAnVO;AAoVjB,YAAU;AACN,YAAQ,CAAC,+BAAD,EAAkC,YAAlC,EACJ,kCADI,EACgC,wBADhC;AADF,GApVO;AAwVjB,YAAU;AACN,YAAQ,CAAC,aAAD,EAAgB,2BAAhB,EAA6C,qBAA7C,EACJ,qBADI,EACmB,SADnB,EAC8B,UAD9B,EAC0C,eAD1C;AADF,GAxVO;AA4VjB,YAAU,EA5VO;AA6VjB,aAAW,EA7VM;AA8VjB,YAAU,EA9VO;AA+VjB,YAAU,EA/VO;AAgWjB,aAAW,EAhWM;AAiWjB,WAAS;AAAE,YAAQ,CAAC,sBAAD;AAAV,GAjWQ;AAkWjB,WAAS,EAlWQ;AAmWjB,YAAU,EAnWO;AAoWjB,WAAS,EApWQ;AAqWjB,WAAS,EArWQ;AAsWjB,YAAU,EAtWO;AAuWjB,WAAS,EAvWQ;AAwWjB,YAAU,EAxWO;AAyWjB,WAAS,EAzWQ;AA0WjB,WAAS,EA1WQ;AA2WjB,WAAS,EA3WQ;AA4WjB,WAAS;AAAE,YAAQ,CAAC,mBAAD;AAAV,GA5WQ;AA6WjB,YAAU,EA7WO;AA8WjB,YAAU,EA9WO;AA+WjB,aAAW;AAAE,YAAQ,CAAC,iBAAD;AAAV,GA/WM;AAgXjB,YAAU,EAhXO;AAiXjB,aAAW,EAjXM;AAkXjB,YAAU;AAAE,YAAQ,CAAC,iBAAD;AAAV,GAlXO;AAmXjB,aAAW,EAnXM;AAoXjB,YAAU,EApXO;AAqXjB,aAAW,EArXM;AAsXjB,YAAU,EAtXO;AAuXjB,aAAW,EAvXM;AAwXjB,YAAU,EAxXO;AAyXjB,aAAW;AAAE,YAAQ,CAAC,qBAAD;AAAV,GAzXM;AA0XjB,YAAU,EA1XO;AA2XjB,YAAU,EA3XO;AA4XjB,aAAW,EA5XM;AA6XjB,YAAU,EA7XO;AA8XjB,aAAW,EA9XM;AA+XjB,YAAU,EA/XO;AAgYjB,YAAU,EAhYO;AAiYjB,YAAU,EAjYO;AAkYjB,aAAW;AAAE,YAAQ,CAAC,yBAAD;AAAV,GAlYM;AAmYjB,YAAU;AAAE,YAAQ,CAAC,OAAD,EAAU,OAAV,EAAmB,mBAAnB,EAAwC,gBAAxC;AAAV,GAnYO;AAoYjB,YAAU,EApYO;AAqYjB,YAAU;AAAE,YAAQ,CAAC,mBAAD;AAAV,GArYO;AAsYjB,YAAU;AAAE,YAAQ,CAAC,OAAD,EAAU,kBAAV;AAAV,GAtYO;AAuYjB,YAAU,EAvYO;AAwYjB,aAAW,EAxYM;AAyYjB,YAAU;AACN,YAAQ,CAAC,iBAAD,EAAoB,mBAApB,EACJ,6BADI,EAEJ,kBAFI;AADF,GAzYO;AA8YjB,YAAU,EA9YO;AA+YjB,aAAW,EA/YM;AAiZjB,WAAS;AAAE,YAAQ,CAAC,sBAAD;AAAV,GAjZQ;AAkZjB,WAAS,EAlZQ;AAmZjB,YAAU,EAnZO;AAoZjB,WAAS,EApZQ;AAqZjB,YAAU,EArZO;AAsZjB,WAAS,EAtZQ;AAuZjB,YAAU,EAvZO;AAwZjB,WAAS,EAxZQ;AAyZjB,YAAU,EAzZO;AA0ZjB,WAAS,EA1ZQ;AA2ZjB,WAAS;AAAE,YAAQ,CAAC,iBAAD;AAAV,GA3ZQ;AA4ZjB,YAAU,EA5ZO;AA6ZjB,WAAS,EA7ZQ;AA8ZjB,YAAU,EA9ZO;AA+ZjB,WAAS,EA/ZQ;AAgajB,YAAU,EAhaO;AAiajB,YAAU,EAjaO;AAkajB,aAAW;AAAE,YAAQ,CAAC,uBAAD;AAAV,GAlaM;AAmajB,YAAU;AAAE,YAAQ,CAAC,mBAAD,EAAsB,YAAtB;AAAV,GAnaO;AAqajB,YAAU;AAAE,YAAQ,CAAC,sBAAD;AAAV,GAraO;AAsajB,YAAU,EAtaO;AAuajB,YAAU,EAvaO;AAwajB,YAAU,EAxaO;AAyajB,YAAU;AAAE,YAAQ,CAAC,mBAAD;AAAV,GAzaO;AA0ajB,YAAU;AAAE,YAAQ,CAAC,mBAAD;AAAV,GA1aO;AA4ajB,YAAU;AAAE,YAAQ,CAAC,wBAAD;AAAV,GA5aO;AA6ajB,YAAU;AACN,YAAQ,CAAC,WAAD,EAAc,aAAd,EAA6B,uBAA7B,EACJ,iBADI,EACe,cADf;AADF;AA7aO,CAAd;AAmbD,SAAU,+BAAV,CAA0C,IAA1C,EAAgD,KAAhD,EAAqD;AACvD,MAAI,IAAI,GAAG,CAAP,IAAY,IAAI,GAAG,EAAvB,EAA2B;AACvB,UAAM,IAAI,KAAJ,uBAAyB,IAAzB,mBAAN;AACH;;AACD,MAAI,KAAK,GAAG,CAAR,IAAa,KAAK,GAAG,KAAK,CAAC,IAAD,CAA9B,EAAsC;AAClC,UAAM,IAAI,KAAJ,iBAAmB,KAAnB,iBAAN;AACH,GANsD,CAOvD;;;AACA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAD,CAAL,CAAY,KAAZ,EAAmB,CAAnB,CAAf;;AACA,MAAI,MAAM,CAAC,CAAD,CAAN,GAAY,CAAhB,EAAmB;AAAE;AACjB,WAAO,CAAC,CAAD,CAAP;AACH,GAFD,MAEO;AACH,WAAO,CAAC,CAAC,CAAF,EAAK,CAAL,CAAP;AACH;AACJ;;AAED,SAAS,kBAAT,CAA4B,WAA5B,EAAyC,UAAzC,EAAqD,SAAS,GAAC,SAA/D,EAA0E,UAAU,GAAC,SAArF,EAA8F;AAC1F,SAAO;AACH,eADG;AAEH,cAFG;AAGH,aAHG;AAIH;AAJG,GAAP;AAMH;;AAED,SAAS,gBAAT,CAA0B,OAA1B,EAAiC;AAC7B,MAAI,OAAO,KAAK,SAAZ,IAAyB,OAAO,CAAC,WAAR,KAAwB,SAArD,EAAgE;AAC5D;AACA,WAAO,GAAG,CAAC,OAAO,CAAC,WAAT,EAAsB,OAAO,CAAC,UAA9B,EAA0C,OAAO,CAAC,SAAlD,EAA6D,OAAO,CAAC,UAArE,CAAV;AACH,GAJ4B,CAM7B;;;AACA,MAAM,CAAC,IAAD,EAAO,KAAP,IAAgB,OAAO,CAAC,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAAtB;AACA,MAAI,SAAJ;;AACA,MAAI,OAAO,CAAC,MAAR,IAAkB,CAAlB,IAAuB,OAAO,CAAC,CAAD,CAAP,KAAe,SAA1C,EAAqD;AACjD,aAAS,GAAG,OAAO,CAAC,CAAD,CAAnB;AACH;;AACD,MAAI,IAAI,GAAG,CAAP,IAAY,IAAI,GAAG,EAAvB,EAA2B;AACvB,UAAM,IAAI,KAAJ,uBAAyB,IAAzB,gBAAN;AACH,GAd4B,CAe7B;;;AACA,MAAI,KAAK,GAAG,CAAR,IAAa,KAAK,GAAG,KAAK,CAAC,IAAD,CAA9B,EAAsC;AAClC,UAAM,IAAI,KAAJ,iBAAmB,KAAnB,gBAAN;AACH;;AACD,MAAM,mBAAmB,GAAG,+BAA+B,CAAC,IAAD,EAAO,KAAP,CAA3D;;AACA,MAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,QAAI,CAAC,mBAAmB,CAAC,QAApB,CAA6B,SAA7B,CAAL,EAA8C;AAC1C,YAAM,IAAI,KAAJ,qBAAuB,SAAvB,gBAAN;AACH;AACJ;;AACD,MAAI,SAAS,KAAK,SAAlB,EAA6B;AAAE;AAC3B,QAAI,mBAAmB,CAAC,QAApB,CAA6B,CAA7B,CAAJ,EAAqC;AACjC,eAAS,GAAG,CAAZ;AACH,KAFD,MAEO;AACH,eAAS,GAAG,CAAZ;AACH;AACJ;;AACD,SAAO,CAAC,IAAD,EAAO,KAAP,EAAc,SAAd,CAAP;AACH;;AAEK,SAAU,6BAAV,CAAwC,OAAxC,EAA+C;AACjD,MAAM,CAAC,IAAD,EAAO,KAAP,EAAc,SAAd,IAA2B,gBAAgB,CAAC,OAAD,CAAjD;;AACA,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,KAAD,EAAQ,SAAR,CAAD,CAAjB;AACA,SAAO,MAAM,CAAC,IAAD,CAAN,CAAa,EAAb,EAAiB,CAAjB,CAAP;AACH;AAEK,SAAU,kBAAV,CAA6B,OAA7B,EAAoC;AACtC,MAAM,CAAC,IAAD,EAAO,KAAP,EAAc,SAAd,IAA2B,gBAAgB,CAAC,OAAO,CAAC,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAAD,CAAjD;;AACA,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,KAAD,EAAQ,SAAR,CAAD,CAAjB;AACA,SAAO,MAAM,CAAC,IAAD,CAAN,CAAa,EAAb,EAAiB,CAAjB,CAAP;AACH;AAEK,SAAU,uBAAV,CAAkC,OAAlC,EAAyC;AAC3C,MAAM,CAAC,IAAD,EAAO,KAAP,EAAc,SAAd,IAA2B,gBAAgB,CAAC,OAAD,CAAjD;;AACA,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,KAAD,EAAQ,SAAR,CAAD,CAAjB;AACA,SAAO,MAAM,CAAC,IAAD,CAAN,CAAa,EAAb,EAAiB,CAAjB,CAAP;AACH;AAEK,SAAU,uBAAV,CAAkC,MAAlC,EAAwC;AAC1C,MAAM,IAAI,GAAG,EAAb;;AACA,OAAK,IAAI,IAAI,GAAG,CAAhB,EAAmB,IAAI,GAAG,EAA1B,EAA8B,IAAI,EAAlC,EAAsC;AAClC,QAAI,GAAG,GAAG,CAAV;;AACA,SAAK,IAAM,EAAX,IAAiB,KAAK,CAAC,IAAD,CAAtB,EAA8B;AAC1B,UAAI,EAAE,KAAK,SAAX,EAAsB;AAClB,WAAG,IAAI,CAAP;AACA,iBAFkB,CAER;AACb,OAJyB,CAK1B;;;AACA,UAAI,oDAAW,CAAC,EAAE,CAAC,CAAD,CAAH,EAAQ,MAAR,CAAf,EAAgC;AAC5B,YAAI,CAAC,IAAL,CAAU,kBAAkB,CAAC,IAAD,EAAO,GAAP,CAA5B;AACH;;AACD,SAAG,IAAI,CAAP;AACH;AACJ;;AACD,SAAO,IAAP;AACH;AAEK,SAAU,iBAAV,CAA4B,OAA5B,EAAmC;AACrC;AACA,MAAM,CAAC,IAAD,EAAO,KAAP,EAAc,gBAAd,IAAkC,gBAAgB,CAAC,OAAD,CAAxD;;AACA,MAAM,CAAC,GAAG,KAAK,CAAC,IAAD,CAAL,CAAY,KAAZ,EAAmB,CAAnB,CAAV;;AACA,MAAI,CAAC,KAAK,CAAV,EAAa;AACT,WAAO,SAAP;AACH,GAFD,MAEO;AACH,QAAI,KAAK,GAAG,CAAZ;;AACA,QAAI,KAAK,CAAC,OAAN,CAAc,CAAd,CAAJ,EAAsB;AAClB,WAAK,GAAG,CAAC,CAAC,CAAD,CAAT;AACH;;AACD,QAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,IAAD,EAAO,KAAP,EAAc,SAAd,CAAD,CAAjC;;AACA,WAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAD,CAAT,EAAc,QAAQ,CAAC,CAAD,CAAtB,EAA2B,QAAQ,CAAC,CAAD,CAAnC,CAAzB;AACH;AACJ;AAEK,SAAU,oBAAV,CAA+B,OAA/B,EAAsC;AACxC,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAD,CAAnC;;AACA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,UAAD,CAAP,CAArB;AACA,SAAO,OAAO,CAAC,IAAf;AACH;AAEK,SAAU,kBAAV,CAA6B,OAA7B,EAAsC,iBAAwB,IAA9D,EAAkE;AACpE,MAAM,CAAC,IAAD,EAAO,KAAP,EAAc,SAAd,IAA2B,gBAAgB,CAAC,OAAD,CAAjD;;AACA,MAAI,IAAJ;;AACA,MAAI,cAAc,CAAC,WAAf,OAAiC,IAArC,EAA2C;AACvC,QAAI,SAAS,KAAK,CAAC,CAAnB,EAAsB;AAClB,UAAI,GAAG,GAAP;AACH,KAFD,MAEO,IAAI,SAAS,KAAK,CAAlB,EAAqB;AACxB,UAAI,GAAG,GAAP;AACH,KAFM,MAEA,IAAI,SAAS,KAAK,CAAlB,EAAqB;AACxB,UAAI,GAAG,EAAP;AACH;AACJ,GARD,MAQO;AAAE;AACL,QAAI,GAAG,EAAP;AACH;;AACD,mBAAU,IAAV,cAAkB,KAAlB,SAA0B,IAA1B;AACH;AAEK,SAAU,sBAAV,CAAiC,CAAjC,EAAkC;AACpC,MAAM,KAAK,GAAG,CAAC,CAAC,mBAAhB;;AACA,MAAI,CAAE,KAAK,CAAC,MAAZ,EAAqB;AACjB,UAAM,IAAI,KAAJ,CACF,8DADE,CAAN;AAGH;;AACD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAnB;;AACA,MAAI,IAAI,KAAK,CAAb,EAAgB;AAAE;AACd,WAAO,kBAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,KAAK,CAAC,CAAD,CAAf,CAAzB;AACH,GAFD,MAEO,IAAI,IAAI,KAAK,EAAb,EAAiB;AAAE;AACtB,WAAO,kBAAkB,CAAC,EAAD,EAAK,CAAL,EAAQ,CAAR,EAAW,CAAX,CAAzB;AACH,GAZmC,CAapC;;;AACA,MAAM,UAAU,GAAG,EAAnB;;AACA,OAAK,IAAI,GAAG,GAAG,CAAf,EAAkB,GAAG,GAAG,IAAxB,EAA8B,GAAG,EAAjC,EAAqC;AACjC,QAAM,WAAW,GAAG,KAAK,CAAC,KAAN,CAAY,GAAZ,CAApB;;AACA,SAAK,IAAI,YAAY,GAAG,CAAxB,EAA2B,YAAY,GAAG,GAA1C,EAA+C,YAAY,EAA3D,EAA+D;AAC3D,iBAAW,CAAC,IAAZ,CAAiB,KAAK,CAAC,YAAD,CAAtB;AACH,KAJgC,CAKjC;;;AACA,QAAM,iBAAiB,GAAG,WAAW,CAAC,CAAD,CAArC;AACA,QAAM,OAAO,GAAG,EAAhB;;AACA,SAAK,IAAM,CAAX,IAAgB,WAAhB,EAA6B;AACzB,UAAM,cAAc,GAAG,+CAAM,CAAC,CAAC,GAAG,iBAAL,EAAwB,EAAxB,CAA7B;AACA,aAAO,CAAC,IAAR,CAAa,cAAb;AACH,KAXgC,CAYjC;;;AACA,QAAM,aAAa,GAAG,EAAtB;;AACA,SAAK,IAAM,EAAX,IAAgB,OAAhB,EAAyB;AACrB,mBAAa,CAAC,IAAd,CAAmB,+CAAM,CAAC,KAAK,EAAN,EAAS,EAAT,CAAzB;AACH;;AACD,iBAAa,CAAC,OAAd,GAjBiC,CAiBR;AACzB;;AACA,QAAM,uBAAuB,GAAG,aAAa,CAAC,CAAD,CAA7C;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,aAAa,CAAC,MAAlC,EAA0C,CAAC,EAA3C,EAA+C;AAC3C,mBAAa,CAAC,CAAD,CAAb,GAAmB,+CAAM,CAAC,aAAa,CAAC,CAAD,CAAb,IAAoB,KAAK,uBAAzB,CAAD,EAAoD,EAApD,CAAzB;AACH;;AACD,QAAM,cAAc,GAAG,CAAC,OAAD,EAAU,aAAV,EAAyB,iBAAzB,CAAvB;AACA,cAAU,CAAC,IAAX,CAAgB,cAAhB;AACH,GAxCmC,CAyCpC;;;AACA,MAAI,KAAK,GAAG,KAAZ;AACA,MAAI,iBAAJ;AACA,MAAI,KAAJ;AACA,MAAI,SAAJ;;AAEA,OAAK,IAAI,cAAc,GAAG,CAA1B,EAA6B,cAAc,GAAG,KAAK,CAAC,IAAD,CAAL,CAAY,MAA1D,EAAkE,cAAc,EAAhF,EAAoF;AAChF,QAAM,QAAQ,GAAG,KAAK,CAAC,IAAD,CAAL,CAAY,cAAZ,CAAjB;;AACA,QAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,eADwB,CACd;AACb;;AACD,QAAM,WAAW,GAAG,QAAQ,CAAC,CAAD,CAA5B;AACA,QAAM,mBAAmB,GAAG,+BAA+B,CAAC,IAAD,EAAO,cAAP,CAA3D;;AACA,SAAK,IAAM,CAAC,SAAD,EAAY,kBAAZ,EAAgC,mBAAhC,CAAX,IAAmE,UAAnE,EAA+E;AAC3E,UAAI,oDAAW,CAAC,WAAD,EAAc,SAAd,CAAf,EAAyC;AACrC,aAAK,GAAG,cAAR;;AACA,YAAI,mBAAmB,CAAC,QAApB,CAA6B,CAA7B,CAAJ,EAAqC;AACjC,mBAAS,GAAG,CAAZ;AACH,SAFD,MAEO;AACH,mBAAS,GAAG,CAAZ;AACH;;AACD,yBAAiB,GAAG,mBAApB;AACA,aAAK,GAAG,IAAR;AACA;AACH,OAVD,MAUO,IAAI,oDAAW,CAAC,WAAD,EAAc,kBAAd,CAAf,EAAkD;AACrD,aAAK,GAAG,cAAR;;AACA,YAAI,mBAAmB,CAAC,QAApB,CAA6B,CAA7B,CAAJ,EAAqC;AACjC,mBAAS,GAAG,CAAZ;AACH,SAFD,MAEO;AACH,mBAAS,GAAG,CAAC,CAAb;AACH;;AACD,yBAAiB,GAAG,mBAApB;AACA,aAAK,GAAG,IAAR;AACA;AACH;AACJ;AACJ;;AACD,MAAI,CAAC,KAAL,EAAY;AACR,UAAM,IAAI,KAAJ,iDAAmD,KAAnD,EAAN;AACH;;AACD,SAAO,kBAAkB,CAAC,IAAD,EAAO,KAAP,EAAc,SAAd,EAAyB,iBAAzB,CAAzB;AACH,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3vFD;;;;;;;;;;;;;;;AAeG;AACH;AACA;AAGA;;AAEG;AAEH;;AAEA;;;;;AAKG;;AACI,IAAM,WAAW,GAAG;AACvB,QAAM,EAAE,EADe;AAEvB,SAAO,EAAE,EAFc;AAGvB,mBAAiB,EAHM;AAIvB,MAAI,EAAE,EAJiB;AAKvB,OAAK,EAAE,EALgB;AAMvB,MAAI,EAAE,EANiB;AAOvB,YAAU,EAAE;AAPW,CAApB;AAUP;;;;;AAKG;;AACI,IAAM,UAAU,GAAG;AACtB,QAAM,EAAE,CADc;AAEtB,SAAO,EAAE,CAFa;AAGtB,mBAAiB,CAHK;AAItB,MAAI,EAAE,CAJgB;AAKtB,OAAK,EAAE,CALe;AAMtB,MAAI,EAAE,CANgB;AAOtB,YAAU,EAAE;AAPU,CAAnB;AAUP;;;;;AAKG;;AACI,IAAM,UAAU,GAAG;AACtB,QAAM,EAAE,GADc;AAEtB,SAAO,EAAE,GAFa;AAGtB,mBAAiB,GAHK;AAItB,MAAI,EAAE,GAJgB;AAKtB,OAAK,EAAE,GALe;AAMtB,MAAI,EAAE,GANgB;AAOtB,YAAU,EAAE;AAPU,CAAnB;AAUP;;;;;;;;;;;;AAYG;;AACG,MAAO,IAAP,SAAoB,gDAApB,CAAsC;AAUxC,cAAY,IAAZ,EAA2B,eAAuB,CAAlD,EAAmD;AAC/C;AARJ,gBAAe,SAAf;AACA,gBAAe,SAAf;AACA,gBAAe,CAAf;AAEA,sBAAqB,WAAW,CAAC,MAAjC;AACA,kCAAiC,CAAjC;AAII,SAAK,cAAL,GAAsB,CAAtB;;AAEA,QAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,UAAI,GAAG,IAAI,CAAC,WAAL,EAAP;AACA,WAAK,IAAL,GAAY,IAAZ;AACA,WAAK,UAAL,GAAkB,WAAW,CAAC,IAAD,CAA7B;AACA,WAAK,IAAL,GAAY,UAAU,CAAC,IAAD,CAAtB;AACA,WAAK,IAAL,GAAY,UAAU,CAAC,IAAD,CAAV,IAAoB,CAAhC;AACA,WAAK,sBAAL,GACM,WAAW,CAAC,MAAZ,GAAqB,KAAK,UADhC;AAEH;;AAED,SAAK,YAAL,GAAoB,YAApB;AACA,SAAK,UAAL,IAAmB,IAAI,YAAvB;AACA,SAAK,sBAAL,IAA+B,IAAI,YAAnC;AACH;;AA1BmB,aAAT,SAAS;AAAK,WAAO,mBAAP;AAA6B;;AA4BtD,YAAU;AACN,WAAO,EAAP;AACH;AAED;;;;;;AAMG;;;AACH,sBAAoB,CAAC,CAAD,EAAe;AAC/B,QAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,aAAO,CAAC,GAAR,CAAY,gCAAZ,EAA8C,KAAK,IAAnD,EAAyD,IAAzD;AACA,aAAO,CAAP,CAF+B,CAErB;AACb;;AACD,QAAM,oBAAoB,GAAG,KAAK,sBAAlC;AACA,QAAM,SAAS,GAAG,IAAI,yCAAJ,CAAgB,CAAC,CAAC,IAAlB,CAAlB;AACA,aAAS,CAAC,MAAV,GAAmB,CAAC,CAAC,MAArB;AACA,aAAS,CAAC,eAAV,IAA6B,oBAA7B;AACA,aAAS,CAAC,UAAV,GAAuB,CAAC,CAAC,UAAzB;AACA,WAAO,SAAP;AACH;;AAED,4BAA0B,CACtB,SADsB,EAEtB;AACI,iBAAa,GAAC,IADlB;AAEI,oBAAgB,GAAC;AAFrB,MAMI,EARkB,EAQhB;AAEN,QAAI,aAAJ;;AACA,QAAI,EAAE,SAAS,YAAY,KAAvB,CAAJ,EAAmC;AAC/B,mBAAa,GAAG,CAAC,SAAD,CAAhB;AACH,KAFD,MAEO;AACH,mBAAa,GAAG,SAAhB;AACH;;AAED,QAAI,CAAC,aAAa,CAAC,MAAnB,EAA2B;AACvB,YAAM,IAAI,KAAJ,CAAU,6DAAV,CAAN;AACH;;AAED,QAAI,eAAe,GAAkB,EAArC;;AACA,QAAI,gBAAJ,EAAsB;AAClB,mBAAa,CAAC,IAAd,CAAmB,CAAC,CAAD,EAAI,CAAJ,KAAU,CAAC,CAAC,eAAF,GAAoB,CAAC,CAAC,eAAnD;AACA,UAAM,QAAQ,GAAG,aAAa,CAAC,CAAD,CAA9B;AACA,UAAM,QAAQ,GAAG,aAAa,CAAC,aAAa,CAAC,MAAd,GAAuB,CAAxB,CAA9B;AACA,qBAAe,GAAG,CAAC,QAAD,EAAW,QAAX,CAAlB;AACH,KALD,MAKO,IAAI,aAAJ,EAAmB;AACtB,qBAAe,GAAG,CAAC,aAAa,CAAC,CAAD,CAAd,EAAmB,aAAa,CAAC,aAAa,CAAC,MAAd,GAAuB,CAAxB,CAAhC,CAAlB;AACH,KAFM,MAEA;AACH,qBAAe,GAAG,aAAlB;AACH;;AAED,QAAI,aAAa,GAAG,CAApB;AACA,QAAM,OAAO,GAAG,KAAK,UAAL,GAAkB,CAAlC;;AACA,SAAK,IAAM,CAAX,IAAgB,eAAhB,EAAiC;AAC7B,mBAAa,IAAI,CAAC,CAAC,eAAF,GAAoB,OAArC;AACH;;AAED,QAAI,aAAa,IAAI,CAArB,EAAwB;AACpB,aAAO,MAAP;AACH,KAFD,MAEO;AACH,aAAO,IAAP;AACH;AACJ;;AAjGuC;AAoG5C;;;;;;AAMG;;AACG,MAAO,UAAP,SAA0B,IAA1B,CAA8B;AACZ,aAAT,SAAS;AAAK,WAAO,yBAAP;AAAmC;;AAE5D;AACI,UAAM,QAAN;AACA,SAAK,IAAL,GAAY,GAAZ;AACA,SAAK,IAAL,GAAY,CAAZ;AACH;;AAP+B;AAUpC;;;;;;;;AAQG;;AACG,MAAO,aAAP,SAA6B,IAA7B,CAAiC;AACf,aAAT,SAAS;AAAK,WAAO,4BAAP;AAAsC;;AAE/D;AACI,UAAM,QAAN,EAAgB,CAAC,CAAjB;AACH;;AALkC;AAQvC;;;;;;AAMG;;AACG,MAAO,aAAP,SAA6B,IAA7B,CAAiC;AACf,aAAT,SAAS;AAAK,WAAO,4BAAP;AAAsC;;AAE/D;AACI,UAAM,QAAN,EAAgB,CAAhB;AACH;;AALkC;AAQvC;;;;;;AAMG;;AACG,MAAO,QAAP,SAAwB,IAAxB,CAA4B;AACV,aAAT,SAAS;AAAK,WAAO,uBAAP;AAAiC;;AAE1D;AACI,UAAM,MAAN;AACA,SAAK,IAAL,GAAY,GAAZ;AACA,SAAK,IAAL,GAAY,CAAZ;AACH;;AAP6B;AAUlC;;;;;;AAMG;;AACG,MAAO,WAAP,SAA2B,IAA3B,CAA+B;AACb,aAAT,SAAS;AAAK,WAAO,0BAAP;AAAoC;;AAE7D;AACI,UAAM,MAAN,EAAc,CAAC,CAAf;AACA,SAAK,IAAL,GAAY,GAAZ;AACA,SAAK,IAAL,GAAY,CAAZ;AACH;;AAPgC;AAUrC;;;;;;AAMG;;AACG,MAAO,QAAP,SAAwB,IAAxB,CAA4B;AACV,aAAT,SAAS;AAAK,WAAO,uBAAP;AAAiC;;AAE1D;AACI,UAAM,MAAN;AACA,SAAK,IAAL,GAAY,GAAZ;AACA,SAAK,IAAL,GAAY,CAAZ;AACH;;AAP6B;AAUlC;;;;;;AAMG;;AACG,MAAO,SAAP,SAAyB,IAAzB,CAA6B;AACX,aAAT,SAAS;AAAK,WAAO,wBAAP;AAAkC;;AAE3D;AACI,UAAM,OAAN;AACA,SAAK,IAAL,GAAY,GAAZ;AACA,SAAK,IAAL,GAAY,CAAZ;AACH;;AAP8B;AAUnC;;;;;;AAMG;;AACG,MAAO,WAAP,SAA2B,IAA3B,CAA+B;AACb,aAAT,SAAS;AAAK,WAAO,0BAAP;AAAoC;;AAE7D;AACI,UAAM,SAAN;AACA,SAAK,IAAL,GAAY,GAAZ;AACA,SAAK,IAAL,GAAY,CAAZ;AACH;;AAPgC;AAUrC;;;;;;AAMG;;AACG,MAAO,gBAAP,SAAgC,IAAhC,CAAoC;AAClB,aAAT,SAAS;AAAK,WAAO,+BAAP;AAAyC;;AAElE;AACI,UAAM,eAAN;AACA,SAAK,IAAL,GAAY,GAAZ;AACA,SAAK,IAAL,GAAY,CAAZ;AACH;;AAPqC;AAU1C;;;;;;;;AAQG;;AACG,MAAO,cAAP,SAA8B,IAA9B,CAAkC;AAChB,aAAT,SAAS;AAAK,WAAO,6BAAP;AAAuC;;AAEhE;AACI,UAAM,YAAN;AACA,SAAK,IAAL,GAAY,YAAZ;AACA,SAAK,IAAL,GAAY,CAAZ;AACH;;AAPmC;AAUjC,IAAM,SAAS,GAAG;AACrB,YADqB;AAErB,eAFqB;AAGrB,eAHqB;AAIrB,UAJqB;AAKrB,aALqB;AAMrB,UANqB;AAOrB,WAPqB;AAQrB,aARqB;AASrB,kBATqB;AAUrB;AAVqB,CAAlB;AAaP;;;;AAIG;;AACG,SAAU,QAAV,CAAmB,EAAnB,EAA+B;AAAE,SAAO,GAAC;AAAV,IAAiB,EAAhD,EAAkD;AACpD;AACA,MAAI,MAAJ;;AACA,MAAI,OAAJ,EAAa;AACT,UAAM,GAAG,EAAE,CAAC,IAAZ;AACH,GAFD,MAEO;AACH,UAAM,GAAG,EAAT;AACH;;AACD,MAAI,UAAU,GAAG,CAAjB;AACA,MAAI,UAAU,GAAG,GAAjB;;AACA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,MAAM,CAAC,MAA3B,EAAmC,CAAC,EAApC,EAAwC;AACpC,QAAM,EAAE,GAAG,MAAM,CAAC,GAAP,CAAW,CAAX,CAAX;;AACA,QAAI,EAAE,CAAC,KAAH,KAAa,SAAjB,EAA4B;AACxB,gBAAU,IAAI,CAAd;AACA,gBAAU,IAAI,EAAE,CAAC,KAAH,CAAS,eAAvB;AACH,KAHD,MAGO,IAAI,EAAE,CAAC,OAAH,KAAe,SAAnB,EAA8B;AACjC,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,EAAE,CAAC,OAAH,CAAW,MAA/B,EAAuC,CAAC,EAAxC,EAA4C;AACxC,kBAAU,IAAI,CAAd;AACA,kBAAU,IAAI,EAAE,CAAC,OAAH,CAAW,CAAX,EAAc,eAA5B;AACH;AACJ;AACJ;;AACD,MAAI,aAAJ;;AACA,MAAI,UAAU,KAAK,CAAnB,EAAsB;AAClB,iBAAa,GAAG,EAAhB;AACH,GAFD,MAEO;AACH,iBAAa,GAAG,UAAU,GAAG,UAA7B;AACH,GA3BmD,CA4BpD;;;AACA,MAAI,aAAa,GAAG,EAApB,EAAwB;AACpB;AACA,WAAO,IAAI,UAAJ,EAAP;AACH,GAHD,MAGO;AACH,WAAO,IAAI,QAAJ,EAAP;AACH;AACJ;AAED;;;;;AAKG;;AACG,SAAU,cAAV,CAAyB,UAAzB,EAAqC,WAAW,GAAC,CAAjD,EAAkD;AACpD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAX,EAAd;AACA,MAAI,QAAJ;AACA,MAAI,OAAJ;;AACA,MAAI,KAAK,CAAC,WAAN,OAAwB,YAA5B,EAA0C;AACtC,WAAO,IAAI,cAAJ,EAAP;AACH,GANmD,CAMlD;;;AAEF,MAAI,KAAK,CAAC,MAAN,KAAiB,CAArB,EAAwB;AACpB,YAAQ,GAAG,KAAK,CAAC,CAAD,CAAL,CAAS,WAAT,EAAX;AACA,WAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAD,CAAN,CAAlB;AACH,GAHD,MAGO,IAAI,KAAK,CAAC,MAAN,KAAiB,CAArB,EAAwB;AAC3B,YAAQ,GAAG,KAAK,CAAC,CAAD,CAAL,CAAS,WAAT,EAAX;;AACA,QAAI,QAAQ,KAAK,GAAjB,EAAsB;AAClB,aAAO,GAAG,CAAV;AACH,KAFD,MAEO,IAAI,QAAQ,KAAK,GAAjB,EAAsB;AACzB,aAAO,GAAG,CAAV;AACH,KAFM,MAEA,IAAI,QAAQ,KAAK,GAAjB,EAAsB;AACzB,aAAO,GAAG,CAAV;AACH,KAFM,MAEA;AACH,aAAO,GAAG,CAAV;AACH;AACJ,GAXM,MAWA,IAAI,KAAK,CAAC,MAAN,GAAe,CAAnB,EAAsB;AACzB;AACA,QAAM,WAAW,GAAG,KAAK,CAAC,WAAN,EAApB;;AACA,SAAK,IAAM,OAAX,IAAsB,MAAM,CAAC,IAAP,CAAY,SAAZ,CAAtB,EAA8C;AAC1C,UAAM,SAAS,GAAG,OAAO,CAAC,WAAR,EAAlB;AACA,UAAM,cAAc,GAAG,SAAS,CAAC,OAAD,CAAhC;;AACA,UAAI,OAAO,cAAP,KAA0B,UAA9B,EAA0C;AACtC;AACH;;AACD,UAAI,SAAS,KAAK,WAAd,IAA6B,SAAS,KAAK,WAAW,GAAG,MAA7D,EAAqE;AACjE;AACH;;AACD,aAAO,IAAI,cAAJ,EAAP;AACH;AACJ;;AAED,MAAM,UAAU,GAAG,CAAC,CAAD,EAAI,CAAJ,KAAU,CAAC,CAAC,MAAF,KAAa,CAAC,CAAC,MAAf,IAAyB,CAAC,CAAC,KAAF,CAAQ,CAAC,EAAD,EAAK,EAAL,KAAY,EAAE,KAAK,CAAC,CAAC,EAAD,CAA5B,CAAtD;;AAEA,MAAM,MAAM,GAAG,CAAC,QAAD,EAAW,OAAX,EAAoB,WAApB,CAAf;;AACA,MAAI,UAAU,CAAC,MAAD,EAAS,CAAC,GAAD,EAAM,CAAN,EAAS,CAAT,CAAT,CAAd,EAAqC;AACjC,WAAO,IAAI,UAAJ,EAAP;AACH,GAFD,MAEO,IAAI,UAAU,CAAC,MAAD,EAAS,CAAC,GAAD,EAAM,CAAN,EAAS,CAAC,CAAV,CAAT,CAAd,EAAsC;AACzC,WAAO,IAAI,aAAJ,EAAP;AACH,GAFM,MAEA,IAAI,UAAU,CAAC,MAAD,EAAS,CAAC,GAAD,EAAM,CAAN,EAAS,CAAT,CAAT,CAAd,EAAqC;AACxC,WAAO,IAAI,aAAJ,EAAP;AACH,GAFM,MAEA,IAAI,UAAU,CAAC,MAAD,EAAS,CAAC,GAAD,EAAM,CAAN,EAAS,CAAT,CAAT,CAAd,EAAqC;AACxC,WAAO,IAAI,QAAJ,EAAP;AACH,GAFM,MAEA,IAAI,UAAU,CAAC,MAAD,EAAS,CAAC,GAAD,EAAM,CAAN,EAAS,CAAC,CAAV,CAAT,CAAd,EAAsC;AACzC,WAAO,IAAI,WAAJ,EAAP;AACH,GAFM,MAEA,IAAI,UAAU,CAAC,MAAD,EAAS,CAAC,GAAD,EAAM,CAAN,EAAS,CAAT,CAAT,CAAd,EAAqC;AACxC,WAAO,IAAI,QAAJ,EAAP;AACH,GAFM,MAEA,IAAI,UAAU,CAAC,MAAD,EAAS,CAAC,GAAD,EAAM,CAAN,EAAS,CAAT,CAAT,CAAd,EAAqC;AACxC,WAAO,IAAI,SAAJ,EAAP;AACH,GAFM,MAEA;AACH,WAAO,IAAI,IAAJ,CAAS,KAAT,EAAgB,WAAhB,CAAP;AACH;AACJ,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5dD;;;;;;AAMG;;AAEH;;;;;;;;;;AAUG;AACG,SAAU,KAAV,CAAgB,WAAhB,EAA6B,MAA7B,EAAmC;AACrC,MAAI,MAAM,KAAK,SAAX,IAAwB,MAAM,KAAK,IAAvC,EAA6C;AACzC,WAAO,WAAP;AACH;;AACD,OAAK,IAAM,CAAX,IAAgB,MAAhB,EAAwB;AACpB,QAAI,CAAC,GAAG,cAAH,CAAkB,IAAlB,CAAuB,MAAvB,EAA+B,CAA/B,CAAL,EAAwC;AACpC;AACH;;AACD,QAAI;AACA;AACA,UAAI,MAAM,CAAC,CAAD,CAAN,IAAa,MAAM,CAAC,CAAD,CAAN,CAAU,WAAV,KAA0B,MAA3C,EAAmD;AAC/C,mBAAW,CAAC,CAAD,CAAX,GAAiB,KAAK,CAAC,WAAW,CAAC,CAAD,CAAZ,EAAiB,MAAM,CAAC,CAAD,CAAvB,CAAtB;AACH,OAFD,MAEO;AACH,mBAAW,CAAC,CAAD,CAAX,GAAiB,MAAM,CAAC,CAAD,CAAvB;AACH;AACJ,KAPD,CAOE,OAAO,CAAP,EAAU;AACR;AACA,iBAAW,CAAC,CAAD,CAAX,GAAiB,MAAM,CAAC,CAAD,CAAvB;AACH;AACJ;;AACD,SAAO,WAAP;AACH;AAEK,SAAU,KAAV,CAAgB,KAAhB,EAAuB,IAAvB,EAA6B,IAA7B,EAAiC;AACnC,MAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,QAAI,GAAG,CAAP;AACH;;AACD,MAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,QAAI,GAAG,KAAP;AACA,SAAK,GAAG,CAAR;AACH;;AAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAL,CAAU,CAAC,IAAI,GAAG,KAAR,IAAiB,IAA3B,CAAd;AACA,SAAO,KAAK,CAAC,KAAN,CAAY,CAAZ,EAAe,KAAK,CAAC,KAAD,CAApB,EAA6B,GAA7B,CAAiC,CAAC,CAAD,EAAI,CAAJ,KAAU,CAAC,GAAG,IAAJ,GAAW,KAAtD,CAAP;AACH;AAED;;;;AAIG;;AACG,SAAU,KAAV,CAAgB,WAAhB,EAA6B,iBAA7B,EAA8C;AAChD,MAAI,KAAK,GAAG,MAAM,CAAC,cAAP,CAAsB,WAAtB,CAAZ;AACA,MAAM,UAAU,GAAG,MAAM,CAAC,cAAP,CAAsB,iBAAtB,CAAnB;;AAEA,SAAO,KAAP,EAAc;AACV,SAAK,IAAM,GAAX,IAAkB,MAAM,CAAC,IAAP,CAAY,KAAZ,CAAlB,EAAsC;AAClC,UAAI,CAAC,GAAG,cAAH,CAAkB,IAAlB,CAAuB,KAAvB,EAA8B,GAA9B,CAAL,EAAyC;AACrC;AACH;;AACD,UAAI,EAAE,GAAG,IAAI,UAAT,CAAJ,EAA0B;AACtB,kBAAU,CAAC,GAAD,CAAV,GAAkB,KAAK,CAAC,GAAD,CAAvB;AACH;AACJ;;AACD,SAAK,GAAG,MAAM,CAAC,cAAP,CAAsB,KAAtB,CAAR;AACH;AACJ;AAED;;;;;AAKG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;;;;;;AAMG;;AAEG,SAAU,MAAV,CAAiB,CAAjB,EAAoB,CAApB,EAAqB;AACvB,MAAI,CAAC,KAAK,SAAN,IAAmB,CAAC,KAAK,SAA7B,EAAwC;AACpC,UAAM,IAAI,KAAJ,CAAU,0BAAV,CAAN;AACH;;AACD,SAAO,CAAC,CAAC,GAAG,CAAJ,GAAQ,CAAT,IAAc,CAArB;AACH;AAED;;;;;;;;;;;AAWG;;AACG,SAAU,eAAV,CAA0B,CAA1B,EAA2B;AAC7B,MAAI,CAAC,CAAC,MAAF,KAAa,CAAjB,EAAoB;AAChB,WAAO,IAAP;AACH;;AACD,MAAM,OAAO,GAAG,EAAhB;AACA,MAAI,KAAK,GAAG,CAAC,CAAC,CAAD,CAAb;AACA,MAAI,QAAQ,GAAG,CAAf;;AACA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,CAAC,CAAC,MAAtB,EAA8B,CAAC,EAA/B,EAAmC;AAC/B,QAAM,EAAE,GAAG,CAAC,CAAC,CAAD,CAAZ;;AACA,QAAI,OAAO,CAAC,EAAD,CAAP,IAAe,IAAnB,EAAyB;AACrB,aAAO,CAAC,EAAD,CAAP,GAAc,CAAd;AACH;;AACD,WAAO,CAAC,EAAD,CAAP,IAAe,CAAf;;AACA,QAAI,OAAO,CAAC,EAAD,CAAP,GAAc,QAAlB,EAA4B;AACxB,WAAK,GAAG,EAAR;AACA,cAAQ,GAAG,OAAO,CAAC,EAAD,CAAlB;AACH;AACJ;;AACD,SAAO,KAAP;AACH;AAED;;;;;AAKG;;AAEG,SAAU,SAAV,CAAoB,GAApB,EAAuB;AACzB,MAAM,UAAU,GAAG,GAAG,CAAC,WAAJ,EAAnB;AACA,MAAM,iBAAiB,GAAG,CAAC,CAAD,EAAI,EAAJ,EAAQ,GAAR,CAA1B;AACA,MAAM,IAAI,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,EAA0B,GAA1B,EAA+B,GAA/B,CAAb;AACA,MAAM,IAAI,GAAG,CAAC,IAAD,EAAO,GAAP,EAAY,GAAZ,EAAiB,EAAjB,EAAqB,EAArB,EAAyB,CAAzB,EAA4B,CAA5B,CAAb;AACA,MAAM,MAAM,GAAG,EAAf;;AACA,OAAK,IAAM,CAAX,IAAgB,UAAhB,EAA4B;AACxB,QAAI,CAAC,IAAI,CAAC,QAAL,CAAc,CAAd,CAAL,EAAuB;AACnB,YAAM,IAAI,KAAJ,CACF,yCAAyC,UADvC,CAAN;AAGH;AACJ;;AACD,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,UAAU,CAAC,MAA/B,EAAuC,CAAC,EAAxC,EAA4C;AACxC,QAAM,EAAC,GAAG,UAAU,CAAC,CAAD,CAApB;AACA,QAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAL,CAAa,EAAb,CAAD,CAAhB;;AACA,QAAI,CAAC,GAAG,UAAU,CAAC,MAAX,GAAoB,CAA5B,EAA+B;AAC3B,UAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAL,CAAa,UAAU,CAAC,CAAC,GAAG,CAAL,CAAvB,CAAD,CAAtB;;AACA,UAAI,SAAS,GAAG,KAAZ,IAAqB,iBAAiB,CAAC,QAAlB,CAA2B,KAA3B,CAAzB,EAA4D;AACxD,aAAK,IAAI,CAAC,CAAV;AACH;AACJ;;AACD,UAAM,CAAC,IAAP,CAAY,KAAZ;AACH;;AACD,MAAI,SAAS,GAAG,CAAhB;;AACA,OAAK,IAAM,CAAX,IAAgB,MAAhB,EAAwB;AACpB,aAAS,IAAI,CAAb;AACH;;AACD,SAAO,SAAP;AACH;AAED;;;;;AAKG;;AAEG,SAAU,OAAV,CAAkB,GAAlB,EAAqB;AACvB,MAAI,OAAO,GAAP,KAAe,QAAnB,EAA6B;AACzB,UAAM,IAAI,KAAJ,CAAU,2BAA2B,OAAO,GAA5C,CAAN;AACH;;AACD,MAAI,GAAG,GAAG,CAAN,IAAW,GAAG,GAAG,IAArB,EAA2B;AACvB,UAAM,IAAI,KAAJ,CAAU,qCAAV,CAAN;AACH;;AACD,MAAM,IAAI,GAAG,CAAC,IAAD,EAAO,GAAP,EAAY,GAAZ,EAAiB,GAAjB,EAAsB,GAAtB,EAA2B,EAA3B,EAA+B,EAA/B,EAAmC,EAAnC,EAAuC,EAAvC,EAA2C,CAA3C,EAA8C,CAA9C,EAAiD,CAAjD,EAAoD,CAApD,CAAb;AACA,MAAM,IAAI,GAAG,CACT,GADS,EAET,IAFS,EAGT,GAHS,EAIT,IAJS,EAKT,GALS,EAMT,IANS,EAOT,GAPS,EAQT,IARS,EAST,GATS,EAUT,IAVS,EAWT,GAXS,EAYT,IAZS,EAaT,GAbS,CAAb;AAeA,MAAI,MAAM,GAAG,EAAb;;AACA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,IAAI,CAAC,MAAzB,EAAiC,CAAC,EAAlC,EAAsC;AAClC,QAAM,KAAK,GAAG,IAAI,CAAC,KAAL,CAAW,GAAG,GAAG,IAAI,CAAC,CAAD,CAArB,CAAd;AACA,UAAM,IAAI,IAAI,CAAC,CAAD,CAAJ,CAAQ,MAAR,CAAe,KAAf,CAAV;AACA,OAAG,IAAI,IAAI,CAAC,CAAD,CAAJ,GAAU,KAAjB;AACH;;AACD,SAAO,MAAP;AACH;AAED;;;;;;;;AAQG;;AACG,SAAU,YAAV,CAAuB,GAAG,GAAC,KAA3B,EAAkC,KAAK,GAAC,EAAxC,EAA0C;AAC5C;AACA;AACA,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAT,CAAyB,4BAAzB,EAAuD,GAAvD,CAAX;;AACA,OAAK,IAAM,CAAX,IAAgB,KAAhB,EAAuB;AACnB,QAAI,CAAC,GAAG,cAAH,CAAkB,IAAlB,CAAuB,KAAvB,EAA8B,CAA9B,CAAL,EAAuC;AACnC;AACH;;AACD,MAAE,CAAC,YAAH,CAAgB,CAAhB,EAAmB,KAAK,CAAC,CAAD,CAAxB;AACH;;AACD,SAAO,EAAP;AACH;AAED;;;;;;;;AAQG;;AACG,SAAU,mBAAV,CAA8B,KAA9B,EAA6C,SAAkB,KAA/D,EAAoE;AACtE,MAAI,IAAJ;AACA,MAAM,eAAe,GAAG,KAAK,GAAG,GAAhC;;AACA,MACI,eAAe,KAAK,EAApB,IACG,eAAe,KAAK,EADvB,IAEG,eAAe,KAAK,EAH3B,EAIE;AACE,QAAI,GAAG,IAAP;AACH,GAND,MAMO;AACH,QAAM,QAAQ,GAAG,KAAK,GAAG,EAAzB;;AACA,QAAI,QAAQ,KAAK,CAAjB,EAAoB;AAChB,UAAI,GAAG,IAAP;AACH,KAFD,MAEO,IAAI,QAAQ,KAAK,CAAjB,EAAoB;AACvB,UAAI,GAAG,IAAP;AACH,KAFM,MAEA,IAAI,QAAQ,KAAK,CAAjB,EAAoB;AACvB,UAAI,GAAG,IAAP;AACH,KAFM,MAEA;AACH,UAAI,GAAG,IAAP;AACH;AACJ;;AACD,MAAI,IAAI,KAAK,IAAT,IAAiB,MAArB,EAA6B;AACzB,QAAI,IAAI,GAAR;AACH;;AACD,SAAO,IAAP;AACH;AAED;;;;;;;;AAQG;;AACG,SAAU,WAAV,CAAsB,EAAtB,EAAkC,OAAO,GAAC,KAA1C,EAAiD,cAAc,GAAC,EAAhE,EAAkE;AACpE,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,cAApB,EAAoC,CAAC,EAArC,EAAyC;AACrC,QAAI,IAAI,CAAC,GAAL,CAAS,EAAE,GAAG,CAAL,GAAS,IAAI,CAAC,KAAL,CAAW,EAAE,GAAG,CAAhB,CAAlB,IAAwC,OAA5C,EAAqD;AACjD,UAAM,SAAS,GAAG,IAAI,CAAC,KAAL,CAAW,EAAE,GAAG,CAAhB,CAAlB;AACA,UAAM,WAAW,GAAG,CAApB;AACA,aAAO;AAAE,iBAAF;AAAa;AAAb,OAAP;AACH;AACJ;;AACD,SAAO,SAAP;AACH;AAED;;;;;;;;;AASG;;AACG,SAAU,OAAV,CAAkB,GAAlB,EAAqB;AACvB,MAAI,OAAO,GAAP,KAAe,QAAnB,EAA6B;AACzB,QAAM,OAAO,GAAG,GAAG,CAAC,OAAJ,CAAY,IAAZ,CAAhB;AACA,OAAG,GAAG,GAAG,CAAC,KAAJ,CAAU,CAAV,EAAa,OAAb,CAAN;AACA,WAAO,QAAQ,CAAC,GAAD,CAAf;AACH,GAJD,MAIO;AACH,WAAO,GAAP;AACH;AACJ;AAED;;;;;;AAMG;;AACG,SAAU,QAAV,CAAmB,IAAnB,EAAuB;AACzB,MAAI,GAAG,IAAI,CAAC,OAAL,CAAa,KAAb,EAAoB,KAApB,EAA2B,OAA3B,CAAmC,MAAnC,EAA2C,KAA3C,CAAP;AACA,MAAM,KAAK,GAAG,IAAI,MAAJ,CAAW,WAAW,IAAX,GAAkB,WAA7B,CAAd;AACA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAN,CAAW,MAAM,CAAC,QAAP,CAAgB,MAA3B,CAAhB;AACA,SAAO,OAAO,IAAI,IAAX,GACD,EADC,GAED,kBAAkB,CAAC,OAAO,CAAC,CAAD,CAAP,CAAW,OAAX,CAAmB,KAAnB,EAA0B,GAA1B,CAAD,CAFxB;AAGH;AAEK,SAAU,WAAV,CAAsB,EAAtB,EAA0B,EAA1B,EAA4B;AAC9B,MAAI,EAAE,CAAC,MAAH,KAAc,EAAE,CAAC,MAArB,EAA6B;AACzB,WAAO,KAAP;AACH;;AACD,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,EAAE,CAAC,MAAvB,EAA+B,CAAC,EAAhC,EAAoC;AAChC,QAAI,EAAE,CAAC,CAAD,CAAF,YAAiB,KAAjB,IAA0B,EAAE,CAAC,CAAD,CAAF,YAAiB,KAA/C,EAAsD;AAClD,UAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAD,CAAH,EAAQ,EAAE,CAAC,CAAD,CAAV,CAAhB,EAAgC;AAC5B,eAAO,KAAP;AACH;AACJ,KAJD,MAIO,IAAI,EAAE,CAAC,CAAD,CAAF,KAAU,EAAE,CAAC,CAAD,CAAhB,EAAqB;AACxB,aAAO,KAAP;AACH;AACJ;;AACD,SAAO,IAAP;AACH;AAED,IAAM,iBAAiB,GAAG;AACtB,OAAK,EAAE;AADe,CAA1B;AAIM,MAAO,gBAAP,CAAuB;AACzB,MAAI;AACA,QAAM,IAAI,GAAG,iBAAiB,CAAC,KAA/B;AACA,qBAAiB,CAAC,KAAlB,IAA2B,CAA3B;AACA,WAAO,IAAP;AACH;;AALwB;AAQtB,IAAM,IAAI,GAAG;AAChB,KAAG,EAAE,MADW;AAEhB,cAAY,EAAE,eAFE;AAGhB,YAAU,EAAE,0BAHI;AAIhB,cAAY,EAAE;AAJE,CAAb;AAOD,SAAU,iBAAV,CAA4B,MAA5B,EAA0C;AAC5C,SAAO,MAAM,CAAC,OAAP,CAAe,cAAf,EAA+B,CAAC,GAAD,EAAM,KAAN,KAAgB,KAAK,CAAC,WAAN,EAA/C,CAAP;AACH;AAEK,SAAU,eAAV,CAA0B,KAA1B,EAAuC;AACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAL,CAAW,KAAX,CAAf;;AACA,MAAI,IAAI,CAAC,GAAL,CAAS,KAAK,GAAG,MAAjB,IAA2B,QAA/B,EAAyC;AACrC,WAAO,MAAP;AACH,GAFD,MAEO;AACH,WAAO,KAAP;AACH;AACJ;AAED;;;;AAIG;;AACI,IAAM,YAAY,GAAG,IAAI,IAAG;AAC/B,MAAI,OAAO,GAAG,EAAd;;AACA,MAAI,IAAI,CAAC,OAAL,CAAa,IAAb,MAAuB,CAA3B,EAA8B;AAC1B,WAAO,GAAG,IAAV,CAD0B,CACV;;AAChB,QAAI,GAAG,IAAI,CAAC,KAAL,CAAW,CAAX,CAAP;AACA,WAAO,CAAC,GAAR,CAAY,YAAZ,EAA0B,OAA1B,EAAmC,QAAnC,EAA6C,IAA7C;AACH,GAJD,MAIO,IAAI,IAAI,CAAC,OAAL,CAAa,KAAb,MAAwB,CAAC,CAA7B,EAAgC;AAAE;AACrC,QAAM,UAAU,GAAG,IAAI,CAAC,OAAL,CAAa,KAAb,CAAnB;AACA,WAAO,GAAG,IAAI,CAAC,KAAL,CAAW,CAAX,EAAc,UAAU,GAAG,CAA3B,CAAV;AACA,QAAI,GAAG,IAAI,CAAC,KAAL,CAAW,UAAU,GAAG,CAAxB,CAAP;AACA,WAAO,CAAC,GAAR,CAAY,kBAAZ,EAAgC,OAAhC,EAAyC,IAAzC;AACH;;AACD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAL,CAAW,GAAX,CAAX;AACA,MAAM,QAAQ,GAAI,IAAI,CAAC,KAAL,CAAW,IAAI,CAAC,MAAL,GAAc,CAAzB,EAA4B,IAAI,CAAC,MAAjC,MAA6C,GAA/D;AACA,MAAM,IAAI,GAAG,EAAb;;AACA,OAAK,IAAM,EAAX,IAAiB,EAAjB,EAAqB;AACjB,QAAI,EAAE,KAAK,IAAX,EAAiB;AACb,UAAI,IAAI,CAAC,MAAL,GAAc,CAAlB,EAAqB;AACjB,YAAI,IAAI,CAAC,IAAI,CAAC,MAAL,GAAc,CAAf,CAAJ,KAA0B,IAA9B,EAAoC;AAChC,cAAI,CAAC,GAAL;AACH,SAFD,MAEO;AACH,cAAI,CAAC,IAAL,CAAU,IAAV;AACH;AACJ,OAND,MAMO;AACH,YAAI,CAAC,IAAL,CAAU,IAAV;AACH;AACJ,KAVD,MAUO;AACH,UAAI,CAAC,IAAL,CAAU,EAAV;AACH;AACJ;;AACD,MAAI,IAAI,GAAG,IAAI,CAAC,IAAL,CAAU,GAAV,CAAX;;AACA,MAAI,QAAJ,EAAc;AACV,QAAI,IAAI,GAAR;AACH;;AACD,MAAI,GAAG,OAAO,GAAG,IAAjB;AACA,SAAO,IAAP;AACH,CApCM;AAsCD,SAAU,OAAV,CAAkB,GAAlB,EAAqB;AACvB,SAAO,MAAM,CAAC,GAAD,CAAN,KAAgB,GAAhB,IAAuB,GAAG,GAAG,CAAN,KAAY,CAA1C;AACH,C,CAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,I;;;;;;;;;;;;;;;;AC1dA;AAEM,SAAU,KAAV,CAAgB,GAAhB,EAA2B;AAC7B,MAAM,EAAE,GAAG,IAAI,2DAAJ,EAAX;AACA,SAAO,EAAE,CAAC,aAAH,CAAiB,GAAjB,CAAP;AACH,C;;;;;;;;;;;;;;;ACLM,IAAM,KAAK,GAAY,KAAvB,C;;;;;;;;;;;;;;;;ACED,MAAO,UAAP,CAAiB;AAKnB,cAAY,MAAZ,EAAiC;AAC7B,SAAK,MAAL,GAAc,MAAd;AACH;;AAED,OAAK;AACD,QAAM,QAAQ,GAAG,IAAI,UAAJ,CAAe,KAAK,MAApB,CAAjB;AACA,YAAQ,CAAC,MAAT,GAAkB,KAAK,MAAvB;AACA,YAAQ,CAAC,MAAT,GAAkB,KAAK,MAAvB;AACA,WAAO,QAAP;AACH;;AAEM,GAAL,KAAK;AACH,QAAI,MAAM,GAAG,KAAK,MAAlB;;AACA,WAAO,MAAM,KAAK,SAAlB,EAA6B;AACzB,YAAM,MAAN;AACA,YAAM,GAAG,MAAM,CAAC,UAAP,CAAkB,MAA3B;AACH;AACJ;;AAED,gBAAc;AACV,QAAM,eAAe,GAAG,KAAK,CAAC,IAAN,CAAW,KAAK,KAAL,EAAX,CAAxB;;AACA,QAAI,eAAe,CAAC,MAApB,EAA4B;AACxB,aAAO,eAAe,CAAC,eAAe,CAAC,MAAhB,GAAyB,CAA1B,CAAtB;AACH,KAFD,MAEO;AACH,aAAO,SAAP;AACH;AACJ;;AA/BkB;AAmCvB,iEAAe,UAAf,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrCA;;;;;;;;;;;;;;;;;;;AAmBG;AACH;AAEA;AACA;AACA;AAEA;;;;;AAKG;;AACI,IAAM,eAAe,GAAG;AAC3B,KAAG,OADwB;AAE3B,KAAG,MAFwB;AAG3B,KAAG,SAHwB;AAI3B,KAAG,QAJwB;AAK3B,MAAI,MALuB;AAM3B,MAAI,MANuB;AAO3B,MAAI,MAPuB;AAQ3B,OAAK,OARsB;AAS3B,OAAK,OATsB;AAU3B,OAAK,OAVsB;AAW3B,QAAM,QAXqB;AAY3B,KAAG,MAZwB;AAa3B,SAAO,OAboB;AAc3B,UAAQ,OAdmB;AAe3B,WAAS,QAfkB;AAgB3B,YAAU;AAhBiB,CAAxB;AAmBA,IAAM,gBAAgB,GAAG,CAAzB,C,CAA4B;;AAE5B,IAAM,kBAAkB,GAAG,CAC9B,eAD8B,EAE9B,QAF8B,EAG9B,OAH8B,EAI9B,OAJ8B,EAK9B,OAL8B,EAM9B,MAN8B,EAO9B,SAP8B,EAQ9B,QAR8B,EAS9B,MAT8B,EAU9B,MAV8B,EAW9B,MAX8B,EAY9B,OAZ8B,EAa9B,OAb8B,EAc9B,OAd8B,EAe9B,QAf8B,CAA3B;AAkBA,IAAM,oBAAoB,GAAG,CAChC,SADgC,EAEhC,SAFgC,EAGhC,SAHgC,EAIhC,KAJgC,EAKhC,GALgC,EAMhC,GANgC,EAOhC,GAPgC,EAQhC,GARgC,EAShC,IATgC,EAUhC,IAVgC,EAWhC,IAXgC,EAYhC,KAZgC,EAahC,KAbgC,EAchC,SAdgC,EAehC,SAfgC,CAA7B;AAkBP;;;;;;;AAOG;;AACG,MAAO,QAAP,SAAwB,oDAAxB,CAA8C;AAUhD,cAAY,KAAoB,GAAhC,EAAmC;AAC/B;AATJ,mBAAmB,KAAnB;AACU,0BAAyB,GAAzB;AACA,iBAAgB,CAAhB;AACA,2BAAkB,SAAlB;AACA,iBAAgB,MAAhB;AACA,oBAAqB,EAArB;;AAKN,QAAI,OAAO,EAAP,KAAc,QAAlB,EAA4B;AACxB,WAAK,IAAL,GAAY,EAAZ;AACH,KAFD,MAEO,IAAI,EAAE,KAAK,SAAX,EAAsB;AACzB,WAAK,aAAL,GAAqB,EAArB;AACH;;AACD,SAAK,eAAL,CAAqB,QAArB,GAAgC,KAAK,4BAArC;AACH;;AAjBmB,aAAT,SAAS;AAAK,WAAO,2BAAP;AAAqC;;AAmB9D,YAAU;AACN,WAAO,KAAK,aAAL,CAAmB,QAAnB,EAAP;AACH;AAED;;;;;;;;;;;;AAYG;;;AACK,MAAJ,IAAI;AACJ,WAAO,KAAK,KAAZ;AACH;;AAEO,MAAJ,IAAI,CAAC,OAAD,EAAgB;AACpB,SAAK,KAAL,GAAa,OAAb;AACA,SAAK,oBAAL;AACH;AAED;;;;;;;;;;;;;AAaG;;;AACc,MAAb,aAAa;AACb,WAAO,KAAK,cAAZ;AACH;;AAEgB,MAAb,aAAa,CAAC,EAAD,EAAW;AACxB,QAAI,EAAE,KAAK,SAAX,EAAsB;AAClB,QAAE,GAAG,GAAL;AACH;;AACD,SAAK,cAAL,GAAsB,EAAtB;AACA,SAAK,oBAAL;AACH;AAED;;;;;;;;;;;;;;;AAeG;;;AACK,MAAJ,IAAI;AACJ,WAAO,KAAK,KAAZ;AACH;;AAEO,MAAJ,IAAI,CAAC,MAAD,EAAe;AACnB,QAAM,UAAU,GAAG,kBAAkB,CAAC,OAAnB,CAA2B,MAA3B,CAAnB;;AACA,QAAI,UAAU,KAAK,CAAC,CAApB,EAAuB;AACnB,aAAO,CAAC,GAAR,CAAY,kBAAkB,MAA9B;AACA,YAAM,IAAI,2DAAJ,CAAqB,kBAAkB,MAAvC,CAAN;AACH;;AACD,SAAK,KAAL,GAAa,MAAb;AACA,SAAK,oBAAL;AACH;AAED;;;;;;;;;AASG;;;AACQ,MAAP,OAAO;AACP,WAAO,KAAK,QAAZ;AACH;AAED;;;;;;;;;;;AAWG;;;AACgB,MAAf,eAAe;AACf,QAAM,UAAU,GAAG,kBAAkB,CAAC,OAAnB,CAA2B,KAAK,IAAhC,CAAnB;AACA,QAAI,EAAE,GAAG,oBAAoB,CAAC,UAAD,CAA7B;;AACA,QAAI,KAAK,IAAL,GAAY,CAAhB,EAAmB;AACf,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,IAAzB,EAA+B,CAAC,EAAhC,EAAoC;AAChC,UAAE,IAAI,GAAN,CADgC,CACrB;AACd;AACJ;;AACD,WAAO,EAAP;AACH;;AAED,8BAA4B,CAAC,SAAD,EAAY,GAAZ,EAAiB,GAAjB,EAAsB,IAAtB,EAA4B,IAA5B,EAAgC;AACxD;AACA,QAAM,UAAU,GAAG,EAAnB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,GAAG,CAAC,SAAD,CAAH,CAAe,MAAnC,EAA2C,CAAC,EAA5C,EAAgD;AAC5C,UAAM,SAAS,GAAG,GAAG,CAAC,SAAD,CAAH,CAAe,CAAf,EAAkB,KAAlB,EAAlB,CAD4C,CAE5C;;AACA,gBAAU,CAAC,IAAX,CAAgB,SAAhB;AACH;;AACD,OAAG,CAAC,SAAD,CAAH,GAAiB,UAAjB;AACH;AAED;;;;;AAKG;;;AACH,WAAS,CAAC,EAAD,EAAG;AACR,QAAI,EAAE,KAAK,CAAX,EAAc;AACV,aAAO,CAAP;AACH,KAHO,CAGN;;;AACF,QAAM,UAAU,GAAG,kBAAkB,CAAC,OAAnB,CAA2B,KAAK,KAAhC,CAAnB;AACA,QAAM,UAAU,GAAG,YAAM,gBAAgB,GAAG,UAAzB,CAAnB,CALQ,CAMR;AACA;;AACA,SAAK,IAAI,OAAO,GAAG,CAAnB,EAAsB,OAAO,IAAI,CAAjC,EAAoC,OAAO,EAA3C,EAA+C;AAC3C,UAAM,aAAa,GACb,CAAE,YAAK,OAAL,CAAD,GAAiB,GAAlB,IAAyB,YAAK,OAAL,CAD/B;AAEA,UAAM,kBAAkB,GAAG,IAAI,aAA/B;;AACA,UAAI,IAAI,CAAC,GAAL,CAAS,UAAU,GAAG,kBAAb,GAAkC,EAA3C,IAAiD,MAArD,EAA6D;AACzD,eAAO,OAAP;AACH;AACJ;;AACD,QAAI,yCAAJ,EAAW;AACP,aAAO,CAAC,GAAR,CAAY,6CAAZ,EAA2D,EAA3D;AACH;;AACD,WAAO,CAAP;AACH;;AAED,sBAAoB;AAChB,QAAM,UAAU,GAAG,kBAAkB,CAAC,OAAnB,CAA2B,KAAK,KAAhC,CAAnB,CADgB,CAC2C;;AAC3D,QAAM,qBAAqB,GACvB,YAAM,gBAAgB,GAAG,UAAzB,CADJ;AAGA,QAAM,gBAAgB,GAChB,IAAI,CAAE,YAAK,KAAK,KAAV,CAAD,GAAoB,GAArB,IAA6B,YAAK,KAAK,KAAV,CADvC;AAEA,QAAM,YAAY,GAAG,qBAAqB,GAAG,gBAA7C;AACA,QAAI,iBAAiB,GAAG,YAAxB;;AACA,SAAK,QAAL,CAAc,OAAd,CAAsB,MAAM,IAAG;AAC3B,uBAAiB,IAAI,MAAM,CAAC,gBAAP,EAArB;AACH,KAFD;;AAGA,SAAK,cAAL,GAAsB,iBAAtB;AACH;;AAED,sBAAoB;AAChB,QAAM,EAAE,GAAG,KAAK,cAAhB;AACA,SAAK,QAAL,GAAgB,EAAhB;;AACA,QAAI,EAAE,KAAK,CAAX,EAAc;AACV,WAAK,KAAL,GAAa,MAAb;AACA,WAAK,KAAL,GAAa,CAAb;AACA;AACH;;AACD,QAAM,UAAU,GAAG,IAAI,CAAC,KAAL,CAAW,IAAI,CAAC,GAAL,CAAS,EAAE,GAAG,OAAd,IAAyB,IAAI,CAAC,GAAL,CAAS,CAAT,CAApC,CAAnB;AACA,QAAI,UAAU,GAAG,gBAAgB,GAAG,UAApC;AACA,SAAK,KAAL,GAAa,kBAAkB,CAAC,UAAD,CAA/B,CAVgB,CAWhB;;AACA,SAAK,KAAL,GAAa,KAAK,SAAL,CAAe,EAAf,CAAb;AAEA,QAAM,qBAAqB,GACvB,YAAM,gBAAgB,GAAG,UAAzB,CADJ;AAGA,QAAM,gBAAgB,GAChB,IAAI,CAAC,YAAM,KAAK,KAAX,IAAmB,CAApB,IAAyB,YAAK,KAAK,KAAV,CADnC;AAEA,QAAI,YAAY,GAAG,qBAAqB,GAAG,gBAA3C;;AACA,QAAI,YAAY,KAAK,EAAjB,IAAuB,EAAE,KAAK,CAAlC,EAAqC;AACjC,gBAAU,IAAI,CAAd;AACA,WAAK,KAAL,GAAa,kBAAkB,CAAC,UAAD,CAA/B,CAFiC,CAEY;;AAC7C,kBAAY,IAAI,CAAhB;AACA,UAAM,WAAW,GAAG,EAAE,GAAG,YAAzB;AACA,UAAM,QAAQ,GAAG,iDAAmB,WAAnB,CAAjB;;AACA,UAAI,QAAQ,KAAK,SAAjB,EAA4B,CACxB;AACH,OAFD,MAEO;AACH,YAAM,CAAC,GAAG,IAAI,MAAJ,CACN,QAAQ,CAAC,WADH,EAEN,QAAQ,CAAC,SAFH,EAGN,IAAI,QAAJ,CAAa,YAAb,CAHM,CAAV;AAKA,aAAK,YAAL,CAAkB,CAAlB,EAAqB,IAArB,EANG,CAMyB;AAC/B,OAfgC,CAgBjC;;AACH;AACJ;AAED;;;;;;AAMG;;;AACH,cAAY,CAAC,SAAD,EAAoB,YAAY,GAAC,KAAjC,EAAsC;AAC9C,aAAS,CAAC,MAAV,GAAmB,IAAnB;;AACA,SAAK,QAAL,CAAc,IAAd,CAAmB,SAAnB;;AACA,QAAI,YAAY,KAAK,IAArB,EAA2B;AACvB,WAAK,oBAAL;AACH;;AACD,WAAO,IAAP;AACH;;AAvP+C;AA0PpD;;;;;;;;;;AAUG;;AACG,MAAO,MAAP,SAAsB,oDAAtB,CAA4C;AAa9C,cACI,iBAAiB,GAAC,CADtB,EAEI,iBAAiB,GAAC,CAFtB,EAGI,cAAc,GAAC,SAHnB,EAII,cAAc,GAAC,SAJnB,EAI4B;AAExB;AAbJ,kBAAkB,KAAlB;AAEA,mBAAmB,IAAnB;AACA,qBAAoB,OAApB;AAWI,SAAK,iBAAL,GAAyB,iBAAzB;AACA,SAAK,iBAAL,GAAyB,iBAAzB;AACA,SAAK,cAAL,GAAsB,cAAc,IAAI,IAAI,QAAJ,CAAa,GAAb,CAAxC;;AACA,QAAI,OAAO,KAAK,cAAZ,KAA+B,QAAnC,EAA6C;AACzC,WAAK,cAAL,GAAsB,IAAI,QAAJ,CAAa,KAAK,cAAlB,CAAtB;AACH;;AACD,SAAK,cAAL,GAAsB,cAAc,IAAI,KAAK,cAA7C;AAEA,SAAK,MAAL,GAAc,KAAd;AACA,SAAK,IAAL,GAAY,SAAZ;AACA;;AAEG;;AACH,SAAK,OAAL,GAAe,IAAf;AACA;;AAEG;;AACH,SAAK,SAAL,GAAiB,OAAjB;AAEA;;;;;AAKG;;AACH,SAAK,gBAAL,GAAwB,QAAxB;AACA,SAAK,gBAAL,GAAwB,SAAxB,CA7BwB,CA6BW;AACtC;;AA9CmB,aAAT,SAAS;AAAK,WAAO,yBAAP;AAAmC;AAgD5D;;;;;AAKG;;;AACS,MAAR,QAAQ;AACR;AACA,QAAM,SAAS,GAAG,KAAK,iBAAvB;AACA,QAAM,SAAS,GAAG,KAAK,iBAAvB;;AAEA,QAAI,SAAS,KAAK,CAAd,IAAmB,SAAS,KAAK,CAArC,EAAwC;AACpC,aAAO,SAAP;AACH,KAFD,MAEO,IAAI,SAAS,KAAK,CAAd,KAAoB,SAAS,KAAK,CAAd,IAAmB,SAAS,KAAK,CAArD,CAAJ,EAA6D;AAChE,aAAO,YAAP;AACH,KAFM,MAEA,IAAI,SAAS,KAAK,CAAd,IAAmB,SAAS,KAAK,CAArC,EAAwC;AAC3C,aAAO,WAAP;AACH;;AACD,QAAM,MAAM,GAAG,yDAA2B,SAA3B,EAAsC,IAAtC,CAAf,CAZQ,CAYoD;;AAC5D,WACI,eACE,SAAS,CAAC,QAAV,EADF,GAEE,GAFF,GAGE,SAAS,CAAC,QAAV,EAHF,GAIE,MALN;AAOH;AAED;;;;;AAKG;;;AACH,iBAAe,CAAC,IAAD,EAAK;AAChB,QAAI,KAAK,MAAL,KAAgB,IAApB,EAA0B;AACtB,YAAM,IAAI,2DAAJ,CACF,8DADE,CAAN;AAGH;;AACD,SAAK,cAAL,GAAsB,IAAI,QAAJ,CAAa,IAAb,CAAtB;AACA,SAAK,cAAL,GAAsB,KAAK,cAA3B;AACA,WAAO,KAAK,cAAZ;AACH;AAED;;;;;;AAMG;;;AACH,UAAQ,CAAC,MAAD,EAAS,MAAT,EAAe;AACnB,QAAI,KAAK,MAAL,KAAgB,IAApB,EAA0B;AACtB,YAAM,IAAI,2DAAJ,CACF,8DADE,CAAN;AAGH;;AACD,SAAK,iBAAL,GAAyB,MAAM,IAAI,CAAnC;AACA,SAAK,iBAAL,GAAyB,MAAM,IAAI,CAAnC;AACH;AAED;;;;;AAKG;;;AACH,mBAAiB;AACb,WAAO,KAAK,iBAAL,GAAyB,KAAK,cAAL,CAAoB,aAApD;AACH;AAED;;;;;AAKG;;;AACH,kBAAgB;AACZ,QAAM,YAAY,GAAG,KAAK,cAAL,CAAoB,aAAzC;AACA,WACI,KAAK,iBAAL,MAA4B,KAAK,iBAAL,GAAyB,YAArD,CADJ;AAGH;;AApI6C,C;;;;;;;;;;;;;;;;;;;;ACtWlD;;;;;;;;;;;;;;;;;;;AAmBG;CAGH;;AACO,IAAM,UAAU,GAAG,CACtB,QADsB,EAEtB,OAFsB,EAGtB,MAHsB,EAItB,KAJsB,EAKtB,IALsB,EAMtB,GANsB,EAOtB,IAPsB,EAQtB,IARsB,EAStB,GATsB,EAUtB,IAVsB,EAWtB,IAXsB,EAYtB,IAZsB,EAatB,KAbsB,EActB,MAdsB,EAetB,OAfsB,EAgBtB,QAhBsB,CAAnB,C,CAmBP;;AACO,IAAM,SAAS,GAAG;AACrB,KAAG,EAAE,CAAC,eAAD,CADgB;AAErB,IAAE,EAAE,CAAC,YAAD,CAFiB;AAGrB,GAAC,EAAE,CAAC,OAAD,CAHkB;AAIrB,IAAE,EAAE,CAAC,YAAD,CAJiB;AAKrB,IAAE,EAAE,CAAC,YAAD,CALiB;AAMrB,GAAC,EAAE,CAAC,OAAD,CANkB;AAOrB,IAAE,EAAE,CAAC,YAAD,CAPiB;AAQrB,IAAE,EAAE,CAAC,WAAD,CARiB;AASrB,IAAE,EAAE,CAAC,YAAD,CATiB;AAUrB,KAAG,EAAE,CAAC,eAAD;AAVgB,CAAlB;AAaA,IAAM,YAAY,GAAG;AACxB,KAAG,EAAE,CAAC,gBAAD,CADmB;AAExB,IAAE,EAAE,CAAC,WAAD,CAFoB;AAGxB,GAAC,EAAE,CAAC,MAAD,CAHqB;AAIxB,IAAE,EAAE,CAAC,iBAAD,CAJoB;AAKxB,IAAE,EAAE,CAAC,iBAAD,CALoB;AAMxB,GAAC,EAAE,CAAC,MAAD,CANqB;AAOxB,IAAE,EAAE,CAAC,WAAD,CAPoB;AAQxB,KAAG,EAAE,CAAC,gBAAD;AARmB,CAArB;AAWA,IAAM,kBAAkB,GAAG;AAC9B,MAAI,EAAE,CAAC,GAAD,CADwB;AAE9B,GAAC,EAAE,CAAC,GAAD,CAF2B;AAG9B,MAAI,EAAE,CAAC,GAAD,CAHwB;AAI9B,KAAG,EAAE,CAAC,IAAD,CAJyB;AAK9B,IAAE,EAAE,CAAC,IAAD,CAL0B;AAM9B,GAAC,EAAE,CAAC,IAAD,CAN2B;AAO9B,IAAE,EAAE,CAAC,IAAD,CAP0B;AAQ9B,IAAE,EAAE,CAAC,IAAD,CAR0B;AAS9B,GAAC,EAAE,CAAC,GAAD,CAT2B;AAU9B,IAAE,EAAE,CAAC,IAAD,CAV0B;AAW9B,IAAE,EAAE,CAAC,IAAD,CAX0B;AAY9B,IAAE,EAAE,CAAC,IAAD,CAZ0B;AAa9B,KAAG,EAAE,CAAC,GAAD,CAbyB;AAc9B,MAAI,EAAE,CAAC,IAAD;AAdwB,CAA3B;AAiBP;;;;;;;;;;;AAWG;;AACG,MAAO,OAAP,SAAuB,gDAAvB,CAAyC;AAS3C,cAAY,KAAZ,EAAgC;AAC5B;AACA,SAAK,KAAL,GAAa,KAAb;AACH;;AAXmB,aAAT,SAAS;AAAK,WAAO,0BAAP;AAAoC;;AAapD,MAAL,KAAK;AACL,WAAO,KAAK,MAAZ;AACH;;AAEQ,MAAL,KAAK,CAAC,KAAD,EAAqB;AAC1B,QAAI,OAAO,KAAP,KAAiB,QAArB,EAA+B;AAC3B;AACA,WAAK,aAAL,GAAqB,KAArB;;AACA,UAAI,KAAK,IAAI,CAAb,EAAgB;AACZ,aAAK,MAAL,GAAc,GAAd;AACH,OAFD,MAEO,IAAI,KAAK,GAAG,IAAZ,EAAkB;AACrB,aAAK,MAAL,GAAc,MAAd;AACH,OAFM,MAEA,IAAI,KAAK,GAAG,IAAZ,EAAkB;AACrB,aAAK,MAAL,GAAc,KAAd;AACH,OAFM,MAEA,IAAI,KAAK,GAAG,IAAZ,EAAkB;AACrB,aAAK,MAAL,GAAc,IAAd;AACH,OAFM,MAEA,IAAI,KAAK,GAAG,IAAZ,EAAkB;AACrB,aAAK,MAAL,GAAc,GAAd;AACH,OAFM,MAEA,IAAI,KAAK,GAAG,GAAZ,EAAiB;AACpB,aAAK,MAAL,GAAc,IAAd;AACH,OAFM,MAEA,IAAI,KAAK,GAAG,IAAZ,EAAkB;AACrB,aAAK,MAAL,GAAc,IAAd;AACH,OAFM,MAEA,IAAI,KAAK,GAAG,GAAZ,EAAiB;AACpB,aAAK,MAAL,GAAc,GAAd;AACH,OAFM,MAEA,IAAI,KAAK,GAAG,GAAZ,EAAiB;AACpB,aAAK,MAAL,GAAc,IAAd;AACH,OAFM,MAEA;AACH,aAAK,MAAL,GAAc,KAAd;AACH;AACJ,KAxBD,MAwBO;AACH,WAAK,MAAL,GAAc,KAAd;AACA,WAAK,aAAL,GAAqB,SAArB;AACH;;AACD,QAAI,KAAK,MAAL,IAAe,SAAnB,EAA8B;AAC1B,WAAK,QAAL,GAAgB,SAAS,CAAC,KAAK,MAAN,CAAT,CAAuB,CAAvB,CAAhB;AACH,KAFD,MAEO;AACH,WAAK,QAAL,GAAgB,EAAhB;AACH;;AACD,QAAI,KAAK,MAAL,IAAe,YAAnB,EAAiC;AAC7B,WAAK,WAAL,GAAmB,YAAY,CAAC,KAAK,MAAN,CAAZ,CAA0B,CAA1B,CAAnB;AACH,KAFD,MAEO;AACH,WAAK,WAAL,GAAmB,EAAnB;AACH;AACJ;;AAEe,MAAZ,YAAY;AACZ,QAAI,KAAK,aAAL,KAAuB,SAA3B,EAAsC;AAClC,aAAO,KAAK,aAAZ;AACH,KAFD,MAEO,IAAI,KAAK,MAAL,IAAe,kBAAnB,EAAuC;AAC1C,aAAO,kBAAkB,CAAC,KAAK,MAAN,CAAlB,CAAgC,CAAhC,CAAP;AACH,KAFM,MAEA;AACH,aAAO,GAAP;AACH;AACJ;;AAEe,MAAZ,YAAY,CAAC,KAAD,EAAc;AAC1B,QAAI,OAAO,KAAP,KAAiB,QAAjB,IAA6B,KAAK,IAAI,CAAtC,IAA2C,KAAK,IAAI,CAAxD,EAA2D;AACvD,WAAK,aAAL,GAAqB,KAArB;AACH;AACJ;;AAzE0C,C;;;;;;;;;;;;;;;;;;;;;;;;AChG/C;;;;;;AAMG;AAEH;AAEM,MAAO,SAAP,SAAyB,oDAAzB,CAAuC;AAA7C;;AAGI,oBAAkB,EAAlB,CAHJ,CAII;;AACA,qBAAmB,EAAnB,CALJ,CAOI;AACA;;AACA,iBAAa,SAAb,CATJ,CAUI;;AACA,4BAAwB,SAAxB,CAXJ,CAYI;;AACA,2BAAuB,SAAvB;AACH;;AAbuB,aAAT,SAAS;AAAK,WAAO,6BAAP;AAAuC;;AADvB;AAgB7C,iEAAe,SAAf,E;;;;;;;;;;;;;;;;AC1BA;AACA,MAAM,eAAN,SAA8B,KAA9B,CAAmC;AAC/B,cAAY,OAAZ,EAAmB;AACf,YADe,CAEf;;AACA,QAAM,WAAW,GAAG,GAAG,CAAC,MAAJ,CAAW,SAA/B;AAEA,UAAM,CAAC,cAAP,CAAsB,IAAtB,EAA4B,WAA5B;AACA,SAAK,IAAL,GAAY,KAAK,WAAL,CAAiB,IAA7B;AACA,SAAK,OAAL,GAAe,OAAf;AACA,SAAK,KAAL,GAAa,IAAI,KAAJ,CAAU,OAAV,EAAmB,KAAhC,CARe,CASf;AACA;AACA;AACA;AACA;AACA;AACH;;AAhB8B;;AAmB7B,MAAO,gBAAP,SAAgC,eAAhC,CAA+C;AAE/C,MAAO,eAAP,SAA+B,gBAA/B,CAA+C,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBrD;;;;;;;;AAQG;AAEH;AACA;AACA;AAMA;;;;;;;;;AASG;;AACG,MAAO,UAAP,SAA0B,gDAA1B,CAA4C;AAAlD;;AAGI,gBAAe,YAAf;AACA,2BAA0B,EAA1B;AACA,qBAAmC,uEAAnC;AAcH;;AAlBuB,aAAT,SAAS;AAAK,WAAO,gCAAP;AAA0C;AAMnE;;;;;;AAMG;;;AACH,SAAO,CAAC;AAAC;AAAD,MAA6C,EAA9C,EAAgD;AACnD,QAAM,GAAG,GAAG,IAAI,kEAAJ,CAA0B,KAAK,eAA/B,CAAZ;AACA,qFAAiC,CAAC,GAAD,EAAM,KAAK,SAAX,EAAsB,aAAtB,CAAjC;AACA,WAAO,GAAP;AACH;;AAlB6C;AAqBlD;;;;;;AAMG;;AACG,MAAO,OAAP,SAAuB,UAAvB,CAAiC;AACf,aAAT,SAAS;AAAK,WAAO,6BAAP;AAAuC;;AAEhE;AACI;AACA,SAAK,IAAL,GAAY,SAAZ;AACA,SAAK,eAAL,GAAuB,KAAvB;AACH;;AAPkC;AAWjC,MAAO,QAAP,SAAwB,UAAxB,CAAkC;AAAxC;;AAGI,gBAAe,UAAf;AAMH;;AARuB,aAAT,SAAS;AAAK,WAAO,8BAAP;AAAwC;;AAGjE,SAAO,CAAC;AAAC;AAAD,MAA6C,EAA9C,EAAgD;AACnD,QAAM,GAAG,GAAG,IAAI,8DAAJ,CAAsB,KAAK,eAA3B,CAAZ;AACA,qFAAiC,CAAC,GAAD,EAAM,KAAK,SAAX,EAAsB,aAAtB,CAAjC;AACA,WAAO,GAAP;AACH;;AARmC;AAYlC,MAAO,KAAP,SAAqB,QAArB,CAA6B;AACX,aAAT,SAAS;AAAK,WAAO,2BAAP;AAAqC;;AAE9D;AACI;AACA,SAAK,IAAL,GAAY,OAAZ;AACA,SAAK,eAAL,GAAuB,IAAvB;AACH;;AAP8B;AAU7B,MAAO,IAAP,SAAoB,QAApB,CAA4B;AACV,aAAT,SAAS;AAAK,WAAO,0BAAP;AAAoC;;AAE7D;AACI;AACA,SAAK,IAAL,GAAY,MAAZ;AACA,SAAK,eAAL,GAAuB,MAAvB;AACH;;AAP6B;AAU5B,MAAO,YAAP,SAA4B,IAA5B,CAAgC;AACd,aAAT,SAAS;AAAK,WAAO,kCAAP;AAA4C;;AAErE;AACI;AACA,SAAK,IAAL,GAAY,cAAZ;AACA,SAAK,eAAL,GAAuB,eAAvB;AACH;;AAPiC;AAUhC,MAAO,cAAP,SAA8B,QAA9B,CAAsC;AACpB,aAAT,SAAS;AAAK,WAAO,oCAAP;AAA8C;;AAD/B;AAK5C;;;AAGG;;AACG,MAAO,OAAP,SAAuB,cAAvB,CAAqC;AACnB,aAAT,SAAS;AAAK,WAAO,6BAAP;AAAuC;;AAEhE;AACI;AACA,SAAK,IAAL,GAAY,SAAZ;AACA,SAAK,eAAL,GAAuB,kBAAvB;AACH;;AAPsC;AAUrC,MAAO,eAAP,SAA+B,cAA/B,CAA6C;AAC3B,aAAT,SAAS;AAAK,WAAO,qCAAP;AAA+C;;AAExE;AACI;AACA,SAAK,IAAL,GAAY,iBAAZ;AACA,SAAK,eAAL,GAAuB,SAAvB;AACH;;AAP8C,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChInD;;;AAGG;AACH;AAEA,IAAM,iBAAiB,GAAG;AACtB,MAAI,CAAC,CAAD,EAAI,CAAJ,CADkB;AAEtB,OAAK,CAAC,CAAD,EAAI,CAAJ,CAFiB;AAGtB,OAAK,CAAC,CAAD,EAAI,CAAJ,CAHiB;AAItB,OAAK,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAJiB;AAKtB,OAAK,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CALiB;AAMtB,QAAM,CAAC,EAAD,EAAK,CAAL,EAAQ,CAAR,EAAW,CAAX,EAAc,CAAd,CANgB;AAOtB,QAAM,CAAC,EAAD,EAAK,EAAL,EAAS,CAAT,EAAY,CAAZ,EAAe,CAAf,EAAkB,CAAlB,CAPgB;AAQtB,SAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CARe;AAStB,SAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CATe;AAUtB,SAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAVe;AAWtB,OAAK,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP;AAXiB,CAA1B;AAaA;;AAEG;;AAGH;;AAEG;;AACG,MAAO,QAAP,CAAe;AAUjB;;;;;;;;;AASG;AACH,cAAY,iBAAyB,EAArC,EAAuC;AAlBvC,yBAA0B,SAA1B;AACA,uBAAwB,SAAxB;AACA,0BAAiB,SAAjB;AACA,mBAAoB,SAApB;AACA,2BAA4B,SAA5B;AAeI,SAAK,cAAL,GAAsB,cAAtB;;AACA,SAAK,oBAAL;;AACA,SAAK,oBAAL;;AAEA,SAAK,SAAL,GAAiB,EAAjB;AACA,SAAK,OAAL,GAAe,EAAf;;AACA,SAAK,aAAL;;AACA,SAAK,WAAL;AACH;AAED;;;;;;;AAOG;;;AAEH,sBAAoB;AAChB,QAAM,EAAE,GAAG,KAAK,cAAhB;AACA,QAAM,OAAO,GAAG,EAAE,CAAC,KAAH,CAAS,GAAT,CAAhB;AACA,QAAM,OAAO,GAAG,EAAhB;AACA,QAAM,eAAe,GAAG,EAAxB;AACA,QAAM,aAAa,GAAG,EAAtB;;AAEA,SAAK,IAAI,MAAT,IAAmB,OAAnB,EAA4B;AACxB,YAAM,GAAG,MAAM,CAAC,IAAP,EAAT;AACA,mBAAa,CAAC,IAAd,CAAmB,MAAnB;AACA,UAAI,YAAY,GAAG,EAAnB;AACA,UAAI,cAAc,GAAG,EAArB;;AACA,WAAK,IAAM,CAAX,IAAgB,MAAhB,EAAwB;AACpB,YAAI,CAAC,CAAC,KAAF,CAAQ,IAAR,CAAJ,EAAmB;AACf,sBAAY,IAAI,CAAhB;AACH,SAFD,MAEO;AACH,wBAAc,IAAI,CAAlB;AACH;AACJ;;AACD,UAAI,MAAM,SAAV;;AACA,UAAI,YAAY,KAAK,EAArB,EAAyB;AACrB,cAAM,GAAG,QAAQ,CAAC,YAAD,CAAjB;AACH;;AACD,aAAO,CAAC,IAAR,CAAa,MAAb;;AACA,UAAI,cAAc,KAAK,EAAvB,EAA2B;AACvB,sBAAc,GAAG,SAAjB;AACH;;AACD,qBAAe,CAAC,IAAhB,CAAqB,cAArB;AACH;;AACD,SAAK,WAAL,GAAmB,OAAnB;AACA,SAAK,OAAL,GAAe,OAAf;AACA,SAAK,eAAL,GAAuB,eAAvB;AACA,SAAK,aAAL,GAAqB,aAArB;AACH;;AAED,sBAAoB;AAChB,QAAI,UAAU,GAAG,KAAK,OAAtB;AACA,QAAI,UAAU,GAAG,UAAjB;AACA,QAAM,kBAAkB,GAAG,KAAK,eAAhC;AACA,QAAI,kBAAkB,GAAG,kBAAzB;AACA,QAAM,gBAAgB,GAAG,UAAU,CAAC,QAAX,EAAzB;;AAEA,QAAI,iBAAiB,CAAC,gBAAD,CAAjB,KAAwC,SAA5C,EAAuD;AACnD,gBAAU,GAAG,iBAAiB,CAAC,gBAAD,CAA9B;AACA,wBAAkB,GAAG,EAArB;AACA,UAAM,IAAI,GAAG,EAAb;;AACA,WAAK,IAAM,MAAX,IAAqB,UAArB,EAAiC;AAC7B,YAAI,MAAM,KAAK,SAAf,EAA0B;AACtB,cAAI,CAAC,IAAL,CAAU,CAAV;AACH,SAFD,MAEO;AACH,cAAI,CAAC,IAAL,CAAU,MAAV;AACH;AACJ;;AACD,gBAAU,GAAG,IAAb;;AAEA,WAAK,IAAM,OAAX,IAAqB,UAArB,EAAiC;AAC7B,YAAI,iBAAiB,SAArB;;AACA,YAAI,UAAU,CAAC,QAAX,CAAoB,OAApB,CAAJ,EAAiC;AAC7B,cAAM,mBAAmB,GAAG,UAAU,CAAC,OAAX,CAAmB,OAAnB,CAA5B;AACA,2BAAiB,GAAG,kBAAkB,CAAC,mBAAD,CAAtC;AACH;;AACD,0BAAkB,CAAC,IAAnB,CAAwB,iBAAxB;AACH;AACJ,KArBD,MAqBO;AACH,UAAM,KAAI,GAAG,EAAb;;AACA,WAAK,IAAM,QAAX,IAAqB,UAArB,EAAiC;AAC7B,YAAI,QAAM,KAAK,SAAf,EAA0B;AACtB,eAAI,CAAC,IAAL,CAAU,CAAV;AACH,SAFD,MAEO;AACH,eAAI,CAAC,IAAL,CAAU,QAAV;AACH;AACJ;;AACD,gBAAU,GAAG,KAAb;AACH;;AACD,SAAK,OAAL,GAAe,UAAf;AACA,SAAK,eAAL,GAAuB,kBAAvB;AACH;;AAED,eAAa;AACT,QAAM,SAAS,GAAG,EAAlB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,OAAL,CAAa,MAAjC,EAAyC,CAAC,EAA1C,EAA8C;AAC1C,UAAM,cAAc,GAAG,KAAK,eAAL,CAAqB,CAArB,CAAvB;AACA,UAAM,QAAQ,GAAG,IAAI,QAAJ,CAAa,cAAb,CAAjB;AACA,eAAS,CAAC,IAAV,CAAe,QAAf;AACH;;AACD,SAAK,SAAL,GAAiB,SAAjB;AACH;;AAED,aAAW;AACP,QAAM,OAAO,GAAG,EAAhB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,OAAL,CAAa,MAAjC,EAAyC,CAAC,EAA1C,EAA8C;AAC1C,UAAM,MAAM,GAAG,KAAK,OAAL,CAAa,CAAb,CAAf;AACA,UAAM,cAAc,GAAG,KAAK,eAAL,CAAqB,CAArB,CAAvB;AACA,UAAM,MAAM,GAAG,IAAI,MAAJ,CAAW,MAAX,EAAmB,cAAnB,CAAf;AACA,aAAO,CAAC,IAAR,CAAa,MAAb;AACH;;AACD,SAAK,OAAL,GAAe,OAAf;AACH;;AAzIgB;AA4IrB;;AAEG;;AACG,MAAO,MAAP,CAAa;AAKf,cAAY,MAAZ,EAAoB,cAApB,EAAkC;AAC9B,SAAK,MAAL,GAAc,MAAd;AACA,SAAK,cAAL,GAAsB,cAAtB;AACA,SAAK,QAAL,GAAgB,IAAI,QAAJ,CAAa,cAAb,CAAhB;AACH;;AATc;AAYnB,IAAM,gBAAgB,GAAG;AACrB,OAAK,GADgB;AAErB,OAAK,GAFgB;AAGrB,QAAM,GAHe;AAIrB,GAAC,EAAE,GAJkB;AAKrB,IAAE,EAAE,IALiB;AAMrB,KAAG,EAAE,KANgB;AAOrB,MAAI,EAAE,OAPe;AAQrB,QAAM,IARe;AASrB,SAAO,KATc;AAUrB,UAAQ;AAVa,CAAzB;AAaA;;AAEG;;AACG,MAAO,QAAP,CAAe;AAIjB,cAAY,cAAZ,EAAkC;AAC9B,SAAK,cAAL,GAAsB,cAAtB;AACA,SAAK,UAAL,GAAkB,KAAK,aAAL,EAAlB;AACH;;AAED,eAAa;AACT,QAAI,MAAM,GAAG,KAAK,cAAlB;;AACA,QAAI,MAAM,KAAK,SAAX,IAAwB,MAAM,KAAK,EAAvC,EAA2C;AACvC,aAAO,SAAP;AACH;;AACD,QAAI,gBAAgB,CAAC,MAAD,CAAhB,KAA6B,SAAjC,EAA4C;AACxC,YAAM,GAAG,gBAAgB,CAAC,MAAD,CAAzB;AACH;;AACD,QAAM,CAAC,GAAG,IAAI,8CAAJ,CAAqB,MAArB,CAAV;AACA,WAAO,CAAP;AACH;;AAED,iBAAe,CAAC,gBAAD,EAAiB;AAC5B,QAAM,YAAY,GAAG,IAAI,yCAAJ,CAAgB,gBAAhB,CAArB;AACA,SAAK,WAAL,CAAiB,YAAjB,EAA+B,IAA/B;AACA,WAAO,YAAY,CAAC,IAApB;AACH;;AAED,aAAW,CAAC,YAAD,EAAe,OAAf,EAAsB;AAC7B,QAAI,OAAO,KAAK,IAAhB,EAAsB;AAClB,kBAAY,GAAG,YAAY,CAAC,KAAb,EAAf;AACH;;AAED,QAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,aAAO,YAAP;AACH;;AAED,QACI,KAAK,UAAL,CAAgB,KAAhB,KAA0B,GAA1B,IACG,YAAY,CAAC,UAAb,KAA4B,SAFnC,EAGE;AACE,kBAAY,CAAC,UAAb,GAA0B,KAAK,UAAL,CAAgB,KAAhB,EAA1B;AACH,KALD,MAKO;AACH,UAAM,QAAQ,GACR,YAAY,CAAC,UAAb,CAAwB,KAAxB,GAAgC,KAAK,UAAL,CAAgB,KADtD;AAEA,UAAM,aAAa,GAAG,IAAI,8CAAJ,CAAqB,QAArB,CAAtB;AACA,kBAAY,CAAC,UAAb,GAA0B,aAA1B;AACH;;AACD,WAAO,YAAP;AACH;;AAhDgB,C;;;;;;;;;;;;;;;;;ACtMrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BG;AACH;AAEA,IAAM,EAAE,GAAG,uCAAX;AACA,IAAM,SAAS,GAAG,EAAE,CAAC,SAArB;AAEA;;;;;;;;;AASG;;AACG,MAAO,SAAP,CAAgB;AAqBlB;AApBA,iBAAiB,IAAjB;AACA,4BAAmB,CACf,sBADe,EAEf,+BAFe,EAGf,2BAHe,EAIf,4BAJe,EAKf,6BALe,EAMf,2BANe,EAOf,oCAPe,EAQf,qBARe,EASf,6BATe,EAUf,2BAVe,CAAnB;AAcA,uBAAc,SAAd;AACA,oBAAW,SAAX;AACA,4BAAmB,SAAnB;AACA,6BAAoB,SAApB;AAGI,SAAK,QAAL,GAAgB;AACZ,mCAA6B;AACzB,oBAAY,EAAE,CAAC,IAAG;AACd,WAAC,CAAC,aAAF,GAAkB,CAAC,CAAC,UAApB;AACA,iBAAO,CAAP;AACH;AAJwB,OADjB;AAOZ,qCAA+B;AAC3B,oBAAY,EAAE,EAAE,IAAG;AACf,YAAE,CAAC,UAAH,GAAgB,EAAE,CAAC,eAAH,CAAmB,UAAnC;AACA,YAAE,CAAC,YAAH,GAAkB,EAAE,CAAC,eAAH,CAAmB,YAArC;AACA,iBAAO,EAAP;AACH;AAL0B,OAPnB;AAcZ,6BAAuB;AACnB,oBAAY,EAAE,CAAC,IAAG;AACd,eAAK,WAAL,GAAmB,CAAnB;AACA,eAAK,QAAL,GAAgB,SAAhB;AACA,eAAK,gBAAL,GAAwB,SAAxB;AACA,eAAK,iBAAL,GAAyB,SAAzB;AACA,eAAK,iBAAL,CAAuB,CAAvB;AACA,iBAAO,CAAP;AACH;AARkB,OAdX;AAwBZ;AACA,8BAAwB;AACpB,oBAAY,EAAE,KAAK,iBAAL,CAAuB,IAAvB,CAA4B,IAA5B;AADM,OAzBZ;AA4BZ,+BAAyB;AACrB,oBAAY,EAAE,KAAK,iBAAL,CAAuB,IAAvB,CAA4B,IAA5B;AADO,OA5Bb;AA+BZ,gCAA0B;AACtB,oBAAY,EAAE,KAAK,iBAAL,CAAuB,IAAvB,CAA4B,IAA5B;AADQ,OA/Bd;AAkCZ,8BAAwB;AACpB,oBAAY,EAAE,KAAK,iBAAL,CAAuB,IAAvB,CAA4B,IAA5B;AADM;AAlCZ,KAAhB;AAsCH;AAED;;;;;AAKG;;;AACH,mBAAiB,CAAC,CAAD,EAAE;AACf,QAAM,EAAE,GAAG,CAAC,CAAC,0BAAb;AAEA,KAAC,CAAC,KAAF,GAAU,KAAK,QAAf;AACA,KAAC,CAAC,aAAF,GAAkB,KAAK,gBAAvB;AACA,KAAC,CAAC,cAAF,GAAmB,KAAK,iBAAxB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,EAAE,CAAC,MAAvB,EAA+B,CAAC,EAAhC,EAAoC;AAChC,UAAM,EAAE,GAAG,EAAE,CAAC,CAAD,CAAF,CAAM,CAAN,CAAX;AACA,QAAE,CAAC,MAAH,GAAY,EAAE,CAAC,CAAD,CAAF,CAAM,CAAN,CAAZ;AACA,UAAI,SAAS,GAAG,EAAE,CAAC,OAAnB;;AACA,UAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,eAAO,CAAC,IAAR,CAAa,6BAAb,EAA4C,EAA5C;AACA,eAAO,CAAC,IAAR,CAAa,0BAAb,EAAyC,EAAE,CAAC,SAA5C;AACA,iBAAS,GAAG,EAAZ;AACH;;AACD,UAAI,UAAU,GAAG,KAAK,WAAtB;;AACA,UAAI,UAAU,KAAK,SAAnB,EAA8B;AAC1B,kBAAU,GAAG,CAAb,CAD0B,CACV;AACnB;;AAED,UAAI,QAAQ,GAAG,IAAf;AACA,UAAI,aAAa,GAAG,KAApB;;AAEA,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,SAAS,CAAC,MAA9B,EAAsC,CAAC,EAAvC,EAA2C;AACvC,YAAM,SAAS,GAAG,SAAS,CAAC,CAAD,CAA3B;;AACA,aAAK,IAAI,EAAE,GAAG,CAAd,EAAiB,EAAE,GAAG,KAAK,gBAAL,CAAsB,MAA5C,EAAoD,EAAE,EAAtD,EAA0D;AACtD,cAAM,UAAU,GAAG,KAAK,gBAAL,CAAsB,EAAtB,CAAnB;;AACA,cAAI,UAAU,CAAC,OAAX,CAAmB,SAAnB,MAAkC,CAAC,CAAvC,EAA0C;AACtC,oBAAQ,GAAG,KAAX;AACH;AACJ;;AACD,YAAI,SAAS,KAAK,eAAlB,EAAmC;AAC/B;AACA,WAAC,CAAC,cAAF,GAAmB,EAAnB;AACA,eAAK,iBAAL,GAAyB,EAAzB;;AACA,cACI,UAAU,KAAK,SAAf,IACG,UAAU,CAAC,aAAX,KAA6B,SAFpC,EAGE;AACE,sBAAU,CAAC,aAAX,GAA2B,EAA3B;AACH;;AACD,kBAAQ,GAAG,KAAX;AACH,SAXD,MAWO,IAAI,SAAS,KAAK,MAAlB,EAA0B;AAC7B,WAAC,CAAC,KAAF,GAAU,EAAV;AACA,eAAK,QAAL,GAAgB,EAAhB;;AACA,cACI,UAAU,KAAK,SAAf,IACG,UAAU,CAAC,IAAX,KAAoB,SAF3B,EAGE;AACE,sBAAU,CAAC,IAAX,GAAkB,EAAlB;AACH;;AACD,kBAAQ,GAAG,KAAX;AACH,SAVM,MAUA,IAAI,SAAS,KAAK,cAAlB,EAAkC;AACrC,WAAC,CAAC,aAAF,GAAkB,EAAlB;AACA,eAAK,gBAAL,GAAwB,EAAxB;;AACA,cACI,UAAU,KAAK,SAAf,IACG,UAAU,CAAC,YAAX,KAA4B,SAFnC,EAGE;AACE,sBAAU,CAAC,YAAX,GAA0B,EAA1B;AACH;;AACD,kBAAQ,GAAG,KAAX;AACH,SAVM,MAUA,IAAI,SAAS,KAAK,MAAlB,EAA0B;AAC7B,kBAAQ,GAAG,KAAX;AACA,uBAAa,GAAG,IAAhB;AACH;AACJ;;AAED,UAAI,QAAJ,EAAc;AACV,SAAC,CAAC,MAAF,CAAS,EAAT,EADU,CACI;AACjB,OAFD,MAEO,IAAI,aAAJ,EAAmB;AACtB,SAAC,CAAC,MAAF,CAAS,CAAT,EAAY,EAAZ,EADsB,CACL;AACpB;AACJ;;AACD,WAAO,CAAP;AACH;AAED;;;;;AAKG;;;AACH,KAAG,CAAC,GAAD,EAAI;AACH,QAAM,SAAS,GAAG,SAAS,CAAC,MAAV,CAAiB,GAAjB,EAAsB,KAAK,QAA3B,CAAlB;AACA,WAAO,SAAS,CAAC,MAAjB;AACH;;AA1JiB,C;;;;;;;;;;;;;;;;;;;;AC9CtB;AACA;AAEM,MAAO,OAAP,SAAuB,yCAAvB,CAAkC;AAUpC,cACI,MADJ,EAEI;AACI,eAAW,GAAC,IADhB;AAEI,iBAAa,GAAC;AAFlB,MAGE,EALN,EAKQ;AAEJ;AAdM,yBAAyB,KAAzB;AAEV,kCAAyB,EAAzB;AACU,wBAAe,EAAf,CASF,CAGJ;;AACA,UAAM,GAAG,MAAM,CAAC,OAAP,CAAe,IAAf,EAAqB,GAArB,CAAT;AACA,SAAK,OAAL,GAAe,MAAf;;AACA,QAAI,WAAW,KAAK,KAAhB,IAAyB,KAAK,OAAL,KAAiB,SAA9C,EAAyD;AACrD,WAAK,YAAL;AACH;;AACD,QACI,KAAK,UAAL,CAAgB,IAAhB,KAAyB,SAAzB,IACG,KAAK,UAAL,CAAgB,IAAhB,KAAyB,SAFhC,EAGE;AACE,WAAK,IAAL,CAAU,KAAK,UAAL,CAAgB,IAA1B;AACH;;AACD,QACK,aAAa,IAAI,KAAK,OAAL,KAAiB,SAAnC,IACG,KAAK,UAAL,CAAgB,IAAhB,KAAyB,SAD5B,IAEG,KAAK,UAAL,CAAgB,IAAhB,KAAyB,SAHhC,EAIE;AACE,WAAK,cAAL;AACH,KArBG,CAsBJ;;;AACA,QACI,WAAW,KAAK,KAAhB,IACG,KAAK,OAAL,KAAiB,SADpB,IAEG,KAAK,OAAL,CAAa,OAAb,CAAqB,KAArB,MAAgC,CAAC,CAFpC,IAGG,KAAK,OAAL,CAAa,OAAb,CAAqB,MAArB,MAAiC,CAAC,CAJzC,EAKE;AACE,WAAK,IAAL,CAAU,KAAK,IAAL,EAAV;AACH;AACJ;;AA7CmB,aAAT,SAAS;AAAK,WAAO,yBAAP;AAAmC;;AA+C5D,cAAY,IAAK;;AAEjB,gBAAc,IAAK;;AAET,MAAN,MAAM;AACN,QAAI,KAAK,OAAL,KAAiB,SAArB,EAAgC;AAC5B,WAAK,UAAL;AACH;;AACD,WAAO,KAAK,OAAZ;AACH;;AAES,MAAN,MAAM,CAAC,SAAD,EAAkB;AACxB,SAAK,OAAL,GAAe,SAAf;;AACA,QAAI,KAAK,OAAL,KAAiB,SAArB,EAAgC;AAC5B,WAAK,YAAL;;AACA,WAAK,cAAL;AACH;AACJ;;AAEM,MAAH,GAAG;AACH,WAAO,KAAK,IAAZ;AACH;;AAEM,MAAH,GAAG,CAAC,UAAD,EAAoB;AACvB,QAAI,OAAO,UAAP,KAAsB,QAA1B,EAAoC;AAChC,WAAK,IAAL,GAAY,IAAI,qCAAJ,CAAY,UAAZ,CAAZ;AACH,KAFD,MAEO;AACH,WAAK,IAAL,GAAY,UAAZ;AACA,WAAK,MAAL,GAAc,SAAd;AACH;AACJ;;AAED,YAAU,IAAK;;AAhFqB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHxC;;;;;;;;;;;;;;;AAeG;AACH;AAEO,IAAM,mBAAmB,GAAa,EAAtC,C,CAA0C;;AAC1C,IAAM,OAAO,GAAW,EAAxB;AAEP;;;AAGG;;AACI,IAAM,IAAI,GAAG,CAChB;AAAE,IAAE,EAAE,sBAAN;AAA8B,MAAI,EAAE,sBAApC;AAA4D,YAAU,EAAE;AAAxE,CADgB,EAEhB;AACI,IAAE,EAAE,uBADR;AAEI,MAAI,EAAE,uBAFV;AAGI,YAAU,EAAE;AAHhB,CAFgB,EAOhB;AAAE,IAAE,EAAE,sBAAN;AAA8B,MAAI,EAAE,sBAApC;AAA4D,YAAU,EAAE;AAAxE,CAPgB,EAQhB;AAAE,IAAE,EAAE,iBAAN;AAAyB,MAAI,EAAE,kBAA/B;AAAmD,YAAU,EAAE;AAA/D,CARgB,EAShB;AAAE,IAAE,EAAE,kBAAN;AAA0B,MAAI,EAAE,kBAAhC;AAAoD,YAAU,EAAE;AAAhE,CATgB,EAUhB;AAAE,IAAE,EAAE,kBAAN;AAA0B,MAAI,EAAE,kBAAhC;AAAoD,YAAU,EAAE;AAAhE,CAVgB,EAWhB;AAAE,IAAE,EAAE,aAAN;AAAqB,MAAI,EAAE,aAA3B;AAA0C,YAAU,EAAE;AAAtD,CAXgB,EAYhB;AAAE,IAAE,EAAE,UAAN;AAAkB,MAAI,EAAE,UAAxB;AAAoC,YAAU,EAAE;AAAhD,CAZgB,EAahB;AAAE,IAAE,EAAE,SAAN;AAAiB,MAAI,EAAE,SAAvB;AAAkC,YAAU,EAAE;AAA9C,CAbgB,EAchB;AAAE,IAAE,EAAE,cAAN;AAAsB,MAAI,EAAE,cAA5B;AAA4C,YAAU,EAAE;AAAxD,CAdgB,EAehB;AAAE,IAAE,EAAE,WAAN;AAAmB,MAAI,EAAE,WAAzB;AAAsC,YAAU,EAAE;AAAlD,CAfgB,EAgBhB;AAAE,IAAE,EAAE,YAAN;AAAoB,MAAI,EAAE,YAA1B;AAAwC,YAAU,EAAE;AAApD,CAhBgB,EAiBhB;AAAE,IAAE,EAAE,SAAN;AAAiB,MAAI,EAAE,SAAvB;AAAkC,YAAU,EAAE;AAA9C,CAjBgB,EAkBhB;AAAE,IAAE,EAAE,WAAN;AAAmB,MAAI,EAAE,WAAzB;AAAsC,YAAU,EAAE;AAAlD,CAlBgB,EAmBhB;AAAE,IAAE,EAAE,eAAN;AAAuB,MAAI,EAAE,eAA7B;AAA8C,YAAU,EAAE;AAA1D,CAnBgB,EAoBhB;AAAE,IAAE,EAAE,UAAN;AAAkB,MAAI,EAAE,UAAxB;AAAoC,YAAU,EAAE;AAAhD,CApBgB,EAqBhB;AAAE,IAAE,EAAE,eAAN;AAAuB,MAAI,EAAE,eAA7B;AAA8C,YAAU,EAAE;AAA1D,CArBgB,EAsBhB;AAAE,IAAE,EAAE,kBAAN;AAA0B,MAAI,EAAE,kBAAhC;AAAoD,YAAU,EAAE;AAAhE,CAtBgB,EAuBhB;AAAE,IAAE,EAAE,YAAN;AAAoB,MAAI,EAAE,YAA1B;AAAwC,YAAU,EAAE;AAApD,CAvBgB,EAwBhB;AAAE,IAAE,EAAE,cAAN;AAAsB,MAAI,EAAE,cAA5B;AAA4C,YAAU,EAAE;AAAxD,CAxBgB,EAyBhB;AAAE,IAAE,EAAE,YAAN;AAAoB,MAAI,EAAE,YAA1B;AAAwC,YAAU,EAAE;AAApD,CAzBgB,EA0BhB;AAAE,IAAE,EAAE,WAAN;AAAmB,MAAI,EAAE,WAAzB;AAAsC,YAAU,EAAE;AAAlD,CA1BgB,EA2BhB;AAAE,IAAE,EAAE,WAAN;AAAmB,MAAI,EAAE,WAAzB;AAAsC,YAAU,EAAE;AAAlD,CA3BgB,EA4BhB;AAAE,IAAE,EAAE,iBAAN;AAAyB,MAAI,EAAE,iBAA/B;AAAkD,YAAU,EAAE;AAA9D,CA5BgB,EA6BhB;AACI,IAAE,EAAE,uBADR;AAEI,MAAI,EAAE,yBAFV;AAGI,YAAU,EAAE;AAHhB,CA7BgB,EAkChB;AACI,IAAE,EAAE,uBADR;AAEI,MAAI,EAAE,yBAFV;AAGI,YAAU,EAAE;AAHhB,CAlCgB,EAuChB;AACI,IAAE,EAAE,sBADR;AAEI,MAAI,EAAE,wBAFV;AAGI,YAAU,EAAE;AAHhB,CAvCgB,EA4ChB;AACI,IAAE,EAAE,uBADR;AAEI,MAAI,EAAE,yBAFV;AAGI,YAAU,EAAE;AAHhB,CA5CgB,EAiDhB;AACI,IAAE,EAAE,uBADR;AAEI,MAAI,EAAE,yBAFV;AAGI,YAAU,EAAE;AAHhB,CAjDgB,EAsDhB;AAAE,IAAE,EAAE,mBAAN;AAA2B,MAAI,EAAE,mBAAjC;AAAsD,YAAU,EAAE;AAAlE,CAtDgB,EAuDhB;AAAE,IAAE,EAAE,mBAAN;AAA2B,MAAI,EAAE,mBAAjC;AAAsD,YAAU,EAAE;AAAlE,CAvDgB,EAwDhB;AAAE,IAAE,EAAE,kBAAN;AAA0B,MAAI,EAAE,kBAAhC;AAAoD,YAAU,EAAE;AAAhE,CAxDgB,EAyDhB;AAAE,IAAE,EAAE,eAAN;AAAuB,MAAI,EAAE,eAA7B;AAA8C,YAAU,EAAE;AAA1D,CAzDgB,EA0DhB;AACI,IAAE,EAAE,sBADR;AAEI,MAAI,EAAE,wBAFV;AAGI,YAAU,EAAE;AAHhB,CA1DgB,EA+DhB;AAAE,IAAE,EAAE,oBAAN;AAA4B,MAAI,EAAE,sBAAlC;AAA0D,YAAU,EAAE;AAAtE,CA/DgB,EAgEhB;AAAE,IAAE,EAAE,eAAN;AAAuB,MAAI,EAAE,eAA7B;AAA8C,YAAU,EAAE;AAA1D,CAhEgB,EAiEhB;AAAE,IAAE,EAAE,aAAN;AAAqB,MAAI,EAAE,aAA3B;AAA0C,YAAU,EAAE;AAAtD,CAjEgB,EAkEhB;AAAE,IAAE,EAAE,aAAN;AAAqB,MAAI,EAAE,aAA3B;AAA0C,YAAU,EAAE;AAAtD,CAlEgB,EAmEhB;AAAE,IAAE,EAAE,cAAN;AAAsB,MAAI,EAAE,cAA5B;AAA4C,YAAU,EAAE;AAAxD,CAnEgB,EAoEhB;AAAE,IAAE,EAAE,cAAN;AAAsB,MAAI,EAAE,cAA5B;AAA4C,YAAU,EAAE;AAAxD,CApEgB,EAqEhB;AAAE,IAAE,EAAE,QAAN;AAAgB,MAAI,EAAE,QAAtB;AAAgC,YAAU,EAAE;AAA5C,CArEgB,EAsEhB;AAAE,IAAE,EAAE,OAAN;AAAe,MAAI,EAAE,OAArB;AAA8B,YAAU,EAAE;AAA1C,CAtEgB,EAuEhB;AAAE,IAAE,EAAE,OAAN;AAAe,MAAI,EAAE,OAArB;AAA8B,YAAU,EAAE;AAA1C,CAvEgB,EAwEhB;AAAE,IAAE,EAAE,YAAN;AAAoB,MAAI,EAAE,YAA1B;AAAwC,YAAU,EAAE;AAApD,CAxEgB,EAyEhB;AAAE,IAAE,EAAE,iBAAN;AAAyB,MAAI,EAAE,iBAA/B;AAAkD,YAAU,EAAE;AAA9D,CAzEgB,EA0EhB;AAAE,IAAE,EAAE,mBAAN;AAA2B,MAAI,EAAE,mBAAjC;AAAsD,YAAU,EAAE;AAAlE,CA1EgB,EA2EhB;AAAE,IAAE,EAAE,iBAAN;AAAyB,MAAI,EAAE,iBAA/B;AAAkD,YAAU,EAAE;AAA9D,CA3EgB,EA4EhB;AAAE,IAAE,EAAE,SAAN;AAAiB,MAAI,EAAE,SAAvB;AAAkC,YAAU,EAAE;AAA9C,CA5EgB,EA6EhB;AAAE,IAAE,EAAE,mBAAN;AAA2B,MAAI,EAAE,mBAAjC;AAAsD,YAAU,EAAE;AAAlE,CA7EgB,EA8EhB;AAAE,IAAE,EAAE,mBAAN;AAA2B,MAAI,EAAE,mBAAjC;AAAsD,YAAU,EAAE;AAAlE,CA9EgB,EA+EhB;AAAE,IAAE,EAAE,iBAAN;AAAyB,MAAI,EAAE,iBAA/B;AAAkD,YAAU,EAAE;AAA9D,CA/EgB,EAgFhB;AAAE,IAAE,EAAE,iBAAN;AAAyB,MAAI,EAAE,iBAA/B;AAAkD,YAAU,EAAE;AAA9D,CAhFgB,EAiFhB;AAAE,IAAE,EAAE,YAAN;AAAoB,MAAI,EAAE,YAA1B;AAAwC,YAAU,EAAE;AAApD,CAjFgB,EAkFhB;AAAE,IAAE,EAAE,YAAN;AAAoB,MAAI,EAAE,YAA1B;AAAwC,YAAU,EAAE;AAApD,CAlFgB,EAmFhB;AAAE,IAAE,EAAE,aAAN;AAAqB,MAAI,EAAE,aAA3B;AAA0C,YAAU,EAAE;AAAtD,CAnFgB,EAoFhB;AAAE,IAAE,EAAE,eAAN;AAAuB,MAAI,EAAE,eAA7B;AAA8C,YAAU,EAAE;AAA1D,CApFgB,EAqFhB;AAAE,IAAE,EAAE,SAAN;AAAiB,MAAI,EAAE,SAAvB;AAAkC,YAAU,EAAE;AAA9C,CArFgB,EAsFhB;AAAE,IAAE,EAAE,UAAN;AAAkB,MAAI,EAAE,UAAxB;AAAoC,YAAU,EAAE;AAAhD,CAtFgB,EAuFhB;AAAE,IAAE,EAAE,MAAN;AAAc,MAAI,EAAE,MAApB;AAA4B,YAAU,EAAE;AAAxC,CAvFgB,EAwFhB;AAAE,IAAE,EAAE,eAAN;AAAuB,MAAI,EAAE,eAA7B;AAA8C,YAAU,EAAE;AAA1D,CAxFgB,EAyFhB;AAAE,IAAE,EAAE,aAAN;AAAqB,MAAI,EAAE,aAA3B;AAA0C,YAAU,EAAE;AAAtD,CAzFgB,EA0FhB;AAAE,IAAE,EAAE,eAAN;AAAuB,MAAI,EAAE,eAA7B;AAA8C,YAAU,EAAE;AAA1D,CA1FgB,EA2FhB;AAAE,IAAE,EAAE,eAAN;AAAuB,MAAI,EAAE,eAA7B;AAA8C,YAAU,EAAE;AAA1D,CA3FgB,EA4FhB;AAAE,IAAE,EAAE,eAAN;AAAuB,MAAI,EAAE,eAA7B;AAA8C,YAAU,EAAE;AAA1D,CA5FgB,EA6FhB;AAAE,IAAE,EAAE,aAAN;AAAqB,MAAI,EAAE,aAA3B;AAA0C,YAAU,EAAE;AAAtD,CA7FgB,EA8FhB;AAAE,IAAE,EAAE,UAAN;AAAkB,MAAI,EAAE,UAAxB;AAAoC,YAAU,EAAE;AAAhD,CA9FgB,EA+FhB;AAAE,IAAE,EAAE,WAAN;AAAmB,MAAI,EAAE,WAAzB;AAAsC,YAAU,EAAE;AAAlD,CA/FgB,EAgGhB;AAAE,IAAE,EAAE,cAAN;AAAsB,MAAI,EAAE,cAA5B;AAA4C,YAAU,EAAE;AAAxD,CAhGgB,EAiGhB;AAAE,IAAE,EAAE,MAAN;AAAc,MAAI,EAAE,MAApB;AAA4B,YAAU,EAAE;AAAxC,CAjGgB,EAkGhB;AAAE,IAAE,EAAE,cAAN;AAAsB,MAAI,EAAE,cAA5B;AAA4C,YAAU,EAAE;AAAxD,CAlGgB,EAmGhB;AAAE,IAAE,EAAE,SAAN;AAAiB,MAAI,EAAE,SAAvB;AAAkC,YAAU,EAAE;AAA9C,CAnGgB,EAoGhB;AAAE,IAAE,EAAE,UAAN;AAAkB,MAAI,EAAE,UAAxB;AAAoC,YAAU,EAAE;AAAhD,CApGgB,EAqGhB;AAAE,IAAE,EAAE,SAAN;AAAiB,MAAI,EAAE,SAAvB;AAAkC,YAAU,EAAE;AAA9C,CArGgB,EAsGhB;AAAE,IAAE,EAAE,OAAN;AAAe,MAAI,EAAE,OAArB;AAA8B,YAAU,EAAE;AAA1C,CAtGgB,EAuGhB;AAAE,IAAE,EAAE,UAAN;AAAkB,MAAI,EAAE,UAAxB;AAAoC,YAAU,EAAE;AAAhD,CAvGgB,EAwGhB;AAAE,IAAE,EAAE,WAAN;AAAmB,MAAI,EAAE,WAAzB;AAAsC,YAAU,EAAE;AAAlD,CAxGgB,EAyGhB;AAAE,IAAE,EAAE,cAAN;AAAsB,MAAI,EAAE,cAA5B;AAA4C,YAAU,EAAE;AAAxD,CAzGgB,EA0GhB;AAAE,IAAE,EAAE,YAAN;AAAoB,MAAI,EAAE,YAA1B;AAAwC,YAAU,EAAE;AAApD,CA1GgB,EA2GhB;AAAE,IAAE,EAAE,SAAN;AAAiB,MAAI,EAAE,SAAvB;AAAkC,YAAU,EAAE;AAA9C,CA3GgB,EA4GhB;AAAE,IAAE,EAAE,SAAN;AAAiB,MAAI,EAAE,SAAvB;AAAkC,YAAU,EAAE;AAA9C,CA5GgB,EA6GhB;AAAE,IAAE,EAAE,eAAN;AAAuB,MAAI,EAAE,iBAA7B;AAAgD,YAAU,EAAE;AAA5D,CA7GgB,EA8GhB;AAAE,IAAE,EAAE,iBAAN;AAAyB,MAAI,EAAE,mBAA/B;AAAoD,YAAU,EAAE;AAAhE,CA9GgB,EA+GhB;AAAE,IAAE,EAAE,iBAAN;AAAyB,MAAI,EAAE,mBAA/B;AAAoD,YAAU,EAAE;AAAhE,CA/GgB,EAgHhB;AAAE,IAAE,EAAE,cAAN;AAAsB,MAAI,EAAE,cAA5B;AAA4C,YAAU,EAAE;AAAxD,CAhHgB,EAiHhB;AAAE,IAAE,EAAE,gBAAN;AAAwB,MAAI,EAAE,kBAA9B;AAAkD,YAAU,EAAE;AAA9D,CAjHgB,EAkHhB;AAAE,IAAE,EAAE,cAAN;AAAsB,MAAI,EAAE,gBAA5B;AAA8C,YAAU,EAAE;AAA1D,CAlHgB,EAmHhB;AAAE,IAAE,EAAE,eAAN;AAAuB,MAAI,EAAE,iBAA7B;AAAgD,YAAU,EAAE;AAA5D,CAnHgB,EAoHhB;AAAE,IAAE,EAAE,mBAAN;AAA2B,MAAI,EAAE,sBAAjC;AAAyD,YAAU,EAAE;AAArE,CApHgB,EAqHhB;AAAE,IAAE,EAAE,eAAN;AAAuB,MAAI,EAAE,iBAA7B;AAAgD,YAAU,EAAE;AAA5D,CArHgB,EAsHhB;AAAE,IAAE,EAAE,YAAN;AAAoB,MAAI,EAAE,cAA1B;AAA0C,YAAU,EAAE;AAAtD,CAtHgB,EAuHhB;AAAE,IAAE,EAAE,iBAAN;AAAyB,MAAI,EAAE,mBAA/B;AAAoD,YAAU,EAAE;AAAhE,CAvHgB,EAwHhB;AAAE,IAAE,EAAE,aAAN;AAAqB,MAAI,EAAE,eAA3B;AAA4C,YAAU,EAAE;AAAxD,CAxHgB,EAyHhB;AAAE,IAAE,EAAE,aAAN;AAAqB,MAAI,EAAE,eAA3B;AAA4C,YAAU,EAAE;AAAxD,CAzHgB,EA0HhB;AAAE,IAAE,EAAE,gBAAN;AAAwB,MAAI,EAAE,kBAA9B;AAAkD,YAAU,EAAE;AAA9D,CA1HgB,EA2HhB;AAAE,IAAE,EAAE,YAAN;AAAoB,MAAI,EAAE,cAA1B;AAA0C,YAAU,EAAE;AAAtD,CA3HgB,EA4HhB;AAAE,IAAE,EAAE,aAAN;AAAqB,MAAI,EAAE,eAA3B;AAA4C,YAAU,EAAE;AAAxD,CA5HgB,EA6HhB;AAAE,IAAE,EAAE,WAAN;AAAmB,MAAI,EAAE,aAAzB;AAAwC,YAAU,EAAE;AAApD,CA7HgB,EA8HhB;AAAE,IAAE,EAAE,iBAAN;AAAyB,MAAI,EAAE,mBAA/B;AAAoD,YAAU,EAAE;AAAhE,CA9HgB,EA+HhB;AAAE,IAAE,EAAE,cAAN;AAAsB,MAAI,EAAE,gBAA5B;AAA8C,YAAU,EAAE;AAA1D,CA/HgB,EAgIhB;AAAE,IAAE,EAAE,iBAAN;AAAyB,MAAI,EAAE,mBAA/B;AAAoD,YAAU,EAAE;AAAhE,CAhIgB,EAiIhB;AAAE,IAAE,EAAE,iBAAN;AAAyB,MAAI,EAAE,mBAA/B;AAAoD,YAAU,EAAE;AAAhE,CAjIgB,EAkIhB;AAAE,IAAE,EAAE,cAAN;AAAsB,MAAI,EAAE,gBAA5B;AAA8C,YAAU,EAAE;AAA1D,CAlIgB,EAmIhB;AAAE,IAAE,EAAE,aAAN;AAAqB,MAAI,EAAE,eAA3B;AAA4C,YAAU,EAAE;AAAxD,CAnIgB,EAoIhB;AAAE,IAAE,EAAE,YAAN;AAAoB,MAAI,EAAE,eAA1B;AAA2C,YAAU,EAAE;AAAvD,CApIgB,EAqIhB;AAAE,IAAE,EAAE,OAAN;AAAe,MAAI,EAAE,OAArB;AAA8B,YAAU,EAAE;AAA1C,CArIgB,EAsIhB;AAAE,IAAE,EAAE,OAAN;AAAe,MAAI,EAAE,OAArB;AAA8B,YAAU,EAAE;AAA1C,CAtIgB,EAuIhB;AAAE,IAAE,EAAE,UAAN;AAAkB,MAAI,EAAE,UAAxB;AAAoC,YAAU,EAAE;AAAhD,CAvIgB,EAwIhB;AAAE,IAAE,EAAE,MAAN;AAAc,MAAI,EAAE,MAApB;AAA4B,YAAU,EAAE;AAAxC,CAxIgB,EAyIhB;AAAE,IAAE,EAAE,SAAN;AAAiB,MAAI,EAAE,SAAvB;AAAkC,YAAU,EAAE;AAA9C,CAzIgB,EA0IhB;AAAE,IAAE,EAAE,SAAN;AAAiB,MAAI,EAAE,SAAvB;AAAkC,YAAU,EAAE;AAA9C,CA1IgB,EA2IhB;AAAE,IAAE,EAAE,QAAN;AAAgB,MAAI,EAAE,QAAtB;AAAgC,YAAU,EAAE;AAA5C,CA3IgB,EA4IhB;AAAE,IAAE,EAAE,QAAN;AAAgB,MAAI,EAAE,QAAtB;AAAgC,YAAU,EAAE;AAA5C,CA5IgB,EA6IhB;AAAE,IAAE,EAAE,aAAN;AAAqB,MAAI,EAAE,aAA3B;AAA0C,YAAU,EAAE;AAAtD,CA7IgB,EA8IhB;AAAE,IAAE,EAAE,OAAN;AAAe,MAAI,EAAE,OAArB;AAA8B,YAAU,EAAE;AAA1C,CA9IgB,EA+IhB;AAAE,IAAE,EAAE,aAAN;AAAqB,MAAI,EAAE,aAA3B;AAA0C,YAAU,EAAE;AAAtD,CA/IgB,EAgJhB;AAAE,IAAE,EAAE,WAAN;AAAmB,MAAI,EAAE,WAAzB;AAAsC,YAAU,EAAE;AAAlD,CAhJgB,EAiJhB;AAAE,IAAE,EAAE,YAAN;AAAoB,MAAI,EAAE,YAA1B;AAAwC,YAAU,EAAE;AAApD,CAjJgB,EAkJhB;AAAE,IAAE,EAAE,aAAN;AAAqB,MAAI,EAAE,aAA3B;AAA0C,YAAU,EAAE;AAAtD,CAlJgB,EAmJhB;AAAE,IAAE,EAAE,YAAN;AAAoB,MAAI,EAAE,YAA1B;AAAwC,YAAU,EAAE;AAApD,CAnJgB,EAoJhB;AAAE,IAAE,EAAE,gBAAN;AAAwB,MAAI,EAAE,gBAA9B;AAAgD,YAAU,EAAE;AAA5D,CApJgB,EAqJhB;AAAE,IAAE,EAAE,mBAAN;AAA2B,MAAI,EAAE,mBAAjC;AAAsD,YAAU,EAAE;AAAlE,CArJgB,EAsJhB;AAAE,IAAE,EAAE,cAAN;AAAsB,MAAI,EAAE,cAA5B;AAA4C,YAAU,EAAE;AAAxD,CAtJgB,EAuJhB;AAAE,IAAE,EAAE,UAAN;AAAkB,MAAI,EAAE,UAAxB;AAAoC,YAAU,EAAE;AAAhD,CAvJgB,EAwJhB;AAAE,IAAE,EAAE,YAAN;AAAoB,MAAI,EAAE,YAA1B;AAAwC,YAAU,EAAE;AAApD,CAxJgB,EAyJhB;AAAE,IAAE,EAAE,gBAAN;AAAwB,MAAI,EAAE,gBAA9B;AAAgD,YAAU,EAAE;AAA5D,CAzJgB,EA0JhB;AAAE,IAAE,EAAE,YAAN;AAAoB,MAAI,EAAE,YAA1B;AAAwC,YAAU,EAAE;AAApD,CA1JgB,EA2JhB;AAAE,IAAE,EAAE,UAAN;AAAkB,MAAI,EAAE,UAAxB;AAAoC,YAAU,EAAE;AAAhD,CA3JgB,EA4JhB;AAAE,IAAE,EAAE,SAAN;AAAiB,MAAI,EAAE,SAAvB;AAAkC,YAAU,EAAE;AAA9C,CA5JgB,CAAb;AAgKP;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;;AACG,MAAO,UAAP,SAA0B,gDAA1B,CAA4C;AAsB9C,cAAY,cAAc,GAAC,EAA3B,EAA6B;AACzB;AApBJ,kBAAS,SAAT;AACA,oBAAW,SAAX;AACA,4BAAmB,SAAnB;AAEA,wBAAe,SAAf;AACA,0BAAiB,EAAjB;AACA,kCAAyB,SAAzB;AACA,uBAAc,SAAd;AACA,wBAAe,SAAf;AAEA,sBAAa,SAAb;AACA,uBAAc,SAAd;AAEA,wBAAe,SAAf;AAEA,uBAAc,KAAd;AACA,uBAAc,SAAd;AAKI,SAAK,cAAL,GAAsB,CAAC,EAAvB;AACA,SAAK,cAAL,GAAsB,cAAtB;;AAEA,QAAI,cAAc,KAAK,EAAvB,EAA2B;AACvB,UAAI,CAAC,cAAD,EAAiB,IAAjB,CAAJ;AACH;AACJ;;AA7BmB,aAAT,SAAS;AAAK,WAAO,+BAAP;AAAyC;AA+BlE;;;;;;;;;AASG;;;AACH,uBAAqB,CAAC,YAAY,GAAC,SAAd,EAAuB;AACxC,QAAI,YAAY,KAAK,SAArB,EAAgC;AAC5B,kBAAY,GAAG,mBAAf;AACH;;AACD,QAAI,YAAY,GAAG,CAAnB;;AACA,QAAI,KAAK,WAAT,EAAsB;AAClB,kBAAY,GAAG,EAAf;AACH;;AACD,SAAK,IAAI,EAAE,GAAG,YAAd,EAA4B,EAAE,GAAG,OAAjC,EAA0C,EAAE,EAA5C,EAAgD;AAC5C,UAAI,EAAE,GAAG,EAAL,KAAY,EAAZ,IAAkB,KAAK,WAAL,KAAqB,IAA3C,EAAiD;AAC7C,iBAD6C,CACnC;AACb;;AACD,UACI,YAAY,CAAC,EAAD,CAAZ,KAAqB,SAArB,IACG,YAAY,CAAC,EAAD,CAAZ,KAAqB,KAAK,WAFjC,EAGE;AACE,oBAAY,CAAC,EAAD,CAAZ,GAAmB,KAAK,WAAxB;AACA,aAAK,WAAL,GAAmB,EAAnB;AACA,eAAO,EAAP;AACH;AACJ,KApBuC,CAqBxC;;;AACA,WAAO,SAAP;AACH;;AAEe,MAAZ,YAAY;AACZ,WAAO,KAAK,WAAL,GAAmB,SAA1B;AACH;;AAEe,MAAZ,YAAY;AACZ,WAAO,KAAK,WAAL,GAAmB,SAA1B;AACH;;AAEc,MAAX,WAAW;AACX,QAAI,KAAK,YAAL,KAAsB,SAA1B,EAAqC;AACjC,WAAK,qBAAL;AACH;;AACD,WAAO,KAAK,YAAZ;AACH;;AAEc,MAAX,WAAW,CAAC,EAAD,EAAG;AACd,SAAK,YAAL,GAAoB,EAApB;AACH;;AApF6C;AAuFlD;;;;;;;;;AASG;;AACG,SAAU,IAAV,CAAe,EAAf,EAAmB,IAAI,GAAC,SAAxB,EAAiC;AACnC,MAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,QAAI,GAAG,IAAI,UAAJ,EAAP;AACH;;AACD,OAAK,IAAM,SAAX,IAAwB,IAAxB,EAA8B;AAC1B,QAAI,SAAS,CAAC,EAAV,KAAiB,EAAjB,IAAuB,SAAS,CAAC,IAAV,KAAmB,EAA9C,EAAkD;AAC9C,UAAI,CAAC,WAAL,GAAmB,SAAS,CAAC,EAA7B;AACA,UAAI,CAAC,cAAL,GAAsB,SAAS,CAAC,IAAhC;AACA,UAAI,CAAC,WAAL,GAAmB,SAAS,CAAC,UAA7B;AACA,aAAO,IAAP;AACH;AACJ;;AACD,SAAO,SAAP;AACH,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChUD;;;;;;;;;;;;;;;;AAgBG;AACH;AAEA;AACA;AACA;AACA;AAEA;;;;;;;;;;AAUG;;AACI,IAAM,SAAS,GAAG;AACrB,YAAU,EAAE,CAAC,CADQ;AAErB,SAAO,EAAE,CAFY;AAGrB,WAAS,EAAE;AAHU,CAAlB;AAMP;;;;;;;AAOG;;AACI,IAAM,sBAAsB,GAAG,CAAC,YAAD,EAAe,SAAf,EAA0B,WAA1B,CAA/B;AAEP;;;;;;;;;;;;;;;;;AAiBG;;AACI,IAAM,aAAa,GAAG,CACzB,SADyB,EAEzB,QAFyB,EAGzB,QAHyB,EAIzB,OAJyB,EAKzB,QALyB,EAMzB,OANyB,EAOzB,OAPyB,EAQzB,SARyB,EASzB,QATyB,EAUzB,OAVyB,EAWzB,OAXyB,EAYzB,UAZyB,EAazB,SAbyB,EAczB,YAdyB,EAezB,YAfyB,EAgBzB,eAhByB,CAAtB;AAmBP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDG;;AACG,MAAO,eAAP,SAA+B,oDAA/B,CAAqD;AAwBvD,cAAY,EAAZ,EAAsB;AAClB;;AACA,QAAI,EAAE,KAAK,SAAX,EAAsB;AAClB,QAAE,GAAG,CAAL;AACH;;AACD,SAAK,KAAL,GAAa,EAAb,CALkB,CAKD;;AACjB,SAAK,QAAL,GAAgB,KAAK,KAArB;AACA,SAAK,UAAL,GAAkB,IAAI,CAAC,GAAL,CAAS,KAAK,KAAd,CAAlB;;AAEA,QAAI,KAAK,QAAL,KAAkB,CAAtB,EAAyB;AACrB,WAAK,SAAL,GAAiB,SAAS,CAAC,OAA3B;AACH,KAFD,MAEO,IAAI,KAAK,QAAL,GAAgB,CAApB,EAAuB;AAC1B,WAAK,SAAL,GAAiB,SAAS,CAAC,UAA3B;AACH,KAFM,MAEA,IAAI,KAAK,QAAL,GAAgB,CAApB,EAAuB;AAC1B,WAAK,SAAL,GAAiB,SAAS,CAAC,SAA3B;AACH,KAfiB,CAgBlB;;;AAEA,QAAI,KAAK,UAAL,GAAkB,CAAtB,EAAyB;AACrB,WAAK,MAAL,GAAc,IAAd;AACH,KAFD,MAEO;AACH,WAAK,MAAL,GAAc,KAAd;AACH;;AAED,QAAI,KAAK,UAAL,KAAoB,CAAxB,EAA2B;AACvB,WAAK,cAAL,GAAsB,IAAtB;AACH,KAFD,MAEO;AACH,WAAK,cAAL,GAAsB,KAAtB;AACH;;AAED,SAAK,MAAL,GAAc,KAAK,cAAnB;;AAEA,QAAI,KAAK,UAAL,KAAoB,CAAxB,EAA2B;AACvB,WAAK,QAAL,GAAgB,IAAhB;AACH,KAFD,MAEO;AACH,WAAK,QAAL,GAAgB,KAAhB;AACH;;AAED,QAAI,SAAS,GAAG,4CAAc,KAAK,UAAnB,EAA+B,CAA/B,CAAhB;AACA,QAAI,WAAW,GAAG,IAAI,CAAC,KAAL,CAAW,KAAK,UAAL,GAAkB,CAA7B,CAAlB;;AACA,QAAI,SAAS,KAAK,CAAlB,EAAqB;AACjB,iBAAW,IAAI,CAAf;AACA,eAAS,GAAG,CAAZ;AACH;;AACD,SAAK,gBAAL,GAAwB,SAAxB;AACA,SAAK,iBAAL,GAAyB,WAAzB;;AACA,QAAI,SAAS,KAAK,CAAd,IAAmB,WAAW,IAAI,CAAtC,EAAyC;AACrC,WAAK,oBAAL,GAA4B,CAA5B;AACH,KAFD,MAEO;AACH,WAAK,oBAAL,GAA4B,KAAK,gBAAjC;AACH;;AAED,QAAI,KAAK,SAAL,KAAmB,SAAS,CAAC,UAAjC,EAA6C;AACzC,WAAK,OAAL,GAAe,CAAC,CAAD,GAAK,WAApB;;AACA,UAAI,SAAS,KAAK,CAAlB,EAAqB;AACjB,aAAK,cAAL,GAAsB,CAAC,CAAD,GAAK,SAA3B;AACH,OAFD,MAEO;AACH,aAAK,cAAL,GAAsB,CAAtB,CADG,CACsB;AAC5B;;AACD,WAAK,kBAAL,GAA0B,CAAC,CAAD,GAAK,KAAK,oBAApC;AACH,KARD,MAQO;AACH,WAAK,OAAL,GAAe,WAAf;AACA,WAAK,cAAL,GAAsB,SAAtB;AACA,WAAK,kBAAL,GAA0B,KAAK,oBAA/B;AACH;;AACD,QACI,KAAK,gBAAL,KAA0B,CAA1B,IACG,KAAK,gBAAL,KAA0B,CAD7B,IAEG,KAAK,gBAAL,KAA0B,CAHjC,EAIE;AACE,WAAK,WAAL,GAAmB,IAAnB;AACH,KAND,MAMO;AACH,WAAK,WAAL,GAAmB,KAAnB;AACH;;AAED,QAAI,KAAK,UAAL,GAAkB,aAAa,CAAC,MAApC,EAA4C;AACxC,WAAK,QAAL,GAAgB,aAAa,CAAC,KAAK,UAAN,CAA7B;AACH,KAFD,MAEO;AACH,WAAK,QAAL,GAAgB,KAAK,UAAL,CAAgB,QAAhB,EAAhB;AACH;;AAED,SAAK,cAAL,GAAsB,aAAa,CAAC,KAAK,gBAAN,CAAnC;AACA,SAAK,kBAAL,GACM,aAAa,CAAC,KAAK,oBAAN,CADnB;;AAGA,QAAI,IAAI,CAAC,GAAL,CAAS,KAAK,QAAd,MAA4B,CAAhC,EAAmC;AAC/B,WAAK,aAAL,GAAqB,CAArB;AACH,KAFD,MAEO,IAAI,KAAK,QAAL,GAAgB,CAApB,EAAuB;AAC1B,WAAK,aAAL,GAAqB,KAAK,QAAL,GAAgB,CAArC;AACH,KAFM,MAEA,IAAI,KAAK,QAAL,GAAgB,CAAC,CAArB,EAAwB;AAC3B,WAAK,aAAL,GAAqB,KAAK,QAAL,GAAgB,CAArC;AACH,KA3FiB,CA4FlB;AAEA;;;AACA,SAAK,aAAL,GAAqB,IAAI,KAAK,oBAA9B;;AAEA,QAAI,KAAK,SAAL,KAAmB,SAAS,CAAC,UAAjC,EAA6C;AACzC,WAAK,IAAL,GAAY,KAAK,aAAjB,CADyC,CACT;AACnC,KAFD,MAEO;AACH,WAAK,IAAL,GAAY,KAAK,cAAjB;AACH;AACJ;;AA7HmB,aAAT,SAAS;AAAK,WAAO,kCAAP;AAA4C;AA+HrE;;;;AAIG;;;AACH,YAAU;AACN,WAAO,IAAI,eAAJ,CAAoB,KAAK,aAAzB,CAAP;AACH;AAED;;;;;AAKG;;;AACH,SAAO;AACH,QAAI,KAAK,UAAL,KAAoB,CAAxB,EAA2B;AACvB,aAAO,IAAI,eAAJ,CAAoB,CAApB,CAAP;AACH,KAFD,MAEO;AACH,aAAO,IAAI,eAAJ,CACH,KAAK,UAAL,IAAmB,CAAC,CAAD,GAAK,KAAK,SAA7B,CADG,CAAP;AAGH;AACJ;AAED;;;;;AAKG;;;AACH,aAAW,CAAC,SAAD,EAAyB;AAChC,WAAO,IAAI,gBAAJ,CAAqB,SAArB,EAAgC,IAAhC,CAAP;AACH;AAED;;;;;AAKG;;;AACH,gBAAc,CAAC,CAAD,EAAe;AACzB,QAAM,MAAM,GAAG,IAAI,0CAAJ,EAAf;AACA,UAAM,CAAC,IAAP,GAAc,CAAC,CAAC,IAAhB;AACA,UAAM,CAAC,MAAP,GAAgB,CAAC,CAAC,MAAlB;AAEA,QAAM,cAAc,GAAG,CAAC,CAAC,eAAzB;AAEA,QAAM,cAAc,GAAG,KAAK,aAA5B,CAPyB,CASzB;;AACA,QAAM,iBAAiB,GAAG,cAAc,GAAG,cAA3C;AACA,QAAM,CAAC,OAAD,EAAU,SAAV,IAAuB,2BAA2B,CACpD,iBADoD,CAAxD;AAGA,UAAM,CAAC,IAAP,GAAc,OAAd;AACA,UAAM,CAAC,MAAP,GAAgB,SAAhB;;AACA,QAAI,CAAC,CAAC,UAAF,KAAiB,SAArB,EAAgC;AAC5B,YAAM,CAAC,UAAP,GAAoB,IAAI,+CAAJ,CAAqB,CAAC,CAAC,UAAF,CAAa,IAAlC,CAApB;AACH;;AACD,WAAO,MAAP;AACH;;AA7LsD;AAgMpD,IAAM,sBAAsB,GAAG;AAClC,SAAO,EAAE,CADyB;AAElC,OAAK,EAAE,CAF2B;AAGlC,OAAK,EAAE,CAH2B;AAIlC,WAAS,EAAE,CAJuB;AAKlC,YAAU,EAAE,CALsB;AAMlC,QAAM,EAAE,CAN0B;AAOlC,QAAM,EAAE,CAP0B;AAQlC,QAAM,EAAE,CAR0B;AASlC,QAAM,EAAE,CAT0B;AAUlC,SAAO,EAAE,EAVyB;AAWlC,UAAQ,EAAE;AAXwB,CAA/B;AAcA,IAAM,qBAAqB,GAAG,CACjC,OADiC,EAEjC,SAFiC,EAGjC,OAHiC,EAIjC,OAJiC,EAKjC,WALiC,EAMjC,YANiC,EAOjC,kBAPiC,EAQjC,mBARiC,EASjC,kBATiC,EAUjC,mBAViC,EAWjC,qBAXiC,EAYjC,sBAZiC,CAA9B;AAeA,IAAM,mBAAmB,GAAG,CAC/B,SAD+B,EAE/B,GAF+B,EAG/B,GAH+B,EAI/B,GAJ+B,EAK/B,GAL+B,EAM/B,GAN+B,EAO/B,IAP+B,EAQ/B,IAR+B,EAS/B,KAT+B,EAU/B,KAV+B,EAW/B,MAX+B,EAY/B,MAZ+B,CAA5B;AAeA,IAAM,wBAAwB,GAAG,CACpC,MADoC,EAEpC,KAFoC,EAGpC,IAHoC,EAIpC,GAJoC,EAKpC,GALoC,EAMpC,GANoC,EAOpC,IAPoC,EAQpC,KARoC,EASpC,MAToC,CAAjC;AAYA,IAAM,sBAAsB,GAAG,CAClC,sBAAsB,CAAC,QADW,EAElC,sBAAsB,CAAC,MAFW,EAGlC,sBAAsB,CAAC,MAHW,EAIlC,sBAAsB,CAAC,UAJW,EAKlC,sBAAsB,CAAC,OALW,EAMlC,sBAAsB,CAAC,SANW,EAOlC,sBAAsB,CAAC,MAPW,EAQlC,sBAAsB,CAAC,MARW,EASlC,sBAAsB,CAAC,OATW,CAA/B;AAYA,IAAM,kBAAkB,GAAG,CAA3B;AAEA,IAAM,0BAA0B,GAAG,CACtC,MADsC,EAEtC,KAFsC,EAGtC,IAHsC,EAItC,GAJsC,EAKtC,GALsC,EAMtC,GANsC,EAOtC,GAPsC,EAQtC,IARsC,EAStC,KATsC,EAUtC,MAVsC,CAAnC;AAaA,IAAM,kBAAkB,GAAG,CAC9B,sBAAsB,CAAC,QADO,EAE9B,sBAAsB,CAAC,MAFO,EAG9B,sBAAsB,CAAC,MAHO,EAI9B,sBAAsB,CAAC,UAJO,EAK9B,sBAAsB,CAAC,KALO,EAM9B,sBAAsB,CAAC,KANO,EAO9B,sBAAsB,CAAC,SAPO,EAQ9B,sBAAsB,CAAC,MARO,EAS9B,sBAAsB,CAAC,MATO,EAU9B,sBAAsB,CAAC,OAVO,CAA3B;AAYA,IAAM,iBAAiB,GAAG,CAA1B;AAEA,IAAM,wBAAwB,GAAG;AACpC,KAAG,CADiC;AAEpC,KAAG,CAFiC;AAGpC,KAAG,CAHiC;AAIpC,KAAG,CAJiC;AAKpC,KAAG,CALiC;AAMpC,KAAG,CANiC;AAOpC,KAAG;AAPiC,CAAjC;AASA,IAAM,qBAAqB,GAAG;AACjC,GAAC,EAAE,CAD8B;AAEjC,GAAC,EAAE,CAF8B;AAGjC,IAAE,EAAE,CAH6B;AAIjC,KAAG,EAAE,CAJ4B;AAKjC,MAAI,EAAE,CAL2B;AAMjC,GAAC,EAAE,CAAC,CAN6B;AAOjC,IAAE,EAAE,CAAC,CAP4B;AAQjC,KAAG,EAAE,CAAC,CAR2B;AASjC,MAAI,EAAE,CAAC;AAT0B,CAA9B,C,CAUJ;;AAEI,IAAM,oBAAoB,GAAG;AAChC,GAAC,EAAE,CAD6B;AAEhC,GAAC,EAAE,CAAC,CAF4B;AAGhC,GAAC,EAAE,CAH6B;AAIhC,IAAE,EAAE,CAJ4B;AAKhC,KAAG,EAAE,CAL2B;AAMhC,MAAI,EAAE,CAN0B;AAOhC,GAAC,EAAE,CAAC,CAP4B;AAQhC,IAAE,EAAE,CAAC,CAR2B;AAShC,KAAG,EAAE,CAAC,CAT0B;AAUhC,MAAI,EAAE,CAAC;AAVyB,CAA7B,C,CAWJ;;AAEH;;;;;;;;;;;;;;;;;;;;;;AAsBG;;AACG,MAAO,gBAAP,SAAgC,oDAAhC,CAAsD;AA4BxD,cAAY,SAAZ,EAAsC,OAAtC,EAA6C;AACzC;;AAEA,QAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,eAAS,GAAG,GAAZ;AACH;;AACD,QAAI,OAAO,KAAK,SAAhB,EAA2B;AACvB,aAAO,GAAG,IAAI,eAAJ,CAAoB,CAApB,CAAV;AACH,KAFD,MAEO,IAAI,OAAO,OAAP,KAAmB,QAAvB,EAAiC;AACpC,aAAO,GAAG,IAAI,eAAJ,CAAoB,OAApB,CAAV;AACH;;AAED,SAAK,IAAL,GAAY,EAAZ;;AACA,QAAI,OAAO,SAAP,KAAqB,QAAzB,EAAmC;AAC/B,WAAK,SAAL,GAAiB,SAAjB;AACH,KAFD,MAEO;AACH,WAAK,SAAL,GAAiB,mBAAmB,CAAC,OAApB,CAA4B,SAA5B,CAAjB,CADG,CAEH;AACH;;AACD,SAAK,OAAL,GAAe,OAAf;;AAEA,QACI,OAAO,CAAC,UAAR,KAAuB,CAAvB,IACG,SAAS,KAAK,sBAAsB,CAAC,OAF5C,EAGE;AACE,WAAK,SAAL,GAAiB,OAAO,CAAC,SAAzB;AACH,KALD,MAKO,IACH,sBAAsB,CAAC,OAAvB,CAA+B,KAAK,SAApC,KACG,sBAAsB,CAAC,OAAvB,CACC,sBAAsB,CAAC,UADxB,CAFA,EAKL;AACE;AACA,WAAK,SAAL,GAAiB,SAAS,CAAC,UAA3B;AACH,KARM,MAQA;AACH,WAAK,SAAL,GAAiB,SAAS,CAAC,SAA3B;AACH;;AACD,QAAM,yBAAyB,GACzB,sBAAsB,CAAC,KAAK,SAAL,GAAiB,CAAlB,CAD5B;AAEA,SAAK,IAAL,GACM,mBAAmB,CAAC,KAAK,SAAN,CAAnB,GACA,OAAO,CAAC,UAAR,CAAmB,QAAnB,EAFN;AAGA,SAAK,QAAL,GACM,qBAAqB,CAAC,KAAK,SAAN,CAArB,GACA,GADA,GAEA,OAAO,CAAC,QAHd;AAIA,SAAK,UAAL,GACM,mBAAmB,CAAC,KAAK,SAAN,CAAnB,GACA,OAAO,CAAC,gBAAR,CAAyB,QAAzB,EAFN;AAGA,SAAK,cAAL,GACM,qBAAqB,CAAC,KAAK,SAAN,CAArB,GACA,GADA,GAEA,OAAO,CAAC,cAHd;AAIA,SAAK,cAAL,GACM,mBAAmB,CAAC,KAAK,SAAN,CAAnB,GACA,OAAO,CAAC,oBAAR,CAA6B,QAA7B,EAFN;AAGA,SAAK,kBAAL,GACM,qBAAqB,CAAC,KAAK,SAAN,CAArB,GACA,GADA,GAEA,OAAO,CAAC,kBAHd;AAIA,SAAK,YAAL,GACM,mBAAmB,CAAC,KAAK,SAAN,CAAnB,GACA,OAAO,CAAC,QAAR,CAAiB,QAAjB,EAFN;AAGA,SAAK,gBAAL,GAAwB,yBAAyB,GAAG,GAA5B,GAAkC,KAAK,QAA/D;AACA,SAAK,kBAAL,GACM,mBAAmB,CAAC,KAAK,SAAN,CAAnB,GACA,OAAO,CAAC,cAAR,CAAuB,QAAvB,EAFN;AAGA,SAAK,sBAAL,GACM,yBAAyB,GAAG,GAA5B,GAAkC,KAAK,cAD7C;AAEA,SAAK,sBAAL,GACM,mBAAmB,CAAC,KAAK,SAAN,CAAnB,GACA,OAAO,CAAC,kBAAR,CAA2B,QAA3B,EAFN;AAGA,SAAK,0BAAL,GACM,yBAAyB,GAAG,GAA5B,GAAkC,KAAK,kBAD7C;AAEA,SAAK,YAAL,GAAoB,qBAAqB,CAAC,KAAK,SAAN,CAAzC;AACA,SAAK,WAAL,GAAmB,OAAO,CAAC,WAA3B;AACA,SAAK,cAAL,GAAsB,OAAO,CAAC,cAA9B;AACA,SAAK,MAAL,GAAc,OAAO,CAAC,MAAtB;AACA,SAAK,MAAL,GAAc,OAAO,CAAC,MAAtB,CA9EyC,CAgFzC;;AACA,QAAI,KAAK,WAAT,EAAsB;AAClB,WAAK,qBAAL,GAA6B,wBAAwB,CAAC,OAAzB,CACzB,mBAAmB,CAAC,KAAK,SAAN,CADM,CAA7B;AAGA,WAAK,wBAAL,GACM,wBAAwB,CAAC,MAAzB,GACA,CADA,GAEA,KAAK,qBAHX;AAIA,WAAK,wBAAL,GACM,wBAAwB,CACtB,KAAK,wBADiB,CAD9B;AAIH,KAZD,MAYO;AACH,WAAK,qBAAL,GAA6B,0BAA0B,CAAC,OAA3B,CACzB,mBAAmB,CAAC,KAAK,SAAN,CADM,CAA7B;AAGA,WAAK,wBAAL,GACM,0BAA0B,CAAC,MAA3B,GACA,CADA,GAEA,KAAK,qBAHX;AAIA,WAAK,wBAAL,GACM,0BAA0B,CACxB,KAAK,wBADmB,CADhC;AAIH;;AAED,SAAK,aAAL,GACM,KAAK,wBAAL,GAAgC,OAAO,CAAC,aAAR,CAAsB,QAAtB,EADtC,CA3GyC,CA6GzC;AACA;AACA;AACA;AACA;AAGA;AACA;AACH;;AAjJmB,aAAT,SAAS;AAAK,WAAO,mCAAP;AAA6C;AAmJtE;;;;AAIG;;;AACH,cAAY;AACR,QAAM,YAAY,GAAG,IAAI,CAAC,KAAL,CACjB,IAAI,CAAC,GAAL,CAAS,KAAK,OAAL,CAAa,aAAtB,IAAuC,CADtB,CAArB;AAGA,QAAM,cAAc,GACd,wBAAwB,CAAC,KAAK,OAAL,CAAa,gBAAd,CAD9B;AAEA,QAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,SAAN,CAApC;AAEA,QAAI,eAAJ;;AACA,QAAI,KAAK,OAAL,CAAa,WAAjB,EAA8B;AAC1B,qBAAe,GAAG,qBAAqB,CAAC,QAAD,CAAvC;AACH,KAFD,MAEO;AACH,qBAAe,GAAG,oBAAoB,CAAC,QAAD,CAAtC;AACH;;AAED,QAAI,SAAS,GAAG,YAAY,GAAG,EAAf,GAAoB,cAApB,GAAqC,eAArD,CAfQ,CAiBR;;AAEA,QAAI,KAAK,OAAL,CAAa,SAAb,KAA2B,SAAS,CAAC,UAAzC,EAAqD;AACjD,eAAS,IAAI,CAAC,CAAd;AACH;;AACD,QAAI,yCAAJ,EAAW;AACP,aAAO,CAAC,GAAR,CACI,oDAAoD,YADxD;AAGA,aAAO,CAAC,GAAR,CACI,sDACM,cAFV;AAIA,aAAO,CAAC,GAAR,CACI,gDAAgD,QADpD;AAGA,aAAO,CAAC,GAAR,CACI,uDACM,eAFV;AAIA,aAAO,CAAC,GAAR,CACI,iDAAiD,SADrD;AAGH;;AACD,WAAO,IAAI,iBAAJ,CAAsB,SAAtB,CAAP;AACH;AAED;;;;AAIG;;;AACH,gBAAc,CAAC,CAAD,EAAe;AACzB,QAAM,kBAAkB,GAAG,IAAI,QAAJ,CAAa,IAAb,EAAmB,KAAK,YAAL,EAAnB,CAA3B;AACA,WAAO,kBAAkB,CAAC,cAAnB,CAAkC,CAAlC,CAAP;AACH;AAED;;;AAGG;;;AACsB,MAArB,qBAAqB;AACrB,WAAO,mBAAmB,CAAC,KAAK,SAAN,CAA1B;AACH;AAED;;;AAGG;;;AACM,MAAL,KAAK;AACL,WAAO,KAAK,YAAL,GAAoB,KAA3B;AACH;;AA7NuD;AAgO5D;;;;;;;;;;AAUG;;AACG,MAAO,iBAAP,SAAiC,oDAAjC,CAAuD;AAczD,cAAY,QAAc,CAA1B,EAA2B;AACvB;AAEA,SAAK,SAAL,GAAiB,KAAjB;AACA,SAAK,KAAL,GAAa,IAAI,CAAC,KAAL,CAAW,KAAK,GAAG,KAAnB,CAAb;AACA,SAAK,QAAL,GAAgB,KAAhB;AACA,SAAK,UAAL,GAAkB,IAAI,CAAC,GAAL,CAAS,KAAT,CAAlB;;AAEA,QAAI,KAAK,QAAL,KAAkB,CAAtB,EAAyB;AACrB,WAAK,SAAL,GAAiB,SAAS,CAAC,OAA3B;AACH,KAFD,MAEO,IAAI,KAAK,QAAL,KAAkB,KAAK,UAA3B,EAAuC;AAC1C,WAAK,SAAL,GAAiB,SAAS,CAAC,SAA3B;AACH,KAFM,MAEA;AACH,WAAK,SAAL,GAAiB,SAAS,CAAC,UAA3B;AACH;;AAED,SAAK,KAAL,GAAa,4CAAc,KAAK,SAAnB,EAA8B,EAA9B,CAAb;AACA,SAAK,gBAAL,GAAwB,4CAAc,KAAK,UAAnB,EAA+B,EAA/B,CAAxB;;AACA,QAAI,KAAK,SAAL,KAAmB,SAAS,CAAC,UAAjC,EAA6C;AACzC,WAAK,cAAL,GAAsB,CAAC,CAAD,GAAK,KAAK,gBAAhC;AACH,KAFD,MAEO;AACH,WAAK,cAAL,GAAsB,KAAK,gBAA3B;AACH;;AAED,SAAK,aAAL,GAAqB,KAAK,KAA1B;;AACA,QAAI,KAAK,KAAL,GAAa,CAAjB,EAAoB;AAChB,WAAK,aAAL,GAAqB,KAAK,KAAK,KAA/B;AACH;;AAED,QAAI,KAAK,UAAL,KAAoB,CAAxB,EAA2B;AACvB,WAAK,eAAL,GAAuB,IAAvB;AACH,KAFD,MAEO;AACH,WAAK,eAAL,GAAuB,KAAvB;AACH;AACJ;;AA/CmB,aAAT,SAAS;AAAK,WAAO,oCAAP;AAA8C;AAiDvE;;;AAGG;;;AACH,SAAO;AACH,WAAO,IAAI,iBAAJ,CACH,KAAK,UAAL,IAAmB,CAAC,CAAD,GAAK,KAAK,SAA7B,CADG,CAAP;AAGH,GA1DwD,CA4DzD;;AAEA;;;;;AAKG;;;AACH,gBAAc,CAAC,CAAD,EAAe;AACzB,QAAI,iBAAiB,GAAG,KAAxB;;AACA,QAAI,CAAC,CAAC,MAAF,KAAa,SAAjB,EAA4B;AACxB;AACA,uBAAiB,GAAG,IAApB;AACH;;AACD,QAAM,GAAG,GAAG,CAAC,CAAC,EAAd;AACA,QAAM,QAAQ,GAAG,IAAI,0CAAJ,EAAjB;AACA,YAAQ,CAAC,EAAT,GAAc,GAAG,GAAG,KAAK,SAAzB;;AACA,QAAI,iBAAJ,EAAuB;AACnB,cAAQ,CAAC,MAAT,GAAkB,SAAlB;AACH;;AACD,WAAO,QAAP;AACH;;AAjFwD;AAoFtD,IAAM,iBAAiB,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,EAA0B,GAA1B,EAA+B,GAA/B,CAA1B;AAEP;;;;;AAKG;;AACG,SAAU,2BAAV,CACF,EADE,EACQ;AAEV,MAAI,UAAJ;AACA,MAAI,MAAJ;;AACA,MAAI,EAAE,KAAK,CAAX,EAAc;AACV,WAAO,CAAC,GAAD,EAAM,CAAC,CAAP,CAAP;AACH,GAFD,MAEO,IAAI,EAAE,GAAG,CAAT,EAAY;AACf,UAAM,GAAG,IAAI,CAAC,KAAL,CAAW,CAAC,EAAE,GAAG,CAAN,IAAW,CAAtB,CAAT;AACA,cAAU,GAAG,EAAE,GAAG,CAAL,GAAS,MAAM,GAAG,CAA/B;AACH,GAHM,MAGA;AACH;AACA,UAAM,GAAG,IAAI,CAAC,KAAL,CAAW,EAAE,GAAG,CAAhB,CAAT;AACA,cAAU,GAAG,EAAE,GAAG,CAAL,GAAS,CAAC,MAAM,GAAG,CAAV,IAAe,CAArC;AACH;;AACD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAD,CAAlC;AACA,SAAO,CAAC,QAAD,EAAW,MAAX,CAAP;AACH;AAED;;;;;;;;;;;;;;;;;;;AAmBG;;AACG,MAAO,QAAP,SAAwB,oDAAxB,CAA8C;AA4BhD,cAAY,GAAG,QAAf,EAAuB;AACnB,YADmB,CAEnB;;AACA,QAAI,SAAJ;AACA,QAAI,OAAJ;;AACA,QAAI,QAAQ,CAAC,MAAT,KAAoB,CAAxB,EAA2B;AACvB,UAAM,IAAI,GAAG,QAAQ,CAAC,CAAD,CAArB;;AACA,UAAI,OAAO,IAAP,KAAgB,QAApB,EAA8B;AAC1B;AACA,YAAM,SAAS,GAAG,IAAI,CAAC,OAAL,CAAa,KAAb,EAAoB,EAApB,EAAwB,OAAxB,CAAgC,GAAhC,EAAqC,EAArC,CAAlB;AACA,YAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAL,CAAa,KAAb,EAAoB,EAApB,CAAD,CAAtB;;AACA,YAAI,IAAI,CAAC,QAAL,CAAc,GAAd,CAAJ,EAAwB;AACpB,iBAAO,IAAI,CAAC,CAAZ;AACH;;AACD,YAAM,EAAE,GAAG,IAAI,eAAJ,CAAoB,OAApB,CAAX;AACA,YAAM,EAAE,GAAG,IAAI,gBAAJ,CAAqB,SAArB,EAAgC,EAAhC,CAAX;AACA,aAAK,QAAL,GAAgB,EAAhB;AACA,aAAK,SAAL,GAAiB,KAAK,QAAL,CAAc,YAAd,EAAjB;AACH,OAXD,MAWO,IAAI,IAAI,CAAC,SAAL,KAAmB,SAAvB,EAAkC;AACrC;AACA,aAAK,QAAL,GAAgB,IAAhB;AACA,aAAK,SAAL,GAAiB,KAAK,QAAL,CAAc,YAAd,EAAjB;AACH,OAJM,MAIA;AACH,eAAO,CAAC,KAAR,CAAc,6CAAd;AACH;AACJ,KApBD,MAoBO,IAAI,QAAQ,CAAC,MAAT,KAAoB,CAAxB,EAA2B;AAC9B,UACI,QAAQ,CAAC,CAAD,CAAR,CAAY,KAAZ,KAAsB,SAAtB,IACG,QAAQ,CAAC,CAAD,CAAR,CAAY,eAAZ,KAAgC,SAFvC,EAGE;AACE,aAAK,QAAL,GAAgB,QAAQ,CAAC,CAAD,CAAxB;AACA,aAAK,SAAL,GAAiB,QAAQ,CAAC,CAAD,CAAzB;AACH,OAND,MAMO;AACH,YAAI,EAAE,GAAG,QAAQ,CAAC,CAAD,CAAjB;AACA,YAAI,EAAE,GAAG,QAAQ,CAAC,CAAD,CAAjB;;AACA,YAAI,EAAE,CAAC,OAAH,KAAe,SAAf,IAA4B,EAAE,CAAC,OAAH,CAAW,QAAX,CAAoB,OAApB,CAAhC,EAA8D;AAC1D,cAAM,EAAE,GAAG,EAAX;AACA,YAAE,GAAG,IAAI,uCAAJ,EAAL;AACA,YAAE,CAAC,KAAH,GAAW,EAAX;AACH;;AACD,YAAI,EAAE,CAAC,OAAH,KAAe,SAAf,IAA4B,EAAE,CAAC,OAAH,CAAW,QAAX,CAAoB,OAApB,CAAhC,EAA8D;AAC1D,cAAM,EAAE,GAAG,EAAX;AACA,YAAE,GAAG,IAAI,uCAAJ,EAAL;AACA,YAAE,CAAC,KAAH,GAAW,EAAX;AACH;;AACD,YAAM,IAAI,GAAG,cAAc,CAAC,EAAD,EAAK,EAAL,CAA3B;AACA,YAAM,IAAI,GAAG,gBAAgB,CAAC,EAAD,EAAK,EAAL,CAA7B;AAEA,aAAK,QAAL,GAAgB,mBAAmB,CAAC,IAAD,EAAO,IAAP,CAAnC;AACA,aAAK,SAAL,GAAiB,IAAjB;AAEA,iBAAS,GAAG,EAAZ;AACA,eAAO,GAAG,EAAV;AACH;AACJ;;AACD,SAAK,UAAL,GAAkB,SAAlB;AACA,SAAK,QAAL,GAAgB,OAAhB;AACA,SAAK,MAAL;AACH;;AArFmB,aAAT,SAAS;AAAK,WAAO,2BAAP;AAAqC;AAuF9D;;;AAGG;;;AACW,MAAV,UAAU;AACV,WAAO,IAAI,QAAJ,CAAa,KAAK,QAAL,CAAc,aAA3B,CAAP;AACH;;AAED,QAAM;AACF,SAAK,SAAL,GAAiB,KAAK,SAAL,CAAe,SAAhC;AACA,SAAK,SAAL,GAAiB,KAAK,QAAL,CAAc,SAA/B;AACA,SAAK,YAAL,GAAoB,KAAK,QAAL,CAAc,SAAlC,CAHE,CAIF;;AACA,SAAK,OAAL,GAAe,KAAK,QAAL,CAAc,OAA7B;AAEA,SAAK,IAAL,GAAY,KAAK,QAAL,CAAc,IAA1B;AACA,SAAK,QAAL,GAAgB,KAAK,QAAL,CAAc,QAA9B;AACA,SAAK,UAAL,GAAkB,KAAK,QAAL,CAAc,UAAhC;AACA,SAAK,cAAL,GAAsB,KAAK,QAAL,CAAc,cAApC;AACA,SAAK,cAAL,GAAsB,KAAK,QAAL,CAAc,cAApC;AACA,SAAK,kBAAL,GAA0B,KAAK,QAAL,CAAc,kBAAxC;AAEA,SAAK,YAAL,GAAoB,KAAK,QAAL,CAAc,YAAlC;AACA,SAAK,gBAAL,GAAwB,KAAK,QAAL,CAAc,gBAAtC;AACA,SAAK,kBAAL,GAA0B,KAAK,QAAL,CAAc,kBAAxC;AACA,SAAK,sBAAL,GAA8B,KAAK,QAAL,CAAc,sBAA5C,CAjBE,CAmBF;;AACA,SAAK,cAAL,GAAsB,KAAK,QAAL,CAAc,cAApC;AAEA,SAAK,eAAL,GAAuB,KAAK,SAAL,CAAe,eAAtC;AACA,SAAK,SAAL,GAAiB,KAAK,SAAL,CAAe,SAAhC;AACA,SAAK,aAAL,GAAqB,KAAK,SAAL,CAAe,aAApC;AACA,SAAK,KAAL,GAAa,KAAK,SAAL,CAAe,KAA5B;AACA,SAAK,MAAL,GAAc,KAAK,eAAL,IAAwB,KAAK,cAA3C;AACA,SAAK,MAAL,GAAc,KAAK,QAAL,CAAc,MAA5B;AACH;AAED;;;AAGG;;;AACU,MAAT,SAAS;AACT,WAAO,KAAK,UAAZ;AACH;;AAEY,MAAT,SAAS,CAAC,CAAD,EAAa;AACtB,SAAK,UAAL,GAAkB,CAAlB;AACA,QAAM,EAAE,GAAG,CAAC,CAAC,KAAb;AACA,QAAM,EAAE,GAAG,KAAK,cAAL,CAAoB,EAApB,CAAX;AACA,SAAK,QAAL,GAAgB,CAAC,CAAC,KAAF,EAAhB;AACA,SAAK,QAAL,CAAc,KAAd,GAAsB,EAAtB;AACH;AAED;;;AAGG;;;AACQ,MAAP,OAAO;AACP,WAAO,KAAK,QAAZ;AACH;;AAEU,MAAP,OAAO,CAAC,CAAD,EAAE;AACT,SAAK,QAAL,GAAgB,CAAhB;AACA,QAAM,EAAE,GAAG,CAAC,CAAC,KAAb;AACA,QAAM,EAAE,GAAG,KAAK,cAAL,CAAoB,EAApB,EAAwB;AAAC,aAAO,EAAE;AAAV,KAAxB,CAAX;AACA,SAAK,UAAL,GAAkB,CAAC,CAAC,KAAF,EAAlB;AACA,SAAK,UAAL,CAAgB,KAAhB,GAAwB,EAAxB;AACH;AAGD;;AAEG;;;AACH,aAAW;AACP,QAAM,EAAE,GAAG,KAAK,UAAhB;AACA,QAAM,cAAc,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,CAAvB;;AACA,QAAI,cAAc,CAAC,OAAf,CAAuB,EAAvB,MAA+B,CAAC,CAApC,EAAuC;AACnC,aAAO,IAAP;AACH,KAFD,MAEO;AACH,aAAO,KAAP;AACH;AACJ,GA1K+C,CA4KhD;AACA;;AACA;;;;;;;;AAQG;;;AACH,gBAAc,CAAC,CAAD,EAAI;AAAE,WAAO,GAAC,KAAV;AAAiB,iBAAa,GAAC;AAA/B,MAAmC,EAAvC,EAAyC;AACnD;;;;;AAKG;AACH,QAAM,MAAM,GAAG,KAAK,QAAL,CAAc,OAAd,CAAsB,cAAtB,CAAqC,CAArC,CAAf;AACA,UAAM,CAAC,UAAP,GAAoB,SAApB,CARmD,CASnD;;AACA,QAAI,cAAJ;;AACA,QAAI,CAAC,OAAL,EAAc;AACV,oBAAc,GAAG,KAAK,SAAL,CAAe,SAAf,GAA2B,IAAI,CAAC,KAAL,CAAW,MAAM,CAAC,EAAP,GAAY,CAAC,CAAC,EAAzB,CAA5C;AACH,KAFD,MAEO;AACH,oBAAc,GAAI,CAAC,CAAD,GAAK,KAAK,SAAL,CAAe,SAArB,GAAkC,IAAI,CAAC,KAAL,CAAW,MAAM,CAAC,EAAP,GAAY,CAAC,CAAC,EAAzB,CAAnD;AACH;;AACD,QAAI,cAAc,KAAK,CAAvB,EAA0B;AACtB,YAAM,CAAC,UAAP,GAAoB,IAAI,+CAAJ,CAAqB,cAArB,CAApB;AACH;;AACD,QAAI,yCAAJ,EAAW;AACP,aAAO,CAAC,GAAR,CAAY,yCAAyC,MAAM,CAAC,IAA5D;AACA,aAAO,CAAC,GAAR,CACI,2CAA2C,MAAM,CAAC,MADtD;AAGA,aAAO,CAAC,GAAR,CACI,sDACM,cAFV;AAIH;;AACD,WAAO,MAAP;AACH;;AArN+C;AAwN9C,SAAU,+BAAV,CACF,IADE,EAEF,IAFE,EAEE;AAEJ,MAAI,OAAO,IAAP,KAAgB,QAApB,EAA8B;AAC1B,QAAI,GAAG,IAAI,eAAJ,CAAoB,IAApB,CAAP;AACH;;AACD,MAAI,OAAO,IAAP,KAAgB,QAApB,EAA8B;AAC1B,QAAI,GAAG,IAAI,iBAAJ,CAAsB,IAAtB,CAAP;AACH;;AACD,MAAM,SAAS,GAAG,iCAAiC,CAAC,IAAD,EAAO,IAAP,CAAnD;;AACA,MAAM,IAAI,GAAG,IAAI,gBAAJ,CAAqB,SAArB,EAAgC,IAAhC,CAAb;AACA,SAAO,IAAI,QAAJ,CAAa,IAAb,EAAmB,IAAnB,CAAP;AACH;AAED;;AAEG;;AACG,SAAU,cAAV,CAAyB,EAAzB,EAA6B,EAA7B,EAA+B;AACjC,MAAI,EAAE,GAAG,EAAT;;AACA,MAAI,EAAE,CAAC,KAAH,KAAa,SAAjB,EAA4B;AACxB,MAAE,GAAG,EAAE,CAAC,KAAR;AACH;;AACD,MAAI,EAAE,GAAG,EAAT;;AACA,MAAI,EAAE,CAAC,KAAH,KAAa,SAAjB,EAA4B;AACxB,MAAE,GAAG,EAAE,CAAC,KAAR;AACH;;AACD,MAAM,SAAS,GAAG,EAAE,CAAC,eAAH,GAAqB,EAAE,CAAC,eAA1C;AACA,MAAM,OAAO,GAAG,8BAA8B,CAAC,SAAD,CAA9C;AACA,SAAO,IAAI,eAAJ,CAAoB,OAApB,CAAP;AACH;AAEK,SAAU,8BAAV,CACF,SADE,EACO;AAET,MAAI,SAAS,KAAK,CAAlB,EAAqB;AACjB,WAAO,CAAP;AACH,GAFD,MAEO,IAAI,SAAS,GAAG,CAAhB,EAAmB;AACtB,WAAO,SAAS,GAAG,CAAnB;AACH,GAFM,MAEA;AACH,WAAO,SAAS,GAAG,CAAnB;AACH;AACJ;AAEK,SAAU,gBAAV,CAA2B,EAA3B,EAA+B,EAA/B,EAAiC;AACnC,MAAI,EAAE,GAAG,EAAT;;AACA,MAAI,EAAE,CAAC,KAAH,KAAa,SAAjB,EAA4B;AACxB,MAAE,GAAG,EAAE,CAAC,KAAR;AACH;;AACD,MAAI,EAAE,GAAG,EAAT;;AACA,MAAI,EAAE,CAAC,KAAH,KAAa,SAAjB,EAA4B;AACxB,MAAE,GAAG,EAAE,CAAC,KAAR;AACH;;AACD,SAAO,IAAI,iBAAJ,CAAsB,EAAE,CAAC,EAAH,GAAQ,EAAE,CAAC,EAAjC,CAAP;AACH;AAEK,SAAU,mBAAV,CAA8B,IAA9B,EAAoC,IAApC,EAAwC;AAC1C,MAAM,SAAS,GAAG,iCAAiC,CAAC,IAAD,EAAO,IAAP,CAAnD,CAD0C,CAE1C;;;AACA,SAAO,IAAI,gBAAJ,CAAqB,SAArB,EAAgC,IAAhC,CAAP;AACH;AAEK,SAAU,iCAAV,CACF,IADE,EAEF,IAFE,EAEE;AAEJ,MAAM,QAAQ,GAAG,CAAC,SAAD,EAAY,CAAZ,EAAe,CAAf,EAAkB,CAAlB,EAAqB,CAArB,EAAwB,CAAxB,EAA2B,CAA3B,EAA8B,EAA9B,CAAjB;AACA,MAAM,WAAW,GACX,QAAQ,CAAC,IAAI,CAAC,gBAAN,CAAR,GAAkC,KAAK,IAAI,CAAC,iBADlD;AAEA,MAAI,UAAU,GAAG,CAAjB;;AACA,MACI,IAAI,CAAC,SAAL,KAAmB,IAAI,CAAC,SAAxB,IACG,IAAI,CAAC,SAAL,KAAmB,SAAS,CAAC,OADhC,IAEG,IAAI,CAAC,SAAL,KAAmB,SAAS,CAAC,OAHpC,EAIE;AACE;AACA;AACA,cAAU,GAAG,CAAC,CAAD,GAAK,IAAI,CAAC,UAAvB;AACH,GARD,MAQO,IAAI,IAAI,CAAC,UAAL,KAAoB,CAAxB,EAA2B;AAC9B,cAAU,GAAG,IAAI,CAAC,QAAlB,CAD8B,CACF;AAC/B,GAFM,MAEA;AACH;AACA,cAAU,GAAG,IAAI,CAAC,UAAlB;AACH;;AACD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAL,CAAW,UAAX,CAArB;AACA,MAAI,SAAJ;;AACA,MAAI,IAAI,CAAC,WAAT,EAAsB;AAClB,aAAS,GACH,sBAAsB,CACpB,kBAAkB,GAAG,YAArB,GAAoC,WADhB,CAD5B;AAIH,GALD,MAKO;AACH,aAAS,GACH,kBAAkB,CAChB,iBAAiB,GAAG,YAApB,GAAmC,WADnB,CADxB;AAIH;;AACD,SAAO,SAAP;AACH;AAED;;;;AAIG;;AACG,SAAU,GAAV,CAAc,YAAd,EAA0B;AAC5B,MAAM,EAAE,GAAG,IAAI,0CAAJ,CAAgB,IAAhB,CAAX;AACA,MAAI,EAAE,GAAG,IAAI,0CAAJ,CAAgB,IAAhB,CAAT;;AACA,OAAK,IAAM,CAAX,IAAgB,YAAhB,EAA8B;AAC1B,MAAE,GAAG,CAAC,CAAC,cAAF,CAAiB,EAAjB,CAAL;AACH;;AACD,SAAO,IAAI,QAAJ,CAAa,EAAb,EAAiB,EAAjB,CAAP;AACH,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1pCD;;;;;;;;;;;;;;;;;;AAkBG;AACH;AACA;AAEA;AACA;AACA;AACA;AAEO,IAAM,eAAe,GAAG;AAC3B,OAAK,EAAE,CADoB;AAE3B,OAAK,EAAE,CAAC,CAFmB;AAG3B,QAAM,EAAE,CAAC,CAHkB;AAI3B,UAAQ,EAAE,CAAC,CAJgB;AAK3B,QAAM,EAAE,CALmB;AAM3B,YAAU,EAAE,CAAC,CANc;AAO3B,SAAO,EAAE,CAAC;AAPiB,CAAxB;AAUP;;;;AAIG;;AACG,SAAU,kCAAV,CAA6C,UAA7C,EAAuD;AACzD,MAAI,UAAU,KAAK,IAAnB,EAAyB;AACrB,cAAU,GAAG,IAAb;AACH,GAFD,MAEO,IAAI,UAAU,KAAK,IAAnB,EAAyB;AAC5B,cAAU,GAAG,IAAb;AACH,GAFM,MAEA,IAAI,UAAU,CAAC,QAAX,CAAoB,GAApB,KAA4B,CAAC,UAAU,CAAC,UAAX,CAAsB,GAAtB,CAAjC,EAA6D;AAChE,cAAU,GAAG,UAAU,CAAC,OAAX,CAAmB,IAAnB,EAAyB,GAAzB,CAAb;AACH;;AACD,SAAO,UAAP;AACH;AAED;;;;;;;;;;;;;;;;AAgBG;;AACG,MAAO,YAAP,SAA4B,gDAA5B,CAA8C;AAmBhD,cAAY,MAAM,GAAC,CAAnB,EAAoB;AAChB;AAjBM,mBAAkB,CAAlB,CAgBU,CAbpB;;AACA,uBAAc,CACV,GADU,EACL,GADK,EACA,IADA,EACM,IADN,EACY,IADZ,EAEV,IAFU,EAEJ,IAFI,EAEE,IAFF,EAEQ,IAFR,EAGV,KAHU,EAGH,KAHG,EAGI,KAHJ,EAGW,KAHX,CAAd;AAMA,wBAAe,CACX,GADW,EACN,GADM,EACD,GADC,EACI,GADJ,EAEX,GAFW,EAEN,GAFM,EAED,IAFC,EAEK,IAFL,EAGX,IAHW,EAGL,IAHK,EAGC,IAHD,EAGO,IAHP,EAGa,IAHb,CAAf;AAQI,SAAK,cAAL,GAAsB,CAAtB;AAEA,SAAK,OAAL,GAAe,MAAf;AACA,SAAK,oBAAL,GAA4B,SAA5B;AACH;;AAxBmB,aAAT,SAAS;AAAK,WAAO,0BAAP;AAAoC;;AA0B7D,YAAU;AACN,QAAI,KAAK,MAAL,KAAgB,CAApB,EAAuB;AACnB,aAAO,uBAAP;AACH,KAFD,MAEO,IAAI,KAAK,MAAL,KAAgB,CAAC,CAArB,EAAwB;AAC3B,aAAO,WAAP;AACH,KAFM,MAEA,IAAI,KAAK,MAAL,KAAgB,CAApB,EAAuB;AAC1B,aAAO,YAAP;AACH,KAFM,MAEA,IAAI,KAAK,MAAL,GAAc,CAAlB,EAAqB;AACxB,0BAAa,IAAI,CAAC,GAAL,CAAS,KAAK,MAAd,CAAb;AACH,KAFM,MAEA;AACH,0BAAa,KAAK,MAAlB;AACH;AACJ;;AAES,MAAN,MAAM;AACN,WAAO,KAAK,OAAZ;AACH;;AAES,MAAN,MAAM,CAAC,CAAD,EAAU;AAChB,SAAK,oBAAL,GAA4B,EAA5B;AACA,SAAK,OAAL,GAAe,CAAf;AACH;AAED;;AAEG;;;AACM,MAAL,KAAK;AACL,QAAI,KAAK,MAAL,KAAgB,CAApB,EAAuB;AACnB,aAAO,CAAP;AACH,KAFD,MAEO;AACH;AACA,aAAO,KAAK,IAAI,CAAC,GAAL,CAAS,KAAK,MAAd,CAAL,GAA6B,CAApC;AACH;AACJ;AAED;;;;;;;;;;;;;;AAcG;;;AACe,MAAd,cAAc;AACd,QAAI,KAAK,oBAAL,KAA8B,SAAlC,EAA6C;AACzC,aAAO,KAAK,oBAAZ;AACH;;AACD,QAAI,QAAQ,GAAG,IAAf;AACA,QAAI,UAAU,GAAG,GAAjB;;AACA,QAAI,KAAK,MAAL,GAAc,CAAlB,EAAqB;AACjB,cAAQ,GAAG,IAAX;AACA,gBAAU,GAAG,GAAb;AACH;;AACD,QAAM,aAAa,GAAG,IAAI,+CAAJ,CAAsB,QAAtB,CAAtB;AACA,QAAM,IAAI,GAAG,EAAb;AACA,QAAI,KAAK,GAAG,IAAI,0CAAJ,CAAgB,UAAhB,CAAZ;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,IAAI,CAAC,GAAL,CAAS,KAAK,MAAd,CAApB,EAA2C,CAAC,EAA5C,EAAgD;AAC5C,WAAK,GAAG,aAAa,CAAC,cAAd,CAA6B,KAA7B,CAAR;AACA,WAAK,CAAC,MAAN,GAAe,CAAf;AACA,UAAI,CAAC,IAAL,CAAU,KAAV;AACH;;AACD,SAAK,oBAAL,GAA4B,IAA5B;AACA,WAAO,IAAP;AACH;AAED;;;;;;;;AAQG;;;AACH,WAAS;AACL,QAAI,KAAK,MAAL,IAAe,CAAnB,EAAsB;AAClB,aAAO,KAAK,YAAL,CAAkB,KAAK,MAAvB,CAAP;AACH,KAFD,MAEO;AACH,aAAO,KAAK,WAAL,CAAiB,IAAI,CAAC,GAAL,CAAS,KAAK,MAAd,CAAjB,CAAP;AACH;AACJ;AAED;;;AAGG;;;AACH,WAAS;AACL,QAAM,UAAU,GAAG,KAAK,MAAL,GAAc,CAAjC;;AACA,QAAI,UAAU,IAAI,CAAlB,EAAqB;AACjB,aAAO,KAAK,YAAL,CAAkB,UAAlB,CAAP;AACH,KAFD,MAEO;AACH,aAAO,KAAK,WAAL,CAAiB,IAAI,CAAC,GAAL,CAAS,UAAT,CAAjB,CAAP;AACH;AACJ;AAED;;;;;;;AAOG;;;AACH,SAAO;AACH,WAAO,CAAC,GAAR,CAAY,kDAAZ;AACA,QAAM,QAAQ,GAAG,KAAK,SAAL,EAAjB;AACA,WAAO,QAAQ,CAAC,OAAT,CAAiB,IAAjB,EAAuB,GAAvB,CAAP;AACH;AAED;;;;;AAKG;;;AACH,kBAAgB,CAAC,IAAD,EAAa;AACzB,QAAM,GAAG,GAAG,KAAK,cAAjB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,GAAG,CAAC,MAAxB,EAAgC,CAAC,EAAjC,EAAqC;AACjC,UAAI,GAAG,CAAC,CAAD,CAAH,CAAO,IAAP,KAAgB,IAApB,EAA0B;AACtB,YAAI,GAAG,CAAC,CAAD,CAAH,CAAO,UAAP,KAAsB,SAA1B,EAAqC;AACjC,iBAAO,SAAP;AACH,SAHqB,CAItB;;;AACA,eAAO,IAAI,+CAAJ,CAAqB,GAAG,CAAC,CAAD,CAAH,CAAO,UAAP,CAAkB,KAAvC,CAAP;AACH;AACJ;;AACD,WAAO,SAAP;AACH;AAED;;;;;;;;;;;;;;;;;AAiBG;;;AACH,qBAAmB,CAAC,CAAD,EAAe;AAC9B,QAAM,cAAc,GAAG,CAAC,CAAC,MAAzB;AACA,QAAI,aAAJ;AACA,QAAI,UAAJ;;AACA,QAAI,KAAK,MAAL,KAAgB,CAApB,EAAuB;AACnB,aAAO,IAAI,0CAAJ,CAAgB,CAAC,CAAC,cAAlB,CAAP;AACH,KAFD,MAEO,IAAI,KAAK,MAAL,GAAc,CAAlB,EAAqB;AACxB,gBAAU,GAAG,IAAI,CAAC,GAAL,CAAS,KAAK,MAAd,CAAb;AACA,mBAAa,GAAG,IAAI,+CAAJ,CAAsB,IAAtB,CAAhB;AACH,KAHM,MAGA;AACH,gBAAU,GAAG,KAAK,MAAlB;AACA,mBAAa,GAAG,IAAI,+CAAJ,CAAsB,IAAtB,CAAhB;AACH;;AACD,QAAI,QAAQ,GAAG,CAAf;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,UAApB,EAAgC,CAAC,EAAjC,EAAqC;AACjC,cAAQ,GAAG,aAAa,CAAC,cAAd,CAA6B,QAA7B,CAAX;AACH;;AACD,YAAQ,CAAC,MAAT,GAAkB,cAAlB;AACA,WAAO,QAAP;AACH;;AAxM+C;AA2MpD;;;;;;;;;;;AAWG;;AACG,MAAO,GAAP,SAAmB,YAAnB,CAA+B;AAOjC,cAAY,OAAO,GAAC,GAApB,EAAyB,IAAI,GAAC,SAA9B,EAAuC;AACnC,QAAI,OAAO,KAAK,SAAhB,EAA2B;AACvB,aAAO,GAAG,GAAV;AACH;;AACD,QAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,UAAM,SAAS,GAAG,OAAO,CAAC,WAAR,EAAlB;;AACA,UAAI,OAAO,KAAK,SAAhB,EAA2B;AACvB,YAAI,GAAG,OAAP;AACH,OAFD,MAEO;AACH,YAAI,GAAG,OAAP;AACH;AACJ;;AAED,QAAM,WAAW,GAAG,sEAAsE,KAAtE,CAChB,GADgB,CAApB;AAGA,QAAM,WAAW,GAAG,WAAW,CAAC,OAAZ,CAAoB,OAAO,CAAC,WAAR,EAApB,CAApB;;AACA,QAAI,WAAW,KAAK,CAAC,CAArB,EAAwB;AACpB,YAAM,IAAI,2DAAJ,CAAqB,6BAA6B,OAAlD,CAAN;AACH;;AACD,QAAM,SAAS,GAAG,eAAe,CAAC,IAAD,CAAf,IAAyB,CAA3C;AACA,QAAM,MAAM,GAAG,WAAW,GAAG,SAAd,GAA0B,EAAzC;;AACA,QAAI,yCAAJ,EAAW;AACP,aAAO,CAAC,GAAR,CAAY,kBAAkB,MAAlB,GAA2B,YAA3B,GAA0C,OAAtD;AACH;;AACD,UAAM,MAAN;AAEA,SAAK,KAAL,GAAa,IAAI,0CAAJ,CAAgB,OAAhB,CAAb;AACA,SAAK,IAAL,GAAY,IAAZ;AACA,SAAK,MAAL,GAAoC,KAAK,QAAL,EAApC;AACH;;AApCmB,aAAT,SAAS;AAAK,WAAO,iBAAP;AAA2B;;AAsCpD,YAAU;AACN,WAAO,KAAK,sBAAL,GAA8B,GAA9B,GAAoC,KAAK,IAAhD;AACH;;AAEyB,MAAtB,sBAAsB;AACtB,QAAI,SAAS,GAAG,KAAK,KAAL,CAAW,IAA3B;;AACA,QAAI,KAAK,IAAL,KAAc,OAAlB,EAA2B;AACvB,eAAS,GAAG,SAAS,CAAC,WAAV,EAAZ;AACH,KAFD,MAEO,IAAI,KAAK,IAAL,KAAc,OAAlB,EAA2B;AAC9B,eAAS,GAAG,SAAS,CAAC,WAAV,EAAZ;AACH;;AACD,WAAO,SAAP;AACH;AAED;;;;;;AAMG;;;AACH,UAAQ,CAAC,SAAS,GAAC,SAAX,EAAoB;AACxB,QAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,eAAS,GAAG,KAAK,IAAjB;AACH;;AACD,QAAM,QAAQ,GAAG,KAAK,KAAtB;;AACA,QAAI,SAAS,KAAK,OAAlB,EAA2B;AACvB,aAAO,IAAI,+CAAJ,CAAqB,QAArB,CAAP;AACH,KAFD,MAEO,IAAI,SAAS,KAAK,OAAlB,EAA2B;AAC9B,aAAO,IAAI,+CAAJ,CAAqB,QAArB,CAAP;AACH,KAFM,MAEA,IAAI,CAAC,gBAAD,EAAmB,gBAAnB,EAAqC,QAArC,CAA8C,SAA9C,CAAJ,EAA8D;AACjE,aAAO,IAAI,uDAAJ,CAA6B,QAA7B,CAAP;AACH,KAFM,MAEA,IAAI,CAAC,eAAD,EAAkB,eAAlB,EAAmC,QAAnC,CAA4C,SAA5C,CAAJ,EAA4D;AAC/D,aAAO,IAAI,+DAAJ,CAAqC,QAArC,CAAP;AACH,KAFM,MAEA;AACH,aAAO,IAAI,kDAAJ,CAAwB,QAAxB,CAAP;AACH;AACJ,GA5EgC,CA8EjC;AACA;;;AACc,MAAV,UAAU;AACV,WAAO,KAAK,MAAL,CAAY,UAAnB;AACH;;AAED,YAAU,CAAC,GAAG,IAAJ,EAAQ;AACd,WAAO,KAAK,MAAL,CAAY,UAAZ,CAAuB,GAAG,IAA1B,CAAP;AACH;;AAED,iBAAe,CAAC,MAAD,EAAS,GAAG,IAAZ,EAAgB;AAC3B,WAAO,KAAK,MAAL,CAAY,eAAZ,CAA4B,MAA5B,EAAoC,GAAG,IAAvC,CAAP;AACH;;AAED,yBAAuB,CAAC,WAAD,EAAc,GAAG,IAAjB,EAAqB;AACxC,WAAO,KAAK,MAAL,CAAY,uBAAZ,CAAoC,WAApC,EAAiD,GAAG,IAApD,CAAP;AACH;;AA9FgC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7RrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BG;AACH;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;AAgBG;;AACG,MAAO,GAAP,CAAU;AAAhB;AACI,mBAAoB,CAAC,KAAD,CAApB,CADJ,CACiC;;AAC7B,qBAAY;AACR,WAAK,EAAE;AADC,KAAZ;AAIA,uBAAsB,CAAtB;AAEA,cAAa,CAAb,CARJ,CAQqB;;AACjB,iBAAgB,EAAhB;AACA,kBAAiB,GAAjB;AAIA,oBAAmB,EAAnB;AACA,oBAAmB,EAAnB;AA+IH;AA7IG;;;;;AAKG;;;AACH,SAAO,CAAC,MAAD,EAAO;AACV,QAAM,QAAQ,GAAG;AACb,WAAK,EAAE,KAAK,QADC;AAEb,OAAC,EAAE,MAFU;AAGb,OAAC,EAAE,CAHU;AAIb,WAAK,EAAE,iBAAiB,KAAK,QAJhB;AAKb,QAAE,EAAE,KAAK,EALI;AAMb,WAAK,EAAE,KAAK,KAAL,GAAa,KAAK,WANZ;AAOb,YAAM,EAAE,KAAK,MAAL,GAAc,KAAK,WAPd;AAQb,QAAE,EAAE,CARS;AASb,QAAE,EAAE;AATS,KAAjB;AAWA,QAAM,MAAM,GAAG,kDAAoB,MAApB,EAA4B,QAA5B,CAAf;;AACA,SAAK,IAAM,CAAX,IAAgB,KAAK,SAArB,EAAgC;AAC5B,UAAI,GAAG,cAAH,CAAkB,IAAlB,CAAuB,KAAK,SAA5B,EAAuC,CAAvC,CAAJ,EAA+C;AAC3C,cAAM,CAAC,gBAAP,CAAwB,CAAxB,EAA2B,KAAK,SAAL,CAAe,CAAf,CAA3B,EAA8C,KAA9C;AACH;AACJ;;AACD,SAAK,MAAL,GAAc,MAAd;AACA,WAAO,MAAP;AACH;AAED;;;;;AAKG;;;AACH,WAAS,CAAC,WAAD,EAAY;AACjB,QACI,KAAK,MAAL,KAAgB,SAAhB,IACG,KAAK,MAAL,KAAgB,SADnB,IAEG,KAAK,MAAL,CAAY,MAAZ,KAAuB,SAH9B,EAIE;AACE,aAAO,SAAP;AACH;;AACD,QAAI,WAAW,KAAK,SAApB,EAA+B;AAC3B,iBAAW,GAAG,KAAd;AACH;;AACD,QAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,MAAL,CAAY,YAAZ,CAAyB,GAAzB,CAAD,CAAlB;AACA,QAAM,EAAE,GAAG,CAAC,GAAG,KAAK,MAAL,CAAY,WAAZ,GAA0B,KAAK,KAA/B,GAAuC,CAAtD,CAZiB,CAajB;;AACA,QAAM,QAAQ,GAAG;AACb,YAAM,EAAE,WADK;AAEb,sBAAgB,CAFH;AAGb,UAAI,EAAE,MAHO;AAIb,QAJa;AAKb,QAAE,EAAE,CAAC,KAAK,MAAL,GAAc,EAAf,IAAqB,KAAK,MAAL,CAAY,WALxB;AAMb,WAAK,EAAE,uBANM;AAOb,OAAC,EAAE,KAAK,KAAL,GAAa,KAAK,MAAL,CAAY,WAAzB,GAAuC;AAP7B,KAAjB;AAUA,QAAM,SAAS,GAAG,kDAAoB,QAApB,EAA8B,QAA9B,CAAlB;AACA,SAAK,MAAL,CAAY,MAAZ,CAAmB,WAAnB,CAA+B,SAA/B,EAzBiB,CA0BjB;;AACA,WAAO,SAAP;AACH;AAED;;;;;AAKG;;;AACH,aAAW,CAAC,YAAD,EAAa;AACpB,QACI,KAAK,MAAL,KAAgB,SAAhB,IACG,KAAK,MAAL,KAAgB,SADnB,IAEG,KAAK,MAAL,CAAY,MAAZ,KAAuB,SAH9B,EAIE;AACE,aAAO,IAAP;AACH;;AACD,QAAI,KAAK,EAAL,KAAY,CAAZ,IAAiB,KAAK,QAAL,KAAkB,SAAvC,EAAkD;AAC9C,aAAO,IAAP;AACH,KAFD,MAEO,IAAI,KAAK,QAAL,KAAkB,SAAtB,EAAiC;AACpC,WAAK,QAAL,GAAgB,IAAI,yCAAJ,EAAhB;AACA,WAAK,QAAL,CAAc,EAAd,GAAmB,KAAK,EAAxB;AACH;;AACD,QACI,KAAK,QAAL,CAAc,UAAd,KAA6B,SAA7B,IACG,KAAK,QAAL,CAAc,UAAd,CAAyB,KAAzB,KAAmC,CAF1C,EAGE;AACE,aAAO,IAAP;AACH;;AACD,QAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,MAAL,CAAY,YAAZ,CAAyB,GAAzB,CAAD,CAAhB;AACA,QAAI,KAAK,GAAG,KAAK,QAAL,CAAc,IAA1B;AACA,QAAI,QAAQ,GAAG,EAAf;;AACA,QAAI,YAAY,KAAK,IAArB,EAA2B;AACvB,WAAK,GAAG,KAAK,QAAL,CAAc,cAAtB;AACA,cAAQ,GAAG,EAAX;AACA,OAAC,IAAI,CAAL;AACH;;AACD,YAAQ,GAAG,IAAI,CAAC,KAAL,CAAW,QAAQ,GAAG,KAAK,MAAL,CAAY,WAAlC,CAAX;AAEA,QAAI,QAAQ,GAAG,OAAf;;AACA,QAAI,KAAK,QAAL,KAAkB,UAAtB,EAAkC;AAC9B,cAAQ,GAAG,OAAX;AACH;;AACD,QAAM,SAAS,GAAG;AACd,UAAI,EAAE,QADQ;AAEd,OAAC,EAAE,CAAC,GAAG,KAAK,MAAL,CAAY,WAAZ,IAA2B,KAAK,KAAL,GAAa,CAAb,GAAiB,CAA5C,CAFO;AAGd,OAAC,EAAE,KAAK,MAAL,CAAY,WAAZ,IAA2B,KAAK,MAAL,GAAc,EAAzC,CAHW;AAId,WAAK,EAAE,iBAJO;AAKd,mBAAa;AALC,KAAlB;AAQA,QAAM,OAAO,GAAG,kDAAoB,MAApB,EAA4B,SAA5B,CAAhB;AACA,QAAM,QAAQ,GAAG,QAAQ,CAAC,cAAT,CAAwB,KAAxB,CAAjB;AACA,WAAO,CAAC,WAAR,CAAoB,QAApB;AACA,SAAK,cAAL,GAAsB,OAAtB,CA7CoB,CA6CW;;AAC/B,SAAK,MAAL,CAAY,MAAZ,CAAmB,WAAnB,CAA+B,OAA/B;AACA,WAAO,IAAP;AACH;AAED;;;;AAIG;;;AACH,gBAAc;AACV,QACI,KAAK,MAAL,KAAgB,SAAhB,IACG,KAAK,MAAL,KAAgB,SADnB,IAEG,KAAK,MAAL,CAAY,MAAZ,KAAuB,SAH9B,EAIE;AACE;AACH;;AACD,QAAI,KAAK,cAAL,KAAwB,SAA5B,EAAuC;AACnC;AACH;;AACD,QAAI,KAAK,cAAL,CAAoB,UAApB,KAAmC,KAAK,MAAL,CAAY,MAAnD,EAA2D;AACvD,WAAK,MAAL,CAAY,MAAZ,CAAmB,WAAnB,CAA+B,KAAK,cAApC;AACH;;AACD,SAAK,cAAL,GAAsB,SAAtB;AACH;;AA7JW;AAgKhB;;;;;;AAMG;;AACG,MAAO,QAAP,SAAwB,GAAxB,CAA2B;AAC7B;AACI;AACA,SAAK,KAAL,GAAa,EAAb;AACA,SAAK,MAAL,GAAc,GAAd;AACA,SAAK,QAAL,GAAgB,2BAAhB;AACA,SAAK,QAAL,GAAgB,UAAhB;AACH;;AAP4B;AAUjC;;;;;;AAMG;;AACG,MAAO,QAAP,SAAwB,GAAxB,CAA2B;AAC7B;AACI;AACA,SAAK,KAAL,GAAa,EAAb;AACA,SAAK,MAAL,GAAc,EAAd;AACA,SAAK,QAAL,GAAgB,yBAAhB;AACA,SAAK,QAAL,GAAgB,UAAhB;AACH;;AAP4B;AAUjC;;;;;;;;;;;;;;;;AAgBG;;AACG,MAAO,QAAP,CAAe;AAiCjB;AAhCA,yBAAgB,EAAhB;AACA,iCAAwB,EAAxB;AACA,iCAAwB,EAAxB;AACA,uBAAc,CAAd;AACA,kBAAS,GAAT,CA4BA,CA5Bc;;AACd,sBAAa,IAAI,GAAJ,EAAb;AAGA,iBAAQ,IAAR;AACA,qBAAY,KAAZ;AACA,uBAAc,KAAd;AAEA,sBAAwC,IAAxC;AACA,oBAAsC,IAAtC;AACA,qBAAoB,EAApB;AACA,mBAAkB,EAAlB;AAEA,oBAAW,KAAX;AACA,sBAAa,KAAb;AACA,qBAAY;AACR,WAAK,EAAE;AADC,KAAZ,CAaA,CATA;;AACA,wBAAe;AACX,SAAG,OADQ;AAEX,SAAG,OAFQ;AAGX,SAAG,KAHQ;AAIX,SAAG,KAJQ;AAKX,SAAG;AALQ,KAAf;AASI;;;;;;;;;AASG;;AACH,SAAK,SAAL,GAAiB;AACb,WAAK,EAAG,UAAD,IAAgB,KAAK,YAAL,CAAkB,UAAlB;AADV,KAAjB;AAGH;AAED;;;;AAIG;;;AACH,WAAS;AACL,QAAI,KAAK,MAAL,KAAgB,SAApB,EAA+B;AAC3B,aAAO,SAAP;AACH;;AACD,QAAM,MAAM,GAAG,KAAK,MAApB;AACA,QAAM,SAAS,GAAG,MAAM,CAAC,UAAzB;AACA,SAAK,UAAL,GAAkB,IAAI,GAAJ,EAAlB;AACA,QAAM,MAAM,GAAG,KAAK,SAAL,EAAf;AACA,aAAS,CAAC,YAAV,CAAuB,MAAvB,EAA+B,MAA/B;AACA,WAAO,MAAP;AACH;AAED;;;;;AAKG;;;AACH,gBAAc,CAAC,KAAD,EAAM;AAChB,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,WAAK,GAAG,QAAQ,CAAC,IAAjB;AACH,KAFD,MAEO;AAAE;AACL,UAAI,OAAO,KAAK,CAAC,MAAb,KAAwB,WAA5B,EAAyC;AACrC,aAAK,GAAG,KAAK,CAAC,CAAD,CAAb;AACH;AACJ;;AAED,QAAI,MAAM,GAA2B,KAAK,SAAL,EAArC;;AAEA,QAAI,KAAK,UAAT,EAAqB;AACjB,YAAM,GAAG,KAAK,cAAL,CAAoB,MAApB,EAA4B,CAA5B,CAAT;AACH;;AAED,QAAI,KAAK,QAAT,EAAmB;AACf;AACA,WAAK,sBAAL,CAA4B,KAA5B,EAAmC,MAAnC;AACH,KAHD,MAGO;AACH,WAAK,CAAC,WAAN,CAAkB,MAAlB,EADG,CACwB;AAC9B;;AACD,WAAO,IAAP;AACH;AAED;;;;;;AAMG;;;AACH,cAAY,CAAC,OAAD,EAAQ;AAChB;AACA,QAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAR,CAAqB,IAArB,CAAD,CAAnB;AACA,QAAM,aAAa,GAAG,KAAK,UAAL,CAAgB,GAAhB,CAAoB,EAApB,CAAtB;;AACA,QAAI,aAAa,KAAK,SAAtB,EAAiC;AAC7B,aAD6B,CACrB;AACX;;AACD,QAAM,WAAW,GAAG,aAAa,CAAC,QAAlC;AACA,QAAI,SAAS,GAAG,SAAhB;;AACA,QAAI,aAAa,CAAC,QAAd,KAA2B,UAA/B,EAA2C;AACvC,eAAS,GAAG,QAAZ;AACH;;AACD,WAAO,CAAC,YAAR,CAAqB,OAArB,EAA8B,UAAU,SAAV,GAAsB,eAApD;AACA,0DAAwB,sBAAxB,EAAgD,CAAC,IAAG;AAChD,mDAAY,CAAC,CAAC,WAAd,EAA2B,EAA3B,EAA+B,GAA/B,EAAoC,CAApC;AACA,oDAAa,CAAC,CAAC,WAAf,EAA4B,EAA5B,EAAgC,GAAhC;AACH,KAHD;AAIA,cAAU,CAAC,MAAK;AACZ,aAAO,CAAC,YAAR,CAAqB,OAArB,EAA8B,WAA9B;AACH,KAFS,EAEP,GAFO,CAAV;AAGH;AAED;;AAEG;;;AACH,WAAS;AACL;AACA;AACA;AACA,QAAI,OAAO,KAAK,UAAZ,KAA2B,QAA/B,EAAyC;AACrC,UAAM,KAAK,GAAG,IAAI,yCAAJ,CAAgB,KAAK,UAArB,CAAd;AACA,WAAK,SAAL,GAAiB,KAAK,CAAC,eAAvB;AACH,KAHD,MAGO,IAAI,OAAO,KAAK,UAAZ,KAA2B,QAA/B,EAAyC;AAC5C,WAAK,SAAL,GAAiB,KAAK,UAAtB;AACH,KAFM,MAEA,IAAI,KAAK,UAAL,YAA2B,yCAA/B,EAA4C;AAC/C,WAAK,SAAL,GAAiB,KAAK,UAAL,CAAgB,eAAjC;AACH;;AAED,QAAI,OAAO,KAAK,QAAZ,KAAyB,QAA7B,EAAuC;AACnC,UAAM,MAAK,GAAG,IAAI,yCAAJ,CAAgB,KAAK,QAArB,CAAd;;AACA,WAAK,OAAL,GAAe,MAAK,CAAC,eAArB;AACH,KAHD,MAGO,IAAI,OAAO,KAAK,QAAZ,KAAyB,QAA7B,EAAuC;AAC1C,WAAK,OAAL,GAAe,KAAK,QAApB;AACH,KAFM,MAEA,IAAI,KAAK,QAAL,YAAyB,yCAA7B,EAA0C;AAC7C,WAAK,OAAL,GAAe,KAAK,QAAL,CAAc,eAA7B;AACH;;AAED,QAAI,YAAY,GAAG,CAAC,KAAK,SAAL,GAAiB,CAAlB,IAAuB,CAA1C,CAtBK,CAsBwC;;AAC7C,QAAM,sBAAsB,GAAG,IAAI,KAAK,OAAT,GAAmB,KAAK,SAAvD;AACA,QAAM,UAAU,GACV,KAAK,aAAL,GAAqB,KAAK,WAA1B,GAAwC,sBAD9C;AAEA,QAAM,MAAM,GAAG,MAAM,KAAK,WAA1B;AACA,QAAM,YAAY,GAAG,MAAM,CAAC,QAAP,KAAoB,IAAzC;AAEA,QAAM,MAAM,GAAG,kDAAoB,KAApB,EAA2B;AACtC,mBAAa,UADyB;AAEtC,YAAM,EAAE,YAF8B;AAGtC,WAAK,EAAE,UAAU,CAAC,QAAX,KAAwB,IAHO;AAItC,WAAK,EAAE;AAJ+B,KAA3B,CAAf;AAMA,QAAM,WAAW,GAAG,IAAI,yCAAJ,CAAgB,IAAhB,CAApB;AACA,QAAM,SAAS,GAAG,EAAlB;AACA,QAAM,kBAAkB,GAAG,IAA3B;;AAEA,SAAK,IAAI,GAAG,GAAG,CAAf,EAAkB,GAAG,GAAG,sBAAxB,EAAgD,GAAG,EAAnD,EAAuD;AACnD,iBAAW,CAAC,eAAZ,GAA8B,KAAK,SAAL,GAAiB,GAA/C;AACA,UAAM,EAAE,GAAG,IAAI,QAAJ,EAAX;AACA,QAAE,CAAC,EAAH,GAAQ,WAAW,CAAC,IAApB;AACA,QAAE,CAAC,MAAH,GAAY,IAAZ;AACA,WAAK,UAAL,CAAgB,GAAhB,CAAoB,WAAW,CAAC,IAAhC,EAAsC,EAAtC;AACA,QAAE,CAAC,WAAH,GAAiB,KAAK,WAAtB;AACA,QAAE,CAAC,KAAH,GAAW,KAAK,aAAhB;;AACA,QAAE,CAAC,SAAH,CAAa,KAAb,GAAqB,SAAS,sBAAT,GAA+B;AAChD,0BAAkB,CAAC,SAAnB,CAA6B,KAA7B,CAAmC,IAAnC;AACH,OAFD;;AAIA,UAAM,KAAK,GAAG,EAAE,CAAC,OAAH,CACV,KAAK,aAAL,GAAqB,KAAK,WAA1B,GAAwC,GAD9B,CAAd;AAGA,YAAM,CAAC,WAAP,CAAmB,KAAnB;;AAEA,UACI,CAAC,YAAY,KAAK,CAAjB,IACM,YAAY,KAAK,CADvB,IAEM,YAAY,KAAK,CAFvB,IAGM,YAAY,KAAK,CAHvB,IAIM,YAAY,KAAK,CAJxB,KAKG,GAAG,KAAK,sBAAsB,GAAG,CANxC,EAOE;AACE;AACA,YAAM,EAAE,GAAG,IAAI,QAAJ,EAAX;AACA,UAAE,CAAC,EAAH,GAAQ,WAAW,CAAC,IAAZ,GAAmB,CAA3B;AACA,aAAK,UAAL,CAAgB,GAAhB,CAAoB,WAAW,CAAC,IAAZ,GAAmB,CAAvC,EAA0C,EAA1C;AACA,UAAE,CAAC,MAAH,GAAY,IAAZ;AAEA,UAAE,CAAC,WAAH,GAAiB,KAAK,WAAtB;AACA,UAAE,CAAC,KAAH,GACM,KAAK,qBAAL,GACA,KAAK,aADL,GAEA,KAAK,qBAHX;;AAIA,UAAE,CAAC,SAAH,CAAa,KAAb,GAAqB,SAAS,sBAAT,GAA+B;AAChD,4BAAkB,CAAC,SAAnB,CAA6B,KAA7B,CAAmC,IAAnC;AACH,SAFD;;AAIA,YAAI,kBAAkB,GAAG,KAAK,YAAL,CAAkB,YAAlB,CAAzB;AACA,0BAAkB,IACX,KAAK,aAAL,GACD,KAAK,qBADJ,GAED,KAAK,WAHX;AAIA,YAAM,KAAK,GAAG,EAAE,CAAC,OAAH,CACV,KAAK,aAAL,GAAqB,KAAK,WAA1B,GAAwC,GAAxC,GACM,kBAFI,CAAd;AAIA,iBAAS,CAAC,IAAV,CAAe,KAAf;AACH;;AACD,kBAAY,IAAI,CAAhB;AACA,kBAAY,IAAI,CAAhB;AACH,KA5FI,CA6FL;;;AACA,SAAK,IAAI,GAAG,GAAG,CAAf,EAAkB,GAAG,GAAG,SAAS,CAAC,MAAlC,EAA0C,GAAG,EAA7C,EAAiD;AAC7C,YAAM,CAAC,WAAP,CAAmB,SAAS,CAAC,GAAD,CAA5B;AACH;;AAED,SAAK,MAAL,GAAc,MAAd;;AACA,QAAI,KAAK,KAAT,EAAgB;AACZ,WAAK,WAAL;AACH;;AACD,QAAI,KAAK,SAAT,EAAoB;AAChB,WAAK,aAAL,CAAmB,KAAK,WAAxB;AACH;;AAED,WAAO,MAAP;AACH;AAED;;;;AAIG;;;AACH,aAAW,CAAC,WAAW,GAAC,KAAb,EAAkB;AACzB,QAAM,IAAI,GAAG,KAAK,UAAL,CAAgB,GAAhB,CAAoB,EAApB,CAAb;;AACA,QAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,UAAI,CAAC,SAAL,CAAe,WAAf;AACH;AACJ;AAED;;;;AAIG;;;AACH,eAAa,CAAC,YAAD,EAAa;AACtB,SAAK,eAAL,GADsB,CACE;;AACxB,SAAK,IAAM,MAAX,IAAqB,KAAK,UAAL,CAAgB,MAAhB,EAArB,EAA+C;AAC3C,YAAM,CAAC,WAAP,CAAmB,YAAnB;AACH;AACJ;AAED;;;;AAIG;;;AACH,iBAAe;AACX,SAAK,IAAM,MAAX,IAAqB,KAAK,UAAL,CAAgB,MAAhB,EAArB,EAA+C;AAC3C,YAAM,CAAC,cAAP;AACH;;AACD,WAAO,IAAP;AACH;AAED;;;;;;;;AAQG;;;AACH,gBAAc,CAAC,MAAD,EAAmB;AAC7B,QAAM,QAAQ,GAAG,mCAAC,CACd,+CADc,CAAD,CAEf,GAFe,CAEX;AACF,aAAO,EAAE;AADP,KAFW,CAAjB;AAKA,QAAM,MAAM,GAAG,mCAAC,CAAC,sDAAD,CAAD,CACV,GADU,CACN;AACD,mBAAa,IAAI,CAAC,KAAL,CAAW,KAAK,WAAL,GAAmB,EAA9B,EAAkC,QAAlC,KAA+C;AAD3D,KADM,EAIV,EAJU,CAIP,OAJO,EAIE,MAAK;AACd,wEAAoC,CAApC;AACA,WAAK,UAAL,GAAkB,KAAK,SAAL,GAAiB,CAAnC;AACA,WAAK,QAAL,GAAgB,KAAK,OAAL,GAAe,CAA/B;AACA,WAAK,SAAL;AACH,KATU,CAAf;AAUA,QAAM,IAAI,GAAG,mCAAC,CAAC,oDAAD,CAAD,CACR,GADQ,CACJ;AACD,mBAAa,IAAI,CAAC,KAAL,CAAW,KAAK,WAAL,GAAmB,EAA9B,EAAkC,QAAlC,KAA+C;AAD3D,KADI,EAIR,EAJQ,CAIL,OAJK,EAII,MAAK;AACd,wEAAoC,CAApC;AACA,WAAK,UAAL,GAAkB,KAAK,SAAL,GAAiB,CAAnC;AACA,WAAK,QAAL,GAAgB,KAAK,OAAL,GAAe,CAA/B;AACA,WAAK,SAAL;AACH,KATQ,CAAb;AAUA,QAAM,SAAS,GAAG,mCAAC,CACf,qGADe,CAAnB;AAGA,aAAS,CAAC,CAAD,CAAT,CAAa,WAAb,CAAyB,MAAzB;AACA,YAAQ,CAAC,MAAT,CAAgB,MAAhB;AACA,YAAQ,CAAC,MAAT,CAAgB,SAAhB;AACA,YAAQ,CAAC,MAAT,CAAgB,IAAhB;AACA,WAAO,QAAP;AACH;AAED;;;;;;;;AAQG;;;AACH,wBAAsB,CAAC,KAAD,EAAQ,WAAR,EAAmB;AACrC,QAAM,UAAU,GAAG,mCAAC,CAAC,0CAAD,CAApB;AACA,QAAM,QAAQ,GAAG,mCAAC,CAAC,2CAAD,CAAD,CAA+C,GAA/C,CAAmD;AAChE,aAAO,EAAE,cADuD;AAEhE,qBAAe,MAFiD;AAGhE,mBAAa;AAHmD,KAAnD,CAAjB;AAKA,QAAM,EAAE,GAAG,mCAAC,CAAC,sCAAD,CAAD,CAA0C,GAA1C,CAA8C;AACrD,aAAO,EAAE,cAD4C;AAErD,wBAAkB,KAFmC;AAGrD,gBAAU,EAAE;AAHyC,KAA9C,CAAX;AAKA,MAAE,CAAC,MAAH,CAAU,QAAV;AACA,MAAE,CAAC,IAAH,CACI,gBADJ,EAEI,UAAU,CAAC,IAAX,CAAgB,cAAhB,EAAgC,GAAhC,CAAoC,SAApC,CAFJ;AAIA,MAAE,CAAC,IAAH,CAAQ,OAAR,EAAiB,MAAjB;AACA,MAAE,CAAC,EAAH,CAAM,OAAN,EAAe,iBAAf;AACA,QAAM,QAAQ,GAAG,mCAAC,CACd,kDADc,CAAD,CAEf,GAFe,CAEX;AACF,aAAO,EAAE,MADP;AAEF,0BAAoB,OAFlB;AAGF,aAAO,EAAE,qBAHP;AAIF,mBAAa;AAJX,KAFW,CAAjB;AAQA,MAAE,CAAC,MAAH,CAAU,QAAV;AACA,cAAU,CAAC,MAAX,CAAkB,EAAlB;AACA,cAAU,CAAC,CAAD,CAAV,CAAc,WAAd,CAA0B,WAA1B,EA7BqC,CA6BG;;AACxC,uCAAC,CAAC,KAAD,CAAD,CAAS,MAAT,CAAgB,UAAhB;AACA,WAAO,UAAP;AACH;;AAvWgB,C,CA0WrB;;AACA;;;;;AAKG;;AACI,IAAM,iBAAiB,GAAG,CAAC,IAAG;AACjC;AACA;AACA,MAAM,EAAE,GAAG,mCAAC,CAAC,SAAD,CAAZ;AACA,MAAM,KAAK,GAAG,EAAE,CAAC,IAAH,CAAQ,OAAR,CAAd;AACA,MAAM,OAAO,GAAG,EAAE,CAAC,MAAH,EAAhB;AACA,MAAI,EAAE,GAAG,OAAO,CAAC,IAAR,CAAa,4BAAb,CAAT;;AACA,MAAI,EAAE,CAAC,MAAH,KAAc,CAAlB,EAAqB;AACjB;AACA,MAAE,GAAG,OAAO,CAAC,IAAR,CAAa,cAAb,CAAL;AACH;;AACD,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAH,CAAQ,uBAAR,CAAjB;AACA,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAR,CAAa,kBAAb,CAAjB;;AACA,MAAI,KAAK,KAAK,IAAd,EAAoB;AAChB,YAAQ,CAAC,IAAT,CAAc,GAAd;AACA,YAAQ,CAAC,GAAT,CAAa,aAAb,EAA4B,MAA5B;AACA,YAAQ,CAAC,GAAT,CAAa,SAAb,EAAwB,MAAxB;AACA,QAAI,EAAE,GAAG,EAAE,CAAC,IAAH,CAAQ,gBAAR,CAAT;;AACA,QAAI,EAAE,KAAK,SAAX,EAAsB;AAClB,QAAE,GAAG,QAAL;AACH;;AACD,MAAE,CAAC,GAAH,CAAO,SAAP,EAAkB,EAAlB;AACA,MAAE,CAAC,IAAH,CAAQ,OAAR,EAAiB,MAAjB;AACH,GAVD,MAUO;AACH,MAAE,CAAC,GAAH,CAAO,SAAP,EAAkB,MAAlB;AACA,YAAQ,CAAC,GAAT,CAAa,SAAb,EAAwB,cAAxB;AACA,YAAQ,CAAC,IAAT,CAAc,GAAd;AACA,YAAQ,CAAC,GAAT,CAAa,aAAb,EAA4B,MAA5B;AACA,MAAE,CAAC,IAAH,CAAQ,OAAR,EAAiB,IAAjB;AACH;AACJ,CA9BM;AAgCP;;;;;;;;;AASG;;AACG,SAAU,aAAV,CAAwB,CAAxB,EAAyB;AAC3B;AACA,MAAI,CAAC,KAAK,SAAV,EAAqB;AACjB;AACH;;AACD,MAAI,CAAC,CAAC,MAAN,EAAc;AACV,QAAM,QAAQ,GAAW,CAAC,CAAC,QAA3B;;AACA,QAAI,KAAK,UAAL,CAAgB,GAAhB,CAAoB,QAApB,CAAJ,EAAmC;AAC/B,UAAM,MAAM,GAAG,KAAK,UAAL,CAAgB,GAAhB,CAAoB,QAApB,CAAf;AACA,UAAM,MAAM,GAAG,MAAM,CAAC,MAAtB;AACA,UAAI,kBAAkB,GAAG,CAAC,CAAC,CAAC,QAAF,GAAa,EAAd,IAAoB,GAA7C;;AACA,UAAI,kBAAkB,GAAG,CAAzB,EAA4B;AACxB,0BAAkB,GAAG,GAArB;AACH;;AAED,UAAI,YAAJ;;AACA,UAAI,MAAM,CAAC,QAAP,KAAoB,UAAxB,EAAoC;AAChC,YAAM,SAAS,GAAG,kBAAkB,CAAC,QAAnB,EAAlB;AACA,oBAAY,GAAG,uBAAuB,SAAvB,GAAmC,GAAlD;AACH,OAHD,MAGO;AACH,YAAM,UAAS,GAAG,IAAI,CAAC,KAAL,CACd,kBAAkB,GAAG,GADP,EAEhB,QAFgB,EAAlB;;AAGA,oBAAY,GAAG,SAAS,UAAT,GAAqB,GAArB,GAA2B,UAA3B,GAAuC,KAAtD,CAJG,CAKH;AACH;;AACD,YAAM,CAAC,YAAP,CACI,OADJ,EAEI,UAAU,YAAV,GAAyB,eAF7B;AAIH;AACJ,GA1BD,MA0BO,IAAI,CAAC,CAAC,OAAN,EAAe;AAClB,QAAM,SAAQ,GAAG,CAAC,CAAC,QAAnB;;AACA,QAAI,KAAK,UAAL,CAAgB,GAAhB,CAAoB,SAApB,CAAJ,EAAmC;AAC/B,UAAM,OAAM,GAAG,KAAK,UAAL,CAAgB,GAAhB,CAAoB,SAApB,CAAf;;AACA,UAAM,OAAM,GAAG,OAAM,CAAC,MAAtB;;AACA,aAAM,CAAC,YAAP,CAAoB,OAApB,EAA6B,OAAM,CAAC,QAApC;AACH;AACJ;AACJ,C,CAAC,qD;;;;;;;;;;;;;;;;;;;;AC5sBF;;;;;AAKG;AACH;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;;;;;;;;;;;;;;AAcG;;AACG,SAAU,mBAAV,CACF,KADE,EAEF,cAFE,EAEY;AAEd,MAAM,KAAK,GAAG,KAAK,CAAC,KAAN,CAAY,MAAZ,EAAd,CAFc,CAGd;;AACA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAvB;AACA,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAN,CAAU,CAAV,CAAjB;AACA,MAAM,WAAW,GAAG,QAAQ,CAAC,kBAAT,CAA4B,SAA5B,EAAuC,MAA3D;AAEA,MAAM,aAAa,GAAG,QAAQ,CAAC,gBAAT,EAAtB;AACA,MAAM,cAAc,GACd,cAAc,IAAI,KAAK,CAAC,cAD9B;AAC8C;;AAE9C,MAAM,WAAW,GAAG,IAAI,WAAJ,EAApB;AACA,MAAM,WAAW,GAAG,IAAI,IAAJ,EAApB,CAbc,CAakB;;AAChC,aAAW,CAAC,YAAZ,GAA2B,CAA3B;AACA,aAAW,CAAC,UAAZ,GAAyB,WAAzB;AAEA,aAAW,CAAC,MAAZ,CAAmB,CAAnB,EAAsB,WAAtB;AAEA,MAAI,aAAa,GAAG,IAAI,MAAJ,EAApB;AACA,MAAI,mBAAmB,GAAG,CAA1B;AACA,eAAa,CAAC,YAAd,GAA6B,CAA7B;AACA,MAAI,aAAa,GAAY,EAA7B;;AAEA,MAAM,UAAU,GAAG,CAAC,WAAD,EAAc,QAAd,EAAwB,YAAxB,KAAwC;AACvD,SAAK,IAAI,IAAI,GAAG,CAAhB,EAAmB,IAAI,GAAG,QAA1B,EAAoC,IAAI,EAAxC,EAA4C;AACxC,UAAM,KAAK,GAAG,IAAI,KAAJ,EAAd;AACA,WAAK,CAAC,YAAN,GAAqB,YAArB;AACA,WAAK,CAAC,WAAN,GAAoB,IAAI,GAAG,CAA3B;AACA,iBAAW,CAAC,IAAZ,CAAiB,KAAjB;AACH;AACJ,GAPD;;AAQA,YAAU,CAAC,aAAD,EAAgB,QAAhB,EAA0B,CAA1B,CAAV,CAhCc,CAkCd;;AACA,MAAM,mBAAmB,GAAG,EAA5B,CAnCc,CAoCd;;AACA,MAAM,kBAAkB,GAAG,EAA3B;AAEA,MAAI,eAAe,GAAG,CAAtB;AAAyB;;AACzB,MAAM,SAAS,GAAG,EAAlB;AAAsB;;AACtB,MAAI,WAAW,GAAG,SAAlB,CAzCc,CA0Cd;AACA;AACA;AACA;;AAEA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,aAAa,CAAC,MAAlC,EAA0C,CAAC,EAA3C,EAA+C;AAC3C,QAAM,YAAY,GAAG,WAAW,GAAG,aAAa,CAAC,CAAD,CAAhD;AACA;;AACA,QAAI,YAAY,GAAG,cAAf,IAAiC,eAAe,KAAK,CAAzD,EAA4D;AACxD;AACA,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,aAAa,CAAC,MAAlC,EAA0C,CAAC,EAA3C,EAA+C;AAC3C,qBAAa,CAAC,CAAD,CAAb,CAAiB,UAAjB,GAA8B,CAA9B;AACA,qBAAa,CAAC,MAAd,CAAqB,CAArB,EAAwB,aAAa,CAAC,CAAD,CAArC;AACH;;AACD,mBAAa,GAAG,EAAhB;AACA,gBAAU,CAAC,aAAD,EAAgB,QAAhB,EAA0B,CAAC,GAAG,CAA9B,CAAV,CAPwD,CAQxD;;AACA,mBAAa,CAAC,UAAd,GAA2B,CAA3B;AACA,iBAAW,CAAC,MAAZ,CAAmB,CAAnB,EAAsB,aAAtB;AACA,yBAAmB,IAAI,CAAvB;AACA,mBAAa,GAAG,IAAI,MAAJ,EAAhB;AACA,mBAAa,CAAC,YAAd,GAA6B,CAAC,GAAG,CAAjC;AACA,mBAAa,CAAC,YAAd,GAA6B,mBAA7B;AAEA,wBAAkB,CAAC,IAAnB,CAAwB,CAAC,GAAG,CAA5B;AACA,yBAAmB,CAAC,IAApB,CAAyB,WAAzB;AACA,aAAO,CAAC,GAAR,CACI,0BAA0B,WAA1B,GAAwC,WAAxC,GAAsD,CAD1D;AAGA,iBAAW,GAAG,SAAS,GAAG,aAAa,CAAC,CAAD,CAAvC;AACA,qBAAe,GAAG,CAAlB;AACH,KAvBD,MAuBO;AACH,iBAAW,GAAG,YAAd;AACH;;AACD,SAAK,IAAI,IAAI,GAAG,CAAhB,EAAmB,IAAI,GAAG,aAAa,CAAC,MAAxC,EAAgD,IAAI,EAApD,EAAwD;AACpD,mBAAa,CAAC,IAAD,CAAb,CAAoB,MAApB,CAA2B,KAAK,CAAC,GAAN,CAAU,IAAV,EAAgB,GAAhB,CAAoB,CAApB,CAA3B;AACH;AACJ;;AACD,OAAK,IAAI,EAAC,GAAG,CAAb,EAAgB,EAAC,GAAG,aAAa,CAAC,MAAlC,EAA0C,EAAC,EAA3C,EAA+C;AAC3C,iBAAa,CAAC,EAAD,CAAb,CAAiB,UAAjB,GAA8B,aAAa,CAAC,MAAd,GAAuB,CAArD;AACA,iBAAa,CAAC,MAAd,CAAqB,CAArB,EAAwB,aAAa,CAAC,EAAD,CAArC;AACH;;AACD,aAAW,CAAC,MAAZ,CAAmB,CAAnB,EAAsB,aAAtB;AACA,SAAO,WAAP;AACH;AAED;;;;;;AAMG;;AACG,MAAO,WAAP,SAA2B,0CAA3B,CAAuC;AAWzC;AACI;AACA,SAAK,WAAL,GAAmB,SAAnB;AACA,SAAK,YAAL,GAAoB,SAApB;AACA,SAAK,UAAL,GAAkB,SAAlB;AACA;;;;AAIG;;AACH,SAAK,MAAL,GAAc,SAAd;AACA,SAAK,MAAL,GAAc,SAAd;AACA,SAAK,GAAL,GAAW,CAAX;AACA,SAAK,IAAL,GAAY,CAAZ;AACH;;AAxBmB,aAAT,SAAS;AAAK,WAAO,4BAAP;AAAsC;;AA0BtD,MAAL,KAAK;AACL,WAAO,KAAK,kBAAL,CAAwB,MAAxB,CAAP;AACH;;AAEQ,MAAL,KAAK;AACL,QAAI,KAAK,MAAT,EAAiB;AACb,aAAO,KAAK,MAAZ;AACH,KAFD,MAEO,IAAI,KAAK,UAAT,EAAqB;AACxB,aAAO,KAAK,UAAL,CAAgB,KAAvB;AACH,KAFM,MAEA;AACH,aAAO,SAAP;AACH;AACJ;;AAvCwC;AAuD7C;;;;;;;;AAQG;;AACG,MAAO,IAAP,SAAoB,0CAApB,CAAgC;AAWlC;AACI;AACA,SAAK,UAAL,GAAkB,CAAlB;AACA,SAAK,YAAL,GAAoB,SAApB;AACA,SAAK,UAAL,GAAkB,SAAlB;AACA,SAAK,WAAL,GAAmB,SAAnB;AACA,SAAK,SAAL,GAAiB,SAAjB;AACA,SAAK,UAAL,GAAkB,SAAlB;AACH;;AAlBmB,aAAT,SAAS;AAAK,WAAO,qBAAP;AAA+B;;AAoB7C,MAAP,OAAO;AACP,WAAO,KAAK,kBAAL,CAAwB,QAAxB,CAAP;AACH;;AAEQ,MAAL,KAAK;AACL,QAAI,KAAK,MAAT,EAAiB;AACb,aAAO,KAAK,MAAZ;AACH,KAFD,MAEO,IAAI,KAAK,UAAT,EAAqB;AACxB,aAAO,KAAK,UAAL,CAAgB,KAAvB;AACH,KAFM,MAEA;AACH,aAAO,SAAP;AACH;AACJ;;AAjCiC;AAoCtC;;;;;;;;AAQG;;AACG,MAAO,MAAP,SAAsB,0CAAtB,CAAkC;AAYpC;AACI;AACA,SAAK,YAAL,GAAoB,CAApB;AACA,SAAK,YAAL,GAAoB,SAApB;AACA,SAAK,YAAL,GAAoB,SAApB;AACA,SAAK,UAAL,GAAkB,SAAlB;AACA,SAAK,MAAL,GAAc,SAAd;AACA,SAAK,GAAL,GAAW,SAAX;AACA,SAAK,IAAL,GAAY,SAAZ;AACH;;AApBmB,aAAT,SAAS;AAAK,WAAO,uBAAP;AAAiC;;AAsBhD,MAAN,MAAM;AACN,WAAO,KAAK,kBAAL,CAAwB,OAAxB,CAAP;AACH;;AAEQ,MAAL,KAAK;AACL,QAAI,KAAK,MAAT,EAAiB;AACb,aAAO,KAAK,MAAZ;AACH,KAFD,MAEO,IAAI,KAAK,UAAT,EAAqB;AACxB,aAAO,KAAK,UAAL,CAAgB,KAAvB;AACH,KAFM,MAEA;AACH,aAAO,SAAP;AACH;AACJ;;AAnCmC;AAsCxC;;;AAGG;;AACG,MAAO,KAAP,SAAqB,yCAArB,CAAgC;AAclC;AACI;AACA,SAAK,WAAL,GAAmB,CAAnB;AACA,SAAK,SAAL,GAAiB,CAAjB;AACA,SAAK,GAAL,GAAW,SAAX;AACA,SAAK,IAAL,GAAY,SAAZ;AACA,SAAK,MAAL,GAAc,SAAd;AACA,SAAK,MAAL,GAAc,SAAd;AACA,SAAK,eAAL,GAAuB,SAAvB;AACA,SAAK,WAAL,GAAmB,SAAnB;AACH;;AAvBmB,aAAT,SAAS;AAAK,WAAO,sBAAP;AAAgC;;AAyBhD,MAAL,KAAK;AACL,QAAI,KAAK,MAAT,EAAiB;AACb,aAAO,KAAK,MAAZ;AACH,KAFD,MAEO,IAAI,KAAK,UAAT,EAAqB;AACxB,aAAO,KAAK,UAAL,CAAgB,KAAvB;AACH,KAFM,MAEA;AACH,aAAO,SAAP;AACH;AACJ;;AAlCiC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtRtC;;;;;;;;;;;;;;;;AAgBG;AACH;AAEA;AACA;AACA;AACA;AAKA;AAEA;;;;;;;;;;AAUG;;AACG,MAAO,aAAP,SAA6B,gDAA7B,CAA+C;AAcjD,cAAY,QAAgB,KAA5B,EAAmC,SAAnC,EAA6C;AACzC;AAZJ,sBAAqB,CAArB;AACA,wBAAuB,CAAvB;AAEA,kBAAiB,EAAjB;AACA,gCAAgC,KAAhC,CAO6C,CAL7C;;AACA,uBAA0B,EAA1B;AAMI,SAAK,cAAL,GAAsB,CAAtB;AACA,SAAK,WAAL,CAAiB,KAAjB,EAAwB,SAAxB;AACH;;AAjBmB,aAAT,SAAS;AAAK,WAAO,6BAAP;AAAuC;;AAmBhE,YAAU;AACN,WAAO,KAAK,WAAZ;AACH;;AAED,aAAW,CAAC,QAAgB,KAAjB,EAAwB,SAAxB,EAAkC;AACzC,SAAK,MAAL,GAAc,EAAd;AACA,SAAK,oBAAL,GAA4B,KAA5B;AACA,SAAK,uBAAL,GAA+B,SAA/B,CAHyC,CAKzC;;AACA,SAAK,WAAL,GAAmB,EAAnB;AACA,SAAK,qBAAL,GAA6B,SAA7B;AACA,SAAK,wBAAL,GAAgC,SAAhC;AAEA,SAAK,IAAL,CAAU,KAAV,EAAiB,SAAjB;AACH;;AAED,MAAI,CAAC,KAAD,EAAgB,SAAhB,EAA0B;AAC1B,QAAM,UAAU,GAAG,KAAK,CAAC,WAAN,EAAnB;;AACA,QAAI,UAAU,KAAK,QAAf,IAA2B,UAAU,KAAK,GAA9C,EAAmD;AAC/C,WAAK,GAAG,KAAR;AACA,WAAK,MAAL,GAAc,QAAd;AACH,KAHD,MAGO,IAAI,UAAU,KAAK,KAAf,IAAwB,UAAU,KAAK,WAA3C,EAAwD;AAC3D,WAAK,GAAG,KAAR;AACA,WAAK,MAAL,GAAc,KAAd;AACH;;AACD,QAAM,SAAS,GAAG,KAAK,CAAC,KAAN,CAAY,GAAZ,CAAlB;AACA,SAAK,SAAL,GAAiB,QAAQ,CAAC,SAAS,CAAC,CAAD,CAAV,CAAzB;AACA,SAAK,WAAL,GAAmB,QAAQ,CAAC,SAAS,CAAC,CAAD,CAAV,CAA3B;AACH,GAjDgD,CAmDjD;;;AAEa,MAAT,SAAS;AACT,WAAO,KAAK,UAAZ;AACH;;AAEY,MAAT,SAAS,CAAC,CAAD,EAAU;AACnB,SAAK,UAAL,GAAkB,CAAlB;AACH;;AAEc,MAAX,WAAW;AACX,WAAO,KAAK,YAAZ;AACH;;AAEc,MAAX,WAAW,CAAC,CAAD,EAAU;AACrB,SAAK,YAAL,GAAoB,CAApB;AACH;;AAEc,MAAX,WAAW;AACX,WAAO,KAAK,SAAL,CAAe,QAAf,KAA4B,GAA5B,GAAkC,KAAK,WAAL,CAAiB,QAAjB,EAAzC;AACH;;AAEc,MAAX,WAAW,CAAC,WAAD,EAAoB;AAC/B,SAAK,WAAL,CAAiB,WAAjB;AACH;;AAEc,MAAX,WAAW;AACX,QAAI,KAAK,uBAAT,EAAkC;AAC9B,aAAO,KAAK,uBAAZ;AACH;;AACD,QAAM,EAAE,GAAG,MAAM,KAAK,UAAX,GAAwB,KAAK,YAAxC;AACA,WAAO,IAAI,+CAAJ,CAAsB,EAAtB,CAAP;AACH;;AAEc,MAAX,WAAW,CAAC,KAAD,EAAyB;AACpC,SAAK,uBAAL,GAA+B,KAA/B;AACH;;AAEa,MAAV,UAAU;AACV,QAAI,KAAK,WAAL,CAAiB,MAAjB,KAA4B,CAAhC,EAAmC;AAC/B,WAAK,WAAL,GAAmB,KAAK,iBAAL,EAAnB;AACH;;AACD,WAAO,KAAK,WAAZ;AACH;;AAEa,MAAV,UAAU,CAAC,SAAD,EAAsB;AAChC,SAAK,WAAL,GAAmB,SAAnB;AACH;AAED;;;AAGG;;;AACU,MAAT,SAAS;AACT,QAAI,KAAK,qBAAL,KAA+B,SAAnC,EAA8C;AAC1C,aAAO,KAAK,qBAAZ;AACH;;AACD,QAAI,KAAK,SAAL,GAAiB,CAAjB,KAAuB,CAA3B,EAA8B;AAC1B,UAAI,KAAK,SAAL,GAAiB,CAAjB,IAAsB,KAAK,WAAL,IAAoB,CAA9C,EAAiD;AAC7C;AACA;AACA,eAAO,KAAK,SAAL,GAAiB,CAAxB;AACH,OAJD,MAIO;AACH,eAAO,KAAK,SAAZ;AACH;AACJ,KARD,MAQO;AACH,aAAO,KAAK,SAAZ;AACH;AACJ;AAED;;AAEG;;;AACU,MAAT,SAAS,CAAC,SAAD,EAAkB;AAC3B,SAAK,qBAAL,GAA6B,SAA7B;AACH;AAED;;;;;AAKG;;;AACa,MAAZ,YAAY;AACZ,QAAM,GAAG,GAAG,KAAK,WAAjB;AACA,OAAG,CAAC,aAAJ,IAAqB,KAAK,SAA1B;AACA,WAAO,GAAP;AACH;AAED;;;AAGG;;;AACa,MAAZ,YAAY,CAAC,SAAD,EAA6B;AACzC,SAAK,wBAAL,GAAgC,SAAhC;AACH;AAED;;;;;AAKG;;;AACH,mBAAiB;AACb,QAAM,cAAc,GAAG,EAAvB;AACA,QAAI,QAAQ,GAAG,KAAK,SAApB;AACA,QAAI,SAAS,GAAG,KAAK,WAArB;;AACA,QAAI,SAAS,GAAG,CAAZ,IAAiB,QAAQ,IAAI,CAAjC,EAAoC;AAChC,UAAM,sBAAsB,GAAG,IAAI,SAAnC,CADgC,CAEhC;;AACA,eAAS,GAAG,CAAZ;AACA,cAAQ,IAAI,sBAAZ;AACH;;AAED,QAAI,SAAS,IAAI,CAAjB,EAAoB;AAChB,aAAO,QAAQ,IAAI,CAAnB,EAAsB;AAClB,sBAAc,CAAC,IAAf,CAAoB,CAAC,CAAD,EAAI,SAAJ,CAApB;AACA,gBAAQ,IAAI,CAAZ;AACH;;AACD,UAAI,QAAQ,KAAK,CAAjB,EAAoB;AAChB,sBAAc,CAAC,IAAf,CAAoB,CAAC,CAAD,EAAI,SAAJ,CAApB;AACA,sBAAc,CAAC,IAAf,CAAoB,CAAC,CAAD,EAAI,SAAJ,CAApB;AACH,OAHD,MAGO,IAAI,QAAQ,GAAG,CAAf,EAAkB;AACrB,sBAAc,CAAC,IAAf,CAAoB,CAAC,QAAD,EAAW,SAAX,CAApB;AACH;AACJ,KAXD,MAWO,IAAI,SAAS,KAAK,CAAlB,EAAqB;AACxB,oBAAc,CAAC,IAAf,CAAoB,CAAC,CAAD,EAAI,CAAJ,CAApB;AACH,KAFM,MAEA,IAAI,SAAS,IAAI,CAAjB,EAAoB;AACvB,oBAAc,CAAC,IAAf,CAAoB,CAAC,CAAD,EAAI,CAAJ,CAApB;AACH,KAFM,MAEA;AACH;AACA,oBAAc,CAAC,IAAf,CAAoB,CAAC,CAAD,EAAI,CAAJ,CAApB;AACH;;AACD,WAAO,cAAP;AACH;;AAED,eAAa,CACT,OADS,EAET;AAAC,+BAA2B,GAAG;AAA/B,MAAiF,EAFxE,EAE0E;AAEnF;AACA,QAAI,OAAO,IAAI,KAAK,WAAL,CAAiB,aAA5B,IAA6C,OAAO,GAAG,CAA3D,EAA8D;AAC1D,YAAM,IAAI,4DAAJ,CACF,qCAA8B,OAA9B,2CAC6B,KAAK,WAAL,CAAiB,aAD9C,CADE,CAAN;AAIH,KARkF,CASnF;;;AACA,QAAM,YAAY,GAAG,KAAK,YAA1B,CAVmF,CAWnF;;AACA,WAAO,IAAI,CAAC,KAAL,CAAW,OAAO,GAAG,YAAY,CAAC,aAAlC,CAAP;AACH;AAED;;AAEG;;;AACH,cAAY,CAAC,MAAD,EAAe;AACvB,QAAM,YAAY,GAAG,KAAK,YAAL,CAAkB,aAAvC;AACA,QAAM,cAAc,GAAG,IAAI,CAAC,KAAL,CAAW,MAAM,GAAG,YAApB,CAAvB;AACA,QAAM,KAAK,GAAG,cAAc,GAAG,YAA/B;AACA,QAAM,GAAG,GAAG,KAAK,GAAG,YAApB;AACA,WAAO,CAAC,KAAD,EAAQ,GAAR,CAAP;AACH;AAED;;;AAGG;;;AACH,UAAQ,CAAC,SAAD,EAA2B,OAAO,GAAC,EAAnC,EAAqC;AACzC,QAAM,MAAM,GAAG;AAAE,wBAAkB,EAAE;AAAtB,KAAf;AACA,+CAAa,MAAb,EAAqB,OAArB;AACA,QAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAlC;AACA,QAAI,SAAS,GAAG,oDAAsB,SAAtB,CAAhB;AACA,aAAS,GAAG,qEAAuC,SAAvC,CAAZ;;AACA,QAAM,uBAAuB,GAAG,CAAC,CAAD,EAAI,EAAJ,EAAQ,KAAR,KAAiB;AAC7C,UAAM,KAAK,GAAG,SAAS,CAAC,CAAD,CAAvB;;AACA,UAAI,CAAC,KAAL,EAAY;AACR;AACH;;AAED,UAAI,EAAE,CAAC,QAAH,CAAY,aAAZ,IAA6B,KAAK,YAAL,CAAkB,aAAnD,EAAkE;AAC9D,iBAAS,CAAC,CAAD,CAAT,GAAe,SAAf;AACA;AACH;;AAED,UAAM,UAAU,GAAG,KAAK,GAAG,CAA3B;;AACA,UAAI,CAAE,KAAK,CAAC,UAAN,GAAmB,QAAnB,CAA4B,UAA5B,CAAN,EAAgD;AAC5C;AACH;;AACD,UAAM,GAAG,GAAG,EAAE,CAAC,QAAf;AACA,UAAM,GAAG,GAAG,EAAE,CAAC,MAAH,GAAY,kBAAxB;AAEA,UAAM,KAAK,GAAG,GAAd,CAlB6C,CAkB1B;;AACnB,UAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,aAAtB,CAnB6C,CAmBR;;AACrC,UAAM,SAAS,GAAG,GAAlB;AACA,UAAM,MAAM,GAAI,CAAC,KAAK,SAAS,CAAC,MAAV,GAAmB,CAAzC;AACA,UAAM,OAAO,GAAI,CAAC,KAAK,CAAvB;AACA,UAAI,QAAJ;AACA,UAAI,YAAJ;;AACA,UAAI,CAAC,OAAL,EAAc;AACV,oBAAY,GAAG,SAAS,CAAC,CAAC,GAAG,CAAL,CAAxB;AACH;;AACD,UAAI,CAAC,MAAL,EAAa;AACT,gBAAQ,GAAG,SAAS,CAAC,CAAC,GAAG,CAAL,CAApB;AACH;;AACD,UAAM,CAAC,kBAAD,EAAqB,gBAArB,IAAyC,KAAK,YAAL,CAAkB,KAAlB,CAA/C;AACA,UAAI,sBAAsB,GAAG,GAA7B;;AACA,UAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,8BAAsB,GAAG,KAAK,YAAL,CAAkB,SAAlB,EAA6B,CAA7B,CAAzB;AACH;;AACD,UAAI,KAAK,KAAK,kBAAV,IAAgC,GAAG,KAAK,gBAA5C,EAA8D;AAC1D,iBAAS,CAAC,CAAD,CAAT,GAAe,SAAf;AACA;AACH;;AAED,UAAI,QAAJ;;AACA,UAAI,OAAO,IAAI,kBAAkB,KAAK,GAAtC,EAA2C;AACvC,gBAAQ,GAAG,OAAX;;AACA,YAAI,QAAQ,KAAK,SAAb,IAA0B,CAAE,QAAQ,CAAC,UAAT,GAAsB,QAAtB,CAA+B,UAA/B,CAAhC,EAA6E;AACzE,kBAAQ,GAAG,eAAX;AACH;AACJ,OALD,MAKO,IAAI,MAAJ,EAAY;AACf,gBAAQ,GAAG,MAAX;;AACA,YAAI,YAAY,KAAK,SAAjB,IAA8B,CAAC,YAAY,CAAC,UAAb,GAA0B,QAA1B,CAAmC,UAAnC,CAAnC,EAAmF;AAC/E,kBAAQ,GAAG,cAAX;AACH,SAFD,MAEO,IAAI,YAAY,IAAI,YAAY,CAAC,eAAb,CAA6B,UAA7B,MAA6C,MAAjE,EAAyE;AAC5E,mBAAS,CAAC,CAAD,CAAT,GAAe,SAAf;AACH;AACJ,OAPM,MAOA,IAAI,YAAY,KAAK,SAAjB,IAA8B,CAAC,YAAY,CAAC,UAAb,GAA0B,QAA1B,CAAmC,UAAnC,CAAnC,EAAmF;AACtF,YAAI,UAAU,KAAK,CAAf,IAAoB,QAAQ,KAAK,SAArC,EAAgD;AAC5C,mBAAS,CAAC,CAAD,CAAT,GAAe,SAAf;AACA;AACH,SAHD,MAGO,IAAI,QAAQ,KAAK,SAAb,IAA0B,UAAU,GAAG,CAA3C,EAA8C;AACjD,kBAAQ,GAAG,cAAX;AACH,SAFM,MAEA,IAAI,SAAS,IAAI,gBAAjB,EAAmC;AACtC,kBAAQ,GAAG,cAAX;AACH,SAFM,MAEA,IAAI,QAAQ,KAAK,SAAb,IAA0B,CAAE,QAAQ,CAAC,UAAT,GAAsB,QAAtB,CAA+B,UAA/B,CAAhC,EAA6E;AAChF,kBAAQ,GAAG,eAAX;AACH,SAFM,MAEA;AACH,kBAAQ,GAAG,OAAX;AACH;AACJ,OAbM,MAaA,IAAI,YAAY,IACR,YAAY,CAAC,UAAb,GAA0B,QAA1B,CAAmC,UAAnC,CADJ,IAEI,CAAC,MAAD,EAAS,cAAT,EAAyB,QAAzB,CAAkC,YAAY,CAAC,eAAb,CAA6B,UAA7B,CAAlC,CAFR,EAGL;AACE,YAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,kBAAQ,GAAG,OAAX;AACH,SAFD,MAEO;AACH,kBAAQ,GAAG,cAAX;AACH;AACJ,OATM,MASA,IAAI,QAAQ,KAAK,SAAb,IAA0B,CAAC,QAAQ,CAAC,UAAT,GAAsB,QAAtB,CAA+B,UAA/B,CAA/B,EAA2E;AAC9E,gBAAQ,GAAG,MAAX;AACH,OAFM,MAEA,IAAI,SAAS,GAAG,gBAAhB,EAAkC;AACrC,gBAAQ,GAAG,UAAX;AACH,OAFM,MAEA,IAAI,SAAS,IAAI,sBAAjB,EAAyC;AAC5C,gBAAQ,GAAG,MAAX;AACH,OAFM,MAEA;AACH,eAAO,CAAC,IAAR,CAAa,uBAAb;AACA;AACH;;AACD,WAAK,CAAC,WAAN,CAAkB,UAAlB,EAA8B,QAA9B;AACH,KAvFD;;AAyFA,QAAM,MAAM,GAAG,KAAK,CAAC,IAAN,CAAW,SAAX,CAAf;;AACA,SAAK,IAAI,KAAK,GAAG,CAAjB,EAAoB,KAAK,GAAG,+DAA5B,EAA+D,KAAK,EAApE,EAAwE;AACpE,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,MAAM,CAAC,MAA3B,EAAmC,CAAC,EAApC,EAAwC;AACpC,YAAM,EAAE,GAAG,MAAM,CAAC,CAAD,CAAjB;AACA,+BAAuB,CAAC,CAAD,EAAI,EAAJ,EAAQ,KAAR,CAAvB;AACH;AACJ;;AAED,aAAS,GAAG,8DAAgC,SAAhC,CAAZ;AACA,aAAS,GAAG,qEAAuC,SAAvC,CAAZ;AACA,WAAO,SAAP;AACH;AAED;;;AAGG;;;AACH,sCAAoC,CAAC,EAAD,EAAkB;AAClD,QAAM,OAAO,GAAG,EAAE,CAAC,iBAAH,EAAhB;;AACA,QAAM,eAAe,GAAG,KAAK,iBAAL,CAAuB;AAAC,2BAAqB,EAAE;AAAxB,KAAvB,CAAxB;;AACA,QAAK,OAAO,GAAG,eAAX,GAA8B,KAAK,WAAL,CAAiB,aAAnD,EAAkE;AAC9D,aAAO,OAAP;AACH,KAFD,MAEO;AACH,UAAM,IAAI,GAAG,4CAAe,OAAO,GAAG,eAAzB,EAA2C,KAAK,WAAL,CAAiB,aAA5D,CAAb;AACA,aAAO,IAAP;AACH;AACJ;AAED;;;;;;;;;;AAWA,mBAAiB,CAAC,OAAD,EAAgB;AAC7B,QAAM,SAAS,GAAG,KAAK,aAAL,CAAmB,OAAnB,CAAlB;AACA,QAAM,CAAC,KAAD,EAAQ,GAAR,IAAe,KAAK,YAAL,CAAkB,OAAlB,CAArB;AACA,QAAM,UAAU,GAAG,GAAG,GAAG,KAAzB;AACA,QAAM,QAAQ,GAAG,OAAO,GAAG,KAA3B;AACA,WAAO,SAAS,GAAG,CAAZ,GAAiB,QAAQ,GAAG,UAAnC;AACH;AAED;;;;AAIG;;;AACH,mBAAiB;AACb,QAAM,cAAc,GAAG,KAAK,UAA5B;AACA,QAAM,YAAY,GAAG,EAArB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,cAAc,CAAC,MAAnC,EAA2C,CAAC,EAA5C,EAAgD;AAC5C,UAAM,CAAC,YAAD,EAAe,cAAf,IAAiC,cAAc,CAAC,CAAD,CAArD;AACA,kBAAY,CAAC,IAAb,CAAkB,IAAI,8DAAJ,CAAsB,YAAtB,EAAoC,cAApC,CAAlB;AACH;;AACD,WAAO,YAAP,CAPa,CASb;AACA;AACA;AACA;AACA;AACH;;AA5XgD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxCrD;;;;;;;;;;;;;;;;;AAiBG;AACH;AACA;AAEA;AACA;AAEA;AACA;AACA;CAiBA;;AACc,MAAO,CAAC,IAAR,GAAe,qCAAf;;AAEd,MAAM,qBAAN,CAA2B;AAA3B;AACI;;AAEG;AACH,2BAA0B,CAA1B;AACA;;;AAGG;;AACH,oBAAmB,GAAnB,CATJ,CAS6B;;AACzB;;AAEG;;AACH,yBAAwB,CAAxB,CAbJ,CAagC;;AAC5B;;AAEG;;AACH,0BAAwB,SAAxB;AAEA;;;AAGG;;AACH,0BAAyB,IAAI,CAAC,GAAL,EAAzB,CAvBJ,CAuByC;;AAErC;;;;;AAKG;;AACH,uBAAqC,SAArC;AAEU,sBAAa,EAAb;AACV;;AAEG;;AACH,qBAA6B,SAA7B;AAiBH;;AAfY,MAAL,KAAK;AACL,QAAI,KAAK,SAAL,KAAmB,SAAvB,EAAkC;AAC9B,aAAO,KAAK,UAAZ;AACH,KAFD,MAEO;AACH,aAAO,KAAK,SAAL,CAAe,KAAtB;AACH;AACJ;;AAEQ,MAAL,KAAK,CAAC,CAAD,EAAU;AACf,QAAI,KAAK,SAAL,KAAmB,SAAvB,EAAkC;AAC9B,WAAK,UAAL,GAAkB,CAAlB;AACH,KAFD,MAEO;AACH,WAAK,SAAL,CAAe,KAAf,GAAuB,CAAvB;AACH;AACJ;;AArDsB;;AAwDpB,IAAM,MAAM,GAAG,IAAI,qBAAJ,EAAf;AAGP;;;;;;;AAOG;;AACG,MAAO,KAAP,CAAY;AAWd,cAAY,CAAZ,EAAe,CAAf,EAAkB,CAAlB,EAAqB,CAArB,EAAsB;AAFtB,oBAAmB,SAAnB;AAGI,SAAK,MAAL,GAAc,CAAd;AACA,SAAK,KAAL,GAAa,CAAb;AACA,SAAK,KAAL,GAAa,CAAb;AACA,SAAK,KAAL,GAAa,CAAb;AACA,SAAK,WAAL,GAAmB,CAAC,IAAI,CAAxB,CALkB,CAKU;;AAC5B,SAAK,OAAL,GAAe,KAAK,WAAL,KAAqB,CAApC;AACA,SAAK,MAAL,GAAc,KAAK,WAAL,KAAqB,CAAnC;AAEA,SAAK,QAAL,GAAgB,SAAhB;;AACA,QAAI,KAAK,MAAL,IAAe,KAAK,OAAxB,EAAiC;AAC7B,WAAK,QAAL,GAAgB,KAAK,KAAL,GAAa,KAAK,MAAM,CAAC,eAAzC;AACA,WAAK,QAAL,GAAgB,KAAK,KAArB;AACH;AACJ;AAED;;;;;AAKG;;;AACH,cAAY;AACR,QAAI,yDAAJ,EAA8B;AAC1B;AACA;AACA;AACA,UAAI,KAAK,MAAT,EAAiB;AACb,qDAAY,CAAZ,EAAe,KAAK,QAApB,EAA8B,KAAK,QAAnC,EAA6C,CAA7C;AACH,OAFD,MAEO,IAAI,KAAK,OAAT,EAAkB;AACrB,sDAAa,CAAb,EAAgB,KAAK,QAArB,EAA+B,CAA/B;AACH;AACJ,KATD,MASO;AACH,aAAO,CAAC,IAAR,CAAa,4DAAb;AACH;AACJ;AAED;;;;AAIG;;;AACH,aAAW;AACP,QAAM,IAAI,GAAG,IAAI,uCAAJ,EAAb;AACA,QAAI,CAAC,KAAL,CAAW,EAAX,GAAgB,KAAK,QAArB;AACA,WAAO,IAAP;AACH;;AAzDa;AA6DlB;;;;;AAKG;;AACI,IAAM,gBAAgB,GAAG,EAAzB;AAIP;;AACA;;;;;;;AAOG;;AACG,SAAU,cAAV,GAAwB;AAC1B;AACA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAL,EAAhB,CAF0B,CAEE;;AAC5B,MAAI,MAAM,CAAC,aAAP,GAAuB,MAAM,CAAC,QAA9B,GAAyC,OAA7C,EAAsD;AAClD,UAAM,CAAC,aAAP,GAAuB,OAAvB;;AACA,QAAI,MAAM,CAAC,cAAP,KAA0B,SAA9B,EAAyC;AACrC;AACA,kBAAY,CAAC,MAAM,CAAC,cAAR,CAAZ;AACA,YAAM,CAAC,cAAP,GAAwB,SAAxB;AACH;AACJ;;AACD,YAAU,CAAC,cAAD,EAAiB,MAAM,CAAC,QAAxB,CAAV;AACH;AACD;;;;;;;;AAQG;;AACG,SAAU,UAAV,CAAqB,MAArB,EAA2B;AAC7B;AACA,MAAI,MAAM,CAAC,MAAX,EAAmB;AACf,QAAM,IAAI,GAAG,MAAM,CAAC,WAAP,EAAb;;AACA,QAAI,MAAM,CAAC,cAAP,KAA0B,SAA9B,EAAyC;AACrC,YAAM,CAAC,cAAP,GAAwB,CAAC,IAAD,CAAxB;AACH,KAFD,MAEO;AACH,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,MAAM,CAAC,cAAP,CAAsB,MAA1C,EAAkD,CAAC,EAAnD,EAAuD;AACnD,YAAM,SAAS,GAAG,MAAM,CAAC,cAAP,CAAsB,CAAtB,CAAlB;;AACA,YAAI,SAAS,CAAC,KAAV,CAAgB,EAAhB,KAAuB,IAAI,CAAC,KAAL,CAAW,EAAtC,EAA0C;AACtC,iBADsC,CAC9B;AACX;AACJ;;AACD,YAAM,CAAC,cAAP,CAAsB,IAAtB,CAA2B,IAA3B;AACH;AACJ;AACJ;AAED;;;;;;;;AAQG;;AACG,SAAU,YAAV,CAAuB,aAAvB,EAAoC;AACtC,MAAI,YAAJ;;AACA,MAAI,aAAa,CAAC,MAAd,GAAuB,CAA3B,EAA8B;AAC1B;AACA,gBAAY,GAAG,IAAI,yCAAJ,CAAgB,aAAhB,CAAf;AACH,GAHD,MAGO,IAAI,aAAa,CAAC,MAAd,KAAyB,CAA7B,EAAgC;AACnC,gBAAY,GAAG,aAAa,CAAC,CAAD,CAA5B,CADmC,CACF;AACpC,GAFM,MAEA;AACH,WAAO,SAAP;AACH;;AACD,cAAY,CAAC,aAAb,GAA6B,QAA7B;AACA,kBAAgB;AAChB,QAAM,CAAC,WAAP,GAAqB,YAArB;;AACA,MAAI,SAAS,CAAC,YAAV,KAA2B,SAA/B,EAA0C;AACtC,aAAS,CAAC,YAAV,CAAuB,YAAvB;AACH;;AACD,SAAO,YAAP;AACH;AAED;AACA;;AAIA;;;;;;;AAOG;;AACG,SAAU,gBAAV,CAA2B,WAAW,GAAC,SAAvC,EAAgD;AAClD,MAAI,WAAW,KAAK,SAApB,EAA+B;AAC3B,eAAW,GAAG,MAAM,CAAC,WAArB;AACH;;AACD,MAAI,WAAW,KAAK,SAApB,EAA+B;AAC3B,WAAO,SAAP;AACH;;AAED,MAAI,WAAW,YAAY,0CAA3B,EAAyC;AACrC,eAAW,CAAC,aAAZ,GAA4B,SAA5B;AACH;;AACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAL,EAAhB;AACA,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,CAAC,cAAzC;AACA,QAAM,CAAC,cAAP,GAAwB,OAAxB;AACA,MAAM,uBAAuB,GAAG,OAAO,EAAP,GAAY,MAAM,CAAC,KAAnD;AACA,MAAM,eAAe,GAAG,eAAe,GAAG,uBAA1C;AACA,MAAI,oBAAoB,GAAG,IAAI,CAAC,KAAL,CAAW,IAAI,eAAf,IAAkC,CAA7D;;AACA,MAAI,oBAAoB,IAAI,CAA5B,EAA+B;AAC3B,wBAAoB,GAAG,CAAvB;AACH,GAFD,MAEO,IAAI,oBAAoB,IAAI,CAA5B,EAA+B;AAClC,wBAAoB,GAAG,CAAvB;AACH,GAFM,MAEA,IAAI,oBAAoB,GAAG,CAA3B,EAA8B;AACjC,wBAAoB,GAAG,CAAvB;AACH,GAFM,MAEA,IAAI,oBAAoB,KAAK,IAA7B,EAAmC;AACtC,wBAAoB,GAAG,CAAvB;AACH,GAFM,MAEA,IAAI,oBAAoB,KAAK,IAA7B,EAAmC;AACtC,wBAAoB,GAAG,GAAvB;AACH,GAFM,MAEA,IAAI,oBAAoB,KAAK,CAA7B,EAAgC;AACnC,wBAAoB,GAAG,KAAvB;AACH;;AACD,aAAW,CAAC,QAAZ,CAAqB,aAArB,GAAqC,oBAArC;AACA,SAAO,WAAP;AACH;AAED;;AACA;;;;;;AAMG;;AACI,IAAM,YAAY,GAAG,SAAS,IAAG;AACpC,WAAS,CAAC,YAAV;AACH,CAFM;AAIP;;AAEA;;;;;;;AAOG;;AACG,SAAU,gBAAV,CAA2B,SAA3B,EAAsC,QAAtC,EAA8C;AAChD;AACA,MAAI,yCAAJ,EAAW;AACP,WAAO,CAAC,GAAR,CAAY,6CAAZ;AACA,WAAO,CAAC,GAAR,CACI,mEADJ;AAGH;;AACD,qCAAC,CAAC,mBAAD,CAAD,CAAuB,MAAvB;AAEA,MAAM,UAAU,GAAG,qDAAoB,UAAvC;AACA,MAAM,aAAa,GAAG,8CAAgB,SAAhB,CAAtB;;AACA,MAAI,aAAa,KAAK,SAAtB,EAAiC;AAC7B,wDACI,aAAa,CAAC,WADlB,EAEI,aAAa,CAAC,WAFlB;;AAIA,QAAI,yCAAJ,EAAW;AACP,aAAO,CAAC,GAAR,CACI,SAAS,GAAG,IAAZ,GAAmB,aAAa,CAAC,WAAjC,GAA+C,cADnD,EAEI,aAAa,CAAC,WAFlB;AAIH;;AACD,QAAI,UAAU,KAAK,KAAnB,EAA0B;AACtB;AACA;AACA;AACA,UAAM,OAAO,GAAG,aAAa,CAAC,WAA9B;AACA,mDAAY,OAAZ,EAAqB,EAArB,EAAyB,CAAzB,EAA4B,CAA5B,EALsB,CAKa;;AACnC,oDAAa,OAAb,EAAsB,EAAtB,EAA0B,CAA1B,EAA6B,GAA7B,EANsB,CAMa;;AACnC,mDAAY,OAAZ,EAAqB,EAArB,EAAyB,CAAzB,EAA4B,GAA5B,EAPsB,CAOa;;AACnC,oDAAa,OAAb,EAAsB,EAAtB,EAA0B,CAA1B,EAA6B,GAA7B,EARsB,CAQa;;AACnC,mDAAY,OAAZ,EAAqB,EAArB,EAAyB,CAAzB,EAA4B,GAA5B,EATsB,CASa;;AACnC,oDAAa,OAAb,EAAsB,EAAtB,EAA0B,CAA1B,EAA6B,GAA7B;AACH;AACJ;;AACD,MAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,YAAQ,CAAC,aAAD,CAAR;AACH;;AACD,kBAAgB,CAAC,SAAD,CAAhB,GAA8B,IAA9B;AACH;AAED;;;;;;;;;;;;;;;AAeG;;AACG,SAAU,aAAV,CACF,SADE,EAEF,QAAQ,GAAC,SAFP,EAEgB;AAElB,MAAI,gBAAgB,CAAC,SAAD,CAAhB,KAAgC,IAApC,EAA0C;AACtC;AACA,QAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,UAAM,aAAa,GAAG,8CAAgB,SAAhB,CAAtB;AACA,cAAQ,CAAC,aAAD,CAAR;AACH;AACJ,GAND,MAMO,IAAI,gBAAgB,CAAC,SAAD,CAAhB,KAAgC,SAApC,EAA+C;AAClD;AACA;AACA,QAAM,YAAY,GAAG,MAAK;AACtB,UAAI,gBAAgB,CAAC,SAAD,CAAhB,KAAgC,IAApC,EAA0C;AACtC,YAAI,yCAAJ,EAAW;AACP,iBAAO,CAAC,GAAR,CACI,sDADJ;AAGH;;AACD,YAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,cAAM,cAAa,GAAG,8CAAgB,SAAhB,CAAtB;;AACA,kBAAQ,CAAC,cAAD,CAAR;AACH;AACJ,OAVD,MAUO;AACH,YAAI,yCAAJ,EAAW;AACP,iBAAO,CAAC,GAAR,CAAY,gCAAZ;AACH;;AACD,kBAAU,CAAC,YAAD,EAAe,GAAf,CAAV;AACH;AACJ,KAjBD;;AAkBA,gBAAY;AACf,GAtBM,MAsBA;AACH;AACA;AACA,oBAAgB,CAAC,SAAD,CAAhB,GAA8B,SAA9B;;AACA,QAAI,yCAAJ,EAAW;AACP,aAAO,CAAC,GAAR,CAAY,4BAAZ;AACH;;AACD,uCAAC,CAAC,QAAD,CAAD,CAAY,KAAZ,CAAkB,MAAK;AACnB,UAAI,yCAAJ,EAAW;AACP,eAAO,CAAC,GAAR,CAAY,2CAAZ;AACH;;AACD,yCAAC,CAAC,QAAQ,CAAC,IAAV,CAAD,CAAiB,MAAjB,CACI,mCAAC,CACG,mEACM,sDAFT,CADL;AAMA,uDAAgB;AACZ,oBAAY,EAAE,sDADF;AAEZ,kBAAU,EAAE,SAFA;AAGZ,iBAAS,EAAE,gBAAgB,CAAC,IAAjB,CACP,qCADO,EAEP,SAFO,EAGP,QAHO;AAHC,OAAhB;AASH,KAnBD;AAoBH;AACJ;AAED;;;;;;;;AAQG;;AACG,MAAO,UAAP,CAAiB;AAMnB;AAJA,iBAAgB,GAAhB;AAEA,iBAAgB,EAAhB,CAEA,CAFqB;;AAGjB,SAAK,MAAL,GAAc,IAAI,4CAAJ,EAAd;AACH;AAED;;;AAGG;;;AACH,WAAS,CAAC,KAAD,EAAM;AACX,QAAI,MAAJ;;AACA,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,WAAK,GAAG,QAAQ,CAAC,IAAjB;AACH;;AAED,QAAI,EAAE,KAAK,YAAY,mCAAnB,CAAJ,EAA2B;AACvB,YAAM,GAAG,mCAAC,CAAC,KAAD,CAAV;AACH,KAFD,MAEO;AACH,YAAM,GAAG,KAAT;AACH;AAED;;;AAGG;;;AACH,QAAM,QAAQ,GAAG,mCAAC,CAAC,0BAAD,CAAlB;AACA;;;AAGG;;AACH,QAAM,SAAS,GAAG,mCAAC,CAAC,gCAAD,CAAnB;AACA;;;AAGG;;AACH,QAAM,UAAU,GAAG,mCAAC,CAChB,yCACM,KAAK,OAAL,EADN,GAEM,mCAHU,CAApB;AAMA;;;AAGG;;AACH,QAAM,KAAK,GAAG,mCAAC,CACX,yCACM,KAAK,OAAL,EADN,GAEM,oCAHK,CAAf;AAMA,cAAU,CAAC,EAAX,CAAc,OAAd,EAAuB,MAAM,KAAK,aAAL,EAA7B;AACA,SAAK,CAAC,EAAN,CAAS,OAAT,EAAkB,MAAM,KAAK,UAAL,EAAxB;AACA,aAAS,CAAC,MAAV,CAAiB,UAAjB;AACA,aAAS,CAAC,MAAV,CAAiB,KAAjB;AACA,YAAQ,CAAC,MAAT,CAAgB,SAAhB;AAEA;;;AAGG;;AACH,QAAM,KAAK,GAAG,mCAAC,CAAC,4BAAD,CAAf;AACA;;;AAGG;;AACH,QAAM,WAAW,GAAG,mCAAC,CAAC,sCAAD,CAArB;AACA;;;AAGG;;AACH,QAAM,QAAQ,GAAG,mCAAC,CACd,2DADc,CAAlB;AAGA;;;AAGG;;AACH,QAAM,cAAc,GAAG,mCAAC,CAAC,0CAAD,CAAxB;AACA,SAAK,CAAC,MAAN,CAAa,WAAb;AACA,SAAK,CAAC,MAAN,CAAa,QAAb;AACA,SAAK,CAAC,MAAN,CAAa,cAAb;AACA,YAAQ,CAAC,MAAT,CAAgB,KAAhB;AAEA,UAAM,CAAC,MAAP,CAAc,QAAd;AACA,SAAK,QAAL,GAAgB,QAAhB;AACA,WAAO,QAAP;AACH;;AAED,YAAU;AACN,SAAK,aAAL,CAAmB,KAAnB;AACH;AAED;;;AAGG;;;AACH,SAAO;AACH,WAAO,uDAAyB,WAAhC;AACH;AAED;;;AAGG;;;AACH,UAAQ;AACJ,WAAO,uDAAyB,YAAhC;AACH;AAED;;;AAGG;;;AACH,SAAO;AACH,WAAO,uDAAyB,WAAhC;AACH;;AAED,eAAa,CAAC,IAAI,GAAC,IAAN,EAAU;AACnB,QAAI,CAAJ;;AACA,QAAI,KAAK,QAAL,KAAkB,SAAtB,EAAiC;AAC7B,OAAC,GAAG;AAAE,WAAG,EAAE;AAAP,OAAJ;AACH,KAFD,MAEO;AACH,OAAC,GAAG,KAAK,QAAL,CAAc,IAAd,CAAmB,YAAnB,EAAiC,CAAjC,CAAJ;AACH;;AACD,QAAI,IAAI,KAAK,KAAb,EAAoB;AAChB,WAAK,MAAL,CAAY,IAAZ;AACA,OAAC,CAAC,GAAF,GAAQ,KAAK,OAAL,EAAR;AACH,KAHD,MAGO,IAAI,KAAK,MAAL,CAAY,OAAZ,IAAuB,IAAI,KAAK,OAApC,EAA6C;AAChD,OAAC,CAAC,GAAF,GAAQ,KAAK,OAAL,EAAR;AACA,WAAK,MAAL,CAAY,KAAZ,CAAkB,IAAlB;AACH,KAHM,MAGA;AACH,OAAC,CAAC,GAAF,GAAQ,KAAK,QAAL,EAAR;AACA,WAAK,MAAL,CAAY,MAAZ,GAAqB,KAArB,CAA2B,OAAO,CAAC,KAAnC;AACH;AACJ;;AAED,YAAU,CAAC,OAAD,EAAQ;AACd,QAAM,MAAM,GAAG,KAAK,MAApB;AACA,UAAM,CAAC,QAAP,GAAkB,KAAK,KAAvB;AAEA,QAAM,aAAa,GAAG,IAAtB;AACA,iBAAa,CAAC,sBAAD,EAAyB,MAAK;AACvC,YAAM,CAAC,QAAP,CACI,OADJ,EAEI,MAAK;AACD;AACA,qBAAa,CAAC,UAAd;AACH,OALL,EAMI,SANJ,EAMe;AAAU;AACrB,OAAC,IAAG;AACA;AACA,eAAO,CAAC,GAAR,CAAY,CAAZ;AACH,OAVL;AAYH,KAbY,CAAb;AAcH;;AAED,cAAY;AACR,SAAK,aAAL,CAAmB,KAAnB;AACH;;AAED,YAAU;AACN,SAAK,aAAL;AACH;;AAED,gBAAc;AACV,SAAK,MAAL,CAAY,KAAZ;AACA,SAAK,aAAL;AACH;;AAED,eAAa;AACT,QAAM,MAAM,GAAG,KAAK,MAApB;;AACA,QAAI,KAAK,QAAL,KAAkB,SAAtB,EAAiC;AAC7B;AACH;;AACD,QAAM,EAAE,GAAG,KAAK,QAAhB,CALS,CAMT;;AACA,QAAM,UAAU,GAAG,EAAE,CAAC,IAAH,CAAQ,aAAR,EAAuB,CAAvB,CAAnB;AACA,QAAM,aAAa,GAAG,EAAE,CAAC,IAAH,CAAQ,gBAAR,EAA0B,CAA1B,CAAtB;AACA,QAAM,UAAU,GAAG,EAAE,CAAC,IAAH,CAAQ,SAAR,EAAmB,CAAnB,CAAnB;AACA,QAAM,QAAQ,GAAG,EAAE,CAAC,IAAH,CAAQ,UAAR,CAAjB,CAVS,CAWT;;AACA,YAAQ,CAAC,EAAT,CAAY,WAAZ,EAAyB,CAAC,IAAG;AACzB,YAAM,CAAC,WAAP,GAAqB,CAAC,CAAC,CAAC,KAAF,GAAU,QAAQ,CAAC,MAAT,GAAkB,IAA7B,IAAqC,GAArC,GAA2C,MAAM,CAAC,OAAvE;;AACA,UAAI,MAAM,CAAC,WAAP,GAAqB,CAAzB,EAA4B;AACxB,cAAM,CAAC,WAAP,GAAqB,CAArB;AACH;;AACD,UAAI,MAAM,CAAC,WAAP,GAAqB,MAAM,CAAC,OAAhC,EAAyC;AACrC,cAAM,CAAC,WAAP,GAAqB,MAAM,CAAC,OAA5B;AACH;;AACD,UAAI,KAAK,KAAL,KAAe,MAAnB,EAA2B;AACvB,aAAK,aAAL,CAAmB,OAAnB;AACH,OAFD,MAEO,IAAI,KAAK,KAAL,KAAe,IAAnB,EAAyB;AAC5B,aAAK,aAAL,CAAmB,MAAnB;AACH;AACJ,KAbD,EAZS,CA0BT;;AACA,QAAM,cAAc,GAAG,CAAC,IAAG;AACvB,UAAM,OAAO,GAAG,IAAI,CAAC,KAAL,CAAW,CAAC,GAAG,EAAf,CAAhB;AACA,UAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAL,CAAW,CAAC,GAAG,OAAO,GAAG,EAAzB,CAAD,CAApB;;AACA,UAAI,OAAO,CAAC,MAAR,KAAmB,CAAvB,EAA0B;AACtB,eAAO,GAAG,MAAM,OAAhB;AACH;;AACD,aAAO,OAAO,GAAG,GAAV,GAAgB,OAAvB;AACH,KAPD;;AASA,UAAM,CAAC,YAAP,CAAoB,IAAI,IAAG;AACvB,UAAM,OAAO,GAAG,IAAI,CAAC,GAAL,GAAW,IAAI,CAAC,GAAhC;AACA,UAAM,GAAG,GAAG,IAAI,CAAC,KAAL,CAAW,IAAI,CAAC,GAAhB,CAAZ,CAFuB,CAEW;;AAClC,UAAM,GAAG,GAAG,IAAI,CAAC,KAAL,CAAW,IAAI,CAAC,GAAhB,CAAZ,CAHuB,CAGW;;AAClC,UAAI,GAAG,KAAK,GAAZ,EAAiB;AACb;AACA,aAAK,YAAL;AACH,OAPsB,CAQvB;;;AACA,gBAAU,CAAC,KAAX,CAAiB,KAAjB,GAAyB,OAAO,GAAG,GAAV,GAAgB,GAAzC;AACA,gBAAU,CAAC,SAAX,GAAuB,cAAc,CAAC,GAAD,CAArC;AACA,mBAAa,CAAC,SAAd,GAA0B,MAAM,cAAc,CAAC,GAAG,GAAG,GAAP,CAA9C;AACH,KAZD;AAaH;;AAhOkB;AAmOvB;;;;;;;;;;;;;;;;;;AAkBG;;AACI,IAAM,SAAS,GAAsB;AACxC,KAAG,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,KAAgB,IAAI,KAAJ,CAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CADmB;AAExC,SAAO,EAAE,CAAC,YAAD,EAAe,gBAAf,CAF+B;AAGxC,cAAY,EAAE,YAAY,IAAG,CAAG;AAHQ,CAArC,C,CAMP;;AACO,IAAM,SAAS,GAAG,SAAlB,C;;;;;;;;;;;;;;;;;;ACxsBP;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDA;;AAEG;AACH;AACA;AACA;AAIA;AAIA;;AAEA,MAAM,uBAAN,SAAsC,2DAAtC,CAAsD;;AAItD,SAAS,kBAAT,CAA4B,KAA5B,EAAiC;AAC7B,MAAI,KAAK,KAAK,OAAd,EAAuB;AACnB,WAAO,MAAP;AACH,GAFD,MAEO,IAAI,KAAK,KAAK,QAAd,EAAwB;AAC3B,UAAM,IAAI,uBAAJ,CAA4B,2DAA5B,CAAN;AACH,GAFM,MAEA;AACH,WAAO,KAAP;AACH;AACJ;;AAED,SAAS,cAAT,CAAwB,KAAxB,EAA6B;AACzB,MAAM,MAAM,GAAG;AACX,iBAAa,SADF;AACa,oBAAgB,SAD7B;AACwC,YAAQ,SADhD;AAEX,kBAAc,SAFH;AAEc,aAAS,SAFvB;AAGX,aAAS,SAHE;AAGS,cAAU,SAHnB;AAG8B,aAAS,SAHvC;AAIX,sBAAkB,SAJP;AAIkB,YAAQ,SAJ1B;AAIqC,kBAAc,SAJnD;AAKX,aAAS,SALE;AAKS,iBAAa,SALtB;AAMX,iBAAa,SANF;AAMa,kBAAc,SAN3B;AAMsC,iBAAa,SANnD;AAOX,aAAS,SAPE;AAOS,sBAAkB,SAP3B;AAOsC,gBAAY,SAPlD;AAQX,eAAW,SARA;AAQW,YAAQ,SARnB;AASX,gBAAY,SATD;AASY,gBAAY,SATxB;AASmC,qBAAiB,SATpD;AAUX,gBAAY,SAVD;AAUY,iBAAa,SAVzB;AAUoC,iBAAa,SAVjD;AAWX,mBAAe,SAXJ;AAWe,sBAAkB,SAXjC;AAYX,kBAAc,SAZH;AAYc,kBAAc,SAZ5B;AAYuC,eAAW,SAZlD;AAaX,kBAAc,SAbH;AAac,oBAAgB,SAb9B;AAayC,qBAAiB,SAb1D;AAcX,qBAAiB,SAdN;AAciB,qBAAiB,SAdlC;AAeX,kBAAc,SAfH;AAec,gBAAY,SAf1B;AAeqC,mBAAe,SAfpD;AAgBX,eAAW,SAhBA;AAgBW,kBAAc,SAhBzB;AAiBX,iBAAa,SAjBF;AAiBa,mBAAe,SAjB5B;AAiBuC,mBAAe,SAjBtD;AAkBX,eAAW,SAlBA;AAmBX,iBAAa,SAnBF;AAmBa,kBAAc,SAnB3B;AAmBsC,YAAQ,SAnB9C;AAoBX,iBAAa,SApBF;AAoBa,YAAQ,SApBrB;AAoBgC,aAAS,SApBzC;AAqBX,mBAAe,SArBJ;AAsBX,gBAAY,SAtBD;AAsBY,eAAW,SAtBvB;AAuBX,kBAAc,SAvBH;AAuBc,cAAU,SAvBxB;AAuBmC,aAAS,SAvB5C;AAwBX,aAAS,SAxBE;AAyBX,gBAAY,SAzBD;AAyBY,qBAAiB,SAzB7B;AAyBwC,iBAAa,SAzBrD;AA0BX,oBAAgB,SA1BL;AA0BgB,iBAAa,SA1B7B;AA0BwC,kBAAc,SA1BtD;AA2BX,iBAAa,SA3BF;AA2Ba,4BAAwB,SA3BrC;AA4BX,iBAAa,SA5BF;AA4Ba,kBAAc,SA5B3B;AA4BsC,iBAAa,SA5BnD;AA6BX,mBAAe,SA7BJ;AA6Be,qBAAiB,SA7BhC;AA6B2C,oBAAgB,SA7B3D;AA8BX,sBAAkB,SA9BP;AA8BkB,sBAAkB,SA9BpC;AA+BX,mBAAe,SA/BJ;AA+Be,YAAQ,SA/BvB;AA+BkC,iBAAa,SA/B/C;AAgCX,aAAS,SAhCE;AAiCX,eAAW,SAjCA;AAiCW,cAAU,SAjCrB;AAiCgC,wBAAoB,SAjCpD;AAkCX,kBAAc,SAlCH;AAkCc,oBAAgB,SAlC9B;AAkCyC,oBAAgB,SAlCzD;AAmCX,sBAAkB,SAnCP;AAmCkB,uBAAmB,SAnCrC;AAoCX,yBAAqB,SApCV;AAoCqB,uBAAmB,SApCxC;AAqCX,uBAAmB,SArCR;AAqCmB,oBAAgB,SArCnC;AAqC8C,iBAAa,SArC3D;AAsCX,iBAAa,SAtCF;AAsCa,gBAAY,SAtCzB;AAuCX,mBAAe,SAvCJ;AAuCe,YAAQ,SAvCvB;AAwCX,eAAW,SAxCA;AAwCW,aAAS,SAxCpB;AAwC+B,iBAAa,SAxC5C;AAyCX,cAAU,SAzCC;AAyCU,iBAAa,SAzCvB;AAyCkC,cAAU,SAzC5C;AA0CX,qBAAiB,SA1CN;AA0CiB,iBAAa,SA1C9B;AA0CyC,qBAAiB,SA1C1D;AA2CX,qBAAiB,SA3CN;AA2CiB,kBAAc,SA3C/B;AA2C0C,iBAAa,SA3CvD;AA4CX,YAAQ,SA5CG;AA4CQ,YAAQ,SA5ChB;AA4C2B,YAAQ,SA5CnC;AA4C8C,kBAAc,SA5C5D;AA6CX,cAAU,SA7CC;AA8CX,qBAAiB,SA9CN;AA8CiB,WAAO,SA9CxB;AA8CmC,iBAAa,SA9ChD;AA+CX,iBAAa,SA/CF;AAgDX,mBAAe,SAhDJ;AAgDe,cAAU,SAhDzB;AAgDoC,kBAAc,SAhDlD;AAiDX,gBAAY,SAjDD;AAiDY,gBAAY,SAjDxB;AAiDmC,cAAU,SAjD7C;AAkDX,cAAU,SAlDC;AAkDU,eAAW,SAlDrB;AAkDgC,iBAAa,SAlD7C;AAmDX,iBAAa,SAnDF;AAmDa,YAAQ,SAnDrB;AAmDgC,mBAAe,SAnD/C;AAoDX,iBAAa,SApDF;AAqDX,WAAO,SArDI;AAqDO,YAAQ,SArDf;AAqD0B,eAAW,SArDrC;AAqDgD,cAAU,SArD1D;AAsDX,iBAAa,SAtDF;AAuDX,cAAU,SAvDC;AAwDX,aAAS,SAxDE;AAwDS,aAAS,SAxDlB;AAwD6B,kBAAc,SAxD3C;AAyDX,cAAU,SAzDC;AAyDU,mBAAe;AAzDzB,GAAf;;AA2DA,MAAI,KAAK,KAAK,SAAV,IAAuB,KAAK,KAAK,EAArC,EAAyC;AACrC,WAAO,KAAP;AACH,GAFD,MAEO,IAAI,CAAC,KAAK,CAAC,UAAN,CAAiB,GAAjB,CAAL,EAA4B;AAC/B,WAAO,MAAM,CAAC,KAAD,CAAN,CAAc,WAAd,EAAP;AACH,GAFM,MAEA;AACH,WAAO,KAAK,CAAC,WAAN,EAAP;AACH;AACJ;;AAGD,IAAM,aAAa,GAAG,CAClB,OADkB,EACT,MADS,EACD,SADC,EACU,OADV,EAElB,aAFkB,CAAtB;AAMM,MAAO,qBAAP,CAA4B;AAG9B,cAAY,GAAZ,EAA8B;AAC1B,SAAK,UAAL,GAAkB,GAAlB;AACH;;AAED,OAAK,CAAC,GAAG,GAAC,SAAL,EAAc;AACf,QAAI,GAAG,KAAK,SAAZ,EAAuB;AACnB,SAAG,GAAG,KAAK,UAAX;AACH;;AACD,QAAM,MAAM,GAAG,KAAK,cAAL,CAAoB,GAApB,CAAf;AACA,WAAO,KAAK,qBAAL,CAA2B,MAA3B,CAAP;AACH;;AAED,uBAAqB,CAAC,EAAD,EAAG;AACpB,QAAM,aAAa,GAAG,IAAI,aAAJ,CAAkB,EAAlB,CAAtB;AACA,iBAAa,CAAC,KAAd;AACA,WAAO,aAAa,CAAC,OAAd,EAAP;AACH;;AAED,gBAAc,CAAC,GAAD,EAAI;AACd,QAAM,OAAO,GAAG,GAAG,CAAC,OAApB;AACA,QAAI,MAAJ;;AACA,SAAK,IAAM,EAAX,IAAiB,aAAjB,EAAgC;AAC5B,UAAI,OAAO,CAAC,QAAR,CAAiB,EAAjB,CAAJ,EAA0B;AACtB,YAAM,QAAQ,GAAG,SAAS,EAA1B;AACA,cAAM,GAAG,KAAK,QAAL,EAAe,GAAf,CAAT;AACA;AACH;AACJ;;AACD,QAAI,MAAM,KAAK,SAAf,EAA0B;AACtB,YAAM,IAAI,uBAAJ,CACF,sCAA+B,GAA/B,0CACE,2BAFA,CAAN;AAIH;;AACD,WAAO,MAAP;AACH;;AAED,WAAS,CAAC,EAAD,EAAG;AACR,QAAM,KAAK,GAAG,EAAE,CAAC,YAAH,CAAgB;AAAE,aAAO,EAAE;AAAX,KAAhB,CAAd;AACA,WAAO,KAAP;AACH;;AAED,UAAQ,CAAC,CAAD,EAAE;AACN,QAAI,CAAC,CAAC,MAAN,EAAc;AACV,OAAC,GAAG,CAAC,CAAC,YAAF,EAAJ;AACH;;AACD,QAAM,CAAC,GAAG,IAAI,0CAAJ,EAAV;AACA,KAAC,CAAC,MAAF,CAAS,CAAT,EAAY,CAAZ,EALM,CAMN;;AACA,WAAO,KAAK,SAAL,CAAe,CAAf,CAAP;AACH;;AAED,aAAW,CAAC,CAAD,EAAE;AACT,QAAM,KAAK,GAAG,CAAC,CAAC,YAAF,EAAd;;AACA,QAAI,CAAC,CAAC,IAAF,KAAW,SAAf,EAA0B;AACtB,WAAK,CAAC,IAAN,GAAa,4CAAc,KAAd,EAAqB;AAAE,eAAO,EAAE;AAAX,OAArB,CAAb;AACH;;AACD,QAAM,CAAC,GAAG,IAAI,yCAAJ,EAAV;AACA,KAAC,CAAC,MAAF,CAAS,KAAT,EANS,CAOT;;AACA,WAAO,KAAK,QAAL,CAAc,CAAd,CAAP;AACH;;AAED,WAAS,CAAC,CAAD,EAAE;AACP,QAAM,CAAC,GAAG,IAAI,4CAAJ,EAAV;AACA,KAAC,CAAC,MAAF,GAAW,CAAX;AACA,KAAC,CAAC,MAAF,CAAS,CAAT,EAAY,CAAZ;AACA,WAAO,KAAK,WAAL,CAAiB,CAAjB,CAAP;AACH,GAvE6B,CAyE9B;AACA;AACA;AACA;AACA;AACA;;;AAEA,iBAAe,CAAC,CAAD,EAAE;AACb,QAAM,KAAK,GAAG,CAAC,CAAC,KAAF,CAAQ,IAAR,CAAd,CADa,CAEb;;AACA,QAAM,GAAG,GAAG,IAAI,4CAAJ,EAAZ;AACA,OAAG,CAAC,MAAJ,GAAa,CAAb;AACA,OAAG,CAAC,MAAJ,CAAW,KAAX;AAEA,WAAO,KAAK,WAAL,CAAiB,GAAjB,CAAP;AACH;;AAxF6B;AA6FlC,IAAM,gBAAgB,GAAG,KAAzB;AAEA;;AAEG;;AACG,MAAO,eAAP,CAAsB;AAIxB;AACI,SAAK,GAAL,GAAW,QAAQ,CAAC,cAAT,CAAwB,cAAxB,CAAuC,EAAvC,EAA2C,EAA3C,EAA+C,IAA/C,CAAX;AACA,SAAK,OAAL,GAAe,SAAf;AACH;;AAED,SAAO,CAAC;AAAE,UAAM,GAAC;AAAT,MAAgB,EAAjB,EAAmB;AACtB,QAAI,GAAG,GAAG,KAAK,SAAL,EAAV;AACA,QAAM,WAAW,GAAG,IAAI,aAAJ,EAApB;AACA,OAAG,IAAI,WAAW,CAAC,iBAAZ,CAA8B,KAAK,OAAnC,CAAP;AACA,WAAO,GAAP;AACH,GAduB,CAgBxB;;;AAEA,WAAS;AACL,sIAC8D,gBAD9D;AAGH;AAED;;AAEG;;;AACH,0BAAwB,CACpB,KADoB,EAEpB,KAFoB,EAGpB,GAHoB,EAIpB,gBAAsB,SAJF,EAKpB;AAAE,aAAS,GAAC,SAAZ;AAAuB,cAAU,GAAC;AAAlC,MAA0C,EALtB,EAKwB;AAE5C,QAAI,aAAa,KAAK,SAAtB,EAAiC;AAC7B,mBAAa,GAAG,uDAAyB,GAAzB,CAAhB;AACH;;AAED,QAAI,KAAK,GAAG,KAAK,CAAC,aAAD,CAAjB;;AACA,QAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,WAAK,GAAG,SAAS,CAAC,KAAD,CAAjB;AACH;;AACD,QAAI,CAAC,KAAK,KAAK,SAAV,IAAuB,KAAK,KAAK,EAAlC,KAAyC,CAAC,UAA9C,EAA0D;AACtD,aAAO,SAAP;AACH;;AACD,QAAM,UAAU,GAAG,KAAK,UAAL,CAAgB,KAAhB,EAAuB,GAAvB,CAAnB;;AACA,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,gBAAU,CAAC,SAAX,GAAuB,KAAvB;AACH;;AACD,WAAO,UAAP;AACH;;AAED,MAAI,CAAC,KAAD,EAAQ,KAAR,EAAe,GAAf,EAAoB,OAAO,GAAC,EAA5B,EAA8B;AAC9B,WAAO,KAAK,wBAAL,CAA8B,KAA9B,EAAqC,KAArC,EAA4C,GAA5C,EAAiD,SAAjD,EAA4D,OAA5D,CAAP;AACH;;AAED,4BAA0B,CACtB,KADsB,EAEtB,KAFsB,EAGtB,gBAHsB,EAItB;AAAE,iBAAa,GAAC,SAAhB;AAA2B,aAAS,GAAC;AAArC,MAAiD,EAJ3B,EAI6B;AAEnD,QAAI,aAAa,KAAK,SAAtB,EAAiC;AAC7B,mBAAa,GAAG,uDAAyB,gBAAzB,CAAhB;AACH;;AACD,QAAI,KAAK,GAAG,KAAK,CAAC,aAAD,CAAjB;;AACA,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB;AACH;;AACD,QAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,WAAK,GAAG,SAAS,CAAC,KAAD,CAAjB;AACH;;AACD,SAAK,CAAC,YAAN,CAAmB,gBAAnB,EAAqC,KAAK,CAAC,QAAN,EAArC;AACH;;AAED,MAAI,CAAC,KAAD,EAAQ,KAAR,EAAe,gBAAf,EAAiC,OAAO,GAAC,EAAzC,EAA2C;AAC3C,WAAO,KAAK,0BAAL,CAAgC,KAAhC,EAAuC,KAAvC,EAA8C,gBAA9C,EAAgE,OAAhE,CAAP;AACH,GA7EuB,CA+ExB;;;AACA,iBAAe,CAAC,OAAD,EAAU,SAAV,EAAmB,CAAI;;AAEtC,mBAAiB,CAAC,OAAO,GAAC,EAAT,EAAW;AACxB,QAAI,aAAa,GAAG,OAAO,CAAC,MAA5B;;AACA,QAAI,aAAa,GAAG,EAApB,EAAwB;AACpB,mBAAa,GAAG,EAAhB;AACH;;AACD,QAAM,eAAe,GAAG,IAAI,CAAC,KAAL,CAAW,CAAC,KAAK,aAAN,IAAuB,CAAlC,CAAxB;AACA,QAAM,gBAAgB,GAAG,IAAI,CAAC,IAAL,CAAU,CAAC,KAAK,aAAN,IAAuB,CAAjC,CAAzB;AACA,QAAM,WAAW,GAAG,IAAI,MAAJ,CAAW,eAAX,IAA8B,GAA9B,GAAoC,OAApC,GAA8C,GAA9C,GAAoD,IAAI,MAAJ,CAAW,gBAAX,CAAxE;AACA,QAAM,OAAO,GAAG,KAAK,GAAL,CAAS,aAAT,CAAuB,WAAvB,CAAhB;AACA,SAAK,OAAL,CAAa,WAAb,CAAyB,OAAzB;AACH,GA5FuB,CA8FxB;;AAEA;;AAEG;;;AACH,YAAU,CAAC,EAAD,EAAkB,GAAlB,EAA6B;AACnC,QAAM,UAAU,GAAiB,KAAK,GAAL,CAAS,aAAT,CAAuB,GAAvB,CAAjC;AACA,MAAE,CAAC,WAAH,CAAe,UAAf;AACA,WAAO,UAAP;AACH,GAvGuB,CAyGxB;AACA;AACA;AACA;AACA;;;AACA,UAAQ,CAAC,QAAD,EAAW,SAAX,EAAoB;AACxB,QAAI,SAAS,CAAC,KAAV,KAAoB,SAAxB,EAAmC;AAC/B,cAAQ,CAAC,YAAT,CAAsB,OAAtB,EAA+B,cAAc,CAAC,SAAS,CAAC,KAAX,CAA7C;AACH,KAFD,MAEO,IAAI,SAAS,CAAC,KAAV,KAAoB,SAApB,IAAiC,SAAS,CAAC,KAAV,CAAgB,KAAhB,KAA0B,SAA/D,EAA0E;AAC7E,cAAQ,CAAC,YAAT,CAAsB,OAAtB,EAA+B,cAAc,CAAC,SAAS,CAAC,KAAV,CAAgB,KAAjB,CAA7C;AACH;AACJ,GApHuB,CAsHxB;AACA;AACA;;;AACA,cAAY,CAAC,IAAD,EAAO,EAAP,EAAS,CAEpB,CA3HuB,CA6HxB;AACA;AACA;AACA;AACA;;;AAEA,gBAAc,CAAC,CAAD,EAAE;AACZ;AACA,QAAI,MAAJ;;AACA,QAAI,CAAC,CAAC,IAAF,KAAW,aAAf,EAA8B;AAC1B,YAAM,GAAG,WAAT;AACH,KAFD,MAEO;AACH,YAAM,GAAG,CAAC,CAAC,IAAX,CADG,CAEH;AACH;;AACD,QAAM,YAAY,GAAG,KAAK,GAAL,CAAS,aAAT,CAAuB,YAAvB,CAArB;AACA,gBAAY,CAAC,SAAb,GAAyB,MAAzB,CAVY,CAWZ;;AACA,WAAO,YAAP;AACH;;AAED,aAAW;AACP;AACA,QAAI,IAAI,GAAG,EAAX,CAFO,CAGP;;AACA,QAAM,QAAQ,GAAG,sDAAjB;;AAEA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,CAApB,EAAuB,CAAC,EAAxB,EAA4B;AACxB,UAAI,IAAI,QAAQ,CAAC,MAAT,CAAgB,IAAI,CAAC,KAAL,CAAW,IAAI,CAAC,MAAL,KAAgB,QAAQ,CAAC,MAApC,CAAhB,CAAR;AACH;;AAED,WAAO,IAAP;AACH;;AA7JuB;AAiK5B;;AAEG;;AACG,MAAO,aAAP,SAA6B,eAA7B,CAA4C;AAe9C,cAAY,KAAZ,EAAiB;AACb;AAdJ,4BAAmB,SAAnB;AACA,yBAAgB,SAAhB;AACA,yBAAgB,SAAhB;AACA,uBAAc,SAAd;AACA,wBAAe,SAAf;AACA,4BAAmB,SAAnB;AACA,uBAAc,GAAd;AACA,gCAAuB,CAAC,GAAD,EAAM,KAAK,WAAX,CAAvB;AACA,4BAAmB,EAAnB;AACA,0BAAiB,EAAjB;AACA,2BAAkB,EAAlB;AACA,iBAAgB,EAAhB;;AAII,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,WAAK,MAAL,GAAc,IAAI,0CAAJ,EAAd;AACH,KAFD,MAEO;AACH,WAAK,MAAL,GAAc,KAAd;AACH;;AACD,SAAK,OAAL,GAAe,KAAK,GAAL,CAAS,aAAT,CAAuB,gBAAvB,CAAf;AACA,SAAK,OAAL,CAAa,YAAb,CAA0B,SAA1B,EAAqC,gBAArC;AACH;;AAED,OAAK;AACD,QAAM,CAAC,GAAG,KAAK,MAAf;;AACA,QAAI,CAAC,CAAC,MAAF,KAAa,CAAjB,EAAoB;AAChB,aAAO,KAAK,WAAL,EAAP;AACH;;AACD,SAAK,kBAAL;AACA,SAAK,kBAAL,GANC,CAM0B;;AAC3B,SAAK,eAAL;AACA,SAAK,gBAAL,GAAwB,EAAxB;AACA,WAAO,KAAK,OAAZ;AACH;;AAED,aAAW;AACP;AACA,WAAO,KAAK,OAAZ;AACH;;AAED,oBAAkB;AACd;AACA;AACA,SAAK,oBAAL,GAHc,CAId;;AACA,SAAK,WAAL,GAAmB,GAAnB,CALc,CAMd;AACH;;AAED,sBAAoB;AAChB,QAAM,CAAC,GAAG,KAAK,MAAf;AACA,QAAM,eAAe,GAAG,CAAC,CAAC,kBAAF,CAAqB,QAArB,CAAxB;;AACA,SAAK,IAAM,WAAX,IAA0B,eAA1B,EAA2C;AACvC;AACA,UAAM,EAAE,GAAI,WAAsB,CAAC,WAAnC;;AACA,UAAI,EAAE,GAAG,KAAK,WAAd,EAA2B;AACvB,aAAK,WAAL,GAAmB,EAAnB;AACH;;AACD,WAAK,oBAAL,GAA4B,CAAC,GAAD,EAAM,KAAK,WAAX,CAA5B;AACH;;AACD,SAAK,KAAL,GAAa,KAAK,CAAC,IAAN,CAAW,eAAe,CAAC,MAAhB,EAAX,CAAb;AACH,GAhE6C,CAkE9C;AACA;;;AAEA,oBAAkB;AACd;AACA,SAAK,IAAM,WAAX,IAA0B,KAAK,KAA/B,EAAsC;AAClC,UAAM,EAAE,GAAG,IAAI,YAAJ,CAAiB,WAAjB,EAA8B;AAAE,cAAM,EAAE;AAAV,OAA9B,CAAX,CADkC,CAElC;;AACA,QAAE,CAAC,KAAH;AACA,WAAK,gBAAL,CAAsB,IAAtB,CAA2B,EAA3B;AACH;AACJ,GA7E6C,CA+E9C;;;AAEA,iBAAe;AACX,SAAK,cAAL;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,gBAAL,CAAsB,MAA1C,EAAkD,CAAC,EAAnD,EAAuD;AACnD,UAAM,GAAG,GAAG,KAAK,gBAAL,CAAsB,CAAtB,CAAZ;AACA,WAAK,iBAAL,CAAuB,UAAU,CAAC,CAAC,QAAF,EAAjC;AACA,WAAK,OAAL,CAAa,WAAb,CAAyB,GAAG,CAAC,OAA7B;AACH;AACJ;;AAED,gBAAc;AACV;AACA;AACA;AACA;AACA;AACA;AACA,SAAK,WAAL;AACH,GAlG6C,CAoG9C;AACA;AACA;AACA;;;AAEA,aAAW;AACP;AACA,QAAM,UAAU,GAAG,KAAK,UAAL,CAAgB,KAAK,OAArB,EAA8B,WAA9B,CAAnB,CAFO,CAGP;;AACA,SAAK,IAAM,GAAX,IAAkB,KAAK,gBAAvB,EAAyC;AACrC;AACA,UAAM,WAAW,GAAG,GAAG,CAAC,eAAJ,EAApB;AACA,gBAAU,CAAC,WAAX,CAAuB,WAAvB;AACH;;AACD,WAAO,UAAP;AACH;;AAnH6C;AA6HlD;;AAEG;;AACG,MAAO,YAAP,SAA4B,eAA5B,CAA2C;AAY7C,cAAY,OAAZ,EAAqB;AAAE,UAAM,GAAC;AAAT,MAAqB,EAA1C,EAA4C;AACxC;AACA,SAAK,MAAL,GAAc,OAAd;AACA,SAAK,MAAL,GAAc,MAAd;AACA,SAAK,OAAL,GAAe,KAAK,GAAL,CAAS,aAAT,CAAuB,MAAvB,CAAf;;AACA,QAAI,MAAM,KAAK,SAAf,EAA0B;AACtB,WAAK,WAAL,GAAmB,IAAI,2CAAJ,EAAnB;AACA,WAAK,oBAAL,GAA4B,CAAC,GAAD,EAAM,GAAN,CAA5B;AACA,WAAK,eAAL,GAAuB,EAAvB;AACH,KAJD,MAIO;AACH,WAAK,WAAL,GAAmB,MAAM,CAAC,WAA1B;AACA,WAAK,oBAAL,GAA4B,MAAM,CAAC,oBAAnC;AACA,WAAK,eAAL,GAAuB,MAAM,CAAC,eAA9B;AACH;;AACD,SAAK,gBAAL,GAAwB,SAAxB;AACA,SAAK,qBAAL,GAA6B,SAA7B;AAEA,SAAK,aAAL,GAAqB,SAArB;AACA,SAAK,aAAL,GAAqB,OAAO,CAAC,aAA7B;AACA,SAAK,SAAL,GAAiB,KAAK,WAAL,EAAjB,CAnBwC,CAmBH;AACxC;;AAED,OAAK;AACD;AACA,SAAK,OAAL,CAAa,YAAb,CAA0B,IAA1B,EAAgC,KAAK,SAArC;AACA,QAAM,aAAa,GAAG,KAAK,MAAL,CAAY,kBAAZ,CAA+B,QAA/B,CAAtB,CAHC,CAID;AACA;;AACA,SAAK,IAAM,CAAX,IAAgB,aAAhB,EAA+B;AAC3B,WAAK,iBAAL,CAAuB,aAAc,CAAa,CAAC,MAAd,CAAqB,QAArB,EAArC;AACA,UAAM,eAAe,GAAG,IAAI,eAAJ,CAAoB,CAApB,EAAuB;AAAE,cAAM,EAAE;AAAV,OAAvB,CAAxB;AACA,qBAAe,CAAC,aAAhB,GAAgC,KAAK,aAArC;AACA,UAAM,SAAS,GAAG,eAAe,CAAC,KAAhB,EAAlB;AACA,WAAK,OAAL,CAAa,WAAb,CAAyB,SAAzB;AACH;;AACD,WAAO,KAAK,OAAZ;AACH,GAhD4C,CAkD7C;AACA;AACA;;;AAEA,iBAAe;AACX;AACA,QAAM,WAAW,GAAG,KAAK,GAAL,CAAS,aAAT,CAAuB,YAAvB,CAApB;AACA,eAAW,CAAC,YAAZ,CAAyB,IAAzB,EAA+B,KAAK,SAApC,EAHW,CAIX;AACA;AACA;;AACA,WAAO,WAAP;AACH;;AA9D4C;AAmEjD,IAAM,wBAAwB,GAAG,CAC7B,CAAC,MAAD,EAAS,WAAT,CAD6B,EAE7B;AACA;AACA;AACA,CAAC,OAAD,EAAU,YAAV,CAL6B,EAM7B,CAAC,MAAD,EAAS,WAAT,CAN6B,CAAjC;AAWA,IAAM,2BAA2B,GAAG,CAChC,CAAC,MAAD,EAAS,WAAT,CADgC,EAEhC,CAAC,cAAD,EAAiB,mBAAjB,CAFgC,EAGhC,CAAC,eAAD,EAAkB,oBAAlB,CAHgC,CAApC;AAMA,IAAM,qBAAqB,GAAG,CAAC,YAAD,EAAe,SAAf,CAA9B;AAEA,IAAM,mBAAmB,GAAG,KAAK,CAAL,GAAS,CAAT,GAAa,CAAb,GAAiB,CAA7C,C,CAAgD;;AAEhD;;AAEG;;AACG,MAAO,eAAP,SAA+B,eAA/B,CAA8C;AAehD,cAAY,UAAZ,EAAwB;AAAE,UAAM,GAAC;AAAT,MAAqB,EAA7C,EAA+C;AAC3C;AAbJ,4BAA2B,mBAA3B;AACA,iCAAwB,SAAxB;AACA,uBAAc,SAAd;AACA,8BAAqB,GAArB;AACA,2BAAkB,GAAlB;AACA,0BAAiB,SAAjB;AAEA,sBAAa,EAAb;AAOI,SAAK,MAAL,GAAc,UAAd;AACA,SAAK,MAAL,GAAc,MAAd;AACA,SAAK,OAAL,GAAe,KAAK,GAAL,CAAS,aAAT,CAAuB,SAAvB,CAAf;AACA,SAAK,aAAL,GAAqB,MAAM,CAAC,aAA5B;AAEA,SAAK,mBAAL,GAA2B,KAAK,aAAhC;AACH;;AAED,OAAK;AACD;AACA;AACA,SAAK,eAAL,GAHC,CAID;;AACA,SAAK,sCAAL,GALC,CAMD;AAEA;;AACA,SAAK,iBAAL,GATC,CAWD;;AACA,WAAO,KAAK,OAAZ;AACH;;AAED,mBAAiB;AACb,QAAM,CAAC,GAAG,KAAK,MAAf;;AACA,QAAI,CAAC,CAAC,CAAC,SAAF,EAAL,EAAoB;AAChB,WAAK,iBAAL,CAAuB,CAAvB,EAA0B;AAAE,wBAAgB,EAAE;AAApB,OAA1B;AACA;AACH,KALY,CAMb;;;AACA,QAAM,SAAS,GAAG,KAAK,CAAC,IAAN,CAAW,CAAC,CAAC,MAAb,CAAlB;;AACA,SAAK,IAAM,CAAC,CAAD,EAAI,CAAJ,CAAX,IAAqB,SAAS,CAAC,OAAV,EAArB,EAA0C;AACtC,UAAI,gBAAgB,GAAG,IAAvB;;AACA,UAAI,CAAC,KAAK,SAAS,CAAC,MAAV,GAAmB,CAA7B,EAAgC;AAC5B,wBAAgB,GAAG,KAAnB;AACH;;AACD,WAAK,iBAAL,CAAuB,CAAvB,EAA0B;AAAE;AAAF,OAA1B;AACH;AACJ;;AAED,mBAAiB,CAAC,CAAD,EAAI;AAAE,oBAAgB,GAAC;AAAnB,MAA2B,EAA/B,EAAiC;AAC9C,QAAM,IAAI,GAAG,KAAK,OAAlB;AACA,QAAM,SAAS,GAAG,KAAK,gBAAvB;AACA,SAAK,eAAL,GAAuB,GAAvB;AACA,QAAI,OAAJ;;AACA,QAAI,CAAC,CAAC,OAAF,CAAU,QAAV,CAAmB,OAAnB,CAAJ,EAAiC;AAC7B,aAAO,GAAG,CAAC,CAAC,EAAZ;;AACA,UAAI,OAAO,KAAK,SAAhB,EAA2B;AACvB,eAAO,GAAG,KAAK,WAAL,EAAV;AACH;AACJ;;AACD,SAAK,cAAL,GAAsB,OAAtB;;AAEA,SAAK,IAAM,EAAX,IAAiB,CAAjB,EAAoB;AAChB,WAAK,eAAL,CAAqB,EAArB;AACH;;AAED,QAAI,gBAAJ,EAAsB;AAClB,UAAM,cAAc,GAAG,IAAI,CAAC,KAAL,CAAW,SAAS,GAAG,KAAK,eAA5B,CAAvB;;AACA,UAAI,cAAc,GAAG,CAArB,EAAwB;AACpB,YAAM,QAAQ,GAAG,KAAK,GAAL,CAAS,aAAT,CAAuB,QAAvB,CAAjB;AACA,YAAM,UAAU,GAAG,KAAK,UAAL,CAAgB,QAAhB,EAA0B,UAA1B,CAAnB;AACA,kBAAU,CAAC,SAAX,GAAuB,cAAc,CAAC,QAAf,EAAvB;AACA,YAAI,CAAC,WAAL,CAAiB,QAAjB;AACH;AACJ;;AACD,SAAK,cAAL,GAAsB,SAAtB;AACH;;AAED,iBAAe,CAAC,GAAD,EAAI;AAAA;;AACf;AACA;AACA,QAAM,OAAO,GAAG,GAAG,CAAC,OAApB;;AACA,QAAI,OAAO,CAAC,QAAR,CAAiB,aAAjB,CAAJ,EAAqC;AACjC,WAAK,eAAL,IAAwB,GAAG,CAAC,QAAJ,CAAa,aAArC;AACH,KANc,CAOf;;;AAEA,QAAI,YAAY,GAAG,KAAnB;;AAEA,SAAK,IAAM,CAAC,SAAD,EAAY,QAAZ,CAAX,IAAoC,wBAApC,EAA8D;AAC1D,UAAI,OAAO,CAAC,QAAR,CAAiB,SAAjB,CAAJ,EAAiC;AAC7B,aAAK,QAAL,EAAe,GAAf;AACA,oBAAY,GAAG,IAAf;AACA;AACH;AACJ;;AAjBc,+BAmBH,UAnBG,EAmBQ,SAnBR;AAoBX,UAAI,OAAO,CAAC,QAAR,CAAiB,UAAjB,CAAJ,EAAiC;AAC7B,YAAM,IAAI,GAAG,CAAC,IAAI,KAAI,CAAC,SAAD,CAAJ,CAAe,CAAf,CAAlB;;AACA,aAAI,CAAC,sBAAL,CAA4B,GAA5B,EAAiC,IAAjC;;AACA,oBAAY,GAAG,IAAf;AACA;AACH;AAzBU;;AAmBf,SAAK,IAAM,CAAC,UAAD,EAAY,SAAZ,CAAX,IAAoC,2BAApC,EAAiE;AAAA,uBAArD,UAAqD,EAA1C,SAA0C;;AAAA,4BAKzD;AAEP,KA1Bc,CA4Bf;;;AACA,QAAI,CAAC,YAAD,IAAiB,CAAC,qBAAqB,CAAC,QAAtB,CAA+B,GAAG,CAAC,OAAJ,CAAY,CAAZ,CAA/B,CAAtB,EAAsE;AAClE,aAAO,CAAC,IAAR,CAAa,6BAA6B,GAAG,CAAC,OAAJ,CAAY,CAAZ,CAA1C;AACH,KA/Bc,CAiCf;;AACH,GAxH+C,CA0HhD;AACA;AACA;AACA;;AAEA;;;;;;AAMG;;;AACH,WAAS,CAAC,CAAD,EAAiB;AAAE,oBAAgB,GAAC,CAAnB;AAAsB,eAAW,GAAC;AAAlC,MAA8C,EAA/D,EAAiE;AACtE,QAAM,WAAW,GAAI,gBAAgB,KAAK,CAA1C;AACA,QAAI,QAAJ;;AACA,QAAI,WAAW,KAAK,SAApB,EAA+B;AAC3B,cAAQ,GAAG,CAAX;AACH,KAFD,MAEO;AACH,cAAQ,GAAG,WAAX;AACH;;AACD,QAAM,MAAM,GAAG,KAAK,GAAL,CAAS,aAAT,CAAuB,MAAvB,CAAf,CARsE,CAStE;AACA;;AACA,SAAK,QAAL,CAAc,MAAd,EAAsB,CAAtB,EAXsE,CAYtE;;AACA,QAAM,CAAC,GAAG,QAAQ,CAAC,QAAnB,CAbsE,CActE;AACA;AACA;AACA;AACA;;AACA,QAAI,WAAJ,EAAiB;AACb,WAAK,UAAL,CAAgB,MAAhB,EAAwB,OAAxB;AACH;;AACD,QAAI,CAAC,CAAC,MAAN,EAAc;AACV,UAAM,OAAO,GAAG,KAAK,UAAL,CAAwB,CAAE,CAAC,KAA3B,CAAhB;AACA,YAAM,CAAC,WAAP,CAAmB,OAAnB;AACH,KAHD,MAGO;AACH,WAAK,UAAL,CAAgB,MAAhB,EAAwB,MAAxB;AACH;;AACD,QAAI,CAAC,CAAC,OAAF,KAAc,IAAlB,EAAwB;AACpB,UAAM,UAAU,GAAG,KAAK,WAAL,CAAiB,CAAjB,CAAnB;AACA,YAAM,CAAC,WAAP,CAAmB,UAAnB;AACH;;AACD,QAAI,CAAC,CAAC,GAAF,KAAU,SAAd,EAAyB;AACrB,UAAM,SAAS,GAAG,KAAK,WAAL,CAAiB,CAAC,CAAC,GAAnB,CAAlB;;AACA,WAAK,IAAM,CAAX,IAAgB,SAAhB,EAA2B;AACvB,cAAM,CAAC,WAAP,CAAmB,CAAnB;AACH;AACJ,KArCqE,CAsCtE;;;AACA,SAAK,YAAL,CAAkB,MAAlB,EAA0B,CAA1B;;AACA,QAAI,KAAK,cAAL,KAAwB,SAA5B,EAAuC;AACnC,UAAM,OAAO,GAAG,KAAK,UAAL,CAAgB,MAAhB,EAAwB,OAAxB,CAAhB;AACA,UAAI,GAAJ;;AACA,UAAI,OAAO,GAAP,KAAe,QAAnB,EAA6B;AACzB,WAAG,GAAG,KAAK,cAAL,GAAsB,CAA5B;AACH,OAFD,MAEO;AACH;AACA,WAAG,GAAG,KAAK,cAAX;AACH;;AACD,aAAO,CAAC,SAAR,GAAoB,GAAG,CAAC,QAAJ,EAApB;AACH;;AAED,QAAM,MAAM,GAAG,KAAK,UAAL,CAAgB,MAAhB,EAAwB,MAAxB,CAAf;AACA,UAAM,CAAC,SAAP,GAAmB,kBAAkB,CAAC,CAAC,CAAC,IAAH,CAArC,CArDsE,CAsDtE;AACA;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,CAAC,CAAC,IAAtB,EAA4B,CAAC,EAA7B,EAAiC;AAC7B,WAAK,UAAL,CAAgB,MAAhB,EAAwB,KAAxB;AACH,KA1DqE,CA4DtE;;;AACA,QAAI,CAAC,YAAY,uCAAb,IACO,CAAC,CAAC,KAAF,CAAQ,UAAR,KAAuB,SAD9B,IAEO,CAAC,CAAC,KAAF,CAAQ,UAAR,CAAmB,aAAnB,KAAqC,KAFhD,EAEuD;AACnD,UAAM,YAAY,GAAG,KAAK,cAAL,CAAoB,CAAC,CAAC,KAAF,CAAQ,UAA5B,CAArB;AACA,YAAM,CAAC,WAAP,CAAmB,YAAnB;AACH;;AACD,QAAI,CAAC,CAAC,OAAF,CAAU,MAAV,GAAmB,CAAvB,EAA0B;AACtB;AACA,UAAM,kBAAkB,GAAG,KAAK,wBAAL,CAA8B,CAAC,CAAC,OAAF,CAAU,CAAV,CAA9B,CAA3B;AACA,YAAM,CAAC,WAAP,CAAmB,kBAAnB;AACH;;AAED,QAAI,aAAJ;;AACA,QAAI,CAAC,WAAD,IACO,CAAC,CAAC,SAAD,EAAY,aAAZ,EAA2B,QAA3B,CAAoC,QAAQ,CAAC,aAA7C,CADZ,EACyE;AACrE,mBAAa,GAAG,QAAQ,CAAC,aAAzB;AACH,KAHD,MAGO,IACH,QAAQ,KAAK,CAAb,IACO,CAAC,YAAY,uCADpB,IAEO,CAAC,CAAC,SAAD,EAAY,aAAZ,EAA2B,QAA3B,CAAoC,CAAC,CAAC,aAAtC,CAHL,EAG2D;AAC9D,mBAAa,GAAG,CAAC,CAAC,aAAlB;AACH;;AACD,QAAI,aAAa,KAAK,SAAtB,EAAiC;AAC7B,UAAM,MAAM,GAAG,KAAK,UAAL,CAAgB,MAAhB,EAAwB,MAAxB,CAAf;AACA,UAAI,MAAM,GAAG,aAAb;;AACA,UAAI,MAAM,KAAK,QAAf,EAAyB;AACrB,cAAM,GAAG,MAAT;AACH;;AACD,YAAM,CAAC,SAAP,GAAmB,MAAnB,CAN6B,CAO7B;AACH,KA3FqE,CA6FtE;AACA;AACA;AACA;AACA;AACA;;;AACA,QAAI,CAAC,WAAL,EAAkB;AACd,WAAK,IAAM,QAAX,IAAuB,QAAQ,CAAC,MAAhC,EAAwC;AACpC,YAAI,QAAQ,CAAC,IAAT,KAAkB,SAAtB,EAAiC;AAC7B;AACH;;AACD,YAAM,OAAO,GAAG,KAAK,UAAL,CAAgB,QAAhB,CAAhB;AACA,cAAM,CAAC,WAAP,CAAmB,OAAnB;AACH;AACJ;;AAED,SAAK,OAAL,CAAa,WAAb,CAAyB,MAAzB;AACA,WAAO,MAAP;AACH;;AAED,WAAS,CAAC,CAAD,EAAE;AACP,WAAO,KAAK,SAAL,CAAe,CAAf,CAAP,CADO,CAEP;AACA;AACH;;AAED,YAAU,CAAC,CAAD,EAAE;AACR,QAAM,UAAU,GAAG,EAAnB;;AACA,SAAK,IAAM,CAAC,CAAD,EAAI,CAAJ,CAAX,IAAqB,KAAK,CAAC,IAAN,CAAW,CAAX,EAAc,OAAd,EAArB,EAA8C;AAC1C,UAAM,MAAM,GAAG,KAAK,SAAL,CACJ,CADI,EAEX;AACI,wBAAgB,EAAE,CADtB;AAEI,mBAAW,EAAE;AAFjB,OAFW,CAAf;AAOA,gBAAU,CAAC,IAAX,CAAgB,MAAhB;AACH;;AACD,WAAO,UAAP;AACH;;AAED,aAAW,CAAC,GAAD,EAAI;AACX,QAAM,UAAU,GAAG,KAAK,GAAL,CAAS,aAAT,CAAuB,UAAvB,CAAnB;AACA,cAAU,CAAC,SAAX,GAAuB,IAAI,CAAC,KAAL,CAAW,KAAK,gBAAL,GAAwB,GAAG,CAAC,aAAvC,EAAsD,QAAtD,EAAvB;AACA,WAAO,UAAP;AACH;;AAED,YAAU,CAAC,CAAD,EAAE;AACR,QAAM,OAAO,GAAG,KAAK,GAAL,CAAS,aAAT,CAAuB,OAAvB,CAAhB;;AACA,SAAK,wBAAL,CAA8B,CAA9B,EAAiC,OAAjC,EAA0C,MAA1C;;AACA,QAAI,CAAC,CAAC,UAAF,KAAiB,SAArB,EAAgC;AAC5B,UAAM,OAAO,GAAG,KAAK,UAAL,CAAgB,OAAhB,EAAyB,OAAzB,CAAhB;AACA,aAAO,CAAC,SAAR,GAAoB,qDAAuB,CAAC,CAAC,UAAF,CAAa,KAApC,EAA2C,QAA3C,EAApB;AACH;;AACD,SAAK,wBAAL,CAA8B,CAA9B,EAAiC,OAAjC,EAA0C,QAA1C,EAAoD,gBAApD;;AACA,WAAO,OAAP;AACH,GA3R+C,CA4RhD;AACA;AACA;;;AAEA,0BAAwB,CAAC,GAAD,EAAI;AACxB,QAAM,kBAAkB,GAAG,KAAK,GAAL,CAAS,aAAT,CAAuB,mBAAvB,CAA3B;;AACA,SAAK,wBAAL,CAA8B,GAA9B,EAAmC,kBAAnC,EAAuD,cAAvD,EAAuE,mBAAvE;;AACA,SAAK,wBAAL,CAA8B,GAA9B,EAAmC,kBAAnC,EAAuD,cAAvD,EAAuE,mBAAvE;;AACA,QAAI,GAAG,CAAC,cAAJ,KAAuB,SAA3B,EAAsC;AAClC,UAAM,YAAY,GAAG,KAAK,UAAL,CAAgB,kBAAhB,EAAoC,aAApC,CAArB;AACA,kBAAY,CAAC,SAAb,GAAyB,kBAAkB,CAAC,GAAG,CAAC,cAAJ,CAAmB,IAApB,CAA3C;;AACA,UAAI,GAAG,CAAC,cAAJ,CAAmB,IAAnB,GAA0B,CAA9B,EAAiC;AAC7B,aAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,GAAG,CAAC,cAAJ,CAAmB,IAAvC,EAA6C,CAAC,EAA9C,EAAkD;AAC9C,eAAK,UAAL,CAAgB,kBAAhB,EAAoC,YAApC;AACH;AACJ;AACJ;;AACD,WAAO,kBAAP;AACH,GA9S+C,CAgThD;AACA;AACA;;;AAEA,aAAW,CAAC,CAAD,EAAE;AACT,QAAM,SAAS,GAAG,EAAlB;AACA,QAAI,eAAe,GAAG,CAAC,CAAC,IAAxB;;AACA,QAAI,CAAC,CAAC,IAAF,KAAW,UAAf,EAA2B;AACvB,qBAAe,GAAG,MAAlB;AACH;;AACD,QAAM,KAAK,GAAG,KAAK,GAAL,CAAS,aAAT,CAAuB,KAAvB,CAAd;AACA,SAAK,CAAC,YAAN,CAAmB,MAAnB,EAA2B,eAA3B;AACA,aAAS,CAAC,IAAV,CAAe,KAAf;;AAEA,QAAI,CAAC,CAAC,IAAF,KAAW,UAAf,EAA2B;AACvB,UAAM,MAAK,GAAG,KAAK,GAAL,CAAS,aAAT,CAAuB,KAAvB,CAAd;;AACA,YAAK,CAAC,YAAN,CAAmB,MAAnB,EAA2B,OAA3B;;AACA,eAAS,CAAC,IAAV,CAAe,MAAf;AACH;;AACD,WAAO,SAAP;AACH,GApU+C,CAsUhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA,wBAAsB,CAAC,YAAD,EAAe,UAAf,EAAyB;AAC3C,QAAI,KAAK,eAAL,KAAyB,GAA7B,EAAkC;AAC9B,aAAO,SAAP;AACH;;AAED,QAAM,YAAY,GAAG,KAAK,GAAL,CAAS,aAAT,CAAuB,YAAvB,CAArB;AACA,QAAM,KAAK,GAAG,UAAU,CAAC,YAAD,CAAxB;AACA,gBAAY,CAAC,WAAb,CAAyB,KAAzB;AACA,SAAK,OAAL,CAAa,WAAb,CAAyB,YAAzB;AACA,WAAO,YAAP;AACH;;AAED,YAAU,CAAC,CAAD,EAAE;AACR,QAAM,OAAO,GAAG,KAAK,GAAL,CAAS,aAAT,CAAuB,OAAvB,CAAhB;;AACA,SAAK,wBAAL,CAA8B,CAA9B,EAAiC,OAAjC,EAA0C,UAA1C;;AACA,SAAK,wBAAL,CAA8B,CAA9B,EAAiC,OAAjC,EAA0C,MAA1C,EAAkD,MAAlD,EAA0D;AAAE,gBAAU,EAAE;AAAd,KAA1D;;AACA,QAAI,CAAC,CAAC,UAAF,KAAiB,SAArB,EAAgC;AAC5B,aAAO,CAAC,YAAR,CAAqB,MAArB,EAA6B,CAAC,CAAC,UAAF,CAAa,QAAb,EAA7B;AACH;;AAED,QAAI,CAAC,CAAC,MAAF,KAAa,SAAjB,EAA4B;AACxB,aAAO,CAAC,YAAR,CAAqB,QAArB,EAA+B,CAAC,CAAC,MAAF,CAAS,QAAT,EAA/B;AACH,KAFD,MAEO,IAAI,CAAC,CAAC,UAAF,KAAiB,SAArB,EAAgC;AACnC,aAAO,CAAC,YAAR,CAAqB,QAArB,EAA+B,CAAC,CAAC,UAAF,CAAa,QAAb,EAA/B;AACH,KAZO,CAaR;AACA;AACA;AACA;;;AACA,WAAO,OAAP;AACH,GAtX+C,CAuXhD;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA,wCAAsC;AAClC,QAAM,CAAC,GAAG,KAAK,MAAf;AACA,QAAM,YAAY,GAAG,KAAK,GAAL,CAAS,aAAT,CAAuB,YAAvB,CAArB;AACA,QAAI,YAAY,GAAG,KAAnB;AACA,SAAK,gBAAL,GAAwB,mBAAxB;;AACA,QAAI,KAAK,MAAL,KAAgB,SAAhB,IAA6B,KAAK,gBAAL,KAA0B,KAAK,MAAL,CAAY,aAAvE,EAAsF;AAClF,UAAM,WAAW,GAAG,KAAK,UAAL,CAAgB,YAAhB,EAA8B,WAA9B,CAApB;AACA,iBAAW,CAAC,SAAZ,GAAwB,KAAK,gBAAL,CAAsB,QAAtB,EAAxB;AACA,WAAK,MAAL,CAAY,aAAZ,GAA4B,KAAK,gBAAjC;AACA,kBAAY,GAAG,IAAf;AACH;;AACD,QAAI,CAAC,CAAC,OAAF,CAAU,QAAV,CAAmB,SAAnB,CAAJ,EAAmC;AAC/B,UAAI,CAAC,CAAC,aAAF,KAAoB,SAAxB,EAAmC;AAC/B,oBAAY,CAAC,WAAb,CAAyB,KAAK,iBAAL,CAAuB,CAAC,CAAC,aAAzB,CAAzB;AACA,oBAAY,GAAG,IAAf;AACH;;AACD,UAAI,CAAC,CAAC,cAAF,KAAqB,SAAzB,EAAoC;AAChC,oBAAY,CAAC,WAAb,CAAyB,KAAK,kBAAL,CAAwB,CAAC,CAAC,cAA1B,CAAzB;AACA,oBAAY,GAAG,IAAf;AACH,OAR8B,CAS/B;;;AACA,UAAI,CAAC,CAAC,KAAF,KAAY,SAAhB,EAA2B;AACvB,oBAAY,CAAC,WAAb,CAAyB,KAAK,SAAL,CAAe,CAAC,CAAC,KAAjB,CAAzB;AACA,oBAAY,GAAG,IAAf;AACH;AACJ,KAzBiC,CA2BlC;AACA;AACA;;;AACA,QAAI,YAAJ,EAAkB;AACd,WAAK,OAAL,CAAa,WAAb,CAAyB,YAAzB;AACH;;AACD,WAAO,YAAP;AACH,GAja+C,CAkahD;AACA;;;AAEA,oBAAkB,CAAC,EAAD,EAAG;AACjB,QAAM,MAAM,GAAG,KAAK,GAAL,CAAS,aAAT,CAAuB,MAAvB,CAAf,CADiB,CAEjB;AACA;AACA;;AACA,QAAM,OAAO,GAAG,KAAK,UAAL,CAAgB,MAAhB,EAAwB,OAAxB,CAAhB;AACA,WAAO,CAAC,SAAR,GAAoB,EAAE,CAAC,SAAH,CAAa,QAAb,EAApB;AACA,QAAM,UAAU,GAAG,KAAK,UAAL,CAAgB,MAAhB,EAAwB,WAAxB,CAAnB;AACA,cAAU,CAAC,SAAX,GAAuB,EAAE,CAAC,WAAH,CAAe,QAAf,EAAvB,CARiB,CASjB;AACA;AACA;;AACA,WAAO,MAAP;AACH;;AAED,mBAAiB,CAAC,iBAAD,EAAkB;AAC/B,QAAM,KAAK,GAAG,KAAK,GAAL,CAAS,aAAT,CAAuB,KAAvB,CAAd,CAD+B,CAE/B;AACA;AACA;;AACA,SAAK,IAAL,CAAU,iBAAV,EAA6B,KAA7B,EAAoC,QAApC,EAA8C,QAA9C;;AACA,QAAI,iBAAiB,CAAC,IAAlB,KAA2B,SAA/B,EAA0C;AACtC,WAAK,IAAL,CAAU,iBAAV,EAA6B,KAA7B,EAAoC,MAApC;AACH,KAR8B,CAS/B;AACA;;;AACA,WAAO,KAAP;AACH;;AAED,WAAS,CAAC,OAAD,EAAQ;AACb,QAAM,MAAM,GAAG,KAAK,GAAL,CAAS,aAAT,CAAuB,MAAvB,CAAf,CADa,CAEb;;AACA,QAAM,IAAI,GAAG,OAAO,CAAC,IAAR,IAAgB,GAA7B;AACA,QAAM,MAAM,GAAG,KAAK,UAAL,CAAgB,MAAhB,EAAwB,MAAxB,CAAf;AACA,UAAM,CAAC,SAAP,GAAmB,IAAnB;AACA,SAAK,IAAL,CAAU,OAAV,EAAmB,MAAnB,EAA2B,MAA3B;;AACA,QAAI,OAAO,CAAC,YAAR,KAAyB,SAAzB,IAAsC,OAAO,CAAC,YAAR,KAAyB,CAAnE,EAAsE;AAClE,WAAK,IAAL,CAAU,OAAV,EAAmB,MAAnB,EAA2B,oBAA3B,EAAiD,cAAjD;AACH;;AACD,WAAO,MAAP;AACH,GA7c+C,CA+chD;AACA;AACA;;;AACA,iBAAe;AACX,QAAM,CAAC,GAAG,KAAK,MAAf;AACA,SAAK,OAAL,CAAa,YAAb,CAA0B,QAA1B,EAAoC,CAAC,CAAC,uBAAF,EAApC,EAFW,CAGX;AACH;;AAtd+C,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1kBpD;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA,IAAM,QAAQ,GAAG;AACb,qBAAmB,EAAE,KAAK,CAAL,GAAS,CAAT,GAAa,CAAb,GAAiB;AADzB,CAAjB;;AAIA,SAAS,IAAT,CACI,KADJ,EAEI,KAFJ,EAGI,GAHJ,EAII,aAAa,GAAC,SAJlB,EAKI,SAAS,GAAC,SALd,EAKuB;AAEnB,MAAM,QAAQ,GAAG,mCAAC,CAAC,KAAD,CAAD,CAAS,QAAT,CAAkB,GAAlB,CAAjB;;AACA,MAAI,CAAC,QAAL,EAAe;AACX;AACH;;AACD,MAAI,KAAK,GAAG,QAAQ,CACf,QADO,GAEP,EAFO,CAEJ,CAFI,EAGP,IAHO,EAAZ;;AAIA,MAAI,KAAK,KAAK,SAAV,IAAuB,KAAK,KAAK,EAArC,EAAyC;AACrC;AACH;;AACD,MAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,SAAK,GAAG,SAAS,CAAC,KAAD,CAAjB;AACH;;AACD,MAAI,aAAa,KAAK,SAAtB,EAAiC;AAC7B,iBAAa,GAAG,0DAAiB,CAAC,GAAD,CAAjC;AACH;;AACD,OAAK,CAAC,aAAD,CAAL,GAAuB,KAAvB;AACH;;AAEK,MAAO,WAAP,CAAkB;AAepB;AAVA,uCAAuC,KAAvC;AACA,qCAAqC,KAArC;AAEA,2BAAkB,EAAlB;AACA,8BAAqB,EAArB;AACA,yBAAgB,EAAhB;AACA,iBAAQ,EAAR;AAEA,2BAA0B,KAA1B;AAGI,SAAK,MAAL,GAAc,IAAI,2CAAJ,EAAd;AACH;;AAED,cAAY,CAAC,GAAD,EAAI;AACZ,SAAK,MAAL,GAAc,GAAd,CADY,CAEZ;;AACA,WAAO,wCAAM,GAAN,EAAW,EAAX,EAAe,CAAC,MAAD,EAAS,UAAT,KAAwB,KAAK,gBAAL,CAAsB,MAAtB,CAAvC,CAAP;AACH;;AAED,eAAa,CAAC,OAAD,EAAQ;AACjB,SAAK,OAAL,GAAe,OAAf,CADiB,CAEjB;AACA;;AACA,QAAM,MAAM,GAAG,6CAAW,OAAX,CAAf;AACA,WAAO,KAAK,gBAAL,CAAsB,MAAtB,CAAP;AACH;;AAED,kBAAgB,CAAC,MAAD,EAAO;AACnB,SAAK,QAAL,GAAgB,mCAAC,CAAC,mCAAC,CAAC,MAAD,CAAD,CAAU,QAAV,CAAmB,gBAAnB,CAAD,CAAjB;AACA,SAAK,cAAL,CAAoB,KAAK,QAAzB,EAAmC,KAAK,MAAxC;AACA,WAAO,KAAK,MAAZ;AACH;;AAED,gBAAc,CAAC,QAAD,EAAW,QAAX,EAAmB;AAC7B,QAAI,CAAC,GAAG,QAAR;;AACA,QAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,OAAC,GAAG,IAAI,2CAAJ,EAAJ;AACH,KAJ4B,CAK7B;AACA;AACA;;;AACA,SAAK,aAAL,CAAmB,QAAnB;;AACA,SAAK,IAAM,CAAX,IAAgB,QAAQ,CAAC,QAAT,CAAkB,MAAlB,CAAhB,EAA2C;AACvC,UAAM,EAAE,GAAG,mCAAC,CAAC,CAAD,CAAZ;AACA,UAAM,MAAM,GAAG,EAAE,CAAC,IAAH,CAAQ,IAAR,CAAf,CAFuC,CAGvC;AACA;AACA;;AACA,UAAM,YAAY,GAAG,KAAK,eAAL,CAAqB,MAArB,CAArB;AACA,UAAM,IAAI,GAAG,KAAK,aAAL,CAAmB,EAAnB,EAAuB,YAAvB,CAAb;;AACA,UAAI,IAAI,KAAK,SAAb,EAAwB;AACpB;AACA,SAAC,CAAC,MAAF,CAAS,GAAT,EAAc,IAAd;AACA,aAAK,kBAAL,CAAwB,MAAxB,IAAkC,IAAlC;AACA,aAAK,KAAL,CAAW,IAAX,CAAgB,IAAhB;AACH;AACJ,KAvB4B,CAwB7B;AACA;AACA;AACA;;;AACA,WAAO,CAAP;AACH;;AAED,eAAa,CAAC,OAAD,EAAU,YAAV,EAAsB;AAC/B,QAAM,MAAM,GAAG,IAAI,UAAJ,CAAe,OAAf,EAAwB,YAAxB,EAAsC,IAAtC,CAAf;AACA,UAAM,CAAC,KAAP,GAF+B,CAG/B;;AACA,WAAO,MAAM,CAAC,MAAd;AACH;;AAED,eAAa,CAAC,QAAD,EAAS;AAClB,QAAM,UAAU,GAAG,QAAQ,CAAC,QAAT,CAAkB,WAAlB,CAAnB;;AACA,QAAI,CAAC,UAAL,EAAiB;AACb;AACH,KAJiB,CAKlB;;;AACA,SAAK,IAAM,eAAX,IAA8B,UAA9B,EAA0C;AACtC,UAAM,gBAAgB,GAAG,mCAAC,CAAC,eAAD,CAA1B;AACA,UAAM,MAAM,GAAG,gBAAgB,CAAC,IAAjB,CAAsB,IAAtB,CAAf;AACA,WAAK,eAAL,CAAqB,MAArB,IAA+B,gBAA/B;AACH,KAViB,CAWlB;;AACH;;AAzFmB;AA4FxB;;;;AAIG;;AACG,MAAO,UAAP,CAAiB;AA6BnB,cAAY,OAAZ,EAAqB,YAArB,EAAmC,MAAM,GAAC,SAA1C,EAAmD;AAvBnD,2BAAkB,IAAlB;AACA,8BAAqB,EAArB;AAEA,6BAAoB,SAApB;AACA,+BAAsB,KAAtB;AACA,6BAAoB,GAApB;AAEA,yBAAgB,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,CAAhB;AACA,qBAAY,CAAZ;AACA,6BAAoB,CAApB;AACA,4BAAmB,SAAnB;AAEA,sCAA6B,CAA7B;AACA,yCAAgC,SAAhC;AAEA,4BAAmB,SAAnB;AACA,8BAAqB,KAArB;AACA,6BAAoB,SAApB;AACA,yBAAgB,QAAQ,CAAC,mBAAzB;AAEA,mCAA0B,IAA1B;AACA,6BAAoB,SAApB;AAGI,SAAK,MAAL,GAAc,MAAd;AACA,SAAK,OAAL,GAAe,OAAf;AACA,SAAK,YAAL,GAAoB,YAApB,CAH+C,CAI/C;;AACA,QAAI,OAAO,KAAK,SAAhB,EAA2B;AACvB,WAAK,MAAL,GAAc,OAAO,CAAC,IAAR,CAAa,IAAb,CAAd,CADuB,CAEvB;AACH,KAR8C,CAS/C;;;AACA,SAAK,MAAL,GAAc,IAAI,0CAAJ,EAAd;AACA,SAAK,SAAL,GAAiB;AACb,SAAG,IAAI,6CAAJ;AADU,KAAjB;AAGH;;AAED,OAAK;AACD,SAAK,iBAAL;AACA,SAAK,aAAL,GAFC,CAGD;AACA;AACA;;AACA,SAAK,MAAL,CAAY,IAAZ,GAAmB,KAAK,SAAL,CAAe,CAAf,CAAnB;AACH;;AAED,mBAAiB;AACb,QAAM,IAAI,GAAG,KAAK,MAAlB;AACA,QAAM,YAAY,GAAG,KAAK,YAA1B;AAEA,QAAI,CAAC,IAAD,EAAO,YAAP,EAAqB,WAArB,CAAJ,CAJa,CAI0B;AACvC;AACA;AACH;;AAED,eAAa;AACT,SAAK,IAAM,SAAX,IAAwB,KAAK,OAAL,CAAa,QAAb,CAAsB,SAAtB,CAAxB,EAA0D;AACtD,UAAM,UAAU,GAAG,mCAAC,CAAC,SAAD,CAApB;AACA,WAAK,mBAAL,CAAyB,UAAzB;AACH;;AACD,QAAI,KAAK,iBAAL,KAA2B,SAA/B,EAA0C;AACtC,WAAK,iBAAL,CAAuB,MAAvB,GAAgC,SAAhC,CADsC,CACK;AAC9C;AACJ;;AAED,qBAAmB,CAAC,UAAD,EAAW;AAC1B,QAAM,aAAa,GAAG,IAAI,aAAJ,CAAkB,UAAlB,EAA8B,IAA9B,CAAtB;AACA,iBAAa,CAAC,KAAd;;AACA,QAAI,KAAK,iBAAL,KAA2B,SAA/B,EAA0C;AACtC,WAAK,iBAAL,CAAuB,MAAvB,GAAgC,SAAhC,CADsC,CACK;AAC9C;;AACD,SAAK,iBAAL,GAAyB,aAAzB,CAN0B,CAO1B;AACA;;AACA,SAAK,kBAAL,GAA0B,IAA1B,CAT0B,CAU1B;;AAEA,QAAM,CAAC,GAAG,aAAa,CAAC,MAAxB;AACA,SAAK,kBAAL,CAAwB,CAAxB,EAb0B,CAc1B;AAEA;AACA;;AACA,SAAK,MAAL,CAAY,MAAZ,CAAwC,CAAxC;AAEA,SAAK,+BAAL,CAAqC,CAArC;AACH;;AAED,oBAAkB,CAAC,CAAD,EAAE;AAChB,QAAI,CAAC,CAAC,MAAF,KAAa,KAAK,iBAAtB,EAAyC;AACrC,WAAK,iBAAL,GAAyB,CAAC,CAAC,MAA3B;AACA,WAAK,gBAAL,GAAwB,CAAC,CAAC,YAA1B;AACH;;AAED,QAAI,CAAC,CAAC,aAAF,KAAoB,SAAxB,EAAmC;AAC/B,WAAK,iBAAL,GAAyB,CAAC,CAAC,aAA3B;AACH,KAFD,MAEO,IAAI,KAAK,iBAAL,KAA2B,SAA/B,EAA0C;AAC7C,WAAK,iBAAL,GAAyB,IAAI,iDAAJ,CAAwB,KAAxB,CAAzB;AACH;AACJ;;AAED,iCAA+B,CAAC,CAAD,EAAE;AAC7B,QAAM,YAAY,GAAG,CAAC,CAAC,WAAvB,CAD6B,CAE7B;;AACA,QAAM,YAAY,GAAG,YAArB;AACA,SAAK,iBAAL,IAA0B,YAA1B;AACH;;AAlHkB;AAqHjB,MAAO,aAAP,CAAoB;AAgEtB;;;;;;AAMG;AACH,cAAY,UAAZ,EAAwB,SAAqB,SAA7C,EAAsD;AApEtD,8BAAqB,EAArB;AAGA,qBAAY,SAAZ;AACA,yBAAgB,SAAhB,CAgEsD,CA/DtD;;AACA,0BAAiB,EAAjB,CA8DsD,CA7DtD;;AACA,qBAAY,KAAZ;AACA,sBAAa,EAAb;AAEA,kBAAS,CAAT;AACA,6BAAoB,SAApB;AACA,iCAAwB,IAAxB;AACA,yBAAwB,SAAxB;AACA,wBAAuB,SAAvB;AACA,8BAAqB,EAArB;AAEA,uBAAc,EAAd;AACA,wBAAe,EAAf;AACA,iBAAQ,SAAR;AACA,sBAAa,SAAb;AACA,2BAAkB,KAAlB;AACA,4BAAmB;AACf,UAAI,EAAE,CADS;AAEf,UAAI,EAAE;AAFS,KAAnB;AAKA,qBAAY;AACR,SAAG;AADK,KAAZ;AAIA,sBAAa,CAAb;AACA,6BAAoB,GAApB,CAmCsD,CAjCtD;;AACA,kCAAyB;AACrB,UAAI,EAAE,qBADe;AAErB,UAAI,EAAE,YAFe;AAGrB,SAAG,EAAE;AAHgB,KAAzB;AAQA,4BAAmB;AACf,UAAI,EAAE,WADS;AAEf;AACA;AACA;AACA,gBAAU,EAAE;AALG,KAAnB;AAyBI,SAAK,UAAL,GAAkB,UAAlB;AACA,SAAK,MAAL,GAAc,MAAd;AACA,SAAK,MAAL,GAAc,IAAI,6CAAJ,EAAd;AAEA,SAAK,YAAL,GAAoB,IAAI,GAAJ,EAApB;AACA,SAAK,MAAL,GAAc,CAAd;AACA,SAAK,iBAAL,GAAyB,SAAzB;AACA,SAAK,qBAAL,GAA6B,IAA7B;;AAEA,QAAI,MAAM,KAAK,SAAf,EAA0B;AACtB,WAAK,SAAL,GAAiB,MAAM,CAAC,aAAxB;AACH,KAFD,MAEO;AACH,WAAK,SAAL,GAAiB,QAAQ,CAAC,mBAA1B;AACH;AAEJ;;AAED,OAAK;AACD;AACA,SAAK,sBAAL,GAFC,CAGD;;AAEA,QAAM,QAAQ,GAAG,KAAK,UAAL,CAAgB,QAAhB,EAAjB;AACA,SAAK,kBAAL,GAA0B,EAA1B;;AACA,SAAK,IAAM,CAAX,IAAgB,QAAhB,EAA0B;AACtB,UAAM,EAAE,GAAG,mCAAC,CAAC,CAAD,CAAZ;AACA,WAAK,kBAAL,CAAwB,IAAxB,CAA6B,EAA7B;AACH;;AAED,QAAI,CAAC,GAAG,CAAR;;AACA,SAAK,IAAM,MAAX,IAAqB,KAAK,kBAA1B,EAA8C;AAC1C,UAAM,GAAG,GAAG,MAAM,CAAC,CAAD,CAAN,CAAU,OAAtB;AACA,WAAK,UAAL,GAAkB,CAAlB;AACA,UAAM,QAAQ,GAAG,KAAK,gBAAL,CAAsB,GAAtB,CAAjB;;AACA,UAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,aAAK,QAAL,EAAe,MAAf;AACH;;AACD,OAAC,IAAI,CAAL;AACH,KArBA,CAsBD;AACA;;AACH;;AAED,wBAAsB,CAAC,MAAD,EAAS,EAAT,EAAW;AAC7B;AACA;AACA,SAAK,MAAL,CAAY,MAAZ,CAAmB,EAAnB;AACH;;AAED,WAAS,CAAC,OAAD,EAAQ;AACb,QAAI,eAAe,GAAG,KAAtB;AACA,QAAM,UAAU,GAAG,KAAK,kBAAL,CAAwB,KAAK,UAAL,GAAkB,CAA1C,CAAnB;;AACA,QAAI,UAAU,KAAK,SAAnB,EAA8B;AAC1B,UACI,UAAU,CAAC,CAAD,CAAV,CAAc,OAAd,KAA0B,MAA1B,IACG,UAAU,CAAC,QAAX,CAAoB,OAApB,EAA6B,MAA7B,GAAsC,CAF7C,EAGE;AACE,uBAAe,GAAG,IAAlB;AACH;AACJ;;AACD,QAAI,OAAO,GAAG,KAAd;AACA,QAAI,MAAM,GAAG,KAAb;AAEA,QAAI,eAAe,GAAG,GAAtB;;AACA,QAAI,OAAO,CAAC,QAAR,CAAiB,MAAjB,EAAyB,MAAzB,GAAkC,CAAtC,EAAyC;AACrC,YAAM,GAAG,IAAT;AACH;;AACD,QAAI,OAAO,CAAC,QAAR,CAAiB,OAAjB,EAA0B,MAA1B,GAAmC,CAAvC,EAA0C;AACtC,aAAO,GAAG,IAAV;AACH;;AACD,QAAI,eAAJ,EAAqB;AACjB,aAAO,GAAG,IAAV;AACH;;AAED,QAAI,CAAJ;;AAEA,QAAI,OAAJ,EAAa;AACT,WAAK,WAAL,CAAiB,IAAjB,CAAsB,OAAtB;AACA,WAAK,YAAL,CAAkB,IAAlB,CAAuB,GAAG,OAAO,CAAC,QAAR,CAAiB,OAAjB,CAA1B;AACH,KAHD,MAGO,IAAI,CAAC,OAAD,IAAY,CAAC,MAAjB,EAAyB;AAC5B;AACA,WAAK,gBAAL,CAAsB,IAAtB,IAA8B,CAA9B;AACA,OAAC,GAAG,KAAK,eAAL,CAAqB,OAArB,CAAJ;AACH,KAJM,MAIA;AACH,WAAK,gBAAL,CAAsB,IAAtB,IAA8B,CAA9B;AACA,OAAC,GAAG,KAAK,SAAL,CAAe,OAAf,CAAJ;AACH;;AAED,QAAI,CAAC,OAAL,EAAc;AACV,WAAK,oBAAL,CAA0B,CAA1B,EAA6B,OAAO,CAAC,QAAR,CAAiB,OAAjB,CAA7B,EADU,CAEV;;AACA,WAAK,sBAAL,CAA4B,OAA5B,EAAqC,CAArC;AACA,qBAAe,GAAG,CAAC,CAAC,QAAF,CAAW,aAA7B;AACA,WAAK,KAAL,GAAa,CAAb;AACH;;AAED,QAAI,KAAK,WAAL,CAAiB,MAAjB,IAA2B,CAAC,eAAhC,EAAiD;AAC7C,UAAM,CAAC,GAAG,KAAK,UAAL,CAAgB,KAAK,WAArB,CAAV;AACA,WAAK,oBAAL,CAA0B,CAA1B,EAA6B,KAAK,YAAlC,EAF6C,CAG7C;AAEA;;AACA,WAAK,sBAAL,CAA4B,OAA5B,EAAqC,CAArC;AAEA,WAAK,WAAL,GAAmB,EAAnB;AACA,WAAK,YAAL,GAAoB,EAApB;AACA,qBAAe,GAAG,CAAC,CAAC,QAAF,CAAW,aAA7B;AACA,WAAK,KAAL,GAAa,CAAb;AACH;;AAED,SAAK,iBAAL,IAA0B,eAA1B;AACH;;AAED,YAAU,CAAC,WAAD,EAAY;AAClB,QAAM,KAAK,GAAG,EAAd;;AACA,SAAK,IAAM,OAAX,IAAsB,WAAtB,EAAmC;AAC/B,UAAM,YAAY,GAAG,KAArB;AACA,WAAK,CAAC,IAAN,CAAW,KAAK,eAAL,CAAqB,OAArB,EAA8B,YAA9B,CAAX;AACH;;AACD,QAAM,CAAC,GAAG,IAAI,yCAAJ,CAAgB,KAAhB,CAAV,CANkB,CAOlB;AACA;AACA;AACA;;AAEA,WAAO,CAAP;AACH;;AAED,iBAAe,CAAC,OAAD,EAAU,YAAY,GAAC,IAAvB,EAA2B;AACtC,QAAM,CAAC,GAAG,IAAI,wCAAJ,EAAV;AACA,SAAK,UAAL,CAAgB,OAAhB,EAAyB,CAAC,CAAC,KAA3B,EAFsC,CAGtC;AACA;AACA;;AACA,WAAO,KAAK,0BAAL,CAAgC,CAAhC,EAAmC,OAAnC,EAA4C,YAA5C,CAAP;AACH,GA/MqB,CAiNtB;AACA;AACA;;;AAEA,YAAU,CAAC,OAAD,EAAU,QAAV,EAAkB;AACxB,QAAI,CAAC,GAAG,QAAR;;AACA,QAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,OAAC,GAAG,IAAI,0CAAJ,EAAJ;AACH;;AAED,QAAI,QAAJ;;AACA,QAAI,OAAO,CAAC,CAAD,CAAP,CAAW,OAAX,KAAuB,OAA3B,EAAoC;AAChC,cAAQ,GAAG,OAAX;AACH,KAFD,MAEO;AACH,cAAQ,GAAG,mCAAC,CAAC,OAAO,CAAC,QAAR,CAAiB,OAAjB,EAA0B,CAA1B,CAAD,CAAZ;;AACA,UAAI,QAAQ,CAAC,MAAT,KAAoB,CAAxB,EAA2B;AACvB;AACA,eAAO,CAAP;AACH;AACJ;;AAED,QAAI,CAAC,CAAD,EAAI,QAAJ,EAAc,MAAd,CAAJ;AACA,QAAI,CAAC,CAAD,EAAI,QAAJ,EAAc,QAAd,EAAwB,SAAxB,EAAmC,QAAnC,CAAJ;AACA,QAAM,QAAQ,GAAG,QAAQ,CAAC,QAAT,CAAkB,OAAlB,CAAjB;AACA,QAAI,QAAJ;;AACA,QAAI,QAAQ,CAAC,MAAb,EAAqB;AACjB,cAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAT,GAAgB,IAAhB,EAAD,CAArB;AACH;;AAED,QAAM,aAAa,GAAG,OAAO,CAAC,QAAR,CAAiB,YAAjB,CAAtB,CAzBwB,CA0BxB;;AACA,QAAI,aAAa,CAAC,MAAlB,EAA0B;AACtB,UAAM,MAAM,GAAG,KAAK,eAAL,CAAqB,aAArB,CAAf;AACA,OAAC,CAAC,UAAF,GAAe,MAAf;AACA,OAAC,CAAC,UAAF,CAAa,aAAb,GAA6B,IAA7B,CAHsB,CAItB;AACH,KALD,MAKO,IAAI,QAAQ,KAAK,SAAb,IAA0B,CAAC,MAAM,CAAC,KAAP,CAAa,MAAM,CAAC,QAAD,CAAnB,CAA/B,EAA+D;AAClE,OAAC,CAAC,UAAF,GAAe,IAAI,+CAAJ,CAAqB,QAArB,CAAf;AACA,OAAC,CAAC,UAAF,CAAa,aAAb,GAA6B,KAA7B;AACH;;AACD,WAAO,CAAP;AACH;;AAED,iBAAe,CAAC,aAAD,EAAc;AACzB,QAAM,GAAG,GAAG,IAAI,+CAAJ,CAAqB,CAArB,CAAZ,CADyB,CAEzB;;AACA,QAAI,IAAI,GAAG,mCAAC,CAAC,aAAa,CAAC,CAAD,CAAd,CAAD,CACN,IADM,GAEN,IAFM,GAGN,WAHM,EAAX;;AAIA,QAAI,IAAI,KAAK,WAAb,EAA0B;AACtB,UAAI,GAAG,aAAP;AACH;;AAED,OAAG,CAAC,GAAJ,CAAQ,IAAR,EAXyB,CAazB;AACA;AACA;AACA;;AACA,WAAO,GAAP;AACH;;AAED,WAAS,CAAC,OAAD,EAAQ;AACb,QAAM,CAAC,GAAG,IAAI,wCAAJ,EAAV,CADa,CAEb;AACA;AACA;;AACA,WAAO,KAAK,0BAAL,CAAgC,CAAhC,EAAmC,OAAnC,CAAP;AACH,GAtRqB,CAwRtB;;;AACA,4BAA0B,CAAC,CAAD,EAAI,OAAJ,EAAa,YAAY,GAAC,IAA1B,EAA8B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,SAAK,aAAL,CAAmB,OAAnB,EAA4B,CAAC,CAAC,QAA9B,EAPoD,CAQpD;AACA;AACA;;AACA,QAAI,OAAO,CAAC,QAAR,CAAiB,KAAjB,EAAwB,MAAxB,GAAiC,CAArC,EAAwC;AACpC,OAAC,CAAC,GAAF,GAAQ,KAAK,QAAL,CAAc,OAAd,CAAR;AACH,KAbmD,CAcpD;AACA;AACA;;;AACA,WAAO,CAAP;AACH;;AAED,eAAa,CAAC,OAAD,EAAU,QAAV,EAAkB;AAC3B,QAAI,CAAC,GAAG,QAAR;;AACA,QAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,OAAC,GAAG,IAAI,+CAAJ,EAAJ;AACH;;AACD,QAAM,SAAS,GAAG,KAAK,SAAvB;AACA,QAAM,UAAU,GAAG,OAAO,CAAC,QAAR,CAAiB,UAAjB,EAA6B,CAA7B,CAAnB;AACA,QAAI,IAAI,GAAG,GAAX;;AAEA,QAAI,UAAJ,EAAgB;AACZ,UAAM,aAAa,GAAG,UAAU,CAC5B,mCAAC,CAAC,UAAD,CAAD,CACK,IADL,GAEK,IAFL,EAD4B,CAAhC;AAKA,UAAI,GAAG,aAAa,GAAG,SAAvB;AACH;;AAED,QAAM,MAAM,GAAG,OAAO,CAAC,QAAR,CAAiB,MAAjB,EAAyB,CAAzB,CAAf;;AACA,QAAI,MAAJ,EAAY;AACR;AACA,UAAM,YAAY,GAAG,mCAAC,CAAC,MAAD,CAAD,CAChB,IADgB,GAEhB,IAFgB,EAArB;AAGA,UAAM,OAAO,GAAG,OAAO,CAAC,QAAR,CAAiB,KAAjB,EAAwB,MAAxC,CALQ,CAMR;;AACA,OAAC,CAAC,IAAF,GAAS,YAAT;AACA,OAAC,CAAC,IAAF,GAAS,OAAT;AACH,KATD,MASO;AACH,OAAC,CAAC,aAAF,GAAkB,IAAlB;AACH;;AAED,WAAO,CAAP;AACH,GA9UqB,CAgVtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIG;;;AACH,UAAQ,CAAC,OAAD,EAAQ;AACZ,QAAM,CAAC,GAAG,IAAI,sCAAJ,EAAV;AACA,QAAM,OAAO,GAAG,OAAO,CAAC,QAAR,CAAiB,KAAjB,CAAhB;;AACA,QAAI,OAAO,CAAC,MAAR,GAAiB,CAArB,EAAwB;AACpB,OAAC,CAAC,IAAF,GAAS,UAAT;AACH,KAFD,MAEO;AACH,UAAM,GAAG,GAAG,mCAAC,CAAC,OAAO,CAAC,CAAD,CAAR,CAAb;AACA,OAAC,CAAC,IAAF,GAAS,GAAG,CAAC,IAAJ,CAAS,MAAT,CAAT;AACH,KARW,CASZ;;;AACA,WAAO,CAAP;AACH,GA5WqB,CA8WtB;;;AACA,sBAAoB,CAAC,CAAD,EAAI,SAAJ,EAAa;AAC7B,QAAI,kBAAkB,GAAG,CAAzB;;AACA,SAAK,IAAM,OAAX,IAAsB,SAAtB,EAAiC;AAC7B,UAAM,QAAQ,GAAG,KAAK,UAAL,CAAgB,mCAAC,CAAC,OAAD,CAAjB,CAAjB;;AACA,UAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB;AACH;;AACD,UAAI,QAAQ,CAAC,MAAT,KAAoB,CAAxB,EAA2B;AACvB,gBAAQ,CAAC,MAAT,GAAkB,kBAAlB;AACH;;AACD,OAAC,CAAC,MAAF,CAAS,IAAT,CAAc,QAAd;AACA,wBAAkB,IAAI,CAAtB;AACH;AACJ;AAED;;;;;AAKG;;;AACH,YAAU,CAAC,QAAD,EAAW,QAAQ,GAAC,SAApB,EAA6B;AACnC,QAAI,CAAC,GAAG,QAAR;;AACA,QAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,OAAC,GAAG,IAAI,yCAAJ,CAAe,EAAf,CAAJ;AACH;;AACD,QAAI;AACA,OAAC,CAAC,IAAF,GAAS,QAAQ,CAAC,QAAT,CAAkB,MAAlB,EAA0B,IAA1B,GAAiC,IAAjC,EAAT;AACH,KAFD,CAEE,OAAO,GAAP,EAAY;AACV,aAAO,SAAP,CADU,CACQ;AACrB;;AACD,QAAI,MAAM,GAAG,QAAQ,CAAC,IAAT,CAAc,QAAd,CAAb;;AACA,QAAI;AACA,YAAM,GAAG,QAAQ,CAAC,MAAD,CAAjB;AACA,OAAC,CAAC,MAAF,GAAW,MAAX;AACH,KAHD,CAGE,OAAO,GAAP,EAAY;AACV,OAAC,CAAC,MAAF,GAAW,CAAX;;AACA,UAAI,MAAM,KAAK,SAAf,EAA0B;AACtB,SAAC,CAAC,UAAF,GAAe,MAAf;AACH;AACJ;;AACD,QAAM,UAAU,GAAG,QAAQ,CAAC,GAAT,CAAa,MAAb,CAAnB;;AACA,QAAI,UAAU,KAAK,SAAnB,EAA8B;AAC1B,OAAC,CAAC,UAAF,GAAe,UAAf;AACH;;AAED,QAAM,WAAW,GAAG,QAAQ,CAAC,QAAT,CAAkB,UAAlB,CAApB;;AACA,QAAI,WAAW,CAAC,MAAhB,EAAwB;AACpB,OAAC,CAAC,QAAF,GAAa,WAAW,CAAC,IAAZ,GAAmB,IAAnB,EAAb;AACH,KA5BkC,CA6BnC;AACA;AACA;;;AACA,QAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,aAAO,CAAP;AACH;;AACD,WAAO,SAAP;AACH;;AAGD,0BAAwB,CAAC,UAAD,EAAqB,EAArB,EAA2C;AAC/D,SAAK,MAAL,CAAY,MAAZ,CAAmB,KAAK,iBAAxB,EAA2C,EAA3C;AACH;;AAED,wBAAsB;AAClB,SAAK,mBAAL,GADkB,CAElB;AACH;;AAED,qBAAmB;AACf,QAAM,OAAO,GAAG,KAAK,UAAL,CAAgB,IAAhB,CAAqB,QAArB,CAAhB;AACA,QAAM,IAAI,GAAG,QAAQ,CAAC,OAAD,CAArB,CAFe,CAEiB;;AAChC,SAAK,MAAL,CAAY,MAAZ,GAAqB,IAArB;;AACA,QAAI,KAAK,MAAT,EAAiB;AACb,WAAK,MAAL,CAAY,iBAAZ,GAAgC,IAAhC;AACH;;AACD,SAAK,aAAL,GAAqB,IAArB;AACH;;AAED,oBAAkB,CAAC,aAAD,EAAc;AAC5B,SAAK,qBAAL,GAA6B,KAA7B;AACA,SAAK,iBAAL,GAAyB,aAAzB;;AACA,SAAK,IAAM,KAAX,IAAoB,aAAa,CAAC,QAAd,EAApB,EAA8C;AAC1C,UAAM,GAAG,GAAG,KAAK,CAAC,OAAlB;AACA,UAAM,MAAM,GAAG,mCAAC,CAAC,KAAD,CAAhB;AACA,UAAM,QAAQ,GAAG,KAAK,sBAAL,CAA4B,GAA5B,CAAjB;;AACA,UAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,aAAK,QAAL,EAAe,MAAf;AACH,OAFD,MAEO,IAAI,GAAG,KAAK,QAAZ,EAAsB;AACzB,aAAK,MAAL,GAAc,QAAQ,CAAC,MAAM,CAAC,IAAP,EAAD,CAAtB;AACH,OAFM,MAEA,IAAI,GAAG,KAAK,WAAZ,EAAyB;AAC5B,aAAK,SAAL,GAAiB,UAAU,CAAC,MAAM,CAAC,IAAP,EAAD,CAA3B;AACH,OAVyC,CAW1C;;AACH;;AACD,QAAI,KAAK,MAAL,KAAgB,SAApB,EAA+B;AAC3B,WAAK,MAAL,CAAY,aAAZ,GAA4B,KAAK,SAAjC;AACA,WAAK,MAAL,CAAY,iBAAZ,GAAgC,KAAK,iBAArC;AACH;AACJ,GAldqB,CAmdtB;;;AAEA,qBAAmB,CAAC,OAAD,EAAQ;AACvB,QAAM,EAAE,GAAG,KAAK,kBAAL,CAAwB,OAAxB,CAAX;AACA,SAAK,wBAAL,CAA8B,OAA9B,EAAuC,EAAvC;AACH;;AAED,oBAAkB,CAAC,OAAD,EAAQ;AACtB;AACA;AACA,QAAM,SAAS,GAAG,mCAAC,CAAC,OAAO,CAAC,QAAR,CAAiB,OAAjB,EAA0B,CAA1B,CAAD,CAAD,CACb,IADa,GAEb,IAFa,EAAlB;AAGA,QAAM,WAAW,GAAG,mCAAC,CAAC,OAAO,CAAC,QAAR,CAAiB,WAAjB,EAA8B,CAA9B,CAAD,CAAD,CACf,IADe,GAEf,IAFe,EAApB;AAGA,WAAO,IAAI,iDAAJ,CAAwB,SAAS,GAAG,GAAZ,GAAkB,WAA1C,CAAP,CATsB,CAUtB;AACH;;AAED,YAAU,CAAC,OAAD,EAAQ;AACd,QAAM,OAAO,GAAG,KAAK,SAAL,CAAe,OAAf,CAAhB;AACA,SAAK,MAAL,CAAY,IAAZ,GAAmB,OAAnB;AACA,SAAK,wBAAL,CAA8B,OAA9B,EAAuC,OAAvC;AACA,SAAK,SAAL,CAAe,CAAf,IAAoB,OAApB,CAJc,CAKd;AACA;AACA;AACH;;AAED,WAAS,CAAC,OAAD,EAAQ;AACb,QAAM,IAAI,GAAG,mCAAC,CAAC,OAAO,CAAC,QAAR,CAAiB,MAAjB,EAAyB,CAAzB,CAAD,CAAD,CACR,IADQ,GAER,IAFQ,EAAb,CADa,CAIb;;AACA,QAAM,IAAI,GAAG,mCAAC,CAAC,OAAO,CAAC,QAAR,CAAiB,MAAjB,EAAyB,CAAzB,CAAD,CAAD,CACR,IADQ,GAER,IAFQ,EAAb;AAIA,QAAI,gBAAgB,GAAG,CAAvB;AACA,QAAM,IAAI,GAAG,OAAO,CAAC,QAAR,CAAiB,oBAAjB,CAAb;;AACA,QAAI,IAAI,CAAC,MAAL,GAAc,CAAlB,EAAqB;AACjB,sBAAgB,GAAG,QAAQ,CACvB,mCAAC,CAAC,IAAI,CAAC,CAAD,CAAL,CAAD,CACK,IADL,GAEK,IAFL,EADuB,CAA3B;AAKH;;AACD,WAAO,kDAAoB,IAAI,GAAG,IAA3B,EAAiC,gBAAjC,CAAP;AACH;;AAED,oBAAkB,CAAC,MAAD,EAAO;AACrB,QAAM,MAAM,GAAG,KAAK,iBAAL,CAAuB,MAAvB,CAAf;AACA,SAAK,wBAAL,CAA8B,MAA9B,EAAsC,MAAtC;AACH;;AAED,mBAAiB,CAAC,MAAD,EAAO;AACpB,QAAM,EAAE,GAAG,IAAI,8CAAJ,EAAX;AACA,QAAI,CAAC,EAAD,EAAK,MAAL,EAAa,QAAb,EAAuB,QAAvB,EAAiC,QAAjC,CAAJ,CAFoB,CAGpB;AACA;;AACA,WAAO,EAAP;AACH;;AAjhBqB;AAohB1B,IAAM,QAAQ,GAAG;AACb,aADa;AAEb,YAFa;AAGb;AAHa,CAAjB;AAMA,iEAAe,QAAf,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChyBA;;;;;;;;;;;;;;;;;;;;AAoBG;AACH;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAOM,MAAO,gBAAP,SAAgC,4DAAhC,CAAgD,E,CAItD;;AACO,IAAM,iBAAiB,GAAG,CAC7B,YAD6B,EAE7B,UAF6B,EAG7B,cAH6B,EAI7B,YAJ6B,EAK7B,UAL6B,EAM7B,SAN6B,EAO7B,SAP6B,EAQ7B,OAR6B,EAS7B,SAT6B,EAU7B,IAV6B,EAW7B,IAX6B,EAY7B,mBAZ6B,EAa7B,IAb6B,EAc7B,eAd6B,EAe7B,IAf6B,EAgB7B,MAhB6B,EAiB7B,QAjB6B,EAkB7B,OAlB6B,EAmB7B,IAnB6B,EAoB7B,WApB6B,EAqB7B,OArB6B,EAsB7B,SAtB6B,EAuB7B,IAvB6B,EAwB7B,QAxB6B,EAyB7B,IAzB6B,EA0B7B,UA1B6B,EA2B7B,GA3B6B,CAA1B;AA8BA,IAAM,kBAAkB,GAAG,CAC9B,QAD8B,EAE9B,MAF8B,EAG9B,QAH8B,EAI9B,MAJ8B,EAK9B,aAL8B,EAM9B,IAN8B,CAA3B;AASP;;;;;;;;;;;;;;;;;;;;AAoBG;;AACG,MAAO,KAAP,SAAqB,oDAArB,CAA2C;AAW7C,cACI,IADJ,EAEI,SAAiB,CAFrB,EAGI,QAAQ,GAAC,SAHb,EAII,WAAoB,SAJxB,EAKI,aAA2B,SAL/B,EAKwC;AAEpC;AAfJ,0BAAyB,GAAzB,CAawC,CAbT;;AAgB3B,SAAK,IAAL,GAAY,IAAZ;AACA,SAAK,OAAL,GAAe,MAAf;AACA,SAAK,QAAL,GAAgB,QAAhB;AACA,SAAK,QAAL,GAAgB,QAAQ,SAAR,YAAQ,WAAR,cAAY,KAA5B;AACA,SAAK,kBAAL,CAAwB,KAAK,IAA7B,EAAmC,KAAK,QAAxC;AACA,SAAK,WAAL,GAAmB,UAAnB;AACA,SAAK,KAAL,GAAa;AACT,eAAS,EAAE,OADF;AAET,iBAAW,EAAE,OAFJ;AAGT,gBAAU,EAAE,OAHH;AAIT,cAAQ,EAAE,EAJD;AAKT,gBAAU,EAAE;AALH,KAAb;AAOH;;AA/BmB,aAAT,SAAS;AAAK,WAAO,oBAAP;AAA8B;;AAiCzC,MAAV,UAAU;AACV,WAAO,KAAK,WAAL,IAAoB,KAAK,OAAhC;AACH;;AAEa,MAAV,UAAU,CAAC,CAAD,EAAE;AACZ,SAAK,WAAL,GAAmB,CAAnB;AACH,GAxC4C,CA0C7C;;;AACU,MAAN,MAAM;AACN,WAAO,KAAK,OAAZ;AACH;;AAES,MAAN,MAAM,CAAC,CAAD,EAAE;AACR,SAAK,OAAL,GAAe,CAAf;AACH,GAjD4C,CAmD7C;;AACA;;;;AAIG;;;AACQ,MAAP,OAAO;AACP,QAAI,KAAK,QAAL,KAAkB,OAAtB,EAA+B;AAC3B,aAAO,KAAK,IAAL,GAAY,KAAK,cAAxB;AACH,KAFD,MAEO,IAAI,KAAK,QAAL,KAAkB,QAAtB,EAAgC;AACnC,aAAO,KAAK,cAAL,GAAsB,KAAK,IAA3B,GAAkC,KAAK,cAA9C;AACH,KAFM,MAEA,IAAI,KAAK,QAAL,KAAkB,KAAtB,EAA6B;AAChC,aAAO,KAAK,cAAL,GAAsB,KAAK,IAAlC;AACH,KAFM,MAEA;AACH,aAAO,KAAK,IAAZ;AACH;AACJ,GAnE4C,CAqE7C;;;AACW,MAAP,OAAO,CAAC,CAAD,EAAU;AACjB,SAAK,kBAAL,CAAwB,CAAxB,EAA2B,IAA3B;AACH;AAED;;;;;;;AAOG;;;AACH,oBAAkB,CAAC,OAAD,EAAU,QAAQ,GAAG,KAArB,EAA0B;AACxC,QAAI,OAAO,KAAK,SAAhB,EAA2B;AACvB,WAAK,IAAL,GAAY,SAAZ;AACA,aAAO,IAAP;AACH;;AAED,QACI,CAAC,QAAD,IACG,OAAO,CAAC,OAAR,CAAgB,KAAK,cAArB,MAAyC,CAD5C,IAEG,OAAO,CAAC,KAAR,CAAc,CAAC,CAAf,MAAsB,KAAK,cAHlC,EAIE;AACE,WAAK,IAAL,GAAY,OAAO,CAAC,KAAR,CAAc,CAAd,EAAiB,CAAC,CAAlB,CAAZ;AACA,WAAK,QAAL,GAAgB,QAAhB;AACH,KAPD,MAOO,IAAI,CAAC,QAAD,IAAa,OAAO,CAAC,OAAR,CAAgB,KAAK,cAArB,MAAyC,CAA1D,EAA6D;AAChE,WAAK,IAAL,GAAY,OAAO,CAAC,KAAR,CAAc,CAAd,CAAZ;AACA,WAAK,QAAL,GAAgB,KAAhB;AACH,KAHM,MAGA,IAAI,CAAC,QAAD,IAAa,OAAO,CAAC,KAAR,CAAc,CAAC,CAAf,MAAsB,KAAK,cAA5C,EAA4D;AAC/D,WAAK,IAAL,GAAY,OAAO,CAAC,KAAR,CAAc,CAAd,EAAiB,CAAC,CAAlB,CAAZ;AACA,WAAK,QAAL,GAAgB,OAAhB;AACH,KAHM,MAGA;AACH,WAAK,IAAL,GAAY,OAAZ;;AACA,UAAI,KAAK,QAAL,KAAkB,SAAtB,EAAiC;AAC7B,aAAK,QAAL,GAAgB,QAAhB;AACH;AACJ;;AACD,WAAO,IAAP;AACH;;AA5G4C;AA+GjD;;AAEA;;;;;;;;;;;;;;;;;;;;;;;AAuBG;;AACG,MAAO,WAAP,SAA2B,gDAA3B,CAA6C;AAc/C,cAAY,EAAE,GAAC,GAAf,EAAkB;AACd;AAZJ,kBAAkB,KAAlB;AACA,kBAAkB,KAAlB;AACA,mBAAmB,KAAnB;AACA,kBAAiB,EAAjB;AAUI,SAAK,WAAL,GAAmB,EAAnB;AACA,SAAK,aAAL,GAAqB,EAArB;AACA,SAAK,MAAL,GAAc,EAAd;AAEA,SAAK,QAAL,CAAc,aAAd,GAA8B,EAA9B;AACA;;AACA;AACH;;AAtBmB,aAAT,SAAS;AAAK,WAAO,0BAAP;AAAoC;;AAwBpD,MAAL,KAAK;AACL,QAAI,KAAK,MAAL,CAAY,MAAZ,GAAqB,CAAzB,EAA4B;AACxB,aAAO,KAAK,MAAL,CAAY,CAAZ,EAAe,IAAtB;AACH,KAFD,MAEO;AACH,aAAO,SAAP;AACH;AACJ;;AAEQ,MAAL,KAAK,CAAC,KAAD,EAAM;AACX,SAAK,MAAL,GAAc,EAAd;;AACA,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,WAAK,MAAL,CAAY,IAAZ,CAAiB,IAAI,KAAJ,CAAU,KAAV,CAAjB;AACH;AACJ;;AAEa,MAAV,UAAU;AACV,QAAI,MAAM,GAAG,KAAK,MAAlB;;AACA,QAAI,MAAM,KAAK,SAAf,EAA0B;AACtB,YAAM,GAAG,EAAT;AACH;;AACD,QAAI,KAAK,aAAL,KAAuB,SAA3B,EAAsC;AAClC,WAAK,aAAL,CAAmB,OAAnB,CAA2B,CAAC,IAAG;AAC3B,cAAM,IAAI,CAAC,CAAC,YAAZ;;AACA,YAAI,MAAM,GAAG,GAAb,EAAkB;AACd,gBAAM,GAAG,GAAT;AACH,SAFD,MAEO,IAAI,MAAM,CAAC,KAAP,CAAa,MAAb,CAAJ,EAA0B;AAC7B,gBAAM,GAAG,EAAT;AACH;AACJ,OAPD;AAQH;;AACD,UAAM,GAAG,IAAI,CAAC,KAAL,CAAW,MAAX,CAAT;AACA,WAAO,MAAP;AACH,GAzD8C,CA2D/C;;AACA;;;;;;;AAOG;;;AACH,UAAQ,CAAC,IAAD,EAAO,WAAP,EAAoB,QAAQ,GAAG,KAA/B,EAAsC,eAAtC,EAAqD;AACzD,QAAI,WAAW,KAAK,SAApB,EAA+B;AAC3B,UAAM,SAAS,GAAG,KAAK,MAAL,CAAY,MAAZ,GAAqB,CAAvC;AACA,UAAM,QAAQ,GAAG,IAAI,KAAJ,CACb,IADa,EAEb,SAFa,EAGb,SAHa,EAIb,QAJa,EAKb,eALa,CAAjB;AAOA,WAAK,MAAL,CAAY,IAAZ,CAAiB,QAAjB;AACH,KAVD,MAUO;AACH,UAAI,UAAU,GAAG,KAAjB;;AACA,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,MAAL,CAAY,MAAhC,EAAwC,CAAC,EAAzC,EAA6C;AACzC,YAAM,SAAS,GAAG,KAAK,MAAL,CAAY,CAAZ,CAAlB;;AACA,YAAI,SAAS,CAAC,MAAV,KAAqB,WAAzB,EAAsC;AAClC,mBAAS,CAAC,IAAV,GAAiB,IAAjB;AACA,oBAAU,GAAG,IAAb;AACA;AACH;AACJ;;AACD,UAAI,UAAU,KAAK,KAAnB,EAA0B;AACtB,YAAM,SAAQ,GAAG,IAAI,KAAJ,CACb,IADa,EAEb,WAFa,EAGb,SAHa,EAIb,QAJa,EAKb,eALa,CAAjB;;AAOA,aAAK,MAAL,CAAY,IAAZ,CAAiB,SAAjB;AACH;AACJ;AACJ;AAED;;;;;AAKG;;;AACH,0BAAwB,CAAC,IAAD,EAAK;AACzB,WAAO,IAAP;AACH;;AAED,0BAAwB,CAAC,IAAD,EAAK;AACzB,WAAO,SAAP;AACH;AAED;;;;;AAKG;;;AACH,8BAA4B,CAAC,GAAD,EAAM,OAAO,GAAC,EAAd,EAAgB;AACxC,QAAI,KAAK,QAAL,CAAc,IAAd,GAAqB,CAAzB,EAA4B;AACxB,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,QAAL,CAAc,IAAlC,EAAwC,CAAC,EAAzC,EAA6C;AACzC,WAAG,CAAC,WAAJ;AACH;AACJ;AACJ;AAED;;AAEG;;;AACH,eAAa,CAAC,UAAD,EAAmC;AAC5C,QAAI,UAAU,KAAK,SAAf,IAA4B,KAAK,UAAL,KAAoB,SAApD,EAA+D;AAC3D,gBAAU,GAAG,KAAK,UAAL,CAAgB,UAA7B;AACH;;AACD,QAAI,OAAO,GAAW,CAAtB;;AACA,QAAI,UAAU,KAAK,SAAnB,EAA8B;AAC1B,aAAO,GAAG,UAAU,CAAC,WAArB;AACH;;AACD,WAAO,OAAP;AACH;AAED;;;;;;;;;;;AAWG;;;AACH,UAAQ,CACJ,KAAK,GAAC,GADF,EAEJ,WAFI,EAGJ;AAAE,cAAU,GAAC,SAAb;AAAwB,WAAO,GAAC;AAAhC,MAA8C,EAH1C,EAG4C;AAEhD;AACA;AACA,QAAM,EAAE,GAAG,KAAK,QAAL,CAAc,aAAzB;AACA,QAAM,YAAY,GAAG,KAAK,EAAL,GAAU,IAAV,GAAiB,KAAtC;AACA,WAAO,YAAP;AACH;;AAtK8C;AAyKnD;;;;;;;;;;;AAWG;;AACG,MAAO,OAAP,SAAuB,WAAvB,CAAkC;AAYpC,cAAY,KAAa,GAAzB,EAA4B;AACxB,UAAM,EAAN,EADwB,CAV5B;;AACA,oBAAmB,QAAnB,CAS4B,CAR5B;;AACA,wBAAuB,SAAvB;AACA,yBAAwB,OAAxB;AACA,+BAA+B,KAA/B;AACA,kBAAiB,EAAjB,CAI4B,CAJP;;AAEX,0BAAyB,aAAzB;AAIN,SAAK,KAAL,GAAa,IAAI,wCAAJ,EAAb;AACA;;AACA;AACH;;AAhBmB,aAAT,SAAS;AAAK,WAAO,sBAAP;AAAgC;;AAkB9C,MAAP,OAAO;AACP,WAAO,EAAP;AACH;;AAEU,MAAP,OAAO,CAAC,MAAD,EAAsB,CAC7B;AACH;;AAGgB,MAAb,aAAa;AACb,WAAO,KAAK,cAAZ;AACH;;AAEgB,MAAb,aAAa,CAAC,SAAD,EAAU;AACvB,QAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,eAAS,GAAG,aAAZ;AACH,KAFD,MAEO,IAAI,SAAS,KAAK,MAAlB,EAA0B;AAC7B,eAAS,GAAG,QAAZ;AACH,KAFM,MAEA,IAAI,CAAC,kBAAkB,CAAC,QAAnB,CAA4B,SAA5B,CAAL,EAA6C;AAChD,YAAM,IAAI,gBAAJ,4CAAyD,SAAzD,EAAN;AACH;;AACD,SAAK,cAAL,GAAsB,SAAtB;AACH;AAED;;;;;;AAMG;;;AACH,aAAW,CAAC;AAAE,QAAI,GAAC;AAAP,MAAmB,EAApB,EAAsB;AAC7B,QAAI,gBAAgB,GAAG,KAAK,aAA5B,CAD6B,CAG7B;;AACA,QAAI,CAAC,SAAD,EAAY,aAAZ,EAA2B,QAA3B,CAAoC,KAAK,aAAzC,KACO,IAAI,KAAK,SADpB,EAC+B;AAC3B,sBAAgB,GAAG,KAAK,wBAAL,CAA8B,IAA9B,CAAnB;AACH;;AAED,QAAM,GAAG,GAAG,KAAK,QAAL,CAAc,eAA1B;;AACA,QAAI,GAAG,KAAK,SAAZ,EAAuB;AACnB,aAAO,SAAP;AACH;;AACD,QAAM,gBAAgB,GAAG,EAAzB;;AACA,SAAK,IAAM,CAAX,IAAgB,KAAK,OAArB,EAA8B;AAC1B,sBAAgB,CAAC,IAAjB,CAAsB,CAAC,CAAC,WAAF,CAAc,IAAd,CAAtB;AACH,KAhB4B,CAkB7B;;;AACA,QAAM,gBAAgB,GAAG,gBAAgB,KAAK,MAArB,GACnB,yEADmB,GAEnB,uEAFN;AAIA,QAAM,GAAG,GAAG,IAAI,+DAAJ,CAAuB;AAC/B,UAAI,EAAE,gBADyB;AAE/B,cAAQ,EAAE,GAFqB;AAG/B,oBAAc,EAAE;AAHe,KAAvB,CAAZ;AAKA,SAAK,4BAAL,CAAkC,GAAlC,EAAuC;AAAE;AAAF,KAAvC,EA5B6B,CA4BqB;;AAClD,SAAK,IAAM,CAAC,CAAD,EAAI,EAAJ,CAAX,IAAqB,KAAK,OAAL,CAAa,OAAb,EAArB,EAA6C;AACzC,UAAI,EAAC,CAAC,UAAF,KAAiB,SAArB,EAAgC;AAC5B,YAAM,GAAG,GAAG,EAAC,CAAC,UAAd;AACA,YAAM,aAAa,GAAG,IAAI,gEAAJ,CAAwB,GAAG,CAAC,eAA5B,CAAtB;;AACA,YAAI,GAAG,CAAC,eAAJ,KAAwB,GAAxB,IAA+B,GAAG,CAAC,aAAJ,KAAsB,KAAzD,EAAgE;AAC5D,aAAG,CAAC,aAAJ,CAAkB,CAAlB,EAAqB,aAArB;AACH,SAFD,MAEO,IAAI,GAAG,CAAC,WAAJ,KAAoB,QAApB,IAAgC,GAAG,CAAC,aAAJ,KAAsB,IAA1D,EAAgE;AACnE,aAAG,CAAC,aAAJ,CAAkB,CAAlB,EAAqB,aAArB;AACH;AACJ;AACJ;;AACD,SAAK,IAAM,GAAX,IAAkB,KAAK,aAAvB,EAAsC;AAClC,SAAG,CAAC,eAAJ,CAAoB,CAApB,EAAuB,GAAG,CAAC,OAAJ,CAAY;AAAC,qBAAa,EAAE;AAAhB,OAAZ,CAAvB;AACH;;AACD,SAAK,IAAM,GAAX,IAAkB,KAAK,WAAvB,EAAoC;AAChC,SAAG,CAAC,eAAJ,CAAoB,CAApB,EAAuB,GAAG,CAAC,OAAJ,CAAY;AAAC,qBAAa,EAAE;AAAhB,OAAZ,CAAvB;AACH;;AACD,QAAI,KAAK,aAAL,KAAuB,SAA3B,EAAsC;AAClC,SAAG,CAAC,QAAJ,CAAa;AAAE,iBAAS,EAAE,KAAK,aAAlB;AAAiC,mBAAW,EAAE,KAAK;AAAnD,OAAb;AACH;;AACD,SAAK,iBAAL,GAAyB,GAAzB;AACA,WAAO,GAAP;AACH;;AArGmC;AAwGxC;;AACA;;;;;;;;;;;;;;;;;AAiBG;;AACG,MAAO,IAAP,SAAoB,OAApB,CAA2B;AAQ7B;;;;;;;;;;;;AAYG;AACH,cAAY,KAAyB,IAArC,EAA2C,KAAW,GAAtD,EAAyD;AACrD,UAAM,EAAN,EADqD,CAlBzD;;AACA,kBAAkB,IAAlB;AACA,kBAAkB,KAAlB;;AAkBI,QAAI,EAAE,YAAY,yCAAlB,EAA+B;AAC3B,WAAK,KAAL,GAAa,EAAb;AACH,KAFD,MAEO;AACH,WAAK,KAAL,GAAa,IAAI,yCAAJ,CAAgB,EAAhB,CAAb;AACH;AACJ;;AA3BmB,aAAT,SAAS;AAAK,WAAO,mBAAP;AAA6B;;AA6BtD,YAAU;AACN,WAAO,KAAK,IAAZ;AACH;;AAEO,MAAJ,IAAI;AACJ,WAAO,KAAK,KAAL,CAAW,IAAlB;AACH;;AAEO,MAAJ,IAAI,CAAC,EAAD,EAAW;AACf,SAAK,KAAL,CAAW,IAAX,GAAkB,EAAlB;AACH;;AAEiB,MAAd,cAAc;AACd,WAAO,KAAK,KAAL,CAAW,cAAlB;AACH;;AAEiB,MAAd,cAAc,CAAC,EAAD,EAAW;AACzB,SAAK,KAAL,CAAW,cAAX,GAA4B,EAA5B;AACH;;AAEO,MAAJ,IAAI;AACJ,WAAO,KAAK,KAAL,CAAW,IAAlB;AACH;;AAEO,MAAJ,IAAI,CAAC,EAAD,EAAW;AACf,SAAK,KAAL,CAAW,IAAX,GAAkB,EAAlB;AACH;;AAES,MAAN,MAAM;AACN,WAAO,KAAK,KAAL,CAAW,MAAlB;AACH;;AAES,MAAN,MAAM,CAAC,EAAD,EAAW;AACjB,SAAK,KAAL,CAAW,MAAX,GAAoB,EAApB;AACH;;AAEU,MAAP,OAAO;AACP,WAAO,CAAC,KAAK,KAAN,CAAP;AACH;;AAEU,MAAP,OAAO,CAAC,KAAD,EAAqB;AAC5B,QAAI,CAAC,KAAK,CAAC,MAAX,EAAmB;AACf,YAAM,IAAI,KAAJ,CAAU,mDAAV,CAAN;AACH;;AACD,SAAK,KAAL,GAAa,KAAK,CAAC,CAAD,CAAlB;AACH;AAGD;;AAGA;;;;;AAKG;;;AACH,0BAAwB,CAAC,IAAD,EAAK;AACzB,QAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,WAAK,aAAL,GAAqB,KAAK,wBAAL,CAA8B,IAA9B,CAArB;AACH;;AACD,WAAO,IAAP;AACH;AAED;;AAEG;;;AACH,0BAAwB,CAAC,IAAD,EAAK;AACzB,QAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,aAAO,SAAP;AACH;;AACD,QAAM,OAAO,GAAG,IAAI,CAAC,UAAL,GAAkB,CAAlC;AACA,QAAM,aAAa,GAAG,KAAK,KAAL,CAAW,eAAX,GAA6B,OAAnD,CALyB,CAMzB;;AACA,QAAI,aAAa,IAAI,CAArB,EAAwB;AACpB,aAAO,MAAP;AACH,KAFD,MAEO;AACH,aAAO,IAAP;AACH;AACJ;;AAED,8BAA4B,CAAC,GAAD,EAAM;AAAE,SAAK,GAAC,SAAR;AAAmB,QAAI,GAAC;AAAxB,MAAoC,EAA1C,EAA4C;AACpE,UAAM,4BAAN,CAAmC,GAAnC,EAAwC;AAAE,WAAF;AAAS;AAAT,KAAxC;;AACA,QAAI,0CAAJ,EAAW;AACP,aAAO,CAAC,GAAR,CAAY,KAAK,aAAjB;AACH;;AACD,QAAI,KAAK,aAAL,KAAuB,QAA3B,EAAqC;AACjC,SAAG,CAAC,KAAJ,CAAU,IAAV,GAAiB,KAAjB,CADiC,CAEjC;AACH,KAHD,MAGO;AACH;AACA,UAAI,eAAe,GAAG,CAAtB;;AACA,UAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,uBAAe,GAAG,IAAI,CAAC,KAAL,CACd,KAAK,CAAC,OAAN,CAAc,wBAAd,GAAyC,CAD3B,CAAlB;AAGH;;AACD,UAAI,IAAI,KAAK,SAAT,IAAsB,KAAK,KAAL,KAAe,SAAzC,EAAoD;AAChD,YAAM,OAAO,GAAG,IAAI,CAAC,UAAL,GAAkB,CAAlC,CADgD,CAEhD;;AACA,YAAM,gBAAgB,GAAG,IAAI,CAAC,GAAL,CACrB,KAAK,KAAL,CAAW,eAAX,GAA6B,OADR,CAAzB;AAGA,YAAM,aAAa,GAAG,gBAAgB,GAAG,CAAzC,CANgD,CAOhD;;AACA,YAAI,aAAa,GAAG,CAAhB,IAAqB,GAAG,CAAC,aAAJ,KAAsB,SAA/C,EAA0D;AACtD,cAAM,UAAU,GACV,aAAa,GAAG,eAAhB,GAAkC,GAAG,CAAC,aAAJ,EADxC;AAEA,aAAG,CAAC,aAAJ,CAAkB,UAAlB;AACH;AACJ;AACJ;AACJ;;AAED,UAAQ,CACJ,KAAK,GAAC,GADF,EAEJ,WAAW,GAAC,SAFR,EAGJ;AACI,cAAU,GAAC,SADf;AAEI,WAAO,GAAC,SAFZ;AAGI,cAAU,GAAC;AAHf,MAIE,EAPE,EAOA;AAEJ,QAAM,YAAY,GAAG,MAAM,QAAN,CAAe,KAAf,EAAsB,WAAtB,EAAmC;AAAE,gBAAF;AAAc;AAAd,KAAnC,CAArB;;AACA,QAAI,OAAO,KAAK,SAAhB,EAA2B;AACvB,aAAO,GAAG,KAAK,aAAL,EAAV;AACH;;AACD,QAAM,MAAM,GAAG,KAAK,UAApB,CANI,CAQJ;;AACA,QAAM,MAAM,GAAG,KAAK,KAAL,CAAW,IAA1B;AACA,QAAI,QAAQ,GAAG,YAAY,GAAG,IAA9B;;AACA,QAAI,WAAW,YAAY,IAA3B,EAAiC;AAC7B,UAAI,WAAW,CAAC,KAAZ,CAAkB,IAAlB,KAA2B,KAAK,KAAL,CAAW,IAAtC,IAA8C,UAAlD,EAA8D;AAC1D,gBAAQ,IAAI,KAAK,IAAL,GAAY,KAAxB,CAD0D,CAC3B;AAClC,OAFD,MAEO,IACH,KAAK,GAAL,KAAa,SAAb,KACI,KAAK,GAAL,CAAS,IAAT,KAAkB,OAAlB,IAA6B,KAAK,GAAL,CAAS,IAAT,KAAkB,UADnD,CADG,EAGL;AACE,gBAAQ,IAAI,KAAK,WAAW,CAAC,QAAZ,CAAqB,aAA1B,GAA0C,KAAtD,CADF,CAEE;AACA;AACH;AACJ,KAXD,MAWO,IAAI,WAAW,KAAK,SAAhB,IAA6B,UAAjC,EAA6C;AAChD;AACA,cAAQ,IAAI,KAAK,KAAjB;AACH,KAzBG,CA0BJ;AACA;;;AACA,QAAI,KAAK,GAAL,KAAa,SAAb,IAA0B,KAAK,GAAL,CAAS,IAAT,KAAkB,OAAhD,EAAyD;AACrD;AACA,UAAI;AACA,qDAAY,OAAZ,EAAqB,MAArB,EAA6B,MAA7B,EAAqC,CAArC;AACA,sDAAa,OAAb,EAAsB,MAAtB,EAA8B,QAA9B;AACH,OAHD,CAGE,OAAO,CAAP,EAAU,CACR;AACH;AACJ,KApCG,CAoCF;;;AACF,WAAO,YAAP;AACH;;AA7L4B;AAgMjC;;AAEA;;AAEA;;;;;;;;;;;AAWG;;AACG,MAAO,IAAP,SAAoB,WAApB,CAA+B;AAWjC;AACA;AACA,cAAY,EAAE,GAAC,GAAf,EAAkB;AACd,UAAM,EAAN,EADc,CAVlB;;AACA,kBAAkB,KAAlB;AACA,kBAAkB,IAAlB;AACA,gBAAe,MAAf;AACA,qBAAoB,CAApB;AACA,iBAAgB,OAAhB;AACA,kBAAiB,CAAjB;AAMI,SAAK,IAAL,GAAY,MAAZ;AACH;;AAfmB,aAAT,SAAS;AAAK,WAAO,mBAAP;AAA6B;AAiBtD;;;AAGG;;;AACH,YAAU;AACN,WAAO,KAAK,QAAL,CAAc,aAAd,CAA4B,QAA5B,EAAP;AACH;AAGD;;;;;;AAMG;;;AACH,aAAW,CAAC,OAAD,EAAQ;AACf,QAAI,OAAO,GAAG,KAAd;;AACA,QAAI,KAAK,QAAL,CAAc,IAAd,KAAuB,OAA3B,EAAoC;AAChC,UACI,KAAK,UAAL,KAAoB,SAApB,IACG,KAAK,UAAL,CAAgB,aAAhB,CAA8B,UAA9B,KAA6C,CAFpD,EAGE;AACE,eAAO,GAAG,KAAV;AACH;AACJ;;AACD,QAAI,KAAK,SAAL,KAAmB,SAAvB,EAAkC;AAC9B,UAAM,CAAC,GAAG,IAAI,yCAAJ,CAAgB,IAAhB,CAAV;AACA,UAAI,EAAE,GAAG,KAAK,SAAd;;AACA,UAAI,KAAK,QAAL,CAAc,IAAd,KAAuB,OAA3B,EAAoC;AAChC,UAAE,IAAI,CAAN;AACH;;AACD,OAAC,CAAC,eAAF,IAAqB,EAArB;AACA,aAAO,GAAG,CAAC,CAAC,WAAF,CAAc,SAAd,CAAV;AACH;;AAED,QAAM,GAAG,GAAG,IAAI,+DAAJ,CAAuB;AAC/B,UAAI,EAAE,CAAC,OAAD,CADyB;AAE/B,cAAQ,EAAE,KAAK,QAAL,CAAc,eAAd,GAAgC;AAFX,KAAvB,CAAZ;;AAIA,QAAI,KAAK,QAAL,CAAc,IAAd,GAAqB,CAAzB,EAA4B;AACxB,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,QAAL,CAAc,IAAlC,EAAwC,CAAC,EAAzC,EAA6C;AACzC,WAAG,CAAC,WAAJ;AACH;AACJ;;AACD,QAAI,KAAK,KAAL,KAAe,SAAnB,EAA8B;AAC1B,SAAG,CAAC,QAAJ,CAAa;AAAE,iBAAS,EAAE,KAAK,KAAlB;AAAyB,mBAAW,EAAE,KAAK;AAA3C,OAAb;AACH;;AACD,SAAK,iBAAL,GAAyB,GAAzB;AACA,WAAO,GAAP;AACH;;AApEgC;AAuErC,kE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtzBA;;;AAGG;AACH;AACA;AACA;AACA;AAEM,SAAU,gBAAV,GAA0B;AAC5B,MAAI,IAAJ,CAD4B,CAE5B;;AACA,MAAI,OAAc,MAAO,CAAC,OAAtB,KAAkC,WAAtC,EAAmD;AAC/C;AACA,QAAI,GAAU,MAAO,CAAC,OAAtB;AACH,GAHD,MAGO;AACH,QAAI,GAAG,iBAAiB,EAAxB;AACH;;AACD,MAAI,CAAC,UAAL,GAAmB,IAAI,CAAC,UAAL,KAAoB,SAArB,GAAkC,IAAI,CAAC,UAAvC,GAAoD,UAAU,EAAhF;AACA,MAAI,CAAC,aAAL,GACI,IAAI,CAAC,aAAL,KAAuB,SAAvB,GACM,IAAI,CAAC,aADX,GAEM,eAAe,CAAC,eAAD,CAAf,IAAoC,IAH9C;AAKA,MAAI,CAAC,UAAL,GAAmB,IAAI,CAAC,UAAL,KAAoB,SAArB,GAAkC,IAAI,CAAC,UAAvC,GAAoD,eAAe,CAAC,YAAD,CAArF;;AACA,MAAI,IAAI,CAAC,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,QAAI,CAAC,UAAL,GAAkB,IAAlB;AACH;;AACD,MAAI,CAAC,WAAL,GAAmB,WAAW,EAA9B;AAEA,SAAO,CAAC,IAAD,CAAP;AACA,sBAAoB,CAAC,IAAD,CAApB;AACA,YAAU;AACb;AAEK,SAAU,WAAV,GAAqB;AACvB,MAAI,SAAS,GAAG,eAAe,CAAC,WAAD,CAA/B;;AACA,MAAI,CAAC,SAAL,EAAgB;AACZ,aAAS,GAAG,eAAe,CAAC,KAAD,CAA3B;AACH;;AACD,MAAM,WAAW,GAAG,kDAAoB,SAAS,GAAG,QAAhC,CAApB;;AACA,MAAI,yCAAJ,EAAW;AACP,WAAO,CAAC,GAAR,CAAY,uBAAZ,EAAqC,WAArC,EAAkD,QAAlD,EAA4D,SAA5D;AACH;;AACD,SAAO,WAAP;AACH;AAGK,SAAU,OAAV,CAAkB,IAAlB,EAAsB;AACxB,MAAI,CAAC,IAAI,CAAC,WAAV,EAAuB;AACnB;AACH;;AACD,OAAK,IAAM,CAAX,IAAgB,MAAM,CAAC,IAAP,CAAY,yCAAZ,CAAhB,EAA0C;AACtC,8CAAY,CAAZ,IAAiB,kDAAoB,IAAI,CAAC,WAAL,GAAmB,0CAAY,CAAZ,CAAvC,CAAjB;AACH;AACJ;AAED;;AAEG;;AACG,SAAU,UAAV,GAAoB;AACtB,MAAI,CAAC,QAAL,EAAe;AACX;AACH;;AACD,MAAI,QAAQ,CAAC,UAAT,KAAwB,UAA5B,EAAwC;AACpC;AACH,GAFD,MAEO;AACH,UAAM,CAAC,gBAAP,CAAwB,MAAxB,EAAgC,MAAK;AACjC;AACH,KAFD;AAGH;AACJ;AAGK,SAAU,oBAAV,CAA+B,IAA/B,EAAmC;AACrC,MAAI,CAAC,IAAI,CAAC,aAAN,IAAwB,CAAC,IAAD,EAAO,OAAP,EAAgB,QAAhB,CAAyB,IAAI,CAAC,aAA9B,CAA5B,EAA2E;AACvE,WAAO,SAAP;AACH;;AACD,MAAI,UAAJ;;AACA,MAAI,IAAI,CAAC,aAAL,KAAuB,IAA3B,EAAiC;AAC7B,cAAU,GAAG,sBAAb;AACH,GAFD,MAEO;AACH,cAAU,GAAG,IAAI,CAAC,aAAlB;AACH;;AACD,SAAO,sDAAwB,UAAxB,CAAP;AACH;AAED;;;AAGG;;AACG,SAAU,iBAAV,GAA2B;AAC7B,MAAM,OAAO,GAAG,eAAe,CAAC,SAAD,CAA/B;;AACA,MAAI,CAAC,OAAL,EAAc;AACV,WAAO,EAAP;AACH;;AAED,MAAI,OAAJ;;AACA,MAAI;AACA,WAAO,GAAG,IAAI,CAAC,KAAL,CAAW,OAAX,CAAV;AACH,GAFD,CAEE,OAAO,CAAP,EAAU;AACR,WAAO,CAAC,IAAR,CAAa,+CAA+C,OAAO,CAAC,QAAR,EAA/C,GAAoE,eAAjF;AACA,WAAO,GAAG,EAAV;AACH;;AACD,SAAO,OAAP;AACH;AAED;;;;AAIG;;AACG,SAAU,eAAV,CAA0B,SAAS,GAAC,SAApC,EAA6C;AAC/C;AACA,MAAM,OAAO,GAAG,QAAQ,CAAC,oBAAT,CAA8B,QAA9B,CAAhB;;AACA,OAAK,IAAM,CAAX,IAAgB,KAAK,CAAC,IAAN,CAAW,OAAX,CAAhB,EAAqC;AACjC,QAAM,UAAU,GAAG,CAAC,CAAC,YAAF,CAAe,WAAf,KAA+B,CAAC,CAAC,YAAF,CAAe,KAAf,CAAlD;;AACA,QAAI,UAAU,IAAI,UAAU,IAAV,CAAe,UAAf,CAAlB,EAA8C;AAC1C,UAAM,SAAS,GAAG,CAAC,CAAC,YAAF,CAAe,SAAf,KAA6B,CAAC,CAAC,YAAF,CAAe,SAAS,CAAC,WAAV,EAAf,CAA/C;;AACA,UAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,eAAO,SAAP;AACH;AACJ;AACJ;;AACD,SAAO,SAAP;AACH;AAED;;;AAGG;;AACG,SAAU,UAAV,GAAoB;AACtB,SAAO,eAAe,CAAC,YAAD,CAAf,KAAkC,IAAzC;AACH,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrID;;;;;;;;;;;;;;AAcG;AACH;AAEA;AACA;AAgBA;;;;;;;AAOG;;AACG,MAAO,UAAP,SAA0B,oDAA1B,CAAgD;AAUlD,cAAY,OAAZ,EAAkC;AAC9B;AARM,iBAAgB,EAAhB;AACA,kBAAiB,GAAjB;AACA,qBAAoB,EAApB;AACA,4BAA2B,EAA3B;AACV,uBAAsB,QAAtB,CAGkC,CAHD;;AACjC,yBAAyB,SAAzB,CAEkC,CAFG;;AAIjC,SAAK,GAAL,CAAS,OAAT;AACH;;AAZmB,aAAT,SAAS;AAAK,WAAO,0BAAP;AAAoC;;AAc7D,YAAU;AACN,WAAO,KAAK,IAAZ;AACH;AAGD;;;;;AAKG;;;AACH,KAAG,CAAC,OAAD,EAAuB;AACtB,QAAI,OAAO,OAAP,KAAmB,QAAvB,EAAiC;AAC7B,aAAO,GAAG,OAAO,CAAC,WAAR,EAAV;AACH;;AAED,QACI,OAAO,KAAK,SAAZ,IACG,OAAO,KAAK,GADf,IAEG,OAAO,KAAK,CAFf,IAGG,OAAO,KAAK,SAJnB,EAKE;AACE,WAAK,KAAL,GAAa,SAAb;AACA,WAAK,MAAL,GAAc,GAAd;AACA,WAAK,SAAL,GAAiB,EAAjB;AACA,WAAK,gBAAL,GAAwB,GAAxB;AACH,KAVD,MAUO,IAAI,OAAO,KAAK,OAAZ,IAAuB,OAAO,KAAK,GAAnC,IAA0C,OAAO,KAAK,CAA1D,EAA6D;AAChE,WAAK,KAAL,GAAa,OAAb;AACA,WAAK,MAAL,GAAc,GAAd;AACA,WAAK,SAAL,GAAiB,GAAjB;AACA,WAAK,gBAAL,GAAwB,GAAxB;AACH,KALM,MAKA,IACH,OAAO,KAAK,MAAZ,IACG,OAAO,KAAK,GADf,IAEG,OAAO,KAAK,GAFf,IAGG,OAAO,KAAK,CAAC,CAJb,EAKL;AACE,WAAK,KAAL,GAAa,MAAb;AACA,WAAK,MAAL,GAAc,CAAC,GAAf;AACA,WAAK,SAAL,GAAiB,GAAjB;AACA,WAAK,gBAAL,GAAwB,GAAxB;AACH,KAVM,MAUA,IACH,OAAO,KAAK,aAAZ,IACG,OAAO,KAAK,IADf,IAEG,OAAO,KAAK,CAAC,CAHb,EAIL;AACE,WAAK,KAAL,GAAa,aAAb;AACA,WAAK,MAAL,GAAc,CAAC,GAAf;AACA,WAAK,SAAL,GAAiB,IAAjB;AACA,WAAK,gBAAL,GAAwB,WAAxB;AACH,KATM,MASA,IACH,OAAO,KAAK,cAAZ,IACG,OAAO,KAAK,IADf,IAEG,OAAO,KAAK,CAHZ,EAIL;AACE,WAAK,KAAL,GAAa,cAAb;AACA,WAAK,MAAL,GAAc,GAAd;AACA,WAAK,SAAL,GAAiB,IAAjB;AACA,WAAK,gBAAL,GAAwB,WAAxB;AACH,KATM,MASA,IACH,OAAO,KAAK,aAAZ,IACG,OAAO,KAAK,KADf,IAEG,OAAO,KAAK,CAAC,CAHb,EAIL;AACE,WAAK,KAAL,GAAa,aAAb;AACA,WAAK,MAAL,GAAc,CAAC,GAAf;AACA,WAAK,SAAL,GAAiB,KAAjB;AACA,WAAK,gBAAL,GAAwB,YAAxB;AACH,KATM,MASA,IACH,OAAO,KAAK,cAAZ,IACG,OAAO,KAAK,KADf,IAEG,OAAO,KAAK,CAHZ,EAIL;AACE,WAAK,KAAL,GAAa,cAAb;AACA,WAAK,MAAL,GAAc,GAAd;AACA,WAAK,SAAL,GAAiB,KAAjB;AACA,WAAK,gBAAL,GAAwB,WAAxB;AACH,KATM,MASA,IACH,OAAO,KAAK,gBAAZ,IACG,OAAO,KAAK,MADf,IAEG,OAAO,KAAK,CAAC,CAHb,EAIL;AACE,WAAK,KAAL,GAAa,gBAAb;AACA,WAAK,MAAL,GAAc,CAAC,GAAf;AACA,WAAK,SAAL,GAAiB,MAAjB;AACA,WAAK,gBAAL,GAAwB,YAAxB;AACH,KATM,MASA,IACH,OAAO,KAAK,iBAAZ,IACG,OAAO,KAAK,MADf,IAEG,OAAO,KAAK,CAHZ,EAIL;AACE,WAAK,KAAL,GAAa,iBAAb;AACA,WAAK,MAAL,GAAc,GAAd;AACA,WAAK,SAAL,GAAiB,MAAjB;AACA,WAAK,gBAAL,GAAwB,WAAxB;AACH,KATM,MASA;AACH,YAAM,IAAI,2DAAJ,CAAqB,kCAAkC,OAAvD,CAAN;AACH;AAEJ;AAED;;;;;;AAMG;;;AACK,MAAJ,IAAI;AACJ,WAAO,KAAK,KAAZ;AACH;;AAEO,MAAJ,IAAI,CAAC,CAAD,EAAE;AACN,SAAK,GAAL,CAAS,CAAT;AACH;AAED;;;;;;AAMG;;;AACM,MAAL,KAAK;AACL,WAAO,KAAK,MAAZ;AACH;;AAEQ,MAAL,KAAK,CAAC,KAAD,EAAM;AACX,SAAK,GAAL,CAAS,KAAT;AACH;AAED;;;;;;AAMG;;;AACS,MAAR,QAAQ;AACR,WAAO,KAAK,SAAZ;AACH;;AAEW,MAAR,QAAQ,CAAC,QAAD,EAAS;AACjB,SAAK,GAAL,CAAS,QAAT;AACH;AAED;;;;;AAKG;;;AACgB,MAAf,eAAe;AACf;AACA,QAAM,CAAC,GAAG,KAAK,QAAf;;AACA,QAAI,CAAC,KAAK,EAAV,EAAc;AACV,aAAO,GAAP;AACH,KAFD,MAEO,IAAI,CAAC,KAAK,GAAV,EAAe;AAClB,aAAO,GAAP;AACH,KAFM,MAEA,IAAI,CAAC,KAAK,GAAV,EAAe;AAClB,aAAO,GAAP;AACH,KAFM,MAEA,IAAI,CAAC,KAAK,IAAV,EAAgB;AACnB,aAAO,IAAP;AACH,KAFM,MAEA,IAAI,CAAC,KAAK,IAAV,EAAgB;AACnB,aAAO,IAAP;AACH,KAFM,MAEA,IAAI,CAAC,KAAK,KAAV,EAAiB;AACpB,aAAO,KAAP;AACH,KAFM,MAEA,IAAI,CAAC,KAAK,KAAV,EAAiB;AACpB,aAAO,KAAP;AACH,KAFM,MAEA;AACH,YAAM,IAAI,2DAAJ,CAAqB,+BAA+B,CAApD,CAAN;AACH;AACJ;AAED;;;;;;AAMG;;;AACgB,MAAf,eAAe;AACf,WAAO,KAAK,gBAAZ;AACH;;AAtMiD;AAyMtD;;;AAGG;;AACI,IAAM,UAAU,GAAG;AACtB,GAAC,EAAE,CADmB;AAChB,GAAC,EAAE,CADa;AACV,GAAC,EAAE,CADO;AACJ,GAAC,EAAE,CADC;AACE,GAAC,EAAE,CADL;AACQ,GAAC,EAAE,CADX;AACc,GAAC,EAAE;AADjB,CAAnB;AAIP;;;AAGG;;AACI,IAAM,WAAW,GAAG;AACvB,GAAC,EAAE,CADoB;AACjB,GAAC,EAAE,CADc;AACX,GAAC,EAAE,CADQ;AACL,GAAC,EAAE,CADE;AACC,GAAC,EAAE,CADJ;AACO,GAAC,EAAE,CADV;AACa,GAAC,EAAE;AADhB,CAApB;AAIP;;;AAGG;;AACI,IAAM,WAAW,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,EAA0B,GAA1B,EAA+B,GAA/B,CAApB;AAEP;;;AAGG;;AACI,IAAM,UAAU,GAAG,CACtB,GADsB,EAEtB,IAFsB,EAGtB,GAHsB,EAItB,IAJsB,EAKtB,GALsB,EAMtB,GANsB,EAOtB,IAPsB,EAQtB,GARsB,EAStB,IATsB,EAUtB,GAVsB,EAWtB,IAXsB,EAYtB,GAZsB,CAAnB;AAeP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCG;;AACG,MAAO,KAAP,SAAqB,oDAArB,CAA2C;AAQ7C,cAAY,KAAkB,GAA9B,EAAiC;AAC7B;AAPM,iBAAgB,GAAhB;AACA,mBAAkB,CAAlB;AAEV,8BAA8B,KAA9B;AACA,qBAAY,SAAZ;AAKI;;AACA,QAAI,OAAO,EAAP,KAAc,QAAlB,EAA4B;AACxB,UAAI,EAAE,GAAG,EAAT,EAAa;AACT,UAAE,IAAI,EAAN,CADS,CACC;AACb;;AACD,WAAK,EAAL,GAAU,EAAV;AACH,KALD,MAKO,IAAI,EAAE,CAAC,KAAH,CAAS,KAAT,CAAJ,EAAqB;AACxB,WAAK,cAAL,GAAsB,EAAtB;AACH,KAFM,MAEA;AACH,WAAK,IAAL,GAAY,EAAZ;AACH;AACJ;;AArBmB,aAAT,SAAS;AAAK,WAAO,qBAAP;AAA+B;;AAuBxD,YAAU;AACN,WAAO,KAAK,cAAZ;AACH,GA1B4C,CA4B7C;;;AAEQ,MAAJ,IAAI;AACJ,WAAO,KAAK,KAAZ;AACH;;AAEO,MAAJ,IAAI,CAAC,CAAD,EAAU;AACd,QAAI,CAAC,KAAK,EAAV,EAAc;AACV,YAAM,IAAI,SAAJ,CAAc,4BAAd,CAAN;AACH;;AACD,QAAI,OAAO,CAAP,KAAa,QAAjB,EAA2B;AACvB,YAAM,IAAI,SAAJ,CAAc,uBAAd,CAAN;AACH;;AACD,KAAC,GAAG,CAAC,CAAC,WAAF,EAAJ;;AACA,QAAI,CAAC,WAAW,CAAC,QAAZ,CAAqB,CAArB,CAAL,EAA8B;AAC1B,YAAM,IAAI,SAAJ,WAAiB,CAAjB,gCAAN;AACH;;AACD,SAAK,KAAL,GAAa,CAAb;AACA,SAAK,kBAAL,GAA0B,KAA1B;AACH;;AAES,MAAN,MAAM;AACN,WAAO,KAAK,OAAZ;AACH;;AAES,MAAN,MAAM,CAAC,CAAD,EAAU;AAChB,SAAK,OAAL,GAAe,CAAf;AACH;;AAEiB,MAAd,cAAc;AACd,QAAM,CAAC,GAAG,KAAK,OAAf;;AACA,QAAI,CAAC,KAAK,SAAV,EAAqB;AACjB,aAAO,CAAP,CADiB,CACP;AACb,KAFD,MAEO;AACH,aAAO,CAAP;AACH;AACJ;;AAEa,MAAV,UAAU;AACV,WAAO,KAAK,WAAZ;AACH;;AAEa,MAAV,UAAU,CAAC,CAAD,EAAwB;AAClC,SAAK,WAAL,GAAmB,CAAnB;AACA,SAAK,kBAAL,GAA0B,KAA1B;AACH;;AAEO,MAAJ,IAAI;AACJ,QAAM,CAAC,GAAG,KAAK,UAAf;;AACA,QAAI,CAAC,KAAK,SAAV,EAAqB;AACjB,aAAO,KAAK,IAAZ;AACH,KAFD,MAEO;AACH,aAAO,KAAK,IAAL,GAAY,CAAC,CAAC,QAArB;AACH;AACJ;;AAEO,MAAJ,IAAI,CAAC,EAAD,EAAW;AACf,SAAK,IAAL,GAAY,EAAE,CAAC,KAAH,CAAS,CAAT,EAAY,CAAZ,CAAZ;AACA,QAAM,cAAc,GAAG,EAAE,CAAC,KAAH,CAAS,CAAT,CAAvB;;AACA,QAAI,cAAJ,EAAoB;AAChB;AACA,WAAK,UAAL,GAAkB,IAAI,UAAJ,CAAe,cAAf,CAAlB;AACH,KAHD,MAGO;AACH,WAAK,UAAL,GAAkB,SAAlB;AACH;AACJ;;AAEiB,MAAd,cAAc;AACd,WAAO,KAAK,IAAL,GAAY,KAAK,MAAL,CAAY,QAAZ,EAAnB;AACH;;AAEiB,MAAd,cAAc,CAAC,EAAD,EAAW;AACzB,QAAM,YAAY,GAAG,EAAE,CAAC,KAAH,CAAS,KAAT,CAArB;;AACA,QAAI,YAAY,KAAK,SAArB,EAAgC;AAC5B,QAAE,GAAG,EAAE,CAAC,OAAH,CAAW,KAAX,EAAkB,EAAlB,CAAL;AACA,WAAK,MAAL,GAAc,QAAQ,CAAC,YAAY,CAAC,CAAD,CAAb,CAAtB;AACA,WAAK,IAAL,GAAY,EAAZ;AACH,KAJD,MAIO;AACH,WAAK,IAAL,GAAY,EAAZ;AACH;AACJ;AAED;;;;AAIG;;;AACW,MAAV,UAAU;AACV,WAAO,4CAAc,IAAI,CAAC,KAAL,CAAW,KAAK,EAAhB,CAAd,EAAmC,EAAnC,CAAP;AACH;AAED;;;AAGG;;;AACgB,MAAf,eAAe;AACf,WAAO,KAAK,MAAL,GAAc,CAAd,GAAkB,WAAW,CAAC,KAAK,IAAN,CAA7B,GAA2C,CAAlD;AACH;;AAEkB,MAAf,eAAe,CAAC,MAAD,EAAO;AACtB,UAAM,IAAI,CAAV,CADsB,CACT;;AACb,SAAK,MAAL,GAAc,IAAI,CAAC,KAAL,CAAW,MAAM,GAAG,CAApB,CAAd;AACA,QAAM,OAAO,GAAG,4CAAc,IAAI,CAAC,KAAL,CAAW,MAAX,CAAd,EAAkC,CAAlC,CAAhB;AACA,SAAK,IAAL,GAAY,WAAW,CAAC,OAAD,CAAvB;AACH;AAED;;;;AAIG;;;AACU,MAAT,SAAS;AACT,WAAO,OAAO,YAAM,KAAK,EAAL,GAAU,EAAhB,IAAsB,EAA7B,CAAP;AACH;AAED;;;;AAIG;;;AACK,MAAJ,IAAI;AACJ,WAAO,IAAI,CAAC,KAAL,CAAW,KAAK,EAAhB,CAAP;AACH;AAED;;;AAGG;;;AACG,MAAF,EAAE;AACF,QAAI,eAAe,GAAG,CAAtB;;AACA,QAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,qBAAe,GAAG,KAAK,UAAL,CAAgB,KAAlC;AACH;;AACD,WACI,CAAC,KAAK,MAAL,GAAc,CAAf,IAAoB,EAApB,GACE,UAAU,CAAC,KAAK,IAAN,CADZ,GAEE,eAHN;AAKH;;AAEK,MAAF,EAAE,CAAC,EAAD,EAAG;AACL,SAAK,IAAL,GAAY,UAAU,CAAC,4CAAc,EAAd,EAAkB,EAAlB,CAAD,CAAtB;AACA,SAAK,MAAL,GAAc,IAAI,CAAC,KAAL,CAAW,EAAE,GAAG,EAAhB,IAAsB,CAApC;AACA,SAAK,kBAAL,GAA0B,IAA1B;AACH;AAED;;;AAGG;;;AACY,MAAX,WAAW;AACX,QAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,aAAO,KAAK,IAAL,GAAY,KAAK,UAAL,CAAgB,eAAnC;AACH,KAFD,MAEO;AACH,aAAO,KAAK,IAAZ;AACH;AACJ;AAED;;;AAGG;;;AACsB,MAArB,qBAAqB;AACrB,QAAI,KAAK,MAAL,KAAgB,SAApB,EAA+B;AAC3B,aAAO,KAAK,WAAZ;AACH,KAFD,MAEO;AACH,aAAO,KAAK,WAAL,GAAmB,KAAK,MAAL,CAAY,QAAZ,EAA1B;AACH;AACJ;AAED;;;;AAIG;;;AACH,sBAAoB,CAAC,OAAO,GAAC,KAAT,EAAgB,YAAhB,EAA4B;AAC5C;AACA;AACA,QAAI,YAAY,GAAG,IAAnB;;AACA,QAAI,KAAK,MAAL,KAAgB,SAApB,EAA+B;AAC3B,kBAAY,GAAG,KAAf;AACH;;AACD,QAAM,CAAC,GAAG,KAAK,KAAL,EAAV;AACA,KAAC,CAAC,eAAF,IAAqB,YAArB;;AACA,QAAI,CAAC,CAAC,UAAF,KAAiB,SAArB,EAAgC;AAC5B,OAAC,CAAC,UAAF,GAAe,IAAI,UAAJ,CAAe,CAAf,CAAf;AACH;;AACD,WAAO,CAAC,CAAC,EAAF,GAAO,EAAP,KAAc,KAAK,EAAL,GAAU,EAA/B,EAAmC;AAAE;AACjC;AACA;AACA,OAAC,CAAC,UAAF,CAAa,KAAb,GAAqB,CAAC,CAAC,UAAF,CAAa,KAAb,GAAsB,CAAC,CAAD,GAAK,YAAhD;AACH;;AAED,QAAI,CAAC,OAAL,EAAc;AACV,aAAO,CAAP;AACH;;AACD,SAAK,IAAL,GAAY,CAAC,CAAC,IAAd;AACA,SAAK,UAAL,GAAkB,CAAC,CAAC,UAApB;;AACA,QAAI,CAAC,CAAC,SAAF,KAAgB,SAApB,EAA+B;AAC3B,WAAK,SAAL,GAAiB,CAAC,CAAC,SAAnB;AACH;;AACD,QAAI,CAAC,YAAL,EAAmB;AACf,WAAK,MAAL,GAAc,SAAd;AACH,KAFD,MAEO;AACH,WAAK,MAAL,GAAc,CAAC,CAAC,MAAhB;AACH;;AACD,WAAO,CAAP;AACH;AAED;;;;AAIG;;;AACH,qBAAmB,CAAC,OAAO,GAAC,KAAT,EAAc;AAC7B,WAAO,KAAK,oBAAL,CAA0B,OAA1B,EAAmC,CAAnC,CAAP;AACH;AAED;;;;AAIG;;;AACH,oBAAkB,CAAC,OAAO,GAAC,KAAT,EAAc;AAC5B,WAAO,KAAK,oBAAL,CAA0B,OAA1B,EAAmC,CAAC,CAApC,CAAP;AACH;AACD;;;AAEU,qBAAmB,CAAC,cAAD,EAAwB;AACjD,SAAK,IAAM,CAAX,IAAgB,cAAhB,EAAgC;AAAG;AAC/B,UAAI,CAAC,CAAC,IAAF,KAAW,KAAK,IAApB,EAA0B;AAAG;AACzB,YAAI,CAAC,CAAC,UAAF,CAAa,IAAb,KAAsB,KAAK,UAAL,CAAgB,IAA1C,EAAgD;AAC5C,iBAAO,IAAP;AACH;AACJ;AACJ;;AACD,WAAO,KAAP;AACH;;AAES,qBAAmB,CAAC,cAAD,EAAwB;AACjD,SAAK,IAAM,CAAX,IAAgB,cAAhB,EAAgC;AAAG;AAC/B,UAAI,CAAC,CAAC,IAAF,KAAW,KAAK,IAApB,EAA0B;AAAG;AACzB,eAAO,IAAP;AACH;AACJ;;AACD,WAAO,KAAP;AACH,GAlR4C,CAoR7C;;;AACA,yBAAuB,CACnB;AACI,aAAS,GAAG,EADhB;AAEI,oBAAgB,GAAG,EAFvB;AAGI,kBAAc,GAAG,EAHrB;AAII,wBAAoB,GAAG,IAJ3B;AAKI,iBAAa,GAAG,KALpB;AAMI,kBAAc,GAAG,KANrB;AAOI,gCAA4B,GAAG,IAPnC;AAQI,mBAAe,GAAG;AARtB,MASmC,EAVhB,EAUkB;AAErC;AACA;AACA;WAJqC,CAMrC;AACA;;;AACA,QAAI,wCAAwC,GAAG,KAA/C;AACA,QAAM,YAAY,GAAY,CAAC,GAAG,gBAAJ,EAAsB,GAAG,SAAzB,CAA9B;AACA,QAAM,QAAQ,GAA2B,KAAK,UAA9C;AACA,QAAM,YAAY,GACd,KAAK,UAAL,KAAoB,SAApB,GACM,KAAK,UAAL,CAAgB,aADtB,GAEM,SAHV;AAKA,QAAI,0BAA0B,GAAG,KAAjC;;AAEA,QAAI,cAAc,KAAK,KAAvB,EAA8B;AAAG;AAC7B,UAAI,QAAQ,KAAK,SAAjB,EAA4B,CACxB;AACH,OAFD,MAEO,IAAI,YAAY,KAAK,SAArB,EAAgC,CACnC;AACA;AACH,OAHM,MAGA,IAAI,YAAY,KAAK,IAAjB,IAAyB,YAAY,KAAK,KAA9C,EAAqD;AACxD,eADwD,CAC/C;AACZ;AACJ;;AACD,QAAI,eAAe,KAAK,IAAxB,EAA8B;AAC1B,UAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,YAAI,KAAK,UAAL,CAAgB,WAAhB,KAAgC,WAApC,EAAiD;AAC7C,eAAK,UAAL,CAAgB,aAAhB,GAAgC,KAAhC;AACH,SAFD,MAEO;AACH,eAAK,UAAL,CAAgB,aAAhB,GAAgC,IAAhC;AACH;;AACD;AACH,OAPD,MAOO;AACH,eADG,CACM;AACZ;AACJ,KAvCoC,CAyCrC;AACA;;;AACA,QAAI,YAAY,CAAC,MAAb,KAAwB,CAA5B,EAA+B;AAC3B;AACA;AACA,UAAI,QAAQ,KAAK,SAAb,KACI,YAAY,KAAK,KAAjB,IACG,YAAY,KAAK,SAFxB,CAAJ,EAEwC;AACpC,YAAI,CAAC,KAAK,mBAAL,CAAyB,cAAzB,CAAL,EAA+C;AAC3C,eAAK,UAAL,CAAgB,aAAhB,GAAgC,IAAhC;AACH,SAFD,MAEO;AACH,eAAK,UAAL,CAAgB,aAAhB,GAAgC,KAAhC;AACH;AACJ,OARD,MAQO,IAAI,YAAK,UAAL,MAAe,IAAf,IAAe,aAAf,GAAe,MAAf,GAAe,GAAE,aAAjB,MAAmC,IAAnC,IACJ,KAAK,mBAAL,CAAyB,cAAzB,CADA,EAC0C;AAC7C;AACA,aAAK,UAAL,CAAgB,aAAhB,GAAgC,KAAhC;AAEH,OALM,MAKA,IAAI,CAAC,KAAK,UAAL,KAAoB,SAApB,IACK,KAAK,UAAL,CAAgB,IAAhB,KAAyB,SAD/B,KAEI,KAAK,mBAAL,CAAyB,cAAzB,CAFR,EAEkD;AACrD;AACA;AACA;AACA,YAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,eAAK,UAAL,GAAkB,IAAI,UAAJ,CAAe,SAAf,CAAlB;AACH;;AACD,aAAK,UAAL,CAAgB,aAAhB,GAAgC,IAAhC;AACH;;AACD,aA3B2B,CA2BnB;AACX,KAvEoC,CAyErC;AACA;AACA;;;AACA,SAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAV,GAAmB,CAAhC,EAAmC,CAAC,IAAI,CAAxC,EAA2C,CAAC,EAA5C,EAAgD;AAC5C,UAAM,SAAS,GAAG,SAAS,CAAC,CAAD,CAA3B;;AACA,UAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,cAAM,IAAI,KAAJ,mCAAqC,CAArC,EAAN;AACH;;AAED,UAAI,SAAS,CAAC,IAAV,KAAmB,KAAK,IAAxB,IAAgC,SAAS,CAAC,MAAV,KAAqB,KAAK,MAA9D,EAAsE;AAClE,YAAI,SAAS,CAAC,IAAV,KAAmB,KAAK,IAA5B,EAAkC;AAAG;AACjC,cAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,iBAAK,UAAL,GAAkB,IAAI,UAAJ,CAAe,SAAf,CAAlB;AACH;;AACD,eAAK,UAAL,CAAgB,aAAhB,GAAgC,IAAhC;AACA;AACH,SAND,MAMO;AAAG;AACN;AACH;AACJ;AACJ,KA7FoC,CA8FrC;AAEA;AACA;AACA;;;AACA,QAAI,aAAa,KAAK,IAAlB,IACI,KAAK,UAAL,KAAoB,SAApB,IACG,CAAC,WAAD,EAAc,QAAd,EAAwB,QAAxB,CAAiC,KAAK,UAAL,CAAgB,WAAjD,CAFX,EAE2E;AACvE;AACA,UAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,aAAK,UAAL,GAAkB,IAAI,UAAJ,CAAe,SAAf,CAAlB;AACH,OAJsE,CAKvE;;;AACA,WAAK,UAAL,CAAgB,aAAhB,GAAgC,IAAhC;AACA,aAPuE,CAO9D;AACZ,KA7GoC,CA+GrC;;;AACA,QAAI,gBAAgB,GAAG,KAAvB;AAEA,QAAI,KAAJ;;AACA,QAAI,oBAAoB,KAAK,IAA7B,EAAmC;AAAG;AAClC,WAAK,GAAG,IAAI,KAAJ,CAAU,KAAK,IAAf,CAAR;AACA,WAAK,CAAC,UAAN,GAAmB,KAAK,UAAxB;AACH,KAHD,MAGO;AACH,WAAK,GAAG,IAAR;AACH,KAxHoC,CAyHrC;;;AACA,QAAM,kBAAkB,GAAG,gBAAgB,CAAC,MAA5C,CA1HqC,CA4HrC;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;;AACA,SAAK,IAAI,EAAC,GAAG,YAAY,CAAC,MAAb,GAAsB,CAAnC,EAAsC,EAAC,IAAI,CAA3C,EAA8C,EAAC,EAA/C,EAAmD;AAC/C;AACA,UAAI,cAAuB,SAA3B;;AAEA,UAAI,EAAC,GAAG,kBAAR,EAA4B;AACxB,sBAAc,GAAG,KAAjB;AACA,kCAA0B,GAAG,KAA7B;AACH,OAHD,MAGO;AACH,sBAAc,GAAG,IAAjB;AACA,YAAI,MAAM,GAAG,KAAb,CAFG,CAEkB;;AACrB,aAAK,IAAI,CAAC,GAAG,EAAb,EAAgB,CAAC,GAAG,YAAY,CAAC,MAAjC,EAAyC,CAAC,EAA1C,EAA8C;AAC1C;AACA,cAAI,YAAY,CAAC,CAAD,CAAZ,CAAgB,cAAhB,KAAmC,KAAK,cAA5C,EAA4D;AACxD,sCAA0B,GAAG,KAA7B;AACA,kBAAM,GAAG,IAAT;AACA;AACH;AACJ;;AACD,YAAI,CAAC,MAAL,EAAa;AACT,oCAA0B,GAAG,IAA7B;AACH;AACJ,OArB8C,CAsB/C;AACA;AACA;;;AACA,UAAI,cAAc,KAAK,KAAnB,IACO,KAAK,UAAL,KAAoB,SAD3B,IAEO,CAAC,KAAK,mBAAL,CAAyB,cAAzB,CAFZ,EAEsD;AAClD,aAAK,UAAL,CAAgB,aAAhB,GAAgC,IAAhC;AACA,eAFkD,CAEzC;AACZ,OA9B8C,CA+B/C;AACA;;;AACA,UAAI,KAAY,SAAhB;;AAEA,UAAI,oBAAoB,KAAK,IAA7B,EAAmC;AAAG;AAClC,aAAK,GAAG,IAAI,KAAJ,CAAU,YAAY,CAAC,EAAD,CAAZ,CAAgB,IAA1B,CAAR,CAD+B,CAE/B;AACA;;AACA,aAAK,CAAC,UAAN,GAAmB,YAAY,CAAC,EAAD,CAAZ,CAAgB,UAAnC;AACH,OALD,MAKO;AAAG;AACN,aAAK,GAAG,YAAY,CAAC,EAAD,CAApB;AACH,OA1C8C,CA2C/C;;;AACA,UAAI,KAAK,CAAC,IAAN,KAAe,KAAK,CAAC,IAAzB,EAA+B;AAC3B;AACH,OA9C8C,CA+C/C;AACA;;;AACA,UAAI,WAAoB,SAAxB;;AACA,UAAI,KAAK,MAAL,KAAgB,YAAY,CAAC,EAAD,CAAZ,CAAgB,MAApC,EAA4C;AACxC,mBAAW,GAAG,IAAd;AACH,OAFD,MAEO;AACH,mBAAW,GAAG,KAAd;AACH,OAtD8C,CAuD/C;AACA;;;AACA,UAAI,0BAA0B,KAAK,IAA/B,IACG,KAAK,CAAC,UAAN,KAAqB,SADxB,IAEG,KAAK,CAAC,UAAN,CAAiB,aAAjB,KAAmC,IAF1C,EAEgD;AAC5C;AACA,YAAI,KAAK,CAAC,UAAN,KAAqB,SAAzB,EAAoC;AAChC,cAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,iBAAK,UAAL,CAAgB,aAAhB,GAAgC,KAAhC;AACH;AACJ;;AACD;AAEH,OAXD,MAWO,IAAI,0BAA0B,KAAK,IAA/B,IACI,KAAK,CAAC,UAAN,KAAqB,SADzB,IAEI,KAAK,CAAC,UAAN,KAAqB,SAFzB,IAGI,KAAK,CAAC,UAAN,CAAiB,IAAjB,KAA0B,KAAK,CAAC,UAAN,CAAiB,IAHnD,EAGyD;AAC5D;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA,YAAI,KAAK,mBAAL,CAAyB,cAAzB,MAA6C,KAA7C,KACI,WAAW,KAAK,KAAhB,IACG,KAAK,CAAC,UAAN,CAAiB,aAAjB,KAAmC,KAF1C,CAAJ,EAEsD;AAClD,kDAAwC,GAAG,IAA3C,CADkD,CAElD;;AACA,mBAHkD,CAGvC;AACd,SAND,MAMO;AACH,eAAK,UAAL,CAAgB,aAAhB,GAAgC,KAAhC;AACA,0BAAgB,GAAG,IAAnB;AACA;AACH,SApB2D,CAqB5D;AACA;;AACH,OA1BM,MA0BA,IAAI,KAAK,CAAC,UAAN,KAAqB,SAArB,IACI,KAAK,CAAC,UAAN,CAAiB,IAAjB,KAA0B,SAD9B,KAEK,KAAK,CAAC,UAAN,KAAqB,SAArB,IACG,KAAK,CAAC,UAAN,CAAiB,IAAjB,KAA0B,SAHlC,CAAJ,EAGkD;AACrD,YAAI,0BAA0B,KAAK,IAAnC,EAAyC;AAAG;AACxC;AACA;AACA,cAAI,KAAK,mBAAL,CAAyB,cAAzB,MAA6C,IAA7C,IACG,WAAW,KAAK,KADvB,EAC8B;AAC1B,gBAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,mBAAK,UAAL,GAAkB,IAAI,UAAJ,CAAe,SAAf,CAAlB;AACH;;AACD,iBAAK,UAAL,CAAgB,aAAhB,GAAgC,IAAhC;AACH,WAND,MAMO;AACH,gBAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,mBAAK,UAAL,CAAgB,aAAhB,GAAgC,KAAhC;AACH;AACJ,WAboC,CAcrC;AACA;;AACH,SAhBD,MAgBO,IAAI,KAAK,mBAAL,CAAyB,cAAzB,MAA6C,IAA7C,IACJ,4BAA4B,KAAK,IADjC,EACuC;AAC1C,cAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,iBAAK,UAAL,GAAkB,IAAI,UAAJ,CAAe,SAAf,CAAlB;AACH;;AACD,eAAK,UAAL,CAAgB,aAAhB,GAAgC,IAAhC,CAJ0C,CAM1C;AACA;AACA;AACH,SAVM,MAUA,IAAI,KAAK,mBAAL,CAAyB,cAAzB,MAA6C,IAA7C,IACJ,4BAA4B,KAAK,KAD7B,IAEJ,cAAc,KAAK,KAFnB,EAE0B;AAC7B,cAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,iBAAK,UAAL,GAAkB,IAAI,UAAJ,CAAe,SAAf,CAAlB;AACH;;AACD,eAAK,UAAL,CAAgB,aAAhB,GAAgC,IAAhC,CAJ6B,CAM7B;AACA;AACH,SAVM,MAUA;AACH,cAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,iBAAK,UAAL,CAAgB,aAAhB,GAAgC,KAAhC;AACH;AACJ;;AACD,wBAAgB,GAAG,IAAnB;AACA,cA3CqD,CA6CrD;AACA;AACH,OAlDM,MAkDA,IAAI,KAAK,CAAC,UAAN,KAAqB,SAArB,IACI,KAAK,CAAC,UAAN,CAAiB,IAAjB,KAA0B,SAD9B,KAEK,KAAK,CAAC,UAAN,KAAqB,SAArB,IACG,KAAK,CAAC,UAAN,CAAiB,aAAjB,KAAmC,KAH3C,CAAJ,EAGuD;AAC1D,YAAI,WAAW,KAAK,KAAhB,IAAyB,oBAAoB,KAAK,KAAtD,EAA6D;AACzD;AACH;;AACD,YAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,eAAK,UAAL,GAAkB,IAAI,UAAJ,CAAe,SAAf,CAAlB;AACH;;AACD,aAAK,UAAL,CAAgB,aAAhB,GAAgC,IAAhC;AACA,wBAAgB,GAAG,IAAnB;AACA,cAT0D,CAW1D;AACH,OAfM,MAeA,IAAI,CAAC,KAAK,CAAC,UAAN,KAAqB,SAArB,IACO,KAAK,CAAC,UAAN,CAAiB,IAAjB,KAA0B,SADlC,KAEI,KAAK,CAAC,UAAN,KAAqB,SAFzB,IAGI,KAAK,CAAC,UAAN,CAAiB,IAAjB,KAA0B,SAHlC,EAG6C;AAChD;AACA,aAAK,UAAL,CAAgB,aAAhB,GAAgC,IAAhC,CAFgD,CAET;;AACvC,wBAAgB,GAAG,IAAnB;AACA,cAJgD,CAMhD;AACH,OAVM,MAUA,IAAI,KAAK,CAAC,UAAN,KAAqB,SAArB,IACI,KAAK,CAAC,UAAN,KAAqB,SADzB,IAEI,KAAK,CAAC,UAAN,CAAiB,IAAjB,KAA0B,KAAK,CAAC,UAAN,CAAiB,IAFnD,EAEyD;AAC5D;AACA,aAAK,UAAL,CAAgB,aAAhB,GAAgC,IAAhC,CAF4D,CAErB;;AACvC,wBAAgB,GAAG,IAAnB;AACA,cAJ4D,CAM5D;AACA;AACA;AACH,OAXM,MAWA,IAAI,KAAK,CAAC,UAAN,KAAqB,SAArB,IAAkC,KAAK,CAAC,UAAN,KAAqB,SAA3D,EAAsE;AACzE;AACA,aAAK,UAAL,CAAgB,aAAhB,GAAgC,IAAhC,CAFyE,CAElC;AACvC;;AACA,wBAAgB,GAAG,IAAnB;AACA,cALyE,CAOzE;AACA;AACA;AACH,OAVM,MAUA,IAAI,0BAA0B,KAAK,KAA/B,IACI,KAAK,CAAC,UAAN,KAAqB,SADzB,IAEI,KAAK,CAAC,UAAN,KAAqB,SAFzB,IAGI,KAAK,CAAC,UAAN,CAAiB,IAAjB,KAA0B,KAAK,CAAC,UAAN,CAAiB,IAH/C,IAII,WAAW,KAAK,IAJxB,EAI8B;AACjC,YAAI,4BAA4B,KAAK,KAAjC,IACO,KAAK,CAAC,UAAN,CAAiB,aAAjB,KAAmC,KAD9C,EACqD;AACjD;AACA;AACA;AACA;AACA,eAAK,UAAL,CAAgB,aAAhB,GAAgC,KAAhC;AACA,kDAAwC,GAAG,KAA3C;AACA,0BAAgB,GAAG,IAAnB;AACA;AACH,SAVD,MAUO,IAAI,KAAK,CAAC,UAAN,CAAiB,aAAjB,KAAmC,KAAvC,EAA8C;AACjD;AACA,kDAAwC,GAAG,IAA3C;AACH,SAHM,MAGA;AACH,cAAI,CAAC,KAAK,mBAAL,CAAyB,cAAzB,CAAL,EAA+C;AAC3C,iBAAK,UAAL,CAAgB,aAAhB,GAAgC,IAAhC;AACH,WAFD,MAEO;AACH,iBAAK,UAAL,CAAgB,aAAhB,GAAgC,KAAhC;AACH;;AACD,0BAAgB,GAAG,IAAnB;AACA;AACH;AACJ;AACJ,KAjWoC,CAkWrC;AACA;AACA;;;AACA,QAAI,wCAAwC,KAAK,IAAjD,EAAuD;AACnD;AACA;AACA,UAAI,KAAK,mBAAL,CAAyB,cAAzB,MAA6C,KAAjD,EAAwD;AACpD,YAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,eAAK,UAAL,GAAkB,IAAI,UAAJ,CAAe,SAAf,CAAlB;AACH;;AACD,aAAK,UAAL,CAAgB,aAAhB,GAAgC,IAAhC;AACH,OALD,MAKO;AACH,aAAK,UAAL,CAAgB,aAAhB,GAAgC,KAAhC;AACH,OAVkD,CAWnD;;AACH,KAZD,MAYO,IAAI,CAAC,gBAAD,IAAqB,KAAK,UAAL,KAAoB,SAA7C,EAAwD;AAC3D,UAAI,CAAC,KAAK,mBAAL,CAAyB,cAAzB,CAAL,EAA+C;AAC3C,aAAK,UAAL,CAAgB,aAAhB,GAAgC,IAAhC;AACH,OAFD,MAEO;AACH,aAAK,UAAL,CAAgB,aAAhB,GAAgC,KAAhC;AACH,OAL0D,CAM3D;;AACH,KAPM,MAOA,IAAI,CAAC,gBAAD,IAAqB,KAAK,UAAL,KAAoB,SAA7C,EAAwD;AAC3D,UAAI,KAAK,mBAAL,CAAyB,cAAzB,CAAJ,EAA8C;AAC1C,aAAK,UAAL,GAAkB,IAAI,UAAJ,CAAe,SAAf,CAAlB;AACA,aAAK,UAAL,CAAgB,aAAhB,GAAgC,IAAhC;AACH;AACJ;AACJ;AAID;;;;;;;AAOG;;;AACH,aAAW,CAAC,OAAO,GAAC,SAAT,EAAkB;AACzB;AACA,QAAI,SAAS,GAAG,IAAhB;;AACA,QAAI,OAAO,KAAK,SAAhB,EAA2B;AACvB,UAAI;AACA,iBAAS,GAAG,OAAO,CAAC,oBAAR,CAA6B,IAA7B,CAAZ;AACH,OAFD,CAEE,OAAO,CAAP,EAAU;AACR,eAAO,CAAC,GAAR,CAAY,CAAZ,EAAe,OAAf;AACH;AACJ;;AACD,QAAI,cAAc,GAAG,GAArB;;AACA,QAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,UAAI,CAAC,CAAD,EAAI,CAAC,CAAL,EAAQ,CAAC,CAAT,EAAY,CAAZ,EAAe,CAAf,EAAkB,QAAlB,CAA2B,KAAK,UAAL,CAAgB,KAA3C,CAAJ,EAAuD;AACnD,sBAAc,GAAG,KAAK,UAAL,CAAgB,eAAjC;AACH,OAFD,MAEO;AACH,eAAO,CAAC,IAAR,CAAa,6BAA6B,KAAK,UAA/C;AACH;AACJ;;AACD,QAAM,OAAO,GACP,SAAS,CAAC,IAAV,GAAiB,cAAjB,GAAkC,GAAlC,GAAwC,SAAS,CAAC,MADxD;AAEA,WAAO,OAAP;AACH;;AA9rB4C,C;;;;;;;;;;;;;;;;;;;;;;AC/TjD;;;;;;;;AAQG;;AAUH;;;;;;;;;;;;AAYG;AACG,MAAO,cAAP,CAAqB;AASvB;AAJA,4BAA4B,IAA5B;AACA,2BAA2B,KAA3B;AACU,2BAAuB,EAAvB,CAEV,CACI;AACA;AACA;;AACA,SAAK,GAAL,GAAW,KAAK,OAAL,CAAa,CAAb,CAAX;AACH;;AAbmB,aAAT,SAAS;AAAK,WAAO,gCAAP;AAA0C;;AAevD,MAAR,QAAQ;AACR,QAAI,KAAK,eAAL,KAAyB,SAA7B,EAAwC;AACpC,aAAO,KAAK,eAAZ;AACH;;AACD,SAAK,oBAAL;;AACA,WAAO,KAAK,eAAZ;AACH;AAED;;;AAGG;;;AACQ,MAAP,OAAO;AACP,QAAI,KAAK,cAAL,KAAwB,SAA5B,EAAuC;AACnC,aAAO,KAAK,cAAZ;AACH;;AACD,SAAK,oBAAL;;AACA,WAAO,KAAK,cAAZ;AACH;AAED;;;;AAIG;;;AACK,sBAAoB;AACxB,QAAM,QAAQ,GAAG,IAAI,GAAJ,EAAjB;AACA,QAAM,SAAS,GAAG,EAAlB;AACA,QAAI,eAAe,GAAwC,KAAK,WAAhE;AACA,QAAI,QAAQ,GAAG,EAAf;;AACA,WACI,eAAe,KAAK,SAApB,IACG,QAFP,EAGE;AACE,cAAQ,IAAI,CAAZ;AACA,UAAM,eAAe,GAAG,eAAe,CAAC,SAAxC;;AACA,UAAI,eAAe,KAAK,SAApB,IAAiC,eAAe,KAAK,EAAzD,EAA6D;AACzD;AACH;;AACD,UAAM,oBAAoB,GAAG,eAAe,CAAC,KAAhB,CAAsB,eAAe,CAAC,WAAhB,CAA4B,GAA5B,IAAmC,CAAzD,CAA7B;AACA,eAAS,CAAC,IAAV,CAAe,oBAAf;AACA,cAAQ,CAAC,GAAT,CAAa,eAAb;AACA,cAAQ,CAAC,GAAT,CAAa,eAAb;AACA,cAAQ,CAAC,GAAT,CAAa,oBAAb;AACA,qBAAe,GAAG,MAAM,CAAC,cAAP,CAAsB,eAAtB,CAAlB;AACH;;AACD,aAAS,CAAC,IAAV,CAAe,QAAf;AACA,SAAK,cAAL,GAAsB,SAAtB;AACA,SAAK,eAAL,GAAuB,QAAvB;AACH;AAED;;;;;;;;;;;;;;;;AAgBG;;;AACH,OAAK,CAAC,IAAI,GAAC,IAAN,EAAY,IAAI,GAAC,SAAjB,EAA0B;AAC3B;AACA,QAAM,gBAAgB,GAAmC,KAAK,WAA9D;AACA,QAAM,GAAG,GAAyB,IAAI,gBAAJ,EAAlC;;AACA,QAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,UAAI,GAAG,IAAI,OAAJ,EAAP;AACH,KAN0B,CAQ3B;;;AACA,SAAK,IAAM,GAAX,IAAkB,IAAlB,EAAwB;AACpB;AACA,UAAI,GAAG,cAAH,CAAkB,IAAlB,CAAuB,IAAvB,EAA6B,GAA7B,MAAsC,KAA1C,EAAiD;AAC7C;AACH;;AACD,UAAI,GAAG,IAAI,KAAK,eAAhB,EAAiC;AAC7B,YAAI,KAAK,eAAL,CAAqB,GAArB,MAA8B,IAAlC,EAAwC;AACpC,aAAG,CAAC,GAAD,CAAH,GAAW,KAAK,GAAL,CAAX;AACH,SAFD,MAEO,IAAI,KAAK,eAAL,CAAqB,GAArB,MAA8B,KAAlC,EAAyC;AAC5C,aAAG,CAAC,GAAD,CAAH,GAAW,SAAX;AACH,SAFM,MAEA;AACH;AACA,eAAK,eAAL,CAAqB,GAArB,EAA0B,GAA1B,EAA+B,GAA/B,EAAoC,IAApC,EAA0C,IAA1C,EAAgD,IAAhD;AACH;AACJ,OATD,MASO,IACH,MAAM,CAAC,wBAAP,CAAgC,IAAhC,EAAsC,GAAtC,EAA2C,GAA3C,KAAmD,SAAnD,IACG,MAAM,CAAC,wBAAP,CAAgC,IAAhC,EAAsC,GAAtC,EAA2C,GAA3C,KAAmD,SAFnD,EAGL,CACE;AACH,OALM,MAKA,IAAI,OAAO,KAAK,GAAL,CAAP,KAAqB,UAAzB,EAAqC,CACxC;AACH,OAFM,MAEA,IACH,IAAI,IACD,OAAO,KAAK,GAAL,CAAP,KAAqB,QADxB,IAEG,KAAK,GAAL,MAAc,IAFjB,IAG8B,KAAK,GAAL,EAAW,gBAJtC,EAKL;AACE;AACA,YAAM,MAAM,GAA6B,KAAK,GAAL,CAAzC;AACA,YAAI,aAAa,SAAjB;;AACA,YAAI,IAAI,CAAC,GAAL,CAAS,MAAT,CAAJ,EAAsB;AAClB,uBAAa,GAAG,IAAI,CAAC,GAAL,CAAS,MAAT,CAAhB;AACH,SAFD,MAEO;AACH,uBAAa,GAAG,MAAM,CAAC,KAAP,CAAa,IAAb,EAAmB,IAAnB,CAAhB;AACH;;AACD,WAAG,CAAC,GAAD,CAAH,GAAW,aAAX;AACH,OAfM,MAeA;AACH,YAAI;AACA;AACA;AACA,aAAG,CAAC,GAAD,CAAH,GAAW,KAAK,GAAL,CAAX;AACH,SAJD,CAIE,OAAO,CAAP,EAAU;AACR,cAAI,CAAC,YAAY,SAAjB,EAA4B;AACxB,mBAAO,CAAC,GAAR,CAAY,YAAZ,EAA0B,CAA1B,EAA6B,GAA7B,EADwB,CAExB;AACH,WAHD,MAGO;AACH,kBAAM,CAAN;AACH;AACJ;AACJ;AACJ;;AACD,WAAO,GAAP;AACH;AAED;;;;;;;;;;;;AAYG;;;AACH,mBAAiB,CACb,SADa,EAC6D;AAE1E,QAAI,YAAJ;;AACA,QAAI,EAAE,SAAS,YAAY,KAAvB,CAAJ,EAAmC;AAC/B,kBAAY,GAAG,CAAC,SAAD,CAAf;AACH,KAFD,MAEO;AACH,kBAAY,GAAG,SAAf;AACH;;AACD,SAAK,IAAM,aAAX,IAA4B,YAA5B,EAA0C;AACtC,UAAI,KAAK,QAAL,CAAc,GAAd,CAAkB,aAAlB,CAAJ,EAAsC;AAClC,eAAO,IAAP;AACH;AACJ;;AACD,WAAO,KAAP;AACH;AAED;;;AAGG;;;AACH,UAAQ;AACJ,QAAI,EAAE,GAAG,KAAK,UAAL,EAAT;;AACA,QAAI,EAAE,KAAK,EAAX,EAAe;AACX,QAAE,GAAG,MAAM,EAAX;AACH;;AACD,sBAAW,KAAK,OAAL,CAAa,CAAb,CAAX,SAA6B,EAA7B;AACH;AAED;;;AAGG;;;AACH,YAAU;AACN,WAAO,EAAP;AACH;;AAnMsB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/B3B;;;;;;;;;;;;;;;AAeG;;AAcH;;;;;;AAMG;AACG,MAAO,aAAP,CAAoB;AAA1B;AACI,uBAAuB,IAAvB;AACA,gCAAgC,IAAhC;AACA,+BAA+B,IAA/B;AAEA,uBAA2B;AACvB,OAAC,EAAE,GADoB;AAEvB,OAAC,EAAE;AAFoB,KAA3B;AAKA,eAAc,CAAd;AACA,gBAAe,SAAf;AACA,iBAAgB,SAAhB;AACA,2BAA0B,SAA1B;AACA,kBAAiB,SAAjB,CAdJ,CAgBI;AACA;;AACA,wBAAuB,CAAvB;AAEA,uBAAsB,CAAtB;AACA,qBAAoB,CAApB;AACA,wBAAuB,CAAvB,CAtBJ,CAwBI;AACA;AACA;;AACA,yBAAwB,CAAxB,CA3BJ,CA6BI;AACA;;AACA,0BAAyB,SAAzB;AAEA,wBAAuB,SAAvB;AACA,sBAAqB,CAArB;AACA,2BAA4B,CAAC,QAAD,EAAW,OAAX,CAA5B;AACA,wBAAuB,EAAvB,CApCJ,CAoC+B;;AAC3B,kBAAyB;AACrB,WAAK,EAAE,MADc;AAErB,cAAQ,EAAE;AAFW,KAAzB;AAMA,8BAA8B,IAA9B;AAEA,0BAA0B,KAA1B,CA7CJ,CA8CI;;AACA,wBAAwB,KAAxB;AACA,6BAA6B,SAA7B;AAEA,4BAA2B,EAA3B;AACA,+BAA8B,EAA9B;AACA,4BAA2B,EAA3B;AAsBH,GA1EyB,CAsDtB;;;AACmB,MAAf,eAAe;AACf,WAAO,KAAK,gBAAL,GAAwB,KAAK,mBAA7B,GAAmD,KAAK,gBAA/D;AACH;;AAED,WAAS;AACL;AACA,QAAM,GAAG,GAAG,IAAI,aAAJ,EAAZ;;AACA,SAAK,IAAM,CAAC,GAAD,EAAM,KAAN,CAAX,IAA2B,MAAM,CAAC,OAAP,CAAe,IAAf,CAA3B,EAAiD;AAC7C,UAAI,CAAC,aAAD,EAAgB,iBAAhB,EAAmC,QAAnC,EAA6C,QAA7C,CAAsD,GAAtD,CAAJ,EAAgE;AAC5D;AACH;;AACD,SAAG,CAAC,GAAD,CAAH,GAAW,KAAX;AACH;;AACD,OAAG,CAAC,WAAJ,CAAgB,CAAhB,GAAoB,KAAK,WAAL,CAAiB,CAArC;AACA,OAAG,CAAC,WAAJ,CAAgB,CAAhB,GAAoB,KAAK,WAAL,CAAiB,CAArC;AACA,OAAG,CAAC,eAAJ,GAAsB,CAAC,GAAG,KAAK,eAAT,CAAtB;AACA,OAAG,CAAC,MAAJ,GAAU,aAAO,KAAK,MAAZ,CAAV;AACA,WAAO,GAAP;AACH;;AAzEqB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpC1B;;;;;;;;;;;;;;;;;;;AAmBG;AACH;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,IAAM,gBAAgB,GAAG;AAC5B,QAAM,EADsB;AAE5B,OAAK,EAFuB;AAG5B,QAAM,GAHsB;AAI5B,SAAO,GAJqB;AAK5B,QAAM,GALsB;AAM5B,QAAM,GANsB;AAO5B,UAAQ,GAPoB;AAQ5B,SAAO,GARqB;AAS5B,SAAO,GATqB;AAU5B,QAAM,GAVsB;AAW5B,QAAM,GAXsB;AAY5B,QAAM,GAZsB;AAa5B,SAAO,IAbqB;AAc5B,UAAQ,KAdoB;AAe5B,SAAO,IAfqB;AAgB5B,SAAO,IAhBqB;AAiB5B,SAAO,EAAE,IAjBmB;AAkB5B,QAAM,EAAE,IAlBoB;AAmB5B;AACA,QAAM,EAAE;AApBoB,CAAzB,C,CAuBP;;AACO,IAAM,mBAAmB,GAAG;AAC/B,GAAC,EAAE,GAD4B;AAE/B,GAAC,EAAE,EAF4B;AAG/B,IAAE,EAAE,EAH2B;AAI/B,GAAC,EAAE,EAJ4B;AAK/B,KAAG,EAAE,EAL0B;AAM/B,IAAE,EAAE,EAN2B;AAO/B,IAAE,EAAE,EAP2B;AAQ/B,KAAG,EAAE,EAR0B;AAS/B,KAAG,EAAE,EAT0B;AAU/B,IAAE,EAAE,EAV2B;AAW/B,IAAE,EAAE,EAX2B;AAY/B,OAAK,EAAE,EAZwB;AAa/B,KAAG,EAAE,EAb0B;AAc/B,QAAM,EAAE,EAduB;AAe/B,OAAK,EAAE,EAfwB;AAgB/B,aAAW,EAhBoB;AAiB/B,IAAE,EAAE,EAjB2B;AAkB/B,YAAU,EAlBqB;AAmB/B,MAAI,EAAE,EAnByB;AAoB/B,MAAI,EAAE,EApByB;AAqB/B,MAAI,EAAE,EArByB;AAsB/B,KAAG,EAAE,EAtB0B;AAuB/B,KAAG,EAAE,EAvB0B;AAwB/B,IAAE,EAAE,EAxB2B;AAyB/B,SAAO,EAzBwB;AA0B/B,IAAE,EAAE,EA1B2B;AA2B/B,MAAI,EAAE,EA3ByB;AA4B/B,WAAS,EA5BsB;AA6B/B,KAAG,EAAE,EA7B0B;AA8B/B,OAAK,EAAE,EA9BwB;AA+B/B,MAAI,EAAE,EA/ByB;AAgC/B,OAAK,EAAE,EAhCwB;AAiC/B,OAAK,EAAE,EAjCwB;AAkC/B,UAAQ,EAlCuB;AAmC/B,WAAS,EAnCsB;AAoC/B,KAAG,EAAE,EApC0B;AAqC/B,GAAC,EAAE,EArC4B;AAsC/B,KAAG,EAAE,EAtC0B;AAuC/B,MAAI,EAAE,EAvCyB;AAwC/B,MAAI,EAAE,EAxCyB;AAyC/B,KAAG,EAAE,EAzC0B;AA0C/B,KAAG,EAAE,EA1C0B;AA2C/B,MAAI,EAAE,EA3CyB;AA4C/B,KAAG,EAAE;AA5C0B,CAA5B;AA+CP;;;;;;;;AAQG;;AACG,SAAU,eAAV,CAA0B,SAA1B,EAAmC;AACrC,WAAS,GAAG,SAAS,CAAC,OAAV,CAAkB,GAAlB,EAAuB,EAAvB,CAAZ;;AACA,MAAI,SAAS,CAAC,KAAV,CAAgB,OAAhB,CAAJ,EAA8B;AAC1B,aAAS,IAAI,GAAb;AACH;;AACD,WAAS,GAAG,SAAS,CAAC,OAAV,CAAkB,IAAlB,EAAwB,GAAxB,CAAZ;AACA,WAAS,GAAG,SAAS,CAAC,OAAV,CAAkB,IAAlB,EAAwB,GAAxB,CAAZ;AACA,WAAS,GAAG,SAAS,CAAC,OAAV,CAAkB,IAAlB,EAAwB,GAAxB,CAAZ;AACA,MAAM,EAAE,GAAG,IAAI,MAAJ,CAAW,kBAAX,EAA+B,GAA/B,CAAX;AACA,MAAI,eAAe,GAAG,EAAtB;AACA,MAAI,KAAK,GAAG,EAAE,CAAC,IAAH,CAAQ,SAAR,CAAZ;;AACA,SAAO,KAAK,KAAK,IAAjB,EAAuB;AACnB,mBAAe,CAAC,IAAhB,CAAqB,KAAK,CAAC,CAAD,CAA1B;AACA,SAAK,GAAG,EAAE,CAAC,IAAH,CAAQ,SAAR,CAAR;AACH;;AACD,MAAI,eAAe,CAAC,MAAhB,KAA2B,CAA3B,IAAgC,eAAe,CAAC,CAAD,CAAf,CAAmB,QAAnB,CAA4B,GAA5B,CAApC,EAAsE;AAClE,mBAAe,GAAG,CAAC,GAAD,EAAM,eAAe,CAAC,CAAD,CAArB,CAAlB;AACH;;AACD,MAAM,UAAU,GAAG,EAAnB;;AACA,OAAK,IAAM,EAAX,IAAiB,eAAjB,EAAkC;AAC9B,QAAI,GAAG,GAAG,EAAE,CAAC,OAAH,CAAW,GAAX,EAAgB,IAAhB,CAAV;AACA,OAAG,GAAG,GAAG,CAAC,OAAJ,CAAY,GAAZ,EAAiB,IAAjB,CAAN;AACA,OAAG,GAAG,GAAG,CAAC,OAAJ,CAAY,GAAZ,EAAiB,IAAjB,CAAN;AACA,cAAU,CAAC,IAAX,CAAgB,GAAhB;AACH;;AACD,SAAO,UAAP;AACH;AAED;;;;;;;;AAQI;;AACE,SAAU,4BAAV,CACF,QADE,EAEF,eAFE,EAEqB;AAEvB,MAAM,SAAS,GAAG,QAAQ,CAAC,sBAAT,CAAgC,CAAhC,CAAlB;AACA,MAAI,WAAW,GAAG,EAAlB;;AACA,MAAI,SAAS,KAAK,CAAlB,EAAqB;AACjB,eAAW,GAAG,GAAd;AACH,GAFD,MAEO,IAAI,SAAS,KAAK,CAAlB,EAAqB;AACxB,eAAW,GAAG,GAAd;AACH;;AAED,MACI,eAAe,KAAK,SAApB,KACI,eAAe,CAAC,UAAhB,CAA2B,GAA3B,KACG,eAAe,CAAC,UAAhB,CAA2B,IAA3B,CADH,IAEG,eAAe,CAAC,UAAhB,CAA2B,GAA3B,CAHP,CADJ,EAME;AACE,QAAI,WAAW,KAAK,GAApB,EAAyB;AACrB;AACA,iBAAW,GAAG,EAAd;AACH;AACJ;;AAED,MAAM,WAAW,GAAG,QAAQ,CAAC,sBAAT,CAAgC,CAAhC,CAApB;;AACA,MAAI,WAAW,KAAK,SAAhB,IAA6B,SAAS,KAAK,CAA/C,EAAkD;AAC9C;AACA,QAAI,WAAW,KAAK,EAAhB,IAAsB,WAAW,KAAK,GAA1C,EAA+C;AAC3C,iBAAW,GAAG,GAAd;AACH,KAFD,MAEO,IAAI,WAAW,KAAK,CAApB,EAAuB,CAC1B;AACH;AACJ;;AACD,SAAO,WAAW,GAAG,eAArB;AACH;AAED;;;;;;;AAOG;;AACI,IAAM,aAAa,GAAG,CAAC,SAAD,EAAY,GAAZ,EAAiB,IAAjB,EAAuB,KAAvB,EAA8B,IAA9B,EAAoC,GAApC,EAAyC,IAAzC,EAA+C,KAA/C,CAAtB;AAEP;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;;AACG,MAAO,YAAP,SAA4B,8CAA5B,CAA2C;AA+B7C,cACI,SAAiB,EADrB,EAEI,SAAmC,SAFvC,EAGI;AACI,eAAW,GAAC,KADhB;AAEI,iBAAa,GAAC;AAFlB,MAGE,EANN,EAMQ;AAEJ,UAAM,MAAN,EAAc;AAAE,mBAAF;AAAiB;AAAjB,KAAd,EAFI,CAIJ;;AACA,UAAM,GAAG,MAAM,CAAC,OAAP,CAAe,GAAf,EAAoB,GAApB,CAAT;AACA,UAAM,GAAG,MAAM,CAAC,OAAP,CAAe,IAAf,EAAqB,GAArB,CAAT,CANI,CAQJ;;AAEA,SAAK,gBAAL,GAAwB,KAAxB,CAVI,CAYJ;;AACA,SAAK,aAAL,GAAqB,SAArB;AACA,SAAK,qBAAL,GAA6B,SAA7B;AACA,SAAK,wBAAL,GAAgC,SAAhC;AAEA,SAAK,UAAL,GAAkB,SAAlB;AACA,SAAK,gBAAL,GAAwB,CAAxB;AACA,SAAK,OAAL,GAAe,SAAf;AAEA,SAAK,WAAL,GAAmB,IAAnB;;AACA,QAAI,OAAO,MAAP,KAAkB,QAAtB,EAAgC;AAC5B,WAAK,WAAL,GAAmB,KAAnB;AACH;;AAED,SAAK,WAAL,GAAmB,SAAnB;AACA,SAAK,qBAAL,GAA6B,SAA7B;AACA,SAAK,gCAAL,GAAwC,SAAxC;AACA,SAAK,yBAAL,GAAiC,SAAjC;AACA,SAAK,iBAAL,GAAyB,SAAzB,CA9BI,CAgCJ;;AACA,SAAK,OAAL,GAAe,SAAf;AAEA,SAAK,cAAL,GAAsB,SAAtB;AACA,SAAK,YAAL,GAAoB,SAApB;AACA,SAAK,WAAL,GAAmB,SAAnB;AACA,SAAK,eAAL,GAAuB,KAAvB;AACA,SAAK,oBAAL,GAA4B,EAA5B;AACA,SAAK,YAAL,GAAoB,EAApB;AACA,SAAK,gBAAL,GAAwB,KAAxB;AACA,SAAK,mBAAL,GAA2B,SAA3B;AACA,SAAK,MAAL,GAAc,SAAd,CA3CI,CA2CqB;;AAEzB,SAAK,MAAL,GAAc,MAAd;;AAEA,QAAI,OAAO,MAAP,KAAkB,QAAtB,EAAgC;AAC5B,WAAK,GAAL,GAAW,IAAI,sCAAJ,CAAY,MAAZ,CAAX;AACH,KAFD,MAEO;AACH,WAAK,GAAL,GAAW,MAAX;AACH,KAnDG,CAqDJ;;;AACA,SAAK,OAAL,GAAe,SAAf;;AAEA,QAAI,MAAM,KAAK,EAAf,EAAmB;AACf,WAAK,YAAL;;AACA,WAAK,gBAAL,GAAwB,IAAxB;;AACA,WAAK,cAAL;AACH;AACJ;;AAjGmB,aAAT,SAAS;AAAK,WAAO,4BAAP;AAAsC;;AAmG/D,YAAU;AACN,WAAO,KAAK,MAAL,GAAc,MAAd,GAAuB,KAAK,GAAL,CAAS,UAAT,EAA9B;AACH;;AAED,cAAY;AACR,QAAI,aAAJ;AACA,QAAI,QAAQ,GAAG,KAAK,YAApB;;AACA,QAAI,CAAC,KAAK,eAAV,EAA2B;AACvB,cAAQ,GAAG,KAAK,GAAhB;AACH;;AACD,KAAC,aAAD,EAAgB,QAAhB,IAA4B,KAAK,gCAAL,CACxB,QADwB,CAA5B;;AAIA,QAAI,aAAa,KAAK,OAAtB,EAA+B;AAC3B,UAAI,QAAQ,CAAC,IAAT,KAAkB,OAAtB,EAA+B;AAC3B,qBAAa,GAAG,KAAhB;AACH,OAFD,MAEO;AACH,qBAAa,GAAG,KAAhB;AACH;AACJ;;AAED,SAAK,aAAL,GAAqB,aAArB;AAEA,iBAAa,GAAG,KAAK,kBAAL,CAAwB,aAAxB,CAAhB;AACA,iBAAa,GAAG,KAAK,0BAAL,CAAgC,aAAhC,CAAhB;AACA,iBAAa,GAAG,aAAa,CAAC,OAAd,CAAsB,KAAtB,EAA6B,MAA7B,CAAhB;AACA,iBAAa,GAAG,aAAa,CAAC,OAAd,CAAsB,IAAtB,EAA4B,MAA5B,CAAhB;AACA,iBAAa,GAAG,KAAK,sBAAL,CAA4B,aAA5B,CAAhB;AACA,KAAC,aAAD,EAAgB,QAAhB,IAA4B,KAAK,uBAAL,CACxB,aADwB,EAExB,QAFwB,CAA5B;AAIA,iBAAa,GAAG,KAAK,4BAAL,CAAkC,aAAlC,CAAhB;AAEA,SAAK,SAAL,GAAiB,QAAQ,CAAC,eAAT,CAAyB,KAAK,WAA9B,CAAjB;;AACA,SAAK,iBAAL,CAAuB,QAAvB;;AACA,QAAM,cAAc,GAAG,eAAe,CAAC,aAAD,CAAtC;AACA,SAAK,kBAAL,GAA0B,IAAI,mDAAJ,CACtB,cAAc,CAAC,QAAf,EADsB,CAA1B;AAIA,QAAM,UAAU,GAAG,aAAa,CAAC,KAAd,CAAoB,KAApB,CAAnB;;AACA,QAAI,UAAU,IAAI,IAAlB,EAAwB;AACpB;AACA,mBAAa,GAAG,aAAa,CAAC,OAAd,CAAsB,KAAtB,EAA6B,EAA7B,CAAhB;AACA,WAAK,OAAL,GAAe,QAAQ,CAAC,UAAU,CAAC,CAAD,CAAX,CAAvB;AACH;AACJ;;AAED,wBAAsB,CAAC,aAAD,EAAc;AAChC,QAAI,qBAAqB,GAAG,EAA5B;AACA,QAAI,gCAAJ;AACA,QAAI,yBAAJ;;AACA,QAAM,gBAAgB,GAAG,IAAI,MAAJ,CAAW,aAAX,CAAzB;;AACA,QAAM,KAAK,GAAG,gBAAgB,CAAC,IAAjB,CAAsB,aAAtB,CAAd;;AACA,QAAI,KAAK,IAAI,IAAb,EAAmB;AACf,UAAM,KAAK,GAAG,KAAK,CAAC,CAAD,CAAnB;AACA,UAAI,UAAU,GAAG,KAAK,CAAC,MAAvB;;AACA,UAAI,KAAK,CAAC,CAAD,CAAL,KAAa,GAAb,IAAoB,KAAK,CAAC,CAAD,CAAL,KAAa,GAArC,EAA0C;AACtC,kBAAU,IAAI,CAAC,CAAf;AACH;;AACD,sCAAgC,GAAG,wEAC/B,CAD+B,EAE/B,UAF+B,CAAnC;AAIA,+BAAyB,GAAG,IAAI,+CAAJ,CAAqB,UAArB,CAA5B;AACA,2BAAqB,GAAG,KAAxB;AACA,mBAAa,GAAG,aAAa,CAAC,OAAd,CAAsB,gBAAtB,EAAwC,EAAxC,CAAhB;AACH;;AACD,SAAK,qBAAL,GAA6B,qBAA7B;AACA,SAAK,gCAAL,GAAwC,gCAAxC;AACA,SAAK,yBAAL,GAAiC,yBAAjC;AACA,WAAO,aAAP;AACH;;AAED,0BAAwB;AACpB,SAAK,IAAM,eAAX,IAA8B,KAAK,oBAAnC,EAAyD;AACrD,UAAM,CAAC,aAAD,EAAgB,SAAhB,IAA6B,eAAnC;AACA,UAAM,UAAU,GAAG,KAAK,YAAL,CAAkB,SAAlB,CAAnB;;AACA,UAAI,UAAU,KAAK,SAAnB,EAA8B;AAC1B;AACH;;AACD,UAAM,aAAa,GAAG,IAAI,+CAAJ,CAAqB,aAArB,CAAtB;;AACA,UAAI,UAAU,CAAC,UAAX,KAA0B,SAA9B,EAAyC;AACrC,kBAAU,CAAC,UAAX,GAAwB,aAAxB;AACH,OAFD,MAEO;AACH,kBAAU,CAAC,UAAX,CAAsB,GAAtB,CACI,UAAU,CAAC,UAAX,CAAsB,KAAtB,GAA8B,aAAa,CAAC,KADhD;AAGH;AACJ;AACJ;;AAED,8BAA4B,CAAC,aAAD,EAAc;AACtC,QAAI,cAAc,GAAG,EAArB;;AACA,QAAI,aAAa,CAAC,UAAd,CAAyB,GAAzB,CAAJ,EAAmC;AAC/B,oBAAc,GAAG,YAAjB;AACA,mBAAa,GAAG,aAAa,CAAC,OAAd,CAAsB,IAAtB,EAA4B,EAA5B,CAAhB;AACH,KAHD,MAGO,IAAI,aAAa,CAAC,UAAd,CAAyB,IAAzB,CAAJ,EAAoC;AACvC,oBAAc,GAAG,iBAAjB;AACA,mBAAa,GAAG,aAAa,CAAC,OAAd,CAAsB,MAAtB,EAA8B,EAA9B,CAAhB;AACH,KAHM,MAGA,IAAI,aAAa,CAAC,UAAd,CAAyB,GAAzB,CAAJ,EAAmC;AACtC,oBAAc,GAAG,iBAAjB;AACA,mBAAa,GAAG,aAAa,CAAC,OAAd,CAAsB,IAAtB,EAA4B,EAA5B,CAAhB;AACH,KAHM,MAGA,IAAI,aAAa,CAAC,UAAd,CAAyB,GAAzB,CAAJ,EAAmC;AACtC,oBAAc,GAAG,WAAjB;AACA,mBAAa,GAAG,aAAa,CAAC,OAAd,CAAsB,KAAtB,EAA6B,EAA7B,CAAhB;AACH,KAHM,MAGA,IAAI,aAAa,CAAC,QAAd,CAAuB,IAAvB,CAAJ,EAAkC;AACrC,oBAAc,GAAG,kBAAjB;AACA,mBAAa,GAAG,aAAa,CAAC,OAAd,CAAsB,KAAtB,EAA6B,GAA7B,CAAhB;AACH,KAHM,MAGA,IACH,KAAK,WAAL,IACG,KAAK,iBAAL,CAAuB,WAAvB,OAAyC,KAAK,iBAF9C,EAGL;AACE,oBAAc,GAAG,OAAjB;AACH,KALM,MAKA,IACH,KAAK,WAAL,IACG,KAAK,iBAAL,CAAuB,WAAvB,OAAyC,KAAK,iBAF9C,EAGL;AACE,oBAAc,GAAG,OAAjB;AACH;;AACD,SAAK,cAAL,GAAsB,cAAtB;AACA,WAAO,aAAP;AACH;;AAED,mBAAiB,CAAC,QAAD,EAAS;AACtB,QAAI,QAAQ,CAAC,IAAT,KAAkB,OAAtB,EAA+B;AAC3B;AACH;;AACD,QAAI,CAAC,KAAK,WAAV,EAAuB;AACnB;AACH;;AACD,QAAI,KAAK,WAAL,KAAqB,CAArB,IAA0B,KAAK,WAAL,KAAqB,CAAnD,EAAsD;AAClD;AACH;;AACD,QACI,CAAC,CAAC,OAAD,EAAU,YAAV,EAAwB,iBAAxB,EAA2C,QAA3C,CACG,KAAK,cADR,CADL,EAIE;AACE;AACH;;AAED,QAAM,IAAI,GAAG,KAAK,gCAAlB;;AACA,QAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,UAAM,OAAO,GAAG,4CAAa,CAAC,IAAD,EAAO,IAAI,gDAAJ,CAAsB,IAAtB,CAAP,CAAb,CAAhB;AACA,WAAK,gCAAL,GAAwC,OAAxC;AACA,WAAK,yBAAL,CAA+B,KAA/B,IAAwC,CAAxC;AACH,KAJD,MAIO;AACH,WAAK,gCAAL,GAAwC,IAAI,gDAAJ,CAAsB,IAAtB,CAAxC;AACA,WAAK,yBAAL,GAAiC,IAAI,+CAAJ,CAAqB,CAArB,CAAjC;AACH;;AAED,SAAK,SAAL,GAAiB,KAAK,gCAAL,CAAsC,cAAtC,CACb,KAAK,SADQ,CAAjB;AAGH;;AAED,yBAAuB,CAAC,aAAD,EAAgB,QAAhB,EAAwB;AAC3C,QAAI,iBAAiB,GAAG,EAAxB;;AACA,QAAM,uBAAuB,GAAG,IAAI,MAAJ,CAC5B,0CAD4B,CAAhC;;AAGA,QAAM,oBAAoB,GAAG,IAAI,MAAJ,CAAW,iBAAX,CAA7B;;AACA,QAAM,EAAE,GAAG,uBAAuB,CAAC,IAAxB,CAA6B,aAA7B,CAAX;;AACA,QAAM,OAAO,GAAG,oBAAoB,CAAC,IAArB,CAA0B,aAA1B,CAAhB;;AACA,QAAI,EAAE,KAAK,IAAP,IAAe,OAAO,KAAK,IAA/B,EAAqC;AACjC,YAAM,IAAI,2DAAJ,qCAC2B,aAD3B,EAAN;AAGH;;AACD,QAAI,OAAO,KAAK,IAAhB,EAAsB;AAClB,UAAI,QAAQ,CAAC,IAAT,KAAkB,OAAtB,EAA+B;AAC3B,gBAAQ,GAAG,IAAI,sCAAJ,CAAY,QAAQ,CAAC,KAAT,CAAe,IAA3B,EAAiC,OAAjC,CAAX;AACA,aAAK,YAAL,GAAoB,QAApB;AACA,aAAK,eAAL,GAAuB,IAAvB;AACH;;AACD,uBAAiB,GAAG,OAAO,CAAC,CAAD,CAA3B;;AACA,UAAI,CAAC,IAAD,EAAO,KAAP,EAAc,QAAd,CAAuB,iBAAvB,CAAJ,EAA+C;AAC3C,aAAK,WAAL,GAAmB,CAAnB;AACH,OAFD,MAEO;AACH,aAAK,WAAL,GAAmB,CAAnB;AACH;;AACD,mBAAa,GAAG,aAAa,CAAC,OAAd,CAAsB,oBAAtB,EAA4C,EAA5C,CAAhB;AACA,WAAK,iBAAL,GAAyB,iBAAzB;;AACA,UAAI,iBAAiB,KAAK,IAA1B,EAAgC;AAC5B,aAAK,oBAAL,CAA0B,IAA1B,CAA+B,CAAC,GAAD,EAAM,CAAN,CAA/B;AACH;;AACD,UAAI,iBAAiB,KAAK,IAAtB,IAA8B,iBAAiB,KAAK,IAAxD,EAA8D;AAC1D,aAAK,oBAAL,CAA0B,IAA1B,CAA+B,CAAC,GAAD,EAAM,CAAN,CAA/B;AACH;AACJ,KApBD,MAoBO;AACH,uBAAiB,GAAG,EAAE,CAAC,CAAD,CAAtB;AACA,WAAK,WAAL,GAAmB,gDAAiB,iBAAjB,CAAnB;AACA,mBAAa,GAAG,aAAa,CAAC,OAAd,CAAsB,uBAAtB,EAA+C,EAA/C,CAAhB;AACA,WAAK,iBAAL,GAAyB,iBAAzB;AACH;;AACD,WAAO,CAAC,aAAD,EAAgB,QAAhB,CAAP;AACH;AAED;;;;AAIG;;;AAEa,MAAZ,YAAY;AACZ,QAAI,KAAK,yBAAL,KAAmC,SAAvC,EAAkD;AAC9C,aAAO,KAAK,iBAAZ;AACH,KAFD,MAEO;AACH,aACI,KAAK,yBAAL,CAA+B,QAA/B,GAA0C,KAAK,iBADnD;AAGH;AACJ;;AAEQ,MAAL,KAAK;AACL,QAAI,KAAK,MAAL,KAAgB,SAApB,EAA+B;AAC3B,aAAO,KAAK,MAAZ;AACH,KAFD,MAEO;AACH,WAAK,MAAL,GAAc,KAAK,GAAL,CAAS,QAAT,EAAd;AACA,aAAO,KAAK,MAAZ;AACH;AACJ;;AAEM,MAAH,GAAG;AACH,WAAO,KAAK,IAAZ;AACH;;AAEM,MAAH,GAAG,CAAC,UAAD,EAAoB;AACvB,QAAI,OAAO,UAAP,KAAsB,QAA1B,EAAoC;AAChC,WAAK,IAAL,GAAY,IAAI,sCAAJ,CAAY,UAAZ,CAAZ;AACH,KAFD,MAEO,IAAI,OAAO,UAAP,KAAsB,WAA1B,EAAuC;AAC1C,WAAK,IAAL,GAAY,IAAI,sCAAJ,CAAY,GAAZ,CAAZ;AACH,KAFM,MAEA;AACH,WAAK,IAAL,GAAY,UAAZ;AACH;;AACD,QAAI,UAAU,KAAK,SAAnB,EAA8B;AAC1B,WAAK,eAAL,GAAuB,IAAvB;AACA,WAAK,YAAL,GAAoB,IAAI,+CAAJ,CAAqB,GAArB,CAApB;AACH,KAHD,MAGO;AACH,WAAK,eAAL,GAAuB,KAAvB;AACA,WAAK,YAAL,GAAoB,KAApB;AACH;;AACD,QAAI,KAAK,gBAAT,EAA2B;AACvB,WAAK,cAAL;AACH;AACJ;;AAES,MAAN,MAAM;AACN,WAAO,KAAK,OAAZ;AACH;;AAES,MAAN,MAAM,CAAC,SAAD,EAAU;AAChB,SAAK,OAAL,GAAe,SAAf;;AACA,QAAI,KAAK,gBAAT,EAA2B;AACvB,WAAK,YAAL;;AACA,WAAK,cAAL;AACH;AACJ;;AAEe,MAAZ,YAAY;AACZ,QAAI,SAAS,GAAG,KAAK,GAAL,CAAS,KAAT,CAAe,IAA/B;AACA,QAAI,IAAI,GAAG,EAAX;;AACA,QAAI,KAAK,GAAL,CAAS,IAAT,KAAkB,SAAtB,EAAiC;AAC7B,UAAI,GAAG,MAAM,KAAK,GAAL,CAAS,IAAtB;AACH;;AAED,QAAI,IAAI,KAAK,QAAb,EAAuB;AACnB,eAAS,GAAG,SAAS,CAAC,WAAV,EAAZ;AACH,KAFD,MAEO,IAAI,IAAI,KAAK,QAAb,EAAuB;AAC1B,eAAS,GAAG,SAAS,CAAC,WAAV,EAAZ;AACH;;AACD,WAAO,KAAK,MAAL,GAAc,MAAd,GAAuB,SAAvB,GAAmC,IAA1C;AACH;;AAEa,MAAV,UAAU;AACV,QAAI,KAAK,WAAL,GAAmB,CAAvB,EAA0B;AACtB,aAAO,CACH,SADG,EAEH,OAFG,EAGH,YAHG,EAIH,SAJG,EAKH,aALG,EAMH,UANG,EAOH,YAPG,EAQL,KAAK,WARA,CAAP;AASH,KAVD,MAUO;AACH,UAAM,UAAU,GAAG,KAAK,GAAL,CAAS,KAA5B;AACA,UAAI,eAAe,GAAG,CAAC,UAAU,CAAC,EAAX,GAAgB,KAAK,IAAL,GAAY,EAA7B,IAAmC,EAAzD;;AACA,UAAI,eAAe,GAAG,CAAtB,EAAyB;AACrB,uBAAe,IAAI,EAAnB;AACH;;AACD,UAAI,eAAe,KAAK,CAAxB,EAA2B;AACvB,eAAO,cAAP;AACH,OAFD,MAEO;AACH,eAAO,UAAP;AACH;AACJ;AACJ;AAED;;;AAGG;;;AACH,gBAAc;AACV,QAAI,QAAJ;;AACA,QAAI,KAAK,wBAAL,KAAkC,SAAtC,EAAiD;AAC7C,cAAQ,GAAG,KAAK,wBAAhB;AACH,KAFD,MAEO,IAAI,CAAC,KAAK,eAAV,EAA2B;AAC9B,cAAQ,GAAG,KAAK,GAAhB;AACH,KAFM,MAEA;AACH,cAAQ,GAAG,KAAK,YAAhB;AACH;;AAED,SAAK,gBAAL,GAAwB,CAAxB,CAVU,CAUiB;;AAC3B,QAAM,eAAe,GAAG,KAAK,2BAAL,CACpB,KAAK,kBADe,CAAxB;AAGA,QAAM,SAAS,GAAG,QAAQ,CAAC,eAAT,CACd,eADc,EAEd,WAFc,CAAlB;AAIA,QAAM,OAAO,GAAG,CAAC,SAAD,CAAhB;AACA,QAAI,SAAS,GAAG,SAAhB;AACA,QAAM,WAAW,GAAG,KAAK,kBAAL,CAAwB,OAAxB,CAAgC,MAApD;;AAEA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,WAApB,EAAiC,CAAC,EAAlC,EAAsC;AAClC,UAAM,CAAC,GAAG,WAAW,GAAG,CAAd,GAAkB,CAA5B;AACA,UAAM,eAAe,GACf,eAAe,GAAG,KAAK,kBAAL,CAAwB,OAAxB,CAAgC,CAAhC,CAAlB,GAAuD,CAD7D;AAEA,UAAM,QAAQ,GAAG,QAAQ,CAAC,eAAT,CACb,eADa,EAEb,WAFa,CAAjB;AAIA,UAAM,SAAS,GAAG,KAAK,kBAAL,CAAwB,SAAxB,CACd,CADc,EAEhB,eAFgB,CAEA,QAAQ,CAAC,IAFT,CAAlB;AAGA,UAAM,WAAW,GAAG,IAAI,0CAAJ,CAAgB,SAAhB,CAApB;AACA,iBAAW,CAAC,MAAZ,GAAqB,QAAQ,CAAC,MAA9B;;AACA,UAAI,WAAW,CAAC,EAAZ,GAAiB,SAAS,CAAC,EAA/B,EAAmC;AAC/B,mBAAW,CAAC,MAAZ,IAAsB,CAAtB;AACH;;AACD,aAAO,CAAC,IAAR,CAAa,WAAb;AACA,eAAS,GAAG,WAAZ;AACH;;AACD,QAAI,KAAK,gCAAL,KAA0C,SAA9C,EAAyD;AACrD,UAAM,UAAU,GAAG,EAAnB;;AACA,WAAK,IAAM,SAAX,IAAwB,OAAxB,EAAiC;AAC7B,YAAM,SAAQ,GAAG,KAAK,gCAAL,CAAsC,cAAtC,CACb,SADa,CAAjB;;AAGA,kBAAU,CAAC,IAAX,CAAgB,SAAhB;AACH;;AACD,WAAK,OAAL,GAAe,UAAf;AACH,KATD,MASO;AACH,WAAK,OAAL,GAAe,OAAf;AACH;;AAED,SAAK,0BAAL,CAAgC,KAAK,cAArC;;AAEA,SAAK,WAAL,GAAmB,KAAK,gCAAxB;;AAEA,QAAI,KAAK,YAAL,CAAkB,MAAtB,EAA8B;AAC1B,UAAM,cAAc,GAAG,EAAvB;;AACA,WAAK,IAAM,MAAX,IAAqB,KAAK,YAA1B,EAAwC;AACpC,YAAM,CAAC,GAAG,KAAK,YAAL,CAAkB,MAAlB,CAAV;;AACA,YAAI,CAAC,KAAK,SAAV,EAAqB;AACjB,wBAAc,CAAC,IAAf,CAAoB,CAAC,CAAC,IAAtB;AACH;AACJ;;AACD,UAAM,WAAU,GAAG,EAAnB;;AACA,WAAK,IAAM,UAAX,IAAwB,OAAxB,EAAiC;AAC7B,YAAI,CAAC,cAAc,CAAC,QAAf,CAAwB,UAAS,CAAC,IAAlC,CAAL,EAA8C;AAC1C,qBAAU,CAAC,IAAX,CAAgB,UAAhB;AACH;AACJ;;AACD,WAAK,OAAL,GAAe,WAAf,CAd0B,CAe1B;AACH;;AACD,SAAK,wBAAL;AACH;;AAED,6BAA2B,CAAC,cAAD,EAAe;AACtC,QAAM,CAAC,GAAG,IAAI,0CAAJ,CAAgB,IAAhB,CAAV;AACA,QAAM,IAAI,GAAG,CAAC,CAAC,eAAf,CAFsC,CAEN;;AAChC,QAAM,OAAO,GAAG,CAAC,CAAD,CAAhB;;AACA,SAAK,IAAM,CAAX,IAAgB,cAAc,CAAC,OAA/B,EAAwC;AACpC,UAAM,cAAc,GAAG,CAAC,GAAG,CAA3B;AACA,UAAM,iBAAiB,GAAG,IAAI,GAAG,cAAjC;AACA,UAAM,CAAC,OAAD,EAAU,SAAV,IAAuB,oEACzB,iBADyB,CAA7B;AAGA,UAAM,QAAQ,GAAG,IAAI,0CAAJ,CAAgB,IAAhB,CAAjB;AACA,cAAQ,CAAC,IAAT,GAAgB,OAAhB;AACA,cAAQ,CAAC,MAAT,GAAkB,SAAlB;AACA,aAAO,CAAC,IAAR,CAAa,QAAb;AACH;;AACD,QAAM,SAAS,GAAG,IAAI,yCAAJ,CAAgB,OAAhB,CAAlB;AACA,QAAM,OAAO,GAAG,SAAS,CAAC,IAAV,GAAiB,eAAjC;AACA,QAAM,2BAA2B,GAAG,OAAO,GAAG,IAA9C;AACA,QAAI,MAAM,GAAG,6CACT,KAAK,WAAL,GAAmB,2BADV,EAET,CAFS,CAAb;;AAIA,QAAI,MAAM,KAAK,CAAf,EAAkB;AACd,YAAM,GAAG,CAAT;AACH;;AACD,WAAO,MAAP;AACH;;AAED,4BAA0B,CAAC,cAAD,EAAe;AACrC,QAAM,gBAAgB,GAAG,KAAK,2BAAL,CACrB,cADqB,CAAzB;;AAGA,QAAM,mBAAmB,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAA5B;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,mBAAmB,CAAC,MAAxC,EAAgD,CAAC,EAAjD,EAAqD;AACjD,UAAM,aAAa,GAAG,mBAAmB,CAAC,CAAD,CAAzC;AACA,UAAM,WAAW,GAAG,gBAAgB,CAAC,CAAD,CAApC;AACA,UAAM,SAAS,GAAG,KAAK,sBAAL,CAA4B,aAA5B,CAAlB;;AACA,UAAI,WAAW,KAAK,SAApB,EAA+B;AAC3B;AACH;;AACD,UAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB;AACH;;AACD,UAAI,SAAS,KAAK,WAAlB,EAA+B;AAC3B;AACH;;AAED,UAAI,cAAc,GAAG,WAAW,GAAG,SAAnC;;AACA,UAAI,cAAc,IAAI,CAAtB,EAAyB;AACrB,sBAAc,GAAG,CAAC,CAAD,IAAM,KAAK,cAAX,CAAjB;AACH,OAFD,MAEO,IAAI,cAAc,IAAI,CAAC,CAAvB,EAA0B;AAC7B,sBAAc,IAAI,EAAlB;AACH;;AAED,UAAM,WAAW,GAAG,KAAK,YAAL,CAAkB,aAAlB,CAApB,CArBiD,CAsBjD;;AAEA,UAAI,WAAW,CAAC,UAAZ,KAA2B,SAA/B,EAA0C;AACtC,mBAAW,CAAC,UAAZ,GAAyB,IAAI,+CAAJ,CAAqB,cAArB,CAAzB;AACH,OAFD,MAEO;AACH,YAAM,GAAG,GAAG,WAAW,CAAC,UAAxB;AACA,sBAAc,IAAI,GAAG,CAAC,KAAtB;;AACA,YAAI,cAAc,IAAI,CAAtB,EAAyB;AACrB,wBAAc,GAAG,CAAC,CAAD,IAAM,KAAK,cAAX,CAAjB;AACH,SAFD,MAEO,IAAI,cAAc,IAAI,CAAC,CAAvB,EAA0B;AAC7B,wBAAc,IAAI,EAAlB;AACH;;AACD,WAAG,CAAC,GAAJ,CAAQ,cAAR;AACH;AACJ;AACJ;;AAED,kCAAgC,CAAC,QAAD,EAAW,MAAM,GAAC,SAAlB,EAA2B;AACvD,QAAI,MAAM,KAAK,SAAf,EAA0B;AACtB,YAAM,GAAG,KAAK,OAAd;AACH;;AACD,QAAI,aAAa,GAAG,MAApB;AACA,QAAM,EAAE,GAAG,IAAI,MAAJ,CAAW,2BAAX,CAAX;AACA,QAAM,KAAK,GAAG,EAAE,CAAC,IAAH,CAAQ,MAAR,CAAd;;AACA,QAAI,KAAK,KAAK,IAAd,EAAoB;AAChB,UAAM,aAAa,GAAG,KAAK,CAAC,CAAD,CAA3B;AACA,UAAM,eAAe,GAAG,KAAK,CAAC,CAAD,CAA7B;AACA,UAAM,qBAAqB,GAAG,IAAI,YAAJ,CAC1B,eAD0B,EAE1B,QAF0B,CAA9B;AAIA,WAAK,qBAAL,GAA6B,qBAA7B;AACA,UAAI,aAAJ;;AACA,UAAI,qBAAqB,CAAC,OAAtB,KAAkC,OAAtC,EAA+C;AAC3C,qBAAa,GAAG,OAAhB;AACH,OAFD,MAEO,IAAI,qBAAqB,CAAC,OAAtB,KAAkC,OAAtC,EAA+C;AAClD,qBAAa,GAAG,OAAhB;AACH,OAFM,MAEA,IAAI,qBAAqB,CAAC,sBAAtB,CAA6C,CAA7C,MAAoD,CAAxD,EAA2D;AAC9D,qBAAa,GAAG,OAAhB;AACH,OAFM,MAEA;AACH,qBAAa,GAAG,OAAhB;AACH;;AACD,WAAK,wBAAL,GAAgC,IAAI,sCAAJ,CAC5B,qBAAqB,CAAC,IAAtB,GAA6B,IADD,EAE5B,aAF4B,CAAhC;AAIA,cAAQ,GAAG,KAAK,wBAAhB;AACA,mBAAa,GAAG,aAAhB;AACH;;AACD,WAAO,CAAC,aAAD,EAAgB,QAAhB,CAAP;AACH;;AAED,oBAAkB,CAAC,aAAD,EAAc;AAC5B,QAAM,YAAY,GAAG,EAArB;AACA,QAAM,EAAE,GAAG,IAAI,MAAJ,CAAW,cAAX,CAAX;AACA,QAAI,KAAK,GAAG,EAAE,CAAC,IAAH,CAAQ,aAAR,CAAZ;;AACA,WAAO,KAAK,KAAK,IAAjB,EAAuB;AACnB,UAAM,WAAW,GAAG,KAAK,CAAC,CAAD,CAAzB;AACA,UAAI,QAAQ,GAAG,QAAQ,CAAC,WAAD,CAAvB;AACA,cAAQ,GAAG,QAAQ,GAAG,CAAX,IAAgB,CAA3B;AACA,kBAAY,CAAC,IAAb,CAAkB,QAAlB;AACA,mBAAa,GAAG,aAAa,CAAC,OAAd,CAAsB,EAAtB,EAA0B,EAA1B,CAAhB;AACA,WAAK,GAAG,EAAE,CAAC,IAAH,CAAQ,aAAR,CAAR;AACH;;AACD,SAAK,YAAL,GAAoB,YAApB;AACA,WAAO,aAAP;AACH;;AAED,4BAA0B,CAAC,aAAD,EAAc;AACpC,QAAM,oBAAoB,GAAG,KAAK,oBAAlC;AACA,QAAM,EAAE,GAAG,IAAI,MAAJ,CAAW,oBAAX,CAAX;AACA,QAAI,KAAK,GAAG,EAAE,CAAC,IAAH,CAAQ,aAAR,CAAZ;;AACA,WAAO,KAAK,KAAK,IAAjB,EAAuB;AACnB,UAAM,eAAe,GAAG,KAAK,CAAC,CAAD,CAA7B;AACA,UAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAD,CAAN,CAA5B;AACA,0BAAoB,CAAC,IAArB,CAA0B,CAAC,eAAD,EAAkB,WAAlB,CAA1B;AACA,mBAAa,GAAG,aAAa,CAAC,OAAd,CAAsB,EAAtB,EAA0B,EAA1B,CAAhB;AACA,WAAK,GAAG,EAAE,CAAC,IAAH,CAAQ,aAAR,CAAR;AACH;;AACD,WAAO,aAAP;AACH;;AAED,6BAA2B,CAAC,cAAD,EAAe;AACtC,QAAI,gBAAJ;;AACA,QAAI,cAAc,KAAK,OAAvB,EAAgC;AAC5B,sBAAgB,GAAG,CAAC,CAAD,EAAI,CAAJ,CAAnB;AACH,KAFD,MAEO,IAAI,cAAc,KAAK,OAAvB,EAAgC;AACnC,sBAAgB,GAAG,CAAC,CAAD,EAAI,CAAJ,CAAnB;AACH,KAFM,MAEA,IAAI,cAAc,KAAK,YAAvB,EAAqC;AACxC,sBAAgB,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAnB;AACH,KAFM,MAEA,IAAI,cAAc,KAAK,iBAAvB,EAA0C;AAC7C,sBAAgB,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,EAAP,CAAnB;AACH,KAFM,MAEA,IAAI,cAAc,KAAK,WAAvB,EAAoC;AACvC,sBAAgB,GAAG,CAAC,CAAD,EAAI,CAAJ,CAAnB;AACH,KAFM,MAEA,IAAI,cAAc,KAAK,kBAAvB,EAA2C;AAC9C,sBAAgB,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,EAAP,CAAnB;AACH,KAFM,MAEA;AACH,sBAAgB,GAAG,EAAnB;AACH;;AAED,WAAO,gBAAP;AACH;AAED;;;;;;;;;AASG;;;AACH,UAAQ,CAAC,WAAD,EAAsB,YAAoB,CAA1C,EAA2C;AAC/C,QAAM,MAAM,GAAG,KAAK,GAApB;AACA,QAAM,SAAS,GAAG,MAAM,CAAC,KAAP,CAAa,IAA/B;AACA,QAAM,IAAI,GAAG,MAAM,CAAC,IAApB,CAH+C,CAK/C;;AACA,QAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,eAAS,GAAG,KAAK,SAAL,EAAZ;AACH;;AACD,QAAI,aAAa,GAAG,EAApB;;AACA,QAAI,SAAS,KAAK,CAAlB,EAAqB;AACjB,UAAI,WAAW,KAAK,OAApB,EAA6B;AACzB,qBAAa,GAAG,GAAhB;AACH,OAFD,MAEO;AACH,qBAAa,GAAG,oBAAhB;AACH;AACJ,KAND,MAMO,IAAI,SAAS,KAAK,CAAlB,EAAqB;AACxB,UAAI,WAAW,KAAK,OAApB,EAA6B;AACzB,qBAAa,GAAG,IAAhB;AACH,OAFD,MAEO;AACH,qBAAa,GAAG,qBAAhB;AACH;AACJ;;AACD,QAAI,aAAJ;AACA,QAAI,SAAS,GAAG,MAAhB;AACA,QAAI,MAAM,GAAG,EAAb;;AACA,QAAI,WAAW,KAAK,OAApB,EAA6B;AACzB,mBAAa,GAAG,KAAK,MAArB;AACA,mBAAa,GAAG,aAAa,CAAC,OAAd,CAAsB,IAAtB,EAA4B,GAA5B,CAAhB;AACH,KAHD,MAGO,IAAI,WAAW,KAAK,UAApB,EAAgC;AACnC;AACA,mBAAa,GAAG,EAAhB;AACA,eAAS,GAAG,EAAZ;AACA,YAAM,GAAG,QAAT;AACH,KALM,MAKA,IAAI,WAAW,KAAK,UAApB,EAAgC;AACnC,mBAAa,GAAG,KAAK,IAAL,GAAY,IAAZ,CAAiB,OAAjB,CAAyB,GAAzB,EAA8B,GAA9B,CAAhB;AACH,KAFM,MAEA;AACH;AACA,mBAAa,GAAG,KAAK,UAArB;;AACA,UAAI,KAAK,OAAL,KAAiB,SAArB,EAAgC;AAC5B,qBAAa,IAAI,MAAM,KAAK,OAAL,CAAa,QAAb,EAAvB;AACH;AACJ;;AACD,QAAI,YAAY,GAAG,SAAS,CAAC,OAAV,CAAkB,GAAlB,EAAuB,GAAvB,CAAnB;;AACA,QAAI,IAAI,KAAK,OAAb,EAAsB;AAClB,kBAAY,GAAG,YAAY,CAAC,WAAb,EAAf;AACH;;AACD,QAAM,QAAQ,GAAG,aAAa,GACxB,aADW,GAEX,SAFW,GAGX,YAHW,GAIX,GAJW,GAKX,IALW,GAMX,MANN;AAOA,WAAO,QAAP;AACH;;AAnsB4C,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChOjD;;;AAGG;;AACH;;;;;;;;;;;;;;;;;;;AAmBG;AACH;AACA;AAEA;AACA;AACA;CAMA;AACA;AACA;;AAEM,MAMA,KANA,SAMc,gDANd,CAMgC;AAKlC;AACI;AAHJ,gBAAe,OAAf;AAII,SAAK,IAAL,GAAY,OAAZ;AACH;;AAPmB,aAAT,SAAS;AAAK,WAAO,qBAAP;AAA+B;AASxD;;;;AAIG;;;AACK,MAAJ,IAAI;AACJ,WAAO,KAAK,IAAZ;AACH;AAED;;;AAGG;;;AACW,MAAV,UAAU;AACV,WAAO,KAAP;AACH;;AAzBiC;AA4BhC,MAMA,aANA,SAMsB,KANtB,CAM2B;AAU7B;AACI;AARM,gBAA4B,EAA5B;AACV,uBAAsB,CAAtB;AACA,6BAA6B,IAA7B;AACA,yBAAyB,IAAzB;AACU,2BAAkB,EAAlB;AACA,sCAA6B,SAA7B;AAIN,SAAK,IAAL,GAAY,UAAZ;AACH;;AAZmB,aAAT,SAAS;AAAK,WAAO,6BAAP;AAAuC;AAchE;;AAEG;;;AACH,cAAY,CAAC,IAAI,GAAC,SAAN,EAAe;AACvB,SAAK,IAAL,GAAY,EAAZ;AACH;AAED;;;;;AAKG;;;AACH,QAAM,CAAC,KAAD,EAAqB;AACvB,QACI,iDAAmB,KAAK,OAAxB,EAAiC,KAAK,CAAC,OAAvC,KACG,KAAK,WAAL,KAAqB,KAAK,CAAC,WAD9B,IAEG,iDAAmB,KAAK,IAAxB,EAA8B,KAAK,CAAC,IAApC,CAHP,EAIE;AACE,aAAO,IAAP;AACH,KAND,MAMO;AACH,aAAO,KAAP;AACH;AACJ;;AAED,yBAAuB,CAAC,SAAD,EAA8C;AACjE,QAAM,aAAa,GAAkB,EAArC;;AACA,SAAK,IAAM,CAAX,IAAgB,SAAhB,EAA2B;AACvB,UAAI,OAAO,CAAP,KAAa,QAAjB,EAA2B;AACvB,qBAAa,CAAC,IAAd,CAAmB,IAAI,yCAAJ,CAAgB,CAAhB,CAAnB;AACH,OAFD,MAEO,IAAI,CAAC,CAAC,OAAF,CAAU,QAAV,CAAmB,MAAnB,CAAJ,EAAgC;AACnC,qBAAa,CAAC,IAAd,CAAgC,CAAE,CAAC,KAAnC;AACH,OAFM,MAEA;AACH,qBAAa,CAAC,IAAd,CAAkC,CAAlC;AACH;AACJ;;AAED,QAAM,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC,MAAd,GAAuB,CAAxB,CAA3B;;AACA,QAAI,KAAK,CAAC,IAAN,KAAe,aAAa,CAAC,CAAD,CAAb,CAAiB,IAApC,EAA0C;AACtC,UAAM,EAAC,GAAG,aAAa,CAAC,CAAD,CAAb,CAAiB,KAAjB,EAAV;;AACA,UAAI,KAAK,CAAC,EAAN,GAAW,aAAa,CAAC,CAAD,CAA5B,EAAiC;AAC7B;AACA,eAAO,EAAC,CAAC,EAAF,GAAO,KAAK,CAAC,EAApB,EAAwB;AACpB,YAAC,CAAC,MAAF,IAAY,CAAZ;AACH;AACJ,OALD,MAKO;AACH,eAAO,EAAC,CAAC,EAAF,GAAO,KAAK,CAAC,EAApB,EAAwB;AACpB,YAAC,CAAC,MAAF,IAAY,CAAC,CAAb;AACH;AACJ;;AACD,mBAAa,CAAC,IAAd,CAAmB,EAAnB;AACH;;AAED,QAAM,YAAY,GAAG,EAArB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,aAAa,CAAC,MAAd,GAAuB,CAA3C,EAA8C,CAAC,EAA/C,EAAmD;AAC/C,UAAM,YAAY,GAAG,IAAI,+CAAJ,CACjB,aAAa,CAAC,CAAD,CADI,EAEjB,aAAa,CAAC,CAAC,GAAG,CAAL,CAFI,CAArB;AAIA,kBAAY,CAAC,IAAb,CAAkB,YAAlB;AACH;;AACD,SAAK,IAAL,GAAY,YAAZ;AACH;;AAED,oBAAkB;AACd,WAAO,KAAK,IAAL,CAAU,MAAjB;AACH,GAjF4B,CAmF7B;;;AACA,gBAAc,CACV,QADU,EAEV,kBAAkB,GAAC,SAFT,EAGV,eAAe,GAAC,SAHN,EAIV,eAAe,GAAC,SAJN,EAKV,gBAAgB,GAAC,SALP,EAMV,cAAc,GAAC,SANL,EAMc;AAExB;AACA;AACA;AACA;AACA;AACA;AACA,QAAI,OAAO,QAAP,KAAoB,QAAxB,EAAkC;AAC9B,cAAQ,GAAG,IAAI,yCAAJ,CAAgB,QAAhB,CAAX;AACH,KAFD,MAEO;AACH,cAAQ,GAAG,QAAQ,CAAC,KAAT,EAAX;AACH;;AACD,QAAM,IAAI,GAAG,CAAC,QAAD,CAAb;;AACA,SAAK,IAAM,IAAX,IAAmB,KAAK,IAAxB,EAA8B;AAC1B,cAAQ,GAAG,IAAI,CAAC,cAAL,CAAoB,QAApB,CAAX;AACA,UAAI,CAAC,IAAL,CAAU,QAAV;AACH;;AACD,WAAO,IAAP;AACH;;AAED,wBAAsB,CAAC,cAAD,EAAiB,eAAjB,EAAkC,gBAAlC,EAAkD;AACpE,QAAM,eAAe,GAAG,gBAAgB,GAAG,CAA3C;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,eAApB,EAAqC,CAAC,EAAtC,EAA0C;AACtC,UAAM,QAAQ,GAAG,KAAK,IAAL,CAAU,CAAC,GAAG,KAAK,IAAL,CAAU,MAAxB,CAAjB;AACA,oBAAc,GAAG,QAAQ,CAAC,cAAT,CAAwB,cAAxB,CAAjB;AACH;;AACD,WAAO,cAAP;AACH,GAtH4B,CAwH7B;;;AACA,uBAAqB,CACjB,cADiB,EAEjB,eAFiB,EAGjB,WAHiB,EAIjB,0BAA0B,GAAC,SAJV,EAKjB,gBAAgB,GAAC,SALA,EAKS;AAE1B,QAAI,OAAO,WAAP,KAAuB,QAA3B,EAAqC;AACjC,iBAAW,GAAG,IAAI,yCAAJ,CAAgB,WAAhB,CAAd;AACH;;AACD,QAAI,eAAJ;;AACA,QAAI,KAAK,0BAAL,KAAoC,SAAxC,EAAmD;AAC/C,qBAAe,GAAG,KAAK,0BAAvB;AACH,KAFD,MAEO;AACH,qBAAe,GAAG,KAAK,cAAL,CAAoB,cAApB,CAAlB;AACA,WAAK,0BAAL,GAAkC,eAAlC;AACH;;AACD,QAAM,aAAa,GAAG,EAAtB;;AACA,SAAK,IAAM,CAAX,IAAgB,eAAhB,EAAiC;AAC7B,mBAAa,CAAC,IAAd,CAAmB,CAAC,CAAC,IAArB;AACH;;AACD,QAAM,aAAa,GAAG,aAAa,CAAC,OAAd,CAAsB,WAAW,CAAC,IAAlC,CAAtB;;AACA,QAAI,aAAa,KAAK,CAAC,CAAvB,EAA0B;AACtB,aAAO,SAAP;AACH,KAFD,MAEO;AACH,aAAO,aAAa,GAAG,CAAvB;AACH;AACJ;;AApJ4B;AAuJjC;;;AAGG;;AACG,MAAO,qBAAP,SAAqC,aAArC,CAAkD;AAOpD;;;;;;;AAOG;AACH,cAAY,IAAI,GAAC,OAAjB,EAAwB;AACpB;AACA,SAAK,IAAL,GAAY,mBAAZ;AACA,SAAK,WAAL,GAAmB,SAAnB;AACA,SAAK,cAAL,GAAsB,SAAtB;AACA,SAAK,iBAAL,GAAyB,IAAzB;AACA,SAAK,YAAL,CAAkB,IAAlB;AACH;;AArBmB,aAAT,SAAS;AAAK,WAAO,qCAAP;AAA+C;;AAuBxE,cAAY,CAAC,IAAD,EAAa;AACrB,QAAM,OAAO,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqC,IAArC,CAAhB;AACA,QAAI,YAAJ;AACA,SAAK,WAAL,GAAmB,CAAnB;AACA,SAAK,cAAL,GAAsB,CAAtB;;AACA,QAAI,CAAC,OAAD,EAAU,QAAV,EAAoB,QAApB,CAA6B,IAA7B,CAAJ,EAAwC;AACpC,kBAAY,GAAG,OAAf;AACA,WAAK,mBAAL,GAA2B,CAA3B;AACA,WAAK,mBAAL,GAA2B,CAA3B;AACH,KAJD,MAIO,IAAI,CAAC,OAAD,EAAU,SAAV,EAAqB,QAArB,CAA8B,IAA9B,CAAJ,EAAyC;AAC5C,kBAAY,GAAG,OAAO,CAAC,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAAf;AACA,kBAAY,CAAC,IAAb,CAAkB,GAAG,OAAO,CAAC,KAAR,CAAc,CAAd,EAAiB,CAAjB,CAArB;AACA,WAAK,mBAAL,GAA2B,CAA3B;AACA,WAAK,mBAAL,GAA2B,CAA3B;AACH;;AACD,SAAK,IAAL,GAAY,EAAZ;;AACA,SAAK,IAAM,OAAX,IAAsB,YAAtB,EAAoC;AAChC,WAAK,IAAL,CAAU,IAAV,CAAe,IAAI,+CAAJ,CAAsB,OAAtB,CAAf;AACH;AACJ;;AA3CmD;AA8CxD;;;AAGG;;AACG,MAAO,0BAAP,SAA0C,aAA1C,CAAuD;AACrC,aAAT,SAAS;AAAK,WAAO,0CAAP;AAAoD;;AAE7E;AACI;AACA,SAAK,IAAL,GAAY,yBAAZ;AACA,SAAK,iBAAL,GAAyB,IAAzB;AACA,SAAK,YAAL;AACH;;AAED,cAAY;AACR,QAAM,YAAY,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqC,IAArC,CAArB;AACA,SAAK,IAAL,GAAY,EAAZ;;AACA,SAAK,IAAM,OAAX,IAAsB,YAAtB,EAAoC;AAChC,WAAK,IAAL,CAAU,IAAV,CAAe,IAAI,+CAAJ,CAAsB,OAAtB,CAAf;AACH;AACJ;;AAhBwD,C,CAmB7D;AACA;;AACA;;AAEG;;AACG,MAAO,kCAAP,SAAkD,aAAlD,CAA+D;AAC7C,aAAT,SAAS;AAAK,WAAO,kDAAP;AAA4D;;AAErF;AACI;AACA,SAAK,IAAL,GAAY,kCAAZ;AACA,SAAK,iBAAL,GAAyB,IAAzB;AACA,SAAK,YAAL;AACH;;AAED,cAAY;AACR,QAAM,YAAY,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqC,IAArC,CAArB;AACA,SAAK,IAAL,GAAY,EAAZ;;AACA,SAAK,IAAM,OAAX,IAAsB,YAAtB,EAAoC;AAChC,WAAK,IAAL,CAAU,IAAV,CAAe,IAAI,+CAAJ,CAAsB,OAAtB,CAAf;AACH;AACJ;;AAhBgE;AAmBrE;;AAEG;;AACG,MAAO,aAAP,SAA6B,KAA7B,CAAkC;AAMpC,cAAY,KAAZ,EAAiB;AACb;;AACA,QAAI,OAAO,KAAP,KAAiB,QAArB,EAA+B;AAC3B,WAAK,GAAG,IAAI,yCAAJ,CAAgB,KAAhB,CAAR;AACH;;AACD,SAAK,KAAL,GAAa,KAAb;AACA,SAAK,QAAL,GAAgB,SAAhB;AACH;;AAZmB,aAAT,SAAS;AAAK,WAAO,6BAAP;AAAuC,GAD5B,CAepC;;;AACc,MAAV,UAAU;AACV,QAAI,KAAK,KAAL,KAAe,SAAnB,EAA8B;AAC1B,aAAO,IAAP;AACH,KAFD,MAEO;AACH,aAAO,KAAP;AACH;AACJ;;AAED,UAAQ;AACJ,WAAO,KAAK,KAAZ;AACH,GA1BmC,CA4BpC;AACA;AACA;AACA;AACA;AACA;AAEA;;;AACA,YAAU,CACN,eAAe,GAAC,SADV,EAEN,eAAe,GAAC,SAFV,EAGN,gBAAgB,GAAC,SAHX,EAGoB;AAE1B,QAAI,QAAJ;;AACA,QAAI,KAAK,KAAL,KAAe,SAAnB,EAA8B;AAC1B,cAAQ,GAAG,IAAI,yCAAJ,CAAgB,IAAhB,CAAX;AACH,KAFD,MAEO;AACH,cAAQ,GAAG,KAAK,KAAhB;AACH;;AACD,WAAO,KAAK,QAAL,CAAc,cAAd,CAA6B,QAA7B,CAAP;AACH,GAhDmC,CAkDpC;;;AACA,iBAAe,CACX,MADW,EAEX,eAAe,GAAC,SAFL,EAGX,eAAe,GAAC,SAHL,EAIX,gBAAgB,GAAC,SAJN,EAKX,oBAAoB,GAAC,SALV,EAKmB;AAE9B,WAAO,KAAK,QAAL,CAAc,sBAAd,CACH,KAAK,KADF,EAEH,KAAK,QAAL,CAAc,WAFX,EAGH,MAHG,CAAP;AAKH,GA/DmC,CAiEpC;;;AACA,yBAAuB,CACnB,WADmB,EAEnB,gBAAgB,GAAC,SAFE,EAGnB,0BAA0B,GAAC,SAHR,EAGiB;AAEpC,WAAO,KAAK,QAAL,CAAc,qBAAd,CACH,KAAK,KADF,EAEH,KAAK,QAAL,CAAc,WAFX,EAGH,WAHG,CAAP;AAKH;;AA5EmC;AA+ExC;;AAEG;;AACG,MAAO,aAAP,SAA6B,aAA7B,CAA0C;AACxB,aAAT,SAAS;AAAK,WAAO,6BAAP;AAAuC;;AAEhE,cAAY,KAAZ,EAAiB;AACb,UAAM,KAAN,EADa,CACC;;AACd,SAAK,QAAL,GAAgB,IAAI,qBAAJ,EAAhB;AACA,SAAK,IAAL,GAAY,UAAZ;AACH;;AAP2C;AAUhD;;AAEG;;AACG,MAAO,UAAP,SAA0B,aAA1B,CAAuC;AACrB,aAAT,SAAS;AAAK,WAAO,0BAAP;AAAoC;;AAE7D,cAAY,KAAZ,EAAiB;AACb,UAAM,KAAN,EADa,CACC;;AACd,SAAK,IAAL,GAAY,OAAZ;AACA,SAAK,QAAL,CAAc,YAAd,CAA2B,KAAK,IAAhC;AACH;;AAPwC;AAW7C;;AAEG;;AACG,MAAO,UAAP,SAA0B,aAA1B,CAAuC;AACrB,aAAT,SAAS;AAAK,WAAO,0BAAP;AAAoC;;AAE7D,cAAY,KAAZ,EAAiB;AACb,UAAM,KAAN,EADa,CACC;;AACd,SAAK,IAAL,GAAY,OAAZ;AACA,SAAK,QAAL,CAAc,YAAd,CAA2B,KAAK,IAAhC;AACH;;AAPwC;AAU7C;;AAEG;;AACG,MAAO,kBAAP,SAAkC,aAAlC,CAA+C;AAC7B,aAAT,SAAS;AAAK,WAAO,kCAAP;AAA4C;;AAErE,cAAY,KAAZ,EAAiB;AACb,UAAM,KAAN,EADa,CACC;;AACd,SAAK,IAAL,GAAY,gBAAZ;AACA,SAAK,QAAL,GAAgB,IAAI,0BAAJ,EAAhB;AACH;;AAPgD;AAUrD;;AAEG;;AACG,MAAO,0BAAP,SAA0C,aAA1C,CAAuD;AACrC,aAAT,SAAS;AAAK,WAAO,0CAAP;AAAoD;;AAE7E,cAAY,KAAZ,EAAiB;AACb,UAAM,KAAN,EADa,CACC;;AACd,SAAK,IAAL,GAAY,gBAAZ;AACA,SAAK,QAAL,GAAgB,IAAI,kCAAJ,EAAhB;AACH;;AAPwD;AAU7D;;;;;;;;;AASG;;AACG,SAAU,mBAAV,CAA8B,KAA9B,EAAqC,UAArC,EAA+C;AACjD,MAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,SAAK,GAAG,IAAI,yCAAJ,CAAgB,IAAhB,CAAR;AACH,GAFD,MAEO,IAAI,EAAE,KAAK,YAAY,yCAAnB,CAAJ,EAAqC;AACxC,UAAM,IAAI,2DAAJ,CACF,kCACM,gCADN,GAEM,KAHJ,CAAN;AAKH;;AACD,MAAI,UAAU,KAAK,SAAnB,EAA8B;AAC1B,cAAU,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,EAA0B,GAA1B,EAA+B,GAA/B,CAAb;AACH;;AACD,MAAM,EAAE,GAAG,IAAI,sDAAJ,CAA6B,CAA7B,CAAX;AACA,MAAM,OAAO,GAAkB,CAAC,KAAD,CAA/B;AACA,MAAI,SAAS,GAAG,KAAhB;;AACA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,UAAU,CAAC,MAA/B,EAAuC,CAAC,EAAxC,EAA4C;AACxC,QAAM,EAAE,GAAG,IAAI,uDAAJ,CAA8B,UAAU,CAAC,CAAD,CAAxC,EAA6C,EAA7C,CAAX;AACA,QAAM,EAAE,GAAG,IAAI,+CAAJ,CAAsB,EAAtB,CAAX;AACA,QAAM,QAAQ,GAAG,EAAE,CAAC,cAAH,CAAkB,SAAlB,CAAjB;;AACA,QAAI,yCAAJ,EAAW;AACP,aAAO,CAAC,GAAR,CAAY,uCAAuC,QAAQ,CAAC,IAA5D;AACH;;AACD,WAAO,CAAC,IAAR,CAAa,QAAb;AACA,aAAS,GAAG,QAAZ;AACH;;AACD,SAAO,OAAP;AACH;AAED;;;;;;;AAOG;;AACG,SAAU,gBAAV,CAA2B,KAA3B,EAA6C;AAC/C,MAAM,UAAU,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,EAA0B,GAA1B,EAA+B,GAA/B,CAAnB;AACA,SAAO,mBAAmB,CAAC,KAAD,EAAQ,UAAR,CAA1B;AACH;AAED;;;;;;;;;;AAUG;;AACG,SAAU,gBAAV,CAA2B,KAA3B,EAAkC,SAAlC,EAA2C;AAC7C,MAAM,UAAU,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,EAA0B,GAA1B,EAA+B,GAA/B,CAAnB;;AACA,MAAI,OAAO,SAAP,KAAqB,QAAzB,EAAmC;AAC/B;AACA,aAAS,GAAG,SAAS,CAAC,OAAV,CAAkB,KAAlB,EAAyB,GAAzB,CAAZ;AACH;;AACD,MAAI,SAAS,KAAK,UAAd,IAA4B,SAAS,KAAK,gBAA9C,EAAgE;AAC5D,cAAU,CAAC,CAAD,CAAV,GAAgB,GAAhB;AACA,cAAU,CAAC,CAAD,CAAV,GAAgB,GAAhB;AACH,GAHD,MAGO,IACH,SAAS,KAAK,SAAd,IACG,SAAS,KAAK,mBADjB,IAEG,SAAS,KAAK,eAFjB,IAGG,SAAS,KAAK,yBAJd,EAKL;AACE,cAAU,CAAC,CAAD,CAAV,GAAgB,GAAhB;AACA,cAAU,CAAC,CAAD,CAAV,GAAgB,GAAhB;AACH;;AACD,SAAO,mBAAmB,CAAC,KAAD,EAAQ,UAAR,CAA1B;AACH,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7iBD;;;;;;;;;AASG;AAEH;AACA;AAKA;AACG;;AACG,MAAO,cAAP,SAA8B,2DAA9B,CAA8C;AACpD;;;;;;;;;;;AAWG;;AACG,MAAO,OAAP,CAAc;AAApB;AACI,kBAAkB,KAAlB;AAEA,2BAAkC,KAAlC;AAGH;;AANmB;;AAQpB,IAAM,YAAY,GAAG,IAAI,OAAJ,EAArB;;AACA,YAAY,CAAC,eAAb,GAA+B,CAAC,CAAhC;AACA,YAAY,CAAC,SAAb,GAAyB,CAAC,CAA1B;;AAEA,IAAM,iBAAiB,GAAG,IAAI,qDAAJ,EAA1B;;AAEA,IAAM,sBAAsB,GAAG,IAAI,OAAJ,EAA/B;AAEA;;;;AAIG;;AACG,SAAU,KAAV,CAAgB,GAAhB,EAAmB;AACrB,MAAI,CAAC,sBAAsB,CAAC,GAAvB,CAA2B,GAA3B,CAAL,EAAsC;AAClC,QAAM,KAAK,GAAG,iBAAiB,CAAC,IAAlB,EAAd;;AACA,0BAAsB,CAAC,GAAvB,CAA2B,GAA3B,EAAgC,KAAhC;AACH;;AACD,SAAO,sBAAsB,CAAC,GAAvB,CAA2B,GAA3B,CAAP;AACH;AAED;;AAEG;;AACG,MAAO,KAAP,CAAY;AAKd;AAHU,sBAAqB,CAArB;AACA,mBAAkB,CAAC,CAAnB;AAGN,SAAK,QAAL,GAAgB,IAAI,GAAJ,EAAhB;AACA,SAAK,QAAL,CAAc,GAAd,CAAkB,YAAY,CAAC,SAA/B,EAA0C,YAA1C;AACH;;AAES,MAAN,MAAM;AACN,WAAO,KAAK,QAAL,CAAc,IAArB;AACH;;AAED,UAAQ,CAAC,SAAD,EAAkB;AACtB;AACA,SAAK,IAAM,CAAC,UAAD,EAAa,OAAb,CAAX,IAAoC,KAAK,QAAzC,EAAmD;AAC/C,UAAI,OAAO,CAAC,IAAR,KAAiB,SAArB,EAAgC;AAC5B,eAAO,IAAP;AACH;AACJ;;AACD,WAAO,KAAP;AACH;AAED;;;AAGG;;;AACO,aAAW,CAAC,WAAoB,IAArB,EAAyB;AAC1C,QAAM,IAAI,GAAG,EAAb;;AACA,SAAK,IAAM,CAAC,GAAD,EAAM,OAAN,CAAX,IAA6B,KAAK,QAAlC,EAA4C;AACxC,UAAM,MAAM,GAAG,CAAC,OAAO,CAAC,SAAT,EAAoB,GAApB,CAAf;AACA,UAAI,CAAC,IAAL,CAAU,MAAV;AACH;;AACD,QAAI,CAAC,IAAL;;AACA,QAAI,QAAJ,EAAc;AACV,UAAI,CAAC,OAAL;AACH;;AACD,WAAO,IAAI,CAAC,GAAL,CAAS,SAAS,IAAI,SAAS,CAAC,CAAD,CAA/B,CAAP;AACH;;AAED,KAAG,CAAC,GAAD,EAAM,KAAK,GAAC,SAAZ,EAAuB,cAAsB,SAA7C,EAAsD;AACrD,QAAI,KAAK,KAAK,SAAV,IAAuB,GAAG,KAAK,SAAnC,EAA8C;AAC1C,WAAK,GAAG,KAAK,CAAC,GAAD,CAAb;AACH;;AACD,QAAI,YAAY,GAAG,KAAnB;;AACA,QAAI,KAAK,QAAL,CAAc,GAAd,CAAkB,KAAlB,CAAJ,EAA8B;AAC1B,UAAM,WAAW,GAAG,KAAK,QAAL,CAAc,GAAd,CAAkB,KAAlB,CAApB;;AACA,UAAI,CAAC,WAAW,CAAC,MAAb,IAAuB,WAAW,CAAC,IAAZ,KAAqB,SAAhD,EAA2D;AACvD,oBAAY,GAAG,IAAf;AACH;AACJ;;AACD,QAAI,GAAG,KAAK,SAAR,IAAqB,WAAW,KAAK,SAAzC,EAAoD;AAChD,iBAAW,GAAG,GAAG,CAAC,OAAJ,CAAY,CAAZ,CAAd;AACH;;AAED,QAAI,OAAJ;;AACA,QAAI,YAAJ,EAAkB;AACd,aAAO,GAAG,KAAK,QAAL,CAAc,GAAd,CAAkB,KAAlB,CAAV;AACA,aAAO,CAAC,MAAR,GAAiB,KAAjB;AACH,KAHD,MAGO;AACH,aAAO,GAAG,IAAI,OAAJ,EAAV;AACH;;AAED,WAAO,CAAC,IAAR,GAAe,GAAf,CAvBqD,CAuBjC;;AACpB,WAAO,CAAC,WAAR,GAAsB,WAAtB;AACA,WAAO,CAAC,SAAR,GAAoB,KAAK,UAAzB;AACA,SAAK,UAAL,IAAmB,CAAnB;AACA,WAAO,CAAC,eAAR,GAA0B,iBAAiB,CAAC,IAAlB,EAA1B;;AAEA,QAAI,CAAC,YAAL,EAAmB;AACf,WAAK,QAAL,CAAc,GAAd,CAAkB,KAAlB,EAAyB,OAAzB;AACH;AACJ;AAED;;AAEG;;;AACH,QAAM,CAAC,GAAD,EAAI;AACN,QAAM,KAAK,GAAG,KAAK,CAAC,GAAD,CAAnB;;AACA,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,aAAO,KAAP;AACH;;AACD,WAAO,KAAK,QAAL,CAAc,MAAd,CAAqB,KAArB,CAAP;AACH;;AAED,OAAK;AACD,SAAK,QAAL,GAAgB,IAAI,GAAJ,EAAhB;AACA,SAAK,QAAL,CAAc,GAAd,CAAkB,YAAY,CAAC,SAA/B,EAA0C,YAA1C;AACA,SAAK,OAAL,GAAe,CAAC,CAAhB;AACH;AAED;AACG;;;AACS,GAAV,UAAU,CACR,qBAAqC,KAD7B,EAER,iBAAyB,SAFjB,EAGR,cAAuB,KAHf,EAGoB;AAE5B,QAAI,aAAJ;;AACA,QAAI,kBAAkB,KAAK,IAA3B,EAAiC;AAC7B,mBAAa,GAAG,KAAK,WAAL,CAAiB,KAAjB,CAAhB;AACH,KAFD,MAEO,IAAI,kBAAkB,KAAK,SAA3B,EAAsC;AACzC,mBAAa,GAAG,KAAK,WAAL,CAAiB,IAAjB,CAAhB;AACH,KAFM,MAEA;AACH,mBAAa,GAAG,KAAK,CAAC,IAAN,CAAW,KAAK,QAAL,CAAc,IAAd,EAAX,CAAhB;AACH;;AACD,QAAI,cAAc,KAAK,SAAvB,EAAkC;AAC9B,UAAM,UAAU,GAAG,KAAK,CAAC,cAAD,CAAxB;;AACA,UAAI,aAAa,CAAC,QAAd,CAAuB,UAAvB,CAAJ,EAAwC;AACpC,YAAM,aAAa,GAAG,aAAa,CAAC,OAAd,CAAsB,UAAtB,CAAtB;AACA,qBAAa,CAAC,MAAd,CAAqB,aAArB,EAAoC,CAApC;AACA,qBAAa,CAAC,OAAd,CAAsB,UAAtB;AACH;AACJ;;AACD,SAAK,IAAM,GAAX,IAAkB,aAAlB,EAAiC;AAC7B,UAAM,OAAO,GAAG,KAAK,QAAL,CAAc,GAAd,CAAkB,GAAlB,CAAhB;;AACA,UAAI,OAAO,KAAK,YAAhB,EAA8B;AAC1B,YAAI,CAAC,WAAL,EAAkB;AACd,gBAAM,OAAO,CAAC,IAAd;AACH;AACJ,OAJD,MAIO;AACH,YAAM,GAAG,GAAG,OAAO,CAAC,IAApB;;AACA,YAAI,GAAG,KAAK,SAAZ,EAAuB;AACnB,iBAAO,CAAC,MAAR,GAAiB,IAAjB;AACH,SAFD,MAEO;AACH,gBAAM,GAAN;AACH;AACJ;AACJ;AACJ;;AAED,KAAG,CACC,qBAA8B,KAD/B,EAEC,iBAAyB,SAF1B,EAGC,cAAuB,KAHxB,EAG6B;AAE5B,QAAM,IAAI,GAAG,KAAK,CAAC,IAAN,CACT,KAAK,UAAL,CAAgB,kBAAhB,EAAoC,cAApC,EAAoD,WAApD,CADS,CAAb,CAF4B,CAM5B;AACA;;AACA,QAAI,cAAc,KAAK,SAAvB,EAAkC;AAC9B,UAAI,IAAI,CAAC,QAAL,CAAc,cAAd,CAAJ,EAAmC;AAC/B,YAAM,aAAa,GAAG,IAAI,CAAC,OAAL,CAAa,cAAb,CAAtB;AACA,YAAI,CAAC,MAAL,CAAY,aAAZ,EAA2B,CAA3B;AACA,YAAI,CAAC,OAAL,CAAa,cAAb;AACH;AACJ;;AACD,WAAO,IAAP;AACH;AAED;;;;AAIG;;;AACH,eAAa,CAAC,QAAD,EAAS;AAClB,SAAK,IAAM,GAAX,IAAkB,KAAK,UAAL,CAAgB,SAAhB,CAAlB,EAA8C;AAC1C,UAAI,GAAG,KAAK,SAAZ,EAAuB;AACnB;AACH;;AACD,UAAI,QAAQ,IAAI,GAAhB,EAAqB;AACjB,eAAO,GAAG,CAAC,QAAD,CAAV;AACH;AACJ;;AACD,WAAO,SAAP;AACH;AAED;;;;;AAKG;;;AACH,eAAa,CAAC,SAAD,EAAoB,OAAO,GAAC,EAA5B,EAA8B;AACvC,QAAM,MAAM,GAAG;AACX,iBAAW,EAAE,IADF;AAEX,wBAAkB,EAAE,KAFT;AAGX,oBAAc,EAAE,SAHL;AAIX,sBAAgB,EAAE,sBAJP;AAKX,UAAI,EAAE;AALK,KAAf;AAOA,+CAAa,MAAb,EAAqB,OAArB;AACA,QAAM,IAAI,GAAG,MAAM,CAAC,IAApB;AACA,QAAI,IAAJ;AACA,QAAM,IAAI,GAAG,KAAK,CAAC,IAAN,CACT,KAAK,UAAL,CACI,MAAM,CAAC,kBADX,EAEI,MAAM,CAAC,cAFX,EAGI,IAHJ,CAGS;AAHT,KADS,CAAb;;AAOA,SAAK,IAAM,GAAX,IAAkB,IAAlB,EAAwB;AACpB,UAAI,GAAG,CAAC,iBAAJ,CAAsB,SAAtB,CAAJ,EAAsC;AAClC,YAAI,GAAG,GAAP;AACA;AACH;AACJ;;AACD,QAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,aAAO,IAAP;AACH;;AACD,SAAK,IAAM,IAAX,IAAkB,IAAlB,EAAwB;AACpB;AACA,UAAM,KAAK,GAAG,KAAK,CAAC,IAAD,CAAnB;;AACA,UAAI,EAAE,KAAK,IAAI,IAAX,CAAJ,EAAsB;AAClB,YAAI,CAAC,KAAD,CAAJ,GAAc,IAAd;AACH;;AACD,UAAI,GAAG,IAAG,CAAC,iBAAJ,CAAsB,SAAtB,EAAiC,MAAjC,CAAP;;AACA,UAAI,IAAI,KAAK,SAAb,EAAwB;AACpB;AACH;AACJ;;AACD,WAAO,IAAP;AACH;;AAvNa,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChElB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCG;AACH;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CAGA;;AACA;AAEA;AACA;AACA;AAKA;AACA;AACA;AAEM,MAAO,eAAP,SAA+B,4DAA/B,CAA+C;;AAOrD,SAAS,qBAAT,CAA+B,CAA/B,EAAgC;AAC5B,MAAM,GAAG,GAAG,IAAI,sEAAJ,CAA0B,CAA1B,CAAZ;AACA,SAAO,GAAG,CAAC,KAAJ,EAAP;AACH;AAiBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCG;;;AACG,MAAO,MAAP,SAAsB,iDAAtB,CAAwC;AA0D1C;AACI,YADJ,CAvDA;;AACA,uBAAmD,IAAI,OAAJ,EAAnD;AACA,qBAAkC,EAAlC,CAqDA,CApDA;;AACA,oBAAoB,IAApB,CAmDA,CAjDA;AACA;;AACA,oBAAoB,IAApB;AACA,qBAAqB,KAArB;AACA,0BAAyB,CAAC,EAA1B;AACA,yBAAwB,eAAxB,CA4CA,CA5C0C;AAC1C;AAEA;AACA;AACA;;AACA,oBAAoB,IAApB;AACA,kBAAkB,IAAlB,CAqCA,CApCA;AACA;AACA;AACA;AAEA;;AACA,yBAAgC,SAAhC;AACA,4BAAoC,SAApC;AACA,mCAAoC,SAApC,CA4BA,CA5B+C;AAW/C;;AACA,8BAAqC,SAArC,CAgBA,CAhBiD;;AAEjD,sBAA+B,SAA/B;AACA,iBAAQ,SAAR;AACA,uBAAc,SAAd;AACA,yBAAgB,SAAhB,CAWA,CAX2B;;AAC3B,0BAAiB,SAAjB,CAUA,CAV4B;;AAC5B,uBAAc,SAAd;AACA,qBAAqB,SAArB;AACA,yBAA6C,IAAI,0DAAJ,EAA7C;AACA,kBAAS,SAAT;AACA,sBAAqB,CAArB;AACA,wBAAe,KAAf;AACA,+BAAgC,SAAhC;AAKI,SAAK,eAAL,CAAqB,iBAArB,GAAyC,KAAzC;AACA,SAAK,eAAL,CAAqB,kBAArB,GAA0C,KAA1C;AACA,SAAK,eAAL,CAAqB,WAArB,GAAmC,KAAnC;;AACA,SAAK,eAAL,CAAqB,aAArB,GAAqC,SAAS,kBAAT,CACjC,OADiC,EAEjC,MAFiC,EAGjC,IAHiC,EAIjC,IAJiC,EAKjC,IALiC,EAK7B;AAEJ,UAAI,CAAC,IAAL,EAAW;AACP,cAAM,CAAC,aAAP,GAAuB,IAAI,CAAC,aAA5B;AACH,OAFD,MAEO;AACH,cAAM,CAAC,aAAP,GAAuB,IAAI,CAAC,aAAL,CAAmB,SAAnB,EAAvB;AACH;AACJ,KAZD;;AAcA,SAAK,eAAL,CAAqB,SAArB,GAAiC,SAAS,aAAT,CAC7B,OAD6B,EAE7B,MAF6B,EAG7B,IAH6B,EAI7B,IAJ6B,EAK7B,IAL6B,EAKzB;AAEJ,UAAI,CAAC,IAAL,EAAW;AACP,cAAM,CAAC,QAAP,GAAkB,IAAlB;AACA;AACH;;AACD,YAAM,CAAC,KAAP;;AACA,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,IAAI,CAAC,SAAL,CAAe,MAAnC,EAA2C,CAAC,EAA5C,EAAgD;AAC5C,YAAM,EAAE,GAAG,IAAI,CAAC,SAAL,CAAe,CAAf,CAAX;AACA,YAAM,QAAQ,GAAG,IAAI,CAAC,aAAL,CAAmB,EAAnB,CAAjB,CAF4C,CAG5C;;AACA,YAAM,MAAM,GAAG,EAAE,CAAC,KAAH,CAAS,IAAT,EAAe,IAAf,CAAf,CAJ4C,CAK5C;AACA;;AACA,cAAM,CAAC,MAAP,CACI,QADJ,EAEI,MAFJ,EAGI;AACI,oBAAU,EAAE;AADhB,SAHJ;AAOH,OArBG,CAsBJ;;AACH,KA5BD;;AA8BA,SAAK,kBAAL,GAA2B,CAAD,IAAmD;AACzE,UAAM,kBAAkB,GAAG,CAAC,CAAC,aAA7B;;AACA,UAAI,EAAE,kBAAkB,YAAY,WAAhC,KACG,EAAE,kBAAkB,YAAY,UAAhC,CADP,EACoD;AAChD,eAAO,SAAP;AACH;;AAED,UAAM,CAAC,sBAAD,EAAyB,SAAzB,IAAsC,KAAK,gBAAL,CACxC,kBADwC,EAExC,CAFwC,CAA5C;;AAIA,UAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,YAAI,0CAAJ,EAAW;AACP,iBAAO,CAAC,GAAR,CAAY,eAAZ;AACH;;AACD,eAAO,SAAP;AACH;;AACD,aAAO,KAAK,WAAL,CACH,sBADG,EAEH,SAFG,EAGH,kBAHG,CAAP;AAKH,KAtBD,CAjDJ,CAwEI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACH;;AA5JmB,aAAT,SAAS;AAAK,WAAO,uBAAP;AAAiC;AA8J1D;;;AAGG;;;AACe,IAAf,MAAM,CAAC,QAAQ,IAAC;AACf,QAAI,KAAK,QAAL,IAAiB,CAAC,KAAK,QAA3B,EAAqC;AACjC,WAAK,IAAL;AACH;;AAED,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,MAAzB,EAAiC,CAAC,EAAlC,EAAsC;AAClC,YAAM,KAAK,GAAL,CAAS,CAAT,CAAN;AACH;AACJ;;AAED,SAAO,CACH,QADG,EAEH,OAFG,EAEU;AAEb,QAAI,OAAO,KAAK,SAAhB,EAA2B;AACvB,cAAQ,GAAG,QAAQ,CAAC,IAAT,CAAc,OAAd,CAAX;AACH;;AACD,QAAI,CAAC,GAAG,CAAR;;AACA,SAAK,IAAM,EAAX,IAAiB,IAAjB,EAAuB;AACnB,cAAQ,CAAC,EAAD,EAAK,CAAL,EAAQ,IAAR,CAAR;AACA,OAAC,IAAI,CAAL;AACH;AACJ,GAzLyC,CA2L1C;;;AAEY,MAAR,QAAQ;AACR,QAAI,KAAK,mBAAL,YAAoC,gDAAxC,EAAkD;AAC9C;AACA,aAAO,KAAK,mBAAZ;AACH;;AACD,WAAO,IAAI,gDAAJ,CAAa,KAAK,WAAlB,CAAP;AACH;;AAEW,MAAR,QAAQ,CAAC,WAAD,EAAsB;AAC9B,SAAK,mBAAL,GAA2B,WAA3B;AACH;;AAEc,MAAX,WAAW;AACX,QAAI,WAAW,GAAG,GAAlB;;AACA,SAAK,IAAM,EAAX,IAAiB,IAAjB,EAAuB;AACnB,UAAI,OAAO,GAAG,EAAE,CAAC,MAAjB;;AACA,UAAI,EAAE,CAAC,QAAH,KAAgB,SAApB,EAA+B;AAC3B,eAAO,IAAI,EAAE,CAAC,QAAH,CAAY,aAAvB;AACH;;AACD,UAAI,OAAO,GAAG,WAAd,EAA2B;AACvB,mBAAW,GAAG,OAAd;AACH;AACJ;;AACD,WAAO,WAAP;AACH;;AAEW,MAAR,QAAQ;AACR,WAAO,KAAK,kBAAL,CAAwB,IAAxB,CAAP;AACH;;AAEO,MAAJ,IAAI;AACJ,WAAO,KAAK,kBAAL,CAAwB,KAAxB,CAAP;AACH;;AAED,oBAAkB,CAAC,gBAAD,EAAiB;AAC/B,QAAM,KAAK,GAAG,KAAK,KAAL,CAAW,KAAX,CAAd,CAD+B,CAE/B;;AACA,QAAI,CAAC,KAAK,MAAV,EAAkB;AACd;AACA;AACA;AACA,WAAK,CAAC,KAAN;AACA,UAAM,EAAE,GAAG,IAAI,gEAAJ,CAAmD,IAAnD,EAAyD;AAChE,0BAAkB,EAAE,KAD4C;AAEhE,mBAAW,EAAE,KAFmD;AAGhE,qBAAa,EAAE;AAHiD,OAAzD,CAAX;;AAKA,WAAK,IAAM,CAAX,IAAgB,EAAhB,EAAoB;AAChB,YAAI,CAAC,CAAC,QAAF,IAAc,CAAC,gBAAnB,EAAqC;AACjC;AACH;;AACD,aAAK,CAAC,MAAN,CACI,EAAE,CAAC,sBAAH,EADJ,EAEI,CAFJ,EAGI;AACI,uBAAa,EAAE,KADnB;AAEI,oBAAU,EAAE;AAFhB,SAHJ;AAQH;AACJ;;AACD,QAAI,CAAC,gBAAL,EAAuB;AACnB,WAAK,CAAC,MAAN,GAAe,IAAf;AACA,WAAK,CAAC,mBAAN,CAA0B;AAAE,oBAAY,EAAE;AAAhB,OAA1B;AACH,KAHD,MAGO;AACH,WAAK,CAAC,mBAAN;AACH;;AACD,WAAO,KAAP;AACH;;AAEQ,MAAL,KAAK;AACL,WAAO,KAAK,kBAAL,CAAwB,CAAC,MAAD,EAAS,OAAT,CAAxB,CAAP;AAEH;;AAEgB,MAAb,aAAa;AACb,WAAO,KAAK,kBAAL,CAAwB,aAAxB,CAAP;AACH;;AAEQ,MAAL,KAAK;AACL,QAAI,KAAK,MAAL,KAAgB,SAAhB,IAA6B,KAAK,UAAL,KAAoB,SAArD,EAAgE;AAC5D,aAAO,KAAK,UAAL,CAAgB,KAAvB;AACH,KAFD,MAEO,IAAI,KAAK,MAAL,KAAgB,SAApB,EAA+B;AAClC,aAAO,GAAP;AACH,KAFM,MAEA;AACH,aAAO,KAAK,MAAZ;AACH;AACJ;;AAEQ,MAAL,KAAK,CAAC,QAAD,EAAiB;AACtB,SAAK,MAAL,GAAc,QAAd;AACH;AAED;;;;;AAKG;;;AACH,0BAAwB;AACpB,QAAM,YAAY,GAAG,EAArB;AACA,QAAM,QAAQ,GAAG,KAAK,IAAtB;AACA,QAAM,cAAc,GAAG,QAAQ,CAAC,kBAAT,CAA4B,eAA5B,CAAvB;AAEA,QAAM,WAAW,GAAG,QAAQ,CAAC,WAA7B;AACA,QAAM,YAAY,GAAG,CAArB;AAEA,QAAM,SAAS,GAAG,IAAI,kDAAJ,CAAwB;AAAE,YAAM,EAAE;AAAV,KAAxB,CAAlB;;AAEA,QAAI,CAAC,cAAc,CAAC,MAApB,EAA4B;AACxB,kBAAY,CAAC,IAAb,CAAkB,CAAC,YAAD,EAAe,WAAf,EAA4B,SAA5B,CAAlB;AACH,KAFD,MAEO,IAAI,cAAc,CAAC,MAAf,KAA0B,CAA9B,EAAiC;AACpC,UAAM,aAAa,GAAG,cAAc,CAAC,GAAf,CAAmB,CAAnB,CAAtB;AACA,UAAM,MAAM,GAAG,aAAa,CAAC,eAAd,CAA8B,QAA9B,CAAf;;AACA,UAAI,MAAM,GAAG,YAAb,EAA2B;AACvB,oBAAY,CAAC,IAAb,CAAkB,CAAC,YAAD,EAAe,MAAf,EAAuB,SAAvB,CAAlB;AACA,oBAAY,CAAC,IAAb,CAAkB,CAAC,MAAD,EAAS,WAAT,EAAsB,aAAtB,CAAlB;AACH,OAHD,MAGO;AACH,oBAAY,CAAC,IAAb,CAAkB,CAAC,YAAD,EAAe,WAAf,EAA4B,aAA5B,CAAlB;AACH;AACJ,KATM,MASA;AACH,UAAM,WAAW,GAAG,EAApB;;AACA,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,cAAc,CAAC,MAAnC,EAA2C,CAAC,EAA5C,EAAgD;AAC5C,YAAM,cAAa,GAAG,cAAc,CAAC,GAAf,CAAmB,CAAnB,CAAtB;;AACA,mBAAW,CAAC,IAAZ,CAAiB,CACb,cAAa,CAAC,eAAd,CAA8B,QAA9B,CADa,EAEb,cAFa,CAAjB;AAIH;;AACD,UAAI,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,IAAoB,YAAxB,EAAsC;AAClC,oBAAY,CAAC,IAAb,CAAkB,CAAC,YAAD,EAAe,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAAf,EAAkC,SAAlC,CAAlB;AACH;;AACD,iBAAW,CAAC,OAAZ,CAAoB,CAAC,UAAD,EAAa,CAAb,KAAkB;AAClC,YAAI,CAAC,KAAK,WAAW,CAAC,MAAZ,GAAqB,CAA/B,EAAkC;AAC9B,sBAAY,CAAC,IAAb,CAAkB,CAAC,UAAU,CAAC,CAAD,CAAX,EAAgB,WAAhB,EAA6B,UAAU,CAAC,CAAD,CAAvC,CAAlB;AACH,SAFD,MAEO;AACH,sBAAY,CAAC,IAAb,CAAkB,CAAC,UAAU,CAAC,CAAD,CAAX,EAAgB,WAAW,CAAC,CAAC,GAAG,CAAL,CAAX,CAAmB,CAAnB,CAAhB,EAAuC,UAAU,CAAC,CAAD,CAAjD,CAAlB;AACH;AACJ,OAND;AAOH;;AACD,WAAO,YAAP;AACH;AAED;;;;;;AAMG;;;AACH,eAAa,CAAC,MAAD,EAAiB,IAAjB,EAA6B;AACtC,QAAM,eAAe,GAAG,IAAI,GAAG,MAA/B;AACA,WAAO,KAAK,wBAAL,GAAgC,MAAhC,CAAuC,CAAC,KAAD,EAAQ,EAAR,KAAc;AACxD,UAAI,EAAE,CAAC,CAAD,CAAF,IAAS,MAAT,IAAmB,EAAE,CAAC,CAAD,CAAF,GAAQ,IAA/B,EAAqC;AACjC,YAAM,UAAU,GAAG,EAAE,CAAC,CAAD,CAAF,IAAS,IAAT,GAAgB,EAAE,CAAC,CAAD,CAAF,GAAQ,EAAE,CAAC,CAAD,CAA1B,GAAgC,IAAI,GAAG,EAAE,CAAC,CAAD,CAA5D;AACA,aAAK,IAAK,UAAU,GAAG,eAAd,GAAiC,EAAE,CAAC,CAAD,CAAF,CAAM,MAAhD;AACH,OAHD,MAGO,IAAI,EAAE,CAAC,CAAD,CAAF,GAAQ,MAAR,IAAkB,EAAE,CAAC,CAAD,CAAF,IAAS,IAA/B,EAAqC;AACxC,YAAM,WAAU,GAAG,EAAE,CAAC,CAAD,CAAF,IAAS,MAAT,GAAkB,EAAE,CAAC,CAAD,CAAF,GAAQ,EAAE,CAAC,CAAD,CAA5B,GAAkC,EAAE,CAAC,CAAD,CAAF,GAAQ,MAA7D;;AACA,aAAK,IAAK,WAAU,GAAG,eAAd,GAAiC,EAAE,CAAC,CAAD,CAAF,CAAM,MAAhD;AACH,OAHM,MAGA,IAAI,EAAE,CAAC,CAAD,CAAF,IAAS,MAAT,IAAmB,EAAE,CAAC,CAAD,CAAF,IAAS,IAAhC,EAAsC;AACzC,aAAK,GAAG,EAAE,CAAC,CAAD,CAAF,CAAM,MAAd;AACH;;AACD,aAAO,KAAP;AACH,KAXM,EAWJ,CAXI,CAAP;AAYH;AAGD;;;AAGG;;;AACW,MAAV,UAAU;AACV,QAAI,KAAK,WAAL,KAAqB,SAArB,IAAkC,KAAK,UAAL,KAAoB,SAA1D,EAAqE;AACjE,aAAO,KAAK,UAAL,CAAgB,UAAvB;AACH,KAFD,MAEO;AACH,aAAO,KAAK,WAAZ;AACH;AACJ;;AAEa,MAAV,UAAU,CAAC,aAAD,EAA4C;AACtD,QAAI,OAAO,aAAP,KAAyB,QAA7B,EAAuC;AACnC,mBAAa,GAAG,IAAI,oDAAJ,CAA0B,aAA1B,CAAhB;AACH;;AACD,SAAK,WAAL,GAAmB,aAAnB;AACH;AAED;;;;;AAKG;;;AACH,iBAAe,CAAC,IAAD,EAAa;AACxB,QAAM,QAAQ,GAAG,MAAM,IAAvB;;AACA,QAAI,KAAK,QAAL,MAAmB,SAAvB,EAAkC;AAC9B,aAAO,KAAK,QAAL,CAAP;AACH,KAJuB,CAKxB;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAK,IAAM,IAAX,IAAmB,KAAK,KAAL,CAAW,UAAX,EAAnB,EAA4C;AACxC,UAAI,IAAI,KAAK,SAAb,EAAwB;AACpB;AACH;;AACD,UAAI,UAAU,GAAG,IAAI,CAAC,oBAAL,CAA0B,IAA1B,CAAjB;;AACA,UAAI,UAAU,KAAK,SAAnB,EAA8B;AAC1B,kBAAU,GAAG,IAAI,CAAC,eAAL,CAAqB,IAArB,CAAb;AACH;;AACD,UAAI,UAAU,KAAK,SAAnB,EAA8B;AAC1B,eAAO,UAAP;AACH;AACJ;;AACD,WAAO,SAAP;AACH;AAED;;;;;;AAMG;;;AACH,sBAAoB,CAAC,IAAD,EAAa;AAC7B,QAAM,aAAa,GAAG,KACjB,mBADiB,CACG,GADH,EAEjB,kBAFiB,CAEE,IAAI,CAAC,MAAL,CAAY,CAAZ,EAAe,WAAf,KAA+B,IAAI,CAAC,KAAL,CAAW,CAAX,CAFjC,CAAtB;;AAGA,QAAI,aAAa,CAAC,MAAlB,EAA0B;AACtB,aAAO,aAAa,CAAC,GAAd,CAAkB,CAAlB,CAAP;AACH,KAFD,MAEO;AACH,aAAO,SAAP;AACH;AACJ;;AAEO,MAAJ,IAAI;AACJ,WAAO,KAAK,iBAAL,CAAuB,MAAvB,EAA+B,KAA/B,CAAP;AACH;;AAEO,MAAJ,IAAI,CAAC,OAAD,EAAmB;AACvB,QAAM,OAAO,GAAG,KAAK,oBAAL,CAA0B,MAA1B,CAAhB;;AACA,QAAI,OAAO,KAAK,SAAhB,EAA2B;AACvB,WAAK,OAAL,CAAa,OAAb,EAAsB,OAAtB;AACH,KAFD,MAEO;AACH,WAAK,MAAL,CAAY,GAAZ,EAAiB,OAAjB;AACH;;AACD,SAAK,KAAL,GAAa,OAAb;AACH;;AAEe,MAAZ,YAAY;AACZ,WAAO,KAAK,iBAAL,CAAuB,cAAvB,EAAuC,KAAvC,CAAP;AACH;;AAEe,MAAZ,YAAY,CAAC,eAAD,EAAgB;AAC5B,QAAM,KAAK,GAAG,KAAK,oBAAL,CAA0B,cAA1B,CAAd;;AACA,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,WAAK,OAAL,CAAa,KAAb,EAAoB,eAApB;AACH,KAFD,MAEO;AACH,WAAK,MAAL,CAAY,GAAZ,EAAiB,eAAjB;AACH;;AACD,SAAK,aAAL,GAAqB,eAArB;AACH;;AAEgB,MAAb,aAAa;AACb,WAAO,KAAK,iBAAL,CAAuB,eAAvB,EAAwC,KAAxC,CAAP;AACH;;AAEgB,MAAb,aAAa,CAAC,gBAAD,EAAiB;AAC9B,QAAI,OAAO,gBAAP,KAA4B,QAAhC,EAA0C;AACtC,sBAAgB,GAAG,IAAI,kDAAJ,CAAwB,gBAAxB,CAAnB;AACH;;AACD,QAAM,KAAK,GAAG,KAAK,oBAAL,CAA0B,eAA1B,CAAd;;AACA,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,WAAK,OAAL,CAAa,KAAb,EAAoB,gBAApB;AACH,KAFD,MAEO;AACH,WAAK,MAAL,CAAY,GAAZ,EAAiB,gBAAjB;AACH;;AACD,SAAK,cAAL,GAAsB,gBAAtB;AACH;;AAEW,MAAR,QAAQ;AACR,WAAO,KAAK,eAAL,CAAqB,UAArB,CAAP;AACH;;AAEW,MAAR,QAAQ,CAAC,EAAD,EAAG;AACX,SAAK,SAAL,GAAiB,EAAjB;AACH;AAGD;;;;;;AAMG;;;AACe,MAAd,cAAc;AACd,QAAI,kBAAkB,GAAG,GAAzB;;AACA,QAAI,KAAK,aAAL,CAAmB,cAAnB,KAAsC,SAAtC,IACM,KAAK,UAAL,KAAoB,SAD9B,EACyC;AACrC,wBAAkB,GAAG,KAAK,UAAL,CAAgB,cAArC;AACH,KAHD,MAGO,IAAI,KAAK,aAAL,CAAmB,cAAnB,KAAsC,SAA1C,EAAqD;AACxD,wBAAkB,GAAG,KAAK,aAAL,CAAmB,cAAxC;AACH;;AACD,WAAO,kBAAkB,GAAG,KAAK,aAAL,CAAmB,WAAnB,CAA+B,CAA3D;AACH;AAGD;;;AAGG;;;AACe,MAAd,cAAc,CAAC,KAAD,EAAM;AACpB,SAAK,aAAL,CAAmB,cAAnB,GACM,KAAK,GAAG,KAAK,aAAL,CAAmB,WAAnB,CAA+B,CAD7C;AAEH;;AAEQ,MAAL,KAAK;AACL,WAAO,KAAK,kBAAL,CAAwB,MAAxB,CAAP;AACH,GA9fyC,CAggB1C;;;AACY,MAAR,QAAQ;AACR,WAAO,KAAK,kBAAL,CAAwB,SAAxB,CAAP;AACH;;AAES,MAAN,MAAM;AACN,WAAO,KAAK,kBAAL,CAAwB,OAAxB,CAAP;AACH;;AAES,MAAN,MAAM;AACN,WAAO,KAAK,SAAL,CAAe,MAAtB;AACH;AAED;;;;;;;;;AASG;;;AACS,MAAR,QAAQ;AACR,QAAI,CAAC,KAAK,QAAV,EAAoB;AAChB,WAAK,IAAL;AACH;;AACD,WAAO,KAAK,SAAZ;AACH;;AAEW,MAAR,QAAQ,CAAC,WAAD,EAAyC;AACjD,QAAI,kBAAkB,GAAG,GAAzB;AACA,SAAK,KAAL;AACA,QAAM,UAAU,GAAG,EAAnB;AACA,QAAI,CAAJ;AACA,QAAI,MAAJ;;AACA,QAAI,WAAW,YAAY,MAA3B,EAAmC;AAC/B;AACA,WAAK,IAAM,MAAX,IAAqB,WAArB,EAAkC,CAAE,CAFL,CAEM;;;AACrC,iBAAW,GAAG,WAAW,CAAC,QAA1B;AACH;;AAED,SAAK,CAAC,GAAG,CAAT,EAAY,CAAC,GAAG,WAAW,CAAC,MAA5B,EAAoC,CAAC,EAArC,EAAyC;AACrC,YAAM,GAAG,WAAW,CAAC,CAAD,CAApB;AACA,UAAM,YAAY,GAAG,MAAM,CAAC,MAA5B;;AACA,UAAI,YAAY,KAAK,SAAjB,IAA8B,YAAY,KAAK,kBAAnD,EAAuE;AACnE;AACA,aAAK,SAAL,CAAe,IAAf,CAAoB,MAApB;;AACA,aAAK,gBAAL,CAAsB,MAAtB,EAA8B,kBAA9B;AACA,cAAM,CAAC,KAAP,CAAa,GAAb,CAAiB,IAAjB;;AACA,YAAI,MAAM,CAAC,QAAP,KAAoB,SAAxB,EAAmC;AAC/B,iBAAO,CAAC,KAAR,CAAc,kBAAd,EAAkC,MAAlC,EAA0C,MAA1C,EAAkD,IAAlD;AACH;;AACD,0BAAkB,IAAI,MAAM,CAAC,QAAP,CAAgB,aAAtC;AACH,OATD,MASO;AACH;AACA,kBAAU,CAAC,IAAX,CAAgB,MAAhB;AACH;AACJ,KA5BgD,CA6BjD;;;AACA,SAAK,CAAC,GAAG,CAAT,EAAY,CAAC,GAAG,UAAU,CAAC,MAA3B,EAAmC,CAAC,EAApC,EAAwC;AACpC,YAAM,GAAG,UAAU,CAAC,CAAD,CAAnB;AACA,WAAK,MAAL,CAAY,MAAM,CAAC,MAAnB,EAA2B,MAA3B;AACH;;AACD,SAAK,mBAAL,GAlCiD,CAkCrB;AAC/B;AAED;;;;;;;;AAQG;;;AACH,mBAAiB,CAAC,OAAD,EAAU,UAAU,GAAC,KAArB,EAA0B;AACvC,QAAM,QAAQ,GAAG,KAAK,oBAAL,CAA0B,OAA1B,CAAjB;;AACA,QAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,aAAO,QAAP;AACH;;AACD,QAAM,eAAe,GAAG,KAAK,eAAL,CAAqB,OAArB,CAAxB;;AACA,QAAI,eAAe,KAAK,SAAxB,EAAmC;AAC/B,aAAO,SAAP;AACH;;AACD,QAAI,UAAJ,EAAgB;AACZ,aAAO,CAAC,IAAR,mCAAwC,OAAxC;AACH;;AACD,WAAO,eAAP;AACH;AAED;;AAEG;;;AACH,KAAG,CAAC,IAAD,EAAK;AACJ,WAAO,KAAK,CAAC,IAAN,CAAW,IAAX,EAAiB,GAAjB,CAAqB,IAArB,CAAP;AACH;;AAED,QAAM,CAAC,IAAD,EAAK;AACP,WAAO,KAAK,CAAC,IAAN,CAAW,IAAX,EAAiB,MAAjB,CAAwB,IAAxB,CAAP;AACH;;AAED,OAAK;AACD,SAAK,IAAM,CAAX,IAAgB,KAAK,SAArB,EAAgC;AAC5B,UAAI,CAAC,CAAC,UAAF,KAAiB,IAArB,EAA2B;AACvB,SAAC,CAAC,UAAF,GAAe,SAAf;AACH;;AACD,OAAC,CAAC,KAAF,CAAQ,MAAR,CAAe,IAAf;AACH;;AAED,SAAK,SAAL,GAAiB,EAAjB;AACA,SAAK,WAAL,GAAmB,IAAI,OAAJ,EAAnB;AACA,SAAK,MAAL,GAAc,IAAd;AACA,SAAK,QAAL,GAAgB,IAAhB;AACH;;AAED,qBAAmB,CAAC;AAChB,gBAAY,GAAC,IADG;AAEhB,iBAAa,GAAC,IAFE;AAGhB,QAAI,GAAC,SAHW;AAGA;AAChB,aAAS,GAAC;AAJM,MAKlB,EALiB,EAKf;AACA,QAAI,aAAJ,EAAmB;AACf,WAAK,QAAL,GAAgB,KAAhB;AACH;;AACD,QAAI,YAAJ,EAAkB;AACd,WAAK,MAAL,GAAc,IAAd;;AACA,WAAK,IAAM,CAAX,IAAgB,KAAK,SAArB,EAAgC;AAC5B,YAAI,CAAC,CAAC,QAAN,EAAgB;AACZ,eAAK,MAAL,GAAc,KAAd;AACA;AACH;AACJ;AACJ;AACJ;;AAED,SAAO,CAAC;AACJ,eAAW,GAAC,KADR;AAEJ,sBAAkB,GAAC,IAFf;AAGJ,eAAW,GAAC,SAHR;AAIJ,YAAQ,GAAC;AAJL,MAKN,EALK,EAKH;AACA,QAAM,WAAW,GAAG,CAAC,QAArB;AACA,QAAM,EAAE,GAAG,IAAI,gEAAJ,CACP,IADO,EAEP;AACI,iBADJ;AAEI,wBAFJ;AAGI;AAHJ,KAFO,CAAX;;AAQA,QAAI,WAAW,KAAK,SAApB,EAA+B;AAC3B,QAAE,CAAC,SAAH,CAAa,IAAI,yDAAJ,CAAwB,WAAxB,CAAb;AACH;;AACD,WAAO,EAAP;AACH;AAED;;;;;;AAMG;;;AACH,QAAM,CAAC,UAAD,EAAoD;AACtD,QAAI,KAAK,CAAC,OAAN,CAAc,UAAd,CAAJ,EAA+B;AAC3B,WAAK,IAAM,GAAX,IAAiB,UAAjB,EAA6B;AACzB,aAAK,MAAL,CAAY,GAAZ;AACH;;AACD,aAAO,IAAP;AACH;;AAED,QAAM,EAAE,GAAuB,UAA/B;;AACA,QAAI,EAAE,EAAE,YAAY,iDAAhB,CAAJ,EAAyC;AACrC,YAAM,IAAI,4DAAJ,CAAqB,mCAArB,CAAN;AACH;;AAED,QAAI;AACA,UACI,EAAE,CAAC,iBAAH,KAAyB,SAAzB,IACG,EAAE,CAAC,iBAAH,CAAqB,SAArB,CAFP,EAGE,CACE;AACH;;AACD,UAAM,QAAQ,GAAG,KAAK,WAAtB;;AACA,WAAK,SAAL,CAAe,IAAf,CAAoB,EAApB;;AACA,WAAK,gBAAL,CAAsB,EAAtB,EAA0B,QAA1B;AACA,QAAE,CAAC,MAAH,GAAY,QAAZ;AACA,QAAE,CAAC,KAAH,CAAS,GAAT,CAAa,IAAb;AACA,QAAE,CAAC,UAAH,GAAgB,IAAhB;AACH,KAbD,CAaE,OAAO,GAAP,EAAY;AACV,aAAO,CAAC,KAAR,CACI,wBADJ,EAEI,EAFJ,EAGI,aAHJ,EAII,IAJJ,EAKI,KALJ,EAMI,GANJ;AAQH;;AACD,SAAK,mBAAL,CAAyB;AAAE,mBAAa,EAAE;AAAjB,KAAzB;AACA,WAAO,IAAP;AACH;;AAED,MAAI;AACA,QAAI,KAAK,QAAT,EAAmB;AACf,aAAO,IAAP;AACH;;AACD,SAAK,SAAL,CAAe,IAAf,CAAoB,CAAC,CAAD,EAAI,CAAJ,KAAU,KAAK,WAAL,CAAiB,GAAjB,CAAqB,CAArB,IAA0B,KAAK,WAAL,CAAiB,GAAjB,CAAqB,CAArB,CAA1B,IACvB,CAAC,CAAC,QAAF,GAAa,CAAC,CAAC,QADQ,IAEvB,CAAC,CAAC,cAAF,GAAmB,CAAC,CAAC,cAF5B;;AAGA,SAAK,QAAL,GAAgB,IAAhB;AACA,WAAO,IAAP;AACH;AAED;;;;;;;;;AASG;;;AACH,QAAM,CACF,MADE,EAEF,EAFE,EAGF;AACI,cAAU,GAAC,KADf;AAEI,iBAAa,GAAC;AAFlB,MAGE,EANA,EAME;AAEJ,QAAI,EAAE,KAAK,SAAX,EAAsB;AAClB,YAAM,IAAI,eAAJ,CAAoB,mCAApB,CAAN;AACH;;AACD,QAAI;AACA,UAAI,CAAC,UAAL,EAAiB;AACb,YAAI,MAAM,IAAI,KAAK,WAAnB,EAAgC;AAC5B,eAAK,QAAL,GAAgB,KAAhB;AACH;AACJ;;AACD,WAAK,SAAL,CAAe,IAAf,CAAoB,EAApB;;AACA,WAAK,gBAAL,CAAsB,EAAtB,EAA0B,MAA1B;AACA,QAAE,CAAC,KAAH,CAAS,GAAT,CAAa,IAAb;;AACA,UAAI,aAAJ,EAAmB;AACf,UAAE,CAAC,UAAH,GAAgB,IAAhB;AACH;;AACD,WAAK,mBAAL,CAAyB;AAAE,qBAAa,EAAE;AAAjB,OAAzB;AACH,KAbD,CAaE,OAAO,GAAP,EAAY;AACV,aAAO,CAAC,KAAR,CACI,wBADJ,EAEI,EAFJ,EAGI,aAHJ,EAII,IAJJ,EAKI,KALJ,EAMI,GANJ;AAQH;;AACD,WAAO,IAAP;AACH;AAED;;;;;;;;;;;AAWG;;;AACH,gBAAc,CAAC,MAAD,EAAoC,aAApC,EAAsE;AAChF,QAAI,OAAJ;;AACA,QAAI,aAAa,KAAK,SAAtB,EAAiC;AAC7B,aAAO,GAAG,MAAV;AACA,YAAM,GAAG,OAAO,CAAC,MAAjB;AACH,KAHD,MAGO;AACH,aAAO,GAAG,aAAV;;AACA,UAAI,OAAO,MAAP,KAAkB,QAAtB,EAAgC;AAC5B,cAAM,IAAI,KAAJ,CAAU,uDAAV,CAAN;AACH;AACJ;;AACD,QAAM,aAAa,GAAG,OAAO,CAAC,QAAR,CAAiB,aAAvC;AAEA,QAAI,eAAe,GAAG,KAAtB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,MAAzB,EAAiC,CAAC,EAAlC,EAAsC;AAClC,UAAM,UAAU,GAAG,KAAK,SAAL,CAAe,CAAf,CAAnB;AACA,UAAM,gBAAgB,GAAG,KAAK,aAAL,CAAmB,UAAnB,CAAzB;;AACA,UAAI,CAAC,eAAD,IAAoB,gBAAgB,IAAI,MAA5C,EAAoD;AAChD,uBAAe,GAAG,IAAlB;AACH;;AACD,UAAI,eAAJ,EAAqB;AACjB,aAAK,gBAAL,CAAsB,UAAtB,EAAkC,gBAAgB,GAAG,aAArD;AACH;AACJ;;AACD,SAAK,MAAL,CAAY,MAAZ,EAA8B,OAA9B;AACA,WAAO,IAAP;AACH;AAED;;AAEG;;;AACH,OAAK,CAAC,EAAD,EAAuB;AACxB,QAAI,CAAC,KAAK,QAAN,IAAkB,KAAK,QAA3B,EAAqC;AACjC,WAAK,IAAL;AACH;;AACD,QAAM,KAAK,GAAG,KAAK,SAAL,CAAe,OAAf,CAAuB,EAAvB,CAAd;;AACA,QAAI,KAAK,KAAK,CAAC,CAAf,EAAkB;AACd;AACA,YAAM,IAAI,eAAJ,+BACqB,EADrB,iBAAN;AAGH;;AACD,WAAO,KAAP;AACH;AAED;;;AAGG;;;AACH,KAAG;AACC,QAAI,CAAC,KAAK,QAAN,IAAkB,KAAK,QAA3B,EAAqC;AACjC,WAAK,IAAL;AACH,KAHF,CAIC;;;AACA,QAAI,KAAK,MAAL,GAAc,CAAlB,EAAqB;AACjB,UAAM,EAAE,GAAG,KAAK,GAAL,CAAS,CAAC,CAAV,CAAX;;AACA,WAAK,SAAL,CAAe,GAAf;;AACA,WAAK,WAAL,CAAiB,MAAjB,CAAwB,EAAxB;;AACA,QAAE,CAAC,KAAH,CAAS,MAAT,CAAgB,IAAhB;AACA,WAAK,mBAAL,CAAyB;AAAE,qBAAa,EAAE;AAAjB,OAAzB;AACA,aAAO,EAAP;AACH,KAPD,MAOO;AACH,aAAO,SAAP;AACH;AACJ;AAED;;AAEG;;;AACH,QAAM,CACF,YADE,EAEF;AACI,gBAAY,GAAC,KADjB;AAEI,WAAO,GAAC;AAFZ,MAGI,EALF,EAKI;AAEN,QAAI,YAAY,KAAK,IAArB,EAA2B;AACvB,YAAM,IAAI,eAAJ,CAAoB,+BAApB,CAAN;AACH;;AACD,QAAI,OAAO,KAAK,IAAhB,EAAsB;AAClB,YAAM,IAAI,eAAJ,CAAoB,0BAApB,CAAN;AACH;;AAED,QAAI,UAAJ;;AACA,QAAI,CAAC,KAAK,CAAC,OAAN,CAAc,YAAd,CAAL,EAAkC;AAC9B,gBAAU,GAAG,CAAC,YAAD,CAAb;AACH,KAFD,MAEO;AACH,gBAAU,GAAG,YAAb;AACH,KAdK,CAeN;AACA;AACA;AACA;;;AACA,QAAI,CAAC,GAAG,CAAC,CAAT;;AACA,SAAK,IAAM,MAAX,IAAqB,UAArB,EAAiC;AAC7B,OAAC,IAAI,CAAL;AACA,UAAI,aAAa,SAAjB;;AACA,UAAI;AACA,qBAAa,GAAG,KAAK,KAAL,CAAW,MAAX,CAAhB;AACH,OAFD,CAEE,OAAO,GAAP,EAAY;AACV,YAAI,GAAG,YAAY,eAAnB,EAAoC;AAChC,cAAI,OAAJ,EAAa,CACT;AACH;;AACD;AACH;;AACD,cAAM,GAAN;AACH,OAb4B,CAe7B;AACA;AACA;AACA;AACA;;;AACA,WAAK,SAAL,CAAe,MAAf,CAAsB,aAAtB,EAAqC,CAArC;;AACA,WAAK,WAAL,CAAiB,MAAjB,CAAwB,MAAxB;;AACA,YAAM,CAAC,UAAP,GAAoB,SAApB;AACA,YAAM,CAAC,KAAP,CAAa,MAAb,CAAoB,IAApB,EAvB6B,CAwB7B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACH;;AACD,SAAK,mBAAL,CAAyB;AAAE,mBAAa,EAAE;AAAjB,KAAzB;AACH;AAED;;;;;;;AAOG;;;AACH,SAAO,CACH,MADG,EAEH,WAFG,EAGH;AACI,WAAO,GAAC,KADZ;AAEI,cAAU,GAAC;AAFf,MAGI,EAND,EAMG;AAEN,QAAI;AACA,WAAK,KAAL,CAAW,MAAX;AACH,KAFD,CAEE,OAAO,GAAP,EAAY;AACV,UAAI,GAAG,YAAY,eAAnB,EAAoC;AAChC;AACH,OAFD,MAEO;AACH,cAAM,GAAN;AACH;AACJ;;AACD,QAAM,YAAY,GAAG,KAAK,aAAL,CAAmB,MAAnB,CAArB;AACA,SAAK,MAAL,CAAY,MAAZ;AACA,SAAK,MAAL,CAAY,YAAZ,EAA0B,WAA1B;AACA,SAAK,mBAAL,CAAyB;AAAE,mBAAa,EAAE;AAAjB,KAAzB;AACH;AAED;;;;;;;;AAQG;;;AACH,KAAG,CAAC,KAAD,EAAc;AACb;AACA,QAAI,CAAC,KAAK,QAAV,EAAoB;AAChB,WAAK,IAAL;AACH;;AAED,QAAI,EAAJ;;AACA,QAAI,KAAK,KAAK,SAAV,IAAuB,MAAM,CAAC,KAAP,CAAa,KAAb,CAA3B,EAAgD;AAC5C,aAAO,SAAP;AACH,KAFD,MAEO,IAAI,IAAI,CAAC,GAAL,CAAS,KAAT,IAAkB,KAAK,SAAL,CAAe,MAArC,EAA6C;AAChD,aAAO,SAAP;AACH,KAFM,MAEA,IAAI,KAAK,KAAK,KAAK,SAAL,CAAe,MAA7B,EAAqC;AACxC,aAAO,SAAP;AACH,KAFM,MAEA,IAAI,KAAK,GAAG,CAAZ,EAAe;AAClB,QAAE,GAAG,KAAK,SAAL,CAAe,KAAK,SAAL,CAAe,MAAf,GAAwB,KAAvC,CAAL;AACA,QAAE,CAAC,UAAH,GAAgB,IAAhB;AACA,aAAO,EAAP;AACH,KAJM,MAIA;AACH,QAAE,GAAG,KAAK,SAAL,CAAe,KAAf,CAAL;AACA,QAAE,CAAC,UAAH,GAAgB,IAAhB;AACA,aAAO,EAAP;AACH;AACJ;AAED;;AAEG;;;AACH,KAAG,CAAC,KAAD,EAAQ,KAAR,EAAa;AACZ,QAAM,SAAS,GAAG,KAAK,GAAL,CAAS,KAAT,CAAlB;;AACA,QAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,YAAM,IAAI,eAAJ,uCAAmD,KAAnD,OAAN;AACH;;AACD,SAAK,OAAL,CAAa,SAAb,EAAwB,KAAxB;AACA,WAAO,IAAP;AACH;;AAGD,kBAAgB,CAAC,EAAD,EAAK,KAAL,EAAY,UAAU,GAAC,KAAvB,EAA4B;AACxC,QAAI,CAAC,KAAK,SAAL,CAAe,QAAf,CAAwB,EAAxB,CAAL,EAAkC;AAC9B,UAAI,UAAJ,EAAgB;AACZ,aAAK,MAAL,CAAY,KAAZ,EAAmB,EAAnB;AACA;AACH,OAHD,MAGO;AACH,cAAM,IAAI,eAAJ,CACF,uCACU,EAAE,CAAC,QAAH,EADV,GAEU,iBAHR,CAAN;AAKH;AACJ;;AACD,SAAK,WAAL,CAAiB,GAAjB,CAAqB,EAArB,EAAyB,KAAzB;;AACA,MAAE,CAAC,UAAH,GAAgB,IAAhB;AACH;;AAED,eAAa,CAAC,OAAD,EAAU,aAAa,GAAC,KAAxB,EAA6B;AACtC,QAAI,CAAC,KAAK,WAAL,CAAiB,GAAjB,CAAqB,OAArB,CAAL,EAAoC;AAChC,YAAM,IAAI,eAAJ,CACF,8BAA8B,OAAO,CAAC,QAAR,EAA9B,GAAmD,gCADjD,CAAN;AAGH,KAJD,MAIO;AACH,aAAO,KAAK,WAAL,CAAiB,GAAjB,CAAqB,OAArB,CAAP;AACH;AACJ;AAED;;AAEA;;;;;;;;;;;;;;AAcA,cAAY,CAAC,OAAD,EAAQ;AAChB,QAAM,MAAM,GAAG;AACX,iBAAW,EAAE,SADF;AAEX,0BAAoB,EAAE,SAFX;AAGX,mBAAa,EAAE,KAHJ;AAIX,kBAAY,EAAE,SAJH;AAKX,kBAAY,EAAE,OALH;AAMX,cAAQ,EAAE,KANC;AAOX,aAAO,EAAE;AAPE,KAAf;AASA,gDAAa,MAAb,EAAqB,OAArB;AACA,QAAI,UAAJ;;AACA,QAAI,KAAK,SAAL,EAAJ,EAAsB;AAClB,gBAAU,GAAG,KAAK,kBAAL,CAAwB,OAAxB,EAAiC,MAA9C;AACH,KAFD,MAEO;AACH,gBAAU,GAAG,CAAb;AACH,KAhBe,CAiBhB;AACA;AACA;AACA;AACA;AACA;AAEA;;;AACA,QAAM,OAAO,GAAG,KAAK,iBAAL,CAAuB,MAAvB,KAAkC,KAAK,iBAAL,CAAuB,MAAvB,CAAlD;AACA,QAAM,SAAS,GAAG,KAAK,SAAL,EAAlB;AACA,QAAI,IAAI,GAAG,CAAX;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,SAAS,CAAC,MAA9B,EAAsC,CAAC,EAAvC,EAA2C;AACvC,UAAI,SAAS,CAAC,CAAD,CAAT,CAAa,OAAb,GAAuB,IAA3B,EAAiC;AAC7B,YAAI,GAAG,SAAS,CAAC,CAAD,CAAT,CAAa,OAApB;AACH;AACJ;;AAED,QAAM,gBAAgB,GAA2B,KAAK,WAAtD;AACA,QAAM,IAAI,GAAY,IAAI,gBAAJ,EAAtB,CAnCgB,CAqChB;;AACA,QAAI,CAAC,GAAG,GAAR;AACA,QAAI,YAAY,GAAG,CAAnB;AACA,QAAI,iBAAJ;AACA,QAAI,CAAJ;AACA,QAAI,MAAJ;;AACA,WAAO,YAAY,KAAK,CAAjB,IAAsB,CAAC,GAAG,IAAjC,EAAuC;AACnC,OAAC,GAAG,IAAI,OAAJ,EAAJ;AACA,OAAC,CAAC,MAAF,GAAW,YAAY,GAAG,CAA1B,CAFmC,CAGnC;;AACA,UAAM,iBAAiB,GAAG,KAAK,aAA/B;;AACA,UAAI,iBAAiB,KAAK,SAA1B,EAAqC;AACjC;AACH;;AACD,UAAM,gBAAgB,GAChB,iBAAiB,CAAC,WAAlB,CAA8B,aADpC;;AAEA,UAAI,gBAAgB,KAAK,CAAzB,EAA4B;AACxB;AACA;AACH;;AACD,UAAI,YAAY,KAAK,CAArB,EAAwB,CACpB;AACH;;AACD,OAAC,CAAC,IAAF,GAAS,OAAT;AACA,OAAC,CAAC,aAAF,GAAkB,iBAAiB,CAAC,KAAlB,EAAlB;;AAEA,WAAK,IAAI,UAAU,GAAG,CAAtB,EAAyB,UAAU,GAAG,UAAtC,EAAkD,UAAU,EAA5D,EAAgE;AAC5D,YAAM,CAAC,GAAG,IAAI,KAAJ,EAAV;AACA,SAAC,CAAC,EAAF,GAAO,UAAP;AACA,SAAC,CAAC,MAAF,CAAS,CAAT,EAAY,CAAZ;AACH;;AACD,UAAI,CAAC,MAAL,CAAY,CAAZ,EAAe,CAAf;AACA,OAAC,IAAI,gBAAL;AACA,kBAAY,IAAI,CAAhB;AACA,uBAAiB,GAAG,iBAApB;AACH;;AACD,SAAK,IAAI,EAAC,GAAG,CAAb,EAAgB,EAAC,GAAG,SAAS,CAAC,MAA9B,EAAsC,EAAC,EAAvC,EAA2C;AACvC,UAAM,EAAE,GAAG,SAAS,CAAC,EAAD,CAApB;AACA,UAAM,CAAC,GAAG,EAAE,CAAC,OAAb;AACA,UAAM,KAAK,GAAG,EAAE,CAAC,MAAjB;AACA,UAAM,WAAU,GAAG,EAAE,CAAC,UAAtB,CAJuC,CAMvC;;AACA,uBAAiB,GAAG,SAApB;;AACA,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,IAAI,CAAC,MAAzB,EAAiC,CAAC,EAAlC,EAAsC;AAClC,SAAC,GAAG,IAAI,CAAC,GAAL,CAAS,CAAT,CAAJ,CADkC,CACjB;;AACjB,YAAM,OAAO,GAAG,CAAC,CAAC,iBAAF,CAAoB,eAApB,CAAhB;;AACA,YAAI,OAAO,KAAK,SAAhB,EAA2B;AACvB,2BAAiB,GAAG,OAApB;AACH;;AACD,cAAM,GAAG,CAAC,CAAC,eAAF,CAAkB,IAAlB,CAAT;AACA,YAAI,IAAI,SAAR;;AACA,YAAI,iBAAiB,KAAK,SAA1B,EAAqC;AACjC,cAAI,GACE,MAAM,GAAG,iBAAiB,CAAC,WAAlB,CAA8B,aAD7C;AAEH,SAHD,MAGO;AACH,cAAI,GAAG,MAAM,GAAG,GAAhB;AACH;;AACD,YAAI,KAAK,IAAI,MAAT,IAAmB,KAAK,GAAG,IAA/B,EAAqC;AACjC;AACH;AACJ,OAzBsC,CA0BvC;;;AACA,UAAM,IAAI,GAAG,KAAK,GAAG,MAArB;;AACA,UAAI,CAAC,CAAC,IAAF,KAAW,CAAf,EAAkB;AACd;AACH;;AACD,UAAI,IAAI,KAAK,CAAT,IAAc,CAAC,CAAC,iBAAF,CAAoB,eAApB,CAAlB,EAAwD;AACpD;AACH;;AACD,UAAI,YAAY,GAAG,CAAnB;;AACA,UAAI,WAAU,KAAK,SAAnB,EAA8B;AAC1B,oBAAY,GAAG,CAAC,CAAC,kBAAF,CAAqB,OAArB,EAA8B,GAA9B,CAAkC,WAAlC,CAAf;AACH;;AACD,kBAAY,CAAC,MAAb,CAAoB,IAApB,EAA0B,CAA1B;AACH,KAhHe,CAiHhB;;;AACA,QAAI,MAAM,CAAC,OAAP,KAAmB,IAAvB,EAA6B;AACzB,aAAO,IAAP;AACH,KAFD,MAEO;AACH,WAAK,QAAL,GAAgB,EAAhB,CADG,CAEH;AACA;;AACA,WAAK,IAAM,EAAX,IAAgB,IAAhB,EAAsB;AAClB,aAAK,MAAL,CAAY,EAAC,CAAC,MAAd,EAAsB,EAAtB;AACH;;AACD,aAAO,IAAP,CAPG,CAOU;AAChB;AACJ;;AAED,sBAAoB,CAAC,EAAD,EAAK;AAAE,iBAAa,GAAC;AAAhB,MAAuB,EAA5B,EAA8B;AAC9C,QAAM,OAAO,GAAG,EAAE,CAAC,KAAnB;;AACA,SAAK,IAAM,CAAX,IAAgB,KAAK,OAAL,CAAa;AACzB,cAAQ,EAAE,KADe;AAEzB,iBAAW,EAAE,IAFY;AAGzB,wBAAkB,EAAE;AAHK,KAAb,CAAhB,EAII;AACA,UAAI,OAAO,CAAC,QAAR,CAAiB,CAAjB,CAAJ,EAAyB;AACrB,YAAI,aAAJ,EAAmB;AACf,YAAE,CAAC,UAAH,GAAgB,CAAhB;AACH;;AACD,eAAO,CAAP;AACH;AACJ;;AACD,WAAO,SAAP;AACH;AAED;;AAEG;;;AACH,UAAQ,CAAC;AACL,WAAO,GAAC,IADH;AAEL,oBAAgB,GAAC,IAFZ;AAGL,0BAAsB,GAAC,IAHlB;AAIL,mBAAe,GAAC;AAJX,MAKP,EALM,EAKJ;AACA,QAAM,OAAO,GAAG,IAAhB;AACA,QAAI,cAAJ;;AACA,QAAI,KAAK,kBAAL,EAAJ,EAA+B;AAC3B,oBAAc,GAAG,OAAO,CAAC,kBAAR,CAA2B,QAA3B,EAAqC,GAArC,CAAyC,CAAzC,CAAjB;AACH,KAFD,MAEO;AACH,oBAAc,GAAG,OAAjB;AACH;;AACD,QAAM,QAAQ,GAAG,cAAc,CAAC,QAAf,CAAwB;AACrC,mBAAa,EAAE,KADsB;AAErC,mBAAa,EAAE,CAAC,aAAD,CAFsB;AAGrC,kBAAY,EAAE;AAHuB,KAAxB,CAAjB;AAKA,WAAO,QAAP;AACH;;AAED,UAAQ,CAAC;AACL,iBAAa,GAAC,IADT;AAEL,iBAAa,GAAC,EAFT;AAGL,gBAAY,GAAC;AAHR,MAIP,EAJM,EAIJ;AACA,QAAM,GAAG,GAAG,KAAK,UAAL,CAAgB,UAAhB,CAAZ;AACA,QAAM,QAAQ,GAAG;AACb,YAAM,EAAE,SADK;AAEb,aAAO,EAAE;AAFI,KAAjB;;AAIA,QAAM,eAAe,GAAG,SAAS,eAAT,GAAwB;AAC5C,UAAI,CAAC,aAAL,EAAoB;AAChB;AACH;;AACD,UAAI,QAAQ,CAAC,MAAT,KAAoB,SAAxB,EAAmC;AAC/B;AACH;;AACD,UAAM,MAAM,GAAG,QAAQ,CAAC,OAAT,GAAmB,QAAQ,CAAC,MAA3C;AACA,UAAM,OAAO,GAAG,IAAI,wCAAJ,EAAhB;AACA,aAAO,CAAC,QAAR,CAAiB,aAAjB,GAAiC,MAAjC;AACA,SAAG,CAAC,MAAJ,CAAW,QAAQ,CAAC,MAApB,EAA4B,OAA5B;AACA,cAAQ,CAAC,MAAT,GAAkB,SAAlB;AACA,cAAQ,CAAC,OAAT,GAAmB,SAAnB;AACH,KAbD;;AAcA,SAAK,IAAM,EAAX,IAAiB,IAAjB,EAAuB;AACnB,UAAI,EAAE,CAAC,QAAH,KACQ,YAAY,IAAI,EAAE,CAAC,OAAH,CAAW,QAAX,CAAoB,OAApB,CADxB,CAAJ,EAC2D;AACvD,uBAAe;AACf,YAAM,KAAK,GAAI,EAAa,CAAC,QAAd,CAAuB;AAClC,uBADkC;AAElC,uBAFkC;AAGlC;AAHkC,SAAvB,CAAf;AAKA,WAAG,CAAC,MAAJ,CAAW,EAAE,CAAC,MAAd,EAAsB,KAAtB;AACH;AACJ;;AACD,WAAO,GAAP;AACH;;AAED,YAAU,CAAC,gBAAD,EAA0B;AAChC,QAAM,SAAS,GAAG,KAAK,WAAL,EAAlB,CADgC,CAEhC;;AACA,aAAS,CAAC,eAAV,CAA0B,IAA1B;AACA,WAAO,SAAP;AACH;AAED;;;;AAIG;;;AACH,iBAAe,CAAC,KAAD,EAAc;AACzB,UAAM,eAAN,CAAsB,KAAtB;;AACA,SAAK,IAAM,IAAX,IAAmB,CACf,UADe,EAEf,UAFe,EAGf,6BAHe,EAIf,2BAJe,EAKf,kBALe,EAMf,UANe,CAAnB,EAOG;AACC,UAAI,MAAM,CAAC,SAAP,CAAiB,cAAjB,CAAgC,IAAhC,CAAqC,KAArC,EAA4C,IAA5C,CAAJ,EAAuD;AACnD,aAAK,IAAL,IAAa,KAAK,CAAC,IAAD,CAAlB;AACH;AACJ;;AACD,WAAO,IAAP;AACH;AAGD;;;;;AAKG;;;AACH,cAAY,CAAC;AAAE,WAAO,GAAC;AAAV,MAAiB,EAAlB,EAAoB;AAC5B,QAAI,GAAJ;;AACA,QAAI,OAAJ,EAAa;AACT,SAAG,GAAG,IAAN;AACH,KAFD,MAEO;AACH,SAAG,GAAG,KAAK,KAAL,CAAW,IAAX,CAAN;AACH;;AACD,SAAK,eAAL;AACA,WAAO,GAAP;AACH;AAGD;;;;;AAKG;;;AACH,WAAS,CACL;AACI,WAAO,GAAC,KADZ;AAEI,qBAAiB,GAAC;AAFtB,MAGiC,EAJ5B,EAI8B;AAEnC,WAAO,6DAAuB,IAAvB,EAA6B;AAAE,aAAF;AAAW;AAAX,KAA7B,CAAP;AACH;AAED;;;;;;;;;;;AAWG;;;AACH,oBAAkB;AACd,SAAK,IAAM,EAAX,IAAiB,IAAjB,EAAuB;AACnB,UAAI,EAAE,CAAC,OAAH,CAAW,QAAX,CAAoB,MAApB,CAAJ,EAAiC;AAC7B,eAAO,IAAP;AACH;AACJ;;AACD,WAAO,KAAP;AACH;AAGD;;;;AAIG;;;AACH,WAAS;AACL,SAAK,IAAM,EAAX,IAAiB,IAAjB,EAAuB;AACnB,UAAK,EAAgB,CAAC,KAAjB,KAA2B,SAAhC,EAA2C;AACvC,eAAO,IAAP;AACH;AACJ;;AACD,WAAO,KAAP;AACH;AAED;;AAEG;;;AACH,WAAS;AACL,QAAM,SAAS,GAAG,EAAlB;AACA,QAAI,MAAM,GAAG,EAAb;;AACA,QAAI,KAAK,SAAL,EAAJ,EAAsB;AAClB;AACA,gDAAO,KAAK,kBAAL,CAAwB,OAAxB,CAAP,EAAyC,CAAC,CAAD,EAAI,CAAJ,KAAS;AAC9C,cAAM,CAAC,IAAP,CAAY,CAAC,CAAC,CAAC,IAAH,EAAS,CAAT,CAAZ;AACH,OAFD;AAGH,KALD,MAKO;AACH,YAAM,GAAG,CAAC,CAAC,IAAD,EAAO,SAAP,CAAD,CAAT;AACH;;AACD,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,MAAM,CAAC,MAA3B,EAAmC,CAAC,EAApC,EAAwC;AACpC,UAAM,KAAK,GAAG,MAAM,CAAC,CAAD,CAAN,CAAU,CAAV,CAAd;AACA,UAAM,UAAU,GAAG,MAAM,CAAC,CAAD,CAAN,CAAU,CAAV,CAAnB;;AACA,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,CAAC,MAA1B,EAAkC,CAAC,EAAnC,EAAuC;AACnC,YAAM,CAAC,GAAG,KAAK,CAAC,GAAN,CAAU,CAAV,CAAV;AACA,YAAM,GAAG,GAAG,CAAC,CAAC,QAAF,CAAW,aAAvB;AACA,YAAM,MAAM,GAAG,KAAK,CAAC,aAAN,CAAoB,CAApB,CAAf;AACA,YAAM,OAAO,GAAG,MAAM,GAAG,GAAzB;AACA,YAAM,aAAa,GAAG,IAAI,SAAJ,CAClB,CADkB,EAElB,MAFkB,EAGlB,OAHkB,EAIlB,UAJkB,CAAtB;AAMA,iBAAS,CAAC,IAAV,CAAe,aAAf;AACH;AACJ;;AACD,WAAO,SAAP;AACH;;AAEO,MAAJ,IAAI;AACJ,WAAO,IAAI,6DAAJ,CAA4B,IAA5B,CAAP;AACH;AAED;;;;;AAKG;;;AACH,oBAAkB,CAAC,SAAD,EAA2B;AACzC,WAAO,KAAK,IAAL,CAAU,kBAAV,CAA6B,SAA7B,CAAP;AACH;AAED;;;;;AAKG;;;AACH,uBAAqB,CAAC,SAAD,EAA2B;AAC5C,WAAO,KAAK,IAAL,CAAU,qBAAV,CAAgC,SAAhC,CAAP;AACH,GA34CyC,CA64C1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AAOG;;;AACH,qBAAmB,CACf,WADe,EAEf,YAAoB,SAFL,EAGf;AACI,sBAAkB,GAAC,IADvB;AAEI,oBAAgB,GAAC,KAFrB;AAGI,mBAAe,GAAC,IAHpB;AAII,iCAA6B,GAAC,IAJlC;AAKI,aAAS,GAAC;AALd,MAME,EATa,EASX;AAGJ,QAAI,CAAJ;;AACA,QAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,OAAC,GAAG,KAAK,IAAL,CAAU,kBAAV,CAA6B,SAA7B,CAAJ;AACH,KAFD,MAEO;AACH,OAAC,GAAG,KAAK,IAAT;AACH;;AACD,KAAC,CAAC,mBAAF,CACI,WADJ,EAEI,SAFJ,EAGI;AACI,wBADJ;AAEI,sBAFJ;AAGI,qBAHJ;AAII;AAJJ,KAHJ;AAUA,WAAO,CAAP;AACH;AAED;;;;;;;;;;;;;;;;;;;;;;;AAuBG;;;AACH,qBAAmB,CAAC,EAAD,EAAyB,QAAzB,EAAkC;AACjD,QAAI,QAAJ;;AACA,QAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,cAAQ,GAAG,EAAE,CAAC,eAAH,CAAmB,QAAnB,CAAX;AACH,KAFD,MAEO;AACH,cAAQ,GAAG,EAAE,CAAC,MAAd;AACH;;AAED,QAAM,aAAa,GAAG,KAAK,mBAAL,CAAyB,QAAzB,EAAmC,QAAnC,EAA6C;AAAE,qBAAe,EAAE;AAAnB,KAA7C,CAAtB;;AACA,QAAI,aAAa,CAAC,MAAd,KAAyB,CAA7B,EAAgC;AAC5B,aAAO,SAAP;AACH,KAFD,MAEO,IAAI,aAAa,CAAC,MAAd,KAAyB,CAA7B,EAAgC;AACnC,aAAO,aAAa,CAAC,GAAd,CAAkB,CAAlB,CAAP;AACH,KAFM,MAEA;AACH,WAAK,IAAM,MAAX,IAAqB,aAArB,EAAoC;AAChC,YAAI,EAAE,CAAC,WAAH,KAAmB,MAAM,CAAC,WAA9B,EAA2C;AACvC,iBAAO,MAAP;AACH;AACJ;;AACD,aAAO,aAAa,CAAC,GAAd,CAAkB,CAAlB,CAAP;AACH;AACJ;AAGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDA,iBAAe,CAAC;AACZ,aAAS,GAAC,EADE;AAEZ,oBAAgB,GAAC,EAFL;AAGZ,mBAAe,GAAC,IAHJ;AAIZ,kBAAc,GAAC,EAJH;AAKZ,+BAA2B,GAAC,KALhB;AAKwB;AACpC,wBAAoB,GAAC,IANT;AAOZ,iBAAa,GAAC,KAPF;AAQZ,WAAO,GAAC,IARI;AASZ,kBAAc,GAAC,KATH;AAUZ,gCAA4B,GAAC,IAVjB;AAWZ,eAAW,GAAC,IAAI,GAAJ;AAXA,MAYY,EAZb,EAYe;;;AAC1B,QAAI,SAAJ;;AACA,QAAI,OAAJ,EAAa;AACT,eAAS,GAAG,IAAZ;AACH,KAFD,MAEO;AACH,eAAS,GAAG,KAAK,KAAL,CAAW,IAAX,CAAZ;AACH;;AACD,QAAI,EAAJ;;AACA,QAAI,eAAe,KAAK,IAAxB,EAA8B;AAC1B,QAAE,SAAG,KAAK,YAAR,MAAoB,IAApB,IAAoB,aAApB,GAAoB,EAApB,GAAwB,KAAK,iBAAL,CAAuB,cAAvB,CAA1B;AACH,KAFD,MAEO,IAAI,eAAe,KAAK,KAAxB,EAA+B;AAClC,QAAE,GAAG,eAAL;AACH;;AACD,QAAI,EAAE,KAAK,SAAX,EAAsB;AAClB,UAAM,eAAe,GAAG,EAAE,CAAC,cAA3B;AACA,oBAAc,CAAC,IAAf,CAAoB,GAAG,eAAvB;AACH;;AAED,QAAM,YAAY,GAAG,SAAS,CAAC,OAAV,GAAoB,aAAzC;;AAEA,SAAK,IAAM,CAAX,IAAgB,YAAhB,EAA8B;AAC1B,UAAK,CAAwB,CAAC,OAAzB,CAAiC,QAAjC,CAA0C,MAA1C,CAAL,EAAwD;AACpD,YAAM,CAAC,GAAI,CAAe,CAAC,KAA3B;AACA,YAAM,eAAe,GAAY,WAAW,CAAC,GAAZ,CAAgB,CAAC,CAAC,cAAlB,CAAjC;AAEA,SAAC,CAAC,uBAAF,CAA0B;AACtB,mBADsB;AAEtB,0BAFsB;AAGtB,wBAHsB;AAItB,8BAJsB;AAKtB,uBALsB;AAMtB,wBANsB;AAOtB,sCAPsB;AAQtB;AARsB,SAA1B;AAUA,iBAAS,CAAC,IAAV,CAAe,CAAf;AAEA,mBAAW,CAAC,KAAZ;AACA,YAAM,GAAG,GAAI,CAAe,CAAC,GAA7B;;AACA,YAAI,GAAG,KAAK,SAAR,IAAqB,GAAG,CAAC,IAAJ,KAAa,MAAtC,EAA8C;AAC1C,qBAAW,CAAC,GAAZ,CAAgB,CAAC,CAAC,cAAlB;AACH;AACJ,OArBD,MAqBO,IAAK,CAAwB,CAAC,OAAzB,CAAiC,QAAjC,CAA0C,OAA1C,CAAL,EAAyD;AAC5D,YAAM,UAAU,GAAI,CAAiB,CAAC,KAAtC;AACA,YAAM,cAAc,GAAgB,IAAI,GAAJ,EAApC;;AACA,aAAK,IAAM,CAAX,IAAgB,UAAhB,EAA4B;AACxB,cAAM,EAAC,GAAG,CAAC,CAAC,KAAZ;;AACA,cAAM,gBAAe,GAAY,WAAW,CAAC,GAAZ,CAAgB,EAAC,CAAC,cAAlB,CAAjC;;AAEA,YAAC,CAAC,uBAAF,CAA0B;AACtB,qBADsB;AAEtB,4BAFsB;AAGtB,0BAHsB;AAItB,gCAJsB;AAKtB,yBALsB;AAMtB,0BANsB;AAOtB,wCAPsB;AAQtB,2BAAe,EAAf;AARsB,WAA1B;;AAWA,cAAI,CAAC,CAAC,GAAF,KAAU,SAAV,IAAuB,CAAC,CAAC,GAAF,CAAM,IAAN,KAAe,MAA1C,EAAkD;AAC9C,0BAAc,CAAC,GAAf,CAAmB,EAAC,CAAC,cAArB;AACH;AACJ;;AACD,mBAAW,CAAC,KAAZ;;AACA,aAAK,IAAM,KAAX,IAAoB,cAApB,EAAoC;AAChC,qBAAW,CAAC,GAAZ,CAAgB,KAAhB;AACH;;AACD,iBAAS,CAAC,IAAV,CAAe,GAAI,CAAiB,CAAC,OAArC;AACH,OA3BM,MA2BA;AACH,mBAAW,CAAC,KAAZ;AACH;AAEJ;;AACD,WAAO,SAAP;AACH;AAED;;;;;;AAMG;;;AACH,2BAAyB;AACrB;AACA,WAAO,IAAP;AACH;AAED;;;;;;;AAOG;;;AACH,oBAAkB,CAAC,SAAD,EAAY,cAAZ,EAA0B;AACxC,QAAM,SAAS,GAAG,KAAK,aAAL,CAAmB,MAArC;AACA,SAAK,aAAL,GAAqB,IAAI,0DAAJ,EAArB;;AACA,QAAI,cAAJ,EAAoB;AAChB,WAAK,aAAL,CAAmB,MAAnB,GAA4B,SAA5B;AACH;;AAED,QAAI,SAAJ,EAAe;AACX,WAAK,IAAM,EAAX,IAAiB,IAAjB,EAAuB;AACnB,YAAI,EAAE,CAAC,iBAAH,CAAqB,QAArB,CAAJ,EAAoC;AAC/B,YAAa,CAAC,kBAAd,CAAiC,SAAjC,EAA4C,cAA5C;AACJ;AACJ;AACJ;;AACD,WAAO,IAAP;AACH,GApqDyC,CAsqD1C;;;AAEA,OAAK,CAAC,MAAM,GAAC,UAAR,EAAkB;AACnB,WAAO,qBAAqB,CAAC,IAAD,CAA5B;AACH;AAGD;;;;;;;;;;AAUG;;;AACH,eAAa,CAAC,YAAD,EAAa;AACtB;;AAEG;AACH,QAAI,WAAJ;;AACA,QAAI,YAAY,YAAY,oCAA5B,EAA+B;AAC3B,iBAAW,GAAG,YAAY,CAAC,CAAD,CAA1B;AACH,KAFD,MAEO;AACH,iBAAW,GAAG,YAAd;AACH;;AACD,QAAM,WAAW,GAAG,QAAQ,CAAC,IAAT,CAAc,QAAd,CAAuB,WAAvB,CAApB;;AACA,QAAI,CAAC,WAAL,EAAkB;AACd;AACA,cAAQ,CAAC,IAAT,CAAc,WAAd,CAA0B,WAA1B;AACH;;AACD,QAAM,OAAO,GAAG,WAAW,CAAC,OAAZ,CAAoB,WAApB,EAAhB;;AAEA,QAAI,KAAK,QAAL,KAAkB,IAAtB,EAA4B;AACxB,UAAI;AACA,aAAK,SAAL,CAAe;AAAE,iBAAO,EAAE;AAAX,SAAf;AACH,OAFD,CAEE,OAAO,CAAP,EAAU;AACR,YAAI,CAAC,CAAC,CAAC,QAAF,GAAa,QAAb,CAAsB,gBAAtB,CAAL,EAA8C;AAC1C,gBAAM,CAAN;AACH;AACJ;AACJ;;AACD,QAAM,GAAG,GAAG,IAAI,8CAAJ,CAAoB,IAApB,EAA0B,WAA1B,CAAZ;;AACA,QAAI,OAAO,KAAK,QAAhB,EAA0B;AACtB,SAAG,CAAC,YAAJ,GAAmB,QAAnB;AACH,KAFD,MAEO,IAAI,OAAO,KAAK,KAAhB,EAAuB;AAC1B,SAAG,CAAC,YAAJ,GAAmB,KAAnB;AACH;;AACD,OAAG,CAAC,MAAJ;AACA,SAAK,oBAAL,CAA0B,WAA1B;AACA,SAAK,gBAAL,GAAwB,GAAxB;;AACA,QAAI,CAAC,WAAL,EAAkB;AACd;AACA,cAAQ,CAAC,IAAT,CAAc,WAAd,CAA0B,WAA1B;AACH;;AAED,WAAO,GAAP;AACH;AAED;;;;;;AAMG;;;AACH,sBAAoB,CAAC;AAAC,iBAAa,GAAC,KAAf;AAAsB,sBAAkB,GAAC;AAAzC,MAAgD,EAAjD,EAAmD;AACnE,QAAM,WAAW,GAAG,KAAK,aAAL,CAAmB,eAAvC;AACA,QAAM,YAAY,GAAG,KAAK,aAAL,CAAmB,YAAxC,CAFmE,CAEZ;;AACvD,QAAM,aAAa,GAAG,KAAK,aAAL,CAAmB,aAAzC;AACA,QAAI,UAAJ;;AACA,QAAI,gBAAgB,KAApB,EAA2B;AACvB,UAAM,QAAQ,GAAG,KAAK,KAAL,CAAW,MAA5B;AACA,gBAAU,GAAG,KAAK,UAAL,EAAb;;AACA,UAAI,aAAJ,EAAmB;AACf,kBAAU,GAAG,CAAb;AACH;;AACD,UAAI,WAAW,GACT,UAAU,GAAG,WAAb,GAA2B,QAA3B,GACA,CAAC,UAAU,GAAG,CAAd,IAAmB,aAFzB;;AAIA,UAAI,CAAC,kBAAL,EAAyB;AACrB,mBAAW,IAAI,YAAf;AACH,OAZsB,CAcvB;;;AACA,UAAI,UAAU,GAAG,CAAjB,EAAoB;AAChB;AACA,mBAAW,IAAI,aAAa,GAAG,CAA/B;AACH,OAlBsB,CAoBvB;;;AACA,aAAO,WAAP;AACH,KAtBD,MAsBO,IAAI,gBAAgB,IAApB,EAA0B;AAC7B,gBAAU,GAAG,CAAb;;AACA,UAAI,CAAC,aAAL,EAAoB;AAChB,kBAAU,GAAG,KAAK,UAAL,EAAb;AACH;;AACD,UAAI,0CAAJ,EAAW;AACP,eAAO,CAAC,GAAR,CACI,gDACM,UADN,GAEM,mBAFN,GAGM,WAHN,GAIM,mBAJN,GAKM,UALN,GAMM,0BANN,GAOM,aAPN,GAQM,IATV;AAWH;;AACD,UAAI,UAAU,GAAG,UAAU,GAAG,WAAb,GAA2B,CAAC,UAAU,GAAG,CAAd,IAAmB,aAA/D;;AACA,UAAI,CAAC,kBAAL,EAAyB;AACrB,kBAAU,IAAI,YAAd;AACH;;AACD,aAAO,UAAP;AACH,KAvBM,MAuBA;AACH,UAAI,CAAC,kBAAL,EAAyB;AACrB,eAAO,WAAW,GAAG,YAArB;AACH,OAFD,MAEO;AACH,eAAO,WAAP;AACH;AACJ;AACJ;AAED;;;;AAIG;;;AACH,qBAAmB;;;AACf,QAAI,CAAJ;AACA,QAAI,WAAJ;;AACA,QAAI,KAAK,aAAL,CAAmB,eAAnB,KAAuC,SAA3C,EAAsD;AAClD;AACA,aAAO,KAAK,aAAL,CAAmB,eAA1B;AACH;;AACD,QAAI,KAAK,SAAL,EAAJ,EAAsB;AAClB,UAAI,SAAS,GAAG,CAAhB;;AACA,WAAK,IAAM,CAAX,IAAgB,IAAhB,EAAsB;AAClB,YAAI,CAAC,YAAY,MAAjB,EAAyB;AACrB,cAAM,UAAU,GACV,CAAC,CAAC,mBAAF,KAA0B,CAAC,CAAC,aAAF,CAAgB,YADhD;;AAEA,cAAI,UAAU,GAAG,SAAjB,EAA4B;AACxB,qBAAS,GAAG,UAAZ;AACH;AACJ;AACJ;;AACD,aAAO,SAAP;AACH,KAZD,MAYO,IAAI,CAAC,KAAK,MAAV,EAAkB;AACrB;AACA,iBAAW,GAAG,CAAd;;AACA,WAAK,CAAC,GAAG,CAAT,EAAY,CAAC,GAAG,KAAK,MAArB,EAA6B,CAAC,EAA9B,EAAkC;AAC9B,YAAM,CAAC,GAAG,KAAK,GAAL,CAAS,CAAT,CAAV;;AACA,YAAI,CAAC,YAAY,MAAjB,EAAyB;AACrB,qBAAW,IACJ,CAAC,CAAC,mBAAF,KAA0B,CAAC,CAAC,aAAF,CAAgB,YADjD;;AAEA,cAAI,CAAC,KAAK,CAAN,IAAW,CAAC,CAAC,aAAF,CAAgB,cAAhB,KAAmC,IAAlD,EAAwD;AACpD;AACH;AACJ;AACJ;;AACD,aAAO,WAAP;AACH,KAdM,MAcA;AACH,UAAM,MAAM,GAAG,KAAK,aAApB;AACA,iBAAW,GAAG,KAAK,KAAK,aAAL,CAAmB,MAAtC;;AACA,UAAI,MAAM,CAAC,WAAX,EAAwB;AACpB,mBAAW,IAAI,EAAf;AACH;;AACD,UAAI,MAAM,CAAC,mBAAX,EAAgC;AAC5B,YAAM,EAAE,GAAG,KAAK,iBAAL,CAAuB,cAAvB,CAAX;AACA,mBAAW,UAAI,EAAE,SAAF,MAAE,WAAF,GAAE,MAAF,KAAE,CAAE,KAAR,MAAa,IAAb,IAAa,aAAb,GAAa,EAAb,GAAiB,CAA5B;AACH;;AACD,UAAI,MAAM,CAAC,oBAAX,EAAiC;AAC7B,mBAAW,IAAI,EAAf;AACH,OAZE,CAaH;;;AACA,aAAO,WAAP;AACH;AACJ;AAED;;;;;;AAMG;;;AACH,UAAQ;AACJ,QAAI,CAAC,KAAK,QAAN,IAAkB,KAAK,QAA3B,EAAqC;AACjC,WAAK,IAAL;AACH;;AACD,QAAM,cAAc,GAAG,KAAK,QAA5B;AACA,QAAI,eAAe,GAAG,CAAtB;AACA,QAAM,SAAS,GAAG,IAAI,MAAJ,EAAlB,CANI,CAM4B;;AAChC,QAAI,qBAAqB,GAAG,GAA5B;;AACA,SAAK,IAAM,OAAX,IAAsB,cAAtB,EAAsC;AAClC,UAAI,OAAJ,EAAa;AACT,YAAI,OAAO,CAAC,MAAR,GAAiB,qBAArB,EAA4C;AACxC,cAAM,UAAU,GAAG,IAAI,iDAAJ,EAAnB;AACA,cAAM,gBAAgB,GAAG,OAAO,CAAC,MAAR,GAAiB,qBAA1C;AACA,oBAAU,CAAC,QAAX,GAAsB,KAAK,QAA3B;AACA,oBAAU,CAAC,QAAX,CAAoB,aAApB,GAAoC,gBAApC;AACA,mBAAS,CAAC,MAAV,CAAiB,qBAAjB,EAAwC,UAAxC;AACH;;AAAC,YAAI,cAAc,OAAd,IAAyB,OAAO,CAAC,QAAR,KAAqB,IAAlD,EAAwD;AACtD,yBAAe,GAAG,OAAO,CAAC,QAAR,CAAiB,aAAnC;AACH,SAFC,MAEK;AACH,yBAAe,GAAG,CAAlB;AACH;;AACD,6BAAqB,GACjB,IAAI,CAAC,GAAL,CAAS,qBAAT,EAAgC,OAAO,CAAC,MAAR,GAAiB,eAAjD,CADJ;AAGH;AACJ;;AACD,aAAS,CAAC,IAAV;;AACA,QAAI,SAAS,CAAC,QAAV,CAAmB,MAAvB,EAA+B;AAC3B,aAAO,SAAP;AACH;;AACD,WAAO,IAAP;AACH;AAED;;;;;AAKG;;;AAEU,MAAT,SAAS;AACT,WAAQ,KAAK,QAAL,OAAoB,IAA5B;AACH,GA94DyC,CAg5D1C;;AAEA;;;;;;;;;AASG;;;AACH,YAAU,CAAC,OAAO,GAAC,EAAT,EAAW;AACjB,QAAM,MAAM,GAAG;AACX,gBAAU,EAAE,KAAK,UADN;AAEX,WAAK,EAAE,KAAK,KAFD;AAGX,UAAI,EAAE,SAHK;AAIX,eAAS,EAAE;AAJA,KAAf;AAMA,gDAAa,MAAb,EAAqB,OAArB;AACA,QAAM,cAAc,GAAG,MAAM,CAAC,SAA9B;AACA,QAAI,gBAAgB,GAAG,CAAvB;;AACA,QAAI,cAAc,KAAK,SAAvB,EAAkC;AAC9B,sBAAgB,GAAG,cAAnB;AACH;;AACD,QAAM,QAAQ,GAAG,KAAK,IAAtB;AACA,QAAM,OAAO,GAAG,EAAhB;;AACA,SAAK,IAAM,EAAX,IAAiB,QAAjB,EAA2B;AACvB,aAAO,CAAC,IAAR,CAAa,EAAb;AACH;;AACD,QAAM,aAAa,GAAG,OAAO,CAAC,MAAR,GAAiB,CAAvC;AACA,SAAK,YAAL,GAAoB,KAApB;;AAEA,QAAM,QAAQ,GAAG,CAAC,QAAD,EAAW,MAAX,KAAqB;AAClC,UAAI,gBAAgB,IAAI,aAApB,IAAqC,CAAC,KAAK,YAA/C,EAA6D;AACzD,YAAM,IAAE,GAAG,QAAQ,CAAC,gBAAD,CAAnB;AACA,YAAI,QAAJ;AACA,YAAI,YAAJ;;AACA,YAAI,gBAAgB,GAAG,aAAvB,EAAsC;AAClC,kBAAQ,GAAG,QAAQ,CAAC,gBAAgB,GAAG,CAApB,CAAnB;AACA,sBAAY,GAAG,QAAQ,CAAC,aAAT,CAAuB,QAAvB,IAAmC,QAAQ,CAAC,aAAT,CAAuB,IAAvB,CAAlD;AACH,SAHD,MAGO;AACH,sBAAY,GAAG,IAAE,CAAC,QAAH,CAAY,aAA3B;AACH;;AACD,YAAM,YAAY,GAAG,YAAY,GAAG,IAAf,GAAsB,EAAtB,GAA2B,MAAM,CAAC,KAAvD,CAVyD,CAYzD;AACA;AACA;AACA;;AAEA,YAAI,0CAAJ,EAAW;AACP,iBAAO,CAAC,GAAR,CACI,WADJ,EAEI,IAFJ,EAGI,YAHJ,EAII,YAJJ,EAKI,MAAM,CAAC,KALX;AAOH;;AAED,YAAI,IAAE,CAAC,QAAH,KAAgB,SAApB,EAA+B;AAC3B,cAAE,CAAC,QAAH,CAAY,MAAM,CAAC,KAAnB,EAA0B,QAA1B,EAAoC,MAApC;AACH;;AACD,wBAAgB,IAAI,CAApB;AACA,kBAAU,CAAC,MAAK;AACZ,kBAAQ,CAAC,QAAD,EAAW,MAAX,CAAR;AACH,SAFS,EAEP,YAFO,CAAV;AAGH,OAlCD,MAkCO,IAAI,MAAM,IAAI,MAAM,CAAC,IAArB,EAA2B;AAC9B,cAAM,CAAC,IAAP,CAAY,IAAZ;AACH;AACJ,KAtCD;;AAuCA,YAAQ,CAAC,OAAD,EAAU,MAAV,CAAR;AACA,WAAO,IAAP;AACH;AAED;;;;AAIG;;;AACH,gBAAc;AACV;AACA,SAAK,YAAL,GAAoB,IAApB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,GAApB,EAAyB,CAAC,EAA1B,EAA8B;AAC1B,qDAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB;AACH;;AACD,WAAO,IAAP;AACH;AACD;;;;AAIG;;AAEH;;;;;;;;;;;;;;;;;AAiBG;;;AACH,cAAY,CACR,KADQ,EAER,MAFQ,EAGR,WAAW,GAAC,KAHJ,EAGS;AAEjB,QAAI,CAAC,KAAK,MAAV,EAAkB;AACd,WAAK,yBAAL;AACH;;AAED,QAAI,eAAJ;;AAEA,QAAI,WAAW,KAAK,KAApB,EAA2B;AACvB;AACA,qBAAe,GAAG,oCAAC,CAAC,QAAD,CAAnB;AACH,KAHD,MAGO,IAAI,WAAW,KAAK,QAApB,EAA8B;AACjC,qBAAe,GAAG,oCAAC,CAAC,WAAD,CAAnB;AACH;;AAED,mBAAe,CAAC,QAAhB,CAAyB,eAAzB,EAfiB,CAe0B;;AAC3C,mBAAe,CAAC,GAAhB,CAAoB,SAApB,EAA+B,cAA/B;;AAEA,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,UAAI,OAAO,KAAP,KAAiB,QAArB,EAA+B;AAC3B,aAAK,GAAG,8CAAe,KAAf,CAAR;AACH;;AACD,qBAAe,CAAC,IAAhB,CAAqB,OAArB,EAA8B,KAA9B;AACH,KALD,MAKO;AACH,UAAM,aAAa,GACb,KAAK,mBAAL,KACA,KAAK,aAAL,CAAmB,YAFzB;AAGA,qBAAe,CAAC,IAAhB,CAAqB,OAArB,EAA8B,aAA9B;AACH;;AACD,QAAI,MAAM,KAAK,SAAf,EAA0B;AACtB,qBAAe,CAAC,IAAhB,CAAqB,QAArB,EAA+B,MAA/B;AACH,KAFD,MAEO;AACH,UAAI,cAAJ;;AACA,UAAI,KAAK,aAAL,CAAmB,MAAnB,KAA8B,SAAlC,EAA6C;AACzC,sBAAc,GAAG,KAAK,oBAAL,EAAjB,CADyC,CAEzC;AACH,OAHD,MAGO;AACH,sBAAc,GAAG,KAAK,aAAL,CAAmB,MAApC,CADG,CAEH;AACH;;AACD,qBAAe,CAAC,IAAhB,CACI,QADJ,EAEI,cAAc,GAAG,KAAK,aAAL,CAAmB,WAAnB,CAA+B,CAFpD;AAIH;;AACD,WAAO,eAAP;AACH;AAED;;;;;;;;;AASG;;;AACH,mBAAiB,CACb,QAAiC,SADpB,EAEb,SAAkC,SAFrB,EAGb,WAAW,GAAC,KAHC,EAGI;AAEjB,SAAK,aAAL,CAAmB,MAAnB,CAA0B,KAA1B,GAAkC,MAAlC;AACA,WAAO,KAAK,SAAL,CAAe,KAAf,EAAsB,MAAtB,EAA8B,WAA9B,CAAP;AACH;AAED;;;;;;;AAOG;;;AACH,WAAS,CACL,QAAiC,SAD5B,EAEL,SAAkC,SAF7B,EAGL,cAAsB,KAHjB,EAGsB;AAE3B,QAAM,OAAO,GAAG,KAAK,YAAL,CAAkB,KAAlB,EAAyB,MAAzB,EAAiC,WAAjC,CAAhB,CAF2B,CAG3B;AACA;;AACA,SAAK,aAAL,CAAmB,OAAnB;AACA,WAAO,OAAP;AACH;AAED;;;;;;;;;;AAUG;;;AACH,cAAY,CACR,gBAAoC,QAAQ,CAAC,IADrC,EAER,QAAuB,SAFf,EAGR,SAAwB,SAHhB,EAIR,cAAsB,KAJd,EAImB;AAE3B;AACA,QAAI,cAAJ;;AACA,QAAI,aAAa,YAAY,oCAA7B,EAAgC;AAC5B,oBAAc,GAAiB,aAA/B;AACH,KAFD,MAEO;AACH,oBAAc,GAAG,oCAAC,CAAC,aAAD,CAAlB;AACH,KAR0B,CAU3B;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA,QAAM,iBAAiB,GAAG,KAAK,SAAL,CAAe,KAAf,EAAsB,MAAtB,EAA8B,WAA9B,CAA1B;AACA,kBAAc,CAAC,MAAf,CAAsB,iBAAtB;AACA,WAAO,iBAAiB,CAAC,CAAD,CAAxB;AACH;AAED;;;;;;;;;;AAUG;;;AACH,YAAU,CAAC,KAAD,EAAQ,kBAAyB,KAAjC,EAAwC,cAAoB,KAA5D,EAAiE;AACvE;AACA,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,WAAK,GAAG,QAAQ,CAAC,IAAjB;AACH;;AACD,QAAI,MAAJ;;AACA,QAAI,EAAE,KAAK,YAAY,oCAAnB,CAAJ,EAA2B;AACvB,YAAM,GAAG,oCAAC,CAAC,KAAD,CAAV;AACH,KAFD,MAEO;AACH,YAAM,GAAG,KAAT,CADG,CAEH;AACH;;AACD,QAAI,eAAJ;;AAEA,QAAI,MAAM,CAAC,QAAP,CAAgB,eAAhB,CAAJ,EAAsC;AAClC,qBAAe,GAAG,MAAlB;AACH,KAFD,MAEO;AACH,qBAAe,GAAG,MAAM,CAAC,IAAP,CAAY,gBAAZ,CAAlB;AACH,KAlBsE,CAmBvE;;;AACA,QAAI,eAAe,CAAC,MAAhB,KAA2B,CAA/B,EAAkC;AAC9B,YAAM,IAAI,4DAAJ,CAAqB,gCAArB,CAAN;AACH,KAFD,MAEO,IAAI,eAAe,CAAC,MAAhB,GAAyB,CAA7B,EAAgC;AACnC;AACA;AACA;AACA;AACA,qBAAe,GAAG,oCAAC,CAAC,eAAe,CAAC,eAAe,CAAC,MAAhB,GAAyB,CAA1B,CAAhB,CAAnB;AACH;;AAED,QAAI,QAAJ;;AACA,QAAI,eAAJ,EAAqB;AACjB,UAAM,KAAK,GAAG,eAAe,CAAC,KAAhB,MAA2B,QAAQ,CAAC,eAAe,CAAC,IAAhB,CAAqB,OAArB,CAAD,CAAjD;AACA,UAAM,MAAM,GAAG,eAAe,CAAC,IAAhB,CAAqB,QAArB,CAAf,CAFiB,CAE8B;;AAC/C,cAAQ,GAAG,KAAK,SAAL,CAAe,KAAf,EAAsB,MAAtB,EAA8B,WAA9B,CAAX;AACH,KAJD,MAIO;AACH,cAAQ,GAAG,KAAK,SAAL,CAAe,SAAf,EAA0B,SAA1B,EAAqC,WAArC,CAAX;AACH;;AAED,mBAAe,CAAC,WAAhB,CAA4B,QAA5B;AACA,WAAO,QAAP;AACH;AAGD;;;;;;;;;;;;;;;AAeG;;;AACH,sBAAoB,CAAC,WAAD,EAAgC;AAChD,QAAI,IAAJ;;AACA,QAAI,WAAW,KAAK,SAApB,EAA+B;AAC3B,aAAO,IAAP;AACH,KAFD,MAEO,IAAI,EAAE,WAAW,YAAY,oCAAzB,CAAJ,EAAiC;AACpC,UAAI,GAAG,oCAAC,CAAC,WAAD,CAAR;AACH,KAFM,MAEA;AACH,UAAI,GAAY,WAAhB;AACH;;AACD,QAAM,QAAQ,GAAG,MAAK;AAClB,WAAK,UAAL;AACH,KAFD;;AAIA,SAAK,IAAM,CAAC,SAAD,EAAY,aAAZ,CAAX,IAAyC,MAAM,CAAC,OAAP,CAAe,KAAK,aAAL,CAAmB,MAAlC,CAAzC,EAAoF;AAChF,UAAI,CAAC,GAAL,CAAS,SAAT;;AACA,UACI,OAAO,aAAP,KAAyB,QAAzB,IACG,aAAa,KAAK,MAFzB,EAGE;AACE,YAAI,CAAC,EAAL,CAAQ,SAAR,EAAmB,QAAnB;AACH,OALD,MAKO,IACH,OAAO,aAAP,KAAyB,QAAzB,IACG,SAAS,KAAK,QADjB,IAEG,aAAa,KAAK,QAHlB,EAIL;AACE,aAAK,iBAAL,CAAuB,IAAvB;AACH,OANM,MAMA,IAAI,aAAa,KAAK,SAAtB,EAAiC;AACpC,YAAM,kBAAkB,GAAmB,aAA3C;AACA,YAAI,CAAC,EAAL,CAAQ,SAAR,EAAmB,kBAAnB;AACH;AACJ;;AACD,WAAO,IAAP;AACH;AAED;;;;;AAKG;;;AACH,gCAA8B;AAC1B,QAAM,kBAAkB,GAAG,KAAK,kBAAhC;;AACA,QAAI,kBAAkB,KAAK,SAA3B,EAAsC;AAClC,UAAI,KAAK,MAAT,EAAiB;AACb,eAAO,SAAP;AACH,OAFD,MAEO;AACH,YAAM,UAAU,GAAG,KAAK,kBAAL,CAAwB,QAAxB,CAAnB;AAEA,YAAM,eAAe,GAAG,UAAU,CAAC,GAAX,CAAe,CAAf,CAAxB;AACA,eAAO,eAAe,CAAC,8BAAhB,EAAP;AACH;AACJ;;AACD,WAAO,kBAAP;AACH;AAED;;;;;AAKG;;;AACH,qBAAmB,CACf,GADe,EAEf,CAFe,EAE+B;AAE9C,QAAI,MAAJ;;AACA,QAAI,GAAG,KAAK,SAAZ,EAAuB;AACnB,YAAM,GAAG;AAAE,YAAI,EAAE,CAAR;AAAW,WAAG,EAAE;AAAhB,OAAT;AACH,KAFD,MAEO;AACH,YAAM,GAAG,oCAAC,CAAC,GAAD,CAAD,CAAO,MAAP,EAAT;AACH;AAED;;AAEG;;;AACH,QAAI,MAAJ;AACA,QAAI,MAAJ;;AACA,QAAI,CAAC,CAAC,YAAY,UAAb,IAA2B,CAAC,YAAY,0CAAzC,KACQ,CAAgB,CAAC,KAAjB,KAA2B,SADnC,IAEQ,CAAgB,CAAC,KAAjB,KAA2B,SAFvC,EAEkD;AAC9C,YAAM,GAAI,CAAgB,CAAC,KAA3B;AACA,YAAM,GAAI,CAAgB,CAAC,KAA3B;AACH,KALD,MAKO,IAAI,OAAO,UAAP,KAAsB,WAAtB,IAAqC,CAAC,YAAY,UAAtD,EAAkE;AACrE,UAAM,MAAM,GAAI,CAAgB,CAAC,OAAjB,CAAyB,CAAzB,CAAhB;AACA,YAAM,GACA,MAAM,CAAC,OAAP,GACA,QAAQ,CAAC,IAAT,CAAc,UADd,GAEA,QAAQ,CAAC,eAAT,CAAyB,UAH/B;AAIA,YAAM,GACA,MAAM,CAAC,OAAP,GACA,QAAQ,CAAC,IAAT,CAAc,SADd,GAEA,QAAQ,CAAC,eAAT,CAAyB,SAH/B;AAIH,KAVM,MAUA;AACH,aAAO,CAAC,KAAR,yBAA+B,OAAO,CAAtC;AACA,YAAM,GACC,CAAgB,CAAC,OAAjB,GACD,QAAQ,CAAC,IAAT,CAAc,UADb,GAED,QAAQ,CAAC,eAAT,CAAyB,UAH/B;AAIA,YAAM,GACC,CAAgB,CAAC,OAAjB,GACD,QAAQ,CAAC,IAAT,CAAc,SADb,GAED,QAAQ,CAAC,eAAT,CAAyB,SAH/B;AAIH;;AACD,QAAM,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC,IAA5B;AACA,QAAM,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC,GAA5B;AACA,WAAO,CAAC,GAAD,EAAM,GAAN,CAAP;AACH;AAED;;;;;;;AAOG;;;AACH,mBAAiB,CACb,GADa,EAEb,CAFa,EAEiC;AAE9C,QAAM,CAAC,GAAD,EAAM,GAAN,IAAa,KAAK,mBAAL,CAAyB,GAAzB,EAA8B,CAA9B,CAAnB;AACA,QAAM,YAAY,GAAG,KAAK,aAAL,CAAmB,WAAxC;AAEA,QAAM,SAAS,GAAG,GAAG,GAAG,YAAY,CAAC,CAArC;AACA,QAAM,SAAS,GAAG,GAAG,GAAG,YAAY,CAAC,CAArC;AACA,WAAO,CAAC,SAAD,EAAY,SAAZ,CAAP;AACH;AAED;;;;;;;AAOG;;;AACH,4BAA0B,CAAC,SAAD,EAAkB;AACxC,QAAM,kBAAkB,GAAG,KAAK,8BAAL,EAA3B;;AACA,QAAI,kBAAkB,KAAK,SAA3B,EAAsC;AAClC,YAAM,IAAI,eAAJ,CAAoB,8CAApB,CAAN;AACH,KAJuC,CAMxC;AACA;AACA;;;AACA,QAAM,QAAQ,GAAG,KAAK,IAAL,IAAa,KAAK,iBAAL,CAAuB,MAAvB,CAA9B,CATwC,CAWxC;;AACA,QAAM,UAAU,GAAY,QAAQ,KAAK,SAAd,GAA2B,QAAQ,CAAC,UAApC,GAAiD,EAA5E;AAEA,QAAM,WAAW,GAAW,kBAAkB,CAAC,OAAnB,CAA2B,wBAAvD;AACA,QAAM,eAAe,GAAW,kBAAkB,CAAC,OAAnB,CAA2B,oBAA3D;AAEA,QAAM,YAAY,GAAG,SAAS,GAAG,CAAZ,GAAgB,WAArC;AACA,QAAM,oBAAoB,GACpB,CAAC,kBAAkB,CAAC,OAAnB,CAA2B,SAA3B,GAAuC,CAAvC,GAA2C,eAA5C,IAA+D,CAA/D,GACA,YAFN;AAGA,QAAM,sBAAsB,GAAG,UAAU,GAAG,IAAI,CAAC,KAAL,CAAW,oBAAX,CAA5C;AACA,WAAO,sBAAP;AACH;AAED;;;;;;;;;AASG;;;AACH,oCAAkC,CAAC,SAAD,EAAY,WAAW,GAAC,CAAxB,EAAyB;AACvD,WAAO,IAAP;AACH;AAED;;;;;;;;;;;;;;;;;AAiBG;;;AACH,wBAAsB,CAClB,SADkB,EAElB,kBAA0B,EAFR,EAGlB,WAHkB,EAIlB,OAAO,GAAC,EAJU,EAIR;AAEV,QAAM,MAAM,GAAG;AACX,iBAAW,EAAE,IADF;AAEX,mBAAa,EAAE;AAFJ,KAAf;AAIA,gDAAa,MAAb,EAAqB,OAArB;AACA,QAAI,SAAJ;AACA,QAAM,SAAS,GAAG,KAAK,kCAAL,CACd,SADc,EAEd,WAFc,CAAlB;;AAIA,QAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,aAAO,SAAP;AACH;;AACD,QAAM,MAAM,GAAG;AACX,sBAAgB,EAAE,MAAM,CAAC,aADd;AAEX,UAAI,EAAE;AAFK,KAAf,CAfU,CAkBP;;AAEH,SAAK,IAAM,EAAX,IAAiB,SAAS,CAAC,IAAV,CAAe,aAAhC,EAA+C;AAC3C,UAAM,CAAC,GAAG,EAAV,CAD2C,CACtB;;AACrB;;AAEG;;AACH,UAAM,YAAY,GAAG,IAAI,CAAC,GAAL,CAAS,CAAC,CAAC,CAAF,GAAM,SAAf,CAArB;AACA,UAAM,aAAa,GAAG,IAAI,CAAC,GAAL,CAAS,CAAC,CAAC,CAAF,GAAM,CAAC,CAAC,KAAR,GAAgB,SAAzB,CAAtB;AACA,UAAM,WAAW,GAAG,IAAI,CAAC,GAAL,CAAS,YAAT,EAAuB,aAAvB,CAApB;;AAEA,UACI,YAAY,GAAG,eAAf,IACG,aAAa,GAAG,eAFvB,EAGE;AACE,iBAAS,GAAG,CAAZ;AACA;AAAO;AACV,OAND,MAMO,IACH,YAAY,GAAG,MAAM,CAAC,aAAtB,IACG,aAAa,GAAG,MAAM,CAAC,aAD1B,IAEG,WAAW,GAAG,MAAM,CAAC,gBAHrB,EAIL;AACE,cAAM,CAAC,IAAP,GAAc,CAAd;AACA,cAAM,CAAC,gBAAP,GAA0B,WAA1B;AACH;AACJ,KA3CS,CA4CV;;;AACA,QAAI,MAAM,CAAC,WAAP,IAAsB,SAAS,KAAK,SAAxC,EAAmD;AAC/C,eAAS,GAAG,MAAM,CAAC,IAAnB,CAD+C,CAE/C;AACH,KAhDS,CAiDV;;;AACA,WAAO,SAAP;AACH;AAED;;;;;;;;;;AAUG;;;AACH,kBAAgB,CACZ,GADY,EAEZ,CAFY,EAGZ,CAHY,EAIZ,CAJY,EAIF;AAEV;AACA,QAAI,CAAC,KAAK,SAAN,IAAmB,CAAC,KAAK,SAA7B,EAAwC;AACpC,OAAC,CAAD,EAAI,CAAJ,IAAS,KAAK,iBAAL,CAAuB,GAAvB,EAA4B,CAA5B,CAAT;AACH;;AACD,QAAM,sBAAsB,GAAG,KAAK,0BAAL,CAAgC,CAAhC,CAA/B;AACA,QAAM,SAAS,GAAG,KAAK,sBAAL,CAA4B,CAA5B,CAAlB;AACA,WAAO,CAAC,sBAAD,EAAyB,SAAzB,CAAP;AACH;AAED;;;;;;;;AAQG;;;AACH,aAAW,CACP,sBADO,EAEP,SAFO,EAGP,GAHO,EAGoB;AAE3B,QAAM,CAAC,GAAG,SAAV;AACA,QAAM,CAAC,GAAG,IAAI,0CAAJ,CAAgB,GAAhB,CAAV;AACA,KAAC,CAAC,eAAF,GAAoB,sBAApB;AACA,KAAC,CAAC,UAAF,GAAe,CAAC,CAAC,KAAF,CAAQ,UAAvB;AACA,KAAC,CAAC,KAAF,GAAU,CAAV;AACA,KAAC,CAAC,aAAF,GAAkB,SAAlB;AACA,SAAK,UAAL,GAAkB,CAAlB;AACA,QAAM,OAAO,GAAG,KAAK,SAAL,CAAe,GAAf,CAAhB;AACA,QAAM,MAAM,GAAG;AAAE,eAAS,EAAE,CAAb;AAAgB,SAAG,EAAE;AAArB,KAAf;;AACA,QAAI,KAAK,uBAAL,KAAiC,SAArC,EAAgD;AAC5C,aAAO,KAAK,uBAAL,CAA6B,MAA7B,CAAP;AACH,KAFD,MAEO;AACH,aAAO,MAAP;AACH;AACJ;AAED;;AAEG;;;AACH,WAAS,CAAC,GAAD,EAAmC;AACxC;AACA,QAAI,CAAC,KAAK,MAAV,EAAkB;AACd,WAAK,yBAAL;AACH;;AACD,QAAM,IAAI,GAAG,oCAAC,CAAC,GAAD,CAAd,CALwC,CAKnB;;AACrB,QAAM,OAAO,GAAG,KAAK,YAAL,CAAkB,IAAI,CAAC,KAAL,EAAlB,EAAgC,IAAI,CAAC,MAAL,EAAhC,CAAhB;AACA,SAAK,aAAL,CAAmB,OAAnB;AACA,QAAI,CAAC,WAAL,CAAiB,OAAjB;AACA,WAAO,OAAP;AACH;AAED;;;AAGG;;;AACH,uBAAqB,CACjB,KADiB,EAEjB,MAFiB,EAGjB;AACI,iBAAa,GAAC,CAAC,CADnB;AAEI,iBAAa,GAAC;AAFlB,MAGsD,EANrC,EAMuC;AAExD;;AAEG;AACH,QAAM,EAAE,GAAG,oCAAC,CAAC,QAAD,CAAD,CACN,GADM,CACF,YADE,EACY,MADZ,EAEN,GAFM,CAEF,UAFE,EAEU,UAFV,CAAX;AAIA,SAAK,aAAL,CAAmB,MAAnB,CAA0B,KAA1B,GAAkC,KAAK,kBAAvC;;AACA,QAAI,KAAK,uBAAL,KAAiC,SAArC,EAAgD;AAC5C,WAAK,uBAAL,GAA+B,KAAK,kBAApC;AACH;;AACD,QAAM,OAAO,GAAG,KAAK,SAAL,CAAe,KAAf,EAAsB,MAAtB,CAAhB;AACA,QAAM,UAAU,GAA2B,KAAK,oBAAL,CACvC,aADuC,EAEvC,aAFuC,EAGvC,OAHuC,CAA3C;AAKA,MAAE,CAAC,MAAH,CAAU,UAAV;AACA,MAAE,CAAC,MAAH,CAAU,oCAAC,CAAC,6BAAD,CAAX;AACA,MAAE,CAAC,MAAH,CAAU,OAAV;AACA,WAAO,EAAP;AACH;AAED;;AAEG;;AAEH;;;;;AAKG;;;AACH,sBAAoB,CAChB,gBAAwB,CAAC,CADT,EAEhB,gBAAwB,CAFR,EAGhB,WAHgB,EAGI;AAEpB,iBAAa,GAAG,IAAI,CAAC,KAAL,CAAW,aAAX,CAAhB;AACA,iBAAa,GAAG,IAAI,CAAC,KAAL,CAAW,aAAX,CAAhB;;AAEA,QAAM,aAAa,GAAG,CAAC,QAAD,EAAW,UAAX,KAAyB;AAC3C;;AAEG;AACH,UAAI,OAAO,GAAG,WAAd;;AACA,UAAI,OAAO,KAAK,SAAhB,EAA2B;AACvB,YAAI,aAAa,GAAG,oCAAC,CAAC,UAAU,CAAC,MAAZ,CAAD,CAAqB,MAArB,EAApB;AACA,YAAI,SAAS,GAAG,EAAhB;;AACA,eACI,SAAS,GAAG,CAAZ,IACG,aAAa,KAAK,SADrB,KAEI,OAAO,KAAK,SAAZ,IAAyB,OAAO,CAAC,CAAD,CAAP,KAAe,SAF5C,CADJ,EAIE;AACE,mBAAS,IAAI,CAAb;AACA,iBAAO,GAAG,aAAa,CAAC,IAAd,CAAmB,gBAAnB,CAAV;AACA,uBAAa,GAAG,aAAa,CAAC,MAAd,EAAhB;AACH;;AACD,YAAI,OAAO,CAAC,CAAD,CAAP,KAAe,SAAnB,EAA8B;AAC1B,iBAAO,CAAC,GAAR,CAAY,yBAAZ;AACA;AACH;AACJ;;AACD,UAAI,KAAK,UAAL,KAAoB,SAApB,IAAiC,KAAK,UAAL,YAA2B,wCAAhE,EAA2E;AACvE,YAAM,CAAC,GAAG,KAAK,UAAf;AACA,SAAC,CAAC,KAAF,CAAQ,UAAR,GAAqB,IAAI,+CAAJ,CAAqB,QAArB,CAArB;AACA;;AACA,YAAM,OAAO,GAAG,KAAK,SAAL,CAAe,OAAO,CAAC,CAAD,CAAtB,CAAhB;;AACA,YAAI,KAAK,uBAAL,KAAiC,SAArC,EAAgD;AAC5C,eAAK,uBAAL,CAA6B;AACzB,qBAAS,EAAE,CADc;AAEzB,eAAG,EAAE;AAFoB,WAA7B;AAIH;AACJ;AACJ,KAlCD;;AAoCA,QAAM,UAAU,GAAG,oCAAC,CAAC,QAAD,CAAD,CAAY,IAAZ,CACf,OADe,EAEf,gCAFe,CAAnB;;AAzCoB,+BA6CX,CA7CW;AA8ChB,UAAM,OAAO,GAAG,wDAAoB,CAApB,EAAuB,SAAvB,CAAiC,IAAjC,CAAhB;AACA,UAAM,OAAO,GAAG,oCAAC,CACb,sDADa,CAAD,CAEd,EAFc,CAEX,OAFW,EAEF,CAAC,IAAI,aAAa,CAAC,CAAD,EAAI,CAAJ,CAFhB,CAAhB;AAGA,aAAO,CAAC,CAAD,CAAP,CAAW,WAAX,CAAuB,OAAvB;AACA,gBAAU,CAAC,MAAX,CAAkB,OAAlB;AAnDgB;;AA6CpB,SAAK,IAAI,CAAC,GAAG,aAAb,EAA4B,CAAC,IAAI,aAAjC,EAAgD,CAAC,EAAjD,EAAqD;AAAA,YAA5C,CAA4C;AAOpD;;AACD,WAAO,UAAP;AACH;AAED;;AAEG;;;AACH,gBAAc;AACV,QAAM,UAAU,GAAG,oCAAC,CAAC,QAAD,CAAD,CAAY,IAAZ,CACf,OADe,EAEf,0BAFe,CAAnB;AAIA,QAAM,MAAM,GAAG,oCAAC,CAAC,yBAAD,CAAhB;AACA,UAAM,CAAC,EAAP,CAAU,OAAV,EAAmB,MAAK;AACpB,WAAK,UAAL;AACH,KAFD;AAGA,cAAU,CAAC,MAAX,CAAkB,MAAlB;AACA,QAAM,MAAM,GAAG,oCAAC,CAAC,yBAAD,CAAhB;AACA,UAAM,CAAC,EAAP,CAAU,OAAV,EAAmB,MAAK;AACpB,WAAK,cAAL;AACH,KAFD;AAGA,cAAU,CAAC,MAAX,CAAkB,MAAlB;AACA,WAAO,UAAP;AACH,GApoFyC,CAqoF1C;;AAEA;;;;;AAKG;;;AACH,mBAAiB,CAAC,KAAD,EAAc;AAC3B;AACA,QAAI,QAAQ,GAAG,KAAf;;AACA,QAAM,SAAS,GAAG,MAAK;AACnB;AACA,UAAM,WAAW,GAAG,QAAQ,CAAC,MAAT,EAApB;AACA,UAAM,QAAQ,GAAG,WAAW,CAAC,KAAZ,EAAjB;AACA,UAAM,QAAQ,GAAG,QAAjB,CAJmB,CAKnB;;AACA,aAAO,CAAC,GAAR,CAAY,qBAAZ,EAAmC,QAAnC,EANmB,CAOnB;;AACA,WAAK,kBAAL,CAAwB,IAAxB,EAA8B,IAA9B,EARmB,CAQkB;AACrC;;AACA,WAAK,cAAL,GAAsB,QAAQ,GAAG,EAAjC;AACA,cAAQ,CAAC,MAAT;AACA,UAAM,MAAM,GAAG,KAAK,YAAL,CAAkB,WAAlB,CAAf;AACA,cAAQ,GAAG,oCAAC,CAAC,MAAD,CAAZ;AACH,KAdD;;AAeA,QAAI,aAAa,GAAW,CAA5B;AAEA,wCAAC,CAAC,MAAD,CAAD,CAAU,EAAV,CAAa,QAAb,EAAuB,MAAK;AACxB,UAAI,aAAJ,EAAmB;AACf,cAAM,CAAC,YAAP,CAAoB,aAApB;AACH;;AACD,mBAAa,GAAG,MAAM,CAAC,UAAP,CAAkB,MAAM,SAAS,EAAjC,EAAqC,GAArC,CAAhB;AACH,KALD;AAMA,cAAU,CAAC,MAAK;AACZ,UAAM,OAAO,GAAG,oCAAC,CAAC,MAAD,CAAjB;AACA,UAAM,QAAQ,GAAG,OAAO,CAAC,IAAR,CAAa,0BAAb,CAAjB;;AACA,UAAI,QAAQ,KAAK,SAAb,IAA0B,QAAQ,KAAK,IAA3C,EAAiD;AAC7C,iBAAS;AACT,eAAO,CAAC,IAAR,CAAa,0BAAb,EAAyC,KAAzC;AACH;AACJ,KAPS,EAOP,IAPO,CAAV;AAQA,WAAO,IAAP;AACH;AAED;;AAEG;;;AACH,WAAS;AACL,SAAK,IAAM,EAAX,IAAiB,IAAjB,EAAuB;AACnB,UAAI,EAAE,CAAC,iBAAH,CAAqB,OAArB,CAAJ,EAAmC;AAC/B,eAAO,IAAP;AACH;AACJ;;AACD,WAAO,KAAP;AACH;;AA5rFyC;AAisFxC,MAAO,KAAP,SAAqB,MAArB,CAA2B;AACT,aAAT,SAAS;AAAK,WAAO,sBAAP;AAAgC;;AAEzD;AACI;AACA,SAAK,aAAL,GAAqB,eAArB;AACH;;AAN4B;AAS3B,MAAO,OAAP,SAAuB,MAAvB,CAA6B;AAAnC;;AAGI,yBAAwB,eAAxB;AACA,qBAAqB,IAArB;AACA,kBAAiB,CAAjB;AACA,wBAAuB,EAAvB;AACA,uBAAsB,CAAtB;AACA,wBAAuB,CAAvB;AAWH;;AAlBuB,aAAT,SAAS;AAAK,WAAO,wBAAP;AAAkC;;AAS3D,YAAU;WAAA,CACN;;;AACA,QAAM,MAAM,SAAG,KAAK,uBAAR,MAA+B,IAA/B,IAA+B,aAA/B,GAA+B,EAA/B,GAAmC,KAAK,YAApD;AACA,WAAO,KAAK,uBAAL,KAAiC,UAAjC,GAA8C,MAAM,CAAC,QAAP,EAArD;AACH;;AAED,yBAAuB;AACnB,WAAO,KAAK,MAAL,CAAY,QAAZ,KAAyB,KAAK,YAArC;AACH;;AAlB8B;AAqBnC;;;;;AAKG;;AACG,MAAO,IAAP,SAAoB,MAApB,CAA0B;AAAhC;;AAGI,yBAAwB,SAAxB;AAsXH;;AAxXuB,aAAT,SAAS;AAAK,WAAO,qBAAP;AAA+B,GAD5B,CAK5B;AACA;AACA;;AAEA;;;;AAIG;;;AACH,YAAU;AACN,QAAI,UAAU,GAAG,CAAjB;AACA,QAAM,UAAU,GAAG,KAAK,kBAAL,CAAwB,QAAxB,CAAnB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,UAAU,CAAC,MAA/B,EAAuC,CAAC,EAAxC,EAA4C;AACxC,UAAI,UAAU,CAAC,GAAX,CAAe,CAAf,EAAkB,aAAlB,CAAgC,cAApC,EAAoD;AAChD,kBAAU,IAAI,CAAd;AACH;AACJ;;AACD,WAAO,UAAP;AACH;AAED;;AAEG;;;AACH,kBAAgB;AACZ;AACA,QAAM,aAAa,GAAa,EAAhC;;AACA,SAAK,IAAM,EAAX,IAAiB,KAAK,kBAAL,CAAwB,SAAxB,CAAjB,EAAqD;AACjD,UAAM,QAAQ,GAAI,EAAc,CAAC,aAAjC;AACA,mBAAa,CAAC,QAAQ,CAAC,YAAV,CAAb,GAAuC,QAAQ,CAAC,KAAhD;AACH;;AACD,WAAO,aAAP;AACH;AAED;;AAEG;;;AACH,qBAAmB;AACf,QAAI,KAAK,aAAL,CAAmB,eAAnB,KAAuC,SAA3C,EAAsD;AAClD;AACA,aAAO,KAAK,aAAL,CAAmB,eAA1B;AACH;;AACD,QAAI,CAAC,KAAK,MAAV,EAAkB;AACd;AACA,UAAI,WAAW,GAAG,CAAlB;AACA,UAAI,OAAO,GAAG,IAAd;;AACA,WAAK,IAAM,EAAX,IAAiB,KAAK,kBAAL,CAAwB,SAAxB,CAAjB,EAAqD;AACjD,YAAM,CAAC,GAAG,EAAV,CADiD,CAEjD;AACA;;AACA,mBAAW,IACJ,CAAC,CAAC,mBAAF,KAA0B,CAAC,CAAC,aAAF,CAAgB,YADjD;;AAEA,YAAI,CAAC,OAAD,IAAY,CAAC,CAAC,aAAF,CAAgB,cAAhB,KAAmC,IAAnD,EAAyD;AACrD;AACH;;AACD,eAAO,GAAG,KAAV;AACH;;AACD,aAAO,WAAP;AACH,KArBc,CAsBf;;;AACA,QAAM,KAAK,GAAG,IAAI,OAAJ,EAAd;AACA,SAAK,CAAC,QAAN,GAA0B,IAA1B;AACA,WAAO,KAAK,CAAC,mBAAN,EAAP;AACH;;AAED,uBAAqB;AACjB,QAAM,aAAa,GAAG,KAAK,gBAAL,EAAtB;AACA,QAAM,cAAc,GAAG,KAAK,cAA5B,CAFiB,CAE2B;;AAC5C,QAAM,mBAAmB,GAAG,EAA5B;AACA,QAAM,kBAAkB,GAAG,EAA3B;AACA,QAAI,eAAe,GAAG,CAAtB;AAAyB;;AACzB,QAAM,SAAS,GAAG,EAAlB;AAAsB;;AACtB,QAAI,WAAW,GAAG,SAAlB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,aAAa,CAAC,MAAlC,EAA0C,CAAC,EAA3C,EAA+C;AAC3C,UAAM,YAAY,GAAG,WAAW,GAAG,aAAa,CAAC,CAAD,CAAhD;AACA;;AACA,UAAI,YAAY,GAAG,cAAf,IAAiC,eAAe,KAAK,CAAzD,EAA4D;AACxD,0BAAkB,CAAC,IAAnB,CAAwB,CAAC,GAAG,CAA5B;AACA,2BAAmB,CAAC,IAApB,CAAyB,WAAzB,EAFwD,CAIxD;;AACA,mBAAW,GAAG,SAAS,GAAG,aAAa,CAAC,CAAD,CAAvC,CALwD,CAKZ;;AAC5C,uBAAe,GAAG,CAAlB;AACH,OAPD,MAOO;AACH,mBAAW,GAAG,YAAd;AACH;AACJ;;AACD,WAAO,CAAC,mBAAD,EAAsB,kBAAtB,CAAP;AACH;AAED;;;;;;;;;;;AAWG;;;AACH,sBAAoB,CAAC,YAAD,EAAwB,aAAxB,EAA8C;AAC9D;AACA,QAAI,YAAY,KAAK,SAArB,EAAgC;AAC5B;AACA,kBAAY,GAAG,KAAK,aAAL,CAAmB,eAAlC;AACH,KAHD,MAGO,IAAI,0CAAJ,EAAW;AACd,aAAO,CAAC,GAAR,CAAY,8BAA8B,YAA1C;AACH;;AACD,QAAM,CAAC,mBAAD,EAAsB,kBAAtB,IAA4C,KAAK,qBAAL,EAAlD;;AAEA,QAAI,aAAa,KAAK,SAAtB,EAAiC;AAC7B,mBAAa,GAAG,KAAK,aAAL,CAAmB,aAAnC;AACH;;AACD,QAAM,cAAc,GAAG,KAAK,cAA5B,CAb8D,CAalB;;AAE5C,QAAI,kBAAkB,GAAG,CAAzB;AACA,QAAI,YAAY,GAAG,CAAnB;AACA,QAAI,eAAJ;;AAEA,SAAK,IAAM,CAAC,CAAD,EAAI,EAAJ,CAAX,IAAsB,KAAK,CAAC,IAAN,CAAW,KAAK,kBAAL,CAAwB,SAAxB,CAAX,EAA+C,OAA/C,EAAtB,EAAgF;AAC5E,UAAM,CAAC,GAAG,EAAV;;AACA,UAAI,CAAC,KAAK,CAAV,EAAa;AACT,SAAC,CAAC,aAAF,CAAgB,cAAhB,GAAiC,IAAjC;AACH;;AACD,UAAM,WAAW,GAAG,CAAC,CAAC,aAAF,CAAgB,IAApC;;AAEA,UAAI,kBAAkB,CAAC,OAAnB,CAA2B,CAAC,GAAG,CAA/B,MAAsC,CAAC,CAA3C,EAA8C;AAC1C;AACA,YAAM,QAAQ,GAAG,CAAC,CAAC,aAAF,CAAgB,KAAjC;AACA,YAAM,WAAW,GAAG,CAAC,CAAC,mBAAF,KAA0B,CAAC,CAAC,aAAF,CAAgB,YAA9D;AACA,YAAM,kBAAkB,GAAG,QAAQ,GAAG,WAAtC,CAJ0C,CAK1C;AACA;AACA;AAEA;;AACA,SAAC,CAAC,aAAF,CAAgB,WAAhB,GAA8B,IAA9B;AACA,SAAC,CAAC,aAAF,CAAgB,mBAAhB,GAAsC,IAAtC;AACA,SAAC,CAAC,aAAF,CAAgB,cAAhB,GAAiC,IAAjC,CAZ0C,CAc1C;;AACA,YAAM,WAAW,GAAG,CAAC,CAAC,mBAAF,KAA0B,CAAC,CAAC,aAAF,CAAgB,YAA9D,CAf0C,CAiB1C;;AACA,YAAM,QAAQ,GAAG,WAAW,GAAG,kBAA/B;AACA,SAAC,CAAC,aAAF,CAAgB,KAAhB,GAAwB,QAAxB;AACA,oBAAY,GAAG,WAAW,GAAG,EAA7B,CApB0C,CAqB1C;;AACA,uBAAe,GAAG,YAAY,IAAI,QAAQ,GAAG,QAAf,CAA9B;AAEA,0BAAkB,IAAI,CAAtB;AACH,OAzBD,MAyBO,IAAI,CAAC,KAAK,CAAV,EAAa;AAChB,SAAC,CAAC,aAAF,CAAgB,cAAhB,GAAiC,KAAjC;AACA,SAAC,CAAC,aAAF,CAAgB,WAAhB,GAA8B,KAA9B,CAFgB,CAEqB;;AACrC,SAAC,CAAC,aAAF,CAAgB,mBAAhB,GAAsC,KAAtC,CAHgB,CAG6B;AAChD;;AACD,OAAC,CAAC,aAAF,CAAgB,WAAhB,GAA8B,kBAA9B;AACA,UAAI,uBAAuB,SAA3B;;AACA,UAAI,kBAAkB,IAAI,mBAAmB,CAAC,MAA9C,EAAsD;AAClD;AACA,+BAAuB,GAAG,CAA1B;AACH,OAHD,MAGO;AACH,YAAM,kBAAkB,GAAG,mBAAmB,CAAC,kBAAD,CAA9C;AACA,+BAAuB,GAAG,cAAc,GAAG,kBAA3C,CAFG,CAGH;AACA;AACH;AACD;;;AACA,UAAM,OAAO,GAAG,WAAW,GAAG,YAA9B;;AACA,UAAI,eAAe,KAAK,SAAxB,EAAmC;AAC/B,oBAAY,GAAG,eAAf;AACA,uBAAe,GAAG,SAAlB;AACH,OArD2E,CAsD5E;;;AACA,OAAC,CAAC,aAAF,CAAgB,IAAhB,GAAuB,IAAI,CAAC,KAAL,CAAW,OAAO,GAAG,uBAArB,CAAvB;AACA,OAAC,CAAC,aAAF,CAAgB,KAAhB,GAAwB,IAAI,CAAC,KAAL,CAAW,CAAC,CAAC,aAAF,CAAgB,KAAhB,GAAwB,uBAAnC,CAAxB;AACA,UAAM,MAAM,GAAI,CAAC,CAAC,aAAF,CAAgB,GAAhB,GACE,kBAAkB,IAAI,YAAY,GAAG,aAAnB,CADpC,CAzD4E,CA2D5E;;AACA,OAAC,CAAC,aAAF,CAAgB,GAAhB,GAAsB,MAAtB;AACH;;AACD,WAAO,mBAAP;AACH;AAED;;;;;AAKG;;;AACH,2BAAyB;AACrB,QAAI,mBAAmB,GAAG,CAA1B;AAA6B;;AAC7B,QAAI,kBAAkB,GAAG,EAAzB;AACA,QAAM,MAAM,GAAG,KAAK,aAApB;AACA,QAAI,iBAAJ;AACA,QAAI,gBAAJ;AACA,QAAI,QAAJ;;AAEA,SAAK,IAAM,EAAX,IAAiB,KAAK,kBAAL,CAAwB,SAAxB,CAAjB,EAAqD;AACjD,UAAM,CAAC,GAAG,EAAV;AACA,UAAM,OAAO,GAAG,CAAC,CAAC,aAAlB;AACA,aAAO,CAAC,YAAR,GAAuB,mBAAvB;AACA,aAAO,CAAC,GAAR,GAAc,MAAM,CAAC,GAArB;AACA,aAAO,CAAC,SAAR,GAAoB,MAAM,CAAC,SAA3B;AACA,aAAO,CAAC,IAAR,GAAe,kBAAf;;AAEA,UAAI,mBAAmB,KAAK,CAA5B,EAA+B;AAC3B,gBAAQ,GAAG,CAAC,CAAC,KAAb;AACA,yBAAiB,GAAG,CAAC,CAAC,cAAtB;AACA,wBAAgB,GAAG,CAAC,CAAC,aAArB;AAEA,eAAO,CAAC,WAAR,GAAsB,IAAtB;AACA,eAAO,CAAC,mBAAR,GAA8B,IAA9B;AACA,eAAO,CAAC,oBAAR,GAA+B,IAA/B;AACH,OARD,MAQO;AACH;AACA,YACI,CAAC,CAAC,KAAF,KAAY,SAAZ,IACG,QAAQ,KAAK,SADhB,IAEG,CAAC,CAAC,KAAF,CAAQ,IAAR,KAAiB,QAAQ,CAAC,IAHjC,EAIE;AACE;AACA,iBAAO,CAAC,GAAR,CACI,qBADJ,EAEI,OAAO,CAAC,YAFZ,EAGI,QAHJ,EAII,QAAQ,CAAC,IAJb,EAKI,MALJ,EAMI,CAAC,CAAC,KAAF,CAAQ,IANZ;AAQA,kBAAQ,GAAG,CAAC,CAAC,KAAb;AACA,iBAAO,CAAC,WAAR,GAAsB,IAAtB;AACH,SAhBD,MAgBO;AACH,iBAAO,CAAC,WAAR,GAAsB,KAAtB;AACH,SApBE,CAsBH;;;AACA,YACI,CAAC,CAAC,aAAF,KAAoB,SAApB,IACG,gBAAgB,KAAK,SADxB,IAEG,CAAC,CAAC,aAAF,CAAgB,MAAhB,KAA2B,gBAAgB,CAAC,MAHnD,EAIE;AACE,0BAAgB,GAAG,CAAC,CAAC,aAArB;AACA,iBAAO,CAAC,mBAAR,GAA8B,IAA9B;AACH,SAPD,MAOO;AACH,iBAAO,CAAC,mBAAR,GAA8B,KAA9B;AACH,SAhCE,CAkCH;;;AACA,YACI,CAAC,CAAC,cAAF,KAAqB,SAArB,IACG,iBAAiB,KAAK,SADzB,IAEG,CAAC,CAAC,cAAF,CAAiB,WAAjB,KACK,iBAAiB,CAAC,WAJ9B,EAKE;AACE,2BAAiB,GAAG,CAAC,CAAC,cAAtB;AACA,iBAAO,CAAC,oBAAR,GAA+B,IAA/B;AACH,SARD,MAQO;AACH,iBAAO,CAAC,oBAAR,GAA+B,KAA/B;AACH;AACJ;;AACD,aAAO,CAAC,KAAR,GACM,CAAC,CAAC,mBAAF,KAA0B,OAAO,CAAC,YADxC;AAEA,aAAO,CAAC,MAAR,GAAiB,CAAC,CAAC,oBAAF,EAAjB;AACA,wBAAkB,IAAI,OAAO,CAAC,KAA9B;AACA,yBAAmB,IAAI,CAAvB;AACH;;AACD,WAAO,IAAP;AACH;AAED;;;;;;AAMG;;;AACH,uBAAqB,CAAC,CAAD,EAAE;AACnB;AACA,QAAM,YAAY,GAAG,KAAK,aAAL,CAAmB,eAAxC;AACA,QAAM,aAAa,GAAG,KAAK,aAAL,CAAmB,aAAzC;AACA,QAAM,WAAW,GAAG,IAAI,CAAC,KAAL,CAAW,CAAC,IAAI,YAAY,GAAG,aAAnB,CAAZ,CAApB;AACA,QAAM,uBAAuB,GACvB,CAAC,GAAG,WAAW,IAAI,YAAY,GAAG,aAAnB,CADrB;AAEA,WAAO,CAAC,WAAD,EAAc,uBAAd,CAAP;AACH;AAED;;;;;AAKG;;;AACH,kBAAgB,CACZ,GADY,EAEZ,CAFY,EAGZ,CAHY,EAIZ,CAJY,EAIF;AAEV;AACA,QAAI,CAAC,KAAK,SAAN,IAAmB,CAAC,KAAK,SAA7B,EAAwC;AACpC,OAAC,CAAD,EAAI,CAAJ,IAAS,KAAK,iBAAL,CAAuB,GAAvB,EAA4B,CAA5B,CAAT;AACH,KALS,CAMV;;;AACA,QAAI,0CAAK,IAAI,GAAG,KAAK,SAArB,EAAgC;AAC5B,aAAO,CAAC,GAAR,CACI,kCACM,KAAK,oBAAL,EADN,GAEM,sBAFN,GAGM,oCAAC,CAAC,GAAD,CAAD,CAAO,MAAP,EAJV;AAMH,KAdS,CAeV;AACA;;;AACA,QAAM,CAAC,WAAD,EAAc,uBAAd,IAAyC,KAAK,qBAAL,CAA2B,CAA3B,CAA/C;AACA,QAAM,sBAAsB,GAAG,KAAK,0BAAL,CAC3B,uBAD2B,CAA/B;AAIA,QAAM,SAAS,GAAG,KAAK,sBAAL,CACd,CADc,EAEd,SAFc,EAGd,WAHc,CAAlB;AAKA,WAAO,CAAC,sBAAD,EAAyB,SAAzB,CAAP;AACH;AAED;;;;;;;AAOG;;;AACH,oCAAkC,CAAC,SAAD,EAAY,WAAW,GAAC,SAAxB,EAAiC;AAC/D,QAAI,UAAJ;AACA,QAAM,QAAQ,GAAG,KAAK,QAAtB;;AACA,SAAK,IAAM,CAAX,IAAgB,QAAhB,EAA0B;AACtB,UAAM,MAAM,GAAG,CAAC,CAAC,aAAjB;AACA,UAAM,IAAI,GAAG,MAAM,CAAC,IAApB;AACA,UAAM,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC,KAA5B;AACA,UAAM,GAAG,GAAG,MAAM,CAAC,GAAnB;AACA,UAAM,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,MAA5B;;AACA,UAAI,0CAAJ,EAAW;AACP,eAAO,CAAC,GAAR,CACI,qBACM,IAAI,CAAC,KAAL,CAAW,SAAX,CADN,GAEM,cAFN,GAGM,qBAHN,GAIM,IAJN,GAKM,KALN,GAMM,KANN,GAOM,MAPN,GAQM,GARN,GASM,MATN,GAUM,MAXV;AAaH;;AACD,UAAI,SAAS,IAAI,IAAb,IAAqB,SAAS,IAAI,KAAtC,EAA6C;AACzC,YAAI,WAAW,KAAK,SAApB,EAA+B;AAC3B,oBAAU,GAAG,CAAb;AACA;AACH,SAHD,MAGO,IAAI,MAAM,CAAC,WAAP,KAAuB,WAA3B,EAAwC;AAC3C,oBAAU,GAAG,CAAb;AACA;AACH;AACJ;AACJ;;AACD,WAAO,UAAP;AACH;;AAxX2B;AA2XhC;;AAEG;;AACG,MAAO,KAAP,SAAqB,MAArB,CAA2B;AAM7B;AACI;AAJJ,yBAAgB,cAAhB;AACA,yBAA0B,EAA1B;AAII,SAAK,aAAL,CAAmB,aAAnB,GAAmC,EAAnC;AACH;;AARmB,aAAT,SAAS;AAAK,WAAO,sBAAP;AAAgC;;AAUjD,MAAJ,IAAI;AACJ,QAAM,CAAC,GAAG,MAAM,IAAhB;;AACA,QAAI,CAAC,KAAK,SAAV,EAAqB;AACjB,aAAO,IAAI,8CAAJ,EAAP;AACH,KAFD,MAEO;AACH,aAAO,CAAP;AACH;AACJ;;AAEO,MAAJ,IAAI,CAAC,OAAD,EAAQ;AACZ,UAAM,IAAN,GAAa,OAAb;AACH;AAED;;AAEG;;;AACH,WAAS,CAAC;AAAE,WAAO,GAAC,KAAV;AAAiB,qBAAiB,GAAC;AAAnC,MAA2E,EAA5E,EAA8E;AACnF,QAAI,SAAS,GAAG,IAAhB;;AACA,QAAI,CAAC,OAAL,EAAc;AACV,eAAS,GAAG,KAAK,KAAL,CAAW,IAAX,CAAZ;AACH;;AACD,SAAK,IAAM,CAAX,IAAgB,SAAS,CAAC,KAA1B,EAAiC;AAC7B,OAAC,CAAC,SAAF,CAAY;AAAC,eAAO,EAAE,IAAV;AAAgB;AAAhB,OAAZ;AACH,KAPkF,CAQnF;;;AACA,WAAO,SAAP;AACH;AAGD;;;;;;;;;AASG;;;AACH,oCAAkC,CAC9B,SAD8B,EAE9B,cAAsB,SAFQ,EAEC;AAE/B,QAAM,KAAK,GAAG,KAAK,KAAnB;AACA,WAAO,KAAK,CACP,GADE,CACE,CADF,EAEF,kCAFE,CAEiC,SAFjC,EAE4C,WAF5C,CAAP;AAGH;AAED;;;;AAIG;;;AACH,2BAAyB;AACrB,QAAI,iBAAiB,GAAG,CAAxB;AACA,QAAI,cAAc,GAAG,CAArB,CAFqB,CAGrB;;AACA,QAAM,WAAW,GAAG,KAAK,aAAL,CAAmB,eAAvC;;AACA,SAAK,IAAM,CAAX,IAAgB,KAAK,KAArB,EAA4B;AACxB,OAAC,CAAC,aAAF,CAAgB,SAAhB,GAA4B,iBAA5B;AACA,OAAC,CAAC,aAAF,CAAgB,GAAhB,GAAsB,cAAtB;AACA,OAAC,CAAC,yBAAF;AACA,oBAAc,IAAI,WAAlB;AACA,uBAAiB,IAAI,CAArB;AACH;;AACD,SAAK,sBAAL;AACA,QAAM,kBAAkB,GAAG,KAAK,oBAAL,CACvB;AACI,mBAAa,EAAE,IADnB;AAEI,wBAAkB,EAAE;AAFxB,KADuB,CAA3B;;AAMA,SAAK,IAAM,GAAX,IAAgB,KAAK,KAArB,EAA4B;AACxB,SAAC,CAAC,oBAAF,CAAuB,kBAAvB,EAA2C,KAAK,aAAL,CAAmB,aAA9D;AACH;;AACD,SAAK,aAAL,CAAmB,MAAnB,GAA4B,KAAK,oBAAL,EAA5B;AACA,WAAO,IAAP;AACH;AAED;;;;AAIG;;;AACH,qBAAmB;AACf;AACA,QAAI,KAAK,aAAL,CAAmB,eAAnB,KAAuC,SAA3C,EAAsD;AAClD;AACA,aAAO,KAAK,aAAL,CAAmB,eAA1B;AACH;;AACD,QAAI,QAAQ,GAAG,CAAC,CAAhB;;AACA,SAAK,IAAM,CAAX,IAAgB,KAAK,KAArB,EAA4B;AACxB,UAAM,MAAM,GAAG,CAAC,CAAC,mBAAF,EAAf;;AACA,UAAI,MAAM,GAAG,QAAb,EAAuB;AACnB,gBAAQ,GAAG,MAAX;AACH;AACJ;;AACD,QAAI,QAAQ,GAAG,CAAC,CAAhB,EAAmB;AACf,aAAO,QAAP;AACH,KAfc,CAiBf;;;AACA,WAAO,CAAC,GAAR,CAAY,yBAAZ;AACA,QAAM,QAAQ,GAAG,IAAI,IAAJ,EAAjB;AACA,YAAQ,CAAC,QAAT,GAA6B,IAA7B;AACA,WAAO,QAAQ,CAAC,mBAAT,EAAP;AACH;AAED;;AACA;;;;;;;;AAQG;;;AACH,YAAU,CAAC,MAAD,EAAO;AACb;AACA,SAAK,IAAM,EAAX,IAAiB,IAAjB,EAAuB;AACnB,UAAI,EAAE,CAAC,iBAAH,CAAqB,MAArB,CAAJ,EAAkC;AAC7B,UAAW,CAAC,UAAZ,CAAuB,MAAvB;AACJ;AACJ;;AACD,WAAO,IAAP;AACH;AAED;;AAEG;;;AACH,gBAAc;AACV,SAAK,IAAM,EAAX,IAAiB,IAAjB,EAAuB;AACnB,UAAI,EAAE,CAAC,iBAAH,CAAqB,MAArB,CAAJ,EAAkC;AAC7B,UAAW,CAAC,cAAZ;AACJ;AACJ;;AACD,WAAO,IAAP;AACH;AAED;;AAEG;;AACH;;;;;;;;;;AAUG;;;AACH,qBAAmB;AACf,QAAM,gBAAgB,GAAG,EAAzB;AACA,QAAM,0BAA0B,GAAG,EAAnC;AACA,QAAI,CAAJ,CAHe,CAIf;;AACA,SAAK,IAAM,CAAX,IAAgB,KAAK,KAArB,EAA4B;AACxB,gCAA0B,CAAC,IAA3B,CAAgC,CAAC,CAAC,gBAAF,EAAhC;AACH;;AACD,SAAK,CAAC,GAAG,CAAT,EAAY,CAAC,GAAG,0BAA0B,CAAC,CAAD,CAA1B,CAA8B,MAA9C,EAAsD,CAAC,EAAvD,EAA2D;AACvD,UAAI,QAAQ,GAAG,CAAf;;AACA,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,MAAzB,EAAiC,CAAC,EAAlC,EAAsC;AAClC,YAAI,0BAA0B,CAAC,CAAD,CAA1B,CAA8B,CAA9B,IAAmC,QAAvC,EAAiD;AAC7C,kBAAQ,GAAG,0BAA0B,CAAC,CAAD,CAA1B,CAA8B,CAA9B,CAAX;AACH;AACJ;;AACD,sBAAgB,CAAC,IAAjB,CAAsB,QAAtB;AACH,KAhBc,CAiBf;;;AACA,WAAO,gBAAP;AACH;AAED;;;;;;AAMG;;;AACH,uBAAqB,CAAC,CAAD,EAAE;AACnB;AACA,QAAM,QAAQ,GAAG,KAAK,KAAL,CAAW,MAA5B;AACA,QAAM,WAAW,GAAG,KAAK,aAAL,CAAmB,eAAvC;AACA,QAAM,UAAU,GAAG,KAAK,UAAL,EAAnB;AACA,QAAI,eAAe,GAAG,CAAtB;;AACA,SAAK,IAAI,QAAQ,GAAG,CAApB,EAAuB,QAAQ,GAAG,UAAlC,EAA8C,QAAQ,EAAtD,EAA0D;AACtD,UAAM,eAAe,GAAG,eAAe,GAAI,QAAQ,GAAG,WAA9B,GAA6C,KAAK,aAAL,CAAmB,aAAxF;;AACA,UAAI,CAAC,GAAG,eAAJ,IAAuB,QAAQ,KAAK,UAAU,GAAG,CAArD,EAAwD;AACpD,uBAAe,GAAG,eAAlB;AACA;AACH;;AACD,UAAM,uBAAuB,GAAG,CAAC,GAAG,eAApC;AACA,aAAO,CAAC,QAAD,EAAW,uBAAX,CAAP;AACH;;AACD,WAAO,CAAC,KAAR,CAAc,sBAAd;AACA,WAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;AACH;AAED;;;;;;;;AAQG;;;AACH,kBAAgB,CACZ,GADY,EAEZ,CAFY,EAGZ,CAHY,EAIZ,CAJY,EAIF;AAEV;AACA,QAAI,CAAC,KAAK,SAAN,IAAmB,CAAC,KAAK,SAA7B,EAAwC;AACpC,OAAC,CAAD,EAAI,CAAJ,IAAS,KAAK,iBAAL,CAAuB,GAAvB,EAA4B,CAA5B,CAAT;AACH,KALS,CAOV;;;AACA,QAAM,WAAW,GAAG,KAAK,aAAL,CAAmB,eAAvC;AACA,QAAM,CAAC,WAAD,EAAc,oBAAd,IAAsC,KAAK,qBAAL,CAA2B,CAA3B,CAA5C;AACA,QAAI,SAAS,GAAG,IAAI,CAAC,KAAL,CAAW,oBAAoB,GAAG,WAAlC,CAAhB,CAVU,CAWV;;AACA,QAAI,SAAS,GAAG,KAAK,KAAL,CAAW,GAAX,CAAe,SAAf,CAAhB;;AACA,QAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,eAAS,GAAG,KAAK,KAAL,CAAW,MAAX,GAAoB,CAAhC,CADyB,CACW;;AACpC,eAAS,GAAG,KAAK,KAAL,CAAW,GAAX,CAAe,SAAf,CAAZ;;AACA,UAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB;AACA,eAAO,CAAC,SAAD,EAAY,SAAZ,CAAP;AACH;AACJ;;AACD,QAAM,aAAa,GAAG,oBAAoB,GAAG,SAAS,GAAG,WAAzD;AAEA,QAAM,sBAAsB,GAAG,SAAS,CAAC,0BAAV,CAAqC,aAArC,CAA/B,CAvBU,CAyBV;;AACA,QAAM,SAAS,GAAG,SAAS,CAAC,sBAAV,CACd,CADc,EAEd,SAFc,EAGd,WAHc,CAAlB;AAKA,WAAO,CAAC,sBAAD,EAAyB,SAAzB,CAAP;AACH;AAED;;AAEG;;;AACH,YAAU;AACN,QAAM,KAAK,GAAI,KAAK,kBAAL,CAAwB,MAAxB,CAAf;;AACA,QAAI,CAAE,KAAK,CAAC,MAAZ,EAAqB;AACjB,aAAO,CAAP;AACH;;AACD,WAAO,KAAK,CAAC,GAAN,CAAU,CAAV,EAAa,UAAb,EAAP;AACH;AAED;;;;;;;;AAQG;;;AACH,wBAAsB,CAAC;AAAE,WAAO,GAAC;AAAV,MAAiB,EAAlB,EAAoB;AACtC,QAAM,aAAa,GAAe,EAAlC;AACA,QAAI,iBAAiB,GAAG,CAAxB;AACA,QAAM,eAAe,GAAa,EAAlC,CAHsC,CAGA;;AACtC,SAAK,IAAM,CAAX,IAAgB,KAAK,KAArB,EAA4B;AACxB,UAAM,aAAa,GAAI,CAAU,CAAC,gBAAX,EAAvB;;AACA,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,aAAa,CAAC,MAAlC,EAA0C,CAAC,EAA3C,EAA+C;AAC3C,YAAM,gBAAgB,GAAG,aAAa,CAAC,CAAD,CAAtC;;AACA,YAAI,aAAa,CAAC,CAAD,CAAb,KAAqB,SAAzB,EAAoC;AAChC,uBAAa,CAAC,CAAD,CAAb,GAAmB,EAAnB;AACA,yBAAe,CAAC,CAAD,CAAf,GAAqB,gBAArB;AACH,SAHD,MAGO,IAAI,gBAAgB,GAAG,eAAe,CAAC,CAAD,CAAtC,EAA2C;AAC9C,yBAAe,CAAC,CAAD,CAAf,GAAqB,gBAArB;AACH;;AACD,qBAAa,CAAC,CAAD,CAAb,CAAiB,iBAAjB,IAAsC,gBAAtC;AACH;;AACD,uBAAiB,IAAI,CAArB;AACH;;AAED,QAAI,WAAW,GAAG,EAAlB,CAnBsC,CAmBhB;;AACtB,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,eAAe,CAAC,MAApC,EAA4C,CAAC,EAA7C,EAAiD;AAC7C,UAAM,eAAe,GAAG,eAAe,CAAC,CAAD,CAAvC;;AACA,WAAK,IAAM,IAAX,IAAmB,KAAK,KAAxB,EAA+B;AAC3B,YAAM,OAAO,GAAG,IAAI,CAAC,kBAAL,CAAwB,SAAxB,EAAmC,GAAnC,CAAuC,CAAvC,CAAhB;AACA,YAAM,MAAM,GAAG,OAAO,CAAC,aAAvB;AACA,cAAM,CAAC,KAAP,GAAe,eAAf;;AACA,YAAI,OAAJ,EAAa;AACT,gBAAM,CAAC,IAAP,GAAc,WAAd;AACH;AACJ;;AACD,iBAAW,IAAI,eAAf;AACH;;AACD,WAAO,IAAP;AACH;;AAzT4B,C,CA4TjC;AAEA;;AACM,MAAO,SAAP,CAAgB;AAMlB,cACI,OADJ,EAEI,MAFJ,EAGI,OAHJ,EAII,UAJJ,EAIsB;AAElB,SAAK,OAAL,GAAe,OAAf;AACA,SAAK,MAAL,GAAc,MAAd;AACA,SAAK,OAAL,GAAe,OAAf;AACA,SAAK,UAAL,GAAkB,UAAlB;AACH;;AAhBiB,C;;;;;;;;;;;;;;;;;;;;;;;;;;CCtiHtB;;AACM,MAAO,eAAP,SAA+B,2DAA/B,CAA+C;;AAErD,MAAM,cAAN,CAAoB;;AAEb,IAAM,sBAAsB,GAAG,IAAI,cAAJ,EAA/B;AAEP;;AAEG;;AACG,MAAO,YAAP,CAAmB;AACG,aAAb,aAAa;AACpB,WAAO,cAAP;AACH;;AAED,OAAK,IAAK;;AAEV,MAAI,CAAC,IAAD,EAAO,QAAP,EAAe;AACf,WAAO,IAAP;AACH;;AAToB;AAYnB,MAAO,QAAP,SAAwB,YAAxB,CAAoC;AAQtC,cAAY,SAAmB,EAA/B,EAAiC;AAC7B;;AACA,QAAI,CAAC,KAAK,CAAC,OAAN,CAAc,MAAd,CAAL,EAA4B;AACxB,YAAM,GAAG,CAAC,MAAD,CAAT;AACH;;AACD,SAAK,MAAL,GAAc,MAAd;AACA,SAAK,SAAL,GAAiB,MAAM,CAAC,MAAxB;AACH;;AAduB,aAAb,aAAa;AACpB,WAAO,IAAP;AACH;;AAcD,OAAK;AACD,SAAK,SAAL,GAAiB,KAAK,MAAL,CAAY,MAA7B;AACH;;AAED,MAAI,CAAC,IAAD,EAAO,QAAP,EAAe;AACf,QAAI,KAAK,SAAL,KAAmB,CAAvB,EAA0B;AACtB,aAAO,sBAAP;AACH;;AACD,QAAI,KAAK,MAAL,CAAY,QAAZ,CAAqB,IAArB,CAAJ,EAAgC;AAC5B,WAAK,SAAL,IAAkB,CAAlB;AACA,aAAO,IAAP;AACH,KAHD,MAGO;AACH,aAAO,KAAP;AACH;AACJ;;AA/BqC;AAkCpC,MAAO,WAAP,SAA2B,QAA3B,CAAmC;AACb,aAAb,aAAa;AACpB,WAAO,OAAP;AACH;;AAED,cAAY,MAAZ,EAAkB;AACd,UAAM,MAAN;AACA,SAAK,SAAL,GAAiB,MAAM,CAAC,gBAAxB;AACH;;AAED,OAAK,IAAK;;AAEV,MAAI,CAAC,IAAD,EAAO,QAAP,EAAe;AACf,QAAM,GAAG,GAAG,MAAM,IAAN,CAAW,IAAX,EAAiB,QAAjB,CAAZ;;AACA,QAAI,GAAG,KAAK,sBAAZ,EAAoC;AAChC,aAAO,GAAP;AACH,KAFD,MAEO;AACH,aAAO,CAAC,GAAR;AACH;AACJ;;AAnBoC,C,CAsBzC;;AAEM,MAAO,WAAP,SAA2B,YAA3B,CAAuC;AAOzC,cAAY,YAA4B,EAAxC,EAA0C;AACtC;;AACA,QAAI,CAAC,KAAK,CAAC,OAAN,CAAc,SAAd,CAAL,EAA+B;AAC3B,eAAS,GAAG,CAAC,SAAD,CAAZ;AACH;;AACD,SAAK,SAAL,GAAiB,SAAjB;AACH;;AAZuB,aAAb,aAAa;AACpB,WAAO,oBAAP;AACH,GAHwC,CAczC;;;AAEA,MAAI,CAAC,IAAD,EAAO,QAAP,EAAe;AACf,WAAO,IAAI,CAAC,iBAAL,CAAuB,KAAK,SAA5B,CAAP;AACH;;AAlBwC;AAqBvC,MAAO,cAAP,SAA8B,WAA9B,CAAyC;AACnB,aAAb,aAAa;AACpB,WAAO,uBAAP;AACH;;AAED,MAAI,CAAC,IAAD,EAAO,QAAP,EAAe;AACf,WAAO,CAAE,MAAM,IAAN,CAAW,IAAX,EAAiB,QAAjB,CAAT;AACH;;AAP0C,C,CAU/C;;AAEM,MAAO,YAAP,SAA4B,YAA5B,CAAwC;AAa1C,cACI,WADJ,EAEI,SAAS,GAAC,SAFd,EAGI;AACI,sBAAkB,GAAC,IADvB;AAEI,oBAAgB,GAAC,KAFrB;AAGI,mBAAe,GAAC,IAHpB;AAII,iCAA6B,GAAC;AAJlC,MAKE,EARN,EAQQ;AAEJ;AAZJ,4BAA4B,KAA5B;AAaI,SAAK,WAAL,GAAmB,WAAnB;AACA,SAAK,SAAL,GAAiB,SAAjB;AACA,SAAK,kBAAL,GAA0B,kBAA1B;AACA,SAAK,gBAAL,GAAwB,gBAAxB;AACA,SAAK,eAAL,GAAuB,eAAvB;AACA,SAAK,6BAAL,GAAqC,6BAArC;;AAEA,QAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,WAAK,SAAL,GAAiB,WAAjB;AACA,WAAK,gBAAL,GAAwB,IAAxB;AACH,KAHD,MAGO,IAAI,SAAS,IAAI,WAAjB,EAA8B;AACjC,WAAK,gBAAL,GAAwB,IAAxB;AACH;AAGJ;;AAtCuB,aAAb,aAAa;AACpB,WAAO,qBAAP;AACH;;AAsCD,MAAI,CAAC,IAAD,EAAO,QAAP,EAAe;AACf;AACA;AACA,WAAO,KAAK,sBAAL,CACH,IADG,EAEH,QAAQ,CAAC,SAAT,CAAmB,aAAnB,CAAiC,IAAjC,CAFG,CAAP;AAIH;;AAED,wBAAsB,CAAC,CAAD,EAAI,MAAJ,EAAU;AAC5B,QAAI,MAAM,GAAG,KAAK,SAAlB,EAA6B;AACzB;AACA,aAAO,KAAP;AACH;;AACD,QAAM,GAAG,GAAG,CAAC,CAAC,QAAd;AACA,QAAM,UAAU,GAAG,MAAM,GAAG,GAAG,CAAC,aAAhC;;AACA,QAAI,UAAU,GAAG,KAAK,WAAtB,EAAmC;AAC/B;AACA,aAAO,KAAP;AACH,KAV2B,CAY5B;;;AAEA,QAAI,mBAAmB,GAAG,KAA1B;;AACA,QAAI,GAAG,CAAC,aAAJ,KAAsB,CAA1B,EAA6B;AACzB,yBAAmB,GAAG,IAAtB;AACH;;AACD,QAAI,KAAK,gBAAL,IAAyB,mBAA7B,EAAkD;AAC9C,aAAO,IAAP;AACH;;AAED,QAAI,KAAK,gBAAT,EAA2B;AACvB,UAAI,UAAU,GAAG,KAAK,SAAtB,EAAiC;AAC7B,eAAO,KAAP;AACH;;AACD,UAAI,CAAC,KAAK,kBAAN,IAA4B,MAAM,KAAK,KAAK,SAAhD,EAA2D;AACvD,eAAO,KAAP;AACH;AACJ;;AAED,QAAI,KAAK,eAAT,EAA0B;AACtB,UAAI,MAAM,GAAG,KAAK,WAAlB,EAA+B;AAC3B,eAAO,KAAP;AACH;;AACD,UAAI,CAAC,KAAK,kBAAN,IAA4B,MAAM,KAAK,KAAK,SAAhD,EAA2D;AACvD,eAAO,KAAP;AACH;AACJ,KAPD,MAOO,IAAI,CAAC,mBAAD,IAAwB,UAAU,KAAK,KAAK,SAA5C,IAAyD,KAAK,gBAAlE,EAAoF;AACvF,aAAO,KAAP;AACH;;AAED,QAAI,CAAC,KAAK,kBAAN,IAA4B,MAAM,KAAK,KAAK,SAAhD,EAA2D;AACvD,aAAO,KAAP;AACH;;AACD,QAAI,CAAC,KAAK,6BAAN,IAAuC,UAAU,KAAK,KAAK,WAA/D,EAA4E;AACxE,aAAO,KAAP;AACH;;AACD,WAAO,IAAP;AACH;;AAnGyC,C,CAsG9C,8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzNA;AACA;AAKA,IAAM,sBAAsB,GAAG,4DAA/B,C,CAEA;;AACM,MAAO,uBAAP,SAAuC,0DAAvC,CAAsD;;AAI5D,MAAM,mBAAN,CAAyB;AAiBrB,cACI,SADJ,EAEI;AACI,cAAU,GAAG,EADjB;AAEI,sBAAkB,GAAC,IAFvB;AAGI,qBAAiB,GAAC,SAHtB;AAII,iBAAa,GAAC;AAJlB,MAKE,EAPN,EAOQ;AAtBR,iBAAgB,CAAhB;AAGA,uBAAsB,WAAtB;AACA,yBAAyB,KAAzB;AAQA,wBAAuB,CAAvB;;AAYI,QAAI,CAAC,aAAD,IAAkB,CAAC,SAAS,CAAC,QAA7B,IAAyC,SAAS,CAAC,QAAvD,EAAiE;AAC7D,eAAS,CAAC,IAAV;AACH;;AACD,SAAK,SAAL,GAAiB,SAAjB;AACA,SAAK,iBAAL,GAAyB,SAAS,CAAC,QAAnC;AACA,SAAK,YAAL,GAAoB,KAAK,iBAAL,CAAuB,MAA3C;AAEA,SAAK,kBAAL,GAA0B,kBAA1B;AACA,SAAK,kBAAL,GAA0B,SAA1B;;AACA,QAAI,CAAC,KAAK,CAAC,OAAN,CAAc,UAAd,CAAL,EAAgC;AAC5B,gBAAU,GAAG,CAAC,UAAD,CAAb;AACH;;AACD,SAAK,OAAL,GAAe,UAAf;AAEA,SAAK,YAAL,GAAoB,CAApB,CAhBI,CAgBoB;;AAExB,QAAI,iBAAiB,KAAK,SAA1B,EAAqC;AACjC,WAAK,iBAAL,GAAyB,EAAzB;AACA,WAAK,uBAAL;AACH,KAHD,MAGO;AACH,WAAK,iBAAL,GAAyB,iBAAzB;AACH;AACJ;;AAEiB,IAAf,MAAM,CAAC,QAAQ,IAAC;AACf,SAAK,KAAL;;AACA,SAAK,IAAM,EAAX,IAAiB,KAAK,iBAAtB,EAAyC;AACrC,YAAM,EAAN;AACH;AACJ;;AAED,KAAG,CAAC,IAAD,EAAK;AACJ,WAAO,KAAK,CAAC,IAAN,CAAW,IAAX,EAAiB,GAAjB,CAAqB,IAArB,CAAP;AACH;;AAED,KAAG,CAAC,CAAD,EAAE;AACD,QAAM,EAAE,GAAG,KAAK,gBAAL,EAAX;;AACA,QAAI,CAAC,GAAG,CAAR,EAAW;AACP,OAAC,GAAG,EAAE,CAAC,MAAH,GAAY,CAAhB;AACH;;AACD,WAAO,EAAE,CAAC,CAAD,CAAT;AACH;;AAES,MAAN,MAAM;AACN,QAAI,KAAK,IAAL,KAAc,SAAlB,EAA6B;AACzB,aAAO,KAAK,IAAZ;AACH;;AACD,SAAK,IAAL,GAAY,KAAK,gBAAL,GAAwB,MAApC;AACA,SAAK,KAAL;AACA,WAAO,KAAK,IAAZ;AACH;;AAED,yBAAuB;AACnB,QAAM,EAAE,GAAG,KAAK,iBAAhB;AACA,MAAE,CAAC,MAAH,GAAY,KAAK,SAAjB;AACA,MAAE,CAAC,KAAH,GAAW,KAAK,KAAL,GAAa,CAAxB;AACA,MAAE,CAAC,WAAH,GAAiB,KAAK,WAAtB;AACA,MAAE,CAAC,YAAH,GAAkB,KAAK,YAAvB;AACH;;AAED,OAAK;AACD,SAAK,KAAL,GAAa,CAAb;AACA,SAAK,WAAL,GAAmB,WAAnB;AACA,SAAK,uBAAL;;AACA,SAAK,IAAM,CAAX,IAAgB,KAAK,OAArB,EAA8B;AAC1B,UAAI,CAAC,CAAC,KAAF,KAAY,SAAhB,EAA2B;AACvB,SAAC,CAAC,KAAF;AACH;AACJ;AACJ;;AAED,aAAW;AACP,SAAK,IAAL,GAAY,SAAZ;AACA,SAAK,iBAAL,GAAyB,SAAzB;AACH;;AAED,SAAO;AACH,QAAI,KAAK,aAAT,EAAwB;AACpB,WAAK,KAAL;AACA,WAAK,SAAL,GAAiB,SAAjB;AACA,WAAK,iBAAL,GAAyB,EAAzB;AACH;AACJ;;AAED,kBAAgB;AACZ,QAAI,KAAK,iBAAL,KAA2B,SAA/B,EAA0C;AACtC,aAAoB,KAAK,iBAAzB;AACH;;AAED,QAAM,UAAU,GAAG,KAAK,KAAxB;AACA,QAAM,uBAAuB,GAAG,KAAK,kBAArC;AACA,SAAK,kBAAL,GAA0B,IAA1B;AAEA,QAAM,EAAE,GAAG,EAAX,CATY,CASG;;AACf,SAAK,IAAM,CAAX,IAAgB,IAAhB,EAAsB;AAClB,QAAE,CAAC,IAAH,CAAQ,CAAR;AACH;;AACD,SAAK,KAAL;AACA,SAAK,KAAL,GAAa,UAAb;AACA,SAAK,kBAAL,GAA0B,uBAA1B;AACA,SAAK,iBAAL,GAAyB,EAAzB;AACA,WAAO,EAAP;AACH;;AAED,gBAAc,CAAC,CAAD,EAAsB;AAChC,SAAK,IAAM,CAAX,IAAgB,KAAK,OAArB,EAA8B;AAC1B,UAAM,GAAG,GAAG,CAAC,CAAC,IAAF,CAAO,CAAP,EAAU,IAAV,CAAZ;;AACA,UAAI,GAAG,KAAK,KAAZ,EAAmB;AACf,eAAO,KAAP,CADe,CACD;AACjB;;AACD,UAAI,GAAG,KAAK,sBAAZ,EAAoC;AAChC,eAAO,GAAP;AACH;AACJ;;AACD,WAAO,IAAP;AACH;;AAED,QAAM;AACF,QAAM,EAAE,GAAG,KAAK,SAAhB,CADE,CAEF;;AAEA,QAAM,KAAK,GAAG,EAAE,CAAC,KAAH,CAAS,KAAT,CAAd;AACA,SAAK,CAAC,QAAN,GAAiB,EAAjB,CALE,CAMF;;AACA,QAAM,EAAE,GAAG,KAAK,gBAAL,EAAX;;AACA,SAAK,IAAM,CAAX,IAAgB,EAAhB,EAAoB;AAChB,UAAM,aAAa,GAAG,IAAtB;AACA,UAAM,CAAC,GAAG,EAAE,CAAC,aAAH,CAAiB,CAAjB,EAAoB,aAApB,CAAV,CAFgB,CAGhB;AACA;;AACA,WAAK,CAAC,MAAN,CAAa,CAAb,EAA0C,CAA1C;AACH,KAdC,CAeF;AACA;AACA;;;AACA,WAAO,KAAP;AACH,GAlKoB,CAoKrB;;;AACqB,MAAjB,iBAAiB;AACjB,WAAO,KAAK,iBAAL,CAAuB,MAAvB,CAA8B,KAAK,iBAAL,CAAuB,WAArD,CAAP;AACH;;AAED,WAAS,CAAC,SAAD,EAAU;AACf,SAAK,IAAM,CAAX,IAAgB,KAAK,OAArB,EAA8B;AAC1B,UAAI,SAAS,KAAK,CAAlB,EAAqB;AACjB,eAAO,IAAP,CADiB,CACJ;AAChB;AACJ;;AACD,SAAK,OAAL,CAAa,IAAb,CAAkB,SAAlB;AACA,SAAK,WAAL;AACA,WAAO,IAAP;AACH,GAlLoB,CAoLrB;;;AACA,cAAY,CAAC,SAAD,EAAU;AAClB,QAAM,KAAK,GAAG,KAAK,OAAL,CAAa,OAAb,CAAqB,SAArB,CAAd;;AACA,QAAI,KAAK,KAAK,CAAC,CAAf,EAAkB;AACd,WAAK,OAAL,CAAa,MAAb,CAAoB,KAApB,EAA2B,CAA3B;AACH;;AACD,SAAK,WAAL;AACA,WAAO,IAAP;AACH,GA5LoB,CA8LrB;AACA;AACA;;;AAEA,oBAAkB,CAAC,eAAD,EAAgB;AAC9B,WAAO,KAAK,SAAL,CAAe,IAAI,iDAAJ,CAAwB,eAAxB,CAAf,CAAP;AACH;;AAED,uBAAqB,CAAC,eAAD,EAAgB;AACjC,WAAO,KAAK,SAAL,CAAe,IAAI,oDAAJ,CAA2B,eAA3B,CAAf,CAAP;AACH,GAxMoB,CA0MrB;AACA;;;AACA,qBAAmB,CAAC,WAAD,EAAc,GAAG,IAAjB,EAAqB;AACpC,WAAO,KAAK,SAAL,CAAe,IAAI,kDAAJ,CAAyB,WAAzB,EAAsC,GAAG,IAAzC,CAAf,CAAP;AACH;;AAGQ,MAAL,KAAK;AACL,WAAO,KAAK,SAAL,CAAe,IAAI,iDAAJ,CAAwB,SAAxB,CAAf,CAAP;AACH;;AAEgB,MAAb,aAAa;AACb,WAAO,KAAK,SAAL,CAAe,IAAI,iDAAJ,CAAwB,aAAxB,CAAf,CAAP;AACH;;AAEQ,MAAL,KAAK;AACL,WAAO,KAAK,SAAL,CAAe,IAAI,iDAAJ,CAAwB,MAAxB,CAAf,CAAP;AACH,GA3NoB,CA6NrB;;;AACY,MAAR,QAAQ;AACR,WAAO,KAAK,SAAL,CAAe,IAAI,iDAAJ,CAAwB,SAAxB,CAAf,CAAP;AACH;;AAES,MAAN,MAAM;AACN,WAAO,KAAK,SAAL,CAAe,IAAI,iDAAJ,CAAwB,OAAxB,CAAf,CAAP;AACH;;AApOoB;;AAuOnB,MAAO,cAAP,SAAsD,mBAAtD,CAA4E;AAE5D,IAAf,MAAM,CAAC,QAAQ,IAAC;AACf,SAAK,KAAL;;AACA,WAAO,KAAK,KAAL,GAAa,KAAK,YAAzB,EAAuC;AACnC;AACA,WAAK,KAAL,IAAc,CAAd;AACA,UAAI,CAAC,SAAL;;AACA,UAAI;AACA,SAAC,GAAG,KAAK,iBAAL,CAAuB,KAAK,KAAL,GAAa,CAApC,CAAJ;AACH,OAFD,CAEE,OAAO,GAAP,EAAY;AACV;AACH;;AACD,UAAM,OAAO,GAAG,KAAK,cAAL,CAAoB,CAApB,CAAhB;;AACA,UAAI,OAAO,KAAK,KAAhB,EAAuB;AACnB;AACH;;AACD,UAAI,OAAO,KAAK,sBAAhB,EAAwC;AACpC;AACH;;AACD,UAAI,KAAK,kBAAT,EAA6B;AACzB,SAAC,CAAC,UAAF,GAAe,KAAK,SAApB;AACH;;AACD,WAAK,uBAAL;AACA,YAAM,CAAN;AACH;;AACD,SAAK,OAAL;AACH;;AA3B6E;AA+B5E,MAAO,cAAP,SAAsD,mBAAtD,CAA4E;AAI9E,cAAY,SAAZ,EAAuB,OAAO,GAAC,EAA/B,EAAiC;AAC7B,UAAM,SAAN,EAAiB,OAAjB;AACA,SAAK,WAAL,GAAmB,EAAnB;AACH;;AAEiB,IAAf,MAAM,CAAC,QAAQ,IAAC;AACf,SAAK,KAAL,GADe,CAEf;;AAEA,WAAO,KAAK,KAAL,GAAa,KAAK,YAAzB,EAAuC;AACnC;AACA,WAAK,KAAL,IAAc,CAAd;AACA,UAAI,CAAC,SAAL;;AACA,UAAI;AACA,SAAC,GAAG,KAAK,iBAAL,CAAuB,KAAK,KAAL,GAAa,CAApC,CAAJ;AACH,OAFD,CAEE,OAAO,GAAP,EAAY;AACV;AACH;;AACD,UAAM,OAAO,GAAG,KAAK,cAAL,CAAoB,CAApB,CAAhB;;AACA,UAAI,OAAO,KAAK,KAAhB,EAAuB;AACnB;AACH;;AACD,UAAI,OAAO,KAAK,sBAAhB,EAAwC;AACpC;AACH;;AACD,UAAM,QAAQ,GAAG,CAAC,CAAD,CAAjB;AACA,UAAM,OAAO,GAAG,KAAK,SAAL,CAAe,aAAf,CAA6B,CAA7B,CAAhB;;AAEA,WAAK,IAAI,YAAY,GAAG,KAAK,KAA7B,EAAoC,YAAY,GAAG,KAAK,YAAxD,EAAsE,YAAY,EAAlF,EAAsF;AAClF,YAAI,KAAK,SAAT;;AACA,YAAI;AACA,eAAK,GAAG,KAAK,iBAAL,CAAuB,KAAK,KAAL,GAAa,CAApC,CAAR;AACH,SAFD,CAEE,OAAO,GAAP,EAAY;AACV;AACH;;AACD,YAAM,UAAU,GAAG,KAAK,SAAL,CAAe,aAAf,CAA6B,KAA7B,CAAnB;;AACA,YAAI,UAAU,KAAK,OAAnB,EAA4B;AACxB,eAAK,WAAL,GAAmB,CAAC,KAAD,CAAnB;AACA,eAAK,iBAAL,GAAyB,UAAzB;AACA;AACH;;AACD,YAAI,CAAC,KAAK,cAAL,CAAoB,KAApB,CAAL,EAAiC;AAC7B;AACH;;AAED,gBAAQ,CAAC,IAAT,CAAc,CAAd;AACA,aAAK,KAAL,GAAa,YAAb;AACH;;AAED,UAAI,KAAK,kBAAT,EAA6B;AACzB,aAAK,IAAM,EAAX,IAAiB,QAAjB,EAA2B;AACvB,YAAE,CAAC,UAAH,GAAgB,KAAK,SAArB;AACH;AACJ;;AACD,WAAK,uBAAL;AACA,YAAM,QAAN;AACH;;AACD,SAAK,OAAL;AACH;;AAED,OAAK;AACD,UAAM,KAAN;AACA,SAAK,WAAL,GAAmB,EAAnB;AACA,SAAK,iBAAL,GAAyB,SAAzB;AACH;;AApE6E;AAuE5E,MAAO,iBAAP,SAAyD,mBAAzD,CAA+E;AAOjF,cACI,SADJ,EAEI;AACI,cAAU,GAAC,EADf;AAEI,sBAAkB,GAAC,IAFvB;AAGI,qBAAiB,GAAC,SAHtB;AAII,eAAW,GAAC,KAJhB;AAKI,eAAW,GAAC,KALhB;AAMI,iBAAa,GAAC;AANlB,MAOE,EATN,EASQ;AAEJ,UAAM,SAAN,EAAiB;AACb,gBADa;AAEb,wBAFa;AAGb,uBAHa;AAIb;AAJa,KAAjB;AAdJ,0CAAyC,GAAzC;AAoBI,SAAK,UAAL,GAAkB,WAAlB;AACA,SAAK,WAAL,GAAmB,WAAnB;AACA,SAAK,aAAL,GAAqB,aAArB;;AACA,QAAI,WAAJ,EAAiB;AACb,WAAK,OAAL,CAAa,IAAb,CAAkB,IAAI,iDAAJ,CAAwB,QAAxB,CAAlB;AACH;;AACD,SAAK,sBAAL,GAA8B,SAA9B;AACH;;AAED,OAAK;AACD,SAAK,UAAL,GAAkB,KAAK,WAAvB;AACA,SAAK,sBAAL,GAA8B,SAA9B;AACA,SAAK,iBAAL,CAAuB,WAAvB,GAAqC,SAArC;AACA,UAAM,KAAN;AACH;;AAEiB,IAAf,MAAM,CAAC,QAAQ,IAAC;AACf,SAAK,KAAL,GADe,CACD;;AAEd,QAAI,KAAK,UAAL,IAAmB,KAAK,cAAL,CAAoB,KAAK,SAAzB,CAAvB,EAA4D;AACxD,WAAK,iBAAL,CAAuB,MAAvB,GAAgC,SAAhC;AACA,WAAK,iBAAL,CAAuB,KAAvB,GAA+B,CAAC,CAAhC;AACA,WAAK,iBAAL,CAAuB,WAAvB,GAAqC,KAAK,SAA1C;AACA,WAAK,UAAL,GAAkB,KAAlB;AACA,YAAe,KAAK,SAApB;AACH,KAND,MAMO,IAAI,KAAK,UAAT,EAAqB;AACxB;AACA,WAAK,UAAL,GAAkB,KAAlB;AACH;;AAED,WAAO,KAAK,KAAL,GAAa,KAAK,YAAzB,EAAuC;AACnC,WAAK,KAAL,IAAc,CAAd;AACA,UAAM,CAAC,GAAG,KAAK,iBAAL,CAAuB,KAAK,KAAL,GAAa,CAApC,CAAV;;AACA,UAAI,CAAC,KAAK,SAAV,EAAqB;AACjB;AACA;AACH;;AACD,UAAI,KAAK,cAAL,CAAoB,CAApB,CAAJ,EAA4B;AACxB,YAAI,KAAK,kBAAT,EAA6B;AACzB,WAAC,CAAC,UAAF,GAAe,KAAK,SAApB;AACH;;AACD,aAAK,uBAAL;AACA,aAAK,iBAAL,CAAuB,WAAvB,GAAqC,CAArC;AACA,cAAe,CAAf;AACH;;AAED,UAAI,CAAC,CAAC,QAAN,EAAgB;AACZ,aAAK,sBAAL,GAA8B,IAAI,iBAAJ,CACL,CADK,EAE1B;AACI,4BAAkB,EAAE,KAAK,kBAD7B;AAEI,oBAAU,EAAE,KAAK,OAFrB;AAGI,2BAAiB,EAAE,KAAK,iBAH5B;AAII,qBAAW,EAAE,KAJjB;AAKI,uBAAa,EAAE,KAAK;AALxB,SAF0B,CAA9B;AAYA,YAAM,cAAc,GAChB,KAAK,8BAAL,GACE,KAAK,SAAL,CAAe,aAAf,CAA6B,CAA7B,CAFN;AAIA,aAAK,sBAAL,CAA4B,8BAA5B,GAA6D,cAA7D;;AACA,aAAK,IAAM,EAAX,IAAgB,KAAK,sBAArB,EAA6C;AACzC,gBAAM,EAAN;AACH;;AACD,aAAK,sBAAL,GAA8B,SAA9B;AACH;AACJ;;AACD,SAAK,iBAAL,CAAuB,WAAvB,GAAqC,SAArC;AACA,SAAK,OAAL;AACH;;AAED,kBAAgB;AACZ;AACA;AACA,QAAM,sBAAsB,GAAG,KAAK,sBAApC;AACA,QAAM,EAAE,GAAG,MAAM,gBAAN,EAAX;AACA,SAAK,sBAAL,GAA8B,sBAA9B;AACA,WAAO,EAAP;AACH;AAED;;;AAGG;;;AACH,eAAa;AACT,QAAM,SAAS,GAA2B,CAAC,IAAD,CAA1C;AACA,QAAI,CAAC,GAAyB,IAA9B;;AACA,WAAO,CAAC,CAAC,sBAAF,KAA6B,SAApC,EAA+C;AAC3C,OAAC,GAAG,CAAC,CAAC,sBAAN;AACA,eAAS,CAAC,IAAV,CAAe,CAAf;AACH;;AACD,WAAO,SAAP;AACH,GAvHgF,CAyHjF;;AACA;;AAEG;;;AACH,aAAW;AACP,WAAO,KAAK,aAAL,GAAqB,GAArB,CAAyB,IAAI,IAAI,IAAI,CAAC,SAAtC,CAAP;AACH,GA/HgF,CAiIjF;;AACA;;;AAGG;;;AACH,wBAAsB;AAClB,QAAM,SAAS,GAAG,KAAK,iBAAL,CAAuB,WAAzC;;AACA,QAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,aAAO,SAAP;AACH;;AAED,QAAM,aAAa,GAAG,KAAK,aAAL,EAAtB;AACA,QAAM,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC,MAAd,GAAuB,CAAxB,CAApC;AACA,QAAM,UAAU,GAAG,cAAc,CAAC,SAAlC;AACA,QAAM,eAAe,GAAG,cAAc,CAAC,8BAAvC;;AACA,QAAI,SAAS,KAAK,UAAlB,EAA8B;AAC1B,aAAO,eAAP;AACH,KAFD,MAEO;AACH,aAAO,eAAe,GAAG,UAAU,CAAC,aAAX,CAAyB,SAAzB,CAAzB;AACH;AACJ;;AArJgF,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1VrF;;;AAGG;AACH;AACA;CAK4C;;AAOtC,SAAU,SAAV,CAAoB,CAApB,EAAuB;AACzB,SAAO,GAAC,KADiB;AAEzB,mBAAiB,GAAC;AAFO,IAGP,EAHhB,EAGkB;AACpB,MAAI,SAAS,GAAG,CAAhB;;AACA,MAAI,CAAC,OAAL,EAAc;AACV,aAAS,GAAG,CAAC,CAAC,KAAF,CAAQ,IAAR,CAAZ;AACH;;AACD,MAAI,KAAJ;;AACA,MAAI,CAAC,CAAC,OAAF,CAAU,QAAV,CAAmB,SAAnB,CAAJ,EAAmC;AAC/B,SAAK,GAAG,CAAC,SAAD,CAAR;AACH,GAFD,MAEO;AACH,SAAK,GAAG,EAAR;;AACA,SAAK,IAAM,CAAX,IAAgB,SAAS,CAAC,kBAAV,CAA6B,SAA7B,CAAhB,EAAyD;AACrD,WAAK,CAAC,IAAN,CAAW,CAAX;AACH;AACJ;;AACD,MAAI,iBAAJ;;AACA,OAAK,IAAM,EAAX,IAAgB,KAAhB,EAAuB;AACnB,QAAI,EAAC,CAAC,aAAF,KAAoB,SAAxB,EAAmC;AAC/B,uBAAiB,GAAG,EAAC,CAAC,aAAtB;AACH;;AACD,QAAI,iBAAiB,KAAK,SAA1B,EAAqC;AACjC,YAAM,IAAI,oDAAJ,CAAoB,wCAApB,CAAN;AACH,KANkB,CAOnB;;;AACA,QAAI,EAAC,CAAC,MAAF,IAAY,CAAhB,EAAmB;AACf,eADe,CACL;AACb;;AACD,QAAM,UAAU,GAAG,EAAC,CAAC,aAArB;AACA,QAAM,OAAO,GAAG,EAAhB;;AACA,SAAK,IAAM,CAAX,IAAgB,UAAhB,EAA4B;AACxB,aAAO,CAAC,IAAR,CAAa,CAAC,CAAC,QAAf;AACH;;AACD,QAAM,SAAS,GAAG,OAAO,CAAC,GAAR,CAAY,CAAC,IAAI,CAAC,CAAC,aAAnB,EAAkC,MAAlC,CAAyC,CAAC,KAAD,EAAQ,GAAR,KAAgB,KAAK,GAAG,GAAjE,CAAlB;AACA,QAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,OAAV,CAAkB,CAAlB,CAAD,CAAzB,CAjBmB,CAiB+B;;AAClD,QAAM,KAAK,GAAG,iBAAiB,CAAC,WAAlB,CAA8B,aAA5C;;AACA,QAAI,MAAM,GAAG,KAAb,EAAoB;AAChB;AACH;;AACD,QAAI,MAAM,GAAG,GAAb;;AACA,QAAI,EAAC,CAAC,WAAF,KAAkB,GAAlB,IAAyB,EAAC,CAAC,WAAF,KAAkB,SAA/C,EAA0D;AACtD,YAAM,GAAG,EAAC,CAAC,WAAX;AACH,KAFD,MAEO,IAAI,UAAU,CAAC,WAAX,GAAyB,KAA7B,EAAoC;AACvC,YAAM,GAAG,KAAK,GAAG,UAAU,CAAC,WAA5B;AACH;;AACD,QAAM,SAAS,GAAG,iBAAiB,CAAC,QAAlB,CAA2B,UAA3B,EAAuC;AAAE,wBAAkB,EAAE;AAAtB,KAAvC,CAAlB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,UAAU,CAAC,MAA/B,EAAuC,CAAC,EAAxC,EAA4C;AACxC,UAAM,EAAC,GAAG,UAAU,CAAC,GAAX,CAAe,CAAf,CAAV;;AACA,UAAM,SAAS,GAAG,SAAS,CAAC,CAAD,CAA3B;;AACA,UAAI,SAAS,KAAK,SAAlB,EAA6B;AACzB,UAAC,CAAC,KAAF,GAAU,SAAV;AACH,OAFD,MAEO;AACH,UAAC,CAAC,KAAF,GAAU,IAAI,wCAAJ,EAAV;AACH;AACJ;AACJ;;AAED,MAAI,iBAAJ,EAAuB;AACnB,iCAA6B,CAAC,SAAD,CAA7B;AACH,GAzDmB,CA2DpB;;;AACA,SAAO,SAAP;AACH;AAEK,UAAY,iBAAZ,CACF,CADE,EAEF;AACI,aAAW,GAAC,IADhB;AAEI,SAAO,GAAC;AAFZ,IAGgD,EAL9C,EAKgD;AAElD,MAAI,QAAJ;;AACA,MAAI,OAAJ,EAAa;AACT,YAAQ,GAAG,CAAC,CAAC,OAAF,EAAX;AACH,GAFD,MAEO;AACH,YAAQ,GAAG,CAAC,CAAC,IAAb;AACH;;AACD,MAAI,kBAAkB,GAAmB,EAAzC;AACA,MAAI,aAAa,GAAY,KAA7B;;AACA,OAAK,IAAM,UAAX,IAAyB,QAAQ,CAAC,kBAAT,CAA4B,SAA5B,CAAzB,EAAiE;AAC7D,QAAM,EAAE,GAAiB,UAAzB;AACA,QAAI,aAAqB,SAAzB;;AACA,QAAI,EAAE,CAAC,KAAH,KAAa,SAAb,IAA0B,EAAE,CAAC,KAAH,CAAS,UAAT,GAAsB,QAAtB,CAA+B,CAA/B,CAA9B,EAAiE;AAC7D,mBAAa,GAAG,EAAE,CAAC,KAAH,CAAS,eAAT,CAAyB,CAAzB,CAAhB;AACH;;AAED,QAAI,aAAa,KAAK,OAAtB,EAA+B;AAC3B,mBAAa,GAAG,IAAhB;AACH;;AACD,QAAI,aAAJ,EAAmB;AACf,wBAAkB,CAAC,IAAnB,CAAwB,EAAxB;AACH;;AACD,QAAI,aAAa,KAAK,MAAtB,EAA8B;AAC1B,YAAM,kBAAN;AACA,wBAAkB,GAAG,EAArB;AACA,mBAAa,GAAG,KAAhB;AACH,KAJD,MAIO,IAAI,CAAC,WAAD,IAAgB,CAAC,aAArB,EAAoC;AACvC,YAAM,CAAC,EAAD,CAAN;AACH;AACJ;;AAED,MAAI,kBAAkB,CAAC,MAAvB,EAA+B;AAC3B,UAAM,kBAAN;AACH;AACJ;AAGK,SAAU,6BAAV,CACF,CADE,EAEF;AACI,aAAW,GAAC,IADhB;AAEI,kCAAgC,GAAC;AAFrC,IAGyE,EALvE,EAKyE;AAE3E,OAAK,IAAM,SAAX,IAAwB,iBAAiB,CAAC,CAAD,EAAI;AAAC,eAAW,EAAE,IAAd;AAAoB,WAAO,EAAE;AAA7B,GAAJ,CAAzC,EAAkF;AAC9E,4BAAwB,CACpB,SADoB,EAEpB;AAAC,iBAAD;AAAc;AAAd,KAFoB,CAAxB;AAIH;AACJ;AAED,IAAM,QAAQ,GAAsB,CAAC,IAAD,EAAO,MAAP,CAApC;AACA,IAAM,oBAAoB,GAAsB,CAAC,IAAD,EAAO,MAAP,EAAe,aAAf,CAAhD;AAEM,SAAU,wBAAV,CACF,KADE,EAEF;AACI,aAAW,GAAC,IADhB;AAEI,kCAAgC,GAAC;AAFrC,IAGyE,EALvE,EAKyE;AAE3E,MAAI,CAAC,KAAK,CAAC,MAAX,EAAmB;AACf,WADe,CACN;AACZ;;AACD,MAAM,sBAAsB,GAAgB,IAAI,GAAJ,EAA5C;;AACA,OAAK,IAAM,CAAX,IAAgB,KAAhB,EAAuB;AACnB,QAAI,QAAQ,CAAC,QAAT,CAAkB,CAAC,CAAC,aAApB,CAAJ,EAAwC;AACpC,4BAAsB,CAAC,GAAvB,CAA2B,CAAC,CAAC,aAA7B;AACH;AACJ;;AACD,MAAI,8BAA8B,GAAY,KAA9C;;AACA,MAAI,sBAAsB,CAAC,IAAvB,GAA8B,CAAlC,EAAqC;AACjC,kCAA8B,GAAG,IAAjC;AACH;;AAED,MAAM,YAAY,GAAG,KAAK,CAAC,CAAD,CAAL,CAAS,iBAAT,CAA2B,uCAA3B,CAArB;;AACA,MAAI,YAAY,KAAK,SAArB,EAAgC;AAC5B;AACH;;AACD,MAAM,SAAS,GAAkB,EAAjC;;AACA,OAAK,IAAM,GAAX,IAAgB,KAAhB,EAAuB;AACnB,aAAS,CAAC,IAAV,CAAe,GAAG,GAAC,CAAC,OAApB;AACH;;AAED,MAAM,kBAAkB,GAAG,YAAY,CAAC,0BAAb,CAAwC,SAAxC,CAA3B;;AACA,OAAK,IAAM,GAAX,IAAgB,KAAhB,EAAuB;AACnB,QAAM,aAAa,GAAG,GAAC,CAAC,aAAxB;;AACA,QAAI,aAAa,KAAK,aAAlB,IAAmC,CAAC,WAAxC,EAAqD,CACjD;AACH,KAFD,MAEO,IAAI,QAAQ,CAAC,QAAT,CAAkB,aAAlB,KACG,CAAC,gCADJ,IAEG,8BAFP,EAEuC,CAC1C;AACH,KAJM,MAIA,IAAI,oBAAoB,CAAC,QAArB,CAA8B,aAA9B,CAAJ,EAAkD;AACrD,SAAC,CAAC,aAAF,GAAkB,kBAAlB;AACH;AACJ;AACJ,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3LD;;AAEG;AACH;;AAEA,SAAS,eAAT,CAAyB,IAAzB,EAA6B;AACzB,MAAM,GAAG,GAAG,qDAAY,EAAxB;AACA,KAAG,CAAC,YAAJ,CAAiB,SAAjB,EAA4B,eAA5B;AACA,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAT,CAAyB,4BAAzB,EAAuD,MAAvD,CAAjB;AACA,UAAQ,CAAC,YAAT,CAAsB,MAAtB,EAA8B,MAA9B;AACA,UAAQ,CAAC,YAAT,CACI,GADJ,EAEI,IAFJ;AAIA,KAAG,CAAC,WAAJ,CAAgB,QAAhB;AACA,SAAO,GAAP;AACH,C,CAED;;;AACO,IAAM,YAAY,GAAG,eAAe,CAAC,8tBAAD,CAApC,C,CACP;;AACO,IAAM,QAAQ,GAAG,eAAe,CAAC,kXAAD,CAAhC,C,CACP;;AACO,IAAM,WAAW,GAAG,eAAe,CAAC,4TAAD,CAAnC,C,CACP;;AACO,IAAM,SAAS,GAAG,eAAe,CAAC,2vBAAD,CAAjC,C,CACP;;AACO,IAAM,aAAa,GAAG,eAAe,CAAC,ylBAAD,CAArC;AAEA,IAAM,eAAe,GAAG,IAAI,GAAJ,EAAxB;AACP,eAAe,CAAC,GAAhB,CAAoB,CAAC,CAArB,EAAwB,YAAxB;AACA,eAAe,CAAC,GAAhB,CAAoB,CAAC,CAArB,EAAwB,QAAxB;AACA,eAAe,CAAC,GAAhB,CAAoB,CAApB,EAAuB,WAAvB;AACA,eAAe,CAAC,GAAhB,CAAoB,CAApB,EAAuB,SAAvB;AACA,eAAe,CAAC,GAAhB,CAAoB,CAApB,EAAuB,aAAvB,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClCA;;;;;;;;;;;;;;;;;AAiBG;AACH;AACA;AAEA;AACA;AACA;AAEA;AAEM,MAAO,cAAP,SAA8B,4DAA9B,CAA8C,E,CAEpD;;AACA;;;;;;;;AAQG;;AACI,IAAM,kBAAkB,GAAG;AAC9B,aAAW,EAAE,EADiB;AAE9B,YAAU,EAAE,EAFkB;AAG9B,OAAK,EAAE,EAHuB;AAI9B,kBAAgB,EAJc;AAK9B,OAAK,EAAE,EALuB;AAM9B,OAAK,EAAE,EANuB;AAO9B,QAAM,EAAE,EAPsB;AAQ9B,MAAI,EAAE,EARwB;AAS9B,SAAO,EAAE,EATqB;AAU9B,WAAS,EAAE,EAVmB;AAW9B,WAAS,EAAE,EAXmB;AAY9B,SAAO,EAAE,EAZqB;AAa9B,WAAS,EAAE,EAbmB;AAc9B,sBAAoB,EAdU;AAe9B,UAAQ,EAAE,EAfoB;AAgB9B,UAAQ,EAAE,EAhBoB;AAiB9B,UAAQ,EAAE,EAjBoB;AAkB9B,YAAU,EAAE,GAlBkB;AAmB9B,SAAO,EAAE,GAnBqB;AAoB9B,sBAAoB,GApBU;AAqB9B,SAAO,EAAE,GArBqB;AAsB9B,MAAI,EAAE,GAtBwB;AAuB9B,SAAO,EAAE,GAvBqB;AAwB9B,cAAY,EAAE,GAxBgB;AAyB9B,mBAAiB,GAzBa;AA0B9B,eAAa,GA1BiB;AA2B9B,QAAM,EAAE,GA3BsB;AA4B9B,aAAW,EAAE,GA5BiB;AA6B9B,QAAM,EAAE,GA7BsB;AA8B9B,aAAW,EAAE;AA9BiB,CAA3B;AAiCA,IAAM,SAAS,GAAG,EAAlB;AAEP;;AACA;;;;;;;;;;;;;;AAcG;;AACG,MAAO,SAAP,SAAyB,oDAAzB,CAA+C;AAejD,cAAY,WAAmB,SAA/B,EAAwC;AACpC;AAbJ,kBAAiB,SAAjB;AACA,8BAA6B,CAA7B;AACA,oBAAmB,EAAnB;AACA,oBAAmB,GAAnB;AACA,gBAAe,CAAf;AAEA,kBAAkB,KAAlB;AACA,iBAAiB,KAAjB;AACA,uBAAc,CAAC,CAAD,EAAI,EAAJ,EAAQ,EAAR,EAAY,EAAZ,EAAgB,GAAhB,EAAqB,GAArB,EAA0B,GAA1B,EAA+B,GAA/B,CAAd;AACA,0BAAiB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,EAAtB,EAA0B,GAA1B,CAAjB;;AAKI,QAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,WAAK,KAAL,GAAa,SAAb;AACH,KAFD,MAEO;AACH,WAAK,KAAL,GAAa,QAAb;AACH;AACJ;;AArBmB,aAAT,SAAS;AAAK,WAAO,yBAAP;AAAmC;;AAuBnD,MAAL,KAAK;AACL,WAAO,KAAK,MAAZ;AACH;;AAEQ,MAAL,KAAK,CAAC,CAAD,EAAU;AACf,SAAK,MAAL,GAAc,CAAd;;AACA,QAAI,KAAK,MAAL,GAAc,KAAK,QAAvB,EAAiC;AAC7B,WAAK,MAAL,GAAc,KAAK,QAAnB;AACH,KAFD,MAEO,IAAI,KAAK,MAAL,GAAc,KAAK,QAAvB,EAAiC;AACpC,WAAK,MAAL,GAAc,KAAK,QAAnB;AACH;AACJ;;AAEa,MAAV,UAAU;AACV,WAAO,OAAO,KAAK,KAAnB;AACH;;AAED,cAAY,CAAC,UAAD,EAAW;AACnB,SAAK,aAAL,CACK,IADL,CACU,aADV,EAEK,GAFL,CAES,kBAFT,EAE6B,UAF7B,EAGK,OAHL,CAGa,KAAK,UAAL,GAAkB,IAAlB,GAAyB,CAHtC,EAGyC,SAAS,aAAT,GAAsB;AACvD,yCAAC,CAAC,IAAD,CAAD,CACK,GADL,CACS,kBADT,EAC6B,SAD7B,EAEK,MAFL,CAEY,CAFZ;AAGH,KAPL;AAQH;AAED;;AAEG;;;AACH,OAAK;AACD,SAAK,IAAL,IAAa,CAAb;;AACA,QAAI,KAAK,IAAL,GAAY,KAAK,kBAArB,EAAyC;AACrC,WAAK,IAAL,GAAY,CAAZ;;AACA,UAAI,KAAK,MAAL,KAAgB,IAApB,EAA0B;AACtB,qDAAY,CAAZ,EAAe,EAAf,EAAmB,GAAnB,EAAwB,CAAxB;AACA,sDAAa,CAAb,EAAgB,EAAhB,EAAoB,GAApB;AACH;;AACD,UAAI,KAAK,KAAL,KAAe,IAAnB,EAAyB;AACrB,aAAK,YAAL,CAAkB,SAAlB;AACH;AACJ,KATD,MASO;AACH,UAAI,KAAK,MAAL,KAAgB,IAApB,EAA0B;AACtB,qDAAY,CAAZ,EAAe,EAAf,EAAmB,EAAnB,EAAuB,CAAvB;AACA,sDAAa,CAAb,EAAgB,EAAhB,EAAoB,GAApB;AACH;;AACD,UAAI,KAAK,KAAL,KAAe,IAAnB,EAAyB;AACrB,aAAK,YAAL,CAAkB,SAAlB;AACH;AACJ;;AACD,QAAM,IAAI,GAAG,IAAb;AACA,SAAK,YAAL,GAAoB,MAAM,CAAC,UAAP,CAAkB,MAAK;AACvC,UAAI,CAAC,KAAL;AACH,KAFmB,EAEjB,OAAO,EAAP,GAAY,KAAK,KAFA,CAApB;AAGH;AAED;;AAEG;;;AACH,WAAS;AACL,QAAI,KAAK,YAAL,KAAsB,SAA1B,EAAqC;AACjC,kBAAY,CAAC,KAAK,YAAN,CAAZ;AACA,WAAK,YAAL,GAAoB,SAApB;AACH;AACJ;AAED;;;;;;;;;AASG;;;AACH,eAAa,CAAC,CAAC,GAAC,CAAH,EAAI;AACb;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,CAApB,EAAuB,CAAC,EAAxB,EAA4B;AACxB,UAAI,CAAC,GAAG,KAAK,KAAb;;AACA,WAAK,IAAI,EAAE,GAAG,CAAd,EAAiB,EAAE,GAAG,KAAK,WAAL,CAAiB,MAAvC,EAA+C,EAAE,EAAjD,EAAqD;AACjD,YAAM,YAAY,GAAG,KAAK,WAAL,CAAiB,EAAjB,CAArB;AACA,YAAM,aAAa,GAAG,KAAK,cAAL,CAAoB,EAApB,CAAtB;;AACA,YAAI,CAAC,GAAG,YAAR,EAAsB;AAClB,WAAC,IAAI,aAAL;AACA,WAAC,GAAG,aAAa,GAAG,IAAI,CAAC,KAAL,CAAW,CAAC,GAAG,aAAf,CAApB;AACA;AACH;AACJ,OAVuB,CAWxB;;;AACA,WAAK,KAAL,GAAa,CAAb;AACH;;AACD,WAAO,KAAK,KAAZ;AACH;AAED;;;;;;;AAOG;;;AACH,eAAa,CAAC,CAAC,GAAC,CAAH,EAAI;AACb,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,CAApB,EAAuB,CAAC,EAAxB,EAA4B;AACxB,UAAI,CAAC,GAAG,KAAK,KAAb;AACA,UAAM,GAAG,GAAG,KAAK,WAAL,CAAiB,MAA7B;;AACA,WAAK,IAAI,EAAE,GAAG,CAAd,EAAiB,EAAE,IAAI,GAAvB,EAA4B,EAAE,EAA9B,EAAkC;AAC9B,YAAM,YAAY,GAAG,KAAK,WAAL,CAAiB,GAAG,GAAG,EAAvB,CAArB;AACA,YAAM,aAAa,GAAG,KAAK,cAAL,CAAoB,GAAG,GAAG,EAAN,GAAW,CAA/B,CAAtB;;AACA,YAAI,CAAC,GAAG,YAAR,EAAsB;AAClB,WAAC,IAAI,aAAL;AACA,WAAC,GAAG,aAAa,GAAG,IAAI,CAAC,KAAL,CAAW,CAAC,GAAG,aAAf,CAApB;AACA;AACH;AACJ,OAXuB,CAYxB;;;AACA,WAAK,KAAL,GAAa,CAAb;AACH;;AACD,WAAO,KAAK,KAAZ;AACH;AAED;;;;;AAKG;;;AACH,QAAM,CAAC,KAAD,EAAM;AACR;;AAEG;AACH,QAAI,MAAJ;;AACA,QAAI,KAAK,KAAK,SAAV,IAAuB,KAAK,YAAY,mCAA5C,EAA+C;AAC3C,YAAM,GAAG,KAAT;AACH,KAFD,MAEO,IAAI,KAAK,KAAK,SAAV,IAAuB,EAAE,KAAK,YAAY,mCAAnB,CAA3B,EAAkD;AACrD,YAAM,GAAG,mCAAC,CAAC,KAAD,CAAV;AACH,KAFM,MAEA;AACH,YAAM,GAAG,mCAAC,CAAC,MAAD,CAAV;AACH;;AACD,QAAM,SAAS,GAAG,IAAlB;AACA;;;AAGG;;AACH,QAAM,YAAY,GAAG,mCAAC,CAClB,+BAA+B,KAAK,KAAL,CAAW,QAAX,EAA/B,GAAuD,SADrC,CAAtB;AAGA,gBAAY,CAAC,GAAb,CAAiB;AACb,mBAAa,MADA;AAEb,sBAAgB,MAFH;AAGb,uBAAiB;AAHJ,KAAjB;AAKA;;;AAGG;;AACH,QAAM,OAAO,GAAG,mCAAC,CAAC,uCAAD,CAAjB;AACA,WAAO,CAAC,MAAR,CAAe,YAAf;AAEA;;;AAGG;;AACH,QAAM,EAAE,GAAG,mCAAC,CAAC,wBAAD,CAAZ;AACA,MAAE,CAAC,EAAH,CAAM,OAAN,EAAe,MAAK;AAChB,eAAS,CAAC,KAAV;AACH,KAFD;AAIA;;;AAGG;;AACH,QAAM,EAAE,GAAG,mCAAC,CAAC,uBAAD,CAAZ;AACA,MAAE,CAAC,EAAH,CAAM,OAAN,EAAe,MAAK;AAChB,eAAS,CAAC,SAAV;AACH,KAFD;AAGA,WAAO,CAAC,OAAR,CAAgB,EAAhB;AACA,WAAO,CAAC,OAAR,CAAgB,EAAhB;AACA;;;AAGG;;AACH,QAAM,EAAE,GAAG,mCAAC,CAAC,qBAAD,CAAZ;AACA,MAAE,CAAC,EAAH,CAAM,OAAN,EAAe,SAAS,mBAAT,GAA4B;AACvC,eAAS,CAAC,aAAV;AACA,yCAAC,CAAC,IAAD,CAAD,CACK,OADL,CACa,cADb,EAEK,IAFL,CAEU,SAAS,CAAC,KAAV,CAAgB,QAAhB,EAFV;AAGH,KALD;AAMA;;;AAGG;;AACH,QAAM,EAAE,GAAG,mCAAC,CAAC,uBAAD,CAAZ;AACA,MAAE,CAAC,EAAH,CAAM,OAAN,EAAe,SAAS,mBAAT,GAA4B;AACvC,eAAS,CAAC,aAAV;AACA,yCAAC,CAAC,IAAD,CAAD,CACK,OADL,CACa,cADb,EAEK,IAFL,CAEU,SAAS,CAAC,KAAV,CAAgB,QAAhB,EAFV;AAGH,KALD;AAMA,WAAO,CAAC,MAAR,CAAe,EAAf;AACA,WAAO,CAAC,MAAR,CAAe,EAAf;AACA;;;AAGG;;AACH,QAAM,MAAM,GAAG,mCAAC,CACZ,8BACM,iFAFM,CAAhB;AAIA,UAAM,CAAC,GAAP,CAAW,aAAX,EAA0B,MAA1B;AACA,UAAM,CAAC,GAAP,CAAW,QAAX,EAAqB,MAArB;AAEA,WAAO,CAAC,MAAR,CAAe,MAAf;AAEA,UAAM,CAAC,MAAP,CAAc,OAAd;AAEA,SAAK,aAAL,GAAqB,OAArB;AACA,WAAO,OAAP;AACH;;AArPgD;;AAwPrD,MAAM,SAAN,CAAe;AAEX,cAAY,OAAe,EAA3B,EAA6B;AACzB,SAAK,IAAL,GAAY,IAAZ;AACH;;AAJU;AAOf;;;;;;;;;;;;;AAaG;;;AACG,MAAO,aAAP,SAA6B,gDAA7B,CAA+C;AAUjD,cAAY;AACR,QAAI,GAAC,SADG;AAER,UAAM,GAAC,SAFC;AAGR,YAAQ,GAAC,SAHD;AAIR,eAAW,GAAC;AAJJ,MAKR,EALJ,EAKM;AACF;AARJ,uBAAuB,KAAvB;AAUI,SAAK,OAAL,GAAe,MAAf;;AACA,QAAI,KAAK,OAAL,KAAiB,SAArB,EAAgC;AAC5B,WAAK,cAAL,GAAsB,KAAtB;AACH;;AAED,SAAK,UAAL,GAAkB,SAAlB;AACA,SAAK,YAAL,GAAoB,SAApB;AACA,SAAK,IAAL,GAAY,IAAZ;AAEA,SAAK,SAAL,GAAiB,SAAjB;AACA,SAAK,QAAL,GAAgB,QAAhB;AAEA,SAAK,WAAL,GAAmB,WAAnB;;AAEA,SAAK,qBAAL;;AACA,SAAK,qBAAL;AACH;;AAjCmB,aAAT,SAAS;AAAK,WAAO,6BAAP;AAAuC;;AAmChE,uBAAqB;AACjB,QAAI,KAAK,OAAL,KAAiB,SAAjB,IAA8B,KAAK,UAAL,KAAoB,SAAtD,EAAiE;AAC7D,WAAK,OAAL,GAAe,KAAK,iBAAL,CAAuB,KAAK,UAA5B,CAAf;;AACA,UAAI,KAAK,OAAL,KAAiB,SAArB,EAAgC;AAC5B,aAAK,cAAL,GAAsB,IAAtB;AACH;AACJ;AACJ;;AAED,uBAAqB;AACjB,QAAI,KAAK,UAAL,KAAoB,SAApB,IAAiC,KAAK,OAAL,KAAiB,SAAtD,EAAiE;AAC7D,WAAK,IAAL,GAAY,KAAK,eAAL,CAAqB,KAAK,OAA1B,CAAZ;;AACA,UAAI,KAAK,IAAL,KAAc,SAAlB,EAA6B;AACzB,aAAK,YAAL,GAAoB,IAApB;AACH;AACJ;AACJ,GApDgD,CAsDjD;;;AACQ,MAAJ,IAAI;AACJ,QAAI,KAAK,UAAL,KAAoB,SAAxB,EAAmC;AAC/B,aAAO,SAAP;AACH;;AACD,WAAO,KAAK,UAAL,CAAgB,IAAvB;AACH;;AAEO,MAAJ,IAAI,CAAC,KAAD,EAAkC;AACtC,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,WAAK,UAAL,GAAkB,SAAlB;AACH,KAFD,MAEO,IAAI,KAAK,YAAY,SAArB,EAAgC;AACnC,WAAK,UAAL,GAAkB,KAAlB;AACA,WAAK,YAAL,GAAoB,KAApB;AACH,KAHM,MAGA;AACH,WAAK,UAAL,GAAkB,IAAI,SAAJ,CAAc,KAAd,CAAlB,CADG,CAEH;AACA;AACA;AACA;AACA;;AACA,WAAK,YAAL,GAAoB,KAApB;AACH;AACJ;;AAES,MAAN,MAAM;AACN,WAAO,KAAK,OAAZ;AACH;;AAES,MAAN,MAAM,CAAC,KAAD,EAAM;AACZ,QAAI,OAAO,KAAP,KAAiB,QAArB,EAA+B;AAC3B,YAAM,IAAI,cAAJ,CAAmB,+BAAnB,CAAN;AACH;;AACD,SAAK,OAAL,GAAe,KAAf;AACA,SAAK,cAAL,GAAsB,KAAtB;AACH;;AAEW,MAAR,QAAQ;AACR,WAAO,KAAK,SAAZ;AACH;;AAEW,MAAR,QAAQ,CAAC,KAAD,EAAM;AACd,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,WAAK,SAAL,GAAiB,IAAI,+CAAJ,CAAsB,CAAtB,CAAjB;AACH,KAFD,MAEO,IAAI,CAAC,QAAD,EAAW,QAAX,EAAqB,QAArB,CAA8B,OAAO,KAArC,CAAJ,EAAiD;AACpD,WAAK,SAAL,GAAiB,IAAI,+CAAJ,CAAsB,KAAtB,CAAjB;AACH,KAFM,MAEA,IAAI,KAAK,CAAC,OAAN,CAAc,QAAd,CAAuB,UAAvB,CAAJ,EAAwC;AAC3C,WAAK,SAAL,GAAiB,KAAjB;AACH,KAFM,MAEA,IAAI,KAAK,CAAC,QAAV,EAAoB;AACvB,WAAK,SAAL,GAAiB,KAAK,CAAC,QAAvB;AACH,KAFM,MAEA;AACH,YAAM,IAAI,cAAJ,2DAAsE,KAAtE,EAAN;AACH;AACJ;;AAED,mBAAiB,CAAC,SAAD,EAAU;AACvB,QAAM,QAAQ,GAAG,SAAS,YAAY,SAArB,GAAiC,SAAS,CAAC,IAA3C,GAAkD,SAAnE;AACA,QAAI,IAAJ;AACA,QAAM,UAAU,GAAG,MAAM,CAAC,IAAP,CAAY,kBAAZ,CAAnB;;AACA,QAAI,UAAU,CAAC,QAAX,CAAoB,QAAQ,CAAC,WAAT,EAApB,CAAJ,EAAiD;AAC7C,UAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,WAAT,EAAD,CAAzB;AACH,KAFD,MAEO,IAAI,UAAU,CAAC,QAAX,CAAoB,QAApB,CAAJ,EAAmC;AACtC,UAAI,GAAG,kBAAkB,CAAC,QAAD,CAAzB;AACH,KAFM,MAEA;AACH,WAAK,IAAM,IAAX,IAAmB,QAAQ,CAAC,KAAT,CAAe,GAAf,CAAnB,EAAwC;AACpC,YAAI,UAAU,CAAC,QAAX,CAAoB,IAAI,CAAC,WAAL,EAApB,CAAJ,EAA6C;AACzC,cAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,WAAT,EAAD,CAAzB;AACH;AACJ;AACJ;;AACD,WAAO,IAAP;AACH;;AAED,iBAAe,CAAC,MAAD,EAAS,MAAM,GAAC,CAAhB,EAAiB;AAC5B,QAAM,WAAW,GAAG,OAAO,MAAP,KAAkB,QAAlB,GAA6B,MAA7B,GAAsC,UAAU,CAAC,MAAD,CAApE;AACA,WAAO,MAAM,CAAC,IAAP,CAAY,kBAAZ,EAAgC,IAAhC,CAAqC,SAAS,IAAG;AACpD,UAAM,UAAU,GAAG,kBAAkB,CAAC,SAAD,CAArC;AACA,aAAS,UAAU,GAAG,MAAd,IAAyB,WAAzB,IACA,UAAU,GAAG,MAAd,IAAyB,WADhC;AAEH,KAJM,CAAP;AAKH;;AAtIgD,C;;;;;;;;;;;;;;;;;ACvWrD;;;;;;;AAOG;AAEH;AACA;AAEA;;;;AAIG;;AAEH;;;;;;AAMG;;AAEH,IAAM,eAAe,GAAG,CAAC,OAAD,EAAU,MAAV,EAAkB,UAAlB,EAA8B,UAA9B,EAA0C,mBAA1C,CAAxB;AAEA;;;;;;;;;;;;;AAaG;;AACG,MAAO,GAAP,SAAmB,oDAAnB,CAAyC;AAO3C,cAAY,IAAI,GAAC,OAAjB,EAAwB;AACpB;AAJJ,iBAAgB,QAAhB;AAKI,SAAK,IAAL,GAAY,IAAZ;AACH;;AATmB,aAAT,SAAS;AAAK,WAAO,iBAAP;AAA2B;;AAWpD,YAAU;AACN,WAAO,KAAK,IAAZ;AACH;;AAEO,MAAJ,IAAI;AACJ,WAAO,KAAK,KAAZ;AACH;;AAEO,MAAJ,IAAI,CAAC,OAAD,EAAgB;AACpB,QAAI,CAAC,eAAe,CAAC,QAAhB,CAAyB,OAAzB,CAAL,EAAwC;AACpC,YAAM,IAAI,2DAAJ,+BACqB,eADrB,mBAC6C,OAD7C,EAAN;AAGH;;AACD,SAAK,KAAL,GAAa,OAAb;AACH;;AA3B0C,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1C/C;;;;;;;;;;;;;;;;;;;AAmBG;AACH;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;AAIG;;AACH,IAAM,kBAAkB,GAAG;AACvB,MAAI,EAAE,GADiB;AAEvB,SAAO,EAAE,eAFc;AAGvB,SAAO,EAAE,SAHc;AAIvB,SAAO,EAAE,aAJc;AAKvB,SAAO,EAAE,SALc;AAMvB,SAAO,EAAE,UANc;AAOvB,QAAM,EAAE,UAPe;AAQvB,OAAK,EAAE,OARgB;AASvB,OAAK,EAAE,kBATgB;AAUvB,MAAI,EAAE,kBAViB;AAWvB,KAAG,EAAE,eAXkB;AAYvB,MAAI,EAAE,OAZiB;AAavB,KAAG,EAAE,IAbkB;AAcvB,SAAO,EAAE,GAdc;AAevB,OAAK,EAAE,iBAfgB;AAgBvB,OAAK,EAAE,OAhBgB;AAiBvB,KAAG,EAAE,KAjBkB;AAkBvB,SAAO,EAAE,cAlBc;AAoBvB,WAAS,EAAE,WApBY;AAsBvB,OAAK,EAAE,QAtBgB;AAuBvB,MAAI,EAAE,OAvBiB;AAwBvB,MAAI,EAAE,OAxBiB;AAyBvB,SAAO,EAAE;AAzBc,CAA3B;AA4BA;;;;;;;;;;;;;;;;AAgBG;;AACG,SAAU,YAAV,CAAuB,MAAvB,EAA6B;AAC/B,QAAM,GAAG,MAAM,CAAC,IAAP,EAAT;AACA,MAAM,MAAM,GAAG,MAAM,CAAC,KAAP,CAAa,GAAb,CAAf;AAEA,MAAI,aAAJ;AAEA,MAAI,CAAC,GAAG,IAAI,0CAAJ,EAAR;AACA,MAAI,CAAC,GAAG,IAAI,6CAAJ,EAAR;AACA,GAAC,CAAC,MAAF,GAAW,CAAX;AACA,MAAI,oBAAoB,GAAG,GAA3B;AACA,MAAI,cAAc,GAAG,GAArB;AACA,MAAM,UAAU,GAAG;AACf,gBAAY,EAAE,KADC;AAEf,UAAM,EAAE,KAFO;AAGf,UAAM,EAAE,KAHO;AAIf,WAAO,EAAE,KAJM;AAKf,qBAAiB,EAAE;AALJ,GAAnB;AAOA,MAAI,QAAQ,GAAG,IAAf;AACA,MAAM,IAAI,GAAG,kBAAb,CAnB+B,CAmBE;;AACjC,MAAI,aAAa,GAAG,CAApB;;AACA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,MAAM,CAAC,MAA3B,EAAmC,CAAC,EAApC,EAAwC;AACpC;AACA;AACA,QAAK,CAAC,CAAC,QAAF,CAAW,aAAX,IAA4B,oBAA7B,IACI,IAAI,CAAC,GAAL,CAAS,CAAC,CAAC,QAAF,CAAW,aAAX,GAA2B,oBAApC,IAA4D,MADpE,EAC6E;AACzE,OAAC,CAAC,MAAF,CAAS,CAAT;AACA,mBAAa,IAAI,CAAjB;AACA,OAAC,GAAG,IAAI,6CAAJ,EAAJ;AACA,OAAC,CAAC,MAAF,GAAW,aAAX;AACH;;AAED,QAAI,KAAK,GAAG,MAAM,CAAC,CAAD,CAAlB;AACA;;AAEG;;AACH,QAAI,OAAO,SAAX;AACA,QAAI,KAAK,SAAT;;AACA,QAAI,IAAI,CAAC,SAAL,CAAe,IAAf,CAAoB,KAApB,CAAJ,EAAgC;AAC5B,UAAI,CAAC,CAAC,MAAF,GAAW,CAAf,EAAkB;AACd,SAAC,CAAC,MAAF,CAAS,CAAT;AACA,SAAC,GAAG,IAAI,6CAAJ,EAAJ;AACH;;AACD,UAAI,aAAa,KAAK,SAAtB,EAAiC;AAC7B,qBAAa,GAAG,IAAI,2CAAJ,EAAhB;AACH;;AACD,mBAAa,CAAC,MAAd,CAAqB,CAArB,EAAwB,CAAxB;AACA,OAAC,GAAG,IAAI,0CAAJ,EAAJ;AAEA,gBAAU,CAAC,YAAX,GAA0B,KAA1B;AACA,gBAAU,CAAC,MAAX,GAAoB,KAApB;AACA,gBAAU,CAAC,MAAX,GAAoB,KAApB;AACA,gBAAU,CAAC,iBAAX,GAA+B,KAA/B;AAEA;AACH;;AAED,QAAI,IAAI,CAAC,IAAL,CAAU,IAAV,CAAe,KAAf,CAAJ,EAA2B;AACvB,WAAK,GAAG,KAAK,CAAC,KAAN,CAAY,CAAZ,CAAR,CADuB,CACC;;AACxB,gBAAU,CAAC,MAAX,GAAoB,IAApB;AACH;;AACD,QAAI,IAAI,CAAC,IAAL,CAAU,IAAV,CAAe,KAAf,CAAJ,EAA2B;AACvB,WAAK,GAAG,KAAK,CAAC,KAAN,CAAY,CAAZ,CAAR,CADuB,CACC;;AACxB,gBAAU,CAAC,MAAX,GAAoB,IAApB;AACH;;AACD,QAAI,IAAI,CAAC,KAAL,CAAW,IAAX,CAAgB,KAAhB,CAAJ,EAA4B;AACxB,WAAK,GAAG,KAAK,CAAC,KAAN,CAAY,CAAZ,CAAR,CADwB,CACA;;AACxB,gBAAU,CAAC,OAAX,GAAqB,IAArB;AACH;;AACD,QAAI,IAAI,CAAC,OAAL,CAAa,IAAb,CAAkB,KAAlB,CAAJ,EAA8B;AAC1B,UAAI,QAAQ,IAAI,IAAI,CAAC,KAAL,CAAW,IAAX,CAAgB,KAAhB,CAAhB,EAAwC;AACpC,YAAI,UAAU,SAAd;AACA,SAAC,KAAD,EAAQ,UAAR,IAAsB,KAAK,CAAC,KAAN,CAAY,GAAZ,CAAtB;AACA,gBAAQ,CAAC,KAAT,GAAiB,UAAjB;AACH;;AACD,WAAK,GAAG,KAAK,CAAC,KAAN,CAAY,CAAZ,EAAe,CAAC,CAAhB,CAAR,CAN0B,CAME;;AAC5B,gBAAU,CAAC,iBAAX,GAA+B,IAA/B;AACH,KAxDmC,CA0DpC;;;AACA,QAAI,IAAI,CAAC,KAAL,CAAW,IAAX,CAAgB,KAAhB,CAAJ,EAA4B;AACxB,OAAC,KAAD,EAAQ,KAAR,IAAiB,KAAK,CAAC,KAAN,CAAY,GAAZ,CAAjB;AACH;;AAED,QAAI,IAAI,CAAC,OAAL,CAAa,IAAb,CAAkB,KAAlB,CAAJ,EAA8B;AAC1B,UAAM,MAAK,GAAG,IAAI,CAAC,OAAL,CAAa,IAAb,CAAkB,KAAlB,CAAd;;AACA,UAAM,EAAE,GAAG,IAAI,kDAAJ,EAAX;AACA,QAAE,CAAC,SAAH,GAAe,QAAQ,CAAC,MAAK,CAAC,CAAD,CAAN,CAAvB;AACA,QAAE,CAAC,WAAH,GAAiB,QAAQ,CAAC,MAAK,CAAC,CAAD,CAAN,CAAzB;AACA,OAAC,CAAC,aAAF,GAAkB,EAAlB;AACA,0BAAoB,GAAG,EAAE,CAAC,WAAH,CAAe,aAAtC,CAN0B,CAO1B;;AACA;AACH,KATD,MASO,IAAI,IAAI,CAAC,IAAL,CAAU,IAAV,CAAe,KAAf,CAAJ,EAA2B;AAC9B,aAAO,GAAG,IAAI,wCAAJ,CAAc,cAAd,CAAV;AACH,KAFM,MAEA,IAAI,IAAI,CAAC,OAAL,CAAa,IAAb,CAAkB,KAAlB,CAAJ,EAA8B;AACjC,UAAM,OAAK,GAAG,IAAI,CAAC,OAAL,CAAa,IAAb,CAAkB,KAAlB,CAAd;;AACA,aAAO,GAAG,IAAI,wCAAJ,CAAc,OAAK,CAAC,CAAD,CAAnB,EAAwB,cAAxB,CAAV;AACA,aAAO,CAAC,KAAR,CAAc,MAAd,GAAuB,IAAI,OAAK,CAAC,CAAD,CAAL,CAAS,MAApC;AACH,KAJM,MAIA,IAAI,IAAI,CAAC,OAAL,CAAa,IAAb,CAAkB,KAAlB,CAAJ,EAA8B;AACjC,UAAM,OAAK,GAAG,IAAI,CAAC,OAAL,CAAa,IAAb,CAAkB,KAAlB,CAAd;;AACA,aAAO,GAAG,IAAI,wCAAJ,CAAc,OAAK,CAAC,CAAD,CAAnB,EAAwB,cAAxB,CAAV;AACA,aAAO,CAAC,KAAR,CAAc,MAAd,GAAuB,CAAvB;AACH,KAJM,MAIA,IAAI,IAAI,CAAC,OAAL,CAAa,IAAb,CAAkB,KAAlB,CAAJ,EAA8B;AACjC;AACA,UAAM,OAAK,GAAG,IAAI,CAAC,OAAL,CAAa,IAAb,CAAkB,KAAlB,CAAd;;AACA,aAAO,GAAG,IAAI,wCAAJ,CAAc,OAAK,CAAC,CAAD,CAAL,CAAS,WAAT,EAAd,EAAsC,cAAtC,CAAV;AACA,aAAO,CAAC,KAAR,CAAc,MAAd,GAAuB,IAAI,OAAK,CAAC,CAAD,CAAL,CAAS,MAApC;AACH,KALM,MAKA,IAAI,IAAI,CAAC,OAAL,CAAa,IAAb,CAAkB,KAAlB,CAAJ,EAA8B;AACjC,UAAM,OAAK,GAAG,IAAI,CAAC,OAAL,CAAa,IAAb,CAAkB,KAAlB,CAAd;;AACA,aAAO,GAAG,IAAI,wCAAJ,CAAc,OAAK,CAAC,CAAD,CAAL,CAAS,WAAT,EAAd,EAAsC,cAAtC,CAAV;AACA,aAAO,CAAC,KAAR,CAAc,MAAd,GAAuB,CAAvB;AACH;;AAED,QAAI,OAAO,KAAK,SAAhB,EAA2B;AACvB;AACH;;AAED,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,aAAO,CAAC,KAAR,GAAgB,KAAhB;AACH;;AAED,QAAI,IAAI,CAAC,GAAL,CAAS,IAAT,CAAc,KAAd,CAAJ,EAA0B;AACtB,aAAO,CAAC,GAAR,GAAc,IAAI,sCAAJ,CAAY,OAAZ,CAAd;;AACA,UAAI,UAAU,CAAC,YAAf,EAA6B;AACzB,eAAO,CAAC,GAAR,CAAY,IAAZ,GAAmB,UAAnB;AACH;;AACD,gBAAU,CAAC,YAAX,GAA0B,IAA1B;AACH,KAND,MAMO,IAAI,UAAU,CAAC,YAAf,EAA6B;AAChC,aAAO,CAAC,GAAR,GAAc,IAAI,sCAAJ,CAAY,MAAZ,CAAd;AACA,gBAAU,CAAC,YAAX,GAA0B,KAA1B;AACH;;AACD,QAAI,IAAI,CAAC,KAAL,CAAW,IAAX,CAAgB,KAAhB,CAAJ,EAA4B;AACxB,UAAM,OAAK,GAAG,IAAI,CAAC,KAAL,CAAW,IAAX,CAAgB,KAAhB,CAAd,CADwB,CACc;;;AACtC,aAAO,CAAC,KAAR,CAAc,UAAd,GAA2B,IAAI,8CAAJ,CAAqB,OAAK,CAAC,CAAD,CAAL,CAAS,MAA9B,CAA3B;AACH,KAHD,MAGO,IAAI,IAAI,CAAC,IAAL,CAAU,IAAV,CAAe,KAAf,CAAJ,EAA2B;AAC9B,UAAM,OAAK,GAAG,IAAI,CAAC,IAAL,CAAU,IAAV,CAAe,KAAf,CAAd,CAD8B,CACO;;;AACrC,aAAO,CAAC,KAAR,CAAc,UAAd,GAA2B,IAAI,8CAAJ,CAAqB,CAAC,CAAD,GAAK,OAAK,CAAC,CAAD,CAAL,CAAS,MAAnC,CAA3B;AACH,KAHM,MAGA,IAAI,IAAI,CAAC,GAAL,CAAS,IAAT,CAAc,KAAd,CAAJ,EAA0B;AAC7B,aAAO,CAAC,KAAR,CAAc,UAAd,GAA2B,IAAI,8CAAJ,CAAqB,SAArB,CAA3B;AACA,aAAO,CAAC,KAAR,CAAc,UAAd,CAAyB,WAAzB,GAAuC,QAAvC;AACH;;AACD,QAAI,KAAK,GAAG,IAAI,CAAC,IAAL,CAAU,IAAV,CAAe,KAAf,CAAZ;;AACA,QAAI,KAAJ,EAAW;AACP,UAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAD,CAAN,CAA7B;AACA,aAAO,CAAC,QAAR,CAAiB,aAAjB,GAAiC,MAAM,YAAvC;AACH;;AACD,SAAK,GAAG,IAAI,CAAC,GAAL,CAAS,IAAT,CAAc,KAAd,CAAR;;AACA,QAAI,KAAJ,EAAW;AACP,UAAM,OAAO,GAAG,KAAK,CAAC,CAAD,CAAL,CAAS,MAAzB;AACA,UAAM,UAAU,GAAG,KAAK,IAAI,cAAO,OAAP,CAAT,CAAnB;AACA,aAAO,CAAC,QAAR,CAAiB,aAAjB,IAAkC,UAAlC;AACH;;AACD,kBAAc,GAAG,OAAO,CAAC,QAAR,CAAiB,aAAlC,CApIoC,CAqIpC;;AAEA,QAAI,UAAU,CAAC,MAAf,EAAuB;AACnB;AACA,aAAO,CAAC,QAAR,CAAiB,YAAjB,CACI,IAAI,6CAAJ,CAAoB,CAApB,EAAuB,CAAvB,EAA0B,OAAO,CAAC,QAAR,CAAiB,aAA3C,CADJ;AAGH;;AACD,QAAI,UAAU,CAAC,MAAf,EAAuB;AACnB,aAAO,CAAC,QAAR,CAAiB,YAAjB,CACI,IAAI,6CAAJ,CAAoB,CAApB,EAAuB,CAAvB,EAA0B,OAAO,CAAC,QAAR,CAAiB,aAA3C,CADJ;AAGH;;AACD,QAAI,UAAU,CAAC,OAAf,EAAwB;AACpB,UAAI,QAAJ,EAAc;AACV,gBAAQ,CAAC,GAAT,CAAa,OAAb;AACH,OAFD,MAEO;AACH,gBAAQ,GAAG,IAAI,yCAAJ,CAAgB,CAAC,OAAD,CAAhB,CAAX;AACH;AACJ;;AACD,QAAI,UAAU,CAAC,iBAAf,EAAkC;AAC9B,gBAAU,CAAC,MAAX,GAAoB,KAApB;AACA,gBAAU,CAAC,MAAX,GAAoB,KAApB;AACA,gBAAU,CAAC,OAAX,GAAqB,KAArB;AACA,gBAAU,CAAC,iBAAX,GAA+B,KAA/B;;AAEA,UAAI,QAAJ,EAAc;AACV,SAAC,CAAC,MAAF,CAAS,QAAT;AACA,gBAAQ,GAAG,IAAX;AACA;AACH;AACJ;;AACD,QAAI,CAAC,UAAU,CAAC,OAAhB,EAAyB;AACrB,OAAC,CAAC,MAAF,CAAS,OAAT;AACH;AACJ;;AAED,MAAI,CAAC,CAAC,MAAF,GAAW,CAAf,EAAkB;AACd,KAAC,CAAC,MAAF,CAAS,CAAT;AACH;;AAED,MAAI,YAAJ;;AAEA,MAAI,aAAa,KAAK,SAAtB,EAAiC;AAC7B,QAAI,CAAC,CAAC,MAAF,GAAW,CAAf,EAAkB;AACd,mBAAa,CAAC,MAAd,CAAqB,CAArB,EAAwB,CAAxB;AACH;;AACD,SAAK,IAAI,EAAC,GAAG,CAAb,EAAgB,EAAC,GAAG,aAAa,CAAC,KAAd,CAAoB,MAAxC,EAAgD,EAAC,EAAjD,EAAqD;AACjD,UAAM,SAAS,GAAG,aAAa,CAAC,KAAd,CAAoB,GAApB,CAAwB,EAAxB,CAAlB;AACA,UAAM,aAAa,GAAG,4CAAc,SAAd,CAAtB;AACA,UAAM,YAAY,GAAG,SAAS,CAAC,kBAAV,CAA6B,SAA7B,EAAwC,GAAxC,CAA4C,CAA5C,CAArB;;AACA,UAAI,YAAY,KAAK,SAArB,EAAgC;AAC5B,oBAAY,CAAC,MAAb,CAAoB,CAApB,EAAuB,aAAvB;AACH;AACJ;;AACD,gBAAY,GAAG,aAAf;AACH,GAbD,MAaO;AACH,QAAM,QAAQ,GAAG,4CAAc,CAAd,CAAjB;AACC,KAAC,CAAC,kBAAF,CAAqB,SAArB,EAAgC,GAAhC,CAAoC,CAApC,EAA0D,MAA1D,CAAiE,CAAjE,EAAoE,QAApE;AACD,gBAAY,GAAG,CAAf;AACH;;AACD,SAAO,YAAP;AACH,C,CAED;;AACA;;;;;;;;AAQG;;AACG,SAAU,kBAAV,CACF,aAAqB,uBADnB,EAEF,QAAQ,GAAC,SAFP,EAEgB;AAElB,MAAI,UAAJ;;AAEA,MAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,cAAU,GAAG,mCAAC,CAAC,UAAD,CAAd;AACH,GAFD,MAEO;AACH;;AAEG;AACH,QAAI,SAAJ;;AACA,QAAI,EAAE,QAAQ,YAAY,mCAAtB,CAAJ,EAA8B;AAC1B,eAAS,GAAG,mCAAC,CAAC,QAAD,CAAb;AACH,KAFD,MAEO;AACH,eAAS,GAAG,QAAZ;AACH;;AACD,cAAU,GAAG,SAAS,CAAC,IAAV,CAAe,UAAf,CAAb;AACH;;AAED,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,UAAU,CAAC,MAA/B,EAAuC,CAAC,EAAxC,EAA4C;AACxC,QAAM,MAAM,GAAG,UAAU,CAAC,CAAD,CAAzB;AACA,QAAM,OAAO,GAAG,mCAAC,CAAC,MAAD,CAAjB;AACA,QAAI,cAAc,SAAlB;;AACA,QAAI,OAAO,CAAC,IAAR,CAAa,sBAAb,MAAyC,SAA7C,EAAwD;AACpD,oBAAc,GAAG,OAAO,CAAC,IAAR,CAAa,sBAAb,CAAjB;AACH,KAFD,MAEO,IAAI,MAAM,CAAC,WAAP,KAAuB,SAA3B,EAAsC;AACzC,oBAAc,GAAG,MAAM,CAAC,WAAxB;AACA,oBAAc,GAAG,cAAc,CAAC,OAAf,CAAuB,KAAvB,EAA8B,GAA9B,CAAjB,CAFyC,CAEY;AACxD;;AAED,QACI,MAAM,CAAC,SAAP,CAAiB,IAAjB,KAA0B,SAA1B,IACG,cAAc,KAAK,SAF1B,EAGE;AACE,oBAAc,GAAG,cAAc,CAAC,IAAf,EAAjB,CADF,CAC0C;AAC3C;;AACD,QAAI,cAAJ,EAAoB;AAChB,UAAM,EAAE,GAAG,YAAY,CAAC,cAAD,CAAvB;;AACA,UAAI,OAAO,CAAC,QAAR,CAAiB,YAAjB,CAAJ,EAAoC;AAChC,UAAE,CAAC,aAAH,CAAiB,MAAjB,CAAwB,KAAxB,GAAgC,SAAhC;AACH;;AACD,UAAM,MAAM,GAAG,EAAE,CAAC,SAAH,EAAf;AAEA,aAAO,CAAC,IAAR,CAAa,sBAAb,EAAqC,cAArC;AACA,aAAO,CAAC,KAAR;AACA,aAAO,CAAC,IAAR,CAAa,QAAb,EAAuB,EAAvB;AACA,aAAO,CAAC,MAAR,CAAe,MAAf,EAVgB,CAWhB;AACH;AACJ;AACJ,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzWD;;;;;;;;;;;;;;;;AAgBG;AAEH;AACA;AAEA;AACA;AACA;;AAMA,IAAM,cAAc,GAAG,IAAI,8CAAJ,EAAvB;AAEA;;;;;;;;;;;AAWG;;;AACG,MAAO,WAAP,CAAkB;AAAxB;AACI,mBAA2B,EAA3B;AACA,kBAA2B,EAA3B;AACA,sBAA+B,EAA/B;AACA,gCAAuB,IAAI,GAAJ,EAAvB;AAkCH;AAhCG;;AAEG;;;AACH,cAAY;AACR,QAAM,CAAC,GAAqB,EAA5B;AACA,KAAC,CAAC,IAAF,CAAO,GAAG,KAAK,MAAf;AACA,KAAC,CAAC,IAAF,CAAO,GAAG,KAAK,UAAf;AACA,WAAO,CAAP;AACH;AAED;;;AAGG;;;AACH,kBAAgB;AACZ,QAAM,gBAAgB,GAAG,EAAzB,CADY,CACiB;;AAC7B,QAAM,WAAW,GAAG,EAApB,CAFY,CAEY;;AAExB,SAAK,IAAM,CAAX,IAAgB,KAAK,YAAL,EAAhB,EAAqC;AACjC,UAAM,cAAc,GAAG,WAAW,CAAC,OAAZ,CAAoB,CAAC,CAAC,KAAtB,CAAvB;AACA,UAAI,kBAAkB,SAAtB;;AACA,UAAI,cAAc,KAAK,CAAC,CAAxB,EAA2B;AACvB,mBAAW,CAAC,IAAZ,CAAiB,CAAC,CAAC,KAAnB;AACA,0BAAkB,GAAG,EAArB;AACA,wBAAgB,CAAC,IAAjB,CAAsB,kBAAtB;AACH,OAJD,MAIO;AACH,0BAAkB,GAAG,gBAAgB,CAAC,cAAD,CAArC;AACH;;AACD,wBAAkB,CAAC,IAAnB,CAAwB,CAAxB;AACH;;AACD,WAAO,gBAAP;AACH;;AArCmB;AAwCxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BG;;AACG,MAAO,QAAP,CAAe;AAejB;AAEA,cAAY,CAAZ,EAAe,GAAG,GAAC,SAAnB,EAA8B,KAAK,GAAC,SAApC,EAA6C;AAf7C,wBAAe,KAAf;AACA,eAAM,SAAN;AACA,gBAAO,SAAP;AACA,kBAAS,SAAT;AACA,2BAAkB,SAAlB;AACA,uBAAc,SAAd;AACA,gBAAO,SAAP;AACA,sBAAa,EAAb;AACA,kBAAS,EAAT,CAO6C,CAPhC;AACb;;AACA,kBAAS,EAAT;AACA,8BAAqB,EAArB;AACA,qBAAY,EAAZ;AAII,SAAK,MAAL,GAAc,CAAd,CADyC,CAEzC;;AACA,QAAI,GAAG,KAAK,SAAZ,EAAuB;AACnB,UAAI,GAAG,CAAC,MAAJ,KAAe,SAAnB,EAA8B;AAC1B,aAAK,IAAL,GAAY,GAAZ;AACA,aAAK,GAAL,GAAW,GAAG,CAAC,CAAD,CAAd;AACH,OAHD,MAGO;AACH,aAAK,GAAL,GAAW,GAAX;AACA,aAAK,IAAL,GAAY,mCAAC,CAAC,GAAD,CAAb;AACH;AACJ;;AAED,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,UAAI,KAAK,CAAC,MAAN,KAAiB,SAArB,EAAgC;AAC5B,aAAK,MAAL,GAAc,KAAd;AACH,OAFD,MAEO;AACH,aAAK,MAAL,GAAc,mCAAC,CAAC,KAAD,CAAf;AACH;AACJ;AACJ;;AAEa,MAAV,UAAU;AACV,QAAI,OAAJ;;AACA,QAAI,KAAK,YAAL,KAAsB,QAA1B,EAAoC;AAChC,aAAO,GAAG,8EAAV;AACH,KAFD,MAEO;AACH,aAAO,GAAG,2EAAV;AACH;;AAED,QAAI,KAAK,WAAL,KAAqB,SAAzB,EAAoC;AAChC,aAAO,KAAK,WAAZ;AACH,KAFD,MAEO;AACH,WAAK,WAAL,GAAyB,IAAI,8DAAJ,CAAsB,KAAK,GAA3B,EAAgC,OAAhC,CAAzB;;AACA,UAAI,KAAK,YAAL,KAAsB,KAA1B,EAAiC;AAC7B;AACA;AACA,aAAK,WAAL,CAAiB,MAAjB,CACI,KAAK,IAAL,CAAU,IAAV,CAAe,OAAf,CADJ,EAEI,KAAK,IAAL,CAAU,IAAV,CAAe,QAAf,CAFJ;AAIH;;AACD,aAAO,KAAK,WAAZ;AACH;AACJ;;AAEa,MAAV,UAAU,CAAC,GAAD,EAAS;AACnB,SAAK,WAAL,GAAmB,GAAnB;AACH;;AAEM,MAAH,GAAG;AACH,QAAI,KAAK,IAAL,KAAc,SAAlB,EAA6B;AACzB,aAAO,KAAK,IAAZ;AACH,KAFD,MAEO;AACH,WAAK,IAAL,GAAY,KAAK,UAAL,CAAgB,UAAhB,EAAZ;;AACA,UACI,KAAK,MAAL,IACG,KAAK,MAAL,CAAY,aADf,IAEG,KAAK,MAAL,CAAY,aAAZ,CAA0B,WAA1B,CAAsC,CAFzC,IAGG,KAAK,MAAL,CAAY,aAAZ,CAA0B,WAA1B,CAAsC,CAJ7C,EAKE;AACE,aAAK,IAAL,CAAU,KAAV,CACI,KAAK,MAAL,CAAY,aAAZ,CAA0B,WAA1B,CAAsC,CAD1C,EAEI,KAAK,MAAL,CAAY,aAAZ,CAA0B,WAA1B,CAAsC,CAF1C;AAIH;;AACD,aAAO,KAAK,IAAZ;AACH;AACJ;;AAEM,MAAH,GAAG,CAAC,GAAD,EAAI;AACP,SAAK,IAAL,GAAY,GAAZ;AACH;AAED;;;;;;;;AAQG;;;AACH,QAAM,CAAC,IAAmB,SAApB,EAA6B;AAC/B,QAAI,CAAC,KAAK,SAAV,EAAqB;AACjB,OAAC,GAAG,KAAK,MAAT;AACH;;AAED,QAAI,WAAW,GAAG,KAAlB;AACA,QAAI,UAAU,GAAG,KAAjB;AACA,QAAM,MAAM,GAAG,CAAC,CAAC,MAAjB;;AAEA,QAAI,CAAC,CAAC,iBAAF,CAAoB,OAApB,CAAJ,EAAkC;AAC9B,iBAAW,GAAG,IAAd;AACH,KAFD,MAEO,IAAI,CAAC,MAAD,IAAW,CAAE,CAAC,CAAC,GAAF,CAAM,CAAN,EAA2B,MAA5C,EAAoD;AACvD,iBAAW,GAAG,IAAd;AACH,KAFM,MAEA,IAAI,CAAC,MAAL,EAAa;AAChB,gBAAU,GAAG,IAAb;AACH,KAf8B,CAgB/B;;;AACA,QAAI,WAAJ,EAAiB;AACb,WAAK,gBAAL,CAAsB,CAAtB;AACH,KAFD,MAEO,IAAI,UAAJ,EAAgB;AACnB,WAAK,eAAL,CAAqB,CAArB;AACH,KAFM,MAEA;AACH,WAAK,kBAAL,CAAwB,CAAxB;AACH;;AACD,SAAK,mBAAL;AACA,SAAK,QAAL;AACA,SAAK,iBAAL;AACA,SAAK,cAAL;AACA,SAAK,WAAL;AACH;AAED;;;;;;AAMG;;;AACH,kBAAgB,CAAC,CAAD,EAAgB;AAC5B;AACA;AACA,QAAM,KAAK,GAAG,CAAC,CAAC,KAAhB;;AACA,SAAK,IAAM,SAAX,IAAwB,KAAxB,EAA+B;AAC3B,WAAK,eAAL,CAAqB,SAArB;AACH;;AACD,SAAK,kBAAL,CAAwB,CAAxB;AACH;AAED;;;;;;;AAOG;;;AACH,iBAAe,CAAC,CAAD,EAAe;AAC1B;AACA,SAAK,kBAAL,GAA0B,EAA1B;AACA,QAAM,WAAW,GAAG,CAAC,CAAC,QAAtB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,WAAW,CAAC,MAAhC,EAAwC,CAAC,EAAzC,EAA6C;AACzC,UAAM,SAAS,GAAG,WAAW,CAAC,GAAZ,CAAgB,CAAhB,CAAlB;;AACA,UAAI,SAAS,CAAC,aAAV,CAAwB,cAA5B,EAA4C;AACxC,aAAK,kBAAL,CAAwB,IAAxB,CAA6B,SAAS,CAAC,MAAvC;AACH;;AACD,UAAI,CAAC,KAAK,CAAC,CAAC,MAAF,GAAW,CAArB,EAAwB;AACpB,iBAAS,CAAC,aAAV,CAAwB,YAAxB,GAAuC,KAAvC;AACH;;AACD,UAAI,KAAK,MAAL,CAAY,CAAZ,MAAmB,SAAvB,EAAkC;AAC9B,aAAK,MAAL,CAAY,CAAZ,IAAiB,IAAI,WAAJ,EAAjB;AACH;;AACD,WAAK,cAAL,CAAoB,SAApB,EAA+B,KAAK,MAAL,CAAY,CAAZ,CAA/B;AACH;;AACD,SAAK,WAAL,CAAiB,CAAjB;AACH;AAED;;;;;;AAMG;;;AACH,oBAAkB,CAAC,CAAD,EAAiB;AAC/B,QAAM,KAAK,GAAG,IAAI,WAAJ,EAAd;AACA,SAAK,cAAL,CAAoB,CAApB,EAAuB,KAAvB;AACA,SAAK,MAAL,CAAY,CAAZ,IAAiB,KAAjB;AACA,SAAK,WAAL,CAAiB,CAAjB;AACH;AAED;;;;;;;;AAQG;;;AACH,gBAAc,CAAC,CAAD,EAAI,KAAJ,EAAS;AACnB,QAAI,CAAC,CAAC,SAAF,KAAgB,SAAhB,IAA6B,CAAC,CAAC,SAAF,OAAkB,KAAnD,EAA0D;AACtD,WAAK,WAAL,CAAiB,CAAjB,EAAoB,KAApB;AACH,KAFD,MAEO;AACH;AACA,UAAM,cAAc,GAAkB,CAAC,CAAC,kBAAF,CAAqB,OAArB,EAA8B,GAA9B,CAAkC,CAAlC,EAAqC,KAArC,CAA2C,KAA3C,CAAtC;;AACA,WAAK,IAAM,EAAX,IAAiB,CAAC,CAAC,qBAAF,CAAwB,OAAxB,CAAjB,EAAmD;AAC/C,sBAAc,CAAC,MAAf,CAAsB,EAAE,CAAC,MAAzB,EAAiC,EAAjC;AACH;;AACD,UAAM,MAAM,GAAG,CAAC,CAAC,aAAjB,CANG,CAM6B;;AAChC,UAAI,KAAJ;;AACA,WAAK,IAAM,CAAC,CAAD,EAAI,WAAJ,CAAX,IAA+B,KAAK,CAAC,IAAN,CAAW,CAAC,CAAC,kBAAF,CAAqB,OAArB,CAAX,EAA0C,OAA1C,EAA/B,EAAoF;AAChF,YAAI,aAAa,GAAkB,WAAnC;;AACA,YAAI,CAAC,KAAK,CAAV,EAAa;AACT,uBAAa,GAAG,cAAhB;AACH,SAJ+E,CAKhF;;;AACA,aAAK,GAAG,KAAK,WAAL,CAAiB,aAAjB,EAAgC,KAAhC,EAAuC,KAAvC,EAA8C,MAA9C,CAAR;;AACA,YAAI,CAAC,KAAK,CAAV,EAAa;AACO,qBAAY,CAAC,aAAb,GAA6B,aAAa,CAAC,aAA3C;AACA,qBAAY,CAAC,kBAAb,GAAkC,aAAa,CAAC,aAAhD;AACnB;AACJ;AACJ;;AACD,WAAO,KAAP;AACH;AAED;;;;;;;;;;AAUG;;;AACH,aAAW,CAAC,CAAD,EAAI,KAAJ,EAAW,aAAa,GAAC,SAAzB,EAAoC,iBAAiB,GAAC,SAAtD,EAA+D;AACtE,KAAC,CAAC,YAAF;AACA,QAAI,KAAJ;;AACA,QAAI,aAAa,KAAK,SAAtB,EAAiC;AAC7B,WAAK,GAAG,aAAR;AACH,KAFD,MAEO;AACH,WAAK,GAAG,KAAK,WAAL,CAAiB,CAAjB,EAAoB,iBAApB,CAAR;AACH;;AACD,KAAC,CAAC,aAAF,GAAkB,KAAlB;AACA,QAAM,QAAQ,GAAG,KAAK,QAAL,CAAc,CAAd,EAAiB,KAAjB,CAAjB;AACA,SAAK,CAAC,MAAN,CAAa,IAAb,CAAkB,QAAlB;AACA,SAAK,CAAC,OAAN,CAAc,IAAd,CAAmB,CAAnB;AACA,SAAK,CAAC,oBAAN,CAA2B,GAA3B,CAA+B,QAA/B,EAAyC,CAAzC;;AAEA,QAAI,CAAC,CAAC,SAAF,EAAJ,EAAmB;AACf,WAAK,CAAC,UAAN,CAAiB,IAAjB,CAAsB,KAAK,aAAL,CAAmB,CAAnB,EAAsB,KAAtB,CAAtB;AACH;;AAED,WAAO,KAAP;AACH;AAED;;;;;;;;;AASG;;;AACH,aAAW,CAAC,CAAC,GAAC,SAAH,EAAc,eAAe,GAAC,SAA9B,EAAuC;AAC9C,QAAI,CAAC,KAAK,SAAV,EAAqB;AACjB,OAAC,GAAG,KAAK,MAAT;AACH;;AACD,QAAM,GAAG,GAAG,KAAK,GAAjB,CAJ8C,CAK9C;;AACA,QAAM,KAAK,GAAG,KAAK,QAAL,CAAc,CAAd,EAAiB,eAAjB,CAAd;AAEA,SAAK,UAAL,CAAgB,CAAhB,EAAmB,KAAnB,EAA0B,eAA1B;AACA,SAAK,CAAC,UAAN,CAAiB,GAAjB;AACA,SAAK,CAAC,IAAN;AACA,WAAO,KAAP;AACH;AAED;;;AAGG;;;AACH,mBAAiB;AACb,QAAM,GAAG,GAAG,KAAK,GAAjB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,MAAL,CAAY,MAAhC,EAAwC,CAAC,EAAzC,EAA6C;AACzC,UAAM,MAAM,GAAG,KAAK,MAAL,CAAY,CAAZ,EAAe,YAAf,EAAf;;AACA,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,MAAM,CAAC,MAA3B,EAAmC,CAAC,EAApC,EAAwC;AACpC,YAAM,CAAC,GAAG,MAAM,CAAC,CAAD,CAAhB;AACA,SAAC,CAAC,IAAF,CAAO,GAAP;AACH;AACJ;AACJ;AAED;;;AAGG;;;AACH,aAAW;AACP,QAAM,GAAG,GAAG,KAAK,GAAjB;AACA,SAAK,SAAL,CAAe,OAAf,CAAuB,GAAG,IAAG;AACzB,SAAG,CAAC,UAAJ,CAAe,GAAf,EAAoB,IAApB;AACH,KAFD;AAGH;AAED;;;AAGG;;;AACH,UAAQ;AACJ,QAAM,GAAG,GAAG,KAAK,GAAjB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,MAAL,CAAY,MAAhC,EAAwC,CAAC,EAAzC,EAA6C;AACzC,WAAK,MAAL,CAAY,CAAZ,EAAe,UAAf,CAA0B,GAA1B,EAA+B,IAA/B;AACH;AACJ;AAED;;;;;AAKG;;;AACH,aAAW,CAAC,CAAD,EAAiB;AACxB,QAAM,EAAE,GAAwB,KAAK,CAAC,IAAN,CAAW,CAAC,CAAC,IAAF,CAAO,aAAlB,CAAhC,CADwB,CAExB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,EAAE,CAAC,MAAH,GAAY,CAAhC,EAAmC,CAAC,EAApC,EAAwC;AACpC,UAAM,QAAQ,GAAG,EAAE,CAAC,CAAD,CAAnB;;AACA,UAAI,QAAQ,CAAC,GAAT,KAAiB,SAAjB,IAA8B,QAAQ,CAAC,GAAT,CAAa,IAAb,KAAsB,MAAxD,EAAgE;AAC5D;AACH;;AACD,UAAM,QAAQ,GAAG,EAAE,CAAC,CAAC,GAAG,CAAL,CAAnB;AACA,UAAI,YAAY,GAAG,IAAnB,CANoC,CAOpC;;AACA,WAAK,IAAI,GAAG,GAAG,CAAf,EAAkB,GAAG,GAAG,KAAK,kBAAL,CAAwB,MAAhD,EAAwD,GAAG,EAA3D,EAA+D;AAC3D,YAAM,eAAe,GAAG,KAAK,kBAAL,CAAwB,GAAxB,CAAxB;;AACA,YACI,QAAQ,CAAC,MAAT,GAAkB,eAAlB,IACG,QAAQ,CAAC,MAAT,IAAmB,eAF1B,EAGE;AACE,sBAAY,GAAG,KAAf;AACA;AACH;AACJ;;AACD,UAAI,YAAJ,EAAkB;AACd,YAAM,KAAK,GAAG,IAAI,8DAAJ,CAAsB;AAChC,oBAAU,EAAE,QAAQ,CAAC,iBADW;AAEhC,mBAAS,EAAE,QAAQ,CAAC,iBAFY;AAGhC,uBAAa,EAAE,CAAC,CAAD,CAHiB;AAIhC,sBAAY,EAAE,CAAC,CAAD;AAJkB,SAAtB,CAAd;AAMA,aAAK,MAAL,CAAY,IAAZ,CAAiB,KAAjB;AACH,OARD,MAQO;AACH;AACA,YAAM,MAAM,GAAG,IAAI,8DAAJ,CAAsB;AACjC,oBAAU,EAAE,QAAQ,CAAC,iBADY;AAEjC,uBAAa,EAAE,CAAC,CAAD;AAFkB,SAAtB,CAAf;AAIA,aAAK,MAAL,CAAY,IAAZ,CAAiB,MAAjB;AACA,YAAM,MAAM,GAAG,IAAI,8DAAJ,CAAsB;AACjC,mBAAS,EAAE,QAAQ,CAAC,iBADa;AAEjC,uBAAa,EAAE,CAAC,CAAD;AAFkB,SAAtB,CAAf;AAIA,aAAK,MAAL,CAAY,IAAZ,CAAiB,MAAjB;AACH;AACJ;AACJ;AAED;;;;;;;;AAQG;;;AACH,UAAQ,CAAC,IAAiB,SAAlB,EAA6B,KAA7B,EAAkC;AACtC,QAAI,CAAC,KAAK,SAAV,EAAqB;AACjB,OAAC,GAAG,KAAK,MAAT;AACH,KAHqC,CAKtC;;;AACA,QAAM,KAAK,GAAG,KAAK,YAAL,CAAkB,CAAlB,EAAqB,KAArB,CAAd;AACA,QAAM,KAAK,GAAG,KAAK,YAAL,CAAkB,CAAlB,CAAd;AACA,SAAK,CAAC,QAAN,CAAe,KAAf;AAEA,SAAK,CAAC,YAAN,CAAmB,KAAnB;AACA,WAAO,KAAP;AACH;AAED;;;;;;AAMG;;;AACH,eAAa,CAAC,CAAD,EAAI,KAAJ,EAAS;AAClB,QAAM,SAAS,GAAG,KAAK,YAAL,CAAkB,CAAlB,CAAlB;AACA,QAAM,MAAM,GAAG,KAAK,aAAL,CAAmB,CAAnB,EAAsB,KAAtB,CAAf;AACA,aAAS,CAAC,QAAV,CAAmB,KAAnB;AACA,aAAS,CAAC,YAAV,CAAuB,MAAvB;AACA,WAAO,SAAP;AACH;AAED;;;AAGG;;;AACH,qBAAmB;AACf;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,MAAL,CAAY,MAAhC,EAAwC,CAAC,EAAzC,EAA6C;AACzC,UAAM,KAAK,GAAG,KAAK,MAAL,CAAY,CAAZ,CAAd;AACA,UAAM,SAAS,GAAG,KAAK,CAAC,MAAxB;AACA,UAAM,gBAAgB,GAAG,KAAK,CAAC,OAA/B;AACA,UAAM,SAAS,GAAG,KAAK,gBAAL,CAAsB,KAAtB,CAAlB;;AACA,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,gBAAgB,CAAC,MAArC,EAA6C,CAAC,EAA9C,EAAkD;AAC9C,YAAM,CAAC,GAAG,gBAAgB,CAAC,CAAD,CAA1B;AACA,YAAM,CAAC,GAAG,SAAS,CAAC,CAAD,CAAnB;AACA,aAAK,gCAAL,CAAsC,CAAC,CAAC,KAAxC,EAA+C,CAA/C,EAAkD,SAAlD;AACH;AACJ;AACJ;AAED;;;;;;AAMG;;;AACH,kBAAgB,CAAC,KAAD,EAAQ,WAAmB,SAA3B,EAAoC;AAChD;AACA;AACA;AACA,QAAM,YAAY,GAAG,KAAK,CAAC,YAAN,EAArB;AACA,QAAM,SAAS,GAAG,KAAK,CAAC,MAAxB;AACA,QAAM,gBAAgB,GAAG,KAAK,CAAC,OAA/B;AACA,QAAM,kBAAkB,GAAG,KAAK,MAAL,CAAY,aAAZ,CAA0B,kBAArD;;AACA,QAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,cAAQ,GAAG,gBAAgB,CAAC,CAAD,CAAhB,CAAoB,QAA/B;AACH;;AAED,QAAM,SAAS,GAAG,IAAI,+DAAJ,EAAlB,CAZgD,CAahD;AACA;;AACA,QAAI,SAAS,CAAC,MAAV,KAAqB,CAAzB,EAA4B;AACxB,aAAO,SAAP;AACH;;AACD,QAAI,aAAa,GAAG,CAApB,CAlBgD,CAkBzB;;AACvB,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,YAAY,CAAC,MAAjC,EAAyC,CAAC,EAA1C,EAA8C;AAC1C;AACA,UAAI,YAAY,CAAC,CAAD,CAAZ,CAAgB,KAAhB,CAAsB,aAAtB,KAAwC,aAA5C,EAA2D;AACvD,qBAAa,GAAG,YAAY,CAAC,CAAD,CAAZ,CAAgB,KAAhB,CAAsB,aAAtB,EAAhB;AACH;AACJ;;AACD,SAAK,IAAI,EAAC,GAAG,CAAb,EAAgB,EAAC,GAAG,YAAY,CAAC,MAAjC,EAAyC,EAAC,EAA1C,EAA8C;AAC1C,kBAAY,CAAC,EAAD,CAAZ,CAAgB,KAAhB,CAAsB,aAAtB,CAAoC,aAApC,EAD0C,CACU;;AACvD,KA3B+C,CA4BhD;;;AAEA,QAAM,KAAK,GAAG,SAAS,CAAC,CAAD,CAAT,CAAa,KAA3B,CA9BgD,CA8Bd;;AAClC,QAAM,gBAAgB,GAAG,KAAK,CAAC,gBAAN,EAAzB;;AACA,SAAK,IAAM,cAAX,IAA6B,gBAA7B,EAA+C;AAC3C,eAAS,CAAC,UAAV,CAAqB,cAArB;AACH;;AACD,aAAS,CAAC,aAAV,CAAwB,YAAxB,EAAsC,KAAtC,EAnCgD,CAqChD;;AACA,QAAI,QAAQ,IAAI,kBAAhB,EAAoC;AAChC,WAAK,IAAI,GAAC,GAAG,CAAb,EAAgB,GAAC,GAAG,SAAS,CAAC,MAA9B,EAAsC,GAAC,EAAvC,EAA2C;AACvC,YAAM,QAAQ,GAAG,SAAS,CAAC,GAAD,CAA1B;AACA,YAAM,gBAAgB,GAAG,KAAK,CAAC,oBAAN,CAA2B,GAA3B,CAA+B,QAA/B,CAAzB;AACA,YAAI,UAAU,SAAd;;AACA,YACI,gBAAgB,KAAK,SAArB,IACG,gBAAgB,CAAC,iBAAjB,CAAmC,eAAnC,MAAwD,SAF/D,EAGE;AACE,oBAAU,GAAG,gBAAgB,CAAC,iBAAjB,CAAmC,eAAnC,EAAoD,iBAApD,EAAb,CADF,CAEE;AACA;AACH,SAPD,MAOO;AACH,oBAAU,GAAG,CAAC,IAAI,8DAAJ,CAAsB,CAAtB,EAAyB,CAAzB,CAAD,CAAb,CADG,CACyC;AAC/C;;AACD,YAAM,UAAU,GAAG,0EACf,QADe,EAEf,SAFe,EAGf,UAHe,CAAnB;AAKA,aAAK,UAAL,CAAgB,IAAhB,CAAqB,GAAG,UAAxB;AACH;AACJ,KAtBD,MAsBO;AACH,WAAK,IAAM,CAAX,IAAgB,KAAK,CAAC,OAAtB,EAA+B;AAC3B,YAAM,KAAK,GAAG,CAAC,CAAC,IAAF,CAAO,KAArB;AACA,YAAI,oBAAoB,GAAG,EAA3B;;AACA,aAAK,IAAM,CAAX,IAAgB,KAAhB,EAAuB;AACnB,cAAI,CAAC,CAAC,KAAF,KAAY,SAAZ,IAAyB,CAAC,CAAC,CAAC,KAAF,CAAQ,UAAR,GAAqB,QAArB,CAA8B,CAA9B,CAA9B,EAAgE;AAC5D;AACH;;AACD,cAAM,cAAc,GAAG,CAAC,CAAC,KAAF,CAAQ,WAAR,CAAoB,CAApB,CAAvB;;AACA,cAAI,cAAc,CAAC,IAAf,KAAwB,OAA5B,EAAqC;AACjC,gCAAoB,GAAG,CAAC,CAAC,CAAC,iBAAH,CAAvB;AACH,WAFD,MAEO;AACH,gCAAoB,CAAC,IAArB,CAA0B,CAAC,CAAC,iBAA5B;AACH;;AACD,cAAI,cAAc,CAAC,IAAf,KAAwB,MAA5B,EAAoC;AAChC,gBAAM,MAAM,GAAG,IAAI,0DAAJ,CAAkB,oBAAlB,EAAwC,KAAxC,CAAf;AACA,iBAAK,UAAL,CAAgB,IAAhB,CAAqB,MAArB;AACA,gCAAoB,GAAG,EAAvB;AACH;AACJ;AACJ;AACJ;;AACD,WAAO,SAAP;AACH;AAED;;;AAGG;;;AACH,gBAAc;AACV,QAAM,GAAG,GAAG,KAAK,GAAjB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,UAAL,CAAgB,MAApC,EAA4C,CAAC,EAA7C,EAAiD;AAC7C,WAAK,UAAL,CAAgB,CAAhB,EAAmB,UAAnB,CAA8B,GAA9B,EAAmC,IAAnC;AACH;AACJ;AAED;;;;;;;AAOG;;;AACH,UAAQ,CAAC,CAAD,EAAI,MAAJ,EAAU;AACd,QAAI,CAAC,KAAK,SAAV,EAAqB;AACjB,OAAC,GAAG,KAAK,MAAT;AACH;;AACD,QAAI,MAAM,KAAK,SAAf,EAA0B;AACtB,YAAM,GAAG,CAAC,CAAC,aAAX;AACH,KANa,CAOd;;;AACA,QAAI,KAAK,GAAG,MAAM,CAAC,KAAnB;;AACA,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,WAAK,GAAG,CAAC,CAAC,mBAAF,KAA0B,MAAM,CAAC,YAAzC;AACH;;AACD,QAAI,GAAG,GAAG,MAAM,CAAC,GAAjB,CAZc,CAYQ;;AACtB,QAAI,GAAG,KAAK,SAAZ,EAAuB;AACnB,SAAG,GAAG,CAAN;AACH;;AACD,QAAI,IAAI,GAAG,MAAM,CAAC,IAAlB;;AACA,QAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,UAAI,GAAG,EAAP;AACH,KAnBa,CAoBd;;;AACA,QAAI,0CAAJ,EAAW;AACP,aAAO,CAAC,GAAR,CACI,8BACM,IADN,GAEM,QAFN,GAGM,GAHN,GAIM,UAJN,GAKM,KANV;AAQH;;AACD,QAAM,KAAK,GAAG,IAAI,2DAAJ,CAAmB,IAAnB,EAAyB,GAAzB,EAA8B,KAA9B,CAAd;AACA,WAAO,KAAP;AACH;AAED;;;;;;;;;AASG;;;AACH,YAAU,CAAC,CAAD,EAAI,KAAJ,EAAW,MAAX,EAAiB;AACvB,QAAI,MAAM,KAAK,SAAf,EAA0B;AACtB,YAAM,GAAG,CAAC,CAAC,aAAX;AACH;;AAGD,QAAI,KAAK,GAAG,CAAC,CAAC,iBAAF,CAAoB,MAApB,KACL,CAAC,CAAC,iBAAF,CAAoB,MAApB,CADP,CANuB,CASvB;AACA;;AACA,QAAI,KAAK,KAAK,SAAV,IAAuB,CAAC,CAAC,MAA7B,EAAqC;AACjC;AACA,UAAM,OAAO,GAAG,CAAC,CAAC,GAAF,CAAM,CAAN,CAAhB;AACA,WAAK,GAAG,OAAO,CAAC,iBAAR,CAA0B,MAA1B,CAAR;AACH,KAfsB,CAgBvB;;;AACA,SAAK,GAAG,KAAK,IAAI,cAAjB;AAEA,SAAK,aAAL,CAAmB,CAAnB,EAAsB,KAAtB;;AACA,QAAI,MAAM,CAAC,iBAAX,EAA8B;AAC1B,WAAK,CAAC,UAAN,CAAiB,MAAM,CAAC,YAAP,GAAsB,CAAvC;AACH;;AACD,QAAI,MAAM,CAAC,WAAX,EAAwB;AACpB,UAAI,MAAJ;AACA,UAAM,IAAI,GAAG,SAAb;;AACA,UAAI,KAAK,CAAC,YAAN,KAAuB,CAA3B,EAA8B;AAC1B,cAAM,GAAG,KAAT;AACH,OAFD,MAEO,IAAI,KAAK,CAAC,YAAN,KAAuB,CAAC,CAA5B,EAA+B;AAClC,cAAM,GAAG,KAAT;AACH;;AACD,WAAK,CAAC,OAAN,CAAc,KAAK,CAAC,IAApB,EAA0B,IAA1B,EAAgC,MAAhC;AACH;;AACD,QAAM,UAAU,GAAG,CAAC,CAAC,iBAAF,CAAoB,cAApB,KAAuC,CAAC,CAAC,iBAAF,CAAoB,cAApB,CAA1D;;AACA,QAAI,UAAU,KAAK,SAAf,IAA4B,MAAM,CAAC,mBAAvC,EAA4D;AACxD,UAAM,QAAQ,GAAG,UAAU,CAAC,SAAX,GAAuB,OAAvB,CAA+B,IAA/B,EAAqC,GAArC,CAAjB;AACA,WAAK,CAAC,eAAN,CAAsB,QAAtB;AACH;;AAED,QAAM,UAAU,GAAG,CAAC,CAAC,iBAAF,CAAoB,eAApB,KAAwC,CAAC,CAAC,iBAAF,CAAoB,eAApB,CAA3D;;AACA,QAAI,UAAU,KAAK,SAAf,IAA4B,MAAM,CAAC,oBAAvC,EAA6D;AACzD,WAAK,CAAC,gBAAN,CACI,UAAU,CAAC,SAAX,CAAqB,QAArB,KACM,GADN,GAEM,UAAU,CAAC,WAAX,CAAuB,QAAvB,EAHV;AAKH;;AACD,QAAI,MAAM,CAAC,YAAP,KAAwB,SAA5B,EAAuC;AACnC,UAAM,EAAE,GAAG,MAAM,CAAC,YAAlB;AACA,UAAM,UAAU,GAAG;AACf,cAAM,EAAE,QADO;AAEf,cAAM,EAAE,QAFO;AAGf,WAAG,EAAE;AAHU,OAAnB;AAKA,UAAM,IAAI,GAAG,UAAU,CAAC,EAAD,CAAvB;;AACA,UAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,aAAK,CAAC,aAAN,CAAoB,mEAAsB,IAAtB,CAApB;AACH;AACJ;AACJ;AAED;;;;;;;;;;AAUG;;;AACH,eAAa,CAAC,CAAD,EAAI,YAAJ,EAAgB;AACzB,QAAM,MAAM,GAAG,CAAC,CAAC,aAAjB;;AACA,QAAI,MAAM,CAAC,UAAP,KAAsB,CAA1B,EAA6B;AACzB,UAAI,MAAM,CAAC,UAAP,KAAsB,CAA1B,EAA6B;AACzB,oBAAY,CAAC,WAAb,CAAyB,CAAzB;AACH,OAFD,MAEO,IAAI,MAAM,CAAC,UAAP,KAAsB,CAA1B,EAA6B;AAChC;AACA;AACA,oBAAY,CAAC,OAAb,CAAqB,WAArB,GAAmC,CAC/B;AAAE,iBAAO,EAAE;AAAX,SAD+B,EAE/B;AAAE,iBAAO,EAAE;AAAX,SAF+B,EAG/B;AAAE,iBAAO,EAAE;AAAX,SAH+B,EAI/B;AAAE,iBAAO,EAAE;AAAX,SAJ+B,EAK/B;AAAE,iBAAO,EAAE;AAAX,SAL+B,CAAnC;AAOH,OAVM,MAUA,IAAI,MAAM,CAAC,UAAP,KAAsB,CAA1B,EAA6B;AAChC,oBAAY,CAAC,OAAb,CAAqB,WAArB,GAAmC,CAC/B;AAAE,iBAAO,EAAE;AAAX,SAD+B,EAE/B;AAAE,iBAAO,EAAE;AAAX,SAF+B,EAG/B;AAAE,iBAAO,EAAE;AAAX,SAH+B,EAI/B;AAAE,iBAAO,EAAE;AAAX,SAJ+B,EAK/B;AAAE,iBAAO,EAAE;AAAX,SAL+B,CAAnC;AAOH,OARM,MAQA,IAAI,MAAM,CAAC,UAAP,KAAsB,CAA1B,EAA6B;AAChC,oBAAY,CAAC,OAAb,CAAqB,WAArB,GAAmC,CAC/B;AAAE,iBAAO,EAAE;AAAX,SAD+B,EAE/B;AAAE,iBAAO,EAAE;AAAX,SAF+B,EAG/B;AAAE,iBAAO,EAAE;AAAX,SAH+B,EAI/B;AAAE,iBAAO,EAAE;AAAX,SAJ+B,EAK/B;AAAE,iBAAO,EAAE;AAAX,SAL+B,CAAnC;AAOH,OARM,MAQA;AACH,oBAAY,CAAC,WAAb,CAAyB,MAAM,CAAC,UAAhC;AACH;AACJ;AACJ;AAED;;;;;;;;AAQG;;;AACH,cAAY,CAAC,CAAD,EAAI,KAAJ,EAAS;AACjB,QAAI,CAAC,KAAK,SAAV,EAAqB;AACjB,OAAC,GAAG,KAAK,MAAT;AACH,KAHgB,CAIjB;;;AACA,QAAM,KAAK,GAAG,EAAd;AACA,QAAM,SAAS,GAAG,EAAlB;AACA,QAAI,YAAJ;AACA,QAAI,kBAAkB,GAAG,GAAzB;AACA,QAAI,wBAAwB,GAAG,EAA/B;AACA,QAAI,KAAK,GAAG,CAAC,CAAC,iBAAF,CAAoB,MAApB,KAA+B,CAAC,CAAC,iBAAF,CAAoB,MAApB,CAA3C;;AACA,QAAI,KAAK,KAAK,SAAV,IAAuB,CAAC,CAAC,MAA7B,EAAqC;AACjC;AACA,UAAM,OAAO,GAAG,CAAC,CAAC,GAAF,CAAM,CAAN,CAAhB;AACA,WAAK,GAAG,OAAO,CAAC,iBAAR,CAA0B,MAA1B,CAAR;AACH;;AACD,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,WAAK,GAAG,cAAR;AACH;;AAED,QAAM,OAAO,GAAG;AAAE,UAAI,EAAE,KAAR;AAAe;AAAf,KAAhB;;AACA,SAAK,IAAM,MAAX,IAAqB,CAArB,EAAwB;AACpB,UACI,MAAM,CAAC,iBAAP,CAAyB,aAAzB,KACG,MAAM,CAAC,QAAP,KAAoB,SAF3B,EAGE;AACE;AACA,YAAM,GAAG,GAAG,MAAM,CAAC,WAAP,CAAmB,OAAnB,CAAZ;;AACA,YAAI,GAAG,KAAK,SAAZ,EAAuB;AACnB,iBAAO,CAAC,KAAR,CAAc,oCAAd,EAAoD,MAApD;AACA;AACH;;AACD,YAAI,KAAK,KAAK,SAAd,EAAyB;AACrB;AACA,aAAG,CAAC,QAAJ,CAAa,KAAb;AACH;;AACD,aAAK,CAAC,IAAN,CAAW,GAAX,EAXF,CAaE;;AACA,YAAI,MAAM,CAAC,QAAP,CAAgB,OAAhB,CAAwB,MAAxB,GAAiC,CAArC,EAAwC;AACpC;AACA,cAAI,YAAY,KAAK,SAArB,EAAgC;AAC5B,wBAAY,GAAG,MAAM,CAAC,QAAP,CAAgB,OAAhB,CAAwB,CAAxB,CAAf;AACH;;AACD,kCAAwB,CAAC,IAAzB,CAA8B,GAA9B;AACA,4BAAkB,IAAI,MAAM,CAAC,QAAP,CAAgB,aAAtC,CANoC,CAOpC;AACA;AACA;;AACA,cACI,kBAAkB,IACX,YAAY,CAAC,iBAAb,EADP,IAEG,IAAI,CAAC,GAAL,CACC,kBAAkB,GACZ,YAAY,CAAC,iBAAb,EAFP,IAGC,KANR,EAOE;AACE;AACA,gBAAM,aAAa,GAAG;AAClB,uBAAS,EAAE,YAAY,CAAC,iBADN;AAElB,4BAAc,EAAE,YAAY,CAAC;AAFX,aAAtB,CAFF,CAME;;AACA,gBAAM,QAAQ,GAAG,IAAI,4DAAJ,CACb,wBADa,EAEb,aAFa,CAAjB;;AAIA,gBAAI,YAAY,CAAC,gBAAb,KAAkC,OAAtC,EAA+C;AAC3C,sBAAQ,CAAC,UAAT,CAAoB,IAApB;AACH;;AAED,qBAAS,CAAC,IAAV,CAAe,QAAf;AACA,8BAAkB,GAAG,GAArB;AACA,wBAAY,GAAG,SAAf;AACA,oCAAwB,GAAG,EAA3B;AACH;AACJ;AACJ;AACJ;;AACD,QAAI,YAAY,KAAK,SAArB,EAAgC;AAC5B,aAAO,CAAC,IAAR,CAAa,qCAAb,EAAoD,CAApD;AACH;;AACD,QAAI,SAAS,CAAC,MAAV,GAAmB,CAAvB,EAA0B;AACtB,WAAK,SAAL,CAAe,IAAf,CAAoB,GAAG,SAAvB;AACH;;AACD,WAAO,KAAP;AACH;AAED;;;;;;AAMG;;;AACH,eAAa,CAAC,CAAD,EAAI,KAAJ,EAAS;AAClB,QAAM,WAAW,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,CAAb,EAAgB,QAAQ,GAAC,SAAzB,KAAsC;AACtD;AACA;AACA,UAAM,EAAE,GAAG,IAAI,8DAAJ,CAAsB;AAC7B,YAD6B;AAE7B,YAF6B;AAG7B,gBAAQ,EAAE,CAAC,CAAC;AAHiB,OAAtB,EAKN,OALM,CAKE,EALF,EAMN,QANM,CAMG,KANH,EAON,gBAPM,CAOW,iFAPX,CAAX;;AAQA,UAAI,QAAJ,EAAc;AACV,UAAE,CAAC,QAAH,CAAY,QAAQ,CAAC,KAArB;AACH;;AACD,UAAI,CAAC,CAAC,OAAF,CAAU,MAAV,GAAmB,CAAvB,EAA0B;AACtB,UAAE,CAAC,mBAAH,CAAuB,CAAC,CAAC,OAAF,CAAU,CAAV,EAAa,iBAApC,EAAuD,CAAC,CAAC,OAAF,CAAU,CAAV,EAAa,iBAApE;AACH;;AACD,aAAO,EAAP;AACH,KAlBD;;AAoBA,QAAI,CAAC,KAAK,SAAV,EAAqB;AACjB,OAAC,GAAG,KAAK,MAAT;AACH,KAvBiB,CAwBlB;;;AACA,QAAM,aAAa,GAAG,EAAtB;;AACA,SAAK,IAAM,EAAX,IAAiB,CAAjB,EAAoB;AAChB,UAAM,WAAW,GAAG,EAAE,CAAC,MAAvB;;AACA,UAAI,WAAW,KAAK,SAApB,EAA+B;AAC3B;AACH;;AACD,UAAI,IAAI,SAAR;AACA,UAAI,CAAC,GAAG,EAAE,CAAC,QAAX;AACA,UAAI,YAAY,GAAmB,KAAnC;AACA,UAAI,UAAU,SAAd;AACA,UAAM,IAAI,GAAG;AACT,cAAM,EAAE,OADC;AAET,YAAI,EAAE,EAFG;AAGT,cAAM,EAAE;AAHC,OAAb;;AAMA,UAAI,WAAW,CAAC,MAAZ,KAAuB,CAA3B,EAA8B;AAC1B,YAAI,GAAG,EAAP;AACH,OAFD,MAEO;AACH,kBAAU,GAAG,WAAW,CAAC,CAAD,CAAxB;AACA,YAAI,GAAG,UAAU,CAAC,IAAlB;;AACA,YAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,cAAI,GAAG,EAAP;AACH;;AACD,YACI,UAAU,CAAC,QAAX,KAAwB,QAAxB,IACG,UAAU,CAAC,QAAX,KAAwB,OAF/B,EAGE;AACE,sBAAY,GAAG,MAAM,UAAU,CAAC,cAAhC;AACA,cAAM,MAAM,GAAG,EAAE,CAAC,QAAH,CAAY,aAAZ,GAA4B,GAA3C;AACA,WAAC,GAAG,IAAI,gDAAJ,CAAsB,MAAtB,CAAJ;AACH;;AACD,YAAI,UAAU,CAAC,KAAX,CAAiB,UAArB,EAAiC;AAC7B,cAAI,CAAC,MAAL,GAAc,UAAU,CAAC,KAAX,CAAiB,UAA/B;AACH;;AACD,YAAI,UAAU,CAAC,KAAX,CAAiB,QAArB,EAA+B;AAC3B,cAAI,CAAC,IAAL,GAAY,UAAU,CAAC,KAAX,CAAiB,QAA7B;AACH;;AACD,YAAI,UAAU,CAAC,KAAX,CAAiB,UAArB,EAAiC;AAC7B,cAAI,CAAC,MAAL,GAAc,UAAU,CAAC,KAAX,CAAiB,UAA/B;AACH;AACJ;;AACD,UAAM,EAAE,GAAG,WAAW,CAAC,IAAD,EAAO,IAAP,EAAa,CAAb,EAAgB,UAAhB,CAAtB;AACA,mBAAa,CAAC,IAAd,CAAmB,EAAnB;;AACA,UAAI,YAAY,KAAK,KAArB,EAA4B;AACxB,YAAM,SAAS,GAAG,WAAW,CAAC,YAAD,EAAe,IAAf,EAAqB,CAArB,CAA7B;AACA,qBAAa,CAAC,IAAd,CAAmB,SAAnB;AACH;AACJ;;AACD,WAAO,aAAP;AACH;AAED;;AAEG;;;AACH,cAAY,CAAC,CAAD,EAAiB;AACzB,QAAM,WAAW,GAAG,CAAC,CAAC,QAAF,CAAW,aAA/B;AAEA,QAAI,OAAO,GAAG,IAAI,CAAC,KAAL,CAAW,WAAW,IAAI,IAAI,GAAR,CAAtB,CAAd;AACA,QAAI,SAAS,GAAG,IAAhB;;AAEA,QAAI,OAAO,GAAG,GAAV,KAAkB,CAAtB,EAAyB;AACrB,eAAS,GAAG,CAAZ;AACA,aAAO,IAAI,GAAX;AACH,KAHD,MAGO,IAAI,OAAO,GAAG,GAAV,KAAkB,CAAtB,EAAyB;AAC5B,eAAS,GAAG,CAAZ;AACA,aAAO,IAAI,GAAX;AACH,KAHM,MAGA,IAAI,OAAO,GAAG,GAAV,KAAkB,CAAtB,EAAyB;AAC5B,eAAS,GAAG,CAAZ;AACA,aAAO,IAAI,GAAX;AACH,KAHM,MAGA,IAAI,OAAO,GAAG,EAAV,KAAiB,CAArB,EAAwB;AAC3B,eAAS,GAAG,EAAZ;AACA,aAAO,IAAI,EAAX;AACH,KAHM,MAGA,IAAI,OAAO,GAAG,EAAV,KAAiB,CAArB,EAAwB;AAC3B,eAAS,GAAG,EAAZ;AACA,aAAO,IAAI,EAAX;AACH,KAHM,MAGA,IAAI,OAAO,GAAG,EAAV,KAAiB,CAArB,EAAwB;AAC3B,eAAS,GAAG,EAAZ;AACA,aAAO,IAAI,EAAX;AACH,KAHM,MAGA,IAAI,OAAO,GAAG,CAAV,KAAgB,CAApB,EAAuB;AAC1B,eAAS,GAAG,GAAZ;AACA,aAAO,IAAI,CAAX;AACH,KAHM,MAGA,IAAI,OAAO,GAAG,CAAV,KAAgB,CAApB,EAAuB;AAC1B,eAAS,GAAG,GAAZ;AACA,aAAO,IAAI,CAAX;AACH,KAHM,MAGA,IAAI,OAAO,GAAG,CAAV,KAAgB,CAApB,EAAuB;AAC1B,eAAS,GAAG,GAAZ;AACA,aAAO,IAAI,CAAX;AACH,KAjCwB,CAkCzB;;;AACA,QAAI,0CAAJ,EAAW;AACP,aAAO,CAAC,GAAR,CACI,2BACM,OAAO,CAAC,QAAR,EADN,GAEM,eAFN,GAGM,SAAS,CAAC,QAAV,EAJV;AAMH;;AACD,QAAM,GAAG,GAAG,IAAI,2DAAJ,CAAmB;AAC3B,eAAS,EAAE,OADgB;AAE3B,gBAAU,EAAE,SAFe;AAG3B,gBAAU,EAAE,gEAAmB;AAHJ,KAAnB,CAAZ,CA3CyB,CAiDzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAG,CAAC,OAAJ,CAAY,qEAAZ;AACA,WAAO,GAAP;AACH;;AAED,oBAAkB,CAAC,aAAD,EAAc;AAC5B,QAAM,YAAY,GAAG;AACjB,WAAK,EAAE,+EADU;AAEjB,YAAM,EAAE,gFAFS;AAGjB,YAAM,EAAE,gFAHS;AAIjB,aAAO,EAAE,iFAAoC;AAJ5B,KAArB;AAMA,WAAO,YAAY,CAAC,aAAD,CAAnB;AACH;AAED;;;;;AAKG;;;AACH,oBAAkB,CAAC,CAAD,EAAE;AAChB,QAAI,CAAC,KAAK,SAAV,EAAqB;AACjB,OAAC,GAAG,KAAK,MAAT;AACH;;AACD,QAAM,KAAK,GAAG,CAAC,CAAC,KAAhB;AACA,QAAM,QAAQ,GAAG,KAAK,CAAC,MAAvB;;AACA,QAAI,QAAQ,GAAG,CAAf,EAAkB;AACd;AACH;;AAED,QAAM,SAAS,GAAG,KAAK,CAAC,GAAN,CAAU,CAAV,CAAlB;AACA,QAAM,QAAQ,GAAG,KAAK,CAAC,GAAN,CAAU,CAAC,CAAX,CAAjB;AAEA,QAAM,iBAAiB,GAAG,SAAS,CAAC,QAApC;AACA,QAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAlC;AACA,QAAM,WAAW,GAAG,iBAAiB,CAAC,MAAtC;;AAEA,SAAK,IAAI,MAAM,GAAG,CAAlB,EAAqB,MAAM,GAAG,WAA9B,EAA2C,MAAM,EAAjD,EAAqD;AACjD,UAAM,eAAe,GAAG,iBAAiB,CAAC,GAAlB,CAAsB,MAAtB,CAAxB;AACA,UAAM,eAAe,GAAG,gBAAgB,CAAC,GAAjB,CAAqB,MAArB,CAAxB,CAFiD,CAEK;AACtD;;AACA,UAAI,eAAe,CAAC,aAAhB,CAA8B,cAAlC,EAAkD;AAC9C,YAAI,UAAU,GAAG,eAAe,CAAC,aAAjC;AACA,YAAI,aAAa,GAAG,eAAe,CAAC,aAApC;;AACA,YAAI,UAAU,KAAK,SAAnB,EAA8B;AAC1B,cAAI,CAAC,eAAe,CAAC,MAArB,EAA6B;AACzB,gBAAM,aAAa,GAAG,eAAe,CAChC,kBADiB,CACE,QADF,EAEjB,GAFiB,CAEb,CAFa,CAAtB;AAGA,sBAAU,GAAG,aAAa,CAAC,aAA3B;;AACA,gBAAI,UAAU,KAAK,SAAnB,EAA8B;AAC1B,qBAAO,CAAC,IAAR,CACI,2DADJ;AAGA;AACH;AACJ;AACJ;;AACD,YAAI,aAAa,KAAK,SAAtB,EAAiC;AAC7B,cAAI,CAAC,eAAe,CAAC,MAArB,EAA6B;AACzB,gBAAM,aAAa,GAAG,eAAe,CAChC,kBADiB,CACE,QADF,EAEjB,GAFiB,CAEb,CAFa,CAAtB;AAGA,yBAAa,GAAG,aAAa,CAAC,aAA9B;;AACA,gBAAI,aAAa,KAAK,SAAtB,EAAiC;AAC7B,qBAAO,CAAC,IAAR,CACI,2DADJ;AAGA;AACH;AACJ;AACJ;;AACD,aACI,IAAI,CAAC,GAAG,CADZ,EAEI,CAAC,GAAG,CAAC,CAAC,aAAF,CAAgB,eAAhB,CAAgC,MAFxC,EAGI,CAAC,EAHL,EAIE;AACE,cAAM,EAAE,GAAG,IAAI,oEAAJ,CACP,UADO,EAEP,aAFO,CAAX;AAIA,cAAM,SAAS,GAAG,CAAC,CAAC,aAAF,CAAgB,eAAhB,CAAgC,CAAhC,CAAlB;AACA,cAAM,QAAQ,GAAG,KAAK,kBAAL,CAAwB,SAAxB,CAAjB,CANF,CAOE;;AACA,YAAE,CAAC,OAAH,CAAW,QAAX;AACA,YAAE,CAAC,UAAH,CAAc,KAAK,GAAnB;AACA,YAAE,CAAC,IAAH;AACH;AACJ;AACJ;AACJ;AAED;;;;;;;;;AASG;;;AACH,4BAA0B,CAAC,CAAD,EAAI,SAAS,GAAC,KAAd,EAAmB;AACzC,KAAC,CAAC,kBAAF,GAAuB,SAAvB;;AACA,SAAK,IAAM,EAAX,IAAiB,CAAjB,EAAoB;AAChB,QAAE,CAAC,CAAH,GAAO,SAAP;AACA,QAAE,CAAC,CAAH,GAAO,SAAP;AACA,QAAE,CAAC,KAAH,GAAW,SAAX;AACA,QAAE,CAAC,WAAH,GAAiB,SAAjB;AACA,QAAE,CAAC,iBAAH,GAAuB,SAAvB;;AACA,UAAI,SAAS,IAAI,EAAE,CAAC,iBAAH,CAAqB,QAArB,CAAjB,EAAiD;AAC7C,aAAK,0BAAL,CAAgC,EAAhC,EAAoC,SAApC;AACH;AACJ;AACJ;AAED;;;;;;;;;;;;;;;;AAgBG;;;AACH,kCAAgC,CAAC,KAAD,EAAwB,CAAxB,EAA2C,SAA3C,EAAqD;AACjF,QAAI,CAAC,KAAK,SAAV,EAAqB;AACjB,OAAC,GAAG,KAAK,MAAT;AACH;;AACD,QAAM,KAAK,GAAG,CAAC,CAAC,iBAAF,CAAoB,MAApB,KAA+B,CAAC,CAAC,iBAAF,CAAoB,MAApB,CAA/B,IAA8D,cAA5E;;AACA,QAAI,cAAc,GAAG,CAArB,CALiF,CAMjF;;AACA,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,oBAAc,GAAG,KAAK,CAAC,OAAN,GAAgB,KAAK,CAAC,aAAvC;;AACA,UAAI,0CAAJ,EAAW;AACP,eAAO,CAAC,GAAR,CACI,qBACM,cADN,GAEM,oBAFN,GAGM,KAAK,CAAC,OAJhB;AAMA,eAAO,CAAC,GAAR,CAAY,eAAe,KAAK,CAAC,UAAN,EAA3B;AACH,OAVoB,CAWrB;;AACH;;AAED,QAAI,SAAS,GAAG,CAAhB;;AACA,SAAK,IAAM,EAAX,IAAiB,CAAjB,EAAoB;AAChB,UAAM,EAAE,GAAS,EAAjB,CADgB,CACM;;AACtB,UAAI,EAAE,CAAC,iBAAH,CAAqB,aAArB,CAAJ,EAAyC;AACrC,YAAM,GAAG,GAAI,EAAuB,CAAC,iBAArC;;AACA,YAAI,GAAG,KAAK,SAAZ,EAAuB;AACnB;AACH;;AACD,YAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAL,CAAvB;AACA,YAAM,aAAa,GACb,SAAS,CAAC,YAAV,CAAuB,GAAvB,CAA2B,MAAM,CAAC,SAAD,CAAjC,CADN;AAEA,iBAAS,IAAI,MAAb;AACA,UAAE,CAAC,CAAH,GAAO,GAAG,CAAC,YAAJ,EAAP,CATqC,CAUrC;;AACA,UAAE,CAAC,WAAH,GAAiB,CAAC,CAAC,aAAF,CAAgB,WAAjC,CAXqC,CAarC;;AACA,YAAI,aAAa,KAAK,SAAtB,EAAiC;AAC7B;AACH;;AAED,UAAE,CAAC,KAAH,GAAW,aAAa,CAAC,KAAzB;;AACA,YAAI,EAAE,CAAC,KAAH,KAAa,SAAb,IAA0B,KAAK,KAAK,SAAxC,EAAmD;AAC/C;AACA,YAAE,CAAC,CAAH,GACM,KAAK,CAAC,UAAN,KACA,CAAC,KAAK,CAAC,UAAN,GAAmB,EAAE,CAAC,KAAH,CAAS,eAA7B,IACI,KAAK,CAAC,OAAN,CAAc,wBAHxB,CAF+C,CAM/C;AACH;AACJ;AACJ;;AACD,QAAI,0CAAJ,EAAW;AACP,WAAK,IAAM,CAAX,IAAgB,CAAhB,EAAmB;AACf,YAAK,CAAe,CAAC,KAAhB,KAA0B,SAA/B,EAA0C;AACtC,cAAM,EAAE,GAAS,CAAjB;AACA,iBAAO,CAAC,GAAR,CACI,EAAE,CAAC,KAAH,CAAS,eAAT,GACM,GADN,GAEM,EAAE,CAAC,CAFT,GAGM,GAHN,IAIO,EAAE,CAAC,CAAH,GAAO,EAAE,CAAC,KAJjB,CADJ;AAOH;AACJ;AACJ;;AACD,KAAC,CAAC,kBAAF,GAAuB,KAAvB;AACH;;AA/mCgB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnHrB;;;;;;;;AAQG;AAEH;AAEA;AAEA;AAMA,IAAM,aAAa,GAAG,EAAtB;AAEO,IAAM,UAAU,GAAG;AACtB,cAAY,EAAE,eADQ;AAEtB,UAAQ,EAAE,UAFY;AAGtB,UAAQ,EAAE,WAHY;AAItB,SAAO,EAAE,SAJa;AAKtB,UAAQ,EAAE,UALY;AAMtB,SAAO,EAAE;AANa,CAAnB;AASP;;;AAGG;;AACG,MAAO,mBAAP,SAAmC,gDAAnC,CAAgD;AAclD,cAAY,IAAZ,EAAkB,IAAlB,EAAwB,IAAxB,EAA8B,IAA9B,EAAoC,WAApC,EAAgD;AAC5C;;AACA,QAAI,CAAC,aAAa,CAAC,MAAnB,EAA2B;AACvB,mBAAa,CAAC,IAAd,CAAmB,IAAI,+CAAJ,CAAsB,IAAtB,CAAnB;AACA,mBAAa,CAAC,IAAd,CAAmB,IAAI,+CAAJ,CAAsB,IAAtB,CAAnB;AACA,mBAAa,CAAC,IAAd,CAAmB,IAAI,+CAAJ,CAAsB,IAAtB,CAAnB;AACH;;AACD,SAAK,MAAL,GAAc,aAAa,CAAC,CAAD,CAA3B;AACA,SAAK,KAAL,GAAa,aAAa,CAAC,CAAD,CAA1B;AACA,SAAK,MAAL,GAAc,aAAa,CAAC,CAAD,CAA3B;AAEA,SAAK,KAAL,GAAa,SAAb;AACA,SAAK,KAAL,GAAa,SAAb;AACA,SAAK,KAAL,GAAa,SAAb;AACA,SAAK,KAAL,GAAa,SAAb;AAEA,SAAK,IAAL,GAAY,IAAZ;AACA,SAAK,IAAL,GAAY,IAAZ;AACA,SAAK,IAAL,GAAY,IAAZ;AACA,SAAK,IAAL,GAAY,IAAZ;AAEA,SAAK,UAAL,GAAkB,EAAlB;AACA,SAAK,UAAL,GAAkB,EAAlB;AAEA,SAAK,IAAL,GAAY,SAAZ;;AACA,QAAI,WAAW,KAAK,SAApB,EAA+B;AAC3B,WAAK,GAAL,GAAW,WAAX;AACH;;AACD,QACI,IAAI,KAAK,SAAT,IACG,IAAI,KAAK,SADZ,IAEG,IAAI,KAAK,SAFZ,IAGG,IAAI,KAAK,SAJhB,EAKE;AACE,WAAK,cAAL;AACH;AACJ;;AAjDmB,aAAT,SAAS;AAAK,WAAO,0CAAP;AAAoD;;AAmD7E,eAAa,CAAC,KAAD,EAAmB,KAAnB,EAAgC;AACzC,QAAI,KAAK,KAAK,SAAd,EAAyB;AACrB,WAAK,KAAL,IAAc,KAAd;AACH,KAFD,MAEO,IAAI,OAAO,KAAP,KAAiB,QAArB,EAA+B;AAClC,WAAK,KAAL,IAAc,IAAI,uCAAJ,CAAc,KAAd,CAAd;AACH,KAFM,MAEA,IAAI,KAAK,CAAC,OAAN,CAAc,QAAd,CAAuB,MAAvB,CAAJ,EAAoC;AACvC,WAAK,KAAL,IAAc,KAAd;AACH,KAFM,MAEA;AACH,UAAM,CAAC,GAAG,IAAI,uCAAJ,CAAc,KAAK,CAAC,cAApB,CAAV;AACA,OAAC,CAAC,QAAF,CAAW,aAAX,GAA2B,GAA3B;AACA,WAAK,KAAL,IAAc,CAAd;AACH;AACJ;;AAEO,MAAJ,IAAI;AACJ,WAAO,KAAK,KAAZ;AACH;;AAEO,MAAJ,IAAI,CAAC,KAAD,EAAiB;AACrB,SAAK,aAAL,CAAmB,KAAnB,EAA0B,OAA1B;AACH;;AAEO,MAAJ,IAAI;AACJ,WAAO,KAAK,KAAZ;AACH;;AAEO,MAAJ,IAAI,CAAC,KAAD,EAAiB;AACrB,SAAK,aAAL,CAAmB,KAAnB,EAA0B,OAA1B;AACH;;AAEO,MAAJ,IAAI;AACJ,WAAO,KAAK,KAAZ;AACH;;AAEO,MAAJ,IAAI,CAAC,KAAD,EAAiB;AACrB,SAAK,aAAL,CAAmB,KAAnB,EAA0B,OAA1B;AACH;;AAEO,MAAJ,IAAI;AACJ,WAAO,KAAK,KAAZ;AACH;;AAEO,MAAJ,IAAI,CAAC,KAAD,EAAiB;AACrB,SAAK,aAAL,CAAmB,KAAnB,EAA0B,OAA1B;AACH;;AAEM,MAAH,GAAG;AACH,WAAO,KAAK,IAAZ;AACH,GApGiD,CAsGlD;;;AACO,MAAH,GAAG,CAAC,QAAD,EAAkB;AACrB;AACA;AACA;AACA;AACA;AACA,SAAK,IAAL,GAAY,QAAZ;AACH;;AAES,gBAAc;AACpB,SAAK,UAAL,CAAgB,IAAhB,CAAqB,IAAI,+CAAJ,CAAsB,KAAK,IAA3B,EAAiC,KAAK,IAAtC,CAArB;AACA,SAAK,UAAL,CAAgB,IAAhB,CAAqB,IAAI,+CAAJ,CAAsB,KAAK,IAA3B,EAAiC,KAAK,IAAtC,CAArB;AACA,SAAK,UAAL,CAAgB,IAAhB,CAAqB,IAAI,+CAAJ,CAAsB,KAAK,IAA3B,EAAiC,KAAK,IAAtC,CAArB;AACA,SAAK,UAAL,CAAgB,IAAhB,CAAqB,IAAI,+CAAJ,CAAsB,KAAK,IAA3B,EAAiC,KAAK,IAAtC,CAArB;AACH;;AAED,YAAU;AACN,QAAI,KAAK,aAAL,EAAJ,EAA0B;AACtB,aAAO,UAAU,CAAC,OAAlB;AACH,KAFD,MAEO,IAAI,KAAK,cAAL,EAAJ,EAA2B;AAC9B,aAAO,UAAU,CAAC,QAAlB;AACH,KAFM,MAEA,IAAI,KAAK,aAAL,EAAJ,EAA0B;AAC7B,aAAO,UAAU,CAAC,OAAlB;AACH,KAFM,MAEA,IAAI,KAAK,cAAL,EAAJ,EAA2B;AAC9B,aAAO,UAAU,CAAC,QAAlB;AACH,KAFM,MAEA,IAAI,KAAK,kBAAL,EAAJ,EAA+B;AAClC,aAAO,UAAU,CAAC,YAAlB;AACH,KAFM,MAEA,IAAI,KAAK,QAAL,EAAJ,EAAqB;AACxB,aAAO,UAAU,CAAC,QAAlB;AACH;;AACD,WAAO,SAAP;AACH;;AAED,UAAQ;AACJ,SAAK,IAAM,EAAX,IAAiB,KAAK,UAAtB,EAAkC;AAC9B,UAAI,EAAE,CAAC,IAAH,KAAY,IAAhB,EAAsB;AAClB,eAAO,KAAP;AACH;AACJ;;AACD,WAAO,IAAP;AACH;;AAED,eAAa;AACT,QAAI,KAAK,QAAL,EAAJ,EAAqB;AACjB,aAAO,KAAP;AACH;;AAED,SAAK,IAAM,EAAX,IAAiB,KAAK,UAAtB,EAAkC;AAC9B,UAAI,EAAE,CAAC,IAAH,KAAY,IAAhB,EAAsB;AAClB,eAAO,IAAP;AACH;AACJ;;AACD,WAAO,KAAP;AACH;;AAED,eAAa;AACT,QAAI,KAAK,QAAL,EAAJ,EAAqB;AACjB,aAAO,KAAP;AACH;;AAED,QAAI,KAAK,UAAL,CAAgB,CAAhB,EAAmB,SAAnB,KAAiC,KAAK,UAAL,CAAgB,CAAhB,EAAmB,SAAxD,EAAmE;AAC/D,aAAO,IAAP;AACH,KAFD,MAEO;AACH,aAAO,KAAP;AACH;AACJ;;AAED,gBAAc,CAAC,mBAAqD,SAAtD,EAA+D;AACzE,QAAI,CAAC,KAAK,aAAL,EAAL,EAA2B;AACvB,aAAO,KAAP;AACH;;AACD,QACI,KAAK,UAAL,CAAgB,CAAhB,EAAmB,kBAAnB,KACI,KAAK,UAAL,CAAgB,CAAhB,EAAmB,kBAF3B,EAGE;AACE,aAAO,KAAP;AACH;;AACD,QAAI,gBAAgB,KAAK,SAAzB,EAAoC;AAChC,aAAO,IAAP;AACH;;AACD,QAAI,OAAO,gBAAP,KAA4B,QAAhC,EAA0C;AACtC,sBAAgB,GAAG,IAAI,+CAAJ,CAAsB,gBAAtB,CAAnB;AACH;;AACD,QAAI,KAAK,UAAL,CAAgB,CAAhB,EAAmB,UAAnB,KAAkC,gBAAgB,CAAC,UAAvD,EAAmE;AAC/D,aAAO,IAAP;AACH,KAFD,MAEO;AACH,aAAO,KAAP;AACH;AACJ;;AAED,gBAAc;AACV,QAAI,KAAK,QAAL,EAAJ,EAAqB;AACjB,aAAO,KAAP;AACH;;AACD,QAAI,KAAK,aAAL,EAAJ,EAA0B;AACtB,aAAO,KAAP;AACH;;AACD,QAAI,KAAK,UAAL,CAAgB,CAAhB,EAAmB,SAAnB,KAAiC,KAAK,UAAL,CAAgB,CAAhB,EAAmB,SAAxD,EAAmE;AAC/D,aAAO,KAAP;AACH,KAFD,MAEO;AACH,aAAO,IAAP;AACH;AACJ;;AAED,uBAAqB;AACjB,WACI,KAAK,cAAL,MACG,KAAK,UAAL,CAAgB,CAAhB,EAAmB,SAAnB,KAAiC,0DAFxC;AAIH;;AAED,sBAAoB;AAChB,WACI,KAAK,cAAL,MACG,KAAK,UAAL,CAAgB,CAAhB,EAAmB,SAAnB,KAAiC,2DAFxC;AAIH;;AAED,oBAAkB,CAAC,aAA+C,SAAhD,EAAyD;AACvE,QAAI,CAAC,KAAK,cAAL,EAAL,EAA4B;AACxB,aAAO,KAAP;AACH;;AACD,QAAI,KAAK,UAAL,CAAgB,CAAhB,EAAmB,UAAnB,KAAkC,KAAK,UAAL,CAAgB,CAAhB,EAAmB,UAAzD,EAAqE;AACjE,aAAO,KAAP;AACH;;AACD,QAAI,UAAU,KAAK,SAAnB,EAA8B;AAC1B,aAAO,IAAP;AACH;;AACD,QAAI,OAAO,UAAP,KAAsB,QAA1B,EAAoC;AAChC,UAAI,KAAK,UAAL,CAAgB,CAAhB,EAAmB,UAAnB,KAAkC,UAAtC,EAAkD;AAC9C,eAAO,IAAP;AACH,OAFD,MAEO;AACH,eAAO,KAAP;AACH;AACJ,KAND,MAMO,IAAI,KAAK,UAAL,CAAgB,CAAhB,EAAmB,UAAnB,KAAkC,UAAU,CAAC,UAAjD,EAA6D;AAChE,aAAO,IAAP;AACH,KAFM,MAEA;AACH,aAAO,KAAP;AACH;AACJ;;AAED,kBAAgB,CAAC,YAAD,EAAuC;AACnD,QAAI,EAAE,KAAK,cAAL,MAAyB,KAAK,kBAAL,EAA3B,CAAJ,EAA2D;AACvD,aAAO,KAAP;AACH;;AACD,QAAI,OAAO,YAAP,KAAwB,QAA5B,EAAsC;AAClC,kBAAY,GAAG,IAAI,+CAAJ,CAAsB,YAAtB,CAAf;AACH;;AAED,QAAI,KAAK,UAAL,CAAgB,CAAhB,EAAmB,cAAnB,KAAsC,YAAY,CAAC,cAAvD,EAAuE;AACnE,aAAO,IAAP;AACH,KAFD,MAEO;AACH,aAAO,KAAP;AACH;AACJ;;AAED,eAAa;AACT,WAAO,KAAK,gBAAL,CAAsB,KAAK,KAA3B,CAAP;AACH;;AAED,gBAAc;AACV,WAAO,KAAK,gBAAL,CAAsB,KAAK,MAA3B,CAAP;AACH;;AAED,gBAAc;AACV,WAAO,KAAK,gBAAL,CAAsB,KAAK,MAA3B,CAAP;AACH;;AAED,wBAAsB;AAClB,WAAO,KAAK,cAAL,MAAyB,KAAK,cAAL,EAAhC;AACH;;AAED,gBAAc,CAAC,YAAD,EAAuC;AACjD,QAAI,KAAK,cAAL,EAAJ,EAA2B;AACvB,aAAO,KAAP;AACH;;AACD,QAAI,CAAC,KAAK,aAAL,EAAL,EAA2B;AACvB,aAAO,KAAP;AACH;;AAED,QAAI,OAAO,YAAP,KAAwB,QAA5B,EAAsC;AAClC,kBAAY,GAAG,IAAI,+CAAJ,CAAsB,YAAtB,CAAf;AACH;;AACD,QAAI,KAAK,UAAL,CAAgB,CAAhB,EAAmB,UAAnB,KAAkC,YAAY,CAAC,UAAnD,EAA+D;AAC3D,aAAO,IAAP;AACH,KAFD,MAEO;AACH,aAAO,KAAP;AACH;AACJ;;AAED,aAAW;AACP,WAAO,KAAK,cAAL,CAAoB,KAAK,KAAzB,CAAP;AACH;;AAED,cAAY;AACR,WAAO,KAAK,cAAL,CAAoB,KAAK,MAAzB,CAAP;AACH,GA3SiD,CA6SlD;;;AACA,eAAa;AACT,WACI,KAAK,IAAL,CAAU,KAAV,CAAgB,EAAhB,GAAqB,KAAK,IAAL,CAAU,KAAV,CAAgB,EAArC,IACG,KAAK,IAAL,CAAU,KAAV,CAAgB,EAAhB,GAAqB,KAAK,IAAL,CAAU,KAAV,CAAgB,EAF5C;AAIH;;AAED,cAAY;AACR,WACI,KAAK,IAAL,CAAU,KAAV,CAAgB,EAAhB,GAAqB,KAAK,IAAL,CAAU,KAAV,CAAgB,EAArC,IACG,KAAK,IAAL,CAAU,KAAV,CAAgB,EAAhB,GAAqB,KAAK,IAAL,CAAU,KAAV,CAAgB,EAF5C;AAIH;AAED;;;;;;;;;;;;;;AAcG;;;AAEH,oBAAkB;AACd,QAAI,KAAK,QAAL,EAAJ,EAAqB;AACjB,aAAO,IAAP;AACH;;AACD,QAAI,KAAJ;AACA,QAAI,QAAJ;AACA,QAAI,QAAJ;;AACA,QAAI,KAAK,GAAL,KAAa,SAAjB,EAA4B;AACxB,WAAK,GAAG,KAAK,GAAL,CAAS,QAAT,EAAR;AACA,cAAQ,GAAG,KAAK,CAAC,uBAAN,CAA8B,KAAK,IAAnC,CAAX;AACA,cAAQ,GAAG,KAAK,CAAC,uBAAN,CAA8B,KAAK,IAAnC,CAAX;AACH,KAXa,CAad;;;AACA,QACI,KAAK,GAAL,KAAa,SAAb,IACG,KAAK,GAAL,CAAS,IAAT,KAAkB,OADrB,KAEI,QAAQ,KAAK,SAAb,IAA0B,QAAQ,KAAK,SAF3C,CADJ,EAIE;AACE,UAAM,MAAM,GAAmB,KAAK,GAAL,CAAS,QAAT,CAAkB,eAAlB,CAA/B,CADF,CACqE;;AACnE,UAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,gBAAQ,GAAG,MAAM,CAAC,uBAAP,CAA+B,KAAK,IAApC,CAAX;AACH;;AACD,UAAI,QAAQ,KAAK,SAAjB,EAA4B;AACxB,gBAAQ,GAAG,MAAM,CAAC,uBAAP,CAA+B,KAAK,IAApC,CAAX;AACH;AACJ;;AAED,QAAM,YAAY,GAAG,KAAK,UAAL,CAAgB,CAAhB,EAAmB,UAAxC;AACA,QAAM,aAAa,GAAG,KAAK,UAAL,CAAgB,CAAhB,EAAmB,OAAnB,CAA2B,gBAAjD;;AAEA,QAAI,YAAY,KAAK,IAArB,EAA2B;AACvB,UAAI,KAAK,IAAL,CAAU,KAAV,CAAgB,EAAhB,IAAsB,KAAK,IAAL,CAAU,KAAV,CAAgB,EAA1C,EAA8C;AAC1C,eAAO,IAAP;AACH,OAFD,MAEO;AACH,eAAO,KAAP;AACH;AACJ,KAND,MAMO,IAAI,YAAY,KAAK,IAArB,EAA2B;AAC9B,UAAI,KAAK,KAAK,SAAV,IAAuB,QAAQ,KAAK,CAAxC,EAA2C;AACvC,eAAO,IAAP;AACH;;AACD,UAAI,KAAK,KAAK,SAAV,IAAuB,QAAQ,KAAK,CAAxC,EAA2C;AACvC,eAAO,KAAP;AACH;;AACD,aAAO,KAAK,oBAAL,MAA+B,aAAa,KAAK,CAAxD;AACH,KARM,MAQA,IAAI,YAAY,KAAK,IAArB,EAA2B;AAC9B,UAAI,KAAK,KAAK,SAAV,IAAuB,QAAQ,KAAK,CAAxC,EAA2C;AACvC,eAAO,IAAP;AACH;;AACD,UAAI,KAAK,KAAK,SAAV,IAAuB,QAAQ,KAAK,CAAxC,EAA2C;AACvC,eAAO,KAAP;AACH;;AACD,aAAO,KAAK,qBAAL,MAAgC,aAAa,KAAK,CAAzD;AACH,KARM,MAQA,IAAI,YAAY,KAAK,IAArB,EAA2B;AAC9B,UAAI,KAAK,KAAK,SAAV,IAAuB,QAAQ,KAAK,CAAxC,EAA2C;AACvC,eAAO,IAAP;AACH;;AACD,UAAI,KAAK,KAAK,SAAV,IAAuB,QAAQ,KAAK,CAAxC,EAA2C;AACvC,eAAO,KAAP;AACH;;AACD,aAAO,aAAa,KAAK,CAAzB;AACH,KARM,MAQA;AACH,aAAO,IAAP;AACH;AACJ;;AA5YiD,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnCtD;;;;;;;;;;;AAWG;;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CG;AAEH;AACA;AAEA;AACA;AAWA;;;;;;;;AAQG;;AAEH;;;;;;;;;;;;;AAaG;;AACI,IAAM,OAAO,GAAG;AACnB,oBAAkB,EAAE,SADD;AAEnB,mBAAiB,EAAE,SAFA;AAInB,QAAM,EAAE,SAJW;AAKnB,SAAO,EAAE,SALU;AAOnB,iBAAe,EAAE,4CAPE;AAQnB,cAAY,EAAE,SARK;AASnB,uBAAqB,EAAE;AATJ,CAAhB;AAYP;;;;;;;;;;;;AAYG;;AACG,SAAU,iBAAV,CAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC,EAAqC,CAArC,EAAsC;AACxC,MAAM,YAAY,GAAG;AACjB,aAAS,EAAE,CADM;AAEjB,QAAI,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP;AAFW,GAArB;AAIA,SAAO,aAAa,CAAC,YAAD,CAApB;AACH;AAED;;;;;;;;;;;;;AAaG;;AACG,SAAU,aAAV,CAAwB,gBAAxB,EAAwC;AAC1C,MAAM,CAAC,GAAG,gBAAgB,CAAC,SAA3B;AACA,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAjB,CAAsB,CAAtB,CAAV;AACA,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAjB,CAAsB,CAAtB,CAAV;AACA,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAjB,CAAsB,CAAtB,CAAV;AAEA,MAAM,aAAa,GAAgC,iDAAnD;AACA,MAAM,WAAW,GAAG,aAAa,CAAC,GAAd,CAAkB,CAAlB,EAAqB,CAArB,EAAwB,CAAxB,EAA2B,CAA3B,CAApB;;AACA,MAAI,aAAa,CAAC,OAAd,YAAiC,KAArC,EAA4C;AACxC,WAAO,aAAa,CAAC,OAAd,CAAsB,OAAtB,CAA8B,CAAC,EAAD,EAAK,KAAL,EAAY,KAAZ,KAAqB;AACtD,QAAE,CAAC,WAAD,CAAF;AACH,KAFM,CAAP;AAGH,GAJD,MAIO,IAAI,aAAa,CAAC,OAAd,YAAiC,QAArC,EAA+C;AAClD,WAAO,aAAa,CAAC,OAAd,CAAsB,WAAtB,CAAP;AACH,GAFM,MAEA;AACH,WAAO,SAAP;AACH;AACJ;AAED;;;;;;;;;;;;AAYG;;AACG,SAAU,YAAV,CACF,gBAA6B,SAD3B,EAEF,WAAoB,KAFlB,EAEuB;AAEzB,MAAI,OAAO,CAAC,YAAR,IAAwB,CAAC,QAA7B,EAAuC;AACnC,WAAO,OAAO,CAAC,YAAf;AACH;;AACD,MAAI,OAAO,aAAP,KAAyB,WAA7B,EAA0C;AACtC,iBAAa,GAAG,mCAAC,CAAC,MAAD,CAAD,CAAU,CAAV,CAAhB;AACH;;AACD,MAAM,GAAG,GAAU,QAAQ,CAAC,aAAT,CAAuB,QAAvB,CAAnB,CARyB,CASzB;;AACA,KAAG,CAAC,OAAJ,GAAc,4CAAd;;AACA,MAAI,CAAC,GAAG,CAAC,MAAT,EAAiB;AACb,OAAG,CAAC,IAAJ,GAAW,cAAX;AACH;;AACD,KAAG,CAAC,KAAJ,CAAU,UAAV,GAAuB,QAAvB;AACA,KAAG,CAAC,KAAJ,CAAU,KAAV,GAAkB,KAAlB;AACA,KAAG,CAAC,KAAJ,CAAU,MAAV,GAAmB,KAAnB;AACA,eAAa,CAAC,WAAd,CAA0B,GAA1B;;AAEA,MAAI,GAAG,CAAC,MAAR,EAAgB;AACZ,WAAO,CAAC,YAAR,GAAuB,GAAvB;AACA,WAAO,GAAP;AACH,GAHD,MAGO;AACH,iBAAa,CAAC,WAAd,CAA0B,GAA1B;AACA,WAAO,CAAC,KAAR,CACI,wCAAwC,OAAO,CAAC,eADpD;AAGA,WAAO,SAAP;AACH;AACJ;AAED;;;;;;;AAOG;;AACG,SAAU,kBAAV,CAA6B,UAA7B,EAAyC,OAAO,GAAC,EAAjD,EAAmD;AACrD,MAAM,MAAM,GAAG;AACX,aAAS,EAAE,SADA;AAEX,kBAAc,EAAE,SAFL;AAGX,gBAAY,EAAE;AAHH,GAAf;AAKA,6CAAa,MAAb,EAAqB,OAArB;AAEA,MAAM,IAAI,GAAG,YAAY,EAAzB;;AACA,MAAI,IAAI,KAAK,SAAb,EAAwB;AACpB,WAAO,SAAP;AACH;;AAED,YAAU,CAAC,EAAX,CAAc,QAAd,EAAwB,MAAK;AACzB,QAAM,aAAa,GAAG,mCAAC,CAAC,+BAAD,CAAD,CAAmC,IAAnC,EAAtB;;AACA,QAAI,aAAa,KAAK,eAAtB,EAAuC;AACnC,aAAO,CAAC,qBAAR,GAAgC,IAAI,CAAC,UAAL,CAC5B,aAD4B,EAE5B,iBAF4B,CAAhC;AAIH,KALD,MAKO;AACH,UAAI,CAAC,WAAL;AACH;;AACD,QAAI,yCAAJ,EAAW;AACP,aAAO,CAAC,GAAR,CACI,+BAA+B,OAAO,CAAC,qBAD3C;AAGH;AACJ,GAfD;AAgBA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAL,EAApB;AACA,MAAM,gBAAgB,GAAG,mCAAC,CAAC,6CAAD,CAA1B;AACA,YAAU,CAAC,MAAX,CAAkB,gBAAlB;AAEA,MAAI,WAAW,GAAG,KAAlB;AACA,MAAM,gBAAgB,GAAG,EAAzB;;AACA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,WAAW,CAAC,MAAhC,EAAwC,CAAC,EAAzC,EAA6C;AACzC,QAAM,aAAa,GAAG,mCAAC,CACnB,oBACM,WAAW,CAAC,CAAD,CADjB,GAEM,IAFN,GAGM,WAAW,CAAC,CAAD,CAHjB,GAIM,WALa,CAAvB;;AAOA,QAAI,WAAW,CAAC,CAAD,CAAX,KAAmB,OAAO,CAAC,qBAA/B,EAAsD;AAClD,mBAAa,CAAC,IAAd,CAAmB,UAAnB,EAA+B,IAA/B;AACA,iBAAW,GAAG,IAAd;AACH;;AACD,oBAAgB,CAAC,IAAjB,CAAsB,aAAtB,EAZyC,CAazC;;AACA,cAAU,CAAC,MAAX,CAAkB,aAAlB;AACH;;AACD,MAAI,WAAW,KAAK,KAAhB,IAAyB,WAAW,CAAC,MAAZ,GAAqB,CAAlD,EAAqD;AACjD,cAAU,CAAC,GAAX,CAAe,WAAW,CAAC,CAAD,CAA1B;AACA,oBAAgB,CAAC,CAAD,CAAhB,CAAoB,IAApB,CAAyB,UAAzB,EAAqC,IAArC;AACA,WAAO,CAAC,qBAAR,GAAgC,IAAI,CAAC,UAAL,CAC5B,WAAW,CAAC,CAAD,CADiB,EAE5B,iBAF4B,CAAhC;AAIA,eAAW,GAAG,IAAd;AACH,GARD,MAQO;AACH,oBAAgB,CAAC,IAAjB,CAAsB,UAAtB,EAAkC,IAAlC;AACH;;AACD,MAAI,MAAM,CAAC,SAAP,KAAqB,SAAzB,EAAoC;AAChC,UAAM,CAAC,SAAP;AACH;;AACD,MAAI,WAAW,KAAK,IAAhB,IAAwB,MAAM,CAAC,cAAP,KAA0B,SAAtD,EAAiE;AAC7D,UAAM,CAAC,cAAP;AACH,GAFD,MAEO,IAAI,WAAW,KAAK,KAAhB,IAAyB,MAAM,CAAC,YAAP,KAAwB,SAArD,EAAgE;AACnE,UAAM,CAAC,YAAP;AACH;;AACD,SAAO,UAAP;AACH;AAED;;;AAGG;;AACG,SAAU,gBAAV,GAA0B;AAC5B,MAAM,aAAa,GAAG,OAAO,CAAC,OAAR,CAAgB,GAAhB,EAAtB;;AACA,MAAI,aAAa,KAAK,OAAO,CAAC,iBAA9B,EAAiD;AAC7C,WAAO,KAAP;AACH;;AACD,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAR,CAAe,aAAzC,CAL4B,CAK4B;;AACxD,SAAO,CAAC,MAAR,CAAe,aAAf,GAA+B,MAAK,CAAG,CAAvC;;AACA,MAAI,yCAAJ,EAAW;AACP,WAAO,CAAC,GAAR,CAAY,+BAA+B,aAA3C;AACH;;AACD,SAAO,CAAC,iBAAR,GAA4B,aAA5B;AAEA,SAAO,CAAC,MAAR,CAAe,MAAf,CAAsB,OAAtB,CAA8B,IAAI,IAAG;AACjC,QAAI,IAAI,CAAC,IAAL,KAAc,aAAlB,EAAiC;AAC7B,UAAI,CAAC,aAAL,GAAqB,aAArB;AACH,KAFD,MAEO;AACH,UAAI,CAAC,KAAL;AACH;AACJ,GAND;AAOA,SAAO,CAAC,MAAR,CAAe,aAAf,GAA+B,iBAA/B;AACA,SAAO,KAAP;AACH;AAED;;;;;;;;;;;;;;;AAeG;;AACG,SAAU,cAAV,CAAyB,aAAzB,EAAwC,OAAxC,EAA+C;AACjD,MAAM,MAAM,GAAG;AACX,cAAU,EAAE,IADD;AAEX,sBAAkB,EAAE,KAFT;AAGX,aAAS,EAAE,SAHA;AAIX,kBAAc,EAAE,SAJL;AAKX,gBAAY,EAAE;AALH,GAAf;AAOA,6CAAa,MAAb,EAAqB,OAArB;AAEA;;AAEG;;AACH,MAAI,cAAJ;;AACA,MAAI,OAAO,aAAP,KAAyB,WAA7B,EAA0C;AACtC,kBAAc,GAAG,mCAAC,CAAC,MAAD,CAAlB;AACH,GAFD,MAEO,IAAI,EAAE,aAAa,YAAY,mCAA3B,CAAJ,EAAmC;AACtC,kBAAc,GAAG,mCAAC,CAAC,aAAD,CAAlB;AACH,GAFM,MAEA;AACH,kBAAc,GAAG,aAAjB;AACH;;AACD,MAAI,UAAJ;AACA,MAAM,gBAAgB,GAAG,cAAc,CAAC,IAAf,CAAoB,qBAApB,CAAzB;;AACA,MAAI,gBAAgB,CAAC,MAAjB,GAA0B,CAA9B,EAAiC;AAC7B,cAAU,GAAG,gBAAgB,CAAC,CAAD,CAA7B;AACA,UAAM,CAAC,kBAAP,GAA4B,IAA5B;AACH,GAHD,MAGO;AACH,cAAU,GAAG,mCAAC,CAAC,UAAD,CAAD,CAAc,IAAd,CAAmB,IAAnB,EAAyB,cAAzB,CAAb;AACA,kBAAc,CAAC,MAAf,CAAsB,UAAtB;AACH;;AACD,SAAO,CAAC,OAAR,GAAkB,UAAlB;;AAEA,MAA4B,SAAU,CAAC,iBAAX,KAAiC,SAA7D,EAAwE;AACpE,sBAAkB,CAAC,UAAD,EAAa,MAAb,CAAlB;AACH,GAFD,MAEO;AACH,QAAI,MAAM,CAAC,kBAAP,KAA8B,IAAlC,EAAwC;AACpC,gBAAU,CAAC,EAAX,CAAc,QAAd,EAAwB,gBAAxB;AACH;;AACuB,aAAU,CAAC,iBAAX,GAA+B,IAA/B,CACpB,MAAM,IAAG;AACL,aAAO,CAAC,MAAR,GAAiB,MAAjB;AACA,oBAAc;;AACd,UAAI,MAAM,CAAC,UAAX,EAAuB;AACnB,cAAM,CAAC,aAAP,GAAuB,cAAvB;AACH;;AACD,aAAO,CAAC,OAAR,CAAgB,MAAhB;;AACA,UAAI,MAAM,CAAC,SAAP,KAAqB,SAAzB,EAAoC;AAChC,cAAM,CAAC,SAAP;AACH;;AACD,UACI,OAAO,CAAC,iBAAR,KAA8B,MAA9B,IACG,MAAM,CAAC,cAAP,KAA0B,SAFjC,EAGE;AACE,cAAM,CAAC,cAAP;AACH,OALD,MAKO,IACH,OAAO,CAAC,iBAAR,KAA8B,MAA9B,IACG,MAAM,CAAC,YAAP,KAAwB,SAFxB,EAGL;AACE,cAAM,CAAC,YAAP;AACH;AACJ,KAtBmB,EAuBpB,CAAC,IAAG;AACA,oBAAc,CAAC,IAAf,CAAoB,CAAC,CAAC,OAAtB;AACH,KAzBmB;AA2B3B;;AACD,2DAlEiD,CAkErB;;AAC5B,SAAO,UAAP;AACH;AAEK,SAAU,cAAV,GAAwB;AAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAR,CAAe,MAA9B;AACA,SAAO,CAAC,OAAR,CAAgB,KAAhB;AAEA,MAAM,iBAAiB,GAAG,mCAAC,CAAC,6CAAD,CAA3B;AACA,SAAO,CAAC,OAAR,CAAgB,MAAhB,CAAuB,iBAAvB;AAEA,MAAM,gBAAgB,GAAG,EAAzB;AACA,MAAM,WAAW,GAAG,EAApB;AACA,MAAI,CAAC,GAAG,CAAR;AACA,QAAM,CAAC,OAAP,CAAe,IAAI,IAAG;AAClB,QAAM,aAAa,GAAG,mCAAC,CACnB,oBAAoB,IAAI,CAAC,IAAzB,GAAgC,IAAhC,GAAuC,IAAI,CAAC,IAA5C,GAAmD,WADhC,CAAvB;AAGA,oBAAgB,CAAC,IAAjB,CAAsB,aAAtB;AACA,eAAW,CAAC,IAAZ,CAAiB,IAAI,CAAC,IAAtB,EALkB,CAMlB;;AACA,WAAO,CAAC,OAAR,CAAgB,MAAhB,CAAuB,aAAvB;AACA,KAAC,IAAI,CAAL;AACH,GATD;;AAWA,MAAI,gBAAgB,CAAC,MAAjB,GAA0B,CAA9B,EAAiC;AAC7B,WAAO,CAAC,OAAR,CAAgB,GAAhB,CAAoB,WAAW,CAAC,CAAD,CAA/B;AACA,oBAAgB,CAAC,CAAD,CAAhB,CAAoB,IAApB,CAAyB,UAAzB,EAAqC,IAArC;AACH,GAHD,MAGO;AACH,qBAAiB,CAAC,IAAlB,CAAuB,UAAvB,EAAmC,IAAnC;AACH;;AACD,SAAO,CAAC,OAAR,CAAgB,OAAhB,CAAwB,QAAxB;AACH,C;;;;;;;;;;AClbD;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;ACJA,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;ACNA,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,aAAa,mBAAO,CAAC,qFAA4B;AACjD,2BAA2B,mBAAO,CAAC,uGAAqC;;AAExE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;ACnBa;AACb,aAAa,uHAA+C;;AAE5D;AACA;AACA;AACA;AACA;;;;;;;;;;;ACPA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;ACJA,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;ACNA;;;;;;;;;;;;ACAa;AACb,0BAA0B,mBAAO,CAAC,iGAAkC;AACpE,kBAAkB,mBAAO,CAAC,iFAA0B;AACpD,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,UAAU,mBAAO,CAAC,iEAAkB;AACpC,cAAc,mBAAO,CAAC,yEAAsB;AAC5C,kCAAkC,mBAAO,CAAC,uHAA6C;AACvF,eAAe,mBAAO,CAAC,2EAAuB;AAC9C,qBAAqB,8HAAgD;AACrE,qBAAqB,mBAAO,CAAC,yGAAsC;AACnE,qBAAqB,mBAAO,CAAC,yGAAsC;AACnE,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,UAAU,mBAAO,CAAC,iEAAkB;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,gBAAgB;AACvB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,sDAAsD;AACtD;AACA,GAAG,EAAE;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACtKa;AACb,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,kBAAkB,mBAAO,CAAC,iFAA0B;AACpD,0BAA0B,mBAAO,CAAC,iGAAkC;AACpE,kCAAkC,mBAAO,CAAC,uHAA6C;AACvF,kBAAkB,mBAAO,CAAC,mFAA2B;AACrD,YAAY,mBAAO,CAAC,qEAAoB;AACxC,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,cAAc,mBAAO,CAAC,2EAAuB;AAC7C,cAAc,mBAAO,CAAC,yEAAsB;AAC5C,qBAAqB,mBAAO,CAAC,yGAAsC;AACnE,qBAAqB,mBAAO,CAAC,yGAAsC;AACnE,0BAA0B,4IAAuD;AACjF,qBAAqB,8HAAgD;AACrE,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,qBAAqB,mBAAO,CAAC,6FAAgC;AAC7D,0BAA0B,mBAAO,CAAC,uFAA6B;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+CAA+C,mBAAmB,oCAAoC,EAAE,EAAE;AAC1G;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;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S,qFAAqF;AACnG;;AAEA;AACA;;;;;;;;;;;ACzFA,YAAY,mBAAO,CAAC,qEAAoB;;AAExC;AACA;AACA,iCAAiC,MAAM,mBAAmB,UAAU,EAAE,EAAE;AACxE,CAAC;;;;;;;;;;;ACLD,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AClCA,cAAc,mBAAO,CAAC,iFAA0B;AAChD,aAAa,mBAAO,CAAC,uEAAqB;;AAE1C;;;;;;;;;;;ACHA,iBAAiB,mBAAO,CAAC,mFAA2B;;AAEpD;;;;;;;;;;;ACFA,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,gBAAgB,mBAAO,CAAC,6FAAgC;;AAExD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACTA,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,+BAA+B,sJAA4D;AAC3F,kCAAkC,mBAAO,CAAC,uHAA6C;AACvF,eAAe,mBAAO,CAAC,2EAAuB;AAC9C,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,gCAAgC,mBAAO,CAAC,iHAA0C;AAClF,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,mDAAmD;AACnD,GAAG;AACH,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACrDA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;ACNa;AACb;AACA,mBAAO,CAAC,mFAA2B;AACnC,eAAe,mBAAO,CAAC,2EAAuB;AAC9C,YAAY,mBAAO,CAAC,qEAAoB;AACxC,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,kCAAkC,mBAAO,CAAC,uHAA6C;;AAEvF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,4CAA4C;AACrE;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,UAAU;AACvC;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,WAAW;AACxD;AACA;AACA;;AAEA,2BAA2B,mBAAmB,aAAa;;AAE3D;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,gBAAgB;AAChB;AACA,cAAc;AACd,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,4CAA4C;AAC5E;AACA;AACA,2BAA2B,uCAAuC;AAClE;AACA;;AAEA;AACA;;;;;;;;;;;;AC7Ha;AACb,cAAc,mBAAO,CAAC,2EAAuB;AAC7C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,WAAW,mBAAO,CAAC,qGAAoC;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,+EAAyB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACvBA,WAAW,mBAAO,CAAC,mEAAmB;AACtC,aAAa,mBAAO,CAAC,uEAAqB;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACVA,cAAc,mBAAO,CAAC,yEAAsB;AAC5C,gBAAgB,mBAAO,CAAC,6EAAwB;AAChD,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACVA,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,wBAAwB,mBAAO,CAAC,iGAAkC;;AAElE;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;ACRA,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;ACvCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAM,gBAAgB,qBAAM;AAC3C;AACA,gBAAgB,aAAa,EAAE;;;;;;;;;;;ACZ/B,uBAAuB;;AAEvB;AACA;AACA;;;;;;;;;;;ACJA;;;;;;;;;;;ACAA,iBAAiB,mBAAO,CAAC,mFAA2B;;AAEpD;;;;;;;;;;;ACFA,kBAAkB,mBAAO,CAAC,iFAA0B;AACpD,YAAY,mBAAO,CAAC,qEAAoB;AACxC,oBAAoB,mBAAO,CAAC,yGAAsC;;AAElE;AACA;AACA;AACA,sBAAsB,UAAU;AAChC,GAAG;AACH,CAAC;;;;;;;;;;;ACTD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,QAAQ,qBAAqB;AAC7B;AACA;AACA,QAAQ,oBAAoB;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,WAAW;AACnB;AACA;AACA;AACA,QAAQ,WAAW;AACnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACrFA,YAAY,mBAAO,CAAC,qEAAoB;AACxC,cAAc,mBAAO,CAAC,iFAA0B;;AAEhD;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;;;;;;;;;;;ACZD,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,qBAAqB,mBAAO,CAAC,yGAAsC;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AChBA,YAAY,mBAAO,CAAC,mFAA2B;;AAE/C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,sBAAsB,mBAAO,CAAC,yFAA8B;AAC5D,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,kCAAkC,mBAAO,CAAC,uHAA6C;AACvF,gBAAgB,mBAAO,CAAC,iEAAkB;AAC1C,aAAa,mBAAO,CAAC,mFAA2B;AAChD,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,iBAAiB,mBAAO,CAAC,iFAA0B;;AAEnD;AACA;;AAEA;AACA,uCAAuC;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;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AACH;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;;;;;;;;;;;ACvCD,cAAc,mBAAO,CAAC,sEAAe;AACrC,iBAAiB,mBAAO,CAAC,sEAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACpBa;AACb,kBAAkB,mBAAO,CAAC,wEAAgB;AAC1C,oBAAoB,mBAAO,CAAC,0FAAyB;;AAErD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;ACvFa;AACb,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfa;;AAEb,YAAY,mBAAO,CAAC,0DAAS;;AAE7B;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,CAAC;;AAED,oBAAoB;AACpB;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACtBD;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACLA,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,kCAAkC,mBAAO,CAAC,uHAA6C;;AAEvF;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;;;;;;;;;;;ACTa;AACb,iBAAiB,mBAAO,CAAC,mFAA2B;AACpD,2BAA2B,mBAAO,CAAC,uGAAqC;AACxE,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,kBAAkB,mBAAO,CAAC,iFAA0B;;AAEpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,aAAa;AACrC,KAAK;AACL;AACA;;;;;;;;;;;AClBA,qBAAqB,8HAAgD;AACrE,UAAU,mBAAO,CAAC,iEAAkB;AACpC,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;;AAEA;AACA;AACA,uCAAuC,iCAAiC;AACxE;AACA;;;;;;;;;;;ACVA,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,UAAU,mBAAO,CAAC,iEAAkB;;AAEpC;;AAEA;AACA;AACA;;;;;;;;;;;ACPA,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,gBAAgB,mBAAO,CAAC,+EAAyB;;AAEjD;AACA,kDAAkD;;AAElD;;;;;;;;;;;ACNA,cAAc,mBAAO,CAAC,yEAAsB;AAC5C,YAAY,mBAAO,CAAC,mFAA2B;;AAE/C;AACA,qEAAqE;AACrE,CAAC;AACD;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACTD,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACZA,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,6BAA6B,mBAAO,CAAC,2GAAuC;;AAE5E,sBAAsB,kBAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC1Ba;AACb;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,oBAAoB;AACpB,mCAAmC;AACnC,+CAA+C;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA,OAAO;AACP,uCAAuC;AACvC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mCAAmC;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;;AAEA,kCAAkC;AAClC,mCAAmC;;AAEnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,oBAAoB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,mBAAmB;AAChC;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvKa;AACb,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,6BAA6B,mBAAO,CAAC,2GAAuC;;AAE5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,MAAM;AACd;AACA;;;;;;;;;;;ACbA,YAAY,mBAAO,CAAC,qEAAoB;AACxC,kBAAkB,mBAAO,CAAC,iFAA0B;;AAEpD;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;ACXA,6BAA6B,mBAAO,CAAC,2GAAuC;AAC5E,kBAAkB,mBAAO,CAAC,iFAA0B;;AAEpD;AACA;AACA;;AAEA,sBAAsB,gDAAgD;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC3BA,cAAc,mBAAO,CAAC,iFAA0B;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACTA,gBAAgB,mBAAO,CAAC,+EAAyB;;AAEjD;AACA;;AAEA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;;;;;;;;;;;ACXA,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACXA;AACA,oBAAoB,mBAAO,CAAC,uFAA6B;AACzD,6BAA6B,mBAAO,CAAC,2GAAuC;;AAE5E;AACA;AACA;;;;;;;;;;;ACNA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACPA,gBAAgB,mBAAO,CAAC,+EAAyB;;AAEjD;;AAEA;AACA;AACA;AACA,uEAAuE;AACvE;;;;;;;;;;;ACRA,6BAA6B,mBAAO,CAAC,2GAAuC;;AAE5E;AACA;AACA;AACA;AACA;;;;;;;;;;;ACNA,wBAAwB,mBAAO,CAAC,iGAAkC;;AAElE;AACA;AACA;AACA;AACA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,+EAAyB;;AAEjD;AACA;AACA;AACA;AACA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACbA,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;AACA;;AAEA;;AAEA;;;;;;;;;;;;ACPa;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,kBAAkB,mBAAO,CAAC,iFAA0B;AACpD,kDAAkD,mBAAO,CAAC,6IAAwD;AAClH,0BAA0B,mBAAO,CAAC,uGAAqC;AACvE,wBAAwB,mBAAO,CAAC,mFAA2B;AAC3D,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,+BAA+B,mBAAO,CAAC,+GAAyC;AAChF,kCAAkC,mBAAO,CAAC,uHAA6C;AACvF,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,cAAc,mBAAO,CAAC,2EAAuB;AAC7C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,kBAAkB,mBAAO,CAAC,mFAA2B;AACrD,UAAU,mBAAO,CAAC,iEAAkB;AACpC,cAAc,mBAAO,CAAC,yEAAsB;AAC5C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,aAAa,mBAAO,CAAC,qFAA4B;AACjD,qBAAqB,mBAAO,CAAC,yGAAsC;AACnE,0BAA0B,4IAAuD;AACjF,qBAAqB,mBAAO,CAAC,2FAA+B;AAC5D,cAAc,sHAA+C;AAC7D,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,2BAA2B,mBAAO,CAAC,uGAAqC;AACxE,qCAAqC,mBAAO,CAAC,+HAAiD;AAC9F,0BAA0B,mBAAO,CAAC,uFAA6B;AAC/D,wBAAwB,mBAAO,CAAC,iGAAkC;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA,GAAG,EAAE;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK,mEAAmE;AACxE;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AA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;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;ACjCY;AACb,oCAAoC,mBAAO,CAAC,+HAAiD;AAC7F,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,6BAA6B,mBAAO,CAAC,2GAAuC;AAC5E,yBAAyB,mBAAO,CAAC,iGAAkC;AACnE,yBAAyB,mBAAO,CAAC,mGAAmC;AACpE,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,qBAAqB,mBAAO,CAAC,mGAAmC;AAChE,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,YAAY,mBAAO,CAAC,qEAAoB;;AAExC;AACA;AACA;;AAEA;AACA,qCAAqC,iCAAiC,EAAE;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E;AAC/E;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;ACvIY;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,+BAA+B,sJAA4D;AAC3F,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,iBAAiB,m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cAAc;AACjG;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kDAAkD;AAC1E;AACA,OAAO,6DAA6D,kCAAkC;AACtG,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oCAAoC;AAC5D;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uBAAuB;AACrD;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA,4BAA4B,2BAA2B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC,GAAG,mBAAmB;;AAEvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC,GAAG,mBAAmB;;AAEvB;;AAEA,GAAG,wCAAwC;AAC3C;AACA,CAAC;;AAED;AACA;AACA;AACA,KAAK,+CAA+C;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E;AAC7E;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;AC1Va;AACb;AACA,mBAAO,CAAC,2FAA+B;AACvC,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,kBAAkB,mBAAO,CAAC,iFAA0B;AACpD,qBAAqB,mBAAO,CAAC,+EAAyB;AACtD,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,uBAAuB,mBAAO,CAAC,2GAAuC;AACtE,eAAe,mBAAO,CAAC,2EAAuB;AAC9C,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,UAAU,mBAAO,CAAC,iEAAkB;AACpC,aAAa,mBAAO,CAAC,qFAA4B;AACjD,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,aAAa,uHAA+C;AAC5D,cAAc,mBAAO,CAAC,2GAAuC;AAC7D,qBAAqB,mBAAO,CAAC,6FAAgC;AAC7D,4BAA4B,mBAAO,CAAC,iGAAkC;AACtE,0BAA0B,mBAAO,CAAC,uFAA6B;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,iBAAiB,wBAAwB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,WAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,wCAAwC;AACxC;AACA,CAAC;AACD,oCAAoC;AACpC,oBAAoB,QAAQ;AAC5B,CAAC;AACD,wCAAwC;AACxC,oBAAoB;AACpB,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,yBAAyB,6BAA6B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,cAAc;AACpD;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,K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,uDAAuD,uCAAuC,SAAS,OAAO,kBAAkB,EAAE,aAAa;;AAErL,wCAAwC,gFAAgF,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,iDAAiD,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa;;AAEve,+BAA+B,oCAAoC;;AAEnE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uDAAuD,cAAc;AACrE;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,E;;;;;;;;;;AC/BA;AACA;AACA;AACA,qDAAqD;;AAErD;AACA,MAAM,IAA0C;;AAEhD;AACA,EAAE,iCAAO,EAAE,yEAAQ,EAAE,oCAAE,OAAO;AAAA;AAAA;AAAA,kGAAE;AAChC,EAAE,MAAM,EAIN;AACF,CAAC;;AAED;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;AACA,cAAc,+BAA+B;AAC7C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,0BAA0B;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA,yBAAyB;;AAEzB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC;AACjC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6BAA6B;AAC7B;;AAEA;;AAEA,8CAA8C,OAAO,WAAW;AAChE;AACA;AACA;AACA;AACA,oDAAoD;AACpD,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA,4BAA4B,kBAAkB;AAC9C,EAAE;;AAEF;AACA,4BAA4B,iBAAiB;AAC7C,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,eAAe,oBAAoB;AACnC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,kCAAkC;AAC3C;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,CAAC;;AAED;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,kBAAkB,WAAW,YAAY,gBAAgB;AACnF,8BAA8B,WAAW;AACzC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,kBAAkB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,eAAe;AACnD,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA,KAAK;AACL;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA,KAAK;AACL;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA,yCAAyC,WAAW,EAAE;AACtD;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA,wCAAwC;AACxC,uCAAuC;AACvC,uCAAuC;AACvC,yCAAyC,aAAa;AACtD,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,cAAc,gBAAgB;AAC9B;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8BAA8B;AAC9B;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;;AAEA;AACA,2CAA2C,4BAA4B;AACvE,GAAG;AACH;AACA;;AAEA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA,+BAA+B;AAC/B;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA,+BAA+B;AAC/B;AACA,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,IAAI;;AAEJ,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yCAAyC,QAAQ;;AAEjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ,wBAAwB,QAAQ;;AAEhC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,SAAS,iBAAiB;AAC1B;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gCAAgC;AACvD;AACA;AACA;AACA;AACA,kBAAkB;AAClB,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,cAAc,gBAAgB;AAC9B;;AAEA;AACA;AACA;AACA;;AAEA,8BAA8B,cAAc;;AAE5C;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;;AAEA,EAAE;AACF;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;;AAEA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,EAAE;;AAEF;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,eAAe,cAAc;;AAE7B;AACA;AACA;AACA;;AAEA,eAAe,mBAAmB;;AAElC;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA,mCAAmC,+BAA+B;AAClE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB;;AAEnB;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B;AAC3B,gCAAgC;;AAEhC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,uBAAuB;AAC3D;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,OAAO;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,+CAA+C;;AAExD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;;AAEA,EAAE;;AAEF;;AAEA;AACA;;AAEA;;AAEA,gEAAgE;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA,GAAG;AACH;AACA;;AAEA,EAAE;;AAEF;AACA;AACA,WAAW;AACX,GAAG;AACH;AACA;AACA,WAAW;AACX,GAAG;AACH;AACA;AACA,WAAW;AACX,GAAG;AACH;AACA,WAAW;AACX,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,uBAAuB,KAAK;AAC/D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,yCAAyC;AAClE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uFAAuF;AACvF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN,KAAK;AACL;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,UAAU,SAAS,UAAU;AAC/C,kBAAkB,UAAU,SAAS,UAAU;AAC/C,oBAAoB,qDAAqD;;AAEzE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;AAEH;AACA,EAAE;;AAEF;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA,sCAAsC,QAAQ;AAC9C;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0CAA0C;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,qCAAqC,EAAE;AACxD;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,IAAI;;AAEJ;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,QAAQ;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA,EAAE;;AAEF;;AAEA;;AAEA,2CAA2C,eAAe;;AAE1D;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA,EAAE;;AAEF;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,qDAAqD;;AAErD;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,QAAQ;AAC5C;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,gDAAgD;AAChF;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;;AAEA;;AAEA,EAAE;;AAEF;;AAEA;;AAEA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA,wDAAwD,yBAAyB;AACjF;AACA;;AAEA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA,0CAA0C,yBAAyB;AACnE;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,QAAQ;AACvC;AACA;;AAEA,gDAAgD,mBAAmB;AACnE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,kCAAkC,QAAQ;AAC1C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,EAAE;;AAEF;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,QAAQ;;AAE/C;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mCAAmC,QAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,WAAW;AACX;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,oCAAoC;AACpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,4BAA4B;;AAE3C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,gDAAgD;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,MAAM;AACN;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC,aAAa;AAC/C,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iCAAiC,oBAAoB;AACrD;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA,sDAAsD;AACtD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,mDAAmD,aAAa;;AAEhE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA,oDAAoD,aAAa;AACjE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,gBAAgB,cAAc;AAC9B,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,oCAAoC,0BAA0B;AAC9D;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,IAAI;AACJ,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,kCAAkC;AAClC,EAAE;AACF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,iDAAiD,IAAI;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ,eAAe,YAAY;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8CAA8C;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,yBAAyB;AAC/C;AACA;;AAEA,CAAC;;AAED;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,uBAAuB;AAC7C;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA,iBAAiB,cAAc,oBAAoB,EAAE;;AAErD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,yBAAyB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB;AACtB,wBAAwB;AACxB,2BAA2B;AAC3B,iCAAiC;AACjC,wBAAwB;AACxB,uCAAuC;AACvC,4CAA4C;AAC5C,4CAA4C;AAC5C,8CAA8C;AAC9C,4CAA4C;AAC5C,+CAA+C;AAC/C,wDAAwD;AACxD,kDAAkD;AAClD,qDAAqD;AACrD,oBAAoB;AACpB,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,8CAA8C;AAC9C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,gBAAgB;AAC9C;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA,oEAAoE;AACpE,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,kDAAkD;AAClD;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA,YAAY,uDAAuD;AACnE;AACA;AACA,MAAM,oDAAoD;AAC1D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA,iCAAiC,aAAa,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,uBAAuB,EAAE;AAC/C,0BAA0B,6BAA6B;AACvD,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,4CAA4C,EAAE,GAAG;AACvE,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,sBAAsB,EAAE;AAC9C,0BAA0B,oCAAoC;AAC9D,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,4CAA4C,EAAE,GAAG;AACvE;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,iCAAiC;AACnD;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C;AAC9C,4CAA4C;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA,mBAAmB;AACnB;AACA,YAAY;AACZ;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,GAAG,oDAAoD;AACvD;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;;AAEA,2FAA2F;AAC3F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iCAAiC;AACjC;AACA;AACA,6BAA6B;AAC7B;AACA,gDAAgD;AAChD;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA,mBAAmB,yDAAyD;AAC5E;;AAEA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,qDAAqD;;AAErD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA,mBAAmB;AACnB,+BAA+B;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B,iDAAiD;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gFAAgF;AAChF,GAAG;AACH,kCAAkC;AAClC;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6BAA6B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,yBAAyB;AAC7C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,qBAAqB,yBAAyB;AAC9C;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,yBAAyB;AAC7C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,sBAAsB;AACtC;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA,mEAAmE;AACnE,0DAA0D,kBAAkB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAS,UAAU;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D,2FAA2F;AAC3F;AACA;AACA,mBAAmB,gBAAgB,WAAW;AAC9C;AACA;AACA;AACA,mBAAmB,SAAS,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qHAAqH;AACrH;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8EAA8E;AAC9E;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,kEAAkE;AAClE;AACA,mBAAmB;AACnB;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA,gCAAgC;AAChC;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,KAAK;AACL;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,sBAAsB;AACtB;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,2BAA2B;AAChC;;AAEA;AACA,sBAAsB,iBAAiB;;AAEvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;;AAEA;AACA;;AAEA;;AAEA,6BAA6B;AAC7B;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,sCAAsC,aAAa;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA,qCAAqC,kBAAkB;AACvD,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,wBAAwB;AACxB;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC,aAAa;;AAEhD;AACA,oCAAoC,aAAa;AACjD;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,mCAAmC,iBAAiB;AACpD;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,yCAAyC,kBAAkB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA,kBAAkB,iCAAiC;AACnD;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,oBAAoB,0BAA0B;AAC9C;AACA;AACA,oBAAoB,6BAA6B;AACjD;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA,MAAM;AACN;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,wDAAwD,eAAe;AACvE;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,EAAE;AACF;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,iDAAiD;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA,gDAAgD,aAAa,EAAE;AAC/D,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;AAEJ;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA,cAAc,yBAAyB;AACvC;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,yBAAyB;AACjD,0BAA0B,2BAA2B;;AAErD;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN,KAAK;AACL;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uCAAuC;AACvD;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA,iCAAiC,mBAAmB;AACpD,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA,kCAAkC,mBAAmB;AACrD;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sBAAsB,IAAI,YAAY,IAAI,YAAY,IAAI;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE;AACF,6BAA6B;;AAE7B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;;AAEJ;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM,kBAAkB;AACxB;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,MAAM,qBAAqB;AAC3B;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,iBAAiB,kBAAkB,IAAI,qBAAqB;AAC5D;AACA;AACA,IAAI;;AAEJ;AACA;AACA,MAAM,qBAAqB;AAC3B;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED,CAAC;;AAED;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,uBAAuB;AACzC,kBAAkB,uBAAuB;AACzC,IAAI;AACJ;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA,CAAC;;AAED;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,aAAa,mBAAmB,WAAW;AAC3C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,QAAQ,WAAW;AACnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;;AAEA;;AAEA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,UAAU,QAAQ;AAC/B;AACA;;AAEA,cAAc,WAAW,QAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gBAAgB,mBAAmB,WAAW;AAC9C,gBAAgB,mBAAmB,WAAW;;AAE9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA,oCAAoC;AACpC;AACA;AACA,EAAE;;AAEF;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,WAAW;AACnB,oBAAoB,qBAAqB;AACzC;AACA;;AAEA,mBAAmB,qBAAqB;;AAExC;;AAEA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,iBAAiB;AACjB,iBAAiB;;AAEjB;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,QAAQ,WAAW;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;;;;AAKA,CAAC,G;;;;;;;;;;ACjxkBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,MAAM,KAA0B;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,YAAY;;AAEpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF,oBAAoB;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF,6CAA6C;AAC7C;AACA;AACA,kBAAkB,kCAAkC;AACpD,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,YAAY;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,YAAY;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS;AAClB;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,kCAAkC,IAAI;AACtC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,0BAA0B;AAC1B;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA,gBAAgB,IAAI;;AAEpB;AACA;;AAEA;;AAEA;AACA;AACA,0CAA0C,IAAI;AAC9C;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS;;AAET;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,yBAAyB;AACtC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ,6BAA6B;AAChD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;;AAEA;AACA;AACA,WAAW,gBAAgB;AAC3B,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,gCAAgC,MAAM;AACtC;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,eAAe;;AAEf,SAAS;;AAET;AACA,QAAQ,iCAAiC;AACzC,QAAQ,oBAAoB;AAC5B,QAAQ,sCAAsC;AAC9C,QAAQ;AACR,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,6DAA6D;;AAE7D;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA,8DAA8D;;AAE9D;AACA;AACA;AACA,2CAA2C;;AAE3C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA,8CAA8C;;AAE9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA,iEAAiE,UAAU;AAC3E,sCAAsC,2BAA2B;AACjE;AACA,gCAAgC,MAAM;AACtC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,UAAU;AACpB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,cAAc;AACxB;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA,YAAY,uEAAuE;AACnF;AACA;AACA,YAAY,4BAA4B;AACxC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,4DAA4D;;AAE5D;AACA;AACA;AACA,yCAAyC;;AAEzC;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,QAAQ,SAAS;AACjB;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,iDAAiD;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA,iDAAiD;AACjD,UAAU,4CAA4C;AACtD;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA,CAAC;;;;AAID;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,QAAQ,GAAG;AACX;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;;;AAIA;;AAEA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA,cAAc,SAAS;AACvB;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB,0BAA0B,wBAAwB;;AAElD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA,0CAA0C;AAC1C,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;;;AAIA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU,cAAc;AACxB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA,OAAO;AACP,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wCAAwC,sCAAsC;AAC9E,oCAAoC,uCAAuC;AAC3E,oCAAoC,sCAAsC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,OAAO;AACP;AACA,MAAM;AACN,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC,qCAAqC;AACrC,oCAAoC;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA,EAAE;AACF;;;;;AAKA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uBAAuB,aAAa;AACpC,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;;;AAGA;;AAEA;;;;AAIA;AACA;AACA,GAAG;AACH,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA,CAAC;AACD;;AAEA;;AAEA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,EAAE;AACF;;AAEA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB;AAClB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA,WAAW;;AAEX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc,sBAAsB;AACpC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+DAA+D;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,cAAc;;AAExB;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uCAAuC;AACjE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,uDAAuD;AAC9E;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,+CAA+C;AACpD;AACA;;AAEA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;AACtC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAqC,cAAc;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED,cAAc,qCAAqC;AACnD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,OAAO;AACjB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,QAAQ,+BAA+B;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uCAAuC,OAAO;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC,OAAO;AAC/C;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,SAAS,qCAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA,SAAS,8BAA8B;AACvC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,WAAW;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;;;AAIA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+CAA+C,cAAc,WAAW;AACxE,mBAAmB,UAAU;AAC7B;AACA,sBAAsB,cAAc,sBAAsB,gBAAgB;AAC1E,gBAAgB,WAAW,YAAY;AACvC,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA,6CAA6C;AAC7C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,+DAA+D;AAC3E;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;;AAEf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,kBAAkB,gBAAgB;AAClC;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA,UAAU,OAAO;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;;AAEA,WAAW,SAAS;AACpB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,QAAQ,OAAO;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,iDAAiD,0BAA0B;AAC3E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,gBAAgB;AAC1B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,2BAA2B;AAC3B;AACA,qBAAqB;AACrB;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA;;AAEA,6CAA6C;AAC7C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,gBAAgB;AACzB;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;AACF;AACA;AACA;;AAEA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB,cAAc;AAClC,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,SAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+BAA+B,SAAS;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,UAAU,kBAAkB;AAC5B,WAAW,kBAAkB;AAC7B,cAAc;AACd,CAAC;AACD;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,mBAAmB;AAC3B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;;;AAKD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA,iCAAiC;AACjC;AACA;;AAEA,IAAI;AACJ;;AAEA,IAAI;AACJ;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,KAAK;AACL;AACA;;AAEA;AACA,WAAW,SAAS;AACpB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;;;AAGA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,sCAAsC;AACtC;AACA;AACA;;AAEA;;AAEA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA,UAAU,KAAK;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qCAAqC;;AAEpD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA,aAAa;;AAEb;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb,KAAK;AACL;;AAEA,WAAW;AACX,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB,gDAAgD;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;AACT;;AAEA;;AAEA;AACA;;AAEA;AACA,iBAAiB;AACjB,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC;;AAElC;AACA,sBAAsB;AACtB,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;AACJ;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,mDAAmD;AACnD;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,uBAAuB;AAClC,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,aAAa,uCAAuC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA,EAAE;AACF;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA,cAAc,sDAAsD;AACpE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA,cAAc,mCAAmC;AACjD,eAAe,6DAA6D;AAC5E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;;;AAKF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK,IAA0C;AAC/C,CAAC,iCAAkB,EAAE,mCAAE;AACvB;AACA,EAAE;AAAA,kGAAE;AAC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AwC,eAAe,MAAM,kFAAkF,wCAAwC,eAAe,MAAM,8EAA8E,wCAAwC,eAAe,MAAM,kFAAkF,wCAAwC,eAAe,MAAM,8EAA8E,wCAAwC,eAAe,MAAM,2EAA2E,wCAAwC,eAAe,MAAM,4EAA4E,wCAAwC,eAAe,MAAM,4EAA4E,wCAAwC,eAAe,MAAM,6EAA6E,wCAAwC,eAAe,MAAM,iFAAiF,wCAAwC,eAAe,2DAA2D,wCAAwC,eAAe,2DAA2D,wCAAwC,eAAe,MAAM,+EAA+E,wCAAwC,gBAAgB,aAAa,qBAAqB,8EAA8E,uDAAuD,UAAU,qBAAqB,4GAA4G,0CAA0C,aAAa,qCAAqC,aAAa,gBAAgB,kCAAkC,mCAAmC,mCAAmC,GAAG,GAAG;AACrqV,oC;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa;AACb,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;;AAEA;AACA;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,kBAAkB;AACnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C,QAAQ;AACtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE,KAA0B,oBAAoB,CAAE;AAClD;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC3uBA,UAAU,mBAAO,CAAC,oJAAwE;AAC1F,0BAA0B,mBAAO,CAAC,6HAA2D;;AAE7F;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;;;AAIA,sC;;;;;;;;;;;AClBa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,uDAAuD;;AAEvD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,KAAwC,GAAG,sBAAiB,GAAG,CAAI;;AAEnF;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AA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,mCAAmC,IAAI,61CAA61C,YAAY,WAAW;AACl26d,yC;;;;;;UCDA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCrBA;WACA;WACA;WACA;WACA;WACA,gCAAgC,YAAY;WAC5C;WACA,E;;;;;WCPA;WACA;WACA;WACA;WACA,wCAAwC,yCAAyC;WACjF;WACA;WACA,E;;;;;WCPA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA,CAAC,I;;;;;WCPD,wF;;;;;WCAA;WACA;WACA;WACA,sDAAsD,kBAAkB;WACxE;WACA,+CAA+C,cAAc;WAC7D,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;CACmC;;AACnC;AACA;CAGA;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AAqDO,IAAMA,OAAO,GAAG,OAAhB;AAEPC,MAAM,CAACC,CAAP,GAAWA,mCAAX;AACAD,MAAM,CAACE,MAAP,GAAgBD,mCAAhB;AAEAE,mEAAA,G","file":"music21.debug.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"music21\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"music21\"] = factory();\n\telse\n\t\troot[\"music21\"] = factory();\n})(self, function() {\nreturn ","/**\n * articulations module. See {@link music21.articulations} namespace\n *\n * @namespace music21.articulations\n * @memberof music21\n * @requires music21/prebase\n * @requires vexflow\n * @requires music21/common\n */\nimport Vex from 'vexflow';\n\nimport * as common from './common';\nimport * as prebase from './prebase';\n\nexport enum ArticulationPlacement {\n ABOVE = 'above',\n BELOW = 'below',\n LEFT = 'left',\n RIGHT = 'right',\n STEM_SIDE = 'stemSide',\n NOTE_SIDE = 'noteSide',\n}\n\nexport const ArticulationPlacementToVexFlowModifierPosition = new Map(\n [\n [ArticulationPlacement.ABOVE, Vex.Flow.Modifier.Position.ABOVE],\n [ArticulationPlacement.BELOW, Vex.Flow.Modifier.Position.BELOW],\n [ArticulationPlacement.LEFT, Vex.Flow.Modifier.Position.LEFT],\n [ArticulationPlacement.RIGHT, Vex.Flow.Modifier.Position.RIGHT],\n ]\n);\n\nexport interface VexflowArticulationParams {\n stemDirection?: string;\n}\n\n/**\n * This works the same for music21 Articulations and Expressions\n */\nexport function setPlacementOnVexFlowArticulation(\n vfa: Vex.Flow.Articulation|Vex.Flow.Ornament,\n placement: ArticulationPlacement,\n stemDirection: string,\n) {\n if (placement === undefined) {\n return;\n }\n if ((!stemDirection || stemDirection === 'none')\n && (placement === ArticulationPlacement.STEM_SIDE\n || placement === ArticulationPlacement.NOTE_SIDE)) {\n placement = ArticulationPlacement.ABOVE;\n }\n if (placement === ArticulationPlacement.STEM_SIDE) {\n if (stemDirection === 'up') {\n placement = ArticulationPlacement.ABOVE;\n } else {\n placement = ArticulationPlacement.BELOW;\n }\n } else if (placement === ArticulationPlacement.NOTE_SIDE) {\n if (stemDirection === 'up') {\n placement = ArticulationPlacement.BELOW;\n } else {\n placement = ArticulationPlacement.ABOVE;\n }\n }\n if (ArticulationPlacementToVexFlowModifierPosition.has(placement)) {\n vfa.setPosition(ArticulationPlacementToVexFlowModifierPosition.get(placement));\n }\n}\n\n/**\n * Represents a single articulation, usually in the `.articulations` Array\n * on a {@link music21.note.Note} or something like that.\n *\n * @class Articulation\n * @memberof music21.articulations\n * @property {string} name\n * @property {string} [placement='above']\n * @property {string|undefined} vexflowModifier - the string code to get this accidental in Vexflow\n * @property {number} [dynamicScale=1.0] - multiplier for the dynamic of a note that this is attached to\n * @property {number} [lengthScale=1.0] - multiplier for the length of a note that this is attached to.\n */\nexport class Articulation extends prebase.ProtoM21Object {\n static get className() { return 'music21.articulation.Articulation'; }\n\n name: string;\n placement: ArticulationPlacement = ArticulationPlacement.NOTE_SIDE;\n vexflowModifier: string;\n dynamicScale: number = 1.0;\n lengthScale: number = 1.0;\n\n /**\n * Generates a Vex.Flow.Articulation for this articulation.\n *\n * @returns {Vex.Flow.Articulation}\n */\n vexflow({stemDirection}: VexflowArticulationParams = {}): Vex.Flow.Articulation {\n const vfa = new Vex.Flow.Articulation(this.vexflowModifier);\n setPlacementOnVexFlowArticulation(vfa, this.placement, stemDirection);\n return vfa;\n }\n}\n\n/**\n * base class for articulations that change the length of a note...\n *\n * @class LengthArticulation\n * @memberof music21.articulations\n */\nexport class LengthArticulation extends Articulation {\n static get className() { return 'music21.articulation.LengthArticulation'; }\n\n constructor() {\n super();\n this.name = 'length-articulation';\n }\n}\n\n/**\n * base class for articulations that change the dynamic of a note...\n *\n * @class DynamicArticulation\n * @memberof music21.articulations\n */\nexport class DynamicArticulation extends Articulation {\n static get className() { return 'music21.articulation.DynamicArticulation'; }\n\n constructor() {\n super();\n this.name = 'dynamic-articulation';\n }\n}\n\n/**\n * base class for articulations that change the pitch of a note...\n *\n * @class PitchArticulation\n * @memberof music21.articulations\n */\nexport class PitchArticulation extends Articulation {\n static get className() { return 'music21.articulation.PitchArticulation'; }\n\n constructor() {\n super();\n this.name = 'pitch-articulation';\n }\n}\n\n/**\n * base class for articulations that change the timbre of a note...\n *\n * @class TimbreArticulation\n * @memberof music21.articulations\n */\nexport class TimbreArticulation extends Articulation {\n static get className() { return 'music21.articulation.TimbreArticulation'; }\n\n constructor() {\n super();\n this.name = 'timbre-articulation';\n }\n}\n\n/**\n * 50% louder than usual\n *\n * @class Accent\n * @memberof music21.articulations\n */\nexport class Accent extends DynamicArticulation {\n static get className() { return 'music21.articulation.Accent'; }\n\n constructor() {\n super();\n this.name = 'accent';\n this.vexflowModifier = 'a>';\n this.dynamicScale = 1.5;\n }\n}\n\n/**\n * 100% louder than usual\n *\n * @class StrongAccent\n * @memberof music21.articulations\n */\nexport class StrongAccent extends Accent {\n static get className() { return 'music21.articulation.StrongAccent'; }\n\n constructor() {\n super();\n this.name = 'strong accent';\n this.vexflowModifier = 'a^';\n this.dynamicScale = 2.0;\n }\n}\n\n/**\n * no playback for now.\n *\n * @class Staccato\n * @memberof music21.articulations\n */\nexport class Staccato extends LengthArticulation {\n static get className() { return 'music21.articulation.Staccato'; }\n\n constructor() {\n super();\n this.name = 'staccato';\n this.vexflowModifier = 'a.';\n }\n}\n\n/**\n * no playback for now.\n *\n * @class Staccatissimo\n * @memberof music21.articulations\n */\nexport class Staccatissimo extends Staccato {\n static get className() { return 'music21.articulation.Staccatissimo'; }\n\n constructor() {\n super();\n this.name = 'staccatissimo';\n this.vexflowModifier = 'av';\n }\n}\n\n/**\n * no playback or display for now.\n *\n * @class Spiccato\n * @memberof music21.articulations\n */\nexport class Spiccato extends Staccato {\n static get className() { return 'music21.articulation.Spiccato'; }\n\n constructor() {\n super();\n this.name = 'spiccato';\n this.vexflowModifier = undefined;\n }\n}\n\n/**\n * @class Marcato\n * @memberof music21.articulations\n *\n * should be both a DynamicArticulation and a LengthArticulation\n * TODO(msc): check that `.classes` reflects that in music21j\n */\nexport class Marcato extends DynamicArticulation {\n static get className() { return 'music21.articulation.Marcato'; }\n\n constructor() {\n super();\n common.mixin(LengthArticulation, this);\n this.name = 'marcato';\n this.vexflowModifier = 'a^';\n this.dynamicScale = 1.7;\n }\n}\n\n/**\n * @class Tenuto\n * @memberof music21.articulations\n */\nexport class Tenuto extends LengthArticulation {\n static get className() { return 'music21.articulation.Tenuto'; }\n\n constructor() {\n super();\n this.name = 'tenuto';\n this.vexflowModifier = 'a-';\n }\n}\n","import * as audioSearch from './audioSearch';\n\ninterface RecorderConfig {\n bufferLen?: number,\n callback?: Function,\n type?: string,\n}\n\ninterface CanvasInfo {\n id: string,\n width: number,\n height: number,\n canvasContext: CanvasRenderingContext2D,\n animationFrameID?: number,\n}\n\n/**\n * Adopted from Matt Diamond's recorder.js code MIT License\n */\nexport class Recorder {\n bufferLen: number;\n config: RecorderConfig;\n recording: boolean = false;\n currCallback;\n audioContext: AudioContext; // or webkitAudioContext in Safari\n frequencyCanvasInfo: CanvasInfo;\n waveformCanvasInfo: CanvasInfo;\n analyserNode: any;\n context: BaseAudioContext;\n worker: Worker;\n node: ScriptProcessorNode;\n\n constructor(cfg: RecorderConfig = {}) {\n const config = cfg || {};\n this.bufferLen = config.bufferLen || 4096;\n this.config = config;\n this.recording = false;\n this.currCallback = undefined;\n this.audioContext = audioSearch.config.audioContext;\n this.frequencyCanvasInfo = {\n id: 'frequencyAnalyser',\n width: undefined,\n height: undefined,\n canvasContext: undefined,\n animationFrameID: undefined,\n };\n this.waveformCanvasInfo = {\n id: 'waveformCanvas',\n width: undefined,\n height: undefined,\n canvasContext: undefined,\n };\n this.analyserNode = undefined;\n /**\n *\n * @type {BaseAudioContext|undefined}\n */\n this.context = undefined;\n\n }\n\n /**\n * Start here -- polyfills navigator, runs getUserMedia and then sends to audioStreamConnected\n */\n initAudio() {\n const constraints: MediaStreamConstraints = {\n audio: {\n echoCancellation: false,\n autoGainControl: false,\n noiseSuppression: false,\n },\n video: false,\n };\n\n navigator.mediaDevices.getUserMedia(constraints)\n .then(s => this.audioStreamConnected(s))\n .catch(error => {\n console.log('Error getting audio -- try on google Chrome?');\n console.log(error);\n });\n }\n\n /**\n * After the user has given permission to record, this method is called.\n * It creates a gain point, and then connects the input source to the gain.\n * It connects an analyserNode (fftSize 2048) to the gain.\n *\n * It creates a second gain of 0.0 connected to the destination, so that\n * we're not hearing what we're playing in in an infinite loop (SUCKS to turn this off...)\n *\n * And it calls this.connectSource on the inputPoint so that\n * we can do something with all these wonderful inputs.\n */\n audioStreamConnected(stream) {\n /**\n *\n * @type {GainNode}\n */\n const inputPoint = this.audioContext.createGain();\n\n // Create an AudioNode from the stream.\n const audioInput = this.audioContext.createMediaStreamSource(stream);\n audioInput.connect(inputPoint);\n\n const analyserNode = this.audioContext.createAnalyser();\n analyserNode.fftSize = audioSearch.config.fftSize;\n this.analyserNode = analyserNode;\n inputPoint.connect(analyserNode);\n\n this.connectSource(inputPoint);\n\n const zeroGain = this.audioContext.createGain();\n zeroGain.gain.value = 0.0;\n inputPoint.connect(zeroGain);\n zeroGain.connect(this.audioContext.destination);\n }\n\n /**\n * Creates a worker to receive and process all the messages asynchronously.\n *\n * @param {GainNode} source;\n */\n connectSource(source) {\n /**\n *\n * @type {BaseAudioContext}\n */\n const context = source.context;\n this.context = context;\n this.setNode();\n\n // create a Worker with inline code...\n const workerBlob = new Blob(['(', recorderWorkerJs, ')()'], {\n type: 'application/javascript',\n });\n const workerURL = URL.createObjectURL(workerBlob);\n this.worker = new Worker(workerURL);\n /**\n * When worker sends a message, we just send it to the currentCallback...\n */\n this.worker.onmessage = e => {\n const blob = e.data;\n this.currCallback(blob);\n };\n URL.revokeObjectURL(workerURL);\n\n this.worker.postMessage({\n command: 'init',\n config: {\n sampleRate: this.context.sampleRate,\n },\n });\n\n /**\n * Whenever the ScriptProcessorNode receives enough audio to process\n * (i.e., this.bufferLen stereo samples; default 4096), then it calls onaudioprocess\n * which is set up to send the event's .getChannelData to the WebWorker via a\n * postMessage.\n *\n * The 'record' command sends no message back.\n */\n // should be replaced by workers somehow.\n this.node.onaudioprocess = e => {\n if (!this.recording) {\n return;\n }\n this.worker.postMessage({\n command: 'record',\n buffer: [\n e.inputBuffer.getChannelData(0),\n e.inputBuffer.getChannelData(1),\n ],\n });\n };\n\n source.connect(this.node);\n\n /**\n * polyfill for Chrome error.\n *\n * if the ScriptProcessorNode (this.node) is not connected to an output\n * the \"onaudioprocess\" event is not triggered in Chrome.\n */\n this.node.connect(this.context.destination);\n }\n\n /**\n * Creates a ScriptProcessorNode (preferably) to allow for direct audio processing.\n *\n * Sets it to this.node and returns it.\n */\n setNode() {\n const numInputChannels = 2;\n const numOutputChannels = 2;\n this.node = this.context.createScriptProcessor(\n this.bufferLen,\n numInputChannels,\n numOutputChannels\n );\n return this.node;\n }\n\n /**\n * Configure from another source...\n */\n configure(cfg) {\n for (const prop in cfg) {\n if (Object.hasOwnProperty.call(cfg, prop)) {\n this.config[prop] = cfg[prop];\n }\n }\n }\n\n record() {\n this.recording = true;\n }\n\n stop() {\n this.recording = false;\n }\n\n clear() {\n this.worker.postMessage({ command: 'clear' });\n }\n\n /**\n * Directly get the buffers from the worker and then call cb.\n */\n getBuffers(cb) {\n this.currCallback = cb || this.config.callback;\n this.worker.postMessage({ command: 'getBuffers' });\n }\n\n /**\n * call exportWAV or exportMonoWAV on the worker, then call cb or (if undefined) setupDownload.\n */\n exportWAV(cb, type, isMono) {\n let command = 'exportWAV';\n if (isMono === true) {\n // default false\n command = 'exportMonoWAV';\n }\n this.currCallback = cb || this.config.callback;\n type = type || this.config.type || 'audio/wav';\n if (!this.currCallback) {\n this.currCallback = blob => {\n this.setupDownload(\n blob,\n 'myRecording' + Date.now().toString() + '.wav'\n );\n };\n }\n this.worker.postMessage({\n command,\n type,\n });\n }\n\n exportMonoWAV(cb, type) {\n this.exportWAV(cb, type, true);\n }\n\n setupDownload(\n blob,\n filename: string = 'output.wav',\n elementId: string ='save'\n ) {\n const url = (window.URL || window.webkitURL).createObjectURL(blob);\n const link = document.getElementById(elementId);\n link.href = url;\n link.download = filename;\n }\n\n setContextForCanvasInfo(canvasInfo: CanvasInfo): void {\n if (canvasInfo.canvasContext) {\n return;\n }\n const canvas = document.getElementById(canvasInfo.id);\n if (!canvas) {\n return;\n }\n canvasInfo.width = canvas.width;\n canvasInfo.height = canvas.height;\n canvasInfo.canvasContext = canvas.getContext('2d');\n }\n\n /**\n * Update the Analysers.\n *\n * @param {number} [time]\n */\n updateAnalysers(time) {\n this.setContextForCanvasInfo(this.frequencyCanvasInfo);\n // analyser draw code here\n const SPACING = 3;\n const BAR_WIDTH = 1;\n const numBars = Math.round(this.frequencyCanvasInfo.width / SPACING);\n const freqByteData = new Uint8Array(\n this.analyserNode.frequencyBinCount\n );\n\n this.analyserNode.getByteFrequencyData(freqByteData);\n\n const canvasContext = this.frequencyCanvasInfo.canvasContext;\n canvasContext.clearRect(\n 0,\n 0,\n this.frequencyCanvasInfo.width,\n this.frequencyCanvasInfo.height\n );\n canvasContext.fillStyle = '#F6D565';\n canvasContext.lineCap = 'round';\n const multiplier = this.analyserNode.frequencyBinCount / numBars;\n\n // Draw rectangle for each frequency bin.\n for (let i = 0; i < numBars; ++i) {\n let magnitude = 0;\n const offset = Math.floor(i * multiplier);\n for (let j = 0; j < multiplier; j++) {\n magnitude += freqByteData[offset + j];\n }\n magnitude\n = magnitude\n * (this.frequencyCanvasInfo.height / 256)\n / multiplier;\n canvasContext.fillStyle\n = 'hsl( ' + Math.round(i * 360 / numBars) + ', 100%, 50%)';\n canvasContext.fillRect(\n i * SPACING,\n this.frequencyCanvasInfo.height,\n BAR_WIDTH,\n -1 * magnitude\n );\n }\n\n this.frequencyCanvasInfo.animationFrameID = window.requestAnimationFrame(\n t => this.updateAnalysers(t)\n );\n }\n\n /**\n *\n * @param {number[][]} buffers\n */\n drawWaveformCanvas(buffers) {\n const data = buffers[0]; // one track of stereo recording.\n this.setContextForCanvasInfo(this.waveformCanvasInfo);\n const context = this.waveformCanvasInfo.canvasContext;\n const step = Math.ceil(data.length / this.waveformCanvasInfo.width);\n const amp = this.waveformCanvasInfo.height / 2;\n context.fillStyle = 'silver';\n context.clearRect(\n 0,\n 0,\n this.waveformCanvasInfo.width,\n this.waveformCanvasInfo.height\n );\n for (let i = 0; i < this.waveformCanvasInfo.width; i++) {\n let min = 1.0;\n let max = -1.0;\n for (let j = 0; j < step; j++) {\n const datum = data[i * step + j];\n if (datum < min) {\n min = datum;\n }\n if (datum > max) {\n max = datum;\n }\n }\n context.fillRect(\n i,\n (1 + min) * amp,\n 1,\n Math.max(1, (max - min) * amp)\n );\n }\n }\n\n /**\n * set this as a callback from getBuffers. Returns the source so that a stop() command\n * is possible.\n */\n playBuffers(buffers) {\n const channels = 2;\n const numFrames = buffers[0].length;\n const audioBuffer = this.context.createBuffer(\n channels,\n numFrames,\n this.context.sampleRate\n );\n for (let channel = 0; channel < channels; channel++) {\n const thisChannelBuffer = audioBuffer.getChannelData(channel);\n for (let i = 0; i < numFrames; i++) {\n thisChannelBuffer[i] = buffers[channel][i];\n }\n }\n const source = this.context.createBufferSource();\n source.buffer = audioBuffer;\n source.connect(this.context.destination);\n source.start();\n return source;\n }\n}\n\n/**\n * This code does NOT go through babel, so no arrow functions, let, const, etc.\n */\nconst recorderWorkerJs = `function recorderWorkerJs() {\n /**\n *\n * Rewritten from Matt Diamond's recorderWorker -- MIT License\n */\n RecorderWorker = function RecorderWorker(parentContext) {\n this.parent = parentContext;\n this.recLength = 0;\n this.recBuffersL = [];\n this.recBuffersR = [];\n this.sampleRate = undefined;\n };\n RecorderWorker.prototype.onmessage = function onmessage(e) {\n switch (e.data.command) {\n case 'init':\n this.init(e.data.config);\n break;\n case 'record':\n this.record(e.data.buffer);\n break;\n case 'exportWAV':\n this.exportWAV(e.data.type);\n break;\n case 'exportMonoWAV':\n this.exportMonoWAV(e.data.type);\n break;\n case 'getBuffers':\n this.getBuffers();\n break;\n case 'clear':\n this.clear();\n break;\n default:\n break;\n }\n };\n RecorderWorker.prototype.postMessage = function postMessage(msg) {\n this.parent.postMessage(msg);\n };\n\n RecorderWorker.prototype.init = function init(config) {\n this.sampleRate = config.sampleRate;\n };\n\n RecorderWorker.prototype.record = function record(inputBuffer) {\n var inputBufferL = inputBuffer[0];\n var inputBufferR = inputBuffer[1];\n this.recBuffersL.push(inputBufferL);\n this.recBuffersR.push(inputBufferR);\n this.recLength += inputBufferL.length;\n };\n\n RecorderWorker.prototype.exportWAV = function exportWAV(type) {\n var bufferL = this.mergeBuffers(this.recBuffersL);\n var bufferR = this.mergeBuffers(this.recBuffersR);\n var interleaved = this.interleave(bufferL, bufferR);\n var dataview = this.encodeWAV(interleaved);\n var audioBlob = new Blob([dataview], { 'type': type });\n\n this.postMessage(audioBlob);\n };\n\n RecorderWorker.prototype.exportMonoWAV = function exportMonoWAV(type) {\n var bufferL = this.mergeBuffers(this.recBuffersL);\n var dataview = this.encodeWAV(bufferL);\n var audioBlob = new Blob([dataview], { 'type': type });\n\n this.postMessage(audioBlob);\n };\n\n RecorderWorker.prototype.mergeBuffers = function mergeBuffers(recBuffers) {\n var result = new Float32Array(this.recLength);\n var offset = 0;\n for (var i = 0; i < recBuffers.length; i++) {\n result.set(recBuffers[i], offset);\n offset += recBuffers[i].length;\n }\n return result;\n };\n\n RecorderWorker.prototype.getBuffers = function getBuffers() {\n var buffers = [];\n buffers.push(this.mergeBuffers(this.recBuffersL));\n buffers.push(this.mergeBuffers(this.recBuffersR));\n this.postMessage(buffers);\n };\n\n RecorderWorker.prototype.clear = function clear() {\n this.recLength = 0;\n this.recBuffersL = [];\n this.recBuffersR = [];\n }\n\n RecorderWorker.prototype.interleave = function interleave(inputL, inputR) {\n var combinedLength = inputL.length + inputR.length;\n var result = new Float32Array(combinedLength);\n\n var index = 0;\n var inputIndex = 0;\n\n while (index < combinedLength) {\n result[index++] = inputL[inputIndex];\n result[index++] = inputR[inputIndex];\n inputIndex++;\n }\n return result;\n }\n RecorderWorker.prototype.encodeWAV = function encodeWAV(samples, mono) {\n var buffer = new ArrayBuffer(44 + (samples.length * 2));\n var view = new DataView(buffer);\n\n /* RIFF identifier */\n writeString(view, 0, 'RIFF');\n\n /* file length */\n view.setUint32(4, 32 + samples.length * 2, true);\n\n /* RIFF type */\n writeString(view, 8, 'WAVE');\n\n /* format chunk identifier */\n writeString(view, 12, 'fmt ');\n\n /* format chunk length */\n view.setUint32(16, 16, true);\n\n /* sample format (raw) */\n view.setUint16(20, 1, true);\n\n /* channel count */\n view.setUint16(22, mono ? 1 : 2, true);\n\n /* sample rate */\n view.setUint32(24, this.sampleRate, true);\n\n /* byte rate (sample rate * block align) */\n view.setUint32(28, this.sampleRate * 4, true);\n\n /* block align (channel count * bytes per sample) */\n view.setUint16(32, 4, true);\n\n /* bits per sample */\n view.setUint16(34, 16, true);\n\n /* data chunk identifier */\n writeString(view, 36, 'data');\n\n /* data chunk length */\n view.setUint32(40, samples.length * 2, true);\n\n floatTo16BitPCM(view, 44, samples);\n\n return view;\n }\n\n function floatTo16BitPCM(output, offset, input) {\n for (var i = 0; i < input.length; i++, offset += 2) {\n var s = Math.max(-1, Math.min(1, input[i]));\n output.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7FFF, true);\n }\n }\n\n function writeString(view, offset, string) {\n for (var i = 0; i < string.length; i++) {\n view.setUint8(offset + i, string.charCodeAt(i));\n }\n }\n\n var recordWorker = new RecorderWorker(this);\n this.onmessage = (function mainOnMessage(e) { recordWorker.onmessage(e) }).bind(this);\n}`;\n","/**\n * audioSearch module. See music21.audioSearch namespace\n *\n * @exports music21/audioSearch\n * @memberof music21\n * @requires music21/pitch\n * @requires music21/common\n */\nimport * as MIDI from 'midicube';\nimport * as common from './common';\n\n// functions based on the prototype created by Chris Wilson's MIT License version\n// and on Jordi Bartolome Guillen's audioSearch module for music21\n\n// TODO(msc): Rewrite as a class -- config is just a class in disguise\n\nclass _ConfigSingletonCreator {\n fftSize: number = 2048;\n AudioContextCaller: any;\n _audioContext: AudioContext = null;\n animationFrameCallbackId: number =-1;\n sampleBuffer: Float32Array = null;\n currentAnalyser;\n minFrequency: number = 55;\n maxFrequency: number =1050;\n pitchSmoothingSize: number =40;\n lastPitchClassesDetected: number[] = [];\n lastPitchesDetected: number[] = [];\n lastCentsDeviationsDetected: number[] = [];\n\n constructor() {\n this.AudioContextCaller = window.AudioContext || ( window).webkitAudioContext;\n }\n\n get audioContext() {\n if (this._audioContext !== null) {\n return this._audioContext;\n } else {\n // AudioContext should be a singleton, but MIDI reports loaded before it is!\n if (\n MIDI !== undefined\n && MIDI.WebAudio !== undefined\n && MIDI.WebAudio.getContext() !== undefined\n ) {\n ( window).globalAudioContext = MIDI.WebAudio.getContext();\n } else if (typeof ( window).globalAudioContext === 'undefined') {\n ( window).globalAudioContext = new this.AudioContextCaller();\n }\n this._audioContext = ( window).globalAudioContext;\n return this._audioContext;\n }\n }\n\n set audioContext(ac: AudioContext) {\n this._audioContext = ac;\n }\n}\n\nexport const config = new _ConfigSingletonCreator();\n\n/**\n * Note: audioRecording uses the newer getUserMedia routines, so\n * this should be ported to be similar to there.\n *\n * @function music21.audioSearch.getUserMedia\n * @memberof music21.audioSearch\n * @param {Object} dictionary - optional dictionary to fill\n * @param {function} callback - callback on success\n * @param {function} error - callback on error\n */\nexport function getUserMedia(dictionary, callback, error) {\n if (error === undefined) {\n /* eslint no-alert: \"off\"*/\n error = () => {\n alert(\n 'navigator.getUserMedia either not defined (Safari, IE) or denied.'\n );\n };\n }\n if (callback === undefined) {\n callback = mediaStream => {\n userMediaStarted(mediaStream);\n };\n }\n const n = navigator;\n // need to polyfill navigator, or binding problems are hard...\n // noinspection JSUnresolvedVariable\n n.getUserMedia\n = n.getUserMedia\n || n.webkitGetUserMedia\n || n.mozGetUserMedia\n || n.msGetUserMedia;\n\n if (n.getUserMedia === undefined) {\n error();\n }\n if (dictionary === undefined) {\n dictionary = {\n audio: {\n mandatory: {},\n optional: [],\n },\n };\n }\n n.getUserMedia(dictionary, callback, error);\n}\n\nexport function userMediaStarted(audioStream) {\n /**\n * This function which patches Safari requires some time to get started\n * so we call it on object creation.\n */\n config.sampleBuffer = new Float32Array(config.fftSize / 2);\n const mediaStreamSource = config.audioContext.createMediaStreamSource(\n audioStream\n );\n const analyser = config.audioContext.createAnalyser();\n analyser.fftSize = config.fftSize;\n mediaStreamSource.connect(analyser);\n config.currentAnalyser = analyser;\n animateLoop();\n}\n\nexport const animateLoop = () => {\n config.currentAnalyser.getFloatTimeDomainData(\n config.sampleBuffer\n );\n // returns best frequency or -1\n const frequencyDetected = autoCorrelate(\n config.sampleBuffer,\n config.audioContext.sampleRate,\n config.minFrequency,\n config.maxFrequency\n );\n const retValue = sampleCallback(frequencyDetected);\n // callback can be anything.\n // noinspection JSIncompatibleTypesComparison\n if (retValue !== -1) {\n config.animationFrameCallbackId = window.requestAnimationFrame(\n animateLoop\n );\n }\n};\n\nexport function smoothPitchExtraction(frequency) {\n if (frequency === -1) {\n config.lastPitchClassesDetected.shift();\n config.lastPitchesDetected.shift();\n config.lastCentsDeviationsDetected.shift();\n } else {\n const [midiNum, centsOff] = midiNumDiffFromFrequency(\n frequency\n );\n if (\n config.lastPitchClassesDetected.length\n > config.pitchSmoothingSize\n ) {\n config.lastPitchClassesDetected.shift();\n config.lastPitchesDetected.shift();\n config.lastCentsDeviationsDetected.shift();\n }\n config.lastPitchClassesDetected.push(midiNum % 12);\n config.lastPitchesDetected.push(midiNum);\n config.lastCentsDeviationsDetected.push(centsOff);\n }\n const mostCommonPitchClass = common.statisticalMode(\n config.lastPitchClassesDetected\n );\n if (mostCommonPitchClass === null) {\n return [-1, 0];\n }\n const pitchesMatchingClass = [];\n const centsMatchingClass = [];\n for (let i = 0; i < config.lastPitchClassesDetected.length; i++) {\n if (config.lastPitchClassesDetected[i] === mostCommonPitchClass) {\n pitchesMatchingClass.push(config.lastPitchesDetected[i]);\n centsMatchingClass.push(config.lastCentsDeviationsDetected[i]);\n }\n }\n const mostCommonPitch = common.statisticalMode(pitchesMatchingClass);\n\n // find cents difference; weighing more recent samples more...\n let totalSamplePoints = 0;\n let totalSample = 0;\n for (let j = 0; j < centsMatchingClass.length; j++) {\n const weight = (j ** 2) + 1;\n totalSample += weight * centsMatchingClass[j];\n totalSamplePoints += weight;\n }\n const centsOff = Math.floor(totalSample / totalSamplePoints);\n return [mostCommonPitch, centsOff];\n}\n\nexport function sampleCallback(frequency) {\n // noinspection JSUnusedLocalSymbols\n const [unused_midiNum, unused_centsOff] = smoothPitchExtraction(\n frequency\n );\n return 0;\n}\n\n// from Chris Wilson. Replace with Jordi's\nexport function autoCorrelate(\n buf,\n sampleRate,\n minFrequency,\n maxFrequency\n) {\n const SIZE = buf.length;\n const MAX_SAMPLES = Math.floor(SIZE / 2);\n if (minFrequency === undefined) {\n minFrequency = 0;\n }\n if (maxFrequency === undefined) {\n maxFrequency = sampleRate;\n }\n\n let best_offset = -1;\n let best_correlation = 0;\n let rms = 0;\n let foundGoodCorrelation = false;\n const correlations = new Array(MAX_SAMPLES);\n\n for (let i = 0; i < SIZE; i++) {\n const val = buf[i];\n rms += val * val;\n }\n rms = Math.sqrt(rms / SIZE);\n if (rms < 0.01) {\n return -1;\n } // not enough signal\n\n let lastCorrelation = 1;\n for (let offset = 0; offset < MAX_SAMPLES; offset++) {\n let correlation = 0;\n const offsetFrequency = sampleRate / offset;\n if (offsetFrequency < minFrequency) {\n break;\n }\n if (offsetFrequency > maxFrequency) {\n continue;\n }\n\n for (let i = 0; i < MAX_SAMPLES; i++) {\n correlation += Math.abs(buf[i] - buf[i + offset]);\n }\n correlation = 1 - correlation / MAX_SAMPLES;\n correlations[offset] = correlation; // store it, for the tweaking we need to do below.\n if (correlation > 0.9 && correlation > lastCorrelation) {\n foundGoodCorrelation = true;\n if (correlation > best_correlation) {\n best_correlation = correlation;\n best_offset = offset;\n }\n } else if (foundGoodCorrelation) {\n // short-circuit - we found a good correlation, then a bad one, so we'd just be seeing copies from here.\n // Now we need to tweak the offset - by interpolating between the values to the left and right of the\n // best offset, and shifting it a bit. This is complex, and HACKY in this code (happy to take PRs!) -\n // we need to do a curve fit on correlations[] around best_offset in order to better determine precise\n // (anti-aliased) offset.\n\n // we know best_offset >=1,\n // since foundGoodCorrelation cannot go to true until the second pass (offset=1), and\n // we can't drop into this clause until the following pass (else if).\n const shift\n = (correlations[best_offset + 1]\n - correlations[best_offset - 1])\n / correlations[best_offset];\n return sampleRate / (best_offset + 8 * shift);\n }\n lastCorrelation = correlation;\n }\n if (best_correlation > 0.01) {\n // console.log(\"f = \" + sampleRate/best_offset + \"Hz (rms: \" + rms + \" confidence: \" + best_correlation + \")\")\n return sampleRate / best_offset;\n }\n return -1;\n // var best_frequency = sampleRate/best_offset;\n}\n\n/**\n *\n * @function midiNumDiffFromFrequency\n * @param {Number} frequency\n * @returns {Array} [miniNumber, centsOff]\n */\nexport function midiNumDiffFromFrequency(\n frequency\n) {\n const midiNumFloat = 12 * (Math.log(frequency / 440) / Math.log(2)) + 69;\n const midiNum = Math.round(midiNumFloat);\n const centsOff = Math.round(100 * (midiNumFloat - midiNum));\n return [midiNum, centsOff];\n}\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/bar -- Barline objects\n *\n * Copyright (c) 2013-19, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–19, Michael Scott Cuthbert and cuthbertLab\n *\n */\nimport * as base from './base';\nimport { Music21Exception } from './exceptions21';\n\nconst barTypeList = [\n 'regular', 'dotted', 'dashed', 'heavy', 'double', 'final',\n 'heavy-light', 'heavy-heavy', 'tick', 'short', 'none',\n];\nconst barTypeDict = {\n 'light-light': 'double',\n 'light-heavy': 'final',\n};\n\nconst reverseBarTypeDict = {\n 'double': 'light-light',\n 'final': 'light-heavy',\n};\n\nexport class BarException extends Music21Exception {}\n\nfunction typeToMusicXMLBarStyle(value: string): string {\n if (reverseBarTypeDict[value] !== undefined) {\n return reverseBarTypeDict[value];\n } else {\n return value;\n }\n}\n\nfunction standardizeBarType(value: string='regular'): string {\n value = value.toLowerCase();\n\n if (barTypeList.includes(value)) {\n return value;\n }\n if (barTypeDict[value] !== undefined) {\n return barTypeDict[value];\n }\n throw new BarException(`cannot process style: ${value}`);\n}\n\nexport class Barline extends base.Music21Object {\n _type: string;\n location: string;\n\n static get className() { return 'music21.bar.Barline'; }\n\n constructor(type='regular', location='right') {\n super();\n\n this.type = type;\n this.location = location; // left, right, middle, None\n }\n\n get type(): string {\n return this._type;\n }\n\n set type(v: string) {\n this._type = standardizeBarType(v);\n }\n\n musicXMLBarStyle(): string {\n return typeToMusicXMLBarStyle(this.type);\n }\n}\n\nexport default Barline;\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/base -- objects in base in music21p routines\n *\n * does not load the other modules.\n *\n * Copyright (c) 2013-19, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–19, Michael Scott Cuthbert and cuthbertLab\n *\n * module for Music21Objects, see {@link music21.base}\n *\n * @requires music21/common\n * @requires music21/duration\n * @requires music21/prebase\n * @requires music21/sites\n * @exports music21/base\n * @namespace music21.base\n * @memberof music21\n */\nimport * as common from './common';\nimport * as derivation from './derivation';\nimport * as duration from './duration';\nimport * as editorial from './editorial';\nimport * as prebase from './prebase';\nimport * as sites from './sites';\n\n// imports for typing only\nimport { Stream, Measure } from './stream';\nimport {Music21Exception, StreamException} from './exceptions21';\nimport { TimeSignature } from './meter';\n\n\ndeclare interface StreamRecursionLike {\n recursionType: string;\n}\n\n/**\n * Base class for any object that can be placed in a {@link Stream}.\n *\n * @property {Stream} [activeSite] - hardlink to a\n * {@link Stream} containing the element.\n * @property {number} classSortOrder - Default sort order for this class\n * (default 20; override in other classes). Lower numbered objects will sort\n * before other objects in the staff if priority and offset are the same.\n * @property {music21.duration.Duration} duration - the duration (object) for\n * the element. (can be set with a quarterLength also)\n * @property {string[]} groups - An Array of strings representing group\n * (equivalent to css classes) to assign to the object. (default [])\n * @property {boolean} isMusic21Object - true\n * @property {boolean} isStream - false\n * @property {number} offset - offset from the beginning of the stream (in quarterLength)\n * @property {number} priority - The priority (lower = earlier or more left) for\n * elements at the same offset. (default 0)\n */\nexport class Music21Object extends prebase.ProtoM21Object {\n static get className() { return 'music21.base.Music21Object'; }\n\n classSortOrder: number = 20; // default;\n protected _activeSite: any;\n protected _activeSiteStoredOffset: number = 0;\n protected _naiveOffset: number = 0;\n // _derivation = undefined;\n // _style = undefined;\n protected _editorial: editorial.Editorial;\n protected _duration: duration.Duration;\n protected _derivation: derivation.Derivation;\n protected _priority: number = 0;\n id: number|string = 0;\n groups: string[] = []; // custom object in m21p\n sites: sites.Sites;\n isMusic21Object: boolean = true;\n isStream: boolean = false;\n // beat, etc.\n // lots to do...\n\n constructor(keywords={}) {\n super();\n this._duration = new duration.Duration(0.0);\n this.id = sites.getId(this);\n this.sites = new sites.Sites();\n this._cloneCallbacks._activeSite = false;\n this._cloneCallbacks._activeSiteStoredOffset = false;\n this._cloneCallbacks._derivation = function Music21Music21Object_cloneCallbacks_derivation(\n keyName,\n newObj,\n self,\n deep,\n memo\n ) {\n const newDerivation = new derivation.Derivation(newObj);\n newDerivation.origin = self;\n newDerivation.method = 'clone';\n newObj[keyName] = newDerivation;\n };\n\n // noinspection JSUnusedLocalSymbols\n this._cloneCallbacks.sites = function Music21Object_cloneCallbacks_sites(\n keyName,\n newObj,\n self,\n deep,\n memo\n ) {\n newObj.sites = new sites.Sites();\n };\n }\n\n /**\n * Override clone on prebase to add a derivation.\n */\n clone(deep: boolean = true, memo=undefined): this {\n const ret: this = super.clone(deep, memo);\n const newDerivation = new derivation.Derivation(ret);\n newDerivation.origin = this;\n newDerivation.method = 'clone'; // '__deepcopy__' in m21p\n ret.derivation = newDerivation;\n return ret;\n }\n\n\n stringInfo(): string {\n let id16 = this.id;\n if (typeof id16 === 'number') {\n const idNumber = id16;\n id16 = idNumber.toString(16);\n while (id16.length < 4) {\n id16 = '0' + id16;\n }\n id16 = '0x' + id16;\n }\n return id16;\n }\n\n get activeSite() {\n return this._activeSite;\n }\n\n set activeSite(site) {\n if (site === undefined) {\n this._activeSite = undefined;\n this._activeSiteStoredOffset = undefined;\n } else {\n let offset: number;\n try {\n offset = site.elementOffset(this);\n } catch (e) {\n throw new sites.SitesException(\n 'activeSite cannot be set for an object not in the stream'\n );\n }\n this._activeSite = site;\n this._activeSiteStoredOffset = offset;\n }\n }\n\n get derivation(): derivation.Derivation {\n if (this._derivation === undefined) {\n this._derivation = new derivation.Derivation(this);\n }\n return this._derivation;\n }\n\n set derivation(newDerivation: derivation.Derivation) {\n this._derivation = newDerivation;\n }\n\n get editorial(): editorial.Editorial {\n if (this._editorial === undefined) {\n this._editorial = new editorial.Editorial();\n }\n return this._editorial;\n }\n\n set editorial(newEditorial: editorial.Editorial) {\n this._editorial = newEditorial;\n }\n\n get hasEditorialInformation() : boolean {\n return (this._editorial !== undefined);\n }\n\n get measureNumber() {\n if (this.activeSite !== undefined && this.activeSite.classes.includes('Measure')) {\n const activeMeasure = this.activeSite;\n return activeMeasure.number;\n } else {\n const m = this.sites.getObjByClass('Measure');\n if (m !== undefined) {\n return ( m).number;\n } else {\n return undefined;\n }\n }\n }\n\n /**\n * Try to obtain the nearest Measure that contains this object,\n and return the offset of this object within that Measure.\n\n If a Measure is found, and that Measure has padding\n defined as `paddingLeft` (for pickup measures, etc.), padding will be added to the\n native offset gathered from the object.\n\n */\n _getMeasureOffset(\n {includeMeasurePadding = true}: {includeMeasurePadding?: boolean} = {}\n ): number {\n const activeS: Stream = this.activeSite;\n let offsetLocal: number;\n if (activeS !== undefined && activeS.isMeasure) {\n offsetLocal = activeS.elementOffset(this);\n if (includeMeasurePadding) {\n offsetLocal += (activeS as Measure).paddingLeft;\n }\n } else {\n const m: Measure = this.getContextByClass('Measure', {sortByCreationTime: true});\n if (m !== undefined) {\n try {\n offsetLocal = m.elementOffset(this);\n if (includeMeasurePadding) {\n offsetLocal += m.paddingLeft;\n }\n } catch (e) {\n offsetLocal = this.offset;\n }\n } else {\n offsetLocal = this.offset;\n }\n }\n return offsetLocal;\n }\n\n get offset(): number {\n if (this.activeSite === undefined) {\n return this._naiveOffset;\n } else {\n return this.activeSite.elementOffset(this);\n }\n }\n\n set offset(newOffset: number) {\n if (this.activeSite === undefined) {\n this._naiveOffset = newOffset;\n } else {\n this.activeSite.setElementOffset(this, newOffset);\n }\n }\n\n get priority(): number {\n return this._priority;\n }\n\n set priority(p: number) {\n this._priority = p;\n }\n\n get duration(): duration.Duration {\n return this._duration;\n }\n\n set duration(newDuration: duration.Duration) {\n if (typeof newDuration === 'object') {\n this._duration = newDuration;\n // common errors below...\n } else if (typeof newDuration === 'number') {\n this._duration.quarterLength = newDuration;\n } else if (typeof newDuration === 'string') {\n this._duration.type = newDuration;\n }\n }\n\n get quarterLength(): number {\n return this.duration.quarterLength;\n }\n\n set quarterLength(ql: number) {\n this.duration.quarterLength = ql;\n }\n\n mergeAttributes(other) {\n // id;\n this.groups = other.groups.slice();\n return this;\n }\n\n /**\n * Return the offset of this element in a given site -- use .offset if you are sure that\n * site === activeSite.\n *\n * Raises an Error if not in site.\n *\n * Does not change activeSite or .offset\n *\n * @param {Stream} site\n * @param {boolean} [stringReturns=false] -- allow strings to be returned\n * @returns {number|string|undefined}\n */\n getOffsetBySite(\n site: Stream|undefined = undefined,\n stringReturns: boolean=false\n ): number|string|undefined {\n if (site === undefined) {\n return this._naiveOffset;\n }\n return site.elementOffset(this, stringReturns);\n }\n\n /**\n * setOffsetBySite - sets the offset for a given Stream\n *\n * @param {Stream} site Stream object\n * @param {number} value offset\n */\n setOffsetBySite(\n site: Stream|undefined,\n value: number\n ) {\n if (site !== undefined) {\n site.setElementOffset(this, value);\n } else {\n this._naiveOffset = value;\n }\n }\n\n\n /**\n * For an element which may not be in site, but might be in a Stream\n * in site (or further in streams), find the cumulative offset of the\n * clement in that site.\n *\n * See also music21.stream.iterator.RecursiveIterator.currentHierarchyOffset for\n * a method that is about 10x faster when running through a recursed stream.\n *\n * @param {Stream} site\n * @returns {number|undefined}\n */\n getOffsetInHierarchy(site: Stream): number|undefined {\n try {\n return this.getOffsetBySite(site);\n } catch (e) {} // eslint-disable-line no-empty\n // noinspection JSUnusedLocalSymbols\n for (const [csSite, csOffset, unused_csRecursionType] of this.contextSites()) {\n if (csSite === site) {\n return csOffset;\n }\n }\n throw new Error(`Element ${this} is not in hierarchy of ${site}`);\n }\n\n // ---------- Contexts -------------\n\n getContextByClass(\n className,\n options={}\n ) {\n const params = {\n getElementMethod: 'getElementAtOrBefore',\n sortByCreationTime: false,\n };\n common.merge(params, options);\n\n const getElementMethod = params.getElementMethod;\n const sortByCreationTime = params.sortByCreationTime;\n\n if (className !== undefined && !(className instanceof Array)) {\n className = [className];\n }\n if (\n getElementMethod.includes('At')\n && this.isClassOrSubclass(className)\n ) {\n return this;\n }\n\n for (const [site, positionStart, searchType] of this.contextSites({\n returnSortTuples: true,\n sortByCreationTime,\n })) {\n if (getElementMethod.includes('At')\n && site.isClassOrSubclass(className)) {\n return site;\n }\n\n if (searchType === 'elementsOnly' || searchType === 'elementsFirst') {\n const contextEl = getContextByClassPayloadExtractor(\n site,\n false,\n positionStart,\n getElementMethod,\n className\n );\n if (contextEl !== undefined) {\n return contextEl;\n }\n } else if (searchType !== 'elementsOnly') {\n if (getElementMethod.includes('After')\n && (className === undefined\n || site.isClassOrSubclass(className))) {\n if (!getElementMethod.includes('NotSelf')\n && this !== site) {\n return site;\n }\n }\n const contextEl = getContextByClassPayloadExtractor(\n site,\n 'semiFlat',\n positionStart,\n getElementMethod,\n className\n );\n if (contextEl !== undefined) {\n return contextEl;\n }\n if (getElementMethod.includes('Before')\n && (className === undefined\n || site.isClassOrSubclass(className))) {\n if (!getElementMethod.includes('NotSelf')\n || this !== site) {\n return site;\n }\n }\n }\n }\n\n return undefined;\n }\n\n * contextSites(options={}) {\n const params = {\n callerFirst: undefined,\n memo: new Map(),\n offsetAppend: 0.0,\n sortByCreationTime: false,\n priorityTarget: undefined,\n returnSortTuples: false,\n followDerivation: true,\n };\n common.merge(params, options);\n const memo = params.memo;\n if (params.callerFirst === undefined) {\n params.callerFirst = this;\n if (this.isStream && !(memo.has(this))) {\n const streamThis = this;\n const recursionType = streamThis.recursionType;\n yield [this, 0.0, recursionType];\n }\n memo.set(this, true);\n }\n\n if (params.priorityTarget === undefined && !params.sortByCreationTime) {\n params.priorityTarget = this.activeSite;\n }\n const topLevel = this;\n for (const siteObj of this.sites.yieldSites(\n params.sortByCreationTime,\n params.priorityTarget,\n true // excludeNone\n )) {\n if (memo.has(siteObj)) {\n continue;\n }\n if (siteObj.classes.includes('SpannerStorage')) {\n continue;\n }\n\n // let offset = this.getOffsetBySite(siteObj);\n // followDerivation;\n let offsetInStream: number;\n try {\n offsetInStream = siteObj.elementOffset(this);\n } catch (e) {\n console.error(`${this + ''} is not in ${siteObj + ''}`);\n continue;\n }\n\n const newOffset = offsetInStream + params.offsetAppend;\n const positionInStream = newOffset;\n const recursionType = siteObj.recursionType;\n yield [siteObj, positionInStream, recursionType];\n memo.set(siteObj, true);\n\n const newParams = {\n callerFirst: params.callerFirst,\n memo,\n offsetAppend: positionInStream, // .offset\n returnSortTuples: true, // always!\n sortByCreationTime: params.sortByCreationTime,\n };\n for (const [\n topLevelInner,\n inStreamPos,\n recurType\n ] of siteObj.contextSites(newParams)) {\n const inStreamOffset = inStreamPos; // .offset;\n // const hypotheticalPosition = inStreamOffset; // more complex w/ sortTuples\n\n if (!memo.has(topLevelInner)) {\n // if returnSortTuples...\n // else\n yield [topLevelInner, inStreamOffset, recurType];\n memo.set(topLevelInner, true);\n }\n }\n }\n // if followDerivation...\n if (params.followDerivation) {\n for (const derivedObject of topLevel.derivation.chain()) {\n for (const [derivedSite, derivedOffset, derivedRecurseType]\n of derivedObject.contextSites({\n callerFirst: undefined,\n memo,\n offsetAppend: 0.0,\n returnSortTuples: true,\n sortByCreationTime: params.sortByCreationTime,\n })) {\n const offsetAdjustedCsTuple = [\n derivedSite,\n derivedOffset + params.offsetAppend,\n derivedRecurseType,\n ];\n yield offsetAdjustedCsTuple;\n }\n }\n }\n }\n\n _getTimeSignatureForBeat(): TimeSignature {\n // note: getContextByClass does not full support BeforeOffset yet.\n const ts: TimeSignature = this.getContextByClass(\n 'TimeSignature', {getElementMethod: 'getElementAtOrBeforeOffset'}\n );\n if (ts === undefined) {\n throw new Music21Exception('this object does not have a TimeSignature in Sites');\n }\n return ts;\n }\n\n get beat(): number {\n try {\n const ts = this._getTimeSignatureForBeat();\n return ts.getBeatProportion(ts.getMeasureOffsetOrMeterModulusOffset(this));\n } catch (e) {\n return NaN;\n }\n }\n\n /*\n Given an object and a number, run append that many times on\n a deepcopy of the object.\n numberOfTimes should of course be a positive integer.\n\n a = stream.Stream()\n n = note.Note('D--')\n n.duration.type = 'whole'\n a.repeatAppend(n, 10)\n */\n\n repeatAppend(this, item, numberOfTimes) {\n let unused = null;\n try {\n unused = item.isStream;\n } catch (AttributeError) {\n throw new StreamException('to put a non Music21Object in a stream, '\n + 'create a music21.ElementWrapper for the item');\n\n }\n for (let i = 0; i < numberOfTimes; i++) {\n this.append(item.clone(true));\n }\n }\n}\n\nfunction getContextByClassPayloadExtractor(\n useSite: Stream,\n flatten: boolean|string, // true, false, or semiflat\n positionStart: number,\n getElementMethod: string,\n classList: string[]\n) {\n // this should all be done as a tree...\n // do not use .flat or .semiFlat so as not\n // to create new sites.\n\n // conflict between two linters requires setting lastElement to undefined.\n let lastElement = undefined; // eslint-disable-line no-undef-init\n const useSiteElements = useSite.elements; // we want sorting.\n\n for (let i = 0; i < useSiteElements.length; i++) {\n const thisElement = useSiteElements[i];\n const matchClass: boolean = thisElement.isClassOrSubclass(classList);\n if (flatten === false && !matchClass) {\n continue;\n } else if (!thisElement.isStream && !matchClass) {\n continue;\n }\n const indexOffset = useSite.elementOffset(thisElement);\n\n // thisElement is a stream or has the appropriate class...\n // first check normal elements\n if (getElementMethod.includes('Before')\n && indexOffset >= positionStart) {\n if (getElementMethod.includes('At')\n && lastElement === undefined) {\n lastElement = thisElement;\n } else if (lastElement !== undefined\n && lastElement.isClassOrSubclass(classList)) {\n lastElement.activeSite = useSite;\n return lastElement;\n } else if (matchClass) {\n thisElement.activeSite = useSite;\n return thisElement;\n }\n } else {\n lastElement = thisElement;\n }\n if (getElementMethod.includes('After')\n && indexOffset > positionStart\n && matchClass) {\n thisElement.activeSite = useSite;\n return thisElement;\n }\n // now check stream... already filtered out flatten == false;\n if (thisElement.isStream) {\n const potentialElement = getContextByClassPayloadExtractor(\n thisElement,\n flatten,\n positionStart + indexOffset,\n getElementMethod,\n classList\n );\n if (potentialElement !== undefined) {\n return potentialElement;\n }\n }\n }\n if (lastElement !== undefined && lastElement.isClassOrSubclass(classList)) {\n lastElement.activeSite = useSite;\n return lastElement;\n } else {\n return undefined;\n }\n}\n\n\n\n// TODO(msc) -- ElementWrapper\n\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/beam -- Beams and Beam class\n *\n * Copyright (c) 2013-19, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–19, Michael Scott Cuthbert and cuthbertLab\n *\n * Module holding beam materials. See {@link music21.beam} namespace.\n * {@link music21.beam.Beam} and {music21.beam.Beams} objects\n *\n * @exports music21/beam\n * @namespace music21.beam\n * @memberof music21\n * @requires music21/prebase\n * @requires music21/duration\n */\nimport { Music21Exception } from './exceptions21';\n\nimport * as prebase from './prebase';\nimport * as duration from './duration';\n\nexport const validBeamTypes = {\n start: true,\n stop: true,\n continue: true,\n partial: true,\n};\n\nexport const beamableDurationTypes = [\n duration.typeFromNumDict[8],\n duration.typeFromNumDict[16], duration.typeFromNumDict[32],\n duration.typeFromNumDict[64], duration.typeFromNumDict[128],\n duration.typeFromNumDict[256],\n];\n\n\n/**\n * Object representing a single beam (e.g., a 16th note that is beamed needs two)\n *\n * @class Beam\n * @memberof music21.beam\n * @param {string} type - \"start\", \"stop\", \"continue\", \"partial\"\n * @param {string} direction - only needed for partial beams: \"left\" or \"right\"\n * @property {number|undefined} number - which beam line does this refer to;\n * 8th = 1, 16th = 2, etc.\n * @property {number|undefined} independentAngle - the angle of this beam\n * if it is different than others (feathered beams)\n */\nexport class Beam extends prebase.ProtoM21Object {\n static get className() { return 'music21.beam.Beam'; }\n type: string;\n direction: string|undefined;\n number: number;\n independentAngle: number;\n\n constructor(type, direction=undefined) {\n super();\n this.type = type;\n this.direction = direction;\n }\n}\n\n/**\n * Object representing a collection of Beams\n *\n * @class Beams\n * @memberof music21.beam\n * @property {Beam[]} beamsList - a list of Beam objects\n * @property {boolean} [feathered=false] - is this a feathered beam.\n * @property {number} length - length of beamsList\n */\nexport class Beams extends prebase.ProtoM21Object {\n static get className() { return 'music21.beam.Beams'; }\n\n static naiveBeams(srcList): Beams[] {\n const beamsList = [];\n for (const el of srcList) {\n if (!beamableDurationTypes.includes(el.duration.type)) {\n beamsList.push(undefined);\n } else if (el.isRest) {\n beamsList.push(undefined);\n } else {\n const b = new Beams();\n b.fill(el.duration.type);\n beamsList.push(b);\n }\n }\n return beamsList;\n }\n\n static removeSandwichedUnbeamables(beamsList) {\n let beamLast;\n let beamNext;\n for (let i = 0; i < beamsList.length; i++) {\n if (i !== beamsList.length - 1) {\n beamNext = beamsList[i + 1];\n } else {\n beamNext = undefined;\n }\n if (beamLast === undefined && beamNext === undefined) {\n beamsList[i] = undefined;\n }\n beamLast = beamsList[i];\n }\n return beamsList;\n }\n\n static sanitizePartialBeams(beamsList: Beams[]): Beams[] {\n for (let i = 0; i < beamsList.length; i++) {\n if (beamsList[i] === undefined) {\n continue;\n }\n const allTypes = beamsList[i].getTypes();\n if (!allTypes.includes('start')\n && !allTypes.includes('stop')\n && !allTypes.includes('continue')) {\n // nothing but partials;\n beamsList[i] = undefined;\n continue;\n }\n let hasStart = false;\n let hasStop = false;\n for (const b of beamsList[i].beamsList) {\n if (b.type === 'start') {\n hasStart = true;\n continue;\n }\n if (b.type === 'stop') {\n hasStop = true;\n continue;\n }\n if (hasStart && b.type === 'partial' && b.direction === 'left') {\n b.direction = 'right';\n } else if (hasStop && b.type === 'partial' && b.direction === 'right') {\n b.direction = 'left';\n }\n }\n }\n return beamsList;\n }\n\n static mergeConnectingPartialBeams(beamsList: Beams[]): Beams[] {\n for (let i = 0; i < beamsList.length - 1; i++) {\n const bThis = beamsList[i];\n const bNext = beamsList[i + 1];\n if (!bThis || !bNext) {\n continue;\n }\n const bThisNum = bThis.getNumbers();\n if (!bThisNum || bThisNum.length === 0) {\n continue;\n }\n for (const thisNum of bThisNum) {\n const thisBeam = bThis.getByNumber(thisNum);\n if (thisBeam.type !== 'partial' || thisBeam.direction !== 'right') {\n continue;\n }\n if (!(bNext.getNumbers().includes(thisNum))) {\n continue;\n }\n const nextBeam = bNext.getByNumber(thisNum);\n if (nextBeam.type === 'partial' || nextBeam.direction === 'right') {\n continue;\n }\n if (nextBeam.type === 'continue' || nextBeam.type === 'stop') {\n // should not happen.\n continue;\n }\n thisBeam.type = 'start';\n thisBeam.direction = undefined;\n if (nextBeam.type === 'partial') {\n nextBeam.type = 'stop';\n } else if (nextBeam.type === 'start') {\n nextBeam.type = 'continue';\n }\n nextBeam.direction = undefined;\n }\n }\n // now fix partial-lefts that follow stops:\n for (let i = 1; i < beamsList.length; i++) {\n const bThis = beamsList[i];\n const bPrev = beamsList[i - 1];\n if (!bThis || !bPrev) {\n continue;\n }\n const bThisNum = bThis.getNumbers();\n if (!bThisNum || bThisNum.length === 0) {\n continue;\n }\n for (const thisNum of bThisNum) {\n const thisBeam = bThis.getByNumber(thisNum);\n if (thisBeam.type !== 'partial' || thisBeam.direction !== 'left') {\n continue;\n }\n if (!(bPrev.getNumbers().includes(thisNum))) {\n continue;\n }\n const prevBeam = bPrev.getByNumber(thisNum);\n if (prevBeam.type !== 'stop') {\n continue;\n }\n thisBeam.type = 'stop';\n thisBeam.direction = undefined;\n prevBeam.type = 'continue';\n }\n }\n return beamsList;\n }\n\n beamsList: Beam[] = [];\n feathered: boolean = false;\n\n get length(): number {\n return this.beamsList.length;\n }\n\n /**\n * Append a new {@link Beam} object to this Beams, automatically creating the Beam\n * object and incrementing the number count.\n *\n * @param {string} type - the type (passed to {@link Beam})\n * @param {string} [direction=undefined] - the direction if type is \"partial\"\n * @returns {Beam} newly appended object\n */\n append(type: string, direction=undefined): Beam {\n const obj = new Beam(type, direction);\n obj.number = this.beamsList.length + 1;\n this.beamsList.push(obj);\n return obj;\n }\n\n /**\n * A quick way of setting the beams list for a particular duration, for\n instance, fill(\"16th\") will clear the current list of beams in the\n Beams object and add two beams. fill(2) will do the same (though note\n that that is an int, not a string).\n\n * It does not do anything to the direction that the beams are going in,\n or by default. Either set type here or call setAll() on the Beams\n object afterwards.\n\n * Both \"eighth\" and \"8th\" work. Adding more than six beams (i.e. things\n like 512th notes) raises an error.\n\n * @param {string|number} level - either a string like \"eighth\" or a number like 1 (=\"eighth\")\n * @param {string} [type] - type to fill all beams to.\n * @returns {this}\n */\n fill(level: string|number, type: string|undefined = undefined): Beams {\n this.beamsList = [];\n let count = 1;\n if (\n level === 1\n || level === '8th'\n || level === duration.typeFromNumDict[8]\n ) {\n count = 1;\n } else if (level === 2 || level === duration.typeFromNumDict[16]) {\n count = 2;\n } else if (level === 3 || level === duration.typeFromNumDict[32]) {\n count = 3;\n } else if (level === 4 || level === duration.typeFromNumDict[64]) {\n count = 4;\n } else if (level === 5 || level === duration.typeFromNumDict[128]) {\n count = 5;\n } else if (level === 6 || level === duration.typeFromNumDict[256]) {\n count = 6;\n } else {\n throw new Music21Exception('cannot fill beams for level ' + level);\n }\n for (let i = 1; i <= count; i++) {\n const obj = new Beam(type);\n obj.number = i;\n this.beamsList.push(obj);\n }\n return this;\n }\n\n /**\n * Get the beam with the given number or throw an exception.\n *\n * @param {number} number - the beam number to retrieve (usually one less than the position in `.beamsList`)\n * @returns {Beam|undefined}\n */\n getByNumber(number: number): Beam|undefined {\n if (!this.getNumbers().includes(number)) {\n throw new Music21Exception('beam number ' + number + ' cannot be accessed');\n }\n for (const thisBeam of this.beamsList) {\n if (thisBeam.number === number) {\n return thisBeam;\n }\n }\n return undefined;\n }\n\n /**\n * Get an Array of all the numbers for the beams\n *\n * @returns {Array} all the numbers\n */\n getNumbers(): number[] {\n const numbers = [];\n for (const thisBeam of this.beamsList) {\n numbers.push(thisBeam.number);\n }\n return numbers;\n }\n\n /**\n * Returns the type + \"-\" + direction (if direction is defined)\n * for the beam with the given number.\n *\n * @param {number} number\n * @returns {string|undefined}\n */\n getTypeByNumber(number: number): string|undefined {\n const beamObj = this.getByNumber(number);\n if (beamObj === undefined) {\n return undefined;\n }\n if (beamObj.direction === undefined) {\n return beamObj.type;\n } else {\n const x = beamObj.type + '-' + beamObj.direction;\n return x;\n }\n }\n\n /**\n * Get an Array of all the types for the beams\n *\n * @returns {Array} all the types\n */\n getTypes(): string[] {\n const types = [];\n for (let i = 0; i < this.length; i++) {\n types.push(this.beamsList[i].type);\n }\n return types;\n }\n\n /**\n * Set all the {@link Beam} objects to a given type/direction\n *\n * @param {string} type - beam type\n * @param {string} [direction] - beam direction\n * @returns {this}\n */\n setAll(type: string, direction: string = undefined): Beams {\n if (validBeamTypes[type] === undefined) {\n throw new Music21Exception('invalid beam type: ' + type);\n }\n for (let i = 0; i < this.length; i++) {\n const b = this.beamsList[i];\n b.type = type;\n b.direction = direction;\n }\n return this;\n }\n\n /**\n * Set the {@link Beam} object specified by `number` to a given type/direction\n *\n * @param {number} number\n * @param {string} type\n * @param {string} [direction]\n * @returns {this}\n */\n setByNumber(\n number: number,\n type: string,\n direction: string|undefined = undefined\n ): Beams {\n if (direction === undefined) {\n const splitIt = type.split('-');\n type = splitIt[0];\n direction = splitIt[1]; // not unpacking because. can be undefined...\n }\n if (validBeamTypes[type] === undefined) {\n throw new Music21Exception('invalid beam type: ' + type);\n }\n for (let i = 0; i < this.length; i++) {\n if (this.beamsList[i].number === number) {\n this.beamsList[i].type = type;\n this.beamsList[i].direction = direction;\n }\n }\n return this;\n }\n}\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/chord -- Chord\n *\n * Copyright (c) 2013-19, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–19, Michael Scott Cuthbert and cuthbertLab\n *\n * chord Module. See {@link music21.chord} namespace for more details.\n * Chord related objects (esp. {@link music21.chord.Chord}) and methods.\n *\n * @exports music21/chord\n * @namespace music21.chord\n * @memberof music21\n * @requires vexflow\n * @requires music21/interval\n * @requires music21/note\n */\nimport * as MIDI from 'midicube';\n\nimport { Music21Exception } from './exceptions21';\nimport * as interval from './interval';\nimport * as note from './note';\nimport * as chordTables from './chordTables';\n\n// imports for typing\nimport type * as clef from './clef';\nimport type { Pitch } from './pitch';\n\nexport { chordTables };\n\n\n/**\n * Chord related objects (esp. {@link music21.chord.Chord}) and methods.\n *\n * @param {Array} [notes] -\n * an Array of strings\n * (see {@link Pitch} for valid formats), note.Note,\n * or pitch.Pitch objects.\n * @property {number} length - the number of pitches in the Chord (readonly)\n * @property {Pitch[]} pitches - an Array of Pitch objects in the\n * chord. (Consider the Array read only and pass in a new Array to change)\n * @property {Boolean} [isChord=true]\n * @property {Boolean} [isNote=false]\n * @property {Boolean} [isRest=false]\n */\nexport class Chord extends note.NotRest {\n static get className() { return 'music21.chord.Chord'; }\n\n protected _notes: note.Note[] = [];\n isChord = true; // for speed\n isNote = false; // for speed\n isRest = false; // for speed\n _overrides: any = {};\n _cache: any = {};\n protected _chordTablesAddress: any = undefined;\n protected _chordTablesAddressNeedsUpdating: boolean = true; // only update when needed\n\n constructor(notes?: string|note.Note[]|Pitch[]|string[]) {\n super();\n if (typeof notes === 'undefined') {\n notes = [];\n } else if (typeof notes === 'string') {\n notes = notes.split(/\\s+/);\n }\n\n for (const n of notes) {\n this.add(n, false);\n }\n if (notes.length > 0) {\n const n0 = notes[0];\n if (n0 instanceof note.Note) {\n if (n0.duration.quarterLength !== this.duration.quarterLength) {\n this.duration = n0.duration;\n }\n }\n }\n this.sortPitches();\n }\n\n stringInfo(): string {\n const info = this.pitches.map(x => x.nameWithOctave);\n return info.join(' ');\n }\n\n get length(): number {\n return this._notes.length;\n }\n\n // Typescript restriction... preventing full allowing of set pitches()\n // to take string[] or Note[].\n // https://github.com/microsoft/TypeScript/issues/2521\n get pitches(): Pitch[] {\n const tempPitches = [];\n for (let i = 0; i < this._notes.length; i++) {\n tempPitches.push(this._notes[i].pitch);\n }\n return tempPitches;\n }\n\n set pitches(tempPitches: Pitch[]) {\n this._notes = [];\n for (let i = 0; i < tempPitches.length; i++) {\n let addNote;\n if (typeof tempPitches[i] === 'string') {\n addNote = new note.Note(tempPitches[i]);\n } else if (tempPitches[i].isClassOrSubclass('Pitch')) {\n addNote = new note.Note();\n addNote.pitch = tempPitches[i];\n } else if (tempPitches[i].isClassOrSubclass('Note')) {\n addNote = tempPitches[i];\n } else {\n console.warn('bad pitch', tempPitches[i]);\n throw new Music21Exception(\n 'Cannot add pitch from ' + tempPitches[i]\n );\n }\n this._notes.push(addNote);\n }\n this._cache = {};\n this._overrides = {};\n }\n\n get notes(): note.Note[] {\n return [...this._notes];\n }\n\n set notes(newNotes: note.Note[]) {\n this._notes = [...newNotes];\n this._cache = {};\n this._overrides = {};\n }\n\n\n get orderedPitchClasses(): number[] {\n const pcGroup = [];\n for (const p of this.pitches) {\n if (pcGroup.includes(p.pitchClass)) {\n continue;\n }\n pcGroup.push(p.pitchClass);\n }\n pcGroup.sort((a, b) => a - b);\n return pcGroup;\n }\n\n get chordTablesAddress() {\n if (this._chordTablesAddressNeedsUpdating) {\n this._chordTablesAddress = chordTables.seekChordTablesAddress(this);\n }\n this._chordTablesAddressNeedsUpdating = false;\n return this._chordTablesAddress;\n }\n\n get commonName(): string {\n // TODO: many more exemptions from music21p\n const cta = this.chordTablesAddress;\n const ctn = chordTables.addressToCommonNames(cta);\n const forteClass = this.forteClass;\n const enharmonicTests = {\n '3-11A': () => this.isMinorTriad(),\n '3-11B': () => this.isMajorTriad(),\n '3-10': () => this.isDiminishedTriad(),\n '3-12': () => this.isAugmentedTriad(),\n };\n if (enharmonicTests[forteClass] !== undefined) {\n let out = ctn[0];\n const test = enharmonicTests[forteClass];\n if (!test()) {\n out = 'enharmonic equivalent to ' + out;\n }\n return out;\n }\n\n if (ctn === undefined) {\n return '';\n } else {\n return ctn[0];\n }\n }\n\n get forteClass() {\n return chordTables.addressToForteName(this.chordTablesAddress, 'tn');\n }\n\n get forteClassNumber() {\n return this.chordTablesAddress.forteClass;\n }\n\n get forteClassTnI() {\n return chordTables.addressToForteName(this.chordTablesAddress, 'tni');\n }\n\n get(i) {\n if (typeof i === 'number') {\n return this._notes[i];\n } else {\n return undefined; // TODO(msc): add other get methods.\n }\n }\n\n * [Symbol.iterator]() {\n for (let i = 0; i < this.length; i++) {\n yield this.get(i);\n }\n }\n\n\n areZRelations(other): boolean {\n const zRelationAddress = chordTables.addressToZAddress(this.chordTablesAddress);\n if (zRelationAddress === undefined) {\n return false;\n }\n for (const key of ['cardinality', 'forteClass', 'inversion']) {\n if (other.chordTablesAddress[key] !== zRelationAddress[key]) {\n return false;\n }\n }\n return true;\n }\n\n getZRelation() {\n if (!this.hasZRelation) {\n return undefined;\n }\n const chordTablesAddress = this.chordTablesAddress;\n const v = chordTables.addressToIntervalVector(chordTablesAddress);\n const addresses = chordTables.intervalVectorToAddress(v);\n let other;\n for (const thisAddress of addresses) {\n if (thisAddress.forteClass !== chordTablesAddress.forteClass) {\n other = thisAddress;\n }\n }\n // other should always be defined;\n const prime = chordTables.addressToTransposedNormalForm(other);\n return new Chord(prime);\n }\n\n get hasZRelation(): boolean {\n const post = chordTables.addressToZAddress(this.chordTablesAddress);\n if (post !== undefined) {\n return true;\n } else {\n return false;\n }\n }\n\n get intervalVector() {\n return chordTables.addressToIntervalVector(this.chordTablesAddress);\n }\n\n // get intervalVectorString() {\n //\n // }\n //\n // static formatVectorString() {\n // // needs pitch._convertPitchClassToStr\n // }\n\n setStemDirectionFromClef(clef?: clef.Clef) {\n if (clef === undefined) {\n return this;\n } else {\n const midLine = clef.lowestLine + 4;\n // console.log(midLine, 'midLine');\n let maxDNNfromCenter = 0;\n const pA = this.pitches;\n for (let i = 0; i < this.pitches.length; i++) {\n const p = pA[i];\n const DNNfromCenter = p.diatonicNoteNum - midLine;\n // >= not > so that the highest pitch wins the tie and thus stem down.\n if (Math.abs(DNNfromCenter) >= Math.abs(maxDNNfromCenter)) {\n maxDNNfromCenter = DNNfromCenter;\n }\n }\n if (maxDNNfromCenter >= 0) {\n this.stemDirection = 'down';\n } else {\n this.stemDirection = 'up';\n }\n return this;\n }\n }\n\n /**\n * Adds a note to the chord, sorting the note array\n *\n * @param {\n * string|string[]|note.Note|Pitch|\n * music21.note.Note[]|Pitch[]} notes - the\n * Note or Pitch to be added or a string defining a pitch.\n * @param {boolean} runSort - Sort after running (default true)\n * @returns {music21.chord.Chord} the original chord.\n */\n add(notes, runSort: boolean = true) {\n if (!(notes instanceof Array)) {\n notes = [notes];\n }\n for (const noteObj_StrOrNote of notes) {\n // takes in either a note or a pitch\n let noteObj: note.Note;\n if (typeof noteObj_StrOrNote === 'string') {\n noteObj = new note.Note(noteObj_StrOrNote);\n } else if (noteObj_StrOrNote.isClassOrSubclass('Pitch')) {\n const pitchObj = noteObj_StrOrNote;\n const noteObj2 = new note.Note();\n noteObj2.pitch = pitchObj;\n noteObj = noteObj2;\n } else {\n noteObj = noteObj_StrOrNote;\n }\n this._notes.push(noteObj);\n }\n // inefficient because sorts after each add, but safe and #(p) is small\n if (runSort === true) {\n this.sortPitches();\n }\n this._cache = {};\n return this;\n }\n\n sortPitches(): void {\n this._notes.sort((a: note.Note, b: note.Note) => {\n let diff: number = a.pitch.diatonicNoteNum - b.pitch.diatonicNoteNum;\n if (diff === 0) {\n diff = a.pitch.ps - b.pitch.ps;\n }\n return diff;\n });\n }\n\n // TODO: add remove\n\n /**\n * Removes any pitches that appear more than once (in any octave),\n * removing the higher ones, and returns a new Chord.\n *\n * returns A new Chord object with duplicate pitches removed.\n */\n removeDuplicatePitches(): Chord {\n const stepsFound = [];\n const nonDuplicatingPitches = [];\n const pitches = this.pitches;\n for (let i = 0; i < pitches.length; i++) {\n const p = pitches[i];\n if (stepsFound.indexOf(p.step) === -1) {\n stepsFound.push(p.step);\n nonDuplicatingPitches.push(p);\n }\n }\n const closedChord = new Chord(nonDuplicatingPitches);\n return closedChord;\n }\n\n /**\n * Finds the Root of the chord, or sets it as an override.\n */\n root(newroot?: Pitch): Pitch {\n if (newroot !== undefined) {\n this._overrides.root = newroot;\n this._cache.root = newroot;\n this._cache.inversion = undefined;\n }\n\n if (this._overrides.root !== undefined) {\n return this._overrides.root;\n }\n\n if (this._cache.root !== undefined) {\n return this._cache.root;\n }\n\n const closedChord = this.removeDuplicatePitches();\n /* var chordBass = closedChord.bass(); */\n const closedPitches = closedChord.pitches;\n if (closedPitches.length === 0) {\n throw new Music21Exception('No notes in Chord!');\n } else if (closedPitches.length === 1) {\n return this.pitches[0];\n }\n // const indexOfPitchesWithPerfectlyStackedThirds = [];\n const testSteps = [3, 5, 7, 2, 4, 6];\n for (let i = 0; i < closedPitches.length; i++) {\n const p = closedPitches[i];\n const currentListOfThirds = [];\n for (let tsIndex = 0; tsIndex < testSteps.length; tsIndex++) {\n const chordStepPitch = closedChord.getChordStep(\n testSteps[tsIndex],\n p\n );\n if (chordStepPitch !== undefined) {\n // console.log(p.name + \" \" + testSteps[tsIndex].toString() + \" \" + chordStepPitch.name);\n currentListOfThirds.push(true);\n } else {\n currentListOfThirds.push(false);\n }\n }\n // console.log(currentListOfThirds);\n let hasFalse = false;\n for (let j = 0; j < closedPitches.length - 1; j++) {\n if (currentListOfThirds[j] === false) {\n hasFalse = true;\n }\n }\n if (hasFalse === false) {\n // indexOfPitchesWithPerfectlyStackedThirds.push(i);\n return closedChord.pitches[i]; // should do more, but fine...\n // should test rootedness function, etc. 13ths. etc.\n }\n }\n const newRoot = closedChord.pitches[0]; // fallback, just return the bass...\n this._cache.root = newRoot;\n return newRoot;\n }\n\n /**\n * Returns the number of semitones above the root that a given chordstep is.\n *\n * For instance, in a G dominant 7th chord (G, B, D, F), would\n * return 4 for chordStep=3, since the third of the chord (B) is four semitones above G.\n *\n * @param {number} chordStep - the step to find, e.g., 1, 2, 3, etc.\n * @param {Pitch} [testRoot] - the pitch to temporarily consider the root.\n * @returns {number|undefined} Number of semitones above the root for this\n * chord step or undefined if no pitch matches that chord step.\n */\n semitonesFromChordStep(chordStep: number, testRoot?: Pitch): number|undefined {\n if (testRoot === undefined) {\n testRoot = this.root();\n }\n const tempChordStep = this.getChordStep(chordStep, testRoot);\n if (tempChordStep === undefined) {\n return undefined;\n } else {\n let semitones = (tempChordStep.ps - testRoot.ps) % 12;\n if (semitones < 0) {\n semitones += 12;\n }\n return semitones;\n }\n }\n\n /**\n * Gets the lowest note (based on .ps not name) in the chord.\n *\n * return bass pitch or undefined\n */\n bass(newBass?: Pitch): Pitch|undefined {\n if (newBass !== undefined) {\n this._overrides.bass = newBass;\n this._cache.bass = newBass;\n this._cache.inversion = undefined;\n }\n\n if (this._overrides.bass !== undefined) {\n return this._overrides.bass;\n }\n\n if (this._cache.bass !== undefined) {\n return this._cache.bass;\n }\n\n let lowest;\n const pitches = this.pitches;\n for (let i = 0; i < pitches.length; i++) {\n const p = pitches[i];\n if (lowest === undefined) {\n lowest = p;\n } else { // noinspection JSUnusedAssignment\n if (p.ps < lowest.ps) {\n lowest = p;\n }\n }\n }\n return lowest;\n }\n\n /**\n * Counts the number of non-duplicate pitch MIDI Numbers in the chord.\n *\n * Call after \"closedPosition()\" to get Forte style cardinality disregarding octave.\n */\n cardinality(): number {\n const uniqueChord = this.removeDuplicatePitches();\n return uniqueChord.pitches.length;\n }\n\n isMajorTriad(): boolean {\n if (this.cardinality() !== 3) {\n return false;\n }\n const thirdST = this.semitonesFromChordStep(3);\n const fifthST = this.semitonesFromChordStep(5);\n if (thirdST === 4 && fifthST === 7) {\n return true;\n } else {\n return false;\n }\n }\n\n isMinorTriad(): boolean {\n if (this.cardinality() !== 3) {\n return false;\n }\n const thirdST = this.semitonesFromChordStep(3);\n const fifthST = this.semitonesFromChordStep(5);\n if (thirdST === 3 && fifthST === 7) {\n return true;\n } else {\n return false;\n }\n }\n\n isDiminishedTriad(): boolean {\n if (this.cardinality() !== 3) {\n return false;\n }\n const thirdST = this.semitonesFromChordStep(3);\n const fifthST = this.semitonesFromChordStep(5);\n if (thirdST === 3 && fifthST === 6) {\n return true;\n } else {\n return false;\n }\n }\n\n isAugmentedTriad(): boolean {\n if (this.cardinality() !== 3) {\n return false;\n }\n const thirdST = this.semitonesFromChordStep(3);\n const fifthST = this.semitonesFromChordStep(5);\n if (thirdST === 4 && fifthST === 8) {\n return true;\n } else {\n return false;\n }\n }\n\n\n isDominantSeventh(): boolean {\n return this.isSeventhOfType([0, 4, 7, 10]);\n }\n\n isDiminishedSeventh(): boolean {\n return this.isSeventhOfType([0, 3, 6, 9]);\n }\n\n isSeventhOfType(intervalArray: number[]): boolean {\n const third = this.third;\n const fifth = this.fifth;\n const seventh = this.seventh;\n\n if (\n third === undefined\n || fifth === undefined\n || seventh === undefined\n ) {\n return false;\n }\n\n const root = this.root();\n\n for (const thisPitch of this.pitches) {\n const thisInterval = new interval.Interval(root, thisPitch);\n if (!intervalArray.includes(thisInterval.chromatic.mod12)) {\n return false;\n }\n // // check if it doesn't have any other pitches, such as C E F- G Bb != Dominant Seventh\n // if (!ignoreSpelling && !chordalNames.includes(thisPitch.name)) {\n // return false;\n // }\n }\n return true;\n\n\n }\n\n\n /**\n * canBeDominantV - Returns true if the chord is a Major Triad or a Dominant Seventh\n */\n canBeDominantV(): boolean {\n if (this.isMajorTriad() || this.isDominantSeventh()) {\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Returns true if the chord is a major or minor triad\n */\n canBeTonic(): boolean {\n if (this.isMajorTriad() || this.isMinorTriad()) {\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Returns the inversion of the chord as a number (root-position = 0)\n *\n * Unlike music21p version, cannot set the inversion, yet.\n *\n * TODO: add.\n */\n inversion(): number {\n const bass = this.bass();\n const root = this.root();\n const chordStepsToInversions = [1, 6, 4, 2, 7, 5, 3];\n for (let i = 0; i < chordStepsToInversions.length; i++) {\n const testNote = this.getChordStep(chordStepsToInversions[i], bass);\n if (testNote !== undefined && testNote.name === root.name) {\n return i;\n }\n }\n return undefined;\n }\n\n playMidi(\n tempo: number = 120,\n nextElement?,\n {\n instrument=undefined,\n channel=undefined,\n }={}\n ) {\n const milliseconds = super.playMidi(tempo, nextElement, { instrument, channel });\n if (channel === undefined) {\n channel = this.activeChannel();\n }\n let midNum;\n const volume = this.midiVolume;\n // TODO: Tied Chords.\n for (let j = 0; j < this._notes.length; j++) {\n midNum = this._notes[j].pitch.midi;\n try {\n MIDI.noteOn(channel, midNum, volume, 0);\n MIDI.noteOff(channel, midNum, milliseconds / 1000);\n } catch (e) {\n // do nothing -- might not have an output channel because of audio not connected\n }\n }\n return milliseconds;\n }\n\n /**\n * Returns the Pitch object that is a Generic interval (2, 3, 4, etc., but not 9, 10, etc.) above\n * the `.root()`\n *\n * In case there is more that one note with that designation (e.g., `[A-C-C#-E].getChordStep(3)`)\n * the first one in `.pitches` is returned.\n */\n getChordStep(chordStep: number, testRoot?: Pitch): Pitch|undefined {\n if (testRoot === undefined) {\n testRoot = this.root();\n }\n if (chordStep >= 8) {\n chordStep %= 7;\n }\n const thisPitches = this.pitches;\n const testRootDNN = testRoot.diatonicNoteNum;\n for (let i = 0; i < thisPitches.length; i++) {\n const thisPitch = thisPitches[i];\n let thisInterval\n = (thisPitch.diatonicNoteNum - testRootDNN + 1) % 7; // fast kludge\n if (thisInterval <= 0) {\n thisInterval += 7;\n }\n if (thisInterval === chordStep) {\n return thisPitch;\n }\n }\n return undefined;\n }\n\n get third(): Pitch|undefined {\n return this.getChordStep(3);\n }\n\n get fifth(): Pitch|undefined {\n return this.getChordStep(5);\n }\n\n get seventh(): Pitch|undefined {\n return this.getChordStep(7);\n }\n}\n\nexport const chordDefinitions = {\n major: ['M3', 'm3'],\n minor: ['m3', 'M3'],\n diminished: ['m3', 'm3'],\n augmented: ['M3', 'M3'],\n 'major-seventh': ['M3', 'm3', 'M3'],\n 'dominant-seventh': ['M3', 'm3', 'm3'],\n 'minor-seventh': ['m3', 'M3', 'm3'],\n 'diminished-seventh': ['m3', 'm3', 'm3'],\n 'half-diminished-seventh': ['m3', 'm3', 'M3'],\n};\n","import { posMod, arrayEquals } from './common';\n\nlet t1;\nlet t2;\nlet t3;\nlet t4;\nlet t5;\nlet t6;\nlet t7;\nlet t8;\nlet t9;\nlet t10;\nlet t11;\nlet t12;\nlet t13;\nlet t14;\nlet t15;\nlet t16;\nlet t17;\nlet t18;\nlet t19;\nlet t20;\nlet t21;\nlet t22;\nlet t23;\nlet t24;\nlet t25;\nlet t26;\nlet t27;\nlet t28;\nlet t29;\nlet t30;\nlet t31;\nlet t32;\nlet t33;\nlet t34;\nlet t35;\nlet t36;\nlet t37;\nlet t38;\n\nt1 = [[0], [0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 11, 11, 11, 11], 0]; // 1-1\nconst monad = [undefined, t1];\n\nt1 = [[0, 1], [1, 0, 0, 0, 0, 0], [1, 1, 0, 0, 9, 9, 8, 8], 0]; // 2-1\nt2 = [[0, 2], [0, 1, 0, 0, 0, 0], [1, 1, 1, 1, 9, 9, 9, 9], 0]; // 2-2\nt3 = [[0, 3], [0, 0, 1, 0, 0, 0], [1, 1, 1, 1, 9, 9, 9, 9], 0]; // 2-3\nt4 = [[0, 4], [0, 0, 0, 1, 0, 0], [1, 1, 1, 1, 9, 9, 9, 9], 0]; // 2-4\nt5 = [[0, 5], [0, 0, 0, 0, 1, 0], [1, 1, 0, 0, 9, 9, 8, 8], 0]; // 2-5\nt6 = [[0, 6], [0, 0, 0, 0, 0, 1], [2, 2, 2, 2, 10, 10, 10], 0]; // 2-6\nconst diad = [undefined, t1, t2, t3, t4, t5, t6];\n\nt1 = [[0, 1, 2], [2, 1, 0, 0, 0, 0], [1, 1, 0, 0, 7, 7, 4, 4], 0]; // 3-1\nt2 = [[0, 1, 3], [1, 1, 1, 0, 0, 0], [1, 0, 0, 0, 5, 6, 5, 5], 0]; // 3-2\nt3 = [[0, 1, 4], [1, 0, 1, 1, 0, 0], [1, 0, 0, 0, 5, 6, 5, 5], 0]; // 3-3\nt4 = [[0, 1, 5], [1, 0, 0, 1, 1, 0], [1, 0, 1, 0, 5, 6, 5, 6], 0]; // 3-4\nt5 = [[0, 1, 6], [1, 0, 0, 0, 1, 1], [1, 0, 0, 1, 6, 7, 7, 6], 0]; // 3-5\nt6 = [[0, 2, 4], [0, 2, 0, 1, 0, 0], [1, 1, 1, 1, 7, 7, 7, 7], 0]; // 3-6\nt7 = [[0, 2, 5], [0, 1, 1, 0, 1, 0], [1, 0, 0, 0, 5, 6, 5, 5], 0]; // 3-7\nt8 = [[0, 2, 6], [0, 1, 0, 1, 0, 1], [1, 0, 0, 1, 6, 7, 7, 6], 0]; // 3-8\nt9 = [[0, 2, 7], [0, 1, 0, 0, 2, 0], [1, 1, 0, 0, 7, 7, 4, 4], 0]; // 3-9\nt10 = [[0, 3, 6], [0, 0, 2, 0, 0, 1], [1, 1, 1, 1, 8, 8, 8, 8], 0]; // 3-10\nt11 = [[0, 3, 7], [0, 0, 1, 1, 1, 0], [1, 0, 0, 0, 5, 6, 5, 5], 0]; // 3-11\nt12 = [[0, 4, 8], [0, 0, 0, 3, 0, 0], [3, 3, 3, 3, 9, 9, 9, 9], 0]; // 3-12\nconst trichord = [undefined, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12];\n\nt1 = [[0, 1, 2, 3], [3, 2, 1, 0, 0, 0], [1, 1, 0, 0, 5, 5, 1, 1], 0]; // 4-1\nt2 = [[0, 1, 2, 4], [2, 2, 1, 1, 0, 0], [1, 0, 0, 0, 3, 4, 1, 1], 0]; // 4-2\nt3 = [[0, 1, 3, 4], [2, 1, 2, 1, 0, 0], [1, 1, 0, 0, 3, 3, 2, 2], 0]; // 4-3\nt4 = [[0, 1, 2, 5], [2, 1, 1, 1, 1, 0], [1, 0, 0, 0, 1, 3, 2, 3], 0]; // 4-4\nt5 = [[0, 1, 2, 6], [2, 1, 0, 1, 1, 1], [1, 0, 0, 0, 2, 4, 3, 2], 0]; // 4-5\nt6 = [[0, 1, 2, 7], [2, 1, 0, 0, 2, 1], [1, 1, 1, 1, 4, 4, 4, 4], 0]; // 4-6\nt7 = [[0, 1, 4, 5], [2, 0, 1, 2, 1, 0], [1, 1, 0, 0, 3, 3, 3, 3], 0]; // 4-7\nt8 = [[0, 1, 5, 6], [2, 0, 0, 1, 2, 1], [1, 1, 1, 1, 4, 4, 4, 4], 0]; // 4-8\nt9 = [[0, 1, 6, 7], [2, 0, 0, 0, 2, 2], [2, 2, 2, 2, 6, 6, 6, 6], 0]; // 4-9\nt10 = [[0, 2, 3, 5], [1, 2, 2, 0, 1, 0], [1, 1, 1, 1, 3, 3, 3, 3], 0]; // 4-10\nt11 = [[0, 1, 3, 5], [1, 2, 1, 1, 1, 0], [1, 0, 1, 0, 1, 3, 1, 3], 0]; // 4-11\nt12 = [[0, 2, 3, 6], [1, 1, 2, 1, 0, 1], [1, 0, 0, 0, 2, 4, 3, 2], 0]; // 4-12\nt13 = [[0, 1, 3, 6], [1, 1, 2, 0, 1, 1], [1, 0, 0, 1, 2, 4, 4, 2], 0]; // 4-13\nt14 = [[0, 2, 3, 7], [1, 1, 1, 1, 2, 0], [1, 0, 0, 0, 1, 3, 2, 3], 0]; // 4-14\nt15 = [[0, 1, 4, 6], [1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 3, 3, 1], 29]; // 4-15z\nt16 = [[0, 1, 5, 7], [1, 1, 0, 1, 2, 1], [1, 0, 0, 0, 2, 4, 3, 2], 0]; // 4-16\nt17 = [[0, 3, 4, 7], [1, 0, 2, 2, 1, 0], [1, 1, 1, 1, 3, 3, 3, 3], 0]; // 4-17\nt18 = [[0, 1, 4, 7], [1, 0, 2, 1, 1, 1], [1, 0, 0, 1, 2, 4, 4, 2], 0]; // 4-18\nt19 = [[0, 1, 4, 8], [1, 0, 1, 3, 1, 0], [1, 0, 1, 0, 3, 5, 3, 5], 0]; // 4-19\nt20 = [[0, 1, 5, 8], [1, 0, 1, 2, 2, 0], [1, 1, 0, 0, 3, 3, 3, 3], 0]; // 4-20\nt21 = [[0, 2, 4, 6], [0, 3, 0, 2, 0, 1], [1, 1, 1, 1, 6, 6, 6, 6], 0]; // 4-21\nt22 = [[0, 2, 4, 7], [0, 2, 1, 1, 2, 0], [1, 0, 0, 0, 3, 4, 1, 1], 0]; // 4-22\nt23 = [[0, 2, 5, 7], [0, 2, 1, 0, 3, 0], [1, 1, 0, 0, 5, 5, 1, 1], 0]; // 4-23\nt24 = [[0, 2, 4, 8], [0, 2, 0, 3, 0, 1], [1, 1, 1, 1, 6, 6, 6, 6], 0]; // 4-24\nt25 = [[0, 2, 6, 8], [0, 2, 0, 2, 0, 2], [2, 2, 2, 2, 6, 6, 6, 6], 0]; // 4-25\nt26 = [[0, 3, 5, 8], [0, 1, 2, 1, 2, 0], [1, 1, 0, 0, 3, 3, 2, 2], 0]; // 4-26\nt27 = [[0, 2, 5, 8], [0, 1, 2, 1, 1, 1], [1, 0, 0, 0, 2, 4, 3, 2], 0]; // 4-27\nt28 = [[0, 3, 6, 9], [0, 0, 4, 0, 0, 2], [4, 4, 4, 4, 8, 8, 8, 8], 0]; // 4-28\nt29 = [[0, 1, 3, 7], [1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 3, 3, 1], 15]; // 4-29z\nconst tetrachord = [undefined, t1, t2, t3, t4, t5, t6, t7, t8, t9,\n t10, t11, t12, t13, t14, t15, t16, t17, t18, t19,\n t20, t21, t22, t23, t24, t25, t26, t27, t28, t29];\n\n\nt1 = [[0, 1, 2, 3, 4], [4, 3, 2, 1, 0, 0], [1, 1, 0, 0, 3, 3, 0, 0], 0]; // 5-1\nt2 = [[0, 1, 2, 3, 5], [3, 3, 2, 1, 1, 0], [1, 0, 0, 0, 1, 2, 1, 1], 0]; // 5-2\nt3 = [[0, 1, 2, 4, 5], [3, 2, 2, 2, 1, 0], [1, 0, 0, 0, 1, 1, 1, 0], 0]; // 5-3\nt4 = [[0, 1, 2, 3, 6], [3, 2, 2, 1, 1, 1], [1, 0, 0, 0, 0, 2, 0, 0], 0]; // 5-4\nt5 = [[0, 1, 2, 3, 7], [3, 2, 1, 1, 2, 1], [1, 0, 0, 0, 0, 1, 1, 1], 0]; // 5-5\nt6 = [[0, 1, 2, 5, 6], [3, 1, 1, 2, 2, 1], [1, 0, 0, 0, 0, 1, 1, 1], 0]; // 5-6\nt7 = [[0, 1, 2, 6, 7], [3, 1, 0, 1, 3, 2], [1, 0, 0, 1, 2, 3, 3, 2], 0]; // 5-7\nt8 = [[0, 2, 3, 4, 6], [2, 3, 2, 2, 0, 1], [1, 1, 0, 0, 2, 2, 0, 0], 0]; // 5-8\nt9 = [[0, 1, 2, 4, 6], [2, 3, 1, 2, 1, 1], [1, 0, 0, 0, 0, 2, 0, 1], 0]; // 5-9\nt10 = [[0, 1, 3, 4, 6], [2, 2, 3, 1, 1, 1], [1, 0, 0, 0, 0, 1, 1, 0], 0]; // 5-10\nt11 = [[0, 2, 3, 4, 7], [2, 2, 2, 2, 2, 0], [1, 0, 1, 0, 1, 1, 1, 1], 0]; // 5-11\nt12 = [[0, 1, 3, 5, 6], [2, 2, 2, 1, 2, 1], [1, 1, 1, 1, 0, 0, 0, 0], [36]]; // 5-12\nt13 = [[0, 1, 2, 4, 8], [2, 2, 1, 3, 1, 1], [1, 0, 0, 0, 0, 2, 0, 1], 0]; // 5-13\nt14 = [[0, 1, 2, 5, 7], [2, 2, 1, 1, 3, 1], [1, 0, 0, 0, 0, 1, 1, 1], 0]; // 5-14\nt15 = [[0, 1, 2, 6, 8], [2, 2, 0, 2, 2, 2], [1, 1, 1, 1, 2, 2, 2, 2], 0]; // 5-15\nt16 = [[0, 1, 3, 4, 7], [2, 1, 3, 2, 1, 1], [1, 0, 0, 0, 0, 1, 1, 0], 0]; // 5-16\nt17 = [[0, 1, 3, 4, 8], [2, 1, 2, 3, 2, 0], [1, 1, 0, 0, 1, 1, 2, 2], [37]]; // 5-17\nt18 = [[0, 1, 4, 5, 7], [2, 1, 2, 2, 2, 1], [1, 0, 0, 0, 0, 1, 1, 0], [38]]; // 5-18\nt19 = [[0, 1, 3, 6, 7], [2, 1, 2, 1, 2, 2], [1, 0, 0, 1, 0, 2, 2, 0], 0]; // 5-19\nt20 = [[0, 1, 3, 7, 8], [2, 1, 1, 2, 3, 1], [1, 0, 0, 0, 0, 1, 1, 1], 0]; // 5-20\nt21 = [[0, 1, 4, 5, 8], [2, 0, 2, 4, 2, 0], [1, 0, 1, 0, 3, 3, 3, 3], 0]; // 5-21\nt22 = [[0, 1, 4, 7, 8], [2, 0, 2, 3, 2, 1], [1, 1, 1, 1, 2, 2, 2, 2], 0]; // 5-22\nt23 = [[0, 2, 3, 5, 7], [1, 3, 2, 1, 3, 0], [1, 0, 0, 0, 1, 2, 1, 1], 0]; // 5-23\nt24 = [[0, 1, 3, 5, 7], [1, 3, 1, 2, 2, 1], [1, 0, 0, 0, 0, 2, 0, 1], 0]; // 5-24\nt25 = [[0, 2, 3, 5, 8], [1, 2, 3, 1, 2, 1], [1, 0, 0, 0, 0, 1, 1, 0], 0]; // 5-25\nt26 = [[0, 2, 4, 5, 8], [1, 2, 2, 3, 1, 1], [1, 0, 1, 0, 0, 2, 0, 2], 0]; // 5-26\nt27 = [[0, 1, 3, 5, 8], [1, 2, 2, 2, 3, 0], [1, 0, 0, 0, 1, 1, 1, 0], 0]; // 5-27\nt28 = [[0, 2, 3, 6, 8], [1, 2, 2, 2, 1, 2], [1, 0, 0, 1, 0, 2, 2, 0], 0]; // 5-28\nt29 = [[0, 1, 3, 6, 8], [1, 2, 2, 1, 3, 1], [1, 0, 0, 0, 0, 2, 0, 0], 0]; // 5-29\nt30 = [[0, 1, 4, 6, 8], [1, 2, 1, 3, 2, 1], [1, 0, 0, 0, 0, 2, 0, 1], 0]; // 5-30\nt31 = [[0, 1, 3, 6, 9], [1, 1, 4, 1, 1, 2], [1, 0, 0, 1, 0, 3, 3, 0], 0]; // 5-31\nt32 = [[0, 1, 4, 6, 9], [1, 1, 3, 2, 2, 1], [1, 0, 0, 0, 0, 1, 1, 0], 0]; // 5-32\nt33 = [[0, 2, 4, 6, 8], [0, 4, 0, 4, 0, 2], [1, 1, 1, 1, 6, 6, 6, 6], 0]; // 5-33\nt34 = [[0, 2, 4, 6, 9], [0, 3, 2, 2, 2, 1], [1, 1, 0, 0, 2, 2, 0, 0], 0]; // 5-34\nt35 = [[0, 2, 4, 7, 9], [0, 3, 2, 1, 4, 0], [1, 1, 0, 0, 3, 3, 0, 0], 0]; // 5-35\nt36 = [[0, 1, 2, 4, 7], [2, 2, 2, 1, 2, 1], [1, 0, 0, 1, 0, 1, 1, 0], 12]; // 5-36\nt37 = [[0, 3, 4, 5, 8], [2, 1, 2, 2, 2, 0], [1, 1, 0, 0, 1, 1, 2, 2], 17]; // 5-37\nt38 = [[0, 1, 2, 5, 8], [2, 1, 2, 2, 2, 1], [1, 0, 0, 0, 0, 1, 1, 0], 18]; // 5-38\nconst pentachord = [undefined, t1, t2, t3, t4, t5, t6, t7, t8, t9,\n t10, t11, t12, t13, t14, t15, t16, t17, t18, t19,\n t20, t21, t22, t23, t24, t25, t26, t27, t28, t29,\n t30, t31, t32, t33, t34, t35, t36, t37, t38];\n\n\nt1 = [[0, 1, 2, 3, 4, 5], [5, 4, 3, 2, 1, 0], [1, 1, 0, 0, 1, 1, 0, 0], 0]; // 6-1 A\nt2 = [[0, 1, 2, 3, 4, 6], [4, 4, 3, 2, 1, 1], [1, 0, 0, 0, 0, 1, 0, 0], 0]; // 6-2\nt3 = [[0, 1, 2, 3, 5, 6], [4, 3, 3, 2, 2, 1], [1, 0, 0, 0, 0, 0, 0, 0], 36]; // 6-3\nt4 = [[0, 1, 2, 4, 5, 6], [4, 3, 2, 3, 2, 1], [1, 1, 0, 0, 0, 0, 0, 0], 37]; // 6-4\nt5 = [[0, 1, 2, 3, 6, 7], [4, 2, 2, 2, 3, 2], [1, 0, 0, 0, 0, 1, 0, 0], 0]; // 6-5\nt6 = [[0, 1, 2, 5, 6, 7], [4, 2, 1, 2, 4, 2], [1, 1, 0, 0, 0, 0, 1, 1], 38]; // 6-6\nt7 = [[0, 1, 2, 6, 7, 8], [4, 2, 0, 2, 4, 3], [2, 2, 2, 2, 2, 2, 2, 2], 0]; // 6-7 B\nt8 = [[0, 2, 3, 4, 5, 7], [3, 4, 3, 2, 3, 0], [1, 1, 1, 1, 1, 1, 1, 1], 0]; // 6-8 D\nt9 = [[0, 1, 2, 3, 5, 7], [3, 4, 2, 2, 3, 1], [1, 0, 1, 0, 0, 1, 0, 1], 0]; // 6-9\nt10 = [[0, 1, 3, 4, 5, 7], [3, 3, 3, 3, 2, 1], [1, 0, 0, 0, 0, 0, 0, 0], 39]; // 6-10\nt11 = [[0, 1, 2, 4, 5, 7], [3, 3, 3, 2, 3, 1], [1, 0, 0, 0, 0, 0, 1, 0], 40]; // 6-11\nt12 = [[0, 1, 2, 4, 6, 7], [3, 3, 2, 2, 3, 2], [1, 0, 0, 1, 0, 0, 0, 0], 41]; // 6-12\nt13 = [[0, 1, 3, 4, 6, 7], [3, 2, 4, 2, 2, 2], [1, 1, 0, 0, 0, 0, 0, 0], 42]; // 6-13\nt14 = [[0, 1, 3, 4, 5, 8], [3, 2, 3, 4, 3, 0], [1, 0, 1, 0, 1, 0, 1, 0], 0]; // 6-14\nt15 = [[0, 1, 2, 4, 5, 8], [3, 2, 3, 4, 2, 1], [1, 0, 0, 0, 0, 1, 0, 0], 0]; // 6-15\nt16 = [[0, 1, 4, 5, 6, 8], [3, 2, 2, 4, 3, 1], [1, 0, 1, 0, 0, 1, 0, 1], 0]; // 6-16\nt17 = [[0, 1, 2, 4, 7, 8], [3, 2, 2, 3, 3, 2], [1, 0, 0, 1, 0, 0, 0, 0], 43]; // 6-17\nt18 = [[0, 1, 2, 5, 7, 8], [3, 2, 2, 2, 4, 2], [1, 0, 0, 0, 0, 1, 0, 0], 0]; // 6-18\nt19 = [[0, 1, 3, 4, 7, 8], [3, 1, 3, 4, 3, 1], [1, 0, 0, 0, 0, 0, 1, 0], 44]; // 6-19\nt20 = [[0, 1, 4, 5, 8, 9], [3, 0, 3, 6, 3, 0], [3, 3, 3, 3, 3, 3, 3, 3], 0]; // 6-20 E\nt21 = [[0, 2, 3, 4, 6, 8], [2, 4, 2, 4, 1, 2], [1, 0, 0, 0, 0, 1, 0, 0], 0]; // 6-21\nt22 = [[0, 1, 2, 4, 6, 8], [2, 4, 1, 4, 2, 2], [1, 0, 1, 0, 0, 1, 0, 1], 0]; // 6-22\nt23 = [[0, 2, 3, 5, 6, 8], [2, 3, 4, 2, 2, 2], [1, 1, 1, 1, 0, 0, 0, 0], 45]; // 6-23\nt24 = [[0, 1, 3, 4, 6, 8], [2, 3, 3, 3, 3, 1], [1, 0, 0, 0, 0, 0, 0, 0], 46]; // 6-24\nt25 = [[0, 1, 3, 5, 6, 8], [2, 3, 3, 2, 4, 1], [1, 0, 0, 0, 0, 0, 0, 0], 47]; // 6-25\nt26 = [[0, 1, 3, 5, 7, 8], [2, 3, 2, 3, 4, 1], [1, 1, 0, 0, 0, 0, 0, 0], 48]; // 6-26\nt27 = [[0, 1, 3, 4, 6, 9], [2, 2, 5, 2, 2, 2], [1, 0, 0, 1, 0, 1, 1, 0], 0]; // 6-27\nt28 = [[0, 1, 3, 5, 6, 9], [2, 2, 4, 3, 2, 2], [1, 1, 1, 1, 0, 0, 0, 0], 49]; // 6-28\nt29 = [[0, 1, 3, 6, 8, 9], [2, 2, 4, 2, 3, 2], [1, 1, 0, 0, 0, 0, 0, 0], 50]; // 6- d29\nt30 = [[0, 1, 3, 6, 7, 9], [2, 2, 4, 2, 2, 3], [2, 0, 0, 2, 0, 2, 2, 0], 0]; // 6-30\nt31 = [[0, 1, 3, 5, 8, 9], [2, 2, 3, 4, 3, 1], [1, 0, 0, 0, 0, 1, 0, 0], 0]; // 6-31\nt32 = [[0, 2, 4, 5, 7, 9], [1, 4, 3, 2, 5, 0], [1, 1, 0, 0, 1, 1, 0, 0], 0]; // 6-32 C\nt33 = [[0, 2, 3, 5, 7, 9], [1, 4, 3, 2, 4, 1], [1, 0, 0, 0, 0, 1, 0, 0], 0]; // 6-33\nt34 = [[0, 1, 3, 5, 7, 9], [1, 4, 2, 4, 2, 2], [1, 0, 0, 0, 0, 1, 0, 0], 0]; // 6-34\nt35 = [[0, 2, 4, 6, 8, 10], [0, 6, 0, 6, 0, 3], [6, 6, 6, 6, 6, 6, 6, 6], 0]; // 6-35 F\nt36 = [[0, 1, 2, 3, 4, 7], [4, 3, 3, 2, 2, 1], [1, 0, 0, 0, 0, 0, 0, 0], 3]; // 6-36\nt37 = [[0, 1, 2, 3, 4, 8], [4, 3, 2, 3, 2, 1], [1, 1, 0, 0, 0, 0, 0, 0], 4]; // 6-37\nt38 = [[0, 1, 2, 3, 7, 8], [4, 2, 1, 2, 4, 2], [1, 1, 0, 0, 0, 0, 1, 1], 6]; // 6-38\nconst t39 = [[0, 2, 3, 4, 5, 8], [3, 3, 3, 3, 2, 1], [1, 0, 0, 0, 0, 0, 0, 0], 10]; // 6-39\nconst t40 = [[0, 1, 2, 3, 5, 8], [3, 3, 3, 2, 3, 1], [1, 0, 0, 0, 0, 0, 1, 0], 11]; // 6-40\nconst t41 = [[0, 1, 2, 3, 6, 8], [3, 3, 2, 2, 3, 2], [1, 0, 0, 1, 0, 0, 0, 0], 12]; // 6-41\nconst t42 = [[0, 1, 2, 3, 6, 9], [3, 2, 4, 2, 2, 2], [1, 1, 0, 0, 0, 0, 0, 0], 13]; // 6-42\nconst t43 = [[0, 1, 2, 5, 6, 8], [3, 2, 2, 3, 3, 2], [1, 0, 0, 1, 0, 0, 0, 0], 17]; // 6-43\nconst t44 = [[0, 1, 2, 5, 6, 9], [3, 1, 3, 4, 3, 1], [1, 0, 0, 0, 0, 0, 1, 0], 19]; // 6-44\nconst t45 = [[0, 2, 3, 4, 6, 9], [2, 3, 4, 2, 2, 2], [1, 1, 1, 1, 0, 0, 0, 0], 23]; // 6-45\nconst t46 = [[0, 1, 2, 4, 6, 9], [2, 3, 3, 3, 3, 1], [1, 0, 0, 0, 0, 0, 0, 0], 24]; // 6-46\nconst t47 = [[0, 1, 2, 4, 7, 9], [2, 3, 3, 2, 4, 1], [1, 0, 0, 0, 0, 0, 0, 0], 25]; // 6-47\nconst t48 = [[0, 1, 2, 5, 7, 9], [2, 3, 2, 3, 4, 1], [1, 1, 0, 0, 0, 0, 0, 0], 26]; // 6-48\nconst t49 = [[0, 1, 3, 4, 7, 9], [2, 2, 4, 3, 2, 2], [1, 1, 1, 1, 0, 0, 0, 0], 28]; // 6-49\nconst t50 = [[0, 1, 4, 6, 7, 9], [2, 2, 4, 2, 3, 2], [1, 1, 0, 0, 0, 0, 0, 0], 29]; // 6-50\nconst hexachord = [undefined, t1, t2, t3, t4, t5, t6, t7, t8, t9,\n t10, t11, t12, t13, t14, t15, t16, t17, t18, t19,\n t20, t21, t22, t23, t24, t25, t26, t27, t28, t29,\n t30, t31, t32, t33, t34, t35, t36, t37, t38, t39,\n t40, t41, t42, t43, t44, t45, t46, t47, t48, t49,\n t50];\n\n\nt1 = [[0, 1, 2, 3, 4, 5, 6], [6, 5, 4, 3, 2, 1], [1, 1, 0, 0, 0, 0, 0, 0], 0]; // 7-1\nt2 = [[0, 1, 2, 3, 4, 5, 7], [5, 5, 4, 3, 3, 1], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 7-2\nt3 = [[0, 1, 2, 3, 4, 5, 8], [5, 4, 4, 4, 3, 1], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 7-3\nt4 = [[0, 1, 2, 3, 4, 6, 7], [5, 4, 4, 3, 3, 2], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 7-4\nt5 = [[0, 1, 2, 3, 5, 6, 7], [5, 4, 3, 3, 4, 2], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 7-5\nt6 = [[0, 1, 2, 3, 4, 7, 8], [5, 3, 3, 4, 4, 2], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 7-6\nt7 = [[0, 1, 2, 3, 6, 7, 8], [5, 3, 2, 3, 5, 3], [1, 0, 0, 1, 0, 0, 0, 0], 0]; // 7-7\nt8 = [[0, 2, 3, 4, 5, 6, 8], [4, 5, 4, 4, 2, 2], [1, 1, 0, 0, 0, 0, 0, 0], 0]; // 7-8\nt9 = [[0, 1, 2, 3, 4, 6, 8], [4, 5, 3, 4, 3, 2], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 7-9\nt10 = [[0, 1, 2, 3, 4, 6, 9], [4, 4, 5, 3, 3, 2], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 7-10\nt11 = [[0, 1, 3, 4, 5, 6, 8], [4, 4, 4, 4, 4, 1], [1, 0, 1, 0, 0, 0, 0, 0], 0]; // 7-11\nt12 = [[0, 1, 2, 3, 4, 7, 9], [4, 4, 4, 3, 4, 2], [1, 1, 1, 1, 0, 0, 0, 0], 36]; // 7-12 z\nt13 = [[0, 1, 2, 4, 5, 6, 8], [4, 4, 3, 5, 3, 2], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 7-13\nt14 = [[0, 1, 2, 3, 5, 7, 8], [4, 4, 3, 3, 5, 2], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 7-14\nt15 = [[0, 1, 2, 4, 6, 7, 8], [4, 4, 2, 4, 4, 3], [1, 1, 1, 1, 0, 0, 0, 0], 0]; // 7-15\nt16 = [[0, 1, 2, 3, 5, 6, 9], [4, 3, 5, 4, 3, 2], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 7-16\nt17 = [[0, 1, 2, 4, 5, 6, 9], [4, 3, 4, 5, 4, 1], [1, 1, 0, 0, 0, 0, 0, 0], 37]; // 7-17 z\nt18 = [[0, 1, 2, 3, 5, 8, 9], [4, 3, 4, 4, 4, 2], [1, 0, 0, 0, 0, 0, 0, 0], 38]; // 7-18 z\nt19 = [[0, 1, 2, 3, 6, 7, 9], [4, 3, 4, 3, 4, 3], [1, 0, 0, 1, 0, 0, 0, 0], 0]; // 7-19\nt20 = [[0, 1, 2, 4, 7, 8, 9], [4, 3, 3, 4, 5, 2], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 7-20\nt21 = [[0, 1, 2, 4, 5, 8, 9], [4, 2, 4, 6, 4, 1], [1, 0, 1, 0, 0, 0, 0, 0], 0]; // 7-21\nt22 = [[0, 1, 2, 5, 6, 8, 9], [4, 2, 4, 5, 4, 2], [1, 1, 1, 1, 0, 0, 0, 0], 0]; // 7-22\nt23 = [[0, 2, 3, 4, 5, 7, 9], [3, 5, 4, 3, 5, 1], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 7-23\nt24 = [[0, 1, 2, 3, 5, 7, 9], [3, 5, 3, 4, 4, 2], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 7-24\nt25 = [[0, 2, 3, 4, 6, 7, 9], [3, 4, 5, 3, 4, 2], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 7-25\nt26 = [[0, 1, 3, 4, 5, 7, 9], [3, 4, 4, 5, 3, 2], [1, 0, 1, 0, 0, 0, 0, 0], 0]; // 7-26\nt27 = [[0, 1, 2, 4, 5, 7, 9], [3, 4, 4, 4, 5, 1], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 7-27\nt28 = [[0, 1, 3, 5, 6, 7, 9], [3, 4, 4, 4, 3, 3], [1, 0, 0, 1, 0, 0, 0, 0], 0]; // 7-28\nt29 = [[0, 1, 2, 4, 6, 7, 9], [3, 4, 4, 3, 5, 2], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 7-29\nt30 = [[0, 1, 2, 4, 6, 8, 9], [3, 4, 3, 5, 4, 2], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 7-30\nt31 = [[0, 1, 3, 4, 6, 7, 9], [3, 3, 6, 3, 3, 3], [1, 0, 0, 1, 0, 0, 0, 0], 0]; // 7-31\nt32 = [[0, 1, 3, 4, 6, 8, 9], [3, 3, 5, 4, 4, 2], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 7-32\nt33 = [[0, 1, 2, 4, 6, 8, 10], [2, 6, 2, 6, 2, 3], [1, 1, 1, 1, 0, 0, 0, 0], 0]; // 7-33\nt34 = [[0, 1, 3, 4, 6, 8, 10], [2, 5, 4, 4, 4, 2], [1, 1, 0, 0, 0, 0, 0, 0], 0]; // 7-34\nt35 = [[0, 1, 3, 5, 6, 8, 10], [2, 5, 4, 3, 6, 1], [1, 1, 0, 0, 0, 0, 0, 0], 0]; // 7-35\nt36 = [[0, 1, 2, 3, 5, 6, 8], [4, 4, 4, 3, 4, 2], [1, 0, 0, 1, 0, 0, 0, 0], 12]; // 7-36 z\nt37 = [[0, 1, 3, 4, 5, 7, 8], [4, 3, 4, 5, 4, 1], [1, 1, 0, 0, 0, 0, 0, 0], 17]; // 7-37 z\nt38 = [[0, 1, 2, 4, 5, 7, 8], [4, 3, 4, 4, 4, 2], [1, 0, 0, 0, 0, 0, 0, 0], 18]; // 7-38 z\nconst septachord = [undefined, t1, t2, t3, t4, t5, t6, t7, t8, t9,\n t10, t11, t12, t13, t14, t15, t16, t17, t18, t19,\n t20, t21, t22, t23, t24, t25, t26, t27, t28, t29,\n t30, t31, t32, t33, t34, t35, t36, t37, t38];\n\n\nt1 = [[0, 1, 2, 3, 4, 5, 6, 7], [7, 6, 5, 4, 4, 2], [1, 1, 0, 0, 0, 0, 0, 0], 0]; // 8-1\nt2 = [[0, 1, 2, 3, 4, 5, 6, 8], [6, 6, 5, 5, 4, 2], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 8-2\nt3 = [[0, 1, 2, 3, 4, 5, 6, 9], [6, 5, 6, 5, 4, 2], [1, 1, 0, 0, 0, 0, 0, 0], 0]; // 8-3\nt4 = [[0, 1, 2, 3, 4, 5, 7, 8], [6, 5, 5, 5, 5, 2], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 8-4\nt5 = [[0, 1, 2, 3, 4, 6, 7, 8], [6, 5, 4, 5, 5, 3], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 8-5\nt6 = [[0, 1, 2, 3, 5, 6, 7, 8], [6, 5, 4, 4, 6, 3], [1, 1, 1, 1, 0, 0, 0, 0], 0]; // 8-6\nt7 = [[0, 1, 2, 3, 4, 5, 8, 9], [6, 4, 5, 6, 5, 2], [1, 1, 0, 0, 0, 0, 0, 0], 0]; // 8-7\nt8 = [[0, 1, 2, 3, 4, 7, 8, 9], [6, 4, 4, 5, 6, 3], [1, 1, 1, 1, 0, 0, 0, 0], 0]; // 8-8\nt9 = [[0, 1, 2, 3, 6, 7, 8, 9], [6, 4, 4, 4, 6, 4], [2, 2, 2, 2, 0, 0, 0, 0], 0]; // 8-9\nt10 = [[0, 2, 3, 4, 5, 6, 7, 9], [5, 6, 6, 4, 5, 2], [1, 1, 1, 1, 0, 0, 0, 0], 0]; // 8-10\nt11 = [[0, 1, 2, 3, 4, 5, 7, 9], [5, 6, 5, 5, 5, 2], [1, 0, 1, 0, 0, 0, 0, 0], 0]; // 8-11\nt12 = [[0, 1, 3, 4, 5, 6, 7, 9], [5, 5, 6, 5, 4, 3], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 8-12\nt13 = [[0, 1, 2, 3, 4, 6, 7, 9], [5, 5, 6, 4, 5, 3], [1, 0, 0, 1, 0, 0, 0, 0], 0]; // 8-13\nt14 = [[0, 1, 2, 4, 5, 6, 7, 9], [5, 5, 5, 5, 6, 2], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 8-14\nt15 = [[0, 1, 2, 3, 4, 6, 8, 9], [5, 5, 5, 5, 5, 3], [1, 0, 0, 0, 0, 0, 0, 0], 29]; // 8-15 zz\nt16 = [[0, 1, 2, 3, 5, 7, 8, 9], [5, 5, 4, 5, 6, 3], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 8-16\nt17 = [[0, 1, 3, 4, 5, 6, 8, 9], [5, 4, 6, 6, 5, 2], [1, 1, 1, 1, 0, 0, 0, 0], 0]; // 8-17\nt18 = [[0, 1, 2, 3, 5, 6, 8, 9], [5, 4, 6, 5, 5, 3], [1, 0, 0, 1, 0, 0, 0, 0], 0]; // 8-18\nt19 = [[0, 1, 2, 4, 5, 6, 8, 9], [5, 4, 5, 7, 5, 2], [1, 0, 1, 0, 0, 0, 0, 0], 0]; // 8-19\nt20 = [[0, 1, 2, 4, 5, 7, 8, 9], [5, 4, 5, 6, 6, 2], [1, 1, 0, 0, 0, 0, 0, 0], 0]; // 8-20\nt21 = [[0, 1, 2, 3, 4, 6, 8, 10], [4, 7, 4, 6, 4, 3], [1, 1, 1, 1, 0, 0, 0, 0], 0]; // 8-21\nt22 = [[0, 1, 2, 3, 5, 6, 8, 10], [4, 6, 5, 5, 6, 2], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 8-22\nt23 = [[0, 1, 2, 3, 5, 7, 8, 10], [4, 6, 5, 4, 7, 2], [1, 1, 0, 0, 0, 0, 0, 0], 0]; // 8-23\nt24 = [[0, 1, 2, 4, 5, 6, 8, 10], [4, 6, 4, 7, 4, 3], [1, 1, 1, 1, 0, 0, 0, 0], 0]; // 8-24\nt25 = [[0, 1, 2, 4, 6, 7, 8, 10], [4, 6, 4, 6, 4, 4], [2, 2, 2, 2, 0, 0, 0, 0], 0]; // 8-25\nt26 = [[0, 1, 2, 4, 5, 7, 9, 10], [4, 5, 6, 5, 6, 2], [1, 1, 0, 0, 0, 0, 0, 0], 0]; // 8-26\nt27 = [[0, 1, 2, 4, 5, 7, 8, 10], [4, 5, 6, 5, 5, 3], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 8-27\nt28 = [[0, 1, 3, 4, 6, 7, 9, 10], [4, 4, 8, 4, 4, 4], [4, 4, 4, 4, 0, 0, 0, 0], 0]; // 8-28\nt29 = [[0, 1, 2, 3, 5, 6, 7, 9], [5, 5, 5, 5, 5, 3], [1, 0, 0, 0, 0, 0, 0, 0], 15]; // 8-29\nconst octachord = [undefined, t1, t2, t3, t4, t5, t6, t7, t8, t9,\n t10, t11, t12, t13, t14, t15, t16, t17, t18, t19,\n t20, t21, t22, t23, t24, t25, t26, t27, t28, t29];\n\nt1 = [[0, 1, 2, 3, 4, 5, 6, 7, 8], [8, 7, 6, 6, 6, 3], [1, 1, 0, 0, 0, 0, 0, 0], 0]; // 9-1\nt2 = [[0, 1, 2, 3, 4, 5, 6, 7, 9], [7, 7, 7, 6, 6, 3], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 9-2\nt3 = [[0, 1, 2, 3, 4, 5, 6, 8, 9], [7, 6, 7, 7, 6, 3], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 9-3\nt4 = [[0, 1, 2, 3, 4, 5, 7, 8, 9], [7, 6, 6, 7, 7, 3], [1, 0, 1, 0, 0, 0, 0, 0], 0]; // 9-4\nt5 = [[0, 1, 2, 3, 4, 6, 7, 8, 9], [7, 6, 6, 6, 7, 4], [1, 0, 0, 1, 0, 0, 0, 0], 0]; // 9-5\nt6 = [[0, 1, 2, 3, 4, 5, 6, 8, 10], [6, 8, 6, 7, 6, 3], [1, 1, 1, 1, 0, 0, 0, 0], 0]; // 9-6\nt7 = [[0, 1, 2, 3, 4, 5, 7, 8, 10], [6, 7, 7, 6, 7, 3], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 9-7\nt8 = [[0, 1, 2, 3, 4, 6, 7, 8, 10], [6, 7, 6, 7, 6, 4], [1, 0, 0, 1, 0, 0, 0, 0], 0]; // 9-8\nt9 = [[0, 1, 2, 3, 5, 6, 7, 8, 10], [6, 7, 6, 6, 8, 3], [1, 1, 0, 0, 0, 0, 0, 0], 0]; // 9-9\nt10 = [[0, 1, 2, 3, 4, 6, 7, 9, 10], [6, 6, 8, 6, 6, 4], [1, 1, 1, 1, 0, 0, 0, 0], 0]; // 9-10\nt11 = [[0, 1, 2, 3, 5, 6, 7, 9, 10], [6, 6, 7, 7, 7, 3], [1, 0, 0, 0, 0, 0, 0, 0], 0]; // 9-11\nt12 = [[0, 1, 2, 4, 5, 6, 8, 9, 10], [6, 6, 6, 9, 6, 3], [3, 3, 3, 3, 0, 0, 0, 0], 0]; // 9-12\nconst nonachord = [undefined, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12];\n\nt1 = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [9, 8, 8, 8, 8, 4], [1, 1, 0, 0, 0, 0, 0, 0], 0]; // 10-1\nt2 = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 10], [8, 9, 8, 8, 8, 4], [1, 1, 1, 1, 0, 0, 0, 0], 0]; // 10-2\nt3 = [[0, 1, 2, 3, 4, 5, 6, 7, 9, 10], [8, 8, 9, 8, 8, 4], [1, 1, 1, 1, 0, 0, 0, 0], 0]; // 10-3\nt4 = [[0, 1, 2, 3, 4, 5, 6, 8, 9, 10], [8, 8, 8, 9, 8, 4], [1, 1, 1, 1, 0, 0, 0, 0], 0]; // 10-4\nt5 = [[0, 1, 2, 3, 4, 5, 7, 8, 9, 10], [8, 8, 8, 8, 9, 4], [1, 1, 0, 0, 0, 0, 0, 0], 0]; // 10-5\nt6 = [[0, 1, 2, 3, 4, 6, 7, 8, 9, 10], [8, 8, 8, 8, 8, 5], [2, 2, 2, 2, 0, 0, 0, 0], 0]; // 10-6\nconst decachord = [undefined, t1, t2, t3, t4, t5, t6];\n\nt1 = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [10, 10, 10, 10, 10, 5], [1, 1, 1, 1, 0, 0, 0, 0], 0];// 11-1\nconst undecachord = [undefined, t1];\n\nt1 = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [12, 12, 12, 12, 12, 6], [12, 12, 12, 12, 0, 0, 0, 0], 0]; // 12-1\nconst dodecachord = [undefined, t1];\n\n\n// -------------------------------------------------------------------------------\nexport const FORTE = [undefined, monad, diad, trichord, tetrachord, pentachord, hexachord, septachord, octachord,\n nonachord, decachord, undecachord, dodecachord];\n\n\n// to access the data for a single form, use:\n// forte [size[tetra]] = 4\n// [number[forte]] = 3\n// [data[0=pitches, 1=ICV, 2=invariance vector [morris], 3 = Z-relation]]\n// [element in list]\n//-------------------------------------------------------------------------------\n\n// cardinality 1\nconst card_1 ={\n '1,0': [FORTE[1][1][0], // 1\n FORTE[1][1][2], // var\n FORTE[1][1][1], //icv\n ],\n};\n// cardinality 2\nconst card_2 ={\n '1,0': [FORTE[2][1][0], // 2\n FORTE[2][1][2], // var\n FORTE[2][1][1], //icv\n ],\n '2,0': [FORTE[2][2][0], // 3\n FORTE[2][2][2], // var\n FORTE[2][2][1], //icv\n ],\n '3,0': [FORTE[2][3][0], // 4\n FORTE[2][3][2], // var\n FORTE[2][3][1], //icv\n ],\n '4,0': [FORTE[2][4][0], // 5\n FORTE[2][4][2], // var\n FORTE[2][4][1], //icv\n ],\n '5,0': [FORTE[2][5][0], // 6\n FORTE[2][5][2], // var\n FORTE[2][5][1], //icv\n ],\n '6,0': [FORTE[2][6][0], // 7\n FORTE[2][6][2], // var\n FORTE[2][6][1], //icv\n ],\n};\n// cardinality 3\nconst card_3 ={\n '1,0': [FORTE[3][1][0], // 8\n FORTE[3][1][2], // var\n FORTE[3][1][1], //icv\n ],\n '2,1': [FORTE[3][2][0], // 9\n FORTE[3][2][2], // var\n FORTE[3][2][1], //icv\n ],\n '2,-1': [[0, 2, 3], // 10\n FORTE[3][2][2], // var\n FORTE[3][2][1], //icv\n ],\n '3,1': [FORTE[3][3][0], // 11\n FORTE[3][3][2], // var\n FORTE[3][3][1], //icv\n ],\n '3,-1': [[0, 3, 4], // 12\n FORTE[3][3][2], // var\n FORTE[3][3][1], //icv\n ],\n '4,1': [FORTE[3][4][0], // 13\n FORTE[3][4][2], // var\n FORTE[3][4][1], //icv\n ],\n '4,-1': [[0, 4, 5], // 14\n FORTE[3][4][2], // var\n FORTE[3][4][1], //icv\n ],\n '5,1': [FORTE[3][5][0], // 15\n FORTE[3][5][2], // var\n FORTE[3][5][1], //icv\n ],\n '5,-1': [[0, 5, 6], // 16\n FORTE[3][5][2], // var\n FORTE[3][5][1], //icv\n ],\n '6,0': [FORTE[3][6][0], // 17\n FORTE[3][6][2], // var\n FORTE[3][6][1], //icv\n ],\n '7,1': [FORTE[3][7][0], // 18\n FORTE[3][7][2], // var\n FORTE[3][7][1], //icv\n ],\n '7,-1': [[0, 3, 5], // 19\n FORTE[3][7][2], // var\n FORTE[3][7][1], //icv\n ],\n '8,1': [FORTE[3][8][0], // 20\n FORTE[3][8][2], // var\n FORTE[3][8][1], //icv\n ],\n '8,-1': [[0, 4, 6], // 21\n FORTE[3][8][2], // var\n FORTE[3][8][1], //icv\n ],\n '9,0': [FORTE[3][9][0], // 22\n FORTE[3][9][2], // var\n FORTE[3][9][1], //icv\n ],\n '10,0': [FORTE[3][10][0], // 23\n FORTE[3][10][2], // var\n FORTE[3][10][1], //icv\n ],\n '11,1': [FORTE[3][11][0], // 24\n FORTE[3][11][2], // var\n FORTE[3][11][1], //icv\n ],\n '11,-1': [[0, 4, 7], // 25\n FORTE[3][11][2], // var\n FORTE[3][11][1], //icv\n ],\n '12,0': [FORTE[3][12][0], // 26\n FORTE[3][12][2], // var\n FORTE[3][12][1], //icv\n ],\n};\n// cardinality 4\nconst card_4 ={\n '1,0': [FORTE[4][1][0], // 27\n FORTE[4][1][2], // var\n FORTE[4][1][1], //icv\n ],\n '2,1': [FORTE[4][2][0], // 28\n FORTE[4][2][2], // var\n FORTE[4][2][1], //icv\n ],\n '2,-1': [[0, 2, 3, 4], // 29\n FORTE[4][2][2], // var\n FORTE[4][2][1], //icv\n ],\n '3,0': [FORTE[4][3][0], // 30\n FORTE[4][3][2], // var\n FORTE[4][3][1], //icv\n ],\n '4,1': [FORTE[4][4][0], // 31\n FORTE[4][4][2], // var\n FORTE[4][4][1], //icv\n ],\n '4,-1': [[0, 3, 4, 5], // 32\n FORTE[4][4][2], // var\n FORTE[4][4][1], //icv\n ],\n '5,1': [FORTE[4][5][0], // 33\n FORTE[4][5][2], // var\n FORTE[4][5][1], //icv\n ],\n '5,-1': [[0, 4, 5, 6], // 34\n FORTE[4][5][2], // var\n FORTE[4][5][1], //icv\n ],\n '6,0': [FORTE[4][6][0], // 35\n FORTE[4][6][2], // var\n FORTE[4][6][1], //icv\n ],\n '7,0': [FORTE[4][7][0], // 36\n FORTE[4][7][2], // var\n FORTE[4][7][1], //icv\n ],\n '8,0': [FORTE[4][8][0], // 37\n FORTE[4][8][2], // var\n FORTE[4][8][1], //icv\n ],\n '9,0': [FORTE[4][9][0], // 38\n FORTE[4][9][2], // var\n FORTE[4][9][1], //icv\n ],\n '10,0': [FORTE[4][10][0], // 39\n FORTE[4][10][2], // var\n FORTE[4][10][1], //icv\n ],\n '11,1': [FORTE[4][11][0], // 40\n FORTE[4][11][2], // var\n FORTE[4][11][1], //icv\n ],\n '11,-1': [[0, 2, 4, 5], // 41\n FORTE[4][11][2], // var\n FORTE[4][11][1], //icv\n ],\n '12,1': [FORTE[4][12][0], // 42\n FORTE[4][12][2], // var\n FORTE[4][12][1], //icv\n ],\n '12,-1': [[0, 3, 4, 6], // 43\n FORTE[4][12][2], // var\n FORTE[4][12][1], //icv\n ],\n '13,1': [FORTE[4][13][0], // 44\n FORTE[4][13][2], // var\n FORTE[4][13][1], //icv\n ],\n '13,-1': [[0, 3, 5, 6], // 45\n FORTE[4][13][2], // var\n FORTE[4][13][1], //icv\n ],\n '14,1': [FORTE[4][14][0], // 46\n FORTE[4][14][2], // var\n FORTE[4][14][1], //icv\n ],\n '14,-1': [[0, 4, 5, 7], // 47\n FORTE[4][14][2], // var\n FORTE[4][14][1], //icv\n ],\n '15,1': [FORTE[4][15][0], // 48\n FORTE[4][15][2], // var\n FORTE[4][15][1], //icv\n ],\n '15,-1': [[0, 2, 5, 6], // 49\n FORTE[4][15][2], // var\n FORTE[4][15][1], //icv\n ],\n '16,1': [FORTE[4][16][0], // 50\n FORTE[4][16][2], // var\n FORTE[4][16][1], //icv\n ],\n '16,-1': [[0, 2, 6, 7], // 51\n FORTE[4][16][2], // var\n FORTE[4][16][1], //icv\n ],\n '17,0': [FORTE[4][17][0], // 52\n FORTE[4][17][2], // var\n FORTE[4][17][1], //icv\n ],\n '18,1': [FORTE[4][18][0], // 53\n FORTE[4][18][2], // var\n FORTE[4][18][1], //icv\n ],\n '18,-1': [[0, 3, 6, 7], // 54\n FORTE[4][18][2], // var\n FORTE[4][18][1], //icv\n ],\n '19,1': [FORTE[4][19][0], // 55\n FORTE[4][19][2], // var\n FORTE[4][19][1], //icv\n ],\n '19,-1': [[0, 4, 7, 8], // 56\n FORTE[4][19][2], // var\n FORTE[4][19][1], //icv\n ],\n '20,0': [FORTE[4][20][0], // 57\n FORTE[4][20][2], // var\n FORTE[4][20][1], //icv\n ],\n '21,0': [FORTE[4][21][0], // 58\n FORTE[4][21][2], // var\n FORTE[4][21][1], //icv\n ],\n '22,1': [FORTE[4][22][0], // 59\n FORTE[4][22][2], // var\n FORTE[4][22][1], //icv\n ],\n '22,-1': [[0, 3, 5, 7], // 60\n FORTE[4][22][2], // var\n FORTE[4][22][1], //icv\n ],\n '23,0': [FORTE[4][23][0], // 61\n FORTE[4][23][2], // var\n FORTE[4][23][1], //icv\n ],\n '24,0': [FORTE[4][24][0], // 62\n FORTE[4][24][2], // var\n FORTE[4][24][1], //icv\n ],\n '25,0': [FORTE[4][25][0], // 63\n FORTE[4][25][2], // var\n FORTE[4][25][1], //icv\n ],\n '26,0': [FORTE[4][26][0], // 64\n FORTE[4][26][2], // var\n FORTE[4][26][1], //icv\n ],\n '27,1': [FORTE[4][27][0], // 65\n FORTE[4][27][2], // var\n FORTE[4][27][1], //icv\n ],\n '27,-1': [[0, 3, 6, 8], // 66\n FORTE[4][27][2], // var\n FORTE[4][27][1], //icv\n ],\n '28,0': [FORTE[4][28][0], // 67\n FORTE[4][28][2], // var\n FORTE[4][28][1], //icv\n ],\n '29,1': [FORTE[4][29][0], // 68\n FORTE[4][29][2], // var\n FORTE[4][29][1], //icv\n ],\n '29,-1': [[0, 4, 6, 7], // 69\n FORTE[4][29][2], // var\n FORTE[4][29][1], //icv\n ],\n};\n// cardinality 5\nconst card_5 ={\n '1,0': [FORTE[5][1][0], // 70\n FORTE[5][1][2], // var\n FORTE[5][1][1], //icv\n ],\n '2,1': [FORTE[5][2][0], // 71\n FORTE[5][2][2], // var\n FORTE[5][2][1], //icv\n ],\n '2,-1': [[0, 2, 3, 4, 5], // 72\n FORTE[5][2][2], // var\n FORTE[5][2][1], //icv\n ],\n '3,1': [FORTE[5][3][0], // 73\n FORTE[5][3][2], // var\n FORTE[5][3][1], //icv\n ],\n '3,-1': [[0, 1, 3, 4, 5], // 74\n FORTE[5][3][2], // var\n FORTE[5][3][1], //icv\n ],\n '4,1': [FORTE[5][4][0], // 75\n FORTE[5][4][2], // var\n FORTE[5][4][1], //icv\n ],\n '4,-1': [[0, 3, 4, 5, 6], // 76\n FORTE[5][4][2], // var\n FORTE[5][4][1], //icv\n ],\n '5,1': [FORTE[5][5][0], // 77\n FORTE[5][5][2], // var\n FORTE[5][5][1], //icv\n ],\n '5,-1': [[0, 4, 5, 6, 7], // 78\n FORTE[5][5][2], // var\n FORTE[5][5][1], //icv\n ],\n '6,1': [FORTE[5][6][0], // 79\n FORTE[5][6][2], // var\n FORTE[5][6][1], //icv\n ],\n '6,-1': [[0, 1, 4, 5, 6], // 80\n FORTE[5][6][2], // var\n FORTE[5][6][1], //icv\n ],\n '7,1': [FORTE[5][7][0], // 81\n FORTE[5][7][2], // var\n FORTE[5][7][1], //icv\n ],\n '7,-1': [[0, 1, 5, 6, 7], // 82\n FORTE[5][7][2], // var\n FORTE[5][7][1], //icv\n ],\n '8,0': [FORTE[5][8][0], // 83\n FORTE[5][8][2], // var\n FORTE[5][8][1], //icv\n ],\n '9,1': [FORTE[5][9][0], // 84\n FORTE[5][9][2], // var\n FORTE[5][9][1], //icv\n ],\n '9,-1': [[0, 2, 4, 5, 6], // 85\n FORTE[5][9][2], // var\n FORTE[5][9][1], //icv\n ],\n '10,1': [FORTE[5][10][0], // 86\n FORTE[5][10][2], // var\n FORTE[5][10][1], //icv\n ],\n '10,-1': [[0, 2, 3, 5, 6], // 87\n FORTE[5][10][2], // var\n FORTE[5][10][1], //icv\n ],\n '11,1': [FORTE[5][11][0], // 88\n FORTE[5][11][2], // var\n FORTE[5][11][1], //icv\n ],\n '11,-1': [[0, 3, 4, 5, 7], // 89\n FORTE[5][11][2], // var\n FORTE[5][11][1], //icv\n ],\n '12,0': [FORTE[5][12][0], // 90\n FORTE[5][12][2], // var\n FORTE[5][12][1], //icv\n ],\n '13,1': [FORTE[5][13][0], // 91\n FORTE[5][13][2], // var\n FORTE[5][13][1], //icv\n ],\n '13,-1': [[0, 4, 6, 7, 8], // 92\n FORTE[5][13][2], // var\n FORTE[5][13][1], //icv\n ],\n '14,1': [FORTE[5][14][0], // 93\n FORTE[5][14][2], // var\n FORTE[5][14][1], //icv\n ],\n '14,-1': [[0, 2, 5, 6, 7], // 94\n FORTE[5][14][2], // var\n FORTE[5][14][1], //icv\n ],\n '15,0': [FORTE[5][15][0], // 95\n FORTE[5][15][2], // var\n FORTE[5][15][1], //icv\n ],\n '16,1': [FORTE[5][16][0], // 96\n FORTE[5][16][2], // var\n FORTE[5][16][1], //icv\n ],\n '16,-1': [[0, 3, 4, 6, 7], // 97\n FORTE[5][16][2], // var\n FORTE[5][16][1], //icv\n ],\n '17,0': [FORTE[5][17][0], // 98\n FORTE[5][17][2], // var\n FORTE[5][17][1], //icv\n ],\n '18,1': [FORTE[5][18][0], // 99\n FORTE[5][18][2], // var\n FORTE[5][18][1], //icv\n ],\n '18,-1': [[0, 2, 3, 6, 7], // 100\n FORTE[5][18][2], // var\n FORTE[5][18][1], //icv\n ],\n '19,1': [FORTE[5][19][0], // 101\n FORTE[5][19][2], // var\n FORTE[5][19][1], //icv\n ],\n '19,-1': [[0, 1, 4, 6, 7], // 102\n FORTE[5][19][2], // var\n FORTE[5][19][1], //icv\n ],\n '20,1': [FORTE[5][20][0], // 103\n FORTE[5][20][2], // var\n FORTE[5][20][1], //icv\n ],\n '20,-1': [[0, 1, 5, 7, 8], // 104\n FORTE[5][20][2], // var\n FORTE[5][20][1], //icv\n ],\n '21,1': [FORTE[5][21][0], // 105\n FORTE[5][21][2], // var\n FORTE[5][21][1], //icv\n ],\n '21,-1': [[0, 3, 4, 7, 8], // 106\n FORTE[5][21][2], // var\n FORTE[5][21][1], //icv\n ],\n '22,0': [FORTE[5][22][0], // 107\n FORTE[5][22][2], // var\n FORTE[5][22][1], //icv\n ],\n '23,1': [FORTE[5][23][0], // 108\n FORTE[5][23][2], // var\n FORTE[5][23][1], //icv\n ],\n '23,-1': [[0, 2, 4, 5, 7], // 109\n FORTE[5][23][2], // var\n FORTE[5][23][1], //icv\n ],\n '24,1': [FORTE[5][24][0], // 110\n FORTE[5][24][2], // var\n FORTE[5][24][1], //icv\n ],\n '24,-1': [[0, 2, 4, 6, 7], // 111\n FORTE[5][24][2], // var\n FORTE[5][24][1], //icv\n ],\n '25,1': [FORTE[5][25][0], // 112\n FORTE[5][25][2], // var\n FORTE[5][25][1], //icv\n ],\n '25,-1': [[0, 3, 5, 6, 8], // 113\n FORTE[5][25][2], // var\n FORTE[5][25][1], //icv\n ],\n '26,1': [FORTE[5][26][0], // 114\n FORTE[5][26][2], // var\n FORTE[5][26][1], //icv\n ],\n '26,-1': [[0, 3, 4, 6, 8], // 115\n FORTE[5][26][2], // var\n FORTE[5][26][1], //icv\n ],\n '27,1': [FORTE[5][27][0], // 116\n FORTE[5][27][2], // var\n FORTE[5][27][1], //icv\n ],\n '27,-1': [[0, 3, 5, 7, 8], // 117\n FORTE[5][27][2], // var\n FORTE[5][27][1], //icv\n ],\n '28,1': [FORTE[5][28][0], // 118\n FORTE[5][28][2], // var\n FORTE[5][28][1], //icv\n ],\n '28,-1': [[0, 2, 5, 6, 8], // 119\n FORTE[5][28][2], // var\n FORTE[5][28][1], //icv\n ],\n '29,1': [FORTE[5][29][0], // 120\n FORTE[5][29][2], // var\n FORTE[5][29][1], //icv\n ],\n '29,-1': [[0, 2, 5, 7, 8], // 121\n FORTE[5][29][2], // var\n FORTE[5][29][1], //icv\n ],\n '30,1': [FORTE[5][30][0], // 122\n FORTE[5][30][2], // var\n FORTE[5][30][1], //icv\n ],\n '30,-1': [[0, 2, 4, 7, 8], // 123\n FORTE[5][30][2], // var\n FORTE[5][30][1], //icv\n ],\n '31,1': [FORTE[5][31][0], // 124\n FORTE[5][31][2], // var\n FORTE[5][31][1], //icv\n ],\n '31,-1': [[0, 3, 6, 8, 9], // 125\n FORTE[5][31][2], // var\n FORTE[5][31][1], //icv\n ],\n '32,1': [FORTE[5][32][0], // 126\n FORTE[5][32][2], // var\n FORTE[5][32][1], //icv\n ],\n '32,-1': [[0, 3, 5, 8, 9], // 127\n FORTE[5][32][2], // var\n FORTE[5][32][1], //icv\n ],\n '33,0': [FORTE[5][33][0], // 128\n FORTE[5][33][2], // var\n FORTE[5][33][1], //icv\n ],\n '34,0': [FORTE[5][34][0], // 129\n FORTE[5][34][2], // var\n FORTE[5][34][1], //icv\n ],\n '35,0': [FORTE[5][35][0], // 130\n FORTE[5][35][2], // var\n FORTE[5][35][1], //icv\n ],\n '36,1': [FORTE[5][36][0], // 131\n FORTE[5][36][2], // var\n FORTE[5][36][1], //icv\n ],\n '36,-1': [[0, 3, 5, 6, 7], // 132\n FORTE[5][36][2], // var\n FORTE[5][36][1], //icv\n ],\n '37,0': [FORTE[5][37][0], // 133\n FORTE[5][37][2], // var\n FORTE[5][37][1], //icv\n ],\n '38,1': [FORTE[5][38][0], // 134\n FORTE[5][38][2], // var\n FORTE[5][38][1], //icv\n ],\n '38,-1': [[0, 3, 6, 7, 8], // 135\n FORTE[5][38][2], // var\n FORTE[5][38][1], //icv\n ],\n};\n// cardinality 6\nconst card_6 ={\n '1,0': [FORTE[6][1][0], // 136\n FORTE[6][1][2], // var\n FORTE[6][1][1], //icv\n ],\n '2,1': [FORTE[6][2][0], // 137\n FORTE[6][2][2], // var\n FORTE[6][2][1], //icv\n ],\n '2,-1': [[0, 2, 3, 4, 5, 6], // 138\n FORTE[6][2][2], // var\n FORTE[6][2][1], //icv\n ],\n '3,1': [FORTE[6][3][0], // 139\n FORTE[6][3][2], // var\n FORTE[6][3][1], //icv\n ],\n '3,-1': [[0, 1, 3, 4, 5, 6], // 140\n FORTE[6][3][2], // var\n FORTE[6][3][1], //icv\n ],\n '4,0': [FORTE[6][4][0], // 141\n FORTE[6][4][2], // var\n FORTE[6][4][1], //icv\n ],\n '5,1': [FORTE[6][5][0], // 142\n FORTE[6][5][2], // var\n FORTE[6][5][1], //icv\n ],\n '5,-1': [[0, 1, 4, 5, 6, 7], // 143\n FORTE[6][5][2], // var\n FORTE[6][5][1], //icv\n ],\n '6,0': [FORTE[6][6][0], // 144\n FORTE[6][6][2], // var\n FORTE[6][6][1], //icv\n ],\n '7,0': [FORTE[6][7][0], // 145\n FORTE[6][7][2], // var\n FORTE[6][7][1], //icv\n ],\n '8,0': [FORTE[6][8][0], // 146\n FORTE[6][8][2], // var\n FORTE[6][8][1], //icv\n ],\n '9,1': [FORTE[6][9][0], // 147\n FORTE[6][9][2], // var\n FORTE[6][9][1], //icv\n ],\n '9,-1': [[0, 2, 4, 5, 6, 7], // 148\n FORTE[6][9][2], // var\n FORTE[6][9][1], //icv\n ],\n '10,1': [FORTE[6][10][0], // 149\n FORTE[6][10][2], // var\n FORTE[6][10][1], //icv\n ],\n '10,-1': [[0, 2, 3, 4, 6, 7], // 150\n FORTE[6][10][2], // var\n FORTE[6][10][1], //icv\n ],\n '11,1': [FORTE[6][11][0], // 151\n FORTE[6][11][2], // var\n FORTE[6][11][1], //icv\n ],\n '11,-1': [[0, 2, 3, 5, 6, 7], // 152\n FORTE[6][11][2], // var\n FORTE[6][11][1], //icv\n ],\n '12,1': [FORTE[6][12][0], // 153\n FORTE[6][12][2], // var\n FORTE[6][12][1], //icv\n ],\n '12,-1': [[0, 1, 3, 5, 6, 7], // 154\n FORTE[6][12][2], // var\n FORTE[6][12][1], //icv\n ],\n '13,0': [FORTE[6][13][0], // 155\n FORTE[6][13][2], // var\n FORTE[6][13][1], //icv\n ],\n '14,1': [FORTE[6][14][0], // 156\n FORTE[6][14][2], // var\n FORTE[6][14][1], //icv\n ],\n '14,-1': [[0, 3, 4, 5, 7, 8], // 157\n FORTE[6][14][2], // var\n FORTE[6][14][1], //icv\n ],\n '15,1': [FORTE[6][15][0], // 158\n FORTE[6][15][2], // var\n FORTE[6][15][1], //icv\n ],\n '15,-1': [[0, 3, 4, 6, 7, 8], // 159\n FORTE[6][15][2], // var\n FORTE[6][15][1], //icv\n ],\n '16,1': [FORTE[6][16][0], // 160\n FORTE[6][16][2], // var\n FORTE[6][16][1], //icv\n ],\n '16,-1': [[0, 2, 3, 4, 7, 8], // 161\n FORTE[6][16][2], // var\n FORTE[6][16][1], //icv\n ],\n '17,1': [FORTE[6][17][0], // 162\n FORTE[6][17][2], // var\n FORTE[6][17][1], //icv\n ],\n '17,-1': [[0, 1, 4, 6, 7, 8], // 163\n FORTE[6][17][2], // var\n FORTE[6][17][1], //icv\n ],\n '18,1': [FORTE[6][18][0], // 164\n FORTE[6][18][2], // var\n FORTE[6][18][1], //icv\n ],\n '18,-1': [[0, 1, 3, 6, 7, 8], // 165\n FORTE[6][18][2], // var\n FORTE[6][18][1], //icv\n ],\n '19,1': [FORTE[6][19][0], // 166\n FORTE[6][19][2], // var\n FORTE[6][19][1], //icv\n ],\n '19,-1': [[0, 1, 4, 5, 7, 8], // 167\n FORTE[6][19][2], // var\n FORTE[6][19][1], //icv\n ],\n '20,0': [FORTE[6][20][0], // 168\n FORTE[6][20][2], // var\n FORTE[6][20][1], //icv\n ],\n '21,1': [FORTE[6][21][0], // 169\n FORTE[6][21][2], // var\n FORTE[6][21][1], //icv\n ],\n '21,-1': [[0, 2, 4, 5, 6, 8], // 170\n FORTE[6][21][2], // var\n FORTE[6][21][1], //icv\n ],\n '22,1': [FORTE[6][22][0], // 171\n FORTE[6][22][2], // var\n FORTE[6][22][1], //icv\n ],\n '22,-1': [[0, 2, 4, 6, 7, 8], // 172\n FORTE[6][22][2], // var\n FORTE[6][22][1], //icv\n ],\n '23,0': [FORTE[6][23][0], // 173\n FORTE[6][23][2], // var\n FORTE[6][23][1], //icv\n ],\n '24,1': [FORTE[6][24][0], // 174\n FORTE[6][24][2], // var\n FORTE[6][24][1], //icv\n ],\n '24,-1': [[0, 2, 4, 5, 7, 8], // 175\n FORTE[6][24][2], // var\n FORTE[6][24][1], //icv\n ],\n '25,1': [FORTE[6][25][0], // 176\n FORTE[6][25][2], // var\n FORTE[6][25][1], //icv\n ],\n '25,-1': [[0, 2, 3, 5, 7, 8], // 177\n FORTE[6][25][2], // var\n FORTE[6][25][1], //icv\n ],\n '26,0': [FORTE[6][26][0], // 178\n FORTE[6][26][2], // var\n FORTE[6][26][1], //icv\n ],\n '27,1': [FORTE[6][27][0], // 179\n FORTE[6][27][2], // var\n FORTE[6][27][1], //icv\n ],\n '27,-1': [[0, 3, 5, 6, 8, 9], // 180\n FORTE[6][27][2], // var\n FORTE[6][27][1], //icv\n ],\n '28,0': [FORTE[6][28][0], // 181\n FORTE[6][28][2], // var\n FORTE[6][28][1], //icv\n ],\n '29,0': [FORTE[6][29][0], // 182\n FORTE[6][29][2], // var\n FORTE[6][29][1], //icv\n ],\n '30,1': [FORTE[6][30][0], // 183\n FORTE[6][30][2], // var\n FORTE[6][30][1], //icv\n ],\n '30,-1': [[0, 2, 3, 6, 8, 9], // 184\n FORTE[6][30][2], // var\n FORTE[6][30][1], //icv\n ],\n '31,1': [FORTE[6][31][0], // 185\n FORTE[6][31][2], // var\n FORTE[6][31][1], //icv\n ],\n '31,-1': [[0, 1, 4, 6, 8, 9], // 186\n FORTE[6][31][2], // var\n FORTE[6][31][1], //icv\n ],\n '32,0': [FORTE[6][32][0], // 187\n FORTE[6][32][2], // var\n FORTE[6][32][1], //icv\n ],\n '33,1': [FORTE[6][33][0], // 188\n FORTE[6][33][2], // var\n FORTE[6][33][1], //icv\n ],\n '33,-1': [[0, 2, 4, 6, 7, 9], // 189\n FORTE[6][33][2], // var\n FORTE[6][33][1], //icv\n ],\n '34,1': [FORTE[6][34][0], // 190\n FORTE[6][34][2], // var\n FORTE[6][34][1], //icv\n ],\n '34,-1': [[0, 2, 4, 6, 8, 9], // 191\n FORTE[6][34][2], // var\n FORTE[6][34][1], //icv\n ],\n '35,0': [FORTE[6][35][0], // 192\n FORTE[6][35][2], // var\n FORTE[6][35][1], //icv\n ],\n '36,1': [FORTE[6][36][0], // 193\n FORTE[6][36][2], // var\n FORTE[6][36][1], //icv\n ],\n '36,-1': [[0, 3, 4, 5, 6, 7], // 194\n FORTE[6][36][2], // var\n FORTE[6][36][1], //icv\n ],\n '37,0': [FORTE[6][37][0], // 195\n FORTE[6][37][2], // var\n FORTE[6][37][1], //icv\n ],\n '38,0': [FORTE[6][38][0], // 196\n FORTE[6][38][2], // var\n FORTE[6][38][1], //icv\n ],\n '39,1': [FORTE[6][39][0], // 197\n FORTE[6][39][2], // var\n FORTE[6][39][1], //icv\n ],\n '39,-1': [[0, 3, 4, 5, 6, 8], // 198\n FORTE[6][39][2], // var\n FORTE[6][39][1], //icv\n ],\n '40,1': [FORTE[6][40][0], // 199\n FORTE[6][40][2], // var\n FORTE[6][40][1], //icv\n ],\n '40,-1': [[0, 3, 5, 6, 7, 8], // 200\n FORTE[6][40][2], // var\n FORTE[6][40][1], //icv\n ],\n '41,1': [FORTE[6][41][0], // 201\n FORTE[6][41][2], // var\n FORTE[6][41][1], //icv\n ],\n '41,-1': [[0, 2, 5, 6, 7, 8], // 202\n FORTE[6][41][2], // var\n FORTE[6][41][1], //icv\n ],\n '42,0': [FORTE[6][42][0], // 203\n FORTE[6][42][2], // var\n FORTE[6][42][1], //icv\n ],\n '43,1': [FORTE[6][43][0], // 204\n FORTE[6][43][2], // var\n FORTE[6][43][1], //icv\n ],\n '43,-1': [[0, 2, 3, 6, 7, 8], // 205\n FORTE[6][43][2], // var\n FORTE[6][43][1], //icv\n ],\n '44,1': [FORTE[6][44][0], // 206\n FORTE[6][44][2], // var\n FORTE[6][44][1], //icv\n ],\n '44,-1': [[0, 3, 4, 7, 8, 9], // 207\n FORTE[6][44][2], // var\n FORTE[6][44][1], //icv\n ],\n '45,0': [FORTE[6][45][0], // 208\n FORTE[6][45][2], // var\n FORTE[6][45][1], //icv\n ],\n '46,1': [FORTE[6][46][0], // 209\n FORTE[6][46][2], // var\n FORTE[6][46][1], //icv\n ],\n '46,-1': [[0, 3, 5, 7, 8, 9], // 210\n FORTE[6][46][2], // var\n FORTE[6][46][1], //icv\n ],\n '47,1': [FORTE[6][47][0], // 211\n FORTE[6][47][2], // var\n FORTE[6][47][1], //icv\n ],\n '47,-1': [[0, 2, 5, 7, 8, 9], // 212\n FORTE[6][47][2], // var\n FORTE[6][47][1], //icv\n ],\n '48,0': [FORTE[6][48][0], // 213\n FORTE[6][48][2], // var\n FORTE[6][48][1], //icv\n ],\n '49,0': [FORTE[6][49][0], // 214\n FORTE[6][49][2], // var\n FORTE[6][49][1], //icv\n ],\n '50,0': [FORTE[6][50][0], // 215\n FORTE[6][50][2], // var\n FORTE[6][50][1], //icv\n ],\n};\n// cardinality 7\nconst card_7 ={\n '1,0': [FORTE[7][1][0], // 216\n FORTE[7][1][2], // var\n FORTE[7][1][1], //icv\n ],\n '2,1': [FORTE[7][2][0], // 217\n FORTE[7][2][2], // var\n FORTE[7][2][1], //icv\n ],\n '2,-1': [[0, 2, 3, 4, 5, 6, 7], // 218\n FORTE[7][2][2], // var\n FORTE[7][2][1], //icv\n ],\n '3,1': [FORTE[7][3][0], // 219\n FORTE[7][3][2], // var\n FORTE[7][3][1], //icv\n ],\n '3,-1': [[0, 3, 4, 5, 6, 7, 8], // 220\n FORTE[7][3][2], // var\n FORTE[7][3][1], //icv\n ],\n '4,1': [FORTE[7][4][0], // 221\n FORTE[7][4][2], // var\n FORTE[7][4][1], //icv\n ],\n '4,-1': [[0, 1, 3, 4, 5, 6, 7], // 222\n FORTE[7][4][2], // var\n FORTE[7][4][1], //icv\n ],\n '5,1': [FORTE[7][5][0], // 223\n FORTE[7][5][2], // var\n FORTE[7][5][1], //icv\n ],\n '5,-1': [[0, 1, 2, 4, 5, 6, 7], // 224\n FORTE[7][5][2], // var\n FORTE[7][5][1], //icv\n ],\n '6,1': [FORTE[7][6][0], // 225\n FORTE[7][6][2], // var\n FORTE[7][6][1], //icv\n ],\n '6,-1': [[0, 1, 4, 5, 6, 7, 8], // 226\n FORTE[7][6][2], // var\n FORTE[7][6][1], //icv\n ],\n '7,1': [FORTE[7][7][0], // 227\n FORTE[7][7][2], // var\n FORTE[7][7][1], //icv\n ],\n '7,-1': [[0, 1, 2, 5, 6, 7, 8], // 228\n FORTE[7][7][2], // var\n FORTE[7][7][1], //icv\n ],\n '8,0': [FORTE[7][8][0], // 229\n FORTE[7][8][2], // var\n FORTE[7][8][1], //icv\n ],\n '9,1': [FORTE[7][9][0], // 230\n FORTE[7][9][2], // var\n FORTE[7][9][1], //icv\n ],\n '9,-1': [[0, 2, 4, 5, 6, 7, 8], // 231\n FORTE[7][9][2], // var\n FORTE[7][9][1], //icv\n ],\n '10,1': [FORTE[7][10][0], // 232\n FORTE[7][10][2], // var\n FORTE[7][10][1], //icv\n ],\n '10,-1': [[0, 3, 5, 6, 7, 8, 9], // 233\n FORTE[7][10][2], // var\n FORTE[7][10][1], //icv\n ],\n '11,1': [FORTE[7][11][0], // 234\n FORTE[7][11][2], // var\n FORTE[7][11][1], //icv\n ],\n '11,-1': [[0, 2, 3, 4, 5, 7, 8], // 235\n FORTE[7][11][2], // var\n FORTE[7][11][1], //icv\n ],\n '12,0': [FORTE[7][12][0], // 236\n FORTE[7][12][2], // var\n FORTE[7][12][1], //icv\n ],\n '13,1': [FORTE[7][13][0], // 237\n FORTE[7][13][2], // var\n FORTE[7][13][1], //icv\n ],\n '13,-1': [[0, 2, 3, 4, 6, 7, 8], // 238\n FORTE[7][13][2], // var\n FORTE[7][13][1], //icv\n ],\n '14,1': [FORTE[7][14][0], // 239\n FORTE[7][14][2], // var\n FORTE[7][14][1], //icv\n ],\n '14,-1': [[0, 1, 3, 5, 6, 7, 8], // 240\n FORTE[7][14][2], // var\n FORTE[7][14][1], //icv\n ],\n '15,0': [FORTE[7][15][0], // 241\n FORTE[7][15][2], // var\n FORTE[7][15][1], //icv\n ],\n '16,1': [FORTE[7][16][0], // 242\n FORTE[7][16][2], // var\n FORTE[7][16][1], //icv\n ],\n '16,-1': [[0, 3, 4, 6, 7, 8, 9], // 243\n FORTE[7][16][2], // var\n FORTE[7][16][1], //icv\n ],\n '17,0': [FORTE[7][17][0], // 244\n FORTE[7][17][2], // var\n FORTE[7][17][1], //icv\n ],\n '18,1': [FORTE[7][18][0], // 245\n FORTE[7][18][2], // var\n FORTE[7][18][1], //icv\n ],\n '18,-1': [[0, 1, 4, 6, 7, 8, 9], // 246\n FORTE[7][18][2], // var\n FORTE[7][18][1], //icv\n ],\n '19,1': [FORTE[7][19][0], // 247\n FORTE[7][19][2], // var\n FORTE[7][19][1], //icv\n ],\n '19,-1': [[0, 2, 3, 6, 7, 8, 9], // 248\n FORTE[7][19][2], // var\n FORTE[7][19][1], //icv\n ],\n '20,1': [FORTE[7][20][0], // 249\n FORTE[7][20][2], // var\n FORTE[7][20][1], //icv\n ],\n '20,-1': [[0, 1, 2, 5, 7, 8, 9], // 250\n FORTE[7][20][2], // var\n FORTE[7][20][1], //icv\n ],\n '21,1': [FORTE[7][21][0], // 251\n FORTE[7][21][2], // var\n FORTE[7][21][1], //icv\n ],\n '21,-1': [[0, 1, 4, 5, 7, 8, 9], // 252\n FORTE[7][21][2], // var\n FORTE[7][21][1], //icv\n ],\n '22,0': [FORTE[7][22][0], // 253\n FORTE[7][22][2], // var\n FORTE[7][22][1], //icv\n ],\n '23,1': [FORTE[7][23][0], // 254\n FORTE[7][23][2], // var\n FORTE[7][23][1], //icv\n ],\n '23,-1': [[0, 2, 4, 5, 6, 7, 9], // 255\n FORTE[7][23][2], // var\n FORTE[7][23][1], //icv\n ],\n '24,1': [FORTE[7][24][0], // 256\n FORTE[7][24][2], // var\n FORTE[7][24][1], //icv\n ],\n '24,-1': [[0, 2, 4, 6, 7, 8, 9], // 257\n FORTE[7][24][2], // var\n FORTE[7][24][1], //icv\n ],\n '25,1': [FORTE[7][25][0], // 258\n FORTE[7][25][2], // var\n FORTE[7][25][1], //icv\n ],\n '25,-1': [[0, 2, 3, 5, 6, 7, 9], // 259\n FORTE[7][25][2], // var\n FORTE[7][25][1], //icv\n ],\n '26,1': [FORTE[7][26][0], // 260\n FORTE[7][26][2], // var\n FORTE[7][26][1], //icv\n ],\n '26,-1': [[0, 2, 4, 5, 6, 8, 9], // 261\n FORTE[7][26][2], // var\n FORTE[7][26][1], //icv\n ],\n '27,1': [FORTE[7][27][0], // 262\n FORTE[7][27][2], // var\n FORTE[7][27][1], //icv\n ],\n '27,-1': [[0, 2, 4, 5, 7, 8, 9], // 263\n FORTE[7][27][2], // var\n FORTE[7][27][1], //icv\n ],\n '28,1': [FORTE[7][28][0], // 264\n FORTE[7][28][2], // var\n FORTE[7][28][1], //icv\n ],\n '28,-1': [[0, 2, 3, 4, 6, 8, 9], // 265\n FORTE[7][28][2], // var\n FORTE[7][28][1], //icv\n ],\n '29,1': [FORTE[7][29][0], // 266\n FORTE[7][29][2], // var\n FORTE[7][29][1], //icv\n ],\n '29,-1': [[0, 2, 3, 5, 7, 8, 9], // 267\n FORTE[7][29][2], // var\n FORTE[7][29][1], //icv\n ],\n '30,1': [FORTE[7][30][0], // 268\n FORTE[7][30][2], // var\n FORTE[7][30][1], //icv\n ],\n '30,-1': [[0, 1, 3, 5, 7, 8, 9], // 269\n FORTE[7][30][2], // var\n FORTE[7][30][1], //icv\n ],\n '31,1': [FORTE[7][31][0], // 270\n FORTE[7][31][2], // var\n FORTE[7][31][1], //icv\n ],\n '31,-1': [[0, 2, 3, 5, 6, 8, 9], // 271\n FORTE[7][31][2], // var\n FORTE[7][31][1], //icv\n ],\n '32,1': [FORTE[7][32][0], // 272\n FORTE[7][32][2], // var\n FORTE[7][32][1], //icv\n ],\n '32,-1': [[0, 1, 3, 5, 6, 8, 9], // 273\n FORTE[7][32][2], // var\n FORTE[7][32][1], //icv\n ],\n '33,0': [FORTE[7][33][0], // 274\n FORTE[7][33][2], // var\n FORTE[7][33][1], //icv\n ],\n '34,0': [FORTE[7][34][0], // 275\n FORTE[7][34][2], // var\n FORTE[7][34][1], //icv\n ],\n '35,0': [FORTE[7][35][0], // 276\n FORTE[7][35][2], // var\n FORTE[7][35][1], //icv\n ],\n '36,1': [FORTE[7][36][0], // 277\n FORTE[7][36][2], // var\n FORTE[7][36][1], //icv\n ],\n '36,-1': [[0, 2, 3, 5, 6, 7, 8], // 278\n FORTE[7][36][2], // var\n FORTE[7][36][1], //icv\n ],\n '37,0': [FORTE[7][37][0], // 279\n FORTE[7][37][2], // var\n FORTE[7][37][1], //icv\n ],\n '38,1': [FORTE[7][38][0], // 280\n FORTE[7][38][2], // var\n FORTE[7][38][1], //icv\n ],\n '38,-1': [[0, 1, 3, 4, 6, 7, 8], // 281\n FORTE[7][38][2], // var\n FORTE[7][38][1], //icv\n ],\n};\n// cardinality 8\nconst card_8 ={\n '1,0': [FORTE[8][1][0], // 282\n FORTE[8][1][2], // var\n FORTE[8][1][1], //icv\n ],\n '2,1': [FORTE[8][2][0], // 283\n FORTE[8][2][2], // var\n FORTE[8][2][1], //icv\n ],\n '2,-1': [[0, 2, 3, 4, 5, 6, 7, 8], // 284\n FORTE[8][2][2], // var\n FORTE[8][2][1], //icv\n ],\n '3,0': [FORTE[8][3][0], // 285\n FORTE[8][3][2], // var\n FORTE[8][3][1], //icv\n ],\n '4,1': [FORTE[8][4][0], // 286\n FORTE[8][4][2], // var\n FORTE[8][4][1], //icv\n ],\n '4,-1': [[0, 1, 3, 4, 5, 6, 7, 8], // 287\n FORTE[8][4][2], // var\n FORTE[8][4][1], //icv\n ],\n '5,1': [FORTE[8][5][0], // 288\n FORTE[8][5][2], // var\n FORTE[8][5][1], //icv\n ],\n '5,-1': [[0, 1, 2, 4, 5, 6, 7, 8], // 289\n FORTE[8][5][2], // var\n FORTE[8][5][1], //icv\n ],\n '6,0': [FORTE[8][6][0], // 290\n FORTE[8][6][2], // var\n FORTE[8][6][1], //icv\n ],\n '7,0': [FORTE[8][7][0], // 291\n FORTE[8][7][2], // var\n FORTE[8][7][1], //icv\n ],\n '8,0': [FORTE[8][8][0], // 292\n FORTE[8][8][2], // var\n FORTE[8][8][1], //icv\n ],\n '9,0': [FORTE[8][9][0], // 293\n FORTE[8][9][2], // var\n FORTE[8][9][1], //icv\n ],\n '10,0': [FORTE[8][10][0], // 294\n FORTE[8][10][2], // var\n FORTE[8][10][1], //icv\n ],\n '11,1': [FORTE[8][11][0], // 295\n FORTE[8][11][2], // var\n FORTE[8][11][1], //icv\n ],\n '11,-1': [[0, 2, 4, 5, 6, 7, 8, 9], // 296\n FORTE[8][11][2], // var\n FORTE[8][11][1], //icv\n ],\n '12,1': [FORTE[8][12][0], // 297\n FORTE[8][12][2], // var\n FORTE[8][12][1], //icv\n ],\n '12,-1': [[0, 2, 3, 4, 5, 6, 8, 9], // 298\n FORTE[8][12][2], // var\n FORTE[8][12][1], //icv\n ],\n '13,1': [FORTE[8][13][0], // 299\n FORTE[8][13][2], // var\n FORTE[8][13][1], //icv\n ],\n '13,-1': [[0, 2, 3, 5, 6, 7, 8, 9], // 300\n FORTE[8][13][2], // var\n FORTE[8][13][1], //icv\n ],\n '14,1': [FORTE[8][14][0], // 301\n FORTE[8][14][2], // var\n FORTE[8][14][1], //icv\n ],\n '14,-1': [[0, 2, 3, 4, 5, 7, 8, 9], // 302\n FORTE[8][14][2], // var\n FORTE[8][14][1], //icv\n ],\n '15,1': [FORTE[8][15][0], // 303\n FORTE[8][15][2], // var\n FORTE[8][15][1], //icv\n ],\n '15,-1': [[0, 1, 3, 5, 6, 7, 8, 9], // 304\n FORTE[8][15][2], // var\n FORTE[8][15][1], //icv\n ],\n '16,1': [FORTE[8][16][0], // 305\n FORTE[8][16][2], // var\n FORTE[8][16][1], //icv\n ],\n '16,-1': [[0, 1, 2, 4, 6, 7, 8, 9], // 306\n FORTE[8][16][2], // var\n FORTE[8][16][1], //icv\n ],\n '17,0': [FORTE[8][17][0], // 307\n FORTE[8][17][2], // var\n FORTE[8][17][1], //icv\n ],\n '18,1': [FORTE[8][18][0], // 308\n FORTE[8][18][2], // var\n FORTE[8][18][1], //icv\n ],\n '18,-1': [[0, 1, 3, 4, 6, 7, 8, 9], // 309\n FORTE[8][18][2], // var\n FORTE[8][18][1], //icv\n ],\n '19,1': [FORTE[8][19][0], // 310\n FORTE[8][19][2], // var\n FORTE[8][19][1], //icv\n ],\n '19,-1': [[0, 1, 3, 4, 5, 7, 8, 9], // 311\n FORTE[8][19][2], // var\n FORTE[8][19][1], //icv\n ],\n '20,0': [FORTE[8][20][0], // 312\n FORTE[8][20][2], // var\n FORTE[8][20][1], //icv\n ],\n '21,0': [FORTE[8][21][0], // 313\n FORTE[8][21][2], // var\n FORTE[8][21][1], //icv\n ],\n '22,1': [FORTE[8][22][0], // 314\n FORTE[8][22][2], // var\n FORTE[8][22][1], //icv\n ],\n '22,-1': [[0, 2, 4, 5, 7, 8, 9, 10], // 315\n FORTE[8][22][2], // var\n FORTE[8][22][1], //icv\n ],\n '23,0': [FORTE[8][23][0], // 316\n FORTE[8][23][2], // var\n FORTE[8][23][1], //icv\n ],\n '24,0': [FORTE[8][24][0], // 317\n FORTE[8][24][2], // var\n FORTE[8][24][1], //icv\n ],\n '25,0': [FORTE[8][25][0], // 318\n FORTE[8][25][2], // var\n FORTE[8][25][1], //icv\n ],\n '26,0': [FORTE[8][26][0], // 319\n FORTE[8][26][2], // var\n FORTE[8][26][1], //icv\n ],\n '27,1': [FORTE[8][27][0], // 320\n FORTE[8][27][2], // var\n FORTE[8][27][1], //icv\n ],\n '27,-1': [[0, 2, 3, 5, 6, 8, 9, 10], // 321\n FORTE[8][27][2], // var\n FORTE[8][27][1], //icv\n ],\n '28,0': [FORTE[8][28][0], // 322\n FORTE[8][28][2], // var\n FORTE[8][28][1], //icv\n ],\n '29,1': [FORTE[8][29][0], // 323\n FORTE[8][29][2], // var\n FORTE[8][29][1], //icv\n ],\n '29,-1': [[0, 2, 3, 4, 6, 7, 8, 9], // 324\n FORTE[8][29][2], // var\n FORTE[8][29][1], //icv\n ],\n};\n// cardinality 9\nconst card_9 ={\n '1,0': [FORTE[9][1][0], // 325\n FORTE[9][1][2], // var\n FORTE[9][1][1], //icv\n ],\n '2,1': [FORTE[9][2][0], // 326\n FORTE[9][2][2], // var\n FORTE[9][2][1], //icv\n ],\n '2,-1': [[0, 2, 3, 4, 5, 6, 7, 8, 9], // 327\n FORTE[9][2][2], // var\n FORTE[9][2][1], //icv\n ],\n '3,1': [FORTE[9][3][0], // 328\n FORTE[9][3][2], // var\n FORTE[9][3][1], //icv\n ],\n '3,-1': [[0, 1, 3, 4, 5, 6, 7, 8, 9], // 329\n FORTE[9][3][2], // var\n FORTE[9][3][1], //icv\n ],\n '4,1': [FORTE[9][4][0], // 330\n FORTE[9][4][2], // var\n FORTE[9][4][1], //icv\n ],\n '4,-1': [[0, 1, 2, 4, 5, 6, 7, 8, 9], // 331\n FORTE[9][4][2], // var\n FORTE[9][4][1], //icv\n ],\n '5,1': [FORTE[9][5][0], // 332\n FORTE[9][5][2], // var\n FORTE[9][5][1], //icv\n ],\n '5,-1': [[0, 1, 2, 3, 5, 6, 7, 8, 9], // 333\n FORTE[9][5][2], // var\n FORTE[9][5][1], //icv\n ],\n '6,0': [FORTE[9][6][0], // 334\n FORTE[9][6][2], // var\n FORTE[9][6][1], //icv\n ],\n '7,1': [FORTE[9][7][0], // 335\n FORTE[9][7][2], // var\n FORTE[9][7][1], //icv\n ],\n '7,-1': [[0, 2, 3, 5, 6, 7, 8, 9, 10], // 336\n FORTE[9][7][2], // var\n FORTE[9][7][1], //icv\n ],\n '8,1': [FORTE[9][8][0], // 337\n FORTE[9][8][2], // var\n FORTE[9][8][1], //icv\n ],\n '8,-1': [[0, 2, 3, 4, 6, 7, 8, 9, 10], // 338\n FORTE[9][8][2], // var\n FORTE[9][8][1], //icv\n ],\n '9,0': [FORTE[9][9][0], // 339\n FORTE[9][9][2], // var\n FORTE[9][9][1], //icv\n ],\n '10,0': [FORTE[9][10][0], // 340\n FORTE[9][10][2], // var\n FORTE[9][10][1], //icv\n ],\n '11,1': [FORTE[9][11][0], // 341\n FORTE[9][11][2], // var\n FORTE[9][11][1], //icv\n ],\n '11,-1': [[0, 1, 3, 4, 5, 7, 8, 9, 10], // 342\n FORTE[9][11][2], // var\n FORTE[9][11][1], //icv\n ],\n '12,0': [FORTE[9][12][0], // 343\n FORTE[9][12][2], // var\n FORTE[9][12][1], //icv\n ],\n};\n// cardinality 10\nconst card_10 ={\n '1,0': [FORTE[10][1][0], // 344\n FORTE[10][1][2], // var\n FORTE[10][1][1], //icv\n ],\n '2,0': [FORTE[10][2][0], // 345\n FORTE[10][2][2], // var\n FORTE[10][2][1], //icv\n ],\n '3,0': [FORTE[10][3][0], // 346\n FORTE[10][3][2], // var\n FORTE[10][3][1], //icv\n ],\n '4,0': [FORTE[10][4][0], // 347\n FORTE[10][4][2], // var\n FORTE[10][4][1], //icv\n ],\n '5,0': [FORTE[10][5][0], // 348\n FORTE[10][5][2], // var\n FORTE[10][5][1], //icv\n ],\n '6,0': [FORTE[10][6][0], // 349\n FORTE[10][6][2], // var\n FORTE[10][6][1], //icv\n ],\n};\n// cardinality 11\nconst card_11 ={\n '1,0': [FORTE[11][1][0], // 350\n FORTE[11][1][2], // var\n FORTE[11][1][1], //icv\n ],\n};\n// cardinality 12\nconst card_12 ={\n '1,0': [FORTE[12][1][0], // 351\n FORTE[12][1][2], // var\n FORTE[12][1][1], //icv\n ],\n};\n\n//-------------------------------------------------------------------------------\nexport const SCDICT = {\n 1: card_1,\n 2: card_2,\n 3: card_3,\n 4: card_4,\n 5: card_5,\n 6: card_6,\n 7: card_7,\n 8: card_8,\n 9: card_9,\n 10: card_10,\n 11: card_11,\n 12: card_12,\n};\n\n//-------------------------------------------------------------------------------\n// these dicts provide index max fr cardinality key\nexport const TNMAX = {\n 0: 1, 1: 1, 2: 6, 3: 19, 4: 43, 5: 66, 6: 80,\n 7: 66, 8: 43, 9: 19, 10: 6, 11: 1, 12: 1,\n};\nexport const TNIMAX = {\n 0: 1, 1: 1, 2: 6, 3: 12, 4: 29, 5: 38, 6: 50,\n 7: 38, 8: 29, 9: 12, 10: 6, 11: 1, 12: 1,\n};\n\n// used to find TnI index numbers under Tn classification\nexport const TNREF = {\n '1,1,0': 1,\n '2,1,0': 1,\n '2,2,0': 2,\n '2,3,0': 3,\n '2,4,0': 4,\n '2,5,0': 5,\n '2,6,0': 6,\n '3,1,0': 1,\n '3,2,1': 2,\n '3,2,-1': 3,\n '3,3,1': 4,\n '3,3,-1': 5,\n '3,4,1': 6,\n '3,4,-1': 7,\n '3,5,1': 8,\n '3,5,-1': 9,\n '3,6,0': 10,\n '3,7,1': 11,\n '3,7,-1': 12,\n '3,8,1': 13,\n '3,8,-1': 14,\n '3,9,0': 15,\n '3,10,0': 16,\n '3,11,1': 17,\n '3,11,-1': 18,\n '3,12,0': 19,\n '4,1,0': 1,\n '4,2,1': 2,\n '4,2,-1': 3,\n '4,3,0': 4,\n '4,4,1': 5,\n '4,4,-1': 6,\n '4,5,1': 7,\n '4,5,-1': 8,\n '4,6,0': 9,\n '4,7,0': 10,\n '4,8,0': 11,\n '4,9,0': 12,\n '4,10,0': 13,\n '4,11,1': 14,\n '4,11,-1': 15,\n '4,12,1': 16,\n '4,12,-1': 17,\n '4,13,1': 18,\n '4,13,-1': 19,\n '4,14,1': 20,\n '4,14,-1': 21,\n '4,15,1': 22,\n '4,15,-1': 23,\n '4,16,1': 24,\n '4,16,-1': 25,\n '4,17,0': 26,\n '4,18,1': 27,\n '4,18,-1': 28,\n '4,19,1': 29,\n '4,19,-1': 30,\n '4,20,0': 31,\n '4,21,0': 32,\n '4,22,1': 33,\n '4,22,-1': 34,\n '4,23,0': 35,\n '4,24,0': 36,\n '4,25,0': 37,\n '4,26,0': 38,\n '4,27,1': 39,\n '4,27,-1': 40,\n '4,28,0': 41,\n '4,29,1': 42,\n '4,29,-1': 43,\n '5,1,0': 1,\n '5,2,1': 2,\n '5,2,-1': 3,\n '5,3,1': 4,\n '5,3,-1': 5,\n '5,4,1': 6,\n '5,4,-1': 7,\n '5,5,1': 8,\n '5,5,-1': 9,\n '5,6,1': 10,\n '5,6,-1': 11,\n '5,7,1': 12,\n '5,7,-1': 13,\n '5,8,0': 14,\n '5,9,1': 15,\n '5,9,-1': 16,\n '5,10,1': 17,\n '5,10,-1': 18,\n '5,11,1': 19,\n '5,11,-1': 20,\n '5,12,0': 21,\n '5,13,1': 22,\n '5,13,-1': 23,\n '5,14,1': 24,\n '5,14,-1': 25,\n '5,15,0': 26,\n '5,16,1': 27,\n '5,16,-1': 28,\n '5,17,0': 29,\n '5,18,1': 30,\n '5,18,-1': 31,\n '5,19,1': 32,\n '5,19,-1': 33,\n '5,20,1': 34,\n '5,20,-1': 35,\n '5,21,1': 36,\n '5,21,-1': 37,\n '5,22,0': 38,\n '5,23,1': 39,\n '5,23,-1': 40,\n '5,24,1': 41,\n '5,24,-1': 42,\n '5,25,1': 43,\n '5,25,-1': 44,\n '5,26,1': 45,\n '5,26,-1': 46,\n '5,27,1': 47,\n '5,27,-1': 48,\n '5,28,1': 49,\n '5,28,-1': 50,\n '5,29,1': 51,\n '5,29,-1': 52,\n '5,30,1': 53,\n '5,30,-1': 54,\n '5,31,1': 55,\n '5,31,-1': 56,\n '5,32,1': 57,\n '5,32,-1': 58,\n '5,33,0': 59,\n '5,34,0': 60,\n '5,35,0': 61,\n '5,36,1': 62,\n '5,36,-1': 63,\n '5,37,0': 64,\n '5,38,1': 65,\n '5,38,-1': 66,\n '6,1,0': 1,\n '6,2,1': 2,\n '6,2,-1': 3,\n '6,3,1': 4,\n '6,3,-1': 5,\n '6,4,0': 6,\n '6,5,1': 7,\n '6,5,-1': 8,\n '6,6,0': 9,\n '6,7,0': 10,\n '6,8,0': 11,\n '6,9,1': 12,\n '6,9,-1': 13,\n '6,10,1': 14,\n '6,10,-1': 15,\n '6,11,1': 16,\n '6,11,-1': 17,\n '6,12,1': 18,\n '6,12,-1': 19,\n '6,13,0': 20,\n '6,14,1': 21,\n '6,14,-1': 22,\n '6,15,1': 23,\n '6,15,-1': 24,\n '6,16,1': 25,\n '6,16,-1': 26,\n '6,17,1': 27,\n '6,17,-1': 28,\n '6,18,1': 29,\n '6,18,-1': 30,\n '6,19,1': 31,\n '6,19,-1': 32,\n '6,20,0': 33,\n '6,21,1': 34,\n '6,21,-1': 35,\n '6,22,1': 36,\n '6,22,-1': 37,\n '6,23,0': 38,\n '6,24,1': 39,\n '6,24,-1': 40,\n '6,25,1': 41,\n '6,25,-1': 42,\n '6,26,0': 43,\n '6,27,1': 44,\n '6,27,-1': 45,\n '6,28,0': 46,\n '6,29,0': 47,\n '6,30,1': 48,\n '6,30,-1': 49,\n '6,31,1': 50,\n '6,31,-1': 51,\n '6,32,0': 52,\n '6,33,1': 53,\n '6,33,-1': 54,\n '6,34,1': 55,\n '6,34,-1': 56,\n '6,35,0': 57,\n '6,36,1': 58,\n '6,36,-1': 59,\n '6,37,0': 60,\n '6,38,0': 61,\n '6,39,1': 62,\n '6,39,-1': 63,\n '6,40,1': 64,\n '6,40,-1': 65,\n '6,41,1': 66,\n '6,41,-1': 67,\n '6,42,0': 68,\n '6,43,1': 69,\n '6,43,-1': 70,\n '6,44,1': 71,\n '6,44,-1': 72,\n '6,45,0': 73,\n '6,46,1': 74,\n '6,46,-1': 75,\n '6,47,1': 76,\n '6,47,-1': 77,\n '6,48,0': 78,\n '6,49,0': 79,\n '6,50,0': 80,\n '7,1,0': 1,\n '7,2,1': 2,\n '7,2,-1': 3,\n '7,3,1': 4,\n '7,3,-1': 5,\n '7,4,1': 6,\n '7,4,-1': 7,\n '7,5,1': 8,\n '7,5,-1': 9,\n '7,6,1': 10,\n '7,6,-1': 11,\n '7,7,1': 12,\n '7,7,-1': 13,\n '7,8,0': 14,\n '7,9,1': 15,\n '7,9,-1': 16,\n '7,10,1': 17,\n '7,10,-1': 18,\n '7,11,1': 19,\n '7,11,-1': 20,\n '7,12,0': 21,\n '7,13,1': 22,\n '7,13,-1': 23,\n '7,14,1': 24,\n '7,14,-1': 25,\n '7,15,0': 26,\n '7,16,1': 27,\n '7,16,-1': 28,\n '7,17,0': 29,\n '7,18,1': 30,\n '7,18,-1': 31,\n '7,19,1': 32,\n '7,19,-1': 33,\n '7,20,1': 34,\n '7,20,-1': 35,\n '7,21,1': 36,\n '7,21,-1': 37,\n '7,22,0': 38,\n '7,23,1': 39,\n '7,23,-1': 40,\n '7,24,1': 41,\n '7,24,-1': 42,\n '7,25,1': 43,\n '7,25,-1': 44,\n '7,26,1': 45,\n '7,26,-1': 46,\n '7,27,1': 47,\n '7,27,-1': 48,\n '7,28,1': 49,\n '7,28,-1': 50,\n '7,29,1': 51,\n '7,29,-1': 52,\n '7,30,1': 53,\n '7,30,-1': 54,\n '7,31,1': 55,\n '7,31,-1': 56,\n '7,32,1': 57,\n '7,32,-1': 58,\n '7,33,0': 59,\n '7,34,0': 60,\n '7,35,0': 61,\n '7,36,1': 62,\n '7,36,-1': 63,\n '7,37,0': 64,\n '7,38,1': 65,\n '7,38,-1': 66,\n '8,1,0': 1,\n '8,2,1': 2,\n '8,2,-1': 3,\n '8,3,0': 4,\n '8,4,1': 5,\n '8,4,-1': 6,\n '8,5,1': 7,\n '8,5,-1': 8,\n '8,6,0': 9,\n '8,7,0': 10,\n '8,8,0': 11,\n '8,9,0': 12,\n '8,10,0': 13,\n '8,11,1': 14,\n '8,11,-1': 15,\n '8,12,1': 16,\n '8,12,-1': 17,\n '8,13,1': 18,\n '8,13,-1': 19,\n '8,14,1': 20,\n '8,14,-1': 21,\n '8,15,1': 22,\n '8,15,-1': 23,\n '8,16,1': 24,\n '8,16,-1': 25,\n '8,17,0': 26,\n '8,18,1': 27,\n '8,18,-1': 28,\n '8,19,1': 29,\n '8,19,-1': 30,\n '8,20,0': 31,\n '8,21,0': 32,\n '8,22,1': 33,\n '8,22,-1': 34,\n '8,23,0': 35,\n '8,24,0': 36,\n '8,25,0': 37,\n '8,26,0': 38,\n '8,27,1': 39,\n '8,27,-1': 40,\n '8,28,0': 41,\n '8,29,1': 42,\n '8,29,-1': 43,\n '9,1,0': 1,\n '9,2,1': 2,\n '9,2,-1': 3,\n '9,3,1': 4,\n '9,3,-1': 5,\n '9,4,1': 6,\n '9,4,-1': 7,\n '9,5,1': 8,\n '9,5,-1': 9,\n '9,6,0': 10,\n '9,7,1': 11,\n '9,7,-1': 12,\n '9,8,1': 13,\n '9,8,-1': 14,\n '9,9,0': 15,\n '9,10,0': 16,\n '9,11,1': 17,\n '9,11,-1': 18,\n '9,12,0': 19,\n '10,1,0': 1,\n '10,2,0': 2,\n '10,3,0': 3,\n '10,4,0': 4,\n '10,5,0': 5,\n '10,6,0': 6,\n '11,1,0': 1,\n '12,1,0': 1,\n};\n\n\n// -----------------------------------------------------------------||||||||||||--\n// reference dict stores name and citation references\n\n// names found from many sources, including:\n// http://solo1.home.mindspring.com/pcsets.htm\n// Larry Solomon, 1997, 2000\n// Larry Solomon's 'The List of Chords, Their Properties and Use in Analysis,'\n// in Interface, Journal of New Music Research , 1982, v11/2.\n// http://www.sweb.cz/vladimir_ladma/english/music/structs/mus_rot.htm\n// Vladimir Ladma, Czech Republic\n\n// some changes: unison preferred to monad\n\n\nexport const SCREF = {\n '1,1,0': { 'name': ['unison', 'monad', 'singleton'] },\n '2,1,0': {\n 'name': ['interval class 1', 'minor second', 'm2',\n 'half step', 'semitone'],\n },\n '2,2,0': {\n 'name': ['interval class 2', 'major second', 'M2',\n 'whole step', 'whole tone'],\n },\n '2,3,0': { 'name': ['interval class 3', 'minor third', 'm3'] },\n '2,4,0': { 'name': ['interval class 4', 'major third', 'M3'] },\n '2,5,0': { 'name': ['interval class 5', 'perfect fourth', 'P4'] },\n '2,6,0': { 'name': ['tritone', 'diminished fifth', 'augmented fourth'] },\n '3,1,0': { 'name': ['chromatic trimirror'] },\n '3,2,1': { 'name': ['phrygian trichord'] },\n '3,2,-1': { 'name': ['minor trichord'] },\n '3,3,1': { 'name': ['major-minor trichord'] },\n '3,3,-1': { 'name': ['major-minor trichord'] },\n '3,4,1': { 'name': ['incomplete major-seventh chord'] },\n '3,4,-1': { 'name': ['incomplete major-seventh chord'] },\n '3,5,1': { 'name': ['tritone-fourth'] },\n '3,5,-1': { 'name': ['tritone-fourth'] },\n '3,6,0': { 'name': ['whole-tone trichord'] },\n '3,7,1': { 'name': ['incomplete minor-seventh chord'] },\n '3,7,-1': { 'name': ['incomplete dominant-seventh chord'] },\n '3,8,1': { 'name': ['incomplete dominant-seventh chord', 'Italian augmented sixth chord'] },\n '3,8,-1': { 'name': ['incomplete half-diminished seventh chord'] },\n '3,9,0': { 'name': ['quartal trichord'] },\n '3,10,0': { 'name': ['diminished triad'] },\n '3,11,1': { 'name': ['minor triad'] },\n '3,11,-1': { 'name': ['major triad'] },\n '3,12,0': { 'name': ['augmented triad', 'equal 3-part octave division'] },\n '4,1,0': { 'name': ['chromatic tetramirror', 'BACH'] },\n '4,2,1': { 'name': ['major-second tetracluster'] },\n '4,2,-1': { 'name': ['major-second tetracluster'] },\n '4,3,0': { 'name': ['alternating tetramirror'] },\n '4,4,1': { 'name': ['minor third tetracluster'] },\n '4,4,-1': { 'name': ['minor third tetracluster'] },\n '4,5,1': { 'name': ['major third tetracluster'] },\n '4,5,-1': { 'name': ['major third tetracluster'] },\n '4,6,0': { 'name': ['perfect fourth tetramirror'] },\n '4,7,0': { 'name': ['Arabian tetramirror'] },\n '4,8,0': { 'name': ['double-fourth tetramirror'] },\n '4,9,0': { 'name': ['double tritone tetramirror'] },\n '4,10,0': { 'name': ['minor tetramirror'] },\n '4,11,1': { 'name': ['phrygian tetrachord'] },\n '4,11,-1': { 'name': ['lydian tetrachord', 'major tetrachord'] },\n '4,12,1': { 'name': ['harmonic minor tetrachord'] },\n '4,12,-1': { 'name': ['major-third diminished tetrachord'] },\n '4,13,1': { 'name': ['minor-second diminished tetrachord'] },\n '4,13,-1': { 'name': ['perfect-fourth diminished tetrachord'] },\n '4,14,1': { 'name': ['major-second minor tetrachord'] },\n '4,14,-1': { 'name': ['perfect-fourth major tetrachord'] },\n '4,15,1': { 'name': ['all-interval tetrachord'] },\n '4,15,-1': { 'name': ['all-interval tetrachord'] },\n '4,16,1': { 'name': ['minor-second quartal tetrachord'] },\n '4,16,-1': { 'name': ['tritone quartal tetrachord'] },\n '4,17,0': { 'name': ['major-minor tetramirror'] },\n '4,18,1': { 'name': ['major-diminished tetrachord'] },\n '4,18,-1': { 'name': ['minor-diminished tetrachord'] },\n '4,19,1': { 'name': ['minor-augmented tetrachord'] },\n '4,19,-1': { 'name': ['augmented major tetrachord'] },\n '4,20,0': { 'name': ['major seventh chord'] },\n '4,21,0': { 'name': ['whole-tone tetramirror'] },\n '4,22,1': { 'name': ['major-second major tetrachord'] },\n '4,22,-1': { 'name': ['perfect-fourth minor tetrachord'] },\n '4,23,0': { 'name': ['quartal tetramirror'] },\n '4,24,0': { 'name': ['augmented seventh chord'] },\n '4,25,0': { 'name': [\"Messiaen's truncated mode 6\", 'French augmented sixth chord'] },\n '4,26,0': { 'name': ['minor seventh chord'] },\n '4,27,1': { 'name': ['half-diminished seventh chord'] },\n '4,27,-1': {\n 'name': ['dominant seventh chord',\n 'major minor seventh chord', 'German augmented sixth chord', 'Swiss augmented sixth chord'],\n },\n '4,28,0': { 'name': ['diminished seventh chord', 'equal 4-part octave division'] },\n '4,29,1': { 'name': ['all-interval tetrachord'] },\n '4,29,-1': { 'name': ['all-interval tetrachord'] },\n '5,1,0': { 'name': ['chromatic pentamirror'] },\n '5,2,1': { 'name': ['major-second pentacluster'] },\n '5,2,-1': { 'name': ['major-second pentacluster'] },\n '5,3,1': { 'name': ['minor-second major pentachord'] },\n '5,3,-1': { 'name': ['Spanish pentacluster'] },\n '5,4,1': { 'name': ['blues pentacluster'] },\n '5,4,-1': { 'name': ['minor-third pentacluster'] },\n '5,5,1': { 'name': ['major-third pentacluster'] },\n '5,5,-1': { 'name': ['major-third pentacluster'] },\n '5,6,1': { 'name': ['Asian pentacluster', 'quasi raga Megharanji'] },\n '5,6,-1': { 'name': ['Asian pentacluster'] },\n '5,7,1': { 'name': ['double pentacluster', 'quasi raga Nabhomani '] },\n '5,7,-1': { 'name': ['double pentacluster'] },\n '5,8,0': { 'name': ['tritone-symmetric pentamirror'] },\n '5,9,1': { 'name': ['tritone-expanding pentachord'] },\n '5,9,-1': { 'name': ['tritone-contracting pentachord'] },\n '5,10,1': { 'name': ['alternating pentachord'] },\n '5,10,-1': { 'name': ['alternating pentachord'] },\n '5,11,1': { 'name': ['center-cluster pentachord'] },\n '5,11,-1': { 'name': ['center-cluster pentachord'] },\n '5,12,0': { 'name': ['locrian pentachord'] },\n '5,13,1': { 'name': ['augmented pentacluster'] },\n '5,13,-1': { 'name': ['augmented pentacluster'] },\n '5,14,1': { 'name': ['double-seconds triple-fourth pentachord'] },\n '5,14,-1': { 'name': ['double-seconds triple-fourth pentachord'] },\n '5,15,0': { 'name': ['asymmetric pentamirror'] },\n '5,16,1': { 'name': ['major-minor-diminished pentachord'] },\n '5,16,-1': { 'name': ['major-minor diminished pentachord'] },\n '5,17,0': { 'name': ['minor-major ninth chord'] },\n '5,18,1': { 'name': ['Roma [Gypsy] pentachord'] },\n '5,18,-1': { 'name': ['Roma [Gypsy] pentachord'] },\n '5,19,1': { 'name': ['Javanese pentachord'] },\n '5,19,-1': { 'name': ['Balinese pentachord'] },\n '5,20,1': {\n 'name': ['Balinese Pelog pentatonic',\n 'quasi raga Bhupala', 'quasi raga Bibhas'],\n },\n '5,20,-1': { 'name': ['Hirajoshi pentatonic', 'Iwato', 'Sakura', 'quasi raga Saveri'] },\n '5,21,1': {\n 'name': ['major-augmented ninth chord', 'Syrian pentatonic',\n 'quasi raga Megharanji'],\n },\n '5,21,-1': { 'name': ['Lebanese pentachord', 'augmented-minor chord'] },\n '5,22,0': { 'name': ['Persian pentamirror', 'quasi raga Ramkali'] },\n '5,23,1': { 'name': ['dorian pentachord', 'minor pentachord'] },\n '5,23,-1': { 'name': ['major pentachord'] },\n '5,24,1': { 'name': ['phrygian pentachord'] },\n '5,24,-1': { 'name': ['lydian pentachord'] },\n '5,25,1': { 'name': ['diminished-major ninth chord'] },\n '5,25,-1': { 'name': ['minor-diminished ninth chord'] },\n '5,26,1': { 'name': ['diminished-augmented ninth chord'] },\n '5,26,-1': { 'name': ['augmented-diminished ninth chord'] },\n '5,27,1': { 'name': ['major-ninth chord'] },\n '5,27,-1': { 'name': ['minor-ninth chord'] },\n '5,28,1': { 'name': ['augmented-sixth pentachord'] },\n '5,28,-1': { 'name': ['Javanese pentatonic', 'augmented-sixth pentachord'] },\n '5,29,1': { 'name': ['Kumoi pentachord'] },\n '5,29,-1': { 'name': ['Kumoi pentachord'] },\n '5,30,1': { 'name': ['enigmatic pentachord'] },\n '5,30,-1': { 'name': ['enigmatic pentachord', 'altered pentatonic'] },\n '5,31,1': { 'name': ['diminished minor-ninth chord'] },\n '5,31,-1': { 'name': ['flat-ninth pentachord', 'quasi raga Ranjaniraga'] },\n '5,32,1': { 'name': ['Neapolitan pentachord'] },\n '5,32,-1': { 'name': ['Neapolitan pentachord'] },\n '5,33,0': { 'name': ['whole-tone pentachord'] },\n '5,34,0': {\n 'name': ['dominant-ninth', 'major-minor', 'Prometheus pentamirror',\n 'dominant pentatonic'],\n },\n '5,35,0': {\n 'name': ['major pentatonic', 'black-key scale', 'blues pentatonic',\n 'slendro', 'quartal pentamirror'],\n },\n '5,36,1': { 'name': ['major-seventh pentacluster'] },\n '5,36,-1': { 'name': ['minor-seventh pentacluster'] },\n '5,37,0': { 'name': ['center-cluster pentamirror'] },\n '5,38,1': { 'name': ['diminished pentacluster'] },\n '5,38,-1': { 'name': ['diminished pentacluster'] },\n '6,1,0': {\n 'name': ['A all combinatorial [P6, I11, RI5, RI11]', 'chromatic hexamirror',\n 'first-order all-combinatorial'],\n },\n '6,2,1': { 'name': ['combinatorial I [I11]'] },\n '6,2,-1': { 'name': ['combinatorial I [I1]'] },\n '6,3,1': {},\n '6,3,-1': {},\n '6,4,0': { 'name': ['combinatorial RI [RI6]'] },\n '6,5,1': { 'name': ['combinatorial I [I11]'] },\n '6,5,-1': { 'name': ['combinatorial I [I3]'] },\n '6,6,0': { 'name': ['double cluster hexamirror'] },\n '6,7,0': {\n 'name': ['B all combinatorial [P3, P9, I5, R6, R12, R8]',\n \"Messiaen's mode 5\",\n 'second-order all combinatorial'],\n },\n '6,8,0': { 'name': ['D all combinatorial [P6, I1, RI7]'] },\n '6,9,1': { 'name': ['combinatorial I [I11]'] },\n '6,9,-1': { 'name': ['combinatorial I [I3]'] },\n '6,10,1': {},\n '6,10,-1': {},\n '6,11,1': {},\n '6,11,-1': {},\n '6,12,1': {},\n '6,12,-1': {},\n '6,13,0': { 'name': ['alternating hexamirror', 'combinatorial I [I7]'] },\n '6,14,1': { 'name': ['combinatorial P [P6]'] },\n '6,14,-1': { 'name': ['combinatorial P [P6]'] },\n '6,15,1': { 'name': ['combinatorial I [I11]'] },\n '6,15,-1': { 'name': ['combinatorial I [I5]'] },\n '6,16,1': { 'name': ['combinatorial I [I3]'] },\n '6,16,-1': { 'name': ['combinatorial I [I1]', 'quasi raga Megha'] },\n '6,17,1': { 'name': ['all tri-chord hexachord'] },\n '6,17,-1': { 'name': ['all tri-chord hexachord [inverted form]'] },\n '6,18,1': { 'name': ['combinatorial I [I11]'] },\n '6,18,-1': { 'name': ['combinatorial I [I5]'] },\n '6,19,1': {},\n '6,19,-1': {},\n '6,20,0': {\n 'name':\n ['E all combinatorial [P2, P6, P10, I3, I7, R4, R8, RI1, RI5, RI9]',\n \"Messiaen's truncated mode 3\", 'Genus tertium',\n 'third-order all combinatorial'],\n },\n '6,21,1': { 'name': ['combinatorial I [I1]'] },\n '6,21,-1': { 'name': ['combinatorial I [I3]'] },\n '6,22,1': { 'name': ['combinatorial I [I11]'] },\n '6,22,-1': { 'name': ['combinatorial I [I5]'] },\n '6,23,0': { 'name': ['combinatorial RI [RI8]', 'super-locrian hexamirror'] },\n '6,24,1': {},\n '6,24,-1': { 'name': ['melodic-minor hexachord'] },\n '6,25,1': { 'name': ['locrian hexachord'] },\n '6,25,-1': { 'name': ['minor hexachord'] },\n '6,26,0': { 'name': ['phrygian hexamirror', 'combinatorial RI [RI8]'] },\n '6,27,1': { 'name': ['combinatorial I [I11]'] },\n '6,27,-1': { 'name': ['combinatorial I [I1]', 'pyramid hexachord'] },\n '6,28,0': { 'name': ['double-phrygian hexachord', 'combinatorial RI [RI6]'] },\n '6,29,0': { 'name': ['combinatorial RI [RI9]'] },\n '6,30,1': {\n 'name': [\"Messiaen's truncated mode 2\", 'minor-bitonal hexachord',\n 'combinatorial R [R6]', 'combinatorial I [I1, I7]'],\n },\n '6,30,-1': {\n 'name': [\"Stravinsky's Petrushka-chord\", \"Messiaen's truncated mode 2\",\n 'major-bitonal hexachord', 'combinatorial R [R6]',\n 'combinatorial I [I1, I7]'],\n },\n '6,31,1': { 'name': ['combinatorial I [I7]'] },\n '6,31,-1': { 'name': ['combinatorial I [I11]'] },\n '6,32,0': {\n 'name': ['C all combinatorial [P6, I3, RI9]', 'Guidon/Arezzo',\n 'Arezzo major diatonic', 'major hexamirror', 'quartal hexamirror',\n 'first-order all combinatorial'],\n },\n '6,33,1': { 'name': ['dorian hexachord', 'combinatorial I [I6]'] },\n '6,33,-1': { 'name': ['dominant-eleventh', 'lydian hexachord', 'combinatorial I [I1]'] },\n '6,34,1': {\n 'name': [\"Scriabin's Mystic-chord\", 'Prometheus hexachord',\n 'combinatorial I [I11]'],\n },\n '6,34,-1': {\n 'name': ['augmented-eleventh', 'harmonic hexachord',\n 'combinatorial I [I7]'],\n },\n '6,35,0': {\n 'name': ['whole tone scale', '6 equal part division',\n 'F all-combinatorial [P1, P3, P5, P7, P9, P11, I1, I3, I5, I7, '\n + 'I9, I11, R2, R4, R6, R8, R10, RI2, RI4, RI6, RI8, RI10]',\n \"Messiaen's mode 1\", 'sixth-order all combinatorial'],\n },\n '6,36,1': {},\n '6,36,-1': {},\n '6,37,0': { 'name': ['combinatorial RI [RI4]'] },\n '6,38,0': { 'name': ['combinatorial RI [RI3]'] },\n '6,39,1': {},\n '6,39,-1': {},\n '6,40,1': {},\n '6,40,-1': {},\n '6,41,1': {},\n '6,41,-1': {},\n '6,42,0': { 'name': ['combinatorial RI [RI3]'] },\n '6,43,1': { 'name': ['complement of all tri-chord hexachord'] },\n '6,43,-1': { 'name': ['complement of all-tri-chord hexachord [inverted form]'] },\n '6,44,1': { 'name': ['Schoenberg Anagram hexachord'] },\n '6,44,-1': { 'name': ['quasi raga Bauli'] },\n '6,45,0': { 'name': ['combinatorial RI [RI6]'] },\n '6,46,1': {},\n '6,46,-1': {},\n '6,47,1': {},\n '6,47,-1': { 'name': ['blues scale'] },\n '6,48,0': { 'name': ['combinatorial RI [RI2]'] },\n '6,49,0': { 'name': ['combinatorial RI [RI4]', 'Prometheus Neapolitan mode'] },\n '6,50,0': { 'name': ['combinatorial RI [RI1]'] },\n '7,1,0': { 'name': ['chromatic heptamirror'] },\n '7,2,1': {},\n '7,2,-1': {},\n '7,3,1': {},\n '7,3,-1': {},\n '7,4,1': {},\n '7,4,-1': {},\n '7,5,1': {},\n '7,5,-1': {},\n '7,6,1': {},\n '7,6,-1': {},\n '7,7,1': {},\n '7,7,-1': {},\n '7,8,0': {},\n '7,9,1': {},\n '7,9,-1': {},\n '7,10,1': {},\n '7,10,-1': {},\n '7,11,1': {},\n '7,11,-1': {},\n '7,12,0': {},\n '7,13,1': {},\n '7,13,-1': {},\n '7,14,1': {},\n '7,14,-1': {},\n '7,15,0': {},\n '7,16,1': { 'name': [\"Debussy's heptatonic\"] },\n '7,16,-1': {},\n '7,17,0': {},\n '7,18,1': {},\n '7,18,-1': {},\n '7,19,1': {},\n '7,19,-1': {},\n '7,20,1': { 'name': ['chromatic phrygian inverse'] },\n '7,20,-1': {\n 'name': ['Greek chromatic', 'chromatic mixolydian', 'chromatic dorian',\n 'quasi raga Pantuvarali', 'mela Kanakangi'],\n },\n '7,21,1': {},\n '7,21,-1': { 'name': ['Gypsy [Roma] hepatonic'] },\n '7,22,0': {\n 'name': ['double harmonic scale', 'Persian', 'major Gypsy [Roma]',\n 'Hungarian minor', 'double harmonic scale', 'Asian',\n 'quasi raga Mayamdavagaula'],\n },\n '7,23,1': {},\n '7,23,-1': { 'name': ['tritone major heptachord'] },\n '7,24,1': {},\n '7,24,-1': { 'name': ['mystic heptachord', 'Enigmatic heptatonic'] },\n '7,25,1': {},\n '7,25,-1': {},\n '7,26,1': {},\n '7,26,-1': {},\n '7,27,1': {},\n '7,27,-1': { 'name': ['modified blues'] },\n '7,28,1': {},\n '7,28,-1': {},\n '7,29,1': {},\n '7,29,-1': {},\n '7,30,1': { 'name': ['Neapolitan-minor mode'] },\n '7,30,-1': {},\n '7,31,1': { 'name': ['alternating heptachord', 'Hungarian major mode'] },\n '7,31,-1': { 'name': ['diminished scale', 'alternating heptachord'] },\n '7,32,1': { 'name': ['harmonic minor scale', 'Spanish Gypsy', 'mela Kiravani'] },\n '7,32,-1': {\n 'name': ['harmonic major scale', 'harmonic minor inverse', 'mela Cakravana',\n 'quasi raga Ahir Bhairav'],\n },\n '7,33,0': { 'name': ['Neapolitan-major mode', 'leading-whole-tone mode'] },\n '7,34,0': {\n 'name': ['melodic minor ascending scale', 'jazz minor',\n 'augmented thirteenth heptamirror', 'harmonic/super-locrian'],\n },\n '7,35,0': {\n 'name': ['major scale', 'major diatonic heptachord', 'natural minor scale',\n 'dominant thirteenth', 'locrian', 'phrygian', 'major inverse'],\n },\n '7,36,1': {},\n '7,36,-1': {},\n '7,37,0': {},\n '7,38,1': {},\n '7,38,-1': {},\n '8,1,0': { 'name': ['chromatic octamirror'] },\n '8,2,1': {},\n '8,2,-1': {},\n '8,3,0': {},\n '8,4,1': {},\n '8,4,-1': {},\n '8,5,1': {},\n '8,5,-1': {},\n '8,6,0': {},\n '8,7,0': {},\n '8,8,0': {},\n '8,9,0': { 'name': [\"Messiaen's mode 4\"] },\n '8,10,0': {},\n '8,11,1': {},\n '8,11,-1': { 'name': ['blues octatonic'] },\n '8,12,1': {},\n '8,12,-1': {},\n '8,13,1': { 'name': ['blues octatonic'] },\n '8,13,-1': {},\n '8,14,1': {},\n '8,14,-1': {},\n '8,15,1': {},\n '8,15,-1': {},\n '8,16,1': {},\n '8,16,-1': { 'name': ['enigmatic octachord'] },\n '8,17,0': {},\n '8,18,1': {},\n '8,18,-1': {},\n '8,19,1': {},\n '8,19,-1': {},\n '8,20,0': {},\n '8,21,0': {},\n '8,22,1': {},\n '8,22,-1': { 'name': ['Spanish octatonic scale'] },\n '8,23,0': { 'name': ['Greek', 'blues', 'quartal octachord', 'diatonic octad'] },\n '8,24,0': {},\n '8,25,0': { 'name': [\"Messiaen's mode 6\"] },\n '8,26,0': { 'name': ['blues', 'Spanish phrygian'] },\n '8,27,1': {},\n '8,27,-1': {},\n '8,28,0': {\n 'name': ['octatonic scale', \"Messiaen's mode 2\",\n 'alternating octatonic scale',\n 'diminished scale'],\n },\n '8,29,1': {},\n '8,29,-1': {},\n\n '9,1,0': { 'name': ['chromatic nonamirror'] },\n '9,2,1': {},\n '9,2,-1': {},\n '9,3,1': {},\n '9,3,-1': {},\n '9,4,1': {},\n '9,4,-1': {},\n '9,5,1': {},\n '9,5,-1': {},\n '9,6,0': {},\n '9,7,1': { 'name': ['nonatonic blues'] },\n '9,7,-1': {},\n '9,8,1': {},\n '9,8,-1': {},\n '9,9,0': {},\n '9,10,0': {},\n '9,11,1': {},\n '9,11,-1': { 'name': ['diminishing nonachord'] },\n '9,12,0': { 'name': [\"Messiaen's mode 3\", 'Tsjerepnin'] },\n\n '10,1,0': { 'name': ['chromatic decamirror'] },\n '10,2,0': {},\n '10,3,0': {},\n '10,4,0': {},\n '10,5,0': { 'name': ['major-minor mixed'] },\n '10,6,0': { 'name': [\"Messiaen's mode 7\"] },\n\n '11,1,0': { 'name': ['chromatic undecamirror'] },\n '12,1,0': {\n 'name': ['aggregate', 'dodecachord', 'twelve-tone chromatic',\n 'chromatic scale', 'dodecamirror'],\n },\n};\n\nexport function forteIndexToInversionsAvailable(card, index) {\n if (card < 1 || card > 12) {\n throw new Error(`cardinality ${card} is not valid`);\n }\n if (index < 1 || index > TNMAX[card]) {\n throw new Error(`index ${index} is invalid`);\n }\n // get morris invariance vector\n const morris = FORTE[card][index][2];\n if (morris[1] > 0) { // second value stored inversion status\n return [0];\n } else {\n return [-1, 1];\n }\n}\n\nfunction _chordTableAddress(cardinality, forteClass, inversion=undefined, pcOriginal=undefined) {\n return {\n cardinality,\n forteClass,\n inversion,\n pcOriginal,\n };\n}\n\nfunction _validateAddress(address) {\n if (address !== undefined && address.cardinality !== undefined) {\n // got an object...\n address = [address.cardinality, address.forteClass, address.inversion, address.pcOriginal];\n }\n\n // noinspection JSObjectNullOrUndefined\n const [card, index] = address.slice(0, 2);\n let inversion;\n if (address.length >= 3 && address[2] !== undefined) {\n inversion = address[2];\n }\n if (card < 1 || card > 13) {\n throw new Error(`cardinality ${card} not valid`);\n }\n // using TN mode for all comparisons\n if (index < 1 || index > TNMAX[card]) {\n throw new Error(`index ${index} not valid`);\n }\n const inversionsAvailable = forteIndexToInversionsAvailable(card, index);\n if (inversion !== undefined) {\n if (!inversionsAvailable.includes(inversion)) {\n throw new Error(`inversion ${inversion} not valid`);\n }\n }\n if (inversion === undefined) { // get a default inversion\n if (inversionsAvailable.includes(0)) {\n inversion = 0;\n } else {\n inversion = 1;\n }\n }\n return [card, index, inversion];\n}\n\nexport function addressToTransposedNormalForm(address) {\n const [card, index, inversion] = _validateAddress(address);\n const i2 = String([index, inversion]);\n return SCDICT[card][i2][0];\n}\n\nexport function addressToPrimeForm(address) {\n const [card, index, inversion] = _validateAddress(address.slice(0, 2));\n const i2 = String([index, inversion]);\n return SCDICT[card][i2][0];\n}\n\nexport function addressToIntervalVector(address) {\n const [card, index, inversion] = _validateAddress(address);\n const i2 = String([index, inversion]);\n return SCDICT[card][i2][2];\n}\n\nexport function intervalVectorToAddress(vector) {\n const post = [];\n for (let card = 1; card < 13; card++) {\n let num = 0;\n for (const sc of FORTE[card]) {\n if (sc === undefined) {\n num += 1;\n continue; // first, used for spacing\n }\n // index 1 is vector\n if (arrayEquals(sc[1], vector)) {\n post.push(_chordTableAddress(card, num));\n }\n num += 1;\n }\n }\n return post;\n}\n\nexport function addressToZAddress(address) {\n // noinspection JSUnusedLocalSymbols\n const [card, index, unused_inversion] = _validateAddress(address);\n const z = FORTE[card][index][3];\n if (z === 0) {\n return undefined;\n } else {\n let zReal = z;\n if (Array.isArray(z)) {\n zReal = z[0];\n }\n const zAddress = _validateAddress([card, zReal, undefined]);\n return _chordTableAddress(zAddress[0], zAddress[1], zAddress[2]);\n }\n}\n\nexport function addressToCommonNames(address) {\n const addressNew = _validateAddress(address);\n const refDict = SCREF[String(addressNew)];\n return refDict.name;\n}\n\nexport function addressToForteName(address, classification: string ='tn') {\n const [card, index, inversion] = _validateAddress(address);\n let iStr;\n if (classification.toLowerCase() === 'tn') {\n if (inversion === -1) {\n iStr = 'B';\n } else if (inversion === 1) {\n iStr = 'A';\n } else if (inversion === 0) {\n iStr = '';\n }\n } else { // tni, ignore inversion\n iStr = '';\n }\n return `${card}-${index}${iStr}`;\n}\n\nexport function seekChordTablesAddress(c) {\n const pcSet = c.orderedPitchClasses;\n if (!(pcSet.length)) {\n throw new Error(\n 'cannot access chord tables address for Chord with no pitches'\n );\n }\n const card = pcSet.length;\n if (card === 1) { // its a singleton: return\n return _chordTableAddress(1, 1, 0, pcSet[0]);\n } else if (card === 12) { // its the aggregate\n return _chordTableAddress(12, 1, 0, 0);\n }\n // go through each rotation of pcSet\n const candidates = [];\n for (let rot = 0; rot < card; rot++) {\n const testSetOrig = pcSet.slice(rot);\n for (let rotRemainder = 0; rotRemainder < rot; rotRemainder++) {\n testSetOrig.push(pcSet[rotRemainder]);\n }\n // transpose to lead with zero\n const testSetOriginalPC = testSetOrig[0];\n const testSet = [];\n for (const x of testSetOrig) {\n const zeroTransposed = posMod(x - testSetOriginalPC, 12);\n testSet.push(zeroTransposed);\n }\n // create inversion; first take difference from 12 mod 12\n const testSetInvert = [];\n for (const x of testSet) {\n testSetInvert.push(posMod(12 - x, 12));\n }\n testSetInvert.reverse(); // reverse order (first steps now last)\n // transpose all steps (were last) to zero, mod 12\n const testSetInvertOriginalPC = testSetInvert[0];\n for (let i = 0; i < testSetInvert.length; i++) {\n testSetInvert[i] = posMod(testSetInvert[i] + (12 - testSetInvertOriginalPC), 12);\n }\n const candidateTuple = [testSet, testSetInvert, testSetOriginalPC];\n candidates.push(candidateTuple);\n }\n // compare sets to those in table\n let match = false;\n let matchedPCOriginal;\n let index;\n let inversion;\n\n for (let indexCandidate = 0; indexCandidate < FORTE[card].length; indexCandidate++) {\n const dataLine = FORTE[card][indexCandidate];\n if (dataLine === undefined) {\n continue; // spacer lines\n }\n const dataLinePcs = dataLine[0];\n const inversionsAvailable = forteIndexToInversionsAvailable(card, indexCandidate);\n for (const [candidate, candidateInversion, candidateOriginalPC] of candidates) {\n if (arrayEquals(dataLinePcs, candidate)) {\n index = indexCandidate;\n if (inversionsAvailable.includes(0)) {\n inversion = 0;\n } else {\n inversion = 1;\n }\n matchedPCOriginal = candidateOriginalPC;\n match = true;\n break;\n } else if (arrayEquals(dataLinePcs, candidateInversion)) {\n index = indexCandidate;\n if (inversionsAvailable.includes(0)) {\n inversion = 0;\n } else {\n inversion = -1;\n }\n matchedPCOriginal = candidateOriginalPC;\n match = true;\n break;\n }\n }\n }\n if (!match) {\n throw new Error(`cannot find a chord table address for ${pcSet}`);\n }\n return _chordTableAddress(card, index, inversion, matchedPCOriginal);\n}\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/clef -- Clef objects\n *\n * Copyright (c) 2013-19, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–19, Michael Scott Cuthbert and cuthbertLab\n *\n * Clef module, see {@link music21.clef} for namespace\n * Clef related objects and properties\n *\n * @exports music21/clef\n * @namespace music21.clef\n * @memberof music21\n * @requires music21/base\n * @requires music21/pitch\n */\nimport * as base from './base';\nimport * as pitch from './pitch';\nimport { Stream } from './stream'; // for typing only\n\n/* music21.Clef\n must be defined before Stream since Stream subclasses call new music21.Clef...\n */\n\n// TODO: Fix to newest Vexflow format...\n\n/**\n *\n * @type {\n * {bass: number, soprano: number, tenor: number, percussion: number,\n * 'mezzo-soprano': number, alto: number, treble: number}}\n */\nexport const lowestLines = {\n treble: 31,\n soprano: 29,\n 'mezzo-soprano': 27,\n alto: 25,\n tenor: 23,\n bass: 19,\n percussion: 31,\n};\n\n/**\n *\n * @type {\n * {bass: number, soprano: number, tenor: number, percussion: number,\n * 'mezzo-soprano': number, alto: number, treble: number}}\n */\nexport const nameToLine = {\n treble: 2,\n soprano: 1,\n 'mezzo-soprano': 2,\n alto: 3,\n tenor: 4,\n bass: 4,\n percussion: 3,\n};\n\n/**\n *\n * @type {\n * {bass: string, soprano: string, tenor: string, percussion: string,\n * 'mezzo-soprano': string, alto: string, treble: string}}\n */\nexport const nameToSign = {\n treble: 'G',\n soprano: 'C',\n 'mezzo-soprano': 'C',\n alto: 'C',\n tenor: 'C',\n bass: 'F',\n percussion: 'percussion',\n};\n\n/**\n * Clef name can be one of\n * \"treble\", \"bass\", \"soprano\", \"mezzo-soprano\", \"alto\", \"tenor\", \"percussion\"\n *\n * @param {string} name - clef name\n * @param {number} [octaveChange=0] - ottava\n * @property {string} [name]\n * @property {number} lowestLine - diatonicNoteNum (C4 = 29) for the\n * lowest line (in a five-line staff)\n * @property {number} lowestLineTrebleOffset - difference between the first line\n * of this staff and the first line in treble clef\n * @property {number} octaveChange\n */\nexport class Clef extends base.Music21Object {\n static get className() { return 'music21.clef.Clef'; }\n\n name: string = undefined;\n sign: string = undefined;\n line: number = 1;\n octaveChange: number;\n lowestLine: number = lowestLines.treble;\n lowestLineTrebleOffset: number = 0;\n\n constructor(name?: string, octaveChange: number = 0) {\n super();\n this.classSortOrder = 0;\n\n if (name !== undefined) {\n name = name.toLowerCase();\n this.name = name;\n this.lowestLine = lowestLines[name];\n this.sign = nameToSign[name];\n this.line = nameToLine[name] || 1;\n this.lowestLineTrebleOffset\n = lowestLines.treble - this.lowestLine;\n }\n\n this.octaveChange = octaveChange;\n this.lowestLine += 7 * octaveChange;\n this.lowestLineTrebleOffset -= 7 * octaveChange;\n }\n\n stringInfo() {\n return '';\n }\n\n /**\n * returns a new pitch object if the clef name is not Treble\n * designed so it would look the same as it would in treble clef.\n * for instance, bass-clef 2nd-space C# becomes treble clef 2nd-space A#\n * used for Vex.Flow which requires all pitches to be input as if they\n * are in treble clef.\n */\n convertPitchToTreble(p: pitch.Pitch): pitch.Pitch {\n if (this.lowestLine === undefined) {\n console.log('no first line defined for clef', this.name, this);\n return p; // error\n }\n const lowestLineDifference = this.lowestLineTrebleOffset;\n const tempPitch = new pitch.Pitch(p.step);\n tempPitch.octave = p.octave;\n tempPitch.diatonicNoteNum += lowestLineDifference;\n tempPitch.accidental = p.accidental;\n return tempPitch;\n }\n\n getStemDirectionForPitches(\n pitchList: pitch.Pitch|pitch.Pitch[],\n {\n firstLastOnly=true,\n extremePitchOnly=true,\n }: {\n firstLastOnly?: boolean,\n extremePitchOnly?: boolean,\n } = {},\n ): string {\n let pitchRealList: pitch.Pitch[];\n if (!(pitchList instanceof Array)) {\n pitchRealList = [pitchList as pitch.Pitch];\n } else {\n pitchRealList = pitchList as pitch.Pitch[];\n }\n\n if (!pitchRealList.length) {\n throw new Error('getStemDirectionForPitches cannot operate on an empty Array');\n }\n\n let relevantPitches: pitch.Pitch[] = [];\n if (extremePitchOnly) {\n pitchRealList.sort((a, b) => a.diatonicNoteNum - b.diatonicNoteNum);\n const pitchMin = pitchRealList[0];\n const pitchMax = pitchRealList[pitchRealList.length - 1];\n relevantPitches = [pitchMin, pitchMax];\n } else if (firstLastOnly) {\n relevantPitches = [pitchRealList[0], pitchRealList[pitchRealList.length - 1]];\n } else {\n relevantPitches = pitchRealList;\n }\n\n let differenceSum = 0;\n const midLine = this.lowestLine + 4;\n for (const p of relevantPitches) {\n differenceSum += p.diatonicNoteNum - midLine;\n }\n\n if (differenceSum >= 0) {\n return 'down';\n } else {\n return 'up';\n }\n }\n}\n\n/**\n * A TrebleClef (same as new music21.clef.Clef('treble'))\n *\n * @class TrebleClef\n * @memberof music21.clef\n * @extends music21.clef.Clef\n */\nexport class TrebleClef extends Clef {\n static get className() { return 'music21.clef.TrebleClef'; }\n\n constructor() {\n super('treble');\n this.sign = 'G';\n this.line = 2;\n }\n}\n\n/**\n * A TrebleClef down an octave (same as new music21.clef.Clef('treble', -1))\n *\n * Unlike music21p, currently not a subclass of TrebleClef.\n *\n * @class Treble8vbClef\n * @memberof music21.clef\n * @extends music21.clef.Clef\n */\nexport class Treble8vbClef extends Clef {\n static get className() { return 'music21.clef.Treble8vbClef'; }\n\n constructor() {\n super('treble', -1);\n }\n}\n\n/**\n * A TrebleClef up an octave (same as new music21.clef.Clef('treble', 1))\n *\n * @class Treble8vaClef\n * @memberof music21.clef\n * @extends music21.clef.Clef\n */\nexport class Treble8vaClef extends Clef {\n static get className() { return 'music21.clef.Treble8vaClef'; }\n\n constructor() {\n super('treble', 1);\n }\n}\n\n/**\n * A BassClef (same as new music21.clef.Clef('bass'))\n *\n * @class BassClef\n * @memberof music21.clef\n * @extends music21.clef.Clef\n */\nexport class BassClef extends Clef {\n static get className() { return 'music21.clef.BassClef'; }\n\n constructor() {\n super('bass');\n this.sign = 'F';\n this.line = 4;\n }\n}\n\n/**\n * A BassClef down an octave (same as new music21.clef.Clef('bass', -1))\n *\n * @class Bass8vbClef\n * @memberof music21.clef\n * @extends music21.clef.Clef\n */\nexport class Bass8vbClef extends Clef {\n static get className() { return 'music21.clef.Bass8vbClef'; }\n\n constructor() {\n super('bass', -1);\n this.sign = 'F';\n this.line = 4;\n }\n}\n\n/**\n * An AltoClef (same as new music21.clef.Clef('alto'))\n *\n * @class AltoClef\n * @memberof music21.clef\n * @extends music21.clef.Clef\n */\nexport class AltoClef extends Clef {\n static get className() { return 'music21.clef.AltoClef'; }\n\n constructor() {\n super('alto');\n this.sign = 'C';\n this.line = 3;\n }\n}\n\n/**\n * A Tenor Clef (same as new music21.clef.Clef('tenor'))\n *\n * @class TenorClef\n * @memberof music21.clef\n * @extends music21.clef.Clef\n */\nexport class TenorClef extends Clef {\n static get className() { return 'music21.clef.TenorClef'; }\n\n constructor() {\n super('tenor');\n this.sign = 'C';\n this.line = 4;\n }\n}\n\n/**\n * A Soprano Clef (same as new music21.clef.Clef('soprano'))\n *\n * @class SopranoClef\n * @memberof music21.clef\n * @extends music21.clef.Clef\n */\nexport class SopranoClef extends Clef {\n static get className() { return 'music21.clef.SopranoClef'; }\n\n constructor() {\n super('soprano');\n this.sign = 'C';\n this.line = 1;\n }\n}\n\n/**\n * A Mezzo-Soprano Clef (same as new music21.clef.Clef('mezzo-soprano'))\n *\n * @class MezzoSopranoClef\n * @memberof music21.clef\n * @extends music21.clef.Clef\n */\nexport class MezzoSopranoClef extends Clef {\n static get className() { return 'music21.clef.MezzoSopranoClef'; }\n\n constructor() {\n super('mezzo-soprano');\n this.sign = 'C';\n this.line = 2;\n }\n}\n\n/**\n * A Percussion Clef (same as new music21.clef.Clef('percussion'))\n *\n * First line is treated as if it's treble clef. Not available as \"bestClef\"\n *\n * @class PercussionClef\n * @memberof music21.clef\n * @extends music21.clef.Clef\n */\nexport class PercussionClef extends Clef {\n static get className() { return 'music21.clef.PercussionClef'; }\n\n constructor() {\n super('percussion');\n this.sign = 'percussion';\n this.line = 3;\n }\n}\n\nexport const all_clefs = {\n TrebleClef,\n Treble8vbClef,\n Treble8vaClef,\n BassClef,\n Bass8vbClef,\n AltoClef,\n TenorClef,\n SopranoClef,\n MezzoSopranoClef,\n PercussionClef,\n};\n\n/**\n * Looks at the pitches in a Stream and returns the best clef\n * of Treble and Bass\n *\n */\nexport function bestClef(st: Stream, { recurse=true }={}): Clef {\n // console.log('calling flat on stream: ', st.elements.length, st.classes[st.classes.length - 1]);\n let stFlat;\n if (recurse) {\n stFlat = st.flat;\n } else {\n stFlat = st;\n }\n let totalNotes = 0;\n let totalPitch = 0.0;\n for (let i = 0; i < stFlat.length; i++) {\n const el = stFlat.get(i);\n if (el.pitch !== undefined) {\n totalNotes += 1;\n totalPitch += el.pitch.diatonicNoteNum;\n } else if (el.pitches !== undefined) {\n for (let j = 0; j < el.pitches.length; j++) {\n totalNotes += 1;\n totalPitch += el.pitches[j].diatonicNoteNum;\n }\n }\n }\n let averageHeight;\n if (totalNotes === 0) {\n averageHeight = 29;\n } else {\n averageHeight = totalPitch / totalNotes;\n }\n // console.log('bestClef: average height', averageHeight);\n if (averageHeight > 28) {\n // 29 = c4\n return new TrebleClef();\n } else {\n return new BassClef();\n }\n}\n\n/**\n *\n * @param {string} clefString\n * @param {number} [octaveShift=0]\n * @returns {music21.clef.Clef}\n */\nexport function clefFromString(clefString, octaveShift=0) {\n const xnStr = clefString.trim();\n let thisType;\n let lineNum;\n if (xnStr.toLowerCase() === 'percussion') {\n return new PercussionClef();\n } // todo: tab, none, jianpu\n\n if (xnStr.length === 2) {\n thisType = xnStr[0].toUpperCase();\n lineNum = parseInt(xnStr[1]);\n } else if (xnStr.length === 1) {\n thisType = xnStr[0].toUpperCase();\n if (thisType === 'G') {\n lineNum = 2;\n } else if (thisType === 'F') {\n lineNum = 4;\n } else if (thisType === 'C') {\n lineNum = 3;\n } else {\n lineNum = 0;\n }\n } else if (xnStr.length > 2) {\n // try to get any clef in the module\n const searchLower = xnStr.toLowerCase();\n for (const clefKey of Object.keys(all_clefs)) {\n const clefLower = clefKey.toLowerCase();\n const potentialClass = all_clefs[clefKey];\n if (typeof potentialClass !== 'function') {\n continue;\n }\n if (clefLower !== searchLower && clefLower !== searchLower + 'clef') {\n continue;\n }\n return new potentialClass();\n }\n }\n\n const arrayEqual = (a, b) => a.length === b.length && a.every((el, ix) => el === b[ix]);\n\n const params = [thisType, lineNum, octaveShift];\n if (arrayEqual(params, ['G', 2, 0])) {\n return new TrebleClef();\n } else if (arrayEqual(params, ['G', 2, -1])) {\n return new Treble8vbClef();\n } else if (arrayEqual(params, ['G', 2, 1])) {\n return new Treble8vaClef();\n } else if (arrayEqual(params, ['F', 4, 0])) {\n return new BassClef();\n } else if (arrayEqual(params, ['F', 4, -1])) {\n return new Bass8vbClef();\n } else if (arrayEqual(params, ['C', 3, 0])) {\n return new AltoClef();\n } else if (arrayEqual(params, ['C', 4, 0])) {\n return new TenorClef();\n } else {\n return new Clef(xnStr, octaveShift);\n }\n}\n","/**\n * common functions\n * functions that are useful everywhere...\n *\n * @exports music21/common\n * @memberof music21\n */\n\n/**\n * concept borrowed from Vex.Flow.Merge, though here the source can be undefined;\n * http://stackoverflow.com/questions/171251/how-can-i-merge-properties-of-two-javascript-objects-dynamically\n * recursive parts used in .clone()\n *\n * @function music21.common.merge\n * @param {Object} destination - object to have attributes placed into\n * @param {Object} source - object to take attributes from.\n * @memberof music21.common\n * @returns {Object} destination\n */\nexport function merge(destination, source) {\n if (source === undefined || source === null) {\n return destination;\n }\n for (const p in source) {\n if (!{}.hasOwnProperty.call(source, p)) {\n continue;\n }\n try {\n // Property in destination object set; update its value.\n if (source[p] && source[p].constructor === Object) {\n destination[p] = merge(destination[p], source[p]);\n } else {\n destination[p] = source[p];\n }\n } catch (e) {\n // Property in destination object not set; create it and set its value.\n destination[p] = source[p];\n }\n }\n return destination;\n}\n\nexport function range(start, stop, step) {\n if (step === undefined) {\n step = 1;\n }\n if (stop === undefined) {\n stop = start;\n start = 0;\n }\n\n const count = Math.ceil((stop - start) / step);\n return Array.apply(0, Array(count)).map((e, i) => i * step + start);\n}\n\n/**\n * Mix in another class into this class -- a simple form of multiple inheritance.\n * See articulations.Marcato for an example.\n *\n */\nexport function mixin(OtherParent, thisClassOrObject) {\n let proto = Object.getPrototypeOf(OtherParent);\n const classProto = Object.getPrototypeOf(thisClassOrObject);\n\n while (proto) {\n for (const key in Object.keys(proto)) {\n if (!{}.hasOwnProperty.call(proto, key)) {\n continue;\n }\n if (!(key in classProto)) {\n classProto[key] = proto[key];\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n}\n\n/**\n * Aggregation -- closer to true multiple inheritance -- prefers last class's functions. See\n * https://stackoverflow.com/questions/29879267/es6-class-multiple-inheritance\n *\n * not currently used...\n */\n// export const aggregation = (baseClass, ...mixins) => {\n// class base extends baseClass {\n// constructor(...args) {\n// super(...args);\n// mixins.forEach(mixin => {\n// copyProps(this, new mixin());\n// });\n// }\n// }\n// const copyProps = (target, source) => {\n// // this function copies all properties and symbols, filtering out some special ones\n// // noinspection JSUnresolvedFunction,JSCheckFunctionSignatures\n// Object.getOwnPropertyNames(source)\n// .concat(Object.getOwnPropertySymbols(source))\n// .forEach(prop => {\n// if (\n// !prop.match(\n// /^(?:constructor|prototype|arguments|caller|name|bind|call|apply|toString|length)$/\n// )\n// ) {\n// Object.defineProperty(\n// target,\n// prop,\n// Object.getOwnPropertyDescriptor(source, prop)\n// );\n// }\n// });\n// };\n// mixins.forEach(mixin => {\n// // outside constructor() to allow aggregation(A,B,C).staticFunction() to be called etc.\n// copyProps(base.prototype, mixin.prototype);\n// copyProps(base, mixin);\n// });\n// return base;\n// };\n\n\n/**\n * posMod - return a modulo value that is not negative\n *\n * @param {int} a value\n * @param {int} b modulo\n * @return {int} a mod b between 0 and b - 1\n */\n\nexport function posMod(a, b) {\n if (a === undefined || b === undefined) {\n throw new Error('Modulo needs two numbers');\n }\n return (a % b + b) % b;\n}\n\n/**\n *\n * Returns the statistical mode (most commonly appearing element)\n * in a.\n *\n * In case of tie, returns the first element to reach the maximum\n * number of occurrences.\n *\n * @function music21.common.statisticalMode\n * @param {Array<*>} a - an array to analyze\n * @returns {Object} element with the highest frequency in a\n */\nexport function statisticalMode(a) {\n if (a.length === 0) {\n return null;\n }\n const modeMap = {};\n let maxEl = a[0];\n let maxCount = 1;\n for (let i = 0; i < a.length; i++) {\n const el = a[i];\n if (modeMap[el] == null) {\n modeMap[el] = 0;\n }\n modeMap[el] += 1;\n if (modeMap[el] > maxCount) {\n maxEl = el;\n maxCount = modeMap[el];\n }\n }\n return maxEl;\n}\n\n/**\n * fromRoman - Convert a Roman numeral (upper or lower) to an int.\n *\n * @param {string} num roman numeral representation of a number\n * @return {int} integer value of roman numeral;\n */\n\nexport function fromRoman(num) {\n const inputRoman = num.toUpperCase();\n const subtractionValues = [1, 10, 100];\n const nums = ['M', 'D', 'C', 'L', 'X', 'V', 'I'];\n const ints = [1000, 500, 100, 50, 10, 5, 1];\n const places = [];\n for (const c of inputRoman) {\n if (!nums.includes(c)) {\n throw new Error(\n 'Value is not a valid roman numeral: ' + inputRoman\n );\n }\n }\n for (let i = 0; i < inputRoman.length; i++) {\n const c = inputRoman[i];\n let value = ints[nums.indexOf(c)];\n if (i < inputRoman.length - 1) {\n const nextValue = ints[nums.indexOf(inputRoman[i + 1])];\n if (nextValue > value && subtractionValues.includes(value)) {\n value *= -1;\n }\n }\n places.push(value);\n }\n let summation = 0;\n for (const n of places) {\n summation += n;\n }\n return summation;\n}\n\n/**\n * toRoman - Convert a number from 1 to 3999 to a roman numeral\n *\n * @param {int} num number to convert\n * @return {string} as roman numeral\n */\n\nexport function toRoman(num) {\n if (typeof num !== 'number') {\n throw new Error('expected integer, got ' + typeof num);\n }\n if (num < 0 || num > 4000) {\n throw new Error('Argument must be between 1 and 3999');\n }\n const ints = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1];\n const nums = [\n 'M',\n 'CM',\n 'D',\n 'CD',\n 'C',\n 'XC',\n 'L',\n 'XL',\n 'X',\n 'IX',\n 'V',\n 'IV',\n 'I',\n ];\n let result = '';\n for (let i = 0; i < ints.length; i++) {\n const count = Math.floor(num / ints[i]);\n result += nums[i].repeat(count);\n num -= ints[i] * count;\n }\n return result;\n}\n\n/**\n * Creates an SVGElement of an SVG figure using the correct `document.createElementNS` call.\n *\n * @function music21.common.makeSVGright\n * @param {string} [tag='svg'] - a tag, such as 'rect', 'circle', 'text', or 'svg'\n * @param {Object} [attrs] - attributes to pass to the tag.\n * @memberof music21.common\n * @returns {SVGElement}\n */\nexport function makeSVGright(tag='svg', attrs={}) {\n // see http://stackoverflow.com/questions/3642035/jquerys-append-not-working-with-svg-element\n // normal JQuery does not work.\n const el = document.createElementNS('http://www.w3.org/2000/svg', tag);\n for (const k in attrs) {\n if (!{}.hasOwnProperty.call(attrs, k)) {\n continue;\n }\n el.setAttribute(k, attrs[k]);\n }\n return el;\n}\n\n/**\n * Take a number such as 32 and return a string such as \"nd\"\n * (for \"32nd\") etc.\n *\n * @function music21.common.ordinalAbbreviation\n * @param {number} value\n * @param {boolean} [plural=false] - make plural (note that \"21st\" plural is \"21st\")\n * @return {string}\n */\nexport function ordinalAbbreviation(value: number, plural: boolean = false) {\n let post: string;\n const valueHundredths = value % 100;\n if (\n valueHundredths === 11\n || valueHundredths === 12\n || valueHundredths === 13\n ) {\n post = 'th';\n } else {\n const valueMod = value % 10;\n if (valueMod === 1) {\n post = 'st';\n } else if (valueMod === 2) {\n post = 'nd';\n } else if (valueMod === 3) {\n post = 'rd';\n } else {\n post = 'th';\n }\n }\n if (post !== 'st' && plural) {\n post += 's';\n }\n return post;\n}\n\n/**\n * Find a rational number approximation of this floating point.\n *\n * @function music21.common.rationalize\n * @param {number} ql - number to rationalize\n * @param {number} [epsilon=0.001] - how close to get\n * @param {int} [maxDenominator=50] - maximum denominator\n * @returns {object|undefined} {'numerator: numerator, 'denominator': denominator}\n */\nexport function rationalize(ql: number, epsilon=0.001, maxDenominator=50) {\n for (let i = 2; i < maxDenominator; i++) {\n if (Math.abs(ql * i - Math.round(ql * i)) < epsilon) {\n const numerator = Math.round(ql * i);\n const denominator = i;\n return { numerator, denominator };\n }\n }\n return undefined;\n}\n\n/**\n * Change something that could be a string or number and might\n * end with \"px\" to a number.\n *\n * \"400px\" -> 400\n *\n * @function music21.common.stripPx\n * @param {number|string} str -- string that might have 'px' at the end or not\n * @returns {number} a number to use\n */\nexport function stripPx(str) {\n if (typeof str === 'string') {\n const pxIndex = str.indexOf('px');\n str = str.slice(0, pxIndex);\n return parseInt(str);\n } else {\n return str;\n }\n}\n\n/**\n * Find name in the query string (?name=value) and return value.\n *\n * @function music21.common.urlParam\n * @param {string} name - url parameter to find\n * @returns {string} may be \"\" if empty.\n */\nexport function urlParam(name) {\n name = name.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n const regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\n const results = regex.exec(window.location.search);\n return results == null\n ? ''\n : decodeURIComponent(results[1].replace(/\\+/g, ' '));\n}\n\nexport function arrayEquals(a1, a2) {\n if (a1.length !== a2.length) {\n return false;\n }\n for (let i = 0; i < a1.length; i++) {\n if (a1[i] instanceof Array && a2[i] instanceof Array) {\n if (!arrayEquals(a1[i], a2[i])) {\n return false;\n }\n } else if (a1[i] !== a2[i]) {\n return false;\n }\n }\n return true;\n}\n\nconst _singletonCounter = {\n value: 0,\n};\n\nexport class SingletonCounter {\n call() {\n const post = _singletonCounter.value;\n _singletonCounter.value += 1;\n return post;\n }\n}\n\nexport const urls = {\n css: '/css',\n webResources: '/webResources',\n midiPlayer: '/webResources/midiPlayer',\n soundfontUrl: '/soundfonts/midi-js-soundfonts-master/FluidR3_GM/',\n};\n\nexport function hyphenToCamelCase(usrStr: string): string {\n return usrStr.replace(/-([a-zA-Z])/g, (all, match) => match.toUpperCase());\n}\n\nexport function numToIntOrFloat(value: number): number {\n const intVal = Math.round(value);\n if (Math.abs(value - intVal) < 0.000001) {\n return intVal;\n } else {\n return value;\n }\n}\n\n/**\n *\n * @param {string} path\n * @returns {string}\n */\nexport const pathSimplify = path => {\n let pPrefix = '';\n if (path.indexOf('//') === 0) {\n pPrefix = '//'; //cdn loading;\n path = path.slice(2);\n console.log('cdn load: ', pPrefix, ' into ', path);\n } else if (path.indexOf('://') !== -1) { // for cross site requests...\n const protoSpace = path.indexOf('://');\n pPrefix = path.slice(0, protoSpace + 3);\n path = path.slice(protoSpace + 3);\n console.log('cross-site split', pPrefix, path);\n }\n const ps = path.split('/');\n const addSlash = (path.slice(path.length - 1, path.length) === '/');\n const pout = [];\n for (const el of ps) {\n if (el === '..') {\n if (pout.length > 0) {\n if (pout[pout.length - 1] !== '..') {\n pout.pop();\n } else {\n pout.push('..');\n }\n } else {\n pout.push('..');\n }\n } else {\n pout.push(el);\n }\n }\n let pNew = pout.join('/');\n if (addSlash) {\n pNew += '/';\n }\n pNew = pPrefix + pNew;\n return pNew;\n};\n\nexport function isFloat(num) {\n return Number(num) === num && num % 1 !== 0;\n}\n\n// TODO: implement and test\n// export function opFrac(num) {\n//\n// //const DENOM_LIMIT = 65535; // move to another location\n// if (isFloat(num)) { // no builtin isFloat function exists\n// // no fraction support yet\n// return num;\n// }\n// else if (Number.isInteger(num)) {\n// return num; // number, no int's\n// }\n// else if (num === 'Fraction') { // Replace with fraction object\n// return num; // no fraction support yet\n// }\n// else if (num === null) {\n// return null;\n// }\n// else {\n// return null;\n// }\n// }\n","import { ScoreParser as MusicXMLScoreParser } from './musicxml/xmlToM21';\n\nexport function parse(txt: string) {\n const sp = new MusicXMLScoreParser();\n return sp.scoreFromText(txt);\n}\n","export const debug: boolean = false;\n","import { Music21Object } from './base'; // just for typing\n\nexport class Derivation {\n client: Music21Object; // base.Music21Object\n method: string;\n origin: Music21Object; // base.Music21Object\n\n constructor(client: Music21Object) {\n this.client = client;\n }\n\n clone(): Derivation {\n const newThing = new Derivation(this.client);\n newThing.method = this.method;\n newThing.origin = this.origin;\n return newThing;\n }\n\n * chain(): Generator {\n let origin = this.origin;\n while (origin !== undefined) {\n yield origin;\n origin = origin.derivation.origin;\n }\n }\n\n rootDerivation(): Music21Object|undefined {\n const derivationChain = Array.from(this.chain());\n if (derivationChain.length) {\n return derivationChain[derivationChain.length - 1];\n } else {\n return undefined;\n }\n }\n}\n\n\nexport default Derivation;\n","/**\n * music21j -- Javascript reimplementation of Core music21 features.\n * music21/duration -- duration routines\n *\n * Copyright (c) 2013-19, Michael Scott Cuthbert and cuthbertLab\n * Based on music21, Copyright (c) 2006-19, Michael Scott Cuthbert and cuthbertLab\n *\n * Module that holds **music21** classes and\n * tools for dealing with durations, especially\n * the {@link music21.duration.Duration} class.\n *\n * Duration module. See {@link music21.duration}\n *\n * @module music21/duration\n * @namespace music21.duration\n * @memberof music21\n * @requires music21/common\n * @requires music21/prebase\n * @exports music21/duration\n */\nimport { Music21Exception } from './exceptions21';\n\nimport * as common from './common';\nimport { debug } from './debug';\nimport * as prebase from './prebase';\n\n/**\n * Object mapping int to name, as in `{1: 'whole'}` etc.\n *\n * @memberof music21.duration\n * @type {Object}\n */\nexport const typeFromNumDict = {\n 1: 'whole',\n 2: 'half',\n 4: 'quarter',\n 8: 'eighth',\n 16: '16th',\n 32: '32nd',\n 64: '64th',\n 128: '128th',\n 256: '256th',\n 512: '512th',\n 1024: '1024th',\n 0: 'zero',\n '0.5': 'breve',\n '0.25': 'longa',\n '0.125': 'maxima',\n '0.0625': 'duplex-maxima',\n};\n\nexport const quarterTypeIndex = 6; // where is quarter in the following array.\n\nexport const ordinalTypeFromNum = [\n 'duplex-maxima',\n 'maxima',\n 'longa',\n 'breve',\n 'whole',\n 'half',\n 'quarter',\n 'eighth',\n '16th',\n '32nd',\n '64th',\n '128th',\n '256th',\n '512th',\n '1024th',\n];\n\nexport const vexflowDurationArray = [\n undefined,\n undefined,\n undefined,\n '1/2',\n 'w',\n 'h',\n 'q',\n '8',\n '16',\n '32',\n '64',\n '128',\n '256',\n undefined,\n undefined,\n];\n\n/**\n * Duration object; found as the `.duration` attribute on Music21Object instances\n * such as {@link music21.note.Note}\n *\n * @class Duration\n * @memberof music21.duration\n * @param {(number|undefined)} ql - quarterLength (default 1.0)\n */\nexport class Duration extends prebase.ProtoM21Object {\n static get className() { return 'music21.duration.Duration'; }\n isGrace: boolean = false;\n protected _quarterLength: number = 0.0;\n protected _dots: number = 0;\n protected _durationNumber = undefined;\n protected _type: string = 'zero';\n protected _tuplets: Tuplet[] = [];\n\n\n constructor(ql: string|number = 0.0) {\n super();\n if (typeof ql === 'string') {\n this.type = ql;\n } else if (ql !== undefined) {\n this.quarterLength = ql;\n }\n this._cloneCallbacks._tuplets = this.cloneCallbacksTupletFunction;\n }\n\n stringInfo(): string {\n return this.quarterLength.toString();\n }\n\n /**\n * Read or sets the number of dots on the duration.\n *\n * Updates the quarterLength\n *\n * @type {number}\n * @default 0\n * @example\n * var d = new music21.duration.Duration(2);\n * d.dots === 0; // true\n * d.dots = 1;\n * d.quarterLength == 3; // true;\n */\n get dots(): number {\n return this._dots;\n }\n\n set dots(numDots: number) {\n this._dots = numDots;\n this.updateQlFromFeatures();\n }\n\n /**\n * Read or sets the quarterLength of the Duration\n *\n * Updates the type, dots, tuplets(?)\n *\n * @type {number}\n * @default 1.0\n * @example\n * var d = new music21.duration.Duration(2);\n * d.quarterLength == 2.0; // true;\n * d.quarterLength = 1.75;\n * d.dots == 2; // true\n * d.type == 'quarter'; // true\n */\n get quarterLength(): number {\n return this._quarterLength;\n }\n\n set quarterLength(ql: number) {\n if (ql === undefined) {\n ql = 1.0;\n }\n this._quarterLength = ql;\n this.updateFeaturesFromQl();\n }\n\n /**\n * Read or sets the type of the duration.\n *\n * Updates the quarterLength\n *\n * @type {string}\n * @default 'quarter'\n * @example\n * var d = new music21.duration.Duration(2);\n * d.type == 'half; // true\n * d.type = 'breve';\n * d.quarterLength == 8.0; // true\n * d.dots = 1;\n * d.type = 'quarter'; // will not change dots\n * d.quarterLength == 1.5; // true\n */\n get type(): string {\n return this._type;\n }\n\n set type(typeIn: string) {\n const typeNumber = ordinalTypeFromNum.indexOf(typeIn);\n if (typeNumber === -1) {\n console.log('invalid type ' + typeIn);\n throw new Music21Exception('invalid type ' + typeIn);\n }\n this._type = typeIn;\n this.updateQlFromFeatures();\n }\n\n /**\n * Reads the tuplet Array for the duration.\n *\n * The tuplet array should be considered Read Only.\n * Use {@link music21.duration.Duration#appendTuplet} to\n * add a tuplet (no way to remove yet)\n *\n * @type {Tuplet[]}\n * @default []\n */\n get tuplets(): Tuplet[] {\n return this._tuplets;\n }\n\n /**\n * Read-only: the duration expressed for VexFlow\n *\n * @type {string}\n * @default 'd'\n * @readonly\n * @example\n * var d = new music21.duration.Duration(2);\n * d.vexflowDuration == 'h'; // true;\n * d.dots = 2;\n * d.vexflowDuration == 'hdd'; // true;\n */\n get vexflowDuration(): string {\n const typeNumber = ordinalTypeFromNum.indexOf(this.type);\n let vd = vexflowDurationArray[typeNumber];\n if (this.dots > 0) {\n for (let i = 0; i < this.dots; i++) {\n vd += 'd'; // vexflow does not handle double dots .. or does it???\n }\n }\n return vd;\n }\n\n cloneCallbacksTupletFunction(tupletKey, ret, obj, deep, memo) {\n // make sure that tuplets clone properly\n const newTuplets = [];\n for (let i = 0; i < obj[tupletKey].length; i++) {\n const newTuplet = obj[tupletKey][i].clone();\n // console.log('cloning tuplets', obj[tupletKey][i], newTuplet);\n newTuplets.push(newTuplet);\n }\n ret[tupletKey] = newTuplets;\n }\n\n /**\n *\n * @param {number} ql\n * @returns {number}\n * @private\n */\n _findDots(ql) {\n if (ql === 0) {\n return 0;\n } // zero length stream probably;\n const typeNumber = ordinalTypeFromNum.indexOf(this._type);\n const powerOfTwo = 2 ** (quarterTypeIndex - typeNumber);\n // alert(undottedQL * 1.5 + \" \" + ql)\n // console.log('find dots called on ql: ', ql, typeNumber, powerOfTwo);\n for (let dotsNum = 0; dotsNum <= 4; dotsNum++) {\n const dotMultiplier\n = ((2 ** dotsNum) - 1.0) / 2 ** dotsNum;\n const durationMultiplier = 1 + dotMultiplier;\n if (Math.abs(powerOfTwo * durationMultiplier - ql) < 0.0001) {\n return dotsNum;\n }\n }\n if (debug) {\n console.log('no dots available for ql; probably a tuplet', ql);\n }\n return 0;\n }\n\n updateQlFromFeatures() {\n const typeNumber = ordinalTypeFromNum.indexOf(this._type); // must be set property\n const undottedQuarterLength = (\n 2 ** (quarterTypeIndex - typeNumber)\n );\n const dottedMultiplier\n = 1 + ((2 ** this._dots) - 1.0) / (2 ** this._dots);\n const unTupletedQl = undottedQuarterLength * dottedMultiplier;\n let tupletCorrectedQl = unTupletedQl;\n this._tuplets.forEach(tuplet => {\n tupletCorrectedQl *= tuplet.tupletMultiplier();\n });\n this._quarterLength = tupletCorrectedQl;\n }\n\n updateFeaturesFromQl() {\n const ql = this._quarterLength;\n this._tuplets = [];\n if (ql === 0) {\n this._type = 'zero';\n this._dots = 0;\n return;\n }\n const powerOfTwo = Math.floor(Math.log(ql + 0.00001) / Math.log(2));\n let typeNumber = quarterTypeIndex - powerOfTwo;\n this._type = ordinalTypeFromNum[typeNumber];\n // console.log(this._findDots);\n this._dots = this._findDots(ql);\n\n const undottedQuarterLength = (\n 2 ** (quarterTypeIndex - typeNumber)\n );\n const dottedMultiplier\n = 1 + (2 ** this._dots - 1) / 2 ** this._dots;\n let unTupletedQl = undottedQuarterLength * dottedMultiplier;\n if (unTupletedQl !== ql && ql !== 0) {\n typeNumber -= 1;\n this._type = ordinalTypeFromNum[typeNumber]; // increase type: eighth to quarter etc.\n unTupletedQl *= 2;\n const tupletRatio = ql / unTupletedQl;\n const ratioRat = common.rationalize(tupletRatio);\n if (ratioRat === undefined) {\n // probably a Stream with a length that is inexpressable;\n } else {\n const t = new Tuplet(\n ratioRat.denominator,\n ratioRat.numerator,\n new Duration(unTupletedQl)\n );\n this.appendTuplet(t, true); // skipUpdateQl\n }\n // console.log(ratioRat, ql, unTupletedQl);\n }\n }\n\n /**\n * Add a tuplet to music21j\n *\n * @param {Tuplet} newTuplet - tuplet to add to `.tuplets`\n * @param {boolean} [skipUpdateQl=false] - update the quarterLength afterwards?\n * @returns {this}\n */\n appendTuplet(newTuplet: Tuplet, skipUpdateQl=false) {\n newTuplet.frozen = true;\n this._tuplets.push(newTuplet);\n if (skipUpdateQl !== true) {\n this.updateQlFromFeatures();\n }\n return this;\n }\n}\n\n/**\n * Represents a Tuplet; found in {@link music21.duration.Duration#tuplets}\n *\n * @memberof music21.duration\n * @param {number} [numberNotesActual=3] - numerator of the tuplet\n * @param {number} [numberNotesNormal=2] - denominator of the tuplet\n * @param {(music21.duration.Duration|number)} [durationActual] - duration or\n * quarterLength of duration type, default music21.duration.Duration(0.5)\n * @param {(music21.duration.Duration|number)} [durationNormal] - unused;\n * see music21p for description\n */\nexport class Tuplet extends prebase.ProtoM21Object {\n static get className() { return 'music21.duration.Tuplet'; }\n numberNotesActual: number;\n numberNotesNormal: number;\n durationActual: Duration;\n durationNormal: Duration;\n frozen: boolean = false;\n type;\n bracket: boolean = true;\n placement: string = 'above';\n tupletActualShow: string;\n tupletNormalShow: string;\n\n constructor(\n numberNotesActual=3,\n numberNotesNormal=2,\n durationActual=undefined,\n durationNormal=undefined\n ) {\n super();\n this.numberNotesActual = numberNotesActual;\n this.numberNotesNormal = numberNotesNormal;\n this.durationActual = durationActual || new Duration(0.5);\n if (typeof this.durationActual === 'number') {\n this.durationActual = new Duration(this.durationActual);\n }\n this.durationNormal = durationNormal || this.durationActual;\n\n this.frozen = false;\n this.type = undefined;\n /**\n * Show a bracket above the tuplet\n */\n this.bracket = true;\n /**\n * Bracket placement. Options are `above` or `below`.\n */\n this.placement = 'above';\n\n /**\n * What to show above the Tuplet. Options are `number`, `type`, or (string) `none`.\n *\n * @property {string} tupletActualShow\n * @default 'number'\n */\n this.tupletActualShow = 'number';\n this.tupletNormalShow = undefined; // undefined, 'ratio' for ratios, 'type' for ratioed notes (does not work)\n }\n\n /**\n * A nice name for the tuplet.\n *\n * @type {string}\n * @readonly\n */\n get fullName() {\n // actual is what is presented to viewer\n const numActual = this.numberNotesActual;\n const numNormal = this.numberNotesNormal;\n\n if (numActual === 3 && numNormal === 2) {\n return 'Triplet';\n } else if (numActual === 5 && (numNormal === 4 || numNormal === 2)) {\n return 'Quintuplet';\n } else if (numActual === 6 && numNormal === 4) {\n return 'Sextuplet';\n }\n const ordStr = common.ordinalAbbreviation(numNormal, true); // plural\n return (\n 'Tuplet of '\n + numActual.toString()\n + '/'\n + numNormal.toString()\n + ordStr\n );\n }\n\n /**\n * Set both durationActual and durationNormal for the tuplet.\n *\n * @param {string} type - a duration type, such as `half`, `quarter`\n * @returns {music21.duration.Duration} A converted {@link music21.duration.Duration} matching `type`\n */\n setDurationType(type) {\n if (this.frozen === true) {\n throw new Music21Exception(\n 'A frozen tuplet (or one attached to a duration) is immutable'\n );\n }\n this.durationActual = new Duration(type);\n this.durationNormal = this.durationActual;\n return this.durationActual;\n }\n\n /**\n * Sets the tuplet ratio.\n *\n * @param {Number} actual - number of notes in actual (e.g., 3)\n * @param {Number} normal - number of notes in normal (e.g., 2)\n * @returns {undefined}\n */\n setRatio(actual, normal) {\n if (this.frozen === true) {\n throw new Music21Exception(\n 'A frozen tuplet (or one attached to a duration) is immutable'\n );\n }\n this.numberNotesActual = actual || 3;\n this.numberNotesNormal = normal || 2;\n }\n\n /**\n * Get the quarterLength corresponding to the total length that\n * the completed tuplet (i.e., 3 notes in a triplet) would occupy.\n *\n * @returns {Number} A quarter length.\n */\n totalTupletLength() {\n return this.numberNotesNormal * this.durationNormal.quarterLength;\n }\n\n /**\n * The amount by which each quarter length is multiplied to get\n * the tuplet. For instance, in a normal triplet, this is 0.666\n *\n * @returns {Number} A float of the multiplier\n */\n tupletMultiplier() {\n const lengthActual = this.durationActual.quarterLength;\n return (\n this.totalTupletLength() / (this.numberNotesActual * lengthActual)\n );\n }\n}\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/dynamics -- Dynamics\n *\n * note that Vex.Flow does not support Dynamics yet and we do not support MIDI dynamics,\n * so currently of limited value...\n *\n * Copyright (c) 2013-14, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–14, Michael Scott Cuthbert and cuthbertLab\n * dynamics Module. See {@link music21.dynamics} for namespace\n *\n * Dynamics related objects.\n *\n * Currently do not export to Vexflow. :-(\n *\n * @exports music21/dynamics\n * @namespace music21.dynamics\n * @memberof music21\n * @requires music21/base\n */\nimport * as base from './base';\n\n// noinspection SpellCheckingInspection\nexport const shortNames = [\n 'pppppp',\n 'ppppp',\n 'pppp',\n 'ppp',\n 'pp',\n 'p',\n 'mp',\n 'mf',\n 'f',\n 'fp',\n 'sf',\n 'ff',\n 'fff',\n 'ffff',\n 'fffff',\n 'ffffff',\n];\n\n// noinspection SpellCheckingInspection\nexport const longNames = {\n ppp: ['pianississimo'],\n pp: ['pianissimo'],\n p: ['piano'],\n mp: ['mezzopiano'],\n mf: ['mezzoforte'],\n f: ['forte'],\n fp: ['fortepiano'],\n sf: ['sforzando'],\n ff: ['fortissimo'],\n fff: ['fortississimo'],\n};\n\nexport const englishNames = {\n ppp: ['extremely soft'],\n pp: ['very soft'],\n p: ['soft'],\n mp: ['moderately soft'],\n mf: ['moderately loud'],\n f: ['loud'],\n ff: ['very loud'],\n fff: ['extremely loud'],\n};\n\nexport const dynamicStrToScalar = {\n None: [0.5], // default value\n n: [0.0],\n pppp: [0.1],\n ppp: [0.15],\n pp: [0.25],\n p: [0.35],\n mp: [0.45],\n mf: [0.55],\n f: [0.7],\n fp: [0.75],\n sf: [0.85],\n ff: [0.85],\n fff: [0.9],\n ffff: [0.95],\n};\n\n/**\n * A representation of a dynamic.\n *\n * @class Dynamic\n * @memberof music21.dynamics\n * @extends music21.base.Music21Object\n * @param {number|string} value - either a number between 0 and 1 or a dynamic mark such as \"ff\" or \"mp\"\n * @property {string|undefined} value - a name such as \"pp\" etc.\n * @property {string|undefined} longName - a longer name such as \"pianissimo\"\n * @property {string|undefined} englishName - a name such as \"very soft\"\n * @property {number} volumeScalar - a number between 0 and 1.\n */\nexport class Dynamic extends base.Music21Object {\n static get className() { return 'music21.dynamics.Dynamic'; }\n\n protected _value: string;\n protected _volumeScalar: number;\n longName: string;\n englishName: string;\n\n\n constructor(value: string|number) {\n super();\n this.value = value;\n }\n\n get value(): string|number {\n return this._value;\n }\n\n set value(value: string|number) {\n if (typeof value !== 'string') {\n // assume number\n this._volumeScalar = value;\n if (value <= 0) {\n this._value = 'n';\n } else if (value < 0.11) {\n this._value = 'pppp';\n } else if (value < 0.16) {\n this._value = 'ppp';\n } else if (value < 0.26) {\n this._value = 'pp';\n } else if (value < 0.36) {\n this._value = 'p';\n } else if (value < 0.5) {\n this._value = 'mp';\n } else if (value < 0.65) {\n this._value = 'mf';\n } else if (value < 0.8) {\n this._value = 'f';\n } else if (value < 0.9) {\n this._value = 'ff';\n } else {\n this._value = 'fff';\n }\n } else {\n this._value = value;\n this._volumeScalar = undefined;\n }\n if (this._value in longNames) {\n this.longName = longNames[this._value][0];\n } else {\n this.longName = '';\n }\n if (this._value in englishNames) {\n this.englishName = englishNames[this._value][0];\n } else {\n this.englishName = '';\n }\n }\n\n get volumeScalar(): number {\n if (this._volumeScalar !== undefined) {\n return this._volumeScalar;\n } else if (this._value in dynamicStrToScalar) {\n return dynamicStrToScalar[this._value][0];\n } else {\n return 0.5;\n }\n }\n\n set volumeScalar(value: number) {\n if (typeof value === 'number' && value <= 1 && value >= 0) {\n this._volumeScalar = value;\n }\n }\n}\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/editorial -- Representations of editorial information\n *\n * Copyright (c) 2013-19, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–16, Michael Scott Cuthbert and cuthbertLab\n */\n\nimport { ProtoM21Object } from './prebase';\n\nexport class Editorial extends ProtoM21Object {\n static get className() { return 'music21.editorial.Editorial'; }\n\n comments: any[] = [];\n // noinspection JSUnusedGlobalSymbols\n footnotes: any[] = [];\n\n // these are already deprecated.\n // noinspection JSUnusedGlobalSymbols\n ficta: any = undefined;\n // noinspection JSUnusedGlobalSymbols\n harmonicInterval: any = undefined;\n // noinspection JSUnusedGlobalSymbols\n melodicInterval: any = undefined;\n}\n\nexport default Editorial;\n","// this is not completely working properly...\nclass ExtendableError extends Error {\n constructor(message) {\n super();\n // restore prototype chain\n const actualProto = new.target.prototype;\n\n Object.setPrototypeOf(this, actualProto);\n this.name = this.constructor.name;\n this.message = message;\n this.stack = new Error(message).stack;\n // until this lands in Node\n // if (typeof Error.captureStackTrace === 'function') {\n // Error.captureStackTrace(this, this.constructor);\n // } else {\n // this.stack = new Error(message).stack;\n // }\n }\n}\n\nexport class Music21Exception extends ExtendableError {}\n\nexport class StreamException extends Music21Exception {}\n","/**\n * Expressions module. See {@link music21.expressions}\n * Expressions can be note attached (`music21.note.Note.expressions[]`) or floating...\n *\n * @exports music21/expressions\n * @namespace music21.expressions\n * @memberof music21\n * @requires music21/expressions\n */\n\nimport Vex from 'vexflow';\nimport * as base from './base';\nimport {\n ArticulationPlacement,\n setPlacementOnVexFlowArticulation,\n VexflowArticulationParams,\n} from './articulations';\n\n/**\n * Expressions can be note attached (`music21.note.Note.expressions[]`) or floating...\n *\n * @class Expression\n * @memberof music21.expressions\n * @extends music21.base.Music21Object\n * @property {string} name\n * @property {string} vexflowModifier\n * @property {number} setPosition\n */\nexport class Expression extends base.Music21Object {\n static get className() { return 'music21.expressions.Expression'; }\n\n name: string = 'expression';\n vexflowModifier: string = '';\n placement: ArticulationPlacement = ArticulationPlacement.ABOVE;\n\n /**\n * Renders this Expression as a Vex.Flow.Articulation\n *\n * (this is not right for all cases)\n *\n * @returns {Vex.Flow.Articulation}\n */\n vexflow({stemDirection}: VexflowArticulationParams = {}): Vex.Flow.Articulation {\n const vfe = new Vex.Flow.Articulation(this.vexflowModifier);\n setPlacementOnVexFlowArticulation(vfe, this.placement, stemDirection);\n return vfe;\n }\n}\n\n/**\n * A fermata...\n *\n * @class Fermata\n * @memberof music21.expressions\n * @extends music21.expressions.Expression\n */\nexport class Fermata extends Expression {\n static get className() { return 'music21.expressions.Fermata'; }\n\n constructor() {\n super();\n this.name = 'fermata';\n this.vexflowModifier = 'a@a';\n }\n}\n\n\nexport class Ornament extends Expression {\n static get className() { return 'music21.expressions.Ornament'; }\n\n name: string = 'ornament';\n vexflow({stemDirection}: VexflowArticulationParams = {}): Vex.Flow.Articulation {\n const vfe = new Vex.Flow.Ornament(this.vexflowModifier);\n setPlacementOnVexFlowArticulation(vfe, this.placement, stemDirection);\n return vfe;\n }\n}\n\n\nexport class Trill extends Ornament {\n static get className() { return 'music21.expressions.Trill'; }\n\n constructor() {\n super();\n this.name = 'trill';\n this.vexflowModifier = 'tr';\n }\n}\n\nexport class Turn extends Ornament {\n static get className() { return 'music21.expressions.Turn'; }\n\n constructor() {\n super();\n this.name = 'turn';\n this.vexflowModifier = 'turn';\n }\n}\n\nexport class InvertedTurn extends Turn {\n static get className() { return 'music21.expressions.InvertedTurn'; }\n\n constructor() {\n super();\n this.name = 'invertedTurn';\n this.vexflowModifier = 'turn_inverted';\n }\n}\n\nexport class GeneralMordent extends Ornament {\n static get className() { return 'music21.expressions.GeneralMordent'; }\n}\n\n\n/**\n * note that Vexflow's definition of mordent/inverted mordent is backwards\n * from music theory.\n */\nexport class Mordent extends GeneralMordent {\n static get className() { return 'music21.expressions.Mordent'; }\n\n constructor() {\n super();\n this.name = 'mordent';\n this.vexflowModifier = 'mordent_inverted';\n }\n}\n\nexport class InvertedMordent extends GeneralMordent {\n static get className() { return 'music21.expressions.InvertedMordent'; }\n\n constructor() {\n super();\n this.name = 'invertedMordent';\n this.vexflowModifier = 'mordent';\n }\n}\n","/**\n * @namespace music21.figuredBass\n * @exports music21/figuredBass\n */\nimport * as pitch from './pitch';\n\nconst shorthandNotation = {\n '': [5, 3],\n '5': [5, 3],\n '6': [6, 3],\n '7': [7, 5, 3],\n '9': [9, 7, 5, 3],\n '11': [11, 9, 7, 5, 3],\n '13': [13, 11, 9, 7, 5, 3],\n '6,5': [6, 5, 3],\n '4,3': [6, 4, 3],\n '4,2': [6, 4, 2],\n '2': [6, 4, 2],\n};\n/**\n * In music21p is in figuredBass.notation -- eventually to be moved there.\n */\n\n\n/**\n * @memberof music21.figuredBass\n */\nexport class Notation {\n notationColumn: string;\n figureStrings: string[] = undefined;\n origNumbers: number[] = undefined;\n origModStrings = undefined;\n numbers: number[] = undefined;\n modifierStrings: string[] = undefined;\n modifiers: Modifier[];\n figures: Figure[];\n\n /**\n *\n * @param {string} [notationColumn='']\n * @property {string[]} figureStrings\n * @property {int[]} origNumbers\n * @property {int[]} numbers\n * @property {string[]} modifierStrings\n * @property {Modifier[]} modifiers\n * @property {Figure[]} figures\n */\n constructor(notationColumn: string = '') {\n this.notationColumn = notationColumn;\n this._parseNotationColumn();\n this._translateToLonghand();\n\n this.modifiers = [];\n this.figures = [];\n this._getModifiers();\n this._getFigures();\n }\n\n /**\n * _parseNotationColumn - Given a notation column below a pitch, defines both this.numbers\n * and this.modifierStrings, which provide the intervals above the\n * bass and (if necessary) how to modify the corresponding pitches\n * accordingly.\n *\n * @return {undefined}\n */\n\n _parseNotationColumn() {\n const nc = this.notationColumn;\n const figures = nc.split(/,/);\n const numbers = [];\n const modifierStrings = [];\n const figureStrings = [];\n\n for (let figure of figures) {\n figure = figure.trim();\n figureStrings.push(figure);\n let numberString = '';\n let modifierString = '';\n for (const c of figure) {\n if (c.match(/\\d/)) {\n numberString += c;\n } else {\n modifierString += c;\n }\n }\n let number;\n if (numberString !== '') {\n number = parseInt(numberString);\n }\n numbers.push(number);\n if (modifierString === '') {\n modifierString = undefined;\n }\n modifierStrings.push(modifierString);\n }\n this.origNumbers = numbers;\n this.numbers = numbers;\n this.modifierStrings = modifierStrings;\n this.figureStrings = figureStrings;\n }\n\n _translateToLonghand() {\n let oldNumbers = this.numbers;\n let newNumbers = oldNumbers;\n const oldModifierStrings = this.modifierStrings;\n let newModifierStrings = oldModifierStrings;\n const oldNumbersString = oldNumbers.toString();\n\n if (shorthandNotation[oldNumbersString] !== undefined) {\n newNumbers = shorthandNotation[oldNumbersString];\n newModifierStrings = [];\n const temp = [];\n for (const number of oldNumbers) {\n if (number === undefined) {\n temp.push(3);\n } else {\n temp.push(number);\n }\n }\n oldNumbers = temp;\n\n for (const number of newNumbers) {\n let newModifierString;\n if (oldNumbers.includes(number)) {\n const modifierStringIndex = oldNumbers.indexOf(number);\n newModifierString = oldModifierStrings[modifierStringIndex];\n }\n newModifierStrings.push(newModifierString);\n }\n } else {\n const temp = [];\n for (const number of oldNumbers) {\n if (number === undefined) {\n temp.push(3);\n } else {\n temp.push(number);\n }\n }\n newNumbers = temp;\n }\n this.numbers = newNumbers;\n this.modifierStrings = newModifierStrings;\n }\n\n _getModifiers() {\n const modifiers = [];\n for (let i = 0; i < this.numbers.length; i++) {\n const modifierString = this.modifierStrings[i];\n const modifier = new Modifier(modifierString);\n modifiers.push(modifier);\n }\n this.modifiers = modifiers;\n }\n\n _getFigures() {\n const figures = [];\n for (let i = 0; i < this.numbers.length; i++) {\n const number = this.numbers[i];\n const modifierString = this.modifierStrings[i];\n const figure = new Figure(number, modifierString);\n figures.push(figure);\n }\n this.figures = figures;\n }\n}\n\n/**\n * @memberOf music21.figuredBass\n */\nexport class Figure {\n number: number;\n modifierString: string;\n modifier: Modifier;\n\n constructor(number, modifierString) {\n this.number = number;\n this.modifierString = modifierString;\n this.modifier = new Modifier(modifierString);\n }\n}\n\nconst specialModifiers = {\n '+': '#',\n '/': '-',\n '\\\\': '#',\n b: '-',\n bb: '--',\n bbb: '---',\n bbbb: '-----',\n '++': '##',\n '+++': '###',\n '++++': '####',\n};\n\n/**\n * @memberOf music21.figuredBass\n */\nexport class Modifier {\n modifierString: string;\n accidental: pitch.Accidental;\n\n constructor(modifierString: string) {\n this.modifierString = modifierString;\n this.accidental = this._toAccidental();\n }\n\n _toAccidental() {\n let modStr = this.modifierString;\n if (modStr === undefined || modStr === '') {\n return undefined;\n }\n if (specialModifiers[modStr] !== undefined) {\n modStr = specialModifiers[modStr];\n }\n const a = new pitch.Accidental(modStr);\n return a;\n }\n\n modifyPitchName(pitchNameToAlter) {\n const pitchToAlter = new pitch.Pitch(pitchNameToAlter);\n this.modifyPitch(pitchToAlter, true);\n return pitchToAlter.name;\n }\n\n modifyPitch(pitchToAlter, inPlace) {\n if (inPlace !== true) {\n pitchToAlter = pitchToAlter.clone();\n }\n\n if (this.accidental === undefined) {\n return pitchToAlter;\n }\n\n if (\n this.accidental.alter === 0.0\n || pitchToAlter.accidental === undefined\n ) {\n pitchToAlter.accidental = this.accidental.clone();\n } else {\n const newAlter\n = pitchToAlter.accidental.alter + this.accidental.alter;\n const newAccidental = new pitch.Accidental(newAlter);\n pitchToAlter.accidental = newAccidental;\n }\n return pitchToAlter;\n }\n}\n\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/fromPython -- Conversion from music21p jsonpickle streams\n *\n * Copyright (c) 2013-16, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–16, Michael Scott Cuthbert and cuthbertLab\n *\n * fromPython module -- see {@link music21.fromPython}\n *\n * Converter for taking a Python-encoded jsonpickle music21p stream\n * and loading it into music21j\n *\n * Very very alpha. See music21(p).vexflow modules to see how it works.\n *\n * Requires Cuthbert's jsonpickle.js port.\n *\n * @namespace music21.fromPython\n * @extends music21\n * @requires jsonpickle\n * @example\n * in python:\n *\n * s = corpus.parse('bwv66.6')\n * stringRepresentingM21JsonPickle = s.freezeStream('jsonpickle')\n *\n * in js:\n *\n * pyConv = new music21.fromPython.Converter();\n * s = pyConv.run(stringRepresentingM21JsonPickle);\n *\n */\nimport * as jsonpickle from 'jsonpickle';\n\nconst jp = jsonpickle;\nconst unpickler = jp.unpickler;\n\n/**\n *\n * @class Converter\n * @memberof music21.fromPython\n * @property {boolean} debug\n * @property {Array} knownUnparsables - list of classes that cannot be parsed\n * @property {Object} handlers - object mapping string names of classes to a set of\n * function calls to perform when restoring or post-restoring.\n * (too complicated to explain; read the code)\n */\nexport class Converter {\n debug: boolean = true;\n knownUnparsables = [\n 'music21.spanner.Line',\n 'music21.instrument.Instrument',\n 'music21.layout.StaffGroup',\n 'music21.layout.StaffLayout',\n 'music21.layout.SystemLayout',\n 'music21.layout.PageLayout',\n 'music21.expressions.TextExpression',\n 'music21.bar.Barline', // Soon...\n 'music21.tempo.MetronomeMark', // should be possible\n 'music21.metadata.Metadata', // Soon...\n ];\n\n handlers: any;\n currentPart = undefined;\n lastClef = undefined;\n lastKeySignature = undefined;\n lastTimeSignature = undefined;\n\n constructor() {\n this.handlers = {\n 'music21.duration.Duration': {\n post_restore: d => {\n d.quarterLength = d._qtrLength;\n return d;\n },\n },\n 'music21.meter.TimeSignature': {\n post_restore: ts => {\n ts._numerator = ts.displaySequence._numerator;\n ts._denominator = ts.displaySequence._denominator;\n return ts;\n },\n },\n 'music21.stream.Part': {\n post_restore: p => {\n this.currentPart = p;\n this.lastClef = undefined;\n this.lastKeySignature = undefined;\n this.lastTimeSignature = undefined;\n this.streamPostRestore(p);\n return p;\n },\n },\n // TODO: all inherit somehow, through _classes or better, prototype...\n 'music21.stream.Score': {\n post_restore: this.streamPostRestore.bind(this),\n },\n 'music21.stream.Stream': {\n post_restore: this.streamPostRestore.bind(this),\n },\n 'music21.stream.Measure': {\n post_restore: this.streamPostRestore.bind(this),\n },\n 'music21.stream.Voice': {\n post_restore: this.streamPostRestore.bind(this),\n },\n };\n }\n\n /**\n * Fixes up some references that cannot be unpacked from jsonpickle.\n *\n * @param {music21.stream.Stream} s - stream after unpacking from jsonpickle\n * @returns {music21.stream.Stream}\n */\n streamPostRestore(s) {\n const st = s._storedElementOffsetTuples;\n\n s._clef = this.lastClef;\n s._keySignature = this.lastKeySignature;\n s._timeSignature = this.lastTimeSignature;\n for (let i = 0; i < st.length; i++) {\n const el = st[i][0];\n el.offset = st[i][1];\n let classList = el.classes;\n if (classList === undefined) {\n console.warn('M21object without classes: ', el);\n console.warn('Javascript classes are: ', el._py_class);\n classList = [];\n }\n let streamPart = this.currentPart;\n if (streamPart === undefined) {\n streamPart = s; // possibly a Stream constructed from .measures()\n }\n\n let appendEl = true;\n let insertAtStart = false;\n\n for (let j = 0; j < classList.length; j++) {\n const thisClass = classList[j];\n for (let kn = 0; kn < this.knownUnparsables.length; kn++) {\n const unparsable = this.knownUnparsables[kn];\n if (unparsable.indexOf(thisClass) !== -1) {\n appendEl = false;\n }\n }\n if (thisClass === 'TimeSignature') {\n // console.log(\"Got timeSignature\", streamPart, newM21pObj, storedElement);\n s._timeSignature = el;\n this.lastTimeSignature = el;\n if (\n streamPart !== undefined\n && streamPart.timeSignature === undefined\n ) {\n streamPart.timeSignature = el;\n }\n appendEl = false;\n } else if (thisClass === 'Clef') {\n s._clef = el;\n this.lastClef = el;\n if (\n streamPart !== undefined\n && streamPart.clef === undefined\n ) {\n streamPart.clef = el;\n }\n appendEl = false;\n } else if (thisClass === 'KeySignature') {\n s._keySignature = el;\n this.lastKeySignature = el;\n if (\n streamPart !== undefined\n && streamPart.keySignature === undefined\n ) {\n streamPart.keySignature = el;\n }\n appendEl = false;\n } else if (thisClass === 'Part') {\n appendEl = false;\n insertAtStart = true;\n }\n }\n\n if (appendEl) {\n s.append(el); // all but clef, ts, ks\n } else if (insertAtStart) {\n s.insert(0, el); // Part\n }\n }\n return s;\n }\n\n /**\n * Run the main decoder\n *\n * @param {string} jss - stream encoded as JSON\n * @returns {music21.stream.Stream}\n */\n run(jss) {\n const outStruct = unpickler.decode(jss, this.handlers);\n return outStruct.stream;\n }\n}\n","import * as chord from './chord';\nimport * as key from './key';\n\nexport class Harmony extends chord.Chord {\n static get className() { return 'music21.harmony.Harmony'; }\n\n protected _writeAsChord: boolean = false;\n protected _roman;\n chordStepModifications = [];\n protected _degreesList = [];\n protected _key: key.Key;\n protected _figure: string;\n\n constructor(\n figure: string,\n {\n parseFigure=true,\n updatePitches=false,\n }={}\n ) {\n super();\n // this._updateBasedOnXMLInput(keywords);\n figure = figure.replace('/o', 'ø');\n this._figure = figure;\n if (parseFigure !== false && this._figure !== undefined) {\n this._parseFigure();\n }\n if (\n this._overrides.bass === undefined\n && this._overrides.root !== undefined\n ) {\n this.bass(this._overrides.root);\n }\n if (\n (updatePitches && this._figure !== undefined)\n || this._overrides.root !== undefined\n || this._overrides.bass !== undefined\n ) {\n this._updatePitches();\n }\n // this._updateBasedOnXMLInput(keywords);\n if (\n parseFigure !== false\n && this._figure !== undefined\n && this._figure.indexOf('sus') !== -1\n && this._figure.indexOf('sus2') === -1\n ) {\n this.root(this.bass());\n }\n }\n\n _parseFigure() {}\n\n _updatePitches() {}\n\n get figure(): string {\n if (this._figure === undefined) {\n this.findFigure();\n }\n return this._figure;\n }\n\n set figure(newFigure: string) {\n this._figure = newFigure;\n if (this._figure !== undefined) {\n this._parseFigure();\n this._updatePitches();\n }\n }\n\n get key(): key.Key {\n return this._key;\n }\n\n set key(keyOrScale: key.Key) {\n if (typeof keyOrScale === 'string') {\n this._key = new key.Key(keyOrScale);\n } else {\n this._key = keyOrScale;\n this._roman = undefined;\n }\n }\n\n findFigure() {}\n}\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/instrument -- instrument objects\n *\n * Copyright (c) 2013-16, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–16, Michael Scott Cuthbert and cuthbertLab\n *\n * Instrument module, see {@link music21.instrument}\n * Looking for the {@link music21.instrument.Instrument} object? :-)\n *\n * @exports music21/instrument\n *\n * @namespace music21.instrument\n * @memberof music21\n * @requires music21/base\n */\nimport * as base from './base';\n\nexport const global_usedChannels: number[] = []; // differs from m21p -- stored midiProgram numbers\nexport const maxMidi: number = 16;\n\n/**\n *\n * @type {Array<{fn: string, name: string, midiNumber: number}>}\n */\nexport const info = [\n { fn: 'acoustic_grand_piano', name: 'Acoustic Grand Piano', midiNumber: 0 },\n {\n fn: 'bright_acoustic_piano',\n name: 'Bright Acoustic Piano',\n midiNumber: 1,\n },\n { fn: 'electric_grand_piano', name: 'Electric Grand Piano', midiNumber: 2 },\n { fn: 'honkytonk_piano', name: 'Honky-tonk Piano', midiNumber: 3 },\n { fn: 'electric_piano_1', name: 'Electric Piano 1', midiNumber: 4 },\n { fn: 'electric_piano_2', name: 'Electric Piano 2', midiNumber: 5 },\n { fn: 'harpsichord', name: 'Harpsichord', midiNumber: 6 },\n { fn: 'clavinet', name: 'Clavinet', midiNumber: 7 },\n { fn: 'celesta', name: 'Celesta', midiNumber: 8 },\n { fn: 'glockenspiel', name: 'Glockenspiel', midiNumber: 9 },\n { fn: 'music_box', name: 'Music Box', midiNumber: 10 },\n { fn: 'vibraphone', name: 'Vibraphone', midiNumber: 11 },\n { fn: 'marimba', name: 'Marimba', midiNumber: 12 },\n { fn: 'xylophone', name: 'Xylophone', midiNumber: 13 },\n { fn: 'tubular_bells', name: 'Tubular Bells', midiNumber: 14 },\n { fn: 'dulcimer', name: 'Dulcimer', midiNumber: 15 },\n { fn: 'drawbar_organ', name: 'Drawbar Organ', midiNumber: 16 },\n { fn: 'percussive_organ', name: 'Percussive Organ', midiNumber: 17 },\n { fn: 'rock_organ', name: 'Rock Organ', midiNumber: 18 },\n { fn: 'church_organ', name: 'Church Organ', midiNumber: 19 },\n { fn: 'reed_organ', name: 'Reed Organ', midiNumber: 20 },\n { fn: 'accordion', name: 'Accordion', midiNumber: 21 },\n { fn: 'harmonica', name: 'Harmonica', midiNumber: 22 },\n { fn: 'tango_accordion', name: 'Tango Accordion', midiNumber: 23 },\n {\n fn: 'acoustic_guitar_nylon',\n name: 'Acoustic Guitar (nylon)',\n midiNumber: 24,\n },\n {\n fn: 'acoustic_guitar_steel',\n name: 'Acoustic Guitar (steel)',\n midiNumber: 25,\n },\n {\n fn: 'electric_guitar_jazz',\n name: 'Electric Guitar (jazz)',\n midiNumber: 26,\n },\n {\n fn: 'electric_guitar_clean',\n name: 'Electric Guitar (clean)',\n midiNumber: 27,\n },\n {\n fn: 'electric_guitar_muted',\n name: 'Electric Guitar (muted)',\n midiNumber: 28,\n },\n { fn: 'overdriven_guitar', name: 'Overdriven Guitar', midiNumber: 29 },\n { fn: 'distortion_guitar', name: 'Distortion Guitar', midiNumber: 30 },\n { fn: 'guitar_harmonics', name: 'Guitar Harmonics', midiNumber: 31 },\n { fn: 'acoustic_bass', name: 'Acoustic Bass', midiNumber: 32 },\n {\n fn: 'electric_bass_finger',\n name: 'Electric Bass (finger)',\n midiNumber: 33,\n },\n { fn: 'electric_bass_pick', name: 'Electric Bass (pick)', midiNumber: 34 },\n { fn: 'fretless_bass', name: 'Fretless Bass', midiNumber: 35 },\n { fn: 'slap_bass_1', name: 'Slap Bass 1', midiNumber: 36 },\n { fn: 'slap_bass_2', name: 'Slap Bass 2', midiNumber: 37 },\n { fn: 'synth_bass_1', name: 'Synth Bass 1', midiNumber: 38 },\n { fn: 'synth_bass_2', name: 'Synth Bass 2', midiNumber: 39 },\n { fn: 'violin', name: 'Violin', midiNumber: 40 },\n { fn: 'viola', name: 'Viola', midiNumber: 41 },\n { fn: 'cello', name: 'Cello', midiNumber: 42 },\n { fn: 'contrabass', name: 'Contrabass', midiNumber: 43 },\n { fn: 'tremolo_strings', name: 'Tremolo Strings', midiNumber: 44 },\n { fn: 'pizzicato_strings', name: 'Pizzicato Strings', midiNumber: 45 },\n { fn: 'orchestral_harp', name: 'Orchestral Harp', midiNumber: 46 },\n { fn: 'timpani', name: 'Timpani', midiNumber: 47 },\n { fn: 'string_ensemble_1', name: 'String Ensemble 1', midiNumber: 48 },\n { fn: 'string_ensemble_2', name: 'String Ensemble 2', midiNumber: 49 },\n { fn: 'synth_strings_1', name: 'Synth Strings 1', midiNumber: 50 },\n { fn: 'synth_strings_2', name: 'Synth Strings 2', midiNumber: 51 },\n { fn: 'choir_aahs', name: 'Choir Aahs', midiNumber: 52 },\n { fn: 'voice_oohs', name: 'Voice Oohs', midiNumber: 53 },\n { fn: 'synth_choir', name: 'Synth Choir', midiNumber: 54 },\n { fn: 'orchestra_hit', name: 'Orchestra Hit', midiNumber: 55 },\n { fn: 'trumpet', name: 'Trumpet', midiNumber: 56 },\n { fn: 'trombone', name: 'Trombone', midiNumber: 57 },\n { fn: 'tuba', name: 'Tuba', midiNumber: 58 },\n { fn: 'muted_trumpet', name: 'Muted Trumpet', midiNumber: 59 },\n { fn: 'french_horn', name: 'French Horn', midiNumber: 60 },\n { fn: 'brass_section', name: 'Brass Section', midiNumber: 61 },\n { fn: 'synth_brass_1', name: 'Synth Brass 1', midiNumber: 62 },\n { fn: 'synth_brass_2', name: 'Synth Brass 2', midiNumber: 63 },\n { fn: 'soprano_sax', name: 'Soprano Sax', midiNumber: 64 },\n { fn: 'alto_sax', name: 'Alto Sax', midiNumber: 65 },\n { fn: 'tenor_sax', name: 'Tenor Sax', midiNumber: 66 },\n { fn: 'baritone_sax', name: 'Baritone Sax', midiNumber: 67 },\n { fn: 'oboe', name: 'Oboe', midiNumber: 68 },\n { fn: 'english_horn', name: 'English Horn', midiNumber: 69 },\n { fn: 'bassoon', name: 'Bassoon', midiNumber: 70 },\n { fn: 'clarinet', name: 'Clarinet', midiNumber: 71 },\n { fn: 'piccolo', name: 'Piccolo', midiNumber: 72 },\n { fn: 'flute', name: 'Flute', midiNumber: 73 },\n { fn: 'recorder', name: 'Recorder', midiNumber: 74 },\n { fn: 'pan_flute', name: 'Pan Flute', midiNumber: 75 },\n { fn: 'blown_bottle', name: 'Blown bottle', midiNumber: 76 },\n { fn: 'shakuhachi', name: 'Shakuhachi', midiNumber: 77 },\n { fn: 'whistle', name: 'Whistle', midiNumber: 78 },\n { fn: 'ocarina', name: 'Ocarina', midiNumber: 79 },\n { fn: 'lead_1_square', name: 'Lead 1 (square)', midiNumber: 80 },\n { fn: 'lead_2_sawtooth', name: 'Lead 2 (sawtooth)', midiNumber: 81 },\n { fn: 'lead_3_calliope', name: 'Lead 3 (calliope)', midiNumber: 82 },\n { fn: 'lead_4_chiff', name: 'Lead 4 chiff', midiNumber: 83 },\n { fn: 'lead_5_charang', name: 'Lead 5 (charang)', midiNumber: 84 },\n { fn: 'lead_6_voice', name: 'Lead 6 (voice)', midiNumber: 85 },\n { fn: 'lead_7_fifths', name: 'Lead 7 (fifths)', midiNumber: 86 },\n { fn: 'lead_8_bass__lead', name: 'Lead 8 (bass + lead)', midiNumber: 87 },\n { fn: 'pad_1_new_age', name: 'Pad 1 (new age)', midiNumber: 88 },\n { fn: 'pad_2_warm', name: 'Pad 2 (warm)', midiNumber: 89 },\n { fn: 'pad_3_polysynth', name: 'Pad 3 (polysynth)', midiNumber: 90 },\n { fn: 'pad_4_choir', name: 'Pad 4 (choir)', midiNumber: 91 },\n { fn: 'pad_5_bowed', name: 'Pad 5 (bowed)', midiNumber: 92 },\n { fn: 'pad_6_metallic', name: 'Pad 6 (metallic)', midiNumber: 93 },\n { fn: 'pad_7_halo', name: 'Pad 7 (halo)', midiNumber: 94 },\n { fn: 'pad_8_sweep', name: 'Pad 8 (sweep)', midiNumber: 95 },\n { fn: 'fx_1_rain', name: 'FX 1 (rain)', midiNumber: 96 },\n { fn: 'fx_2_soundtrack', name: 'FX 2 (soundtrack)', midiNumber: 97 },\n { fn: 'fx_3_crystal', name: 'FX 3 (crystal)', midiNumber: 98 },\n { fn: 'fx_4_atmosphere', name: 'FX 4 (atmosphere)', midiNumber: 99 },\n { fn: 'fx_5_brightness', name: 'FX 5 (brightness)', midiNumber: 100 },\n { fn: 'fx_6_goblins', name: 'FX 6 (goblins)', midiNumber: 101 },\n { fn: 'fx_7_echoes', name: 'FX 7 (echoes)', midiNumber: 102 },\n { fn: 'fx_8_scifi', name: 'FX 8 (sci-fi)', midiNumber: 103 },\n { fn: 'sitar', name: 'Sitar', midiNumber: 104 },\n { fn: 'banjo', name: 'Banjo', midiNumber: 105 },\n { fn: 'shamisen', name: 'Shamisen', midiNumber: 106 },\n { fn: 'koto', name: 'Koto', midiNumber: 107 },\n { fn: 'kalimba', name: 'Kalimba', midiNumber: 108 },\n { fn: 'bagpipe', name: 'Bagpipe', midiNumber: 109 },\n { fn: 'fiddle', name: 'Fiddle', midiNumber: 110 },\n { fn: 'shanai', name: 'Shanai', midiNumber: 111 },\n { fn: 'tinkle_bell', name: 'Tinkle Bell', midiNumber: 112 },\n { fn: 'agogo', name: 'Agogo', midiNumber: 113 },\n { fn: 'steel_drums', name: 'Steel Drums', midiNumber: 114 },\n { fn: 'woodblock', name: 'Woodblock', midiNumber: 115 },\n { fn: 'taiko_drum', name: 'Taiko Drum', midiNumber: 116 },\n { fn: 'melodic_tom', name: 'Melodic Tom', midiNumber: 117 },\n { fn: 'synth_drum', name: 'Synth Drum', midiNumber: 118 },\n { fn: 'reverse_cymbal', name: 'Reverse Cymbal', midiNumber: 119 },\n { fn: 'guitar_fret_noise', name: 'Guitar Fret Noise', midiNumber: 120 },\n { fn: 'breath_noise', name: 'Breath Noise', midiNumber: 121 },\n { fn: 'seashore', name: 'Seashore', midiNumber: 122 },\n { fn: 'bird_tweet', name: 'Bird Tweet', midiNumber: 123 },\n { fn: 'telephone_ring', name: 'Telephone Ring', midiNumber: 124 },\n { fn: 'helicopter', name: 'Helicopter', midiNumber: 125 },\n { fn: 'applause', name: 'Applause', midiNumber: 126 },\n { fn: 'gunshot', name: 'Gunshot', midiNumber: 127 },\n];\n\n\n/**\n * Represents an instrument. instrumentNames are found in the ext/soundfonts directory\n *\n * See {@link music21.miditools} and esp. `loadSoundfont` for a way of loading soundfonts into\n * instruments.\n *\n * @class Instrument\n * @memberof music21.instrument\n * @param {string} instrumentName\n * @property {string|undefined} partId\n * @property {string|undefined} partName\n * @property {string|undefined} partAbbreviation\n * @property {string|undefined} instrumentId\n * @property {string|undefined} instrumentName\n * @property {string|undefined} instrumentAbbreviation\n * @property {int|undefined} midiProgram\n * @property {int|undefined} midiChannel\n * @property {int|undefined} lowestNote\n * @property {int|undefined} highestNote\n * @property {music21.interval.Interval|undefined} transposition\n * @property {Boolean} inGMPercMap=false\n * @property {string|undefined} soundfontFn\n * @property {string|undefined} oggSoundfont - url of oggSoundfont for this instrument\n * @property {string|undefined} mp3Soundfont - url of mp3Soundfont for this instrument\n */\nexport class Instrument extends base.Music21Object {\n static get className() { return 'music21.instrument.Instrument'; }\n\n partId = undefined;\n partName = undefined;\n partAbbreviation = undefined;\n\n instrumentId = undefined;\n instrumentName = '';\n instrumentAbbreviation = undefined;\n midiProgram = undefined;\n _midiChannel = undefined;\n\n lowestNote = undefined;\n highestNote = undefined;\n\n transpostion = undefined;\n\n inGMPercMap = false;\n soundfontFn = undefined;\n\n\n constructor(instrumentName='') {\n super();\n this.classSortOrder = -25;\n this.instrumentName = instrumentName;\n\n if (instrumentName !== '') {\n find(instrumentName, this);\n }\n }\n\n /**\n * Assign an instrument to an unused midi channel.\n *\n * Will use the global list of used channels (`music21.instrument.Instrument.usedChannels`)\n * if not given. Assigns up to `music21.instrument.maxMidi` channels (16)\n * Skips 10 unless this.inGMPercMap is true\n *\n * @param {int[]} [usedChannels]\n * @returns {number|undefined}\n */\n autoAssignMidiChannel(usedChannels=undefined) {\n if (usedChannels === undefined) {\n usedChannels = global_usedChannels;\n }\n let startChannel = 0;\n if (this.inGMPercMap) {\n startChannel = 10;\n }\n for (let ch = startChannel; ch < maxMidi; ch++) {\n if (ch % 16 === 10 && this.inGMPercMap !== true) {\n continue; // skip 10 / percussion.\n }\n if (\n usedChannels[ch] === undefined\n || usedChannels[ch] === this.midiProgram\n ) {\n usedChannels[ch] = this.midiProgram;\n this.midiChannel = ch;\n return ch;\n }\n }\n // TODO: no channels! throw exception!\n return undefined;\n }\n\n get oggSoundfont() {\n return this.soundfontFn + '-ogg.js';\n }\n\n get mp3Soundfont() {\n return this.soundfontFn + '-mp3.js';\n }\n\n get midiChannel() {\n if (this._midiChannel === undefined) {\n this.autoAssignMidiChannel();\n }\n return this._midiChannel;\n }\n\n set midiChannel(ch) {\n this._midiChannel = ch;\n }\n}\n\n/**\n * Find information for a given instrument (by filename or name)\n * and load it into an instrument object.\n *\n * @function music21.instrument.find\n * @memberof music21.instrument\n * @param {string} fn - name or filename of instrument\n * @param {music21.instrument.Instrument} [inst] - instrument object to load into\n * @returns {music21.instrument.Instrument|undefined}\n */\nexport function find(fn, inst=undefined) {\n if (inst === undefined) {\n inst = new Instrument();\n }\n for (const innerInfo of info) {\n if (innerInfo.fn === fn || innerInfo.name === fn) {\n inst.soundfontFn = innerInfo.fn;\n inst.instrumentName = innerInfo.name;\n inst.midiProgram = innerInfo.midiNumber;\n return inst;\n }\n }\n return undefined;\n}\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/interval -- Interval routines\n *\n * Copyright (c) 2013-19, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006-19, Michael Scott Cuthbert and cuthbertLab\n *\n * interval module. See {@link music21.interval} for namespace\n * Interval related objects\n *\n * @exports music21/interval\n *\n * @namespace music21.interval\n * @memberof music21\n * @requires music21/prebase\n * @requires music21/pitch\n */\nimport { debug } from './debug';\n\nimport * as common from './common';\nimport * as note from './note';\nimport * as prebase from './prebase';\nimport * as pitch from './pitch';\n\n/**\n * Interval Directions as an Object/map\n *\n * @memberof music21.interval\n * @example\n * if (music21.interval.Direction.OBLIQUE >\n * music21.interval.Direction.ASCENDING ) {\n * console.log(music21.interval.Direction.DESCENDING);\n * }\n *\n */\nexport const Direction = {\n DESCENDING: -1,\n OBLIQUE: 0,\n ASCENDING: 1,\n};\n\n/**\n * N.B. a dict in music21p -- the indexes here let Direction call them + 1\n *\n * @memberof music21.interval\n * @example\n * console.log(music21.interval.IntervalDirectionTerms[music21l.interval.Direction.OBLIQUE + 1])\n * // \"Oblique\"\n */\nexport const IntervalDirectionTerms = ['Descending', 'Oblique', 'Ascending'];\n\n/**\n * ordinals for music terms...\n *\n * @memberof music21.interval\n * @example\n * for (var i = 1; // N.B. 0 = undefined\n * i < music21.interval.MusicOrdinals.length;\n * i++) {\n * console.log(i, music21.interval.MusicOrdinals[i]);\n * }\n * // 1, Unison\n * // 2, Second\n * // 3, Third\n * // ...\n * // 8, Octave\n * // ...\n * // 15, Double Octave\n */\nexport const MusicOrdinals = [\n undefined,\n 'Unison',\n 'Second',\n 'Third',\n 'Fourth',\n 'Fifth',\n 'Sixth',\n 'Seventh',\n 'Octave',\n 'Ninth',\n 'Tenth',\n 'Eleventh',\n 'Twelfth',\n 'Thirteenth',\n 'Fourteenth',\n 'Double Octave',\n];\n\n/**\n * Represents an interval such as unison, second, etc.\n *\n * Properties are demonstrated below.\n *\n * @class GenericInterval\n * @memberof music21.interval\n * @param {number} [gi=1] - generic interval (1 or higher, or -2 or lower)\n * @example\n * var gi = new music21.interval.GenericInterval(-14)\n * gi.value\n * // -14\n * gi.directed\n * // -14\n * gi.undirected\n * // 14\n * gi.direction == music21.interval.Direction.DESCENDING\n * // true\n * gi.isSkip\n * // true\n * gi.isStep\n * // false\n * gi.isDiatonicStep\n * // false // augmented unisons are not diatonicSteps but can't tell yet..\n * gi.isUnison\n * // false\n * gi.simpledDirected\n * // -7\n * gi.simpleUndirected\n * // 7\n * gi.undirectedOctaves\n * // 1\n * gi.semiSimpleUndirected\n * // 7 -- semiSimple distinguishes between 8 and 1; that's all\n * gi.semiSimpleDirected\n * // 7 -- semiSimple distinguishes between 8 and 1; that's all\n * gi.perfectable\n * // false\n * gi.niceName\n * // \"Fourteenth\"\n * gi.directedNiceName\n * // \"Descending Fourteenth\"\n * gi.simpleNiceName\n * // \"Seventh\"\n * gi.staffDistance\n * // -13\n * gi.mod7inversion\n * // 2 // sevenths invert to seconds\n *\n */\nexport class GenericInterval extends prebase.ProtoM21Object {\n static get className() { return 'music21.interval.GenericInterval'; }\n value: number;\n directed: number;\n undirected: number;\n direction: number; // TODO: enum...\n isSkip: boolean;\n isDiatonicStep: boolean;\n isStep: boolean;\n isUnison: boolean;\n simpleUndirected: number;\n undirectedOctaves: number;\n semiSimpleUndirected: number;\n octaves: number;\n simpleDirected: number;\n semiSimpleDirected: number;\n perfectable: boolean;\n niceName: string;\n simpleNiceName: string;\n semiSimpleNiceName: string;\n staffDistance: number;\n mod7inversion: number;\n mod7: number;\n\n constructor(gi: number) {\n super();\n if (gi === undefined) {\n gi = 1;\n }\n this.value = gi; // todo: convertGeneric() from python\n this.directed = this.value;\n this.undirected = Math.abs(this.value);\n\n if (this.directed === 1) {\n this.direction = Direction.OBLIQUE;\n } else if (this.directed < 0) {\n this.direction = Direction.DESCENDING;\n } else if (this.directed > 1) {\n this.direction = Direction.ASCENDING;\n }\n // else (raise exception)\n\n if (this.undirected > 2) {\n this.isSkip = true;\n } else {\n this.isSkip = false;\n }\n\n if (this.undirected === 2) {\n this.isDiatonicStep = true;\n } else {\n this.isDiatonicStep = false;\n }\n\n this.isStep = this.isDiatonicStep;\n\n if (this.undirected === 1) {\n this.isUnison = true;\n } else {\n this.isUnison = false;\n }\n\n let tempSteps = common.posMod(this.undirected, 7);\n let tempOctaves = Math.floor(this.undirected / 7);\n if (tempSteps === 0) {\n tempOctaves -= 1;\n tempSteps = 7;\n }\n this.simpleUndirected = tempSteps;\n this.undirectedOctaves = tempOctaves;\n if (tempSteps === 1 && tempOctaves >= 1) {\n this.semiSimpleUndirected = 8;\n } else {\n this.semiSimpleUndirected = this.simpleUndirected;\n }\n\n if (this.direction === Direction.DESCENDING) {\n this.octaves = -1 * tempOctaves;\n if (tempSteps !== 1) {\n this.simpleDirected = -1 * tempSteps;\n } else {\n this.simpleDirected = 1; // no descending unisons...\n }\n this.semiSimpleDirected = -1 * this.semiSimpleUndirected;\n } else {\n this.octaves = tempOctaves;\n this.simpleDirected = tempSteps;\n this.semiSimpleDirected = this.semiSimpleUndirected;\n }\n if (\n this.simpleUndirected === 1\n || this.simpleUndirected === 4\n || this.simpleUndirected === 5\n ) {\n this.perfectable = true;\n } else {\n this.perfectable = false;\n }\n\n if (this.undirected < MusicOrdinals.length) {\n this.niceName = MusicOrdinals[this.undirected];\n } else {\n this.niceName = this.undirected.toString();\n }\n\n this.simpleNiceName = MusicOrdinals[this.simpleUndirected];\n this.semiSimpleNiceName\n = MusicOrdinals[this.semiSimpleUndirected];\n\n if (Math.abs(this.directed) === 1) {\n this.staffDistance = 0;\n } else if (this.directed > 1) {\n this.staffDistance = this.directed - 1;\n } else if (this.directed < -1) {\n this.staffDistance = this.directed + 1;\n }\n // else: raise IntervalException(\"Non-integer, -1, or 0 not permitted as a diatonic interval\")\n\n // 2 -> 7; 3 -> 6; 8 -> 1 etc.\n this.mod7inversion = 9 - this.semiSimpleUndirected;\n\n if (this.direction === Direction.DESCENDING) {\n this.mod7 = this.mod7inversion; // see chord.semitonesFromChordStep for usage...\n } else {\n this.mod7 = this.simpleDirected;\n }\n }\n\n /**\n * Returns a new GenericInterval which is the mod7inversion; 3rds (and 10ths etc.) to 6ths, etc.\n *\n * @returns {music21.interval.GenericInterval}\n */\n complement() {\n return new GenericInterval(this.mod7inversion);\n }\n\n /**\n * Returns a new GenericInterval which has the opposite direction\n * (descending becomes ascending, etc.)\n *\n * @returns {music21.interval.GenericInterval}\n */\n reverse() {\n if (this.undirected === 1) {\n return new GenericInterval(1);\n } else {\n return new GenericInterval(\n this.undirected * (-1 * this.direction)\n );\n }\n }\n\n /**\n * Given a specifier, return a new DiatonicInterval with this generic.\n *\n * @param {string|number} specifier - a specifier such as \"P\", \"m\", \"M\", \"A\", \"dd\" etc.\n * @returns {music21.interval.DiatonicInterval}\n */\n getDiatonic(specifier: string|number) {\n return new DiatonicInterval(specifier, this);\n }\n\n /**\n * Transpose a pitch by this generic interval, maintaining accidentals\n *\n * @param {music21.pitch.Pitch} p\n * @returns {music21.pitch.Pitch}\n */\n transposePitch(p: pitch.Pitch): pitch.Pitch {\n const pitch2 = new pitch.Pitch();\n pitch2.step = p.step;\n pitch2.octave = p.octave;\n\n const oldDiatonicNum = p.diatonicNoteNum;\n\n const distanceToMove = this.staffDistance;\n\n // if not reverse...\n const newDiatonicNumber = oldDiatonicNum + distanceToMove;\n const [newStep, newOctave] = convertDiatonicNumberToStep(\n newDiatonicNumber\n );\n pitch2.step = newStep;\n pitch2.octave = newOctave;\n if (p.accidental !== undefined) {\n pitch2.accidental = new pitch.Accidental(p.accidental.name);\n }\n return pitch2;\n }\n}\n\nexport const IntervalSpecifiersEnum = {\n PERFECT: 1,\n MAJOR: 2,\n MINOR: 3,\n AUGMENTED: 4,\n DIMINISHED: 5,\n DBLAUG: 6,\n DBLDIM: 7,\n TRPAUG: 8,\n TRPDIM: 9,\n QUADAUG: 10,\n QUADDMIN: 11,\n};\n\nexport const IntervalNiceSpecNames = [\n 'ERROR',\n 'Perfect',\n 'Major',\n 'Minor',\n 'Augmented',\n 'Diminished',\n 'Doubly-Augmented',\n 'Doubly-Diminished',\n 'Triply-Augmented',\n 'Triply-Diminished',\n 'Quadruply-Augmented',\n 'Quadruply-Diminished',\n];\n\nexport const IntervalPrefixSpecs = [\n undefined,\n 'P',\n 'M',\n 'm',\n 'A',\n 'd',\n 'AA',\n 'dd',\n 'AAA',\n 'ddd',\n 'AAAA',\n 'dddd',\n];\n\nexport const IntervalOrderedPerfSpecs = [\n 'dddd',\n 'ddd',\n 'dd',\n 'd',\n 'P',\n 'A',\n 'AA',\n 'AAA',\n 'AAAA',\n];\n\nexport const IntervalPerfSpecifiers = [\n IntervalSpecifiersEnum.QUADDMIN,\n IntervalSpecifiersEnum.TRPDIM,\n IntervalSpecifiersEnum.DBLDIM,\n IntervalSpecifiersEnum.DIMINISHED,\n IntervalSpecifiersEnum.PERFECT,\n IntervalSpecifiersEnum.AUGMENTED,\n IntervalSpecifiersEnum.DBLAUG,\n IntervalSpecifiersEnum.TRPAUG,\n IntervalSpecifiersEnum.QUADAUG,\n];\n\nexport const IntervalPerfOffset = 4;\n\nexport const IntervalOrderedImperfSpecs = [\n 'dddd',\n 'ddd',\n 'dd',\n 'd',\n 'm',\n 'M',\n 'A',\n 'AA',\n 'AAA',\n 'AAAA',\n];\n\nexport const IntervalSpecifiers = [\n IntervalSpecifiersEnum.QUADDMIN,\n IntervalSpecifiersEnum.TRPDIM,\n IntervalSpecifiersEnum.DBLDIM,\n IntervalSpecifiersEnum.DIMINISHED,\n IntervalSpecifiersEnum.MINOR,\n IntervalSpecifiersEnum.MAJOR,\n IntervalSpecifiersEnum.AUGMENTED,\n IntervalSpecifiersEnum.DBLAUG,\n IntervalSpecifiersEnum.TRPAUG,\n IntervalSpecifiersEnum.QUADAUG,\n];\nexport const IntervalMajOffset = 5;\n\nexport const IntervalSemitonesGeneric = {\n 1: 0,\n 2: 2,\n 3: 4,\n 4: 5,\n 5: 7,\n 6: 9,\n 7: 11,\n};\nexport const IntervalAdjustPerfect = {\n P: 0,\n A: 1,\n AA: 2,\n AAA: 3,\n AAAA: 4,\n d: -1,\n dd: -2,\n ddd: -3,\n dddd: -4,\n}; // offset from Perfect\n\nexport const IntervalAdjustImperf = {\n M: 0,\n m: -1,\n A: 1,\n AA: 2,\n AAA: 3,\n AAAA: 4,\n d: -2,\n dd: -3,\n ddd: -4,\n dddd: -5,\n}; // offset from major\n\n/**\n * Represents a Diatonic interval. See example for usage.\n *\n * @class DiatonicInterval\n * @memberof music21.interval\n * @param {string|number|undefined} [specifier='P'] - a specifier such as \"P\", \"d\", \"m\", \"M\" etc.\n * @param {music21.interval.GenericInterval|number} [generic=1] - a `GenericInterval`\n * object or a number to be converted to one\n * @example\n * var di = new music21.interval.DiatonicInterval(\"M\", 10);\n * di.generic.isClassOrSubclass('GenericInterval');\n * // true\n * di.specifierAbbreviation;\n * // 'M'\n * di.name;\n * // 'M10'\n * di.direction == music21.interval.Direction.ASCENDING;\n * // true\n * di.niceName\n * // \"Major Tenth\"\n *\n * // See music21p for more possibilities.\n */\nexport class DiatonicInterval extends prebase.ProtoM21Object {\n static get className() { return 'music21.interval.DiatonicInterval'; }\n\n name: string;\n specifier: number;\n generic: GenericInterval;\n direction: number;\n niceName: string;\n simpleName: string;\n simpleNiceName: string;\n semiSimpleName: string;\n semiSimpleNiceName: string;\n directedName: string;\n directedNiceName: string;\n directedSimpleName: string;\n directedSimpleNiceName: string;\n directedSemiSimpleNiceName: string;\n directedSemiSimpleName: string;\n specificName: string;\n perfectable: boolean;\n isDiatonicStep: boolean;\n isStep: boolean;\n isSkip: boolean;\n orderedSpecifierIndex: number;\n invertedOrderedSpecIndex: number;\n invertedOrderedSpecifier: string; // this is messed up -- should be number...\n mod7inversion: string;\n\n constructor(specifier: string|number, generic) {\n super();\n\n if (specifier === undefined) {\n specifier = 'P';\n }\n if (generic === undefined) {\n generic = new GenericInterval(1);\n } else if (typeof generic === 'number') {\n generic = new GenericInterval(generic);\n }\n\n this.name = '';\n if (typeof specifier === 'number') {\n this.specifier = specifier;\n } else {\n this.specifier = IntervalPrefixSpecs.indexOf(specifier);\n // TODO: convertSpecifier();\n }\n this.generic = generic;\n\n if (\n generic.undirected !== 1\n || specifier === IntervalSpecifiersEnum.PERFECT\n ) {\n this.direction = generic.direction;\n } else if (\n IntervalPerfSpecifiers.indexOf(this.specifier)\n <= IntervalPerfSpecifiers.indexOf(\n IntervalSpecifiersEnum.DIMINISHED\n )\n ) {\n // diminished unisons -- very controversial\n this.direction = Direction.DESCENDING;\n } else {\n this.direction = Direction.ASCENDING;\n }\n const diatonicDirectionNiceName\n = IntervalDirectionTerms[this.direction + 1];\n this.name\n = IntervalPrefixSpecs[this.specifier]\n + generic.undirected.toString();\n this.niceName\n = IntervalNiceSpecNames[this.specifier]\n + ' '\n + generic.niceName;\n this.simpleName\n = IntervalPrefixSpecs[this.specifier]\n + generic.simpleUndirected.toString();\n this.simpleNiceName\n = IntervalNiceSpecNames[this.specifier]\n + ' '\n + generic.simpleNiceName;\n this.semiSimpleName\n = IntervalPrefixSpecs[this.specifier]\n + generic.semiSimpleUndirected.toString();\n this.semiSimpleNiceName\n = IntervalNiceSpecNames[this.specifier]\n + ' '\n + generic.semiSimpleNiceName;\n this.directedName\n = IntervalPrefixSpecs[this.specifier]\n + generic.directed.toString();\n this.directedNiceName = diatonicDirectionNiceName + ' ' + this.niceName;\n this.directedSimpleName\n = IntervalPrefixSpecs[this.specifier]\n + generic.simpleDirected.toString();\n this.directedSimpleNiceName\n = diatonicDirectionNiceName + ' ' + this.simpleNiceName;\n this.directedSemiSimpleName\n = IntervalPrefixSpecs[this.specifier]\n + generic.semiSimpleDirected.toString();\n this.directedSemiSimpleNiceName\n = diatonicDirectionNiceName + ' ' + this.semiSimpleNiceName;\n this.specificName = IntervalNiceSpecNames[this.specifier];\n this.perfectable = generic.perfectable;\n this.isDiatonicStep = generic.isDiatonicStep;\n this.isStep = generic.isStep;\n this.isSkip = generic.isSkip;\n\n // generate inversions\n if (this.perfectable) {\n this.orderedSpecifierIndex = IntervalOrderedPerfSpecs.indexOf(\n IntervalPrefixSpecs[this.specifier]\n );\n this.invertedOrderedSpecIndex\n = IntervalOrderedPerfSpecs.length\n - 1\n - this.orderedSpecifierIndex;\n this.invertedOrderedSpecifier\n = IntervalOrderedPerfSpecs[\n this.invertedOrderedSpecIndex\n ];\n } else {\n this.orderedSpecifierIndex = IntervalOrderedImperfSpecs.indexOf(\n IntervalPrefixSpecs[this.specifier]\n );\n this.invertedOrderedSpecIndex\n = IntervalOrderedImperfSpecs.length\n - 1\n - this.orderedSpecifierIndex;\n this.invertedOrderedSpecifier\n = IntervalOrderedImperfSpecs[\n this.invertedOrderedSpecIndex\n ];\n }\n\n this.mod7inversion\n = this.invertedOrderedSpecifier + generic.mod7inversion.toString();\n // if (this.direction == Direction.DESCENDING) {\n // this.mod7 = this.mod7inversion;\n // } else {\n // this.mod7 = this.simpleName;\n // }\n\n\n // TODO: reverse()\n // TODO: property cents\n }\n\n /**\n * Returns a ChromaticInterval object of the same size.\n *\n * @returns {music21.interval.ChromaticInterval}\n */\n getChromatic(): ChromaticInterval {\n const octaveOffset = Math.floor(\n Math.abs(this.generic.staffDistance) / 7\n );\n const semitonesStart\n = IntervalSemitonesGeneric[this.generic.simpleUndirected];\n const specName = IntervalPrefixSpecs[this.specifier];\n\n let semitonesAdjust: number;\n if (this.generic.perfectable) {\n semitonesAdjust = IntervalAdjustPerfect[specName];\n } else {\n semitonesAdjust = IntervalAdjustImperf[specName];\n }\n\n let semitones = octaveOffset * 12 + semitonesStart + semitonesAdjust;\n\n // direction should be same as original\n\n if (this.generic.direction === Direction.DESCENDING) {\n semitones *= -1;\n }\n if (debug) {\n console.log(\n 'DiatonicInterval.getChromatic -- octaveOffset: ' + octaveOffset\n );\n console.log(\n 'DiatonicInterval.getChromatic -- semitonesStart: '\n + semitonesStart\n );\n console.log(\n 'DiatonicInterval.getChromatic -- specName: ' + specName\n );\n console.log(\n 'DiatonicInterval.getChromatic -- semitonesAdjust: '\n + semitonesAdjust\n );\n console.log(\n 'DiatonicInterval.getChromatic -- semitones: ' + semitones\n );\n }\n return new ChromaticInterval(semitones);\n }\n\n /**\n *\n * @param {music21.pitch.Pitch} p\n * @returns {music21.pitch.Pitch}\n */\n transposePitch(p: pitch.Pitch): pitch.Pitch {\n const fullIntervalObject = new Interval(this, this.getChromatic());\n return fullIntervalObject.transposePitch(p);\n }\n\n /**\n *\n * @type {string}\n */\n get specifierAbbreviation(): string {\n return IntervalPrefixSpecs[this.specifier];\n }\n\n /**\n *\n * @returns {number}\n */\n get cents(): number {\n return this.getChromatic().cents;\n }\n}\n\n/**\n * @class ChromaticInterval\n * @memberof music21.interval\n * @param {number} value - number of semitones (positive or negative)\n * @property {number} cents\n * @property {number} value\n * @property {number} undirected - absolute value of value\n * @property {number} mod12 - reduction to one octave\n * @property {number} intervalClass - reduction to within a tritone (11 = 1, etc.)\n *\n */\nexport class ChromaticInterval extends prebase.ProtoM21Object {\n static get className() { return 'music21.interval.ChromaticInterval'; }\n\n semitones: number;\n cents: number;\n directed: number;\n undirected: number;\n direction: number;\n mod12: number;\n simpleUndirected: number;\n simpleDirected: number;\n intervalClass: number;\n isChromaticStep: boolean;\n\n constructor(value: number=0) {\n super();\n\n this.semitones = value;\n this.cents = Math.round(value * 100.0);\n this.directed = value;\n this.undirected = Math.abs(value);\n\n if (this.directed === 0) {\n this.direction = Direction.OBLIQUE;\n } else if (this.directed === this.undirected) {\n this.direction = Direction.ASCENDING;\n } else {\n this.direction = Direction.DESCENDING;\n }\n\n this.mod12 = common.posMod(this.semitones, 12);\n this.simpleUndirected = common.posMod(this.undirected, 12);\n if (this.direction === Direction.DESCENDING) {\n this.simpleDirected = -1 * this.simpleUndirected;\n } else {\n this.simpleDirected = this.simpleUndirected;\n }\n\n this.intervalClass = this.mod12;\n if (this.mod12 > 6) {\n this.intervalClass = 12 - this.mod12;\n }\n\n if (this.undirected === 1) {\n this.isChromaticStep = true;\n } else {\n this.isChromaticStep = false;\n }\n }\n\n /**\n *\n * @returns {music21.interval.ChromaticInterval}\n */\n reverse(): ChromaticInterval {\n return new ChromaticInterval(\n this.undirected * (-1 * this.direction)\n );\n }\n\n // TODO: this.getDiatonic()\n\n /**\n * Transposes pitches but does not maintain accidentals, etc.\n *\n * @property {music21.pitch.Pitch} p - pitch to transpose\n * @returns {music21.pitch.Pitch}\n */\n transposePitch(p: pitch.Pitch): pitch.Pitch {\n let useImplicitOctave = false;\n if (p.octave === undefined) {\n // not yet implemented in m21j\n useImplicitOctave = true;\n }\n const pps = p.ps;\n const newPitch = new pitch.Pitch();\n newPitch.ps = pps + this.semitones;\n if (useImplicitOctave) {\n newPitch.octave = undefined;\n }\n return newPitch;\n }\n}\n\nexport const IntervalStepNames = ['C', 'D', 'E', 'F', 'G', 'A', 'B'];\n\n/**\n * @function music21.interval.convertDiatonicNumberToStep\n * @memberof music21.interval\n * @param {number} dn - diatonic number, where 29 = C4, C#4 etc.\n * @returns {Array} two element array of {string} stepName and {number} octave\n */\nexport function convertDiatonicNumberToStep(\n dn: number\n): [string, number] {\n let stepNumber;\n let octave;\n if (dn === 0) {\n return ['B', -1];\n } else if (dn > 0) {\n octave = Math.floor((dn - 1) / 7);\n stepNumber = dn - 1 - octave * 7;\n } else {\n // low notes... test, because js(floor) != py(int);\n octave = Math.floor(dn / 7);\n stepNumber = dn - 1 - (octave + 1) * 7;\n }\n const stepName = IntervalStepNames[stepNumber];\n return [stepName, octave];\n}\n\n/**\n * This is the main, powerful Interval class.\n *\n * Instantiate with either a string (\"M3\") or two {@link music21.pitch.Pitch} or two {@link music21.note.Note}\n *\n * See music21p instructions for usage.\n *\n * @class Interval\n * @memberof music21.interval\n * @example\n * var n1 = new music21.note.Note(\"C4\");\n * var n2 = new music21.note.Note(\"F#5\");\n * var iv = new music21.interval.Interval(n1, n2);\n * iv.isConsonant();\n * // false\n * iv.semitones;\n * // 18\n * iv.niceName\n * // \"Augmented Eleventh\"\n */\nexport class Interval extends prebase.ProtoM21Object {\n static get className() { return 'music21.interval.Interval'; }\n diatonic: DiatonicInterval;\n generic: GenericInterval;\n chromatic: ChromaticInterval;\n protected _noteStart: note.Note;\n protected _noteEnd: note.Note;\n direction: number;\n specifier: number;\n diatonicType: number;\n name: string;\n niceName: string;\n simpleName: string;\n simpleNiceName: string;\n semiSimpleName: string;\n semiSimpleNiceName: string;\n directedName: string;\n directedNiceName: string;\n directedSimpleName: string;\n directedSimpleNiceName: string;\n isDiatonicStep: boolean;\n isChromaticStep: boolean;\n semitones: number;\n intervalClass: number;\n cents: number;\n isStep: boolean;\n isSkip: boolean;\n\n constructor(...restArgs) {\n super();\n // todo: allow full range of ways of specifying as in m21p\n let noteStart;\n let noteEnd;\n if (restArgs.length === 1) {\n const arg0 = restArgs[0];\n if (typeof arg0 === 'string') {\n // simple...\n const specifier = arg0.replace(/\\d+/, '').replace(/-/, '');\n let generic = parseInt(arg0.replace(/\\D+/, ''));\n if (arg0.includes('-')) {\n generic *= -1;\n }\n const gI = new GenericInterval(generic);\n const dI = new DiatonicInterval(specifier, gI);\n this.diatonic = dI;\n this.chromatic = this.diatonic.getChromatic();\n } else if (arg0.specifier !== undefined) {\n // assume diatonic...\n this.diatonic = arg0;\n this.chromatic = this.diatonic.getChromatic();\n } else {\n console.error('cant parse string arguments to Interval yet');\n }\n } else if (restArgs.length === 2) {\n if (\n restArgs[0].pitch === undefined\n && restArgs[0].diatonicNoteNum === undefined\n ) {\n this.diatonic = restArgs[0];\n this.chromatic = restArgs[1];\n } else {\n let n1 = restArgs[0];\n let n2 = restArgs[1];\n if (n1.classes !== undefined && n1.classes.includes('Pitch')) {\n const p1 = n1;\n n1 = new note.Note();\n n1.pitch = p1;\n }\n if (n2.classes !== undefined && n2.classes.includes('Pitch')) {\n const p2 = n2;\n n2 = new note.Note();\n n2.pitch = p2;\n }\n const gInt = notesToGeneric(n1, n2);\n const cInt = notesToChromatic(n1, n2);\n\n this.diatonic = intervalsToDiatonic(gInt, cInt);\n this.chromatic = cInt;\n\n noteStart = n1;\n noteEnd = n2;\n }\n }\n this._noteStart = noteStart;\n this._noteEnd = noteEnd;\n this.reinit();\n }\n\n /**\n *\n * @returns {music21.interval.Interval}\n */\n get complement() {\n return new Interval(this.diatonic.mod7inversion);\n }\n\n reinit() {\n this.direction = this.chromatic.direction;\n this.specifier = this.diatonic.specifier;\n this.diatonicType = this.diatonic.specifier;\n // this.specificName = this.diatonic.specificName;\n this.generic = this.diatonic.generic;\n\n this.name = this.diatonic.name;\n this.niceName = this.diatonic.niceName;\n this.simpleName = this.diatonic.simpleName;\n this.simpleNiceName = this.diatonic.simpleNiceName;\n this.semiSimpleName = this.diatonic.semiSimpleName;\n this.semiSimpleNiceName = this.diatonic.semiSimpleNiceName;\n\n this.directedName = this.diatonic.directedName;\n this.directedNiceName = this.diatonic.directedNiceName;\n this.directedSimpleName = this.diatonic.directedSimpleName;\n this.directedSimpleNiceName = this.diatonic.directedSimpleNiceName;\n\n // other names...\n this.isDiatonicStep = this.diatonic.isDiatonicStep;\n\n this.isChromaticStep = this.chromatic.isChromaticStep;\n this.semitones = this.chromatic.semitones;\n this.intervalClass = this.chromatic.intervalClass;\n this.cents = this.chromatic.cents;\n this.isStep = this.isChromaticStep || this.isDiatonicStep;\n this.isSkip = this.diatonic.isSkip;\n }\n\n /**\n *\n * @type {music21.note.Note|undefined}\n */\n get noteStart() {\n return this._noteStart;\n }\n\n set noteStart(n: note.Note) {\n this._noteStart = n;\n const p1 = n.pitch;\n const p2 = this.transposePitch(p1);\n this._noteEnd = n.clone();\n this._noteEnd.pitch = p2;\n }\n\n /**\n *\n * @type {music21.note.Note|undefined}\n */\n get noteEnd() {\n return this._noteEnd;\n }\n\n set noteEnd(n) {\n this._noteEnd = n;\n const p1 = n.pitch;\n const p2 = this.transposePitch(p1, {reverse: true});\n this._noteStart = n.clone();\n this._noteStart.pitch = p2;\n }\n\n\n /**\n * @returns {Boolean}\n */\n isConsonant() {\n const sn = this.simpleName;\n const consonantNames = ['P5', 'm3', 'M3', 'm6', 'M6', 'P1'];\n if (consonantNames.indexOf(sn) !== -1) {\n return true;\n } else {\n return false;\n }\n }\n\n // todo general: microtones\n // noinspection JSUnusedLocalSymbols\n /**\n * TODO: maxAccidental\n *\n * @param {music21.pitch.Pitch} p - pitch to transpose\n * @param {Object} config - configuration\n * @param {boolean} [config.reverse=false] -- reverse direction\n * @param {number} [config.maxAccidental=4] -- maximum accidentals to retain (unused)\n * @returns {music21.pitch.Pitch}\n */\n transposePitch(p, { reverse=false, maxAccidental=4 }={}) {\n /*\n var useImplicitOctave = false;\n if (p.octave === undefined) {\n useImplicitOctave = true;\n }\n */\n const pitch2 = this.diatonic.generic.transposePitch(p);\n pitch2.accidental = undefined;\n // step and octave are right now, but not necessarily accidental\n let halfStepsToFix;\n if (!reverse) {\n halfStepsToFix = this.chromatic.semitones - Math.floor(pitch2.ps - p.ps);\n } else {\n halfStepsToFix = (-1 * this.chromatic.semitones) - Math.floor(pitch2.ps - p.ps);\n }\n if (halfStepsToFix !== 0) {\n pitch2.accidental = new pitch.Accidental(halfStepsToFix);\n }\n if (debug) {\n console.log('Interval.transposePitch -- new step ' + pitch2.step);\n console.log(\n 'Interval.transposePitch -- new octave ' + pitch2.octave\n );\n console.log(\n 'Interval.transposePitch -- fixing half steps for '\n + halfStepsToFix\n );\n }\n return pitch2;\n }\n}\n\nexport function intervalFromGenericAndChromatic(\n gInt,\n cInt\n) {\n if (typeof gInt === 'number') {\n gInt = new GenericInterval(gInt);\n }\n if (typeof cInt === 'number') {\n cInt = new ChromaticInterval(cInt);\n }\n const specifier = _getSpecifierFromGenericChromatic(gInt, cInt);\n const dInt = new DiatonicInterval(specifier, gInt);\n return new Interval(dInt, cInt);\n}\n\n/**\n * Convert two notes or pitches to a GenericInterval;\n */\nexport function notesToGeneric(n1, n2) {\n let p1 = n1;\n if (n1.pitch !== undefined) {\n p1 = n1.pitch;\n }\n let p2 = n2;\n if (n2.pitch !== undefined) {\n p2 = n2.pitch;\n }\n const staffDist = p2.diatonicNoteNum - p1.diatonicNoteNum;\n const genDist = convertStaffDistanceToInterval(staffDist);\n return new GenericInterval(genDist);\n}\n\nexport function convertStaffDistanceToInterval(\n staffDist\n) {\n if (staffDist === 0) {\n return 1;\n } else if (staffDist > 0) {\n return staffDist + 1;\n } else {\n return staffDist - 1;\n }\n}\n\nexport function notesToChromatic(n1, n2) {\n let p1 = n1;\n if (n1.pitch !== undefined) {\n p1 = n1.pitch;\n }\n let p2 = n2;\n if (n2.pitch !== undefined) {\n p2 = n2.pitch;\n }\n return new ChromaticInterval(p2.ps - p1.ps);\n}\n\nexport function intervalsToDiatonic(gInt, cInt) {\n const specifier = _getSpecifierFromGenericChromatic(gInt, cInt);\n // todo -- convert specifier...\n return new DiatonicInterval(specifier, gInt);\n}\n\nexport function _getSpecifierFromGenericChromatic(\n gInt,\n cInt\n): number {\n const noteVals = [undefined, 0, 2, 4, 5, 7, 9, 11];\n const normalSemis\n = noteVals[gInt.simpleUndirected] + 12 * gInt.undirectedOctaves;\n let theseSemis = 0;\n if (\n gInt.direction !== cInt.direction\n && gInt.direction !== Direction.OBLIQUE\n && cInt.direction !== Direction.OBLIQUE\n ) {\n // intervals like d2 and dd2 etc. (the last test doesn't matter,\n // since -1 * 0 === 0, but in theory it should be there)\n theseSemis = -1 * cInt.undirected;\n } else if (gInt.undirected === 1) {\n theseSemis = cInt.directed; // matters for unison\n } else {\n // all normal intervals\n theseSemis = cInt.undirected;\n }\n const semisRounded = Math.round(theseSemis);\n let specifier: number;\n if (gInt.perfectable) {\n specifier\n = IntervalPerfSpecifiers[\n IntervalPerfOffset + semisRounded - normalSemis\n ];\n } else {\n specifier\n = IntervalSpecifiers[\n IntervalMajOffset + semisRounded - normalSemis\n ];\n }\n return specifier;\n}\n\n/**\n *\n * @param {music21.interval.Interval[]} intervalList\n * @returns {music21.interval.Interval}\n */\nexport function add(intervalList) {\n const p1 = new pitch.Pitch('C4');\n let p2 = new pitch.Pitch('C4');\n for (const i of intervalList) {\n p2 = i.transposePitch(p2);\n }\n return new Interval(p1, p2);\n}\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/key -- KeySignature and Key objects\n *\n * Copyright (c) 2013-16, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–16, Michael Scott Cuthbert and cuthbertLab\n *\n * key and key signature module. See {@link music21.key} namespace for details\n * Key and KeySignature related objects and methods\n *\n * @exports music21/key\n *\n * @namespace music21.key\n * @memberof music21\n * @requires music21/base\n * @requires music21/pitch\n * @requires music21/interval\n * @requires music21/scale\n */\nimport { Music21Exception } from './exceptions21';\nimport { debug } from './debug';\n\nimport * as base from './base';\nimport * as interval from './interval';\nimport * as pitch from './pitch';\nimport * as scale from './scale';\n\nexport const modeSharpsAlter = {\n major: 0,\n minor: -3,\n dorian: -2,\n phrygian: -4,\n lydian: 1,\n mixolydian: -1,\n locrian: -5,\n};\n\n/**\n *\n * @param {string} textString\n * @returns {string}\n */\nexport function convertKeyStringToMusic21KeyString(textString) {\n if (textString === 'bb') {\n textString = 'b-';\n } else if (textString === 'Bb') {\n textString = 'B-';\n } else if (textString.endsWith('b') && !textString.startsWith('b')) {\n textString = textString.replace(/b$/, '-');\n }\n return textString;\n}\n\n/**\n * @class KeySignature\n * @memberof music21.key\n * @description Represents a key signature\n * @param {int} [sharps=0] -- the number of sharps (negative for flats)\n * @property {int} [sharps=0] -- number of sharps (negative for flats)\n * @property {string[]} flatMapping -- flat signatures 0-12 flats\n * @property {string[]} sharpMapping -- sharp signatures 0-12 sharps\n * @extends music21.base.Music21Object\n * @example\n * var ks = new music21.key.KeySignature(-3); //E-flat major or c minor\n * var s = new music21.stream.Stream();\n * s.keySignature = ks;\n * var n = new music21.note.Note('A-'); // A-flat\n * s.append(n);\n * s.appendNewDOM();\n */\nexport class KeySignature extends base.Music21Object {\n static get className() { return 'music21.key.KeySignature'; }\n\n protected _sharps: number = 0;\n protected _alteredPitchesCache: pitch.Pitch[];\n\n // 12 flats/sharps enough for now...\n flatMapping = [\n 'C', 'F', 'B-', 'E-', 'A-',\n 'D-', 'G-', 'C-', 'F-',\n 'B--', 'E--', 'A--', 'D--',\n ];\n\n sharpMapping = [\n 'C', 'G', 'D', 'A',\n 'E', 'B', 'F#', 'C#',\n 'G#', 'D#', 'A#', 'E#', 'B#',\n ];\n\n constructor(sharps=0) {\n super();\n this.classSortOrder = 2;\n\n this._sharps = sharps;\n this._alteredPitchesCache = undefined;\n }\n\n stringInfo(): string {\n if (this.sharps === 0) {\n return 'of no sharps or flats';\n } else if (this.sharps === -1) {\n return 'of 1 flat';\n } else if (this.sharps === 1) {\n return 'of 1 sharp';\n } else if (this.sharps < 0) {\n return `of ${Math.abs(this.sharps)} flats`;\n } else {\n return `of ${this.sharps} sharps`;\n }\n }\n\n get sharps(): number {\n return this._sharps;\n }\n\n set sharps(s: number) {\n this._alteredPitchesCache = [];\n this._sharps = s;\n }\n\n /**\n * Gives the width in pixels necessary to represent the key signature.\n */\n get width(): number {\n if (this.sharps === 0) {\n return 0;\n } else {\n // add 6 to add extra space after the KS...\n return 12 * Math.abs(this.sharps) + 6;\n }\n }\n\n /**\n * An Array of Altered Pitches in KeySignature order (i.e., for flats, Bb, Eb, etc.)\n *\n * @type {music21.pitch.Pitch[]}\n * @readonly\n * @example\n * var ks = new music21.key.KeySignature(3)\n * var ap = ks.alteredPitches\n * var apName = [];\n * for (var i = 0; i < ap.length; i++) {\n * apName.push(ap[i].name);\n * }\n * apName\n * // [\"F#\", \"C#\", \"G#\"]\n */\n get alteredPitches(): pitch.Pitch[] {\n if (this._alteredPitchesCache !== undefined) {\n return this._alteredPitchesCache;\n }\n let transStr = 'P5';\n let startPitch = 'B';\n if (this.sharps < 0) {\n transStr = 'P4';\n startPitch = 'F';\n }\n const transInterval = new interval.Interval(transStr);\n const post = [];\n let pKeep = new pitch.Pitch(startPitch);\n for (let i = 0; i < Math.abs(this.sharps); i++) {\n pKeep = transInterval.transposePitch(pKeep);\n pKeep.octave = 4;\n post.push(pKeep);\n }\n this._alteredPitchesCache = post;\n return post;\n }\n\n /**\n * Return the name of the major key with this many sharps\n *\n * @returns {(string|undefined)} name of key\n * @example\n * var ks = new music21.key.KeySignature(-3)\n * ks.majorName()\n * // \"E-\"\n */\n majorName(): string {\n if (this.sharps >= 0) {\n return this.sharpMapping[this.sharps];\n } else {\n return this.flatMapping[Math.abs(this.sharps)];\n }\n }\n\n /**\n * Return the name of the minor key with this many sharps\n * @returns {(string|undefined)}\n */\n minorName(): string {\n const tempSharps = this.sharps + 3;\n if (tempSharps >= 0) {\n return this.sharpMapping[tempSharps];\n } else {\n return this.flatMapping[Math.abs(tempSharps)];\n }\n }\n\n /**\n * returns the vexflow name (just the `majorName()` with \"b\" for \"-\") for\n * the key signature. Does not create the object.\n *\n * Deprecated.\n *\n * @returns {string}\n */\n vexflow(): string {\n console.log('calling deprecated function KeySignature.vexflow');\n const tempName = this.majorName();\n return tempName.replace(/-/g, 'b');\n }\n\n /**\n * Returns the accidental associated with a step in this key, or undefined if none.\n *\n * @param {string} step - a valid step name such as \"C\",\"D\", etc., but not \"C#\" etc.\n * @returns {(music21.pitch.Accidental|undefined)}\n */\n accidentalByStep(step: string): pitch.Accidental|undefined {\n const aps = this.alteredPitches;\n for (let i = 0; i < aps.length; i++) {\n if (aps[i].step === step) {\n if (aps[i].accidental === undefined) {\n return undefined;\n }\n // make a new accidental;\n return new pitch.Accidental(aps[i].accidental.alter);\n }\n }\n return undefined;\n }\n\n /**\n * Takes a pitch in C major and transposes it so that it has\n * the same step position in the current key signature.\n *\n * Does not support inPlace unlike music21p v6.\n *\n * @returns {music21.pitch.Pitch}\n * @example\n * var ks = new music21.key.KeySignature(-3)\n * var p1 = new music21.pitch.Pitch('B')\n * var p2 = ks.transposePitchFromC(p1)\n * p2.name\n * // \"D\"\n * var p3 = new music21.pitch.Pitch('G-')\n * var p4 = ks.transposePitchFromC(p3)\n * p4.name\n * // \"B--\"\n */\n transposePitchFromC(p: pitch.Pitch): pitch.Pitch {\n const originalOctave = p.octave;\n let transInterval;\n let transTimes;\n if (this.sharps === 0) {\n return new pitch.Pitch(p.nameWithOctave);\n } else if (this.sharps < 0) {\n transTimes = Math.abs(this.sharps);\n transInterval = new interval.Interval('P4');\n } else {\n transTimes = this.sharps;\n transInterval = new interval.Interval('P5');\n }\n let newPitch = p;\n for (let i = 0; i < transTimes; i++) {\n newPitch = transInterval.transposePitch(newPitch);\n }\n newPitch.octave = originalOctave;\n return newPitch;\n }\n}\n\n/**\n * Create a Key object. Like a KeySignature but with ideas about Tonic, Dominant, etc.\n *\n * TODO: allow keyName to be a {@link music21.pitch.Pitch}\n * TODO: Scale mixin.\n *\n * @class Key\n * @memberof music21.key\n * @extends music21.key.KeySignature\n * @param {string} keyName -- a pitch name representing the key (w/ \"-\" for flat)\n * @param {string} [mode] -- if not given then the CASE of the keyName will be used (\"C\" => \"major\", \"c\" => \"minor\")\n */\nexport class Key extends KeySignature {\n static get className() { return 'music21.key.Key'; }\n\n tonic: pitch.Pitch;\n mode: string;\n _scale: scale.ConcreteScale;\n\n constructor(keyName='C', mode=undefined) {\n if (keyName === undefined) {\n keyName = 'C';\n }\n if (mode === undefined) {\n const lowerCase = keyName.toLowerCase();\n if (keyName === lowerCase) {\n mode = 'minor';\n } else {\n mode = 'major';\n }\n }\n\n const sharpsArray = 'A-- E-- B-- F- C- G- D- A- E- B- F C G D A E B F# C# G# D# A# E# B#'.split(\n ' '\n );\n const sharpsIndex = sharpsArray.indexOf(keyName.toUpperCase());\n if (sharpsIndex === -1) {\n throw new Music21Exception('Cannot find the key for ' + keyName);\n }\n const modeShift = modeSharpsAlter[mode] || 0;\n const sharps = sharpsIndex + modeShift - 11;\n if (debug) {\n console.log('Found sharps ' + sharps + ' for key: ' + keyName);\n }\n super(sharps);\n\n this.tonic = new pitch.Pitch(keyName);\n this.mode = mode;\n this._scale = this.getScale();\n }\n\n stringInfo() {\n return this.tonicPitchNameWithCase + ' ' + this.mode;\n }\n\n get tonicPitchNameWithCase() {\n let tonicName = this.tonic.name;\n if (this.mode === 'major') {\n tonicName = tonicName.toUpperCase();\n } else if (this.mode === 'minor') {\n tonicName = tonicName.toLowerCase();\n }\n return tonicName;\n }\n\n /**\n * returns a {@link music21.scale.MajorScale} or {@link music21.scale.MinorScale}\n * object from the pitch object.\n *\n * @param {string|undefined} [scaleType=this.mode] - the type of scale, or the mode.\n * @returns {Object} A music21.scale.Scale subclass.\n */\n getScale(scaleType=undefined) {\n if (scaleType === undefined) {\n scaleType = this.mode;\n }\n const pitchObj = this.tonic;\n if (scaleType === 'major') {\n return new scale.MajorScale(pitchObj);\n } else if (scaleType === 'minor') {\n return new scale.MinorScale(pitchObj);\n } else if (['harmonic minor', 'harmonic-minor'].includes(scaleType)) {\n return new scale.HarmonicMinorScale(pitchObj);\n } else if (['melodic minor', 'melodic-minor'].includes(scaleType)) {\n return new scale.AscendingMelodicMinorScale(pitchObj);\n } else {\n return new scale.ConcreteScale(pitchObj);\n }\n }\n\n // Because of lack of multiple inheritance,\n // whenever scale.js adds functionality, it must be added here.\n get isConcrete() {\n return this._scale.isConcrete;\n }\n\n getPitches(...args) {\n return this._scale.getPitches(...args);\n }\n\n pitchFromDegree(degree, ...args) {\n return this._scale.pitchFromDegree(degree, ...args);\n }\n\n getScaleDegreeFromPitch(pitchTarget, ...args) {\n return this._scale.getScaleDegreeFromPitch(pitchTarget, ...args);\n }\n}\n\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/keyboard -- PianoKeyboard rendering and display objects\n *\n * Copyright (c) 2013-18, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–17, Michael Scott Cuthbert and cuthbertLab\n *\n * Keyboard module, see {@link music21.keyboard} namespace\n *\n * @exports music21/keyboard\n *\n * keyboard namespace -- tools for creating an onscreen keyboard and interacting with it.\n *\n * @namespace music21.keyboard\n * @memberof music21\n * @requires music21/pitch\n * @requires music21/common\n * @requires music21/miditools\n * @requires jquery\n * @requires MIDI\n *\n * @example Minimum usage:\n * const kd = document.getElementById('keyboardDiv');\n * const k = new music21.keyboard.Keyboard();\n * k.appendKeyboard(kd, 6, 57); // 88 key keyboard\n *\n * // configurable:\n * k.scaleFactor = 1.2; // default 1\n * k.whiteKeyWidth = 40; // default 23\n *\n */\nimport * as $ from 'jquery';\nimport * as MIDI from 'midicube';\n\nimport * as common from './common';\nimport * as miditools from './miditools';\nimport * as pitch from './pitch';\n\n/**\n * Represents a single Key\n *\n * @class Key\n * @memberof music21.keyboard\n * @property {Array} callbacks - called when key is clicked/selected\n * @property {number} [scaleFactor=1]\n * @property {music21.keyboard.Keyboard|undefined} parent\n * @property {int} id - midi number associated with the key.\n * @property {music21.pitch.Pitch|undefined} pitchObj\n * @property {SVGElement|undefined} svgObj - SVG representing the drawing of the key\n * @property {SVGElement|undefined} noteNameSvgObj - SVG representing the note name drawn on the key\n * @property {string} keyStyle='' - css style information for the key\n * @property {string} keyClass='' - css class information for the key (\"keyboardkey\" + this is the class)\n * @property {number} width - width of key\n * @property {number} height - height of key\n */\nexport class Key {\n classes: string[] = ['Key']; // name conflict with key.Key\n callbacks = {\n click: undefined,\n };\n\n scaleFactor: number = 1;\n parent: Keyboard;\n id: number = 0; // midi number\n width: number = 23;\n height: number = 120;\n pitchObj: pitch.Pitch;\n svgObj: SVGElement;\n noteNameSvgObj: SVGElement;\n keyStyle: string = '';\n keyClass: string = '';\n\n /**\n * Gets an SVG object for the key\n *\n * @param {number} startX - X position in pixels from left of keyboard to draw key at\n * @returns {SVGElement} a SVG rectangle for the key\n */\n makeKey(startX) {\n const keyAttrs = {\n style: this.keyStyle,\n x: startX,\n y: 0,\n class: 'keyboardkey ' + this.keyClass,\n id: this.id,\n width: this.width * this.scaleFactor,\n height: this.height * this.scaleFactor,\n rx: 3,\n ry: 3,\n };\n const keyDOM = common.makeSVGright('rect', keyAttrs);\n for (const x in this.callbacks) {\n if ({}.hasOwnProperty.call(this.callbacks, x)) {\n keyDOM.addEventListener(x, this.callbacks[x], false);\n }\n }\n this.svgObj = keyDOM;\n return keyDOM;\n }\n\n /**\n * Adds a circle (red) on the key (to mark middle C etc.)\n *\n * @param {string} [strokeColor='red']\n * @returns {SVGElement}\n */\n addCircle(strokeColor) {\n if (\n this.svgObj === undefined\n || this.parent === undefined\n || this.parent.svgObj === undefined\n ) {\n return undefined;\n }\n if (strokeColor === undefined) {\n strokeColor = 'red';\n }\n const x = parseInt(this.svgObj.getAttribute('x'));\n const cx = x + this.parent.scaleFactor * this.width / 2;\n // console.log('cx', cx);\n const keyattrs = {\n stroke: strokeColor,\n 'stroke-width': 3,\n fill: 'none',\n cx,\n cy: (this.height - 10) * this.parent.scaleFactor,\n class: 'keyboardkeyannotation',\n r: this.width * this.parent.scaleFactor / 4,\n };\n\n const circleDom = common.makeSVGright('circle', keyattrs);\n this.parent.svgObj.appendChild(circleDom);\n // console.log(circleDom);\n return circleDom;\n }\n\n /**\n * Adds the note name on the key\n *\n * @param {Boolean} [labelOctaves=false] - use octave numbers too?\n * @returns {this}\n */\n addNoteName(labelOctaves) {\n if (\n this.svgObj === undefined\n || this.parent === undefined\n || this.parent.svgObj === undefined\n ) {\n return this;\n }\n if (this.id === 0 && this.pitchObj === undefined) {\n return this;\n } else if (this.pitchObj === undefined) {\n this.pitchObj = new pitch.Pitch();\n this.pitchObj.ps = this.id;\n }\n if (\n this.pitchObj.accidental !== undefined\n && this.pitchObj.accidental.alter !== 0\n ) {\n return this;\n }\n let x = parseInt(this.svgObj.getAttribute('x'));\n let idStr = this.pitchObj.name;\n let fontSize = 14;\n if (labelOctaves === true) {\n idStr = this.pitchObj.nameWithOctave;\n fontSize = 12;\n x -= 2;\n }\n fontSize = Math.floor(fontSize * this.parent.scaleFactor);\n\n let textfill = 'white';\n if (this.keyClass === 'whitekey') {\n textfill = 'black';\n }\n const textattrs = {\n fill: textfill,\n x: x + this.parent.scaleFactor * (this.width / 2 - 5),\n y: this.parent.scaleFactor * (this.height - 20),\n class: 'keyboardkeyname',\n 'font-size': fontSize,\n };\n\n const textDom = common.makeSVGright('text', textattrs);\n const textNode = document.createTextNode(idStr);\n textDom.appendChild(textNode);\n this.noteNameSvgObj = textDom; // store for removing...\n this.parent.svgObj.appendChild(textDom);\n return this;\n }\n\n /**\n * Removes the note name from the key (if exists)\n *\n * @returns {undefined}\n */\n removeNoteName() {\n if (\n this.svgObj === undefined\n || this.parent === undefined\n || this.parent.svgObj === undefined\n ) {\n return;\n }\n if (this.noteNameSvgObj === undefined) {\n return;\n }\n if (this.noteNameSvgObj.parentNode === this.parent.svgObj) {\n this.parent.svgObj.removeChild(this.noteNameSvgObj);\n }\n this.noteNameSvgObj = undefined;\n }\n}\n\n/**\n * Defaults for a WhiteKey (width, height, keyStyle, keyClass)\n *\n * @class WhiteKey\n * @memberof music21.keyboard\n * @extends music21.keyboard.Key\n */\nexport class WhiteKey extends Key {\n constructor() {\n super();\n this.width = 23;\n this.height = 120;\n this.keyStyle = 'fill:#fffff6;stroke:black';\n this.keyClass = 'whitekey';\n }\n}\n\n/**\n * Defaults for a BlackKey (width, height, keyStyle, keyClass)\n *\n * @class BlackKey\n * @memberof music21.keyboard\n * @extends music21.keyboard.Key\n */\nexport class BlackKey extends Key {\n constructor() {\n super();\n this.width = 13;\n this.height = 80;\n this.keyStyle = 'fill:black;stroke:black';\n this.keyClass = 'blackkey';\n }\n}\n\n/**\n * A Class representing a whole Keyboard full of keys.\n *\n * @class Keyboard\n * @memberof music21.keyboard\n * @property {number} whiteKeyWidth - default 23\n * @property {number} scaleFactor - default 1\n * @property {Object} keyObjects - a mapping of id to {@link music21.keyboard.Key} objects\n * @property {SVGElement} svgObj - the SVG object of the keyboard\n * @property {Boolean} markC - default true\n * @property {Boolean} showNames - default false\n * @property {Boolean} showOctaves - default false\n * @property {string|number} startPitch - default \"C3\" (a pitch string or midi number)\n * @property {string|number} endPitch - default \"C5\" (a pitch string or midi number)\n * @property {Boolean} hideable - default false -- add a way to hide and show keyboard\n * @property {Boolean} scrollable - default false -- add scroll bars to change octave\n */\nexport class Keyboard {\n whiteKeyWidth = 23;\n _defaultWhiteKeyWidth = 23;\n _defaultBlackKeyWidth = 13;\n scaleFactor = 1;\n height = 120; // does nothing right now...\n keyObjects = new Map();\n svgObj: SVGElement;\n\n markC = true;\n showNames = false;\n showOctaves = false;\n\n startPitch: string|number|pitch.Pitch = 'C3';\n endPitch: string|number|pitch.Pitch = 'C5';\n _startDNN: number = 22;\n _endDNN: number = 36;\n\n hideable = false;\n scrollable = false;\n callbacks = {\n click: undefined,\n };\n\n // more accurate offsets from http://www.mathpages.com/home/kmath043.htm\n sharpOffsets = {\n 0: 14.3333,\n 1: 18.6666,\n 3: 13.25,\n 4: 16.25,\n 5: 19.75,\n };\n\n constructor() {\n /**\n * An object of callbacks on events.\n *\n * default:\n *\n * - click: this.clickHandler\n *\n * @name callbacks\n * @type {Object}\n */\n this.callbacks = {\n click: (keyClicked) => this.clickHandler(keyClicked),\n };\n }\n\n /**\n * Redraws the SVG associated with this Keyboard\n *\n * @returns {SVGElement} new svgDOM\n */\n redrawSVG() {\n if (this.svgObj === undefined) {\n return undefined;\n }\n const oldSVG = this.svgObj;\n const svgParent = oldSVG.parentNode;\n this.keyObjects = new Map();\n const svgDOM = this.createSVG();\n svgParent.replaceChild(svgDOM, oldSVG);\n return svgDOM;\n }\n\n /**\n * Appends a keyboard to the `where` parameter\n *\n * @param {jQuery|Node} [where]\n * @returns {music21.keyboard.Keyboard} this\n */\n appendKeyboard(where) {\n if (where === undefined) {\n where = document.body;\n } else { // noinspection JSUnresolvedVariable\n if (typeof where.jquery !== 'undefined') {\n where = where[0];\n }\n }\n\n let svgDOM: HTMLElement|SVGElement = this.createSVG();\n\n if (this.scrollable) {\n svgDOM = this.wrapScrollable(svgDOM)[0];\n }\n\n if (this.hideable) {\n // make it so the keyboard can be shown or hidden...\n this.appendHideableKeyboard(where, svgDOM);\n } else {\n where.appendChild(svgDOM); // svg must use appendChild, not append.\n }\n return this;\n }\n\n /**\n * Handle a click on a given SVG object\n *\n * TODO(msc) - 2019-Dec -- separate into two calls, one for highlighting and one for playing.\n *\n * @param {SVGElement} keyRect - the dom object with the keyboard.\n */\n clickHandler(keyRect) {\n // to-do : integrate with jazzHighlight...\n const id = parseInt(keyRect.getAttribute('id'));\n const thisKeyObject = this.keyObjects.get(id);\n if (thisKeyObject === undefined) {\n return; // not on keyboard;\n }\n const storedStyle = thisKeyObject.keyStyle;\n let fillColor = '#c0c000';\n if (thisKeyObject.keyClass === 'whitekey') {\n fillColor = 'yellow';\n }\n keyRect.setAttribute('style', 'fill:' + fillColor + ';stroke:black');\n miditools.loadSoundfont('acoustic_grand_piano', i => {\n MIDI.noteOn(i.midiChannel, id, 100, 0);\n MIDI.noteOff(i.midiChannel, id, 500);\n });\n setTimeout(() => {\n keyRect.setAttribute('style', storedStyle);\n }, 500);\n }\n\n /**\n * Draws the SVG associated with this Keyboard\n */\n createSVG(): SVGElement {\n // DNN = pitch.diatonicNoteNum;\n // this._endDNN = final key note. I.e., the last note to be included, not the first note not included.\n // 6, 57 gives a standard 88-key keyboard;\n if (typeof this.startPitch === 'string') {\n const tempP = new pitch.Pitch(this.startPitch);\n this._startDNN = tempP.diatonicNoteNum;\n } else if (typeof this.startPitch === 'number') {\n this._startDNN = this.startPitch;\n } else if (this.startPitch instanceof pitch.Pitch) {\n this._startDNN = this.startPitch.diatonicNoteNum;\n }\n\n if (typeof this.endPitch === 'string') {\n const tempP = new pitch.Pitch(this.endPitch);\n this._endDNN = tempP.diatonicNoteNum;\n } else if (typeof this.endPitch === 'number') {\n this._endDNN = this.endPitch;\n } else if (this.endPitch instanceof pitch.Pitch) {\n this._endDNN = this.endPitch.diatonicNoteNum;\n }\n\n let currentIndex = (this._startDNN - 1) % 7; // C = 0\n const keyboardDiatonicLength = 1 + this._endDNN - this._startDNN;\n const totalWidth\n = this.whiteKeyWidth * this.scaleFactor * keyboardDiatonicLength;\n const height = 120 * this.scaleFactor;\n const heightString = height.toString() + 'px';\n\n const svgDOM = common.makeSVGright('svg', {\n 'xml:space': 'preserve',\n height: heightString,\n width: totalWidth.toString() + 'px',\n class: 'keyboardSVG',\n });\n const movingPitch = new pitch.Pitch('C4');\n const blackKeys = [];\n const thisKeyboardObject = this;\n\n for (let wki = 0; wki < keyboardDiatonicLength; wki++) {\n movingPitch.diatonicNoteNum = this._startDNN + wki;\n const wk = new WhiteKey();\n wk.id = movingPitch.midi;\n wk.parent = this;\n this.keyObjects.set(movingPitch.midi, wk);\n wk.scaleFactor = this.scaleFactor;\n wk.width = this.whiteKeyWidth;\n wk.callbacks.click = function whitekeyCallbacksClick() {\n thisKeyboardObject.callbacks.click(this);\n };\n\n const wkSVG = wk.makeKey(\n this.whiteKeyWidth * this.scaleFactor * wki\n );\n svgDOM.appendChild(wkSVG);\n\n if (\n (currentIndex === 0\n || currentIndex === 1\n || currentIndex === 3\n || currentIndex === 4\n || currentIndex === 5)\n && wki !== keyboardDiatonicLength - 1\n ) {\n // create but do not append BlackKey to the right of WhiteKey\n const bk = new BlackKey();\n bk.id = movingPitch.midi + 1;\n this.keyObjects.set(movingPitch.midi + 1, bk);\n bk.parent = this;\n\n bk.scaleFactor = this.scaleFactor;\n bk.width\n = this._defaultBlackKeyWidth\n * this.whiteKeyWidth\n / this._defaultWhiteKeyWidth;\n bk.callbacks.click = function blackKeyClicksCallback() {\n thisKeyboardObject.callbacks.click(this);\n };\n\n let offsetFromWhiteKey = this.sharpOffsets[currentIndex];\n offsetFromWhiteKey\n *= this.whiteKeyWidth\n / this._defaultWhiteKeyWidth\n * this.scaleFactor;\n const bkSVG = bk.makeKey(\n this.whiteKeyWidth * this.scaleFactor * wki\n + offsetFromWhiteKey\n );\n blackKeys.push(bkSVG);\n }\n currentIndex += 1;\n currentIndex %= 7;\n }\n // append blackkeys later since they overlap white keys;\n for (let bki = 0; bki < blackKeys.length; bki++) {\n svgDOM.appendChild(blackKeys[bki]);\n }\n\n this.svgObj = svgDOM;\n if (this.markC) {\n this.markMiddleC();\n }\n if (this.showNames) {\n this.markNoteNames(this.showOctaves);\n }\n\n return svgDOM;\n }\n\n /**\n * Puts a circle on middle c.\n *\n * @param {string} [strokeColor='red']\n */\n markMiddleC(strokeColor='red') {\n const midC = this.keyObjects.get(60);\n if (midC !== undefined) {\n midC.addCircle(strokeColor);\n }\n }\n\n /**\n * Puts note names on every white key.\n *\n * @param {Boolean} [labelOctaves=false]\n */\n markNoteNames(labelOctaves) {\n this.removeNoteNames(); // in case...\n for (const keyObj of this.keyObjects.values()) {\n keyObj.addNoteName(labelOctaves);\n }\n }\n\n /**\n * Remove note names on the keys, if they exist\n *\n * @returns {this}\n */\n removeNoteNames() {\n for (const keyObj of this.keyObjects.values()) {\n keyObj.removeNoteName();\n }\n return this;\n }\n\n /**\n * Wraps the SVG object inside a scrollable set of buttons\n *\n * Do not call this directly, just use createSVG after changing the\n * scrollable property on the keyboard to True.\n *\n * @param {SVGElement} svgDOM\n * @returns {JQuery}\n */\n wrapScrollable(svgDOM: SVGElement): JQuery {\n const $wrapper = $(\n \"
\"\n ).css({\n display: 'inline-block',\n });\n const $bDown = $(\"\")\n .css({\n 'font-size': Math.floor(this.scaleFactor * 15).toString() + 'px',\n })\n .on('click', () => {\n miditools.config.transposeOctave -= 1;\n this.startPitch = this._startDNN - 7;\n this.endPitch = this._endDNN - 7;\n this.redrawSVG();\n });\n const $bUp = $(\"\")\n .css({\n 'font-size': Math.floor(this.scaleFactor * 15).toString() + 'px',\n })\n .on('click', () => {\n miditools.config.transposeOctave += 1;\n this.startPitch = this._startDNN + 7;\n this.endPitch = this._endDNN + 7;\n this.redrawSVG();\n });\n const $kWrapper = $(\n \"
\"\n );\n $kWrapper[0].appendChild(svgDOM);\n $wrapper.append($bDown);\n $wrapper.append($kWrapper);\n $wrapper.append($bUp);\n return $wrapper;\n }\n\n /**\n * Puts a hideable keyboard inside a Div with the proper controls.\n *\n * Do not call this directly, just use createSVG after changing the\n * hideable property on the keyboard to True.\n *\n * @param {Node} where\n * @param {SVGElement} keyboardSVG\n */\n appendHideableKeyboard(where, keyboardSVG) {\n const $container = $(\"
\");\n const $bInside = $(\"
\").css({\n display: 'inline-block',\n 'padding-top': '40px',\n 'font-size': '40px',\n });\n const $b = $(\"
\").css({\n display: 'inline-block',\n 'vertical-align': 'top',\n background: 'white',\n });\n $b.append($bInside);\n $b.data(\n 'defaultDisplay',\n $container.find('.keyboardSVG').css('display')\n );\n $b.data('state', 'down');\n $b.on('click', triggerToggleShow);\n const $explain = $(\n \"
Show keyboard
\"\n ).css({\n display: 'none',\n 'background-color': 'white',\n padding: '10px 10px 10px 10px',\n 'font-size': '12pt',\n });\n $b.append($explain);\n $container.append($b);\n $container[0].appendChild(keyboardSVG); // svg must use appendChild, not $.append.\n $(where).append($container);\n return $container;\n }\n}\n\n// noinspection JSUnusedLocalSymbols\n/**\n * triggerToggleShow -- event for keyboard is shown or hidden.\n *\n * @function music21.keyboard.triggerToggleShow\n * @param {Event} [e]\n */\nexport const triggerToggleShow = e => {\n // \"this\" refers to the object clicked\n // e -- event is not used.\n const $t = $(this);\n const state = $t.data('state');\n const $parent = $t.parent();\n let $k = $parent.find('.keyboardScrollableWrapper');\n if ($k.length === 0) {\n // not scrollable\n $k = $parent.find('.keyboardSVG');\n }\n const $bInside = $t.find('.keyboardToggleInside');\n const $explain = $parent.find('.keyboardExplain');\n if (state === 'up') {\n $bInside.text('↥');\n $bInside.css('padding-top', '40px');\n $explain.css('display', 'none');\n let dd = $t.data('defaultDisplay');\n if (dd === undefined) {\n dd = 'inline';\n }\n $k.css('display', dd);\n $t.data('state', 'down');\n } else {\n $k.css('display', 'none');\n $explain.css('display', 'inline-block');\n $bInside.text('↧');\n $bInside.css('padding-top', '10px');\n $t.data('state', 'up');\n }\n};\n\n/**\n * highlight the keyboard stored in \"this\" appropriately\n *\n * @function music21.keyboard.jazzHighlight\n * @param {music21.miditools.Event} e\n * @example\n * var midiCallbacksPlay = [music21.miditools.makeChords,\n * music21.miditools.sendToMIDIjs,\n * music21.keyboard.jazzHighlight.bind(k)];\n */\nexport function jazzHighlight(e) {\n // e is a miditools.event object -- call with this = keyboard.Keyboard object via bind...\n if (e === undefined) {\n return;\n }\n if (e.noteOn) {\n const midiNote: number = e.midiNote;\n if (this.keyObjects.has(midiNote)) {\n const keyObj = this.keyObjects.get(midiNote);\n const svgObj = keyObj.svgObj;\n let normalizedVelocity = (e.velocity + 25) / 127;\n if (normalizedVelocity > 1) {\n normalizedVelocity = 1.0;\n }\n\n let intensityRGB: string;\n if (keyObj.keyClass === 'whitekey') {\n const intensity = normalizedVelocity.toString();\n intensityRGB = 'rgba(255, 255, 0, ' + intensity + ')';\n } else {\n const intensity = Math.floor(\n normalizedVelocity * 255\n ).toString();\n intensityRGB = 'rgb(' + intensity + ',' + intensity + ',0)';\n // console.log(intensityRGB);\n }\n svgObj.setAttribute(\n 'style',\n 'fill:' + intensityRGB + ';stroke:black'\n );\n }\n } else if (e.noteOff) {\n const midiNote = e.midiNote;\n if (this.keyObjects.has(midiNote)) {\n const keyObj = this.keyObjects.get(midiNote);\n const svgObj = keyObj.svgObj;\n svgObj.setAttribute('style', keyObj.keyStyle);\n }\n }\n} // call this with a bind(keyboard.Keyboard object)...\n","/**\n *\n * THIS IS CURRENTLY UNUSED\n * Does not work yet, so not documented\n *\n */\n// future -- rewrite of Score and Part to Page, System, SystemPart\n// not currently used\n// import * as $ from 'jquery';\n//\n// import { base } from './base';\n// import { renderOptions } from './renderOptions';\n\nimport * as stream from './stream';\n\n/**\n * Divide a part up into systems and fix the measure\n * widths so that they are all even.\n *\n * Note that this is done on the part level even though\n * the measure widths need to be consistent across parts.\n *\n * This is possible because the system is deterministic and\n * will come to the same result for each part. Opportunity\n * for making more efficient through this...\n *\n * @param {music21.stream.Score} score\n * @param {number} containerWidth\n * @returns {LayoutScore}\n */\nexport function makeLayoutFromScore(\n score,\n containerWidth\n) {\n const parts = score.parts.stream();\n // console.log(parts);\n const numParts = parts.length;\n const partZero = parts.get(0);\n const numMeasures = partZero.getElementsByClass('Measure').length;\n\n const measureWidths = partZero.getMeasureWidths();\n const maxSystemWidth\n = containerWidth || score.maxSystemWidth; /* of course fix! */\n\n const layoutScore = new LayoutScore();\n const currentPage = new Page(); // to-do multiple pages...\n currentPage.measureStart = 1;\n currentPage.measureEnd = numMeasures;\n\n layoutScore.insert(0, currentPage);\n\n let currentSystem = new System();\n let currentSystemNumber = 1;\n currentSystem.measureStart = 1;\n let currentStaves: Staff[] = [];\n\n const staffMaker = (staffHolder, numParts, measureStart) => {\n for (let pNum = 0; pNum < numParts; pNum++) {\n const staff = new Staff();\n staff.measureStart = measureStart;\n staff.staffNumber = pNum + 1;\n staffHolder.push(staff);\n }\n };\n staffMaker(currentStaves, numParts, 1);\n\n // noinspection JSMismatchedCollectionQueryUpdate\n const systemCurrentWidths = [];\n // noinspection JSMismatchedCollectionQueryUpdate\n const systemBreakIndexes = [];\n\n let lastSystemBreak = 0; /* needed to ensure each line has at least one measure */\n const startLeft = 20; /* TODO: make it obtained elsewhere */\n let currentLeft = startLeft;\n // let currentSystemTop = 0;\n // var partTopOffsets = [];\n // const ignoreSystemsInCalculatingScoreHeight = true;\n // const systemHeight = score.estimateStreamHeight(ignoreSystemsInCalculatingScoreHeight);\n\n for (let i = 0; i < measureWidths.length; i++) {\n const currentRight = currentLeft + measureWidths[i];\n /* console.log(\"left: \" + currentLeft + \" ; right: \" + currentRight + \" ; m: \" + i); */\n if (currentRight > maxSystemWidth && lastSystemBreak !== i) {\n // new system...\n for (let j = 0; j < currentStaves.length; j++) {\n currentStaves[j].measureEnd = i;\n currentSystem.insert(0, currentStaves[j]);\n }\n currentStaves = [];\n staffMaker(currentStaves, numParts, i + 1);\n // currentSystemTop += systemHeight;\n currentSystem.measureEnd = i;\n currentPage.insert(0, currentSystem);\n currentSystemNumber += 1;\n currentSystem = new System();\n currentSystem.measureStart = i + 1;\n currentSystem.systemNumber = currentSystemNumber;\n\n systemBreakIndexes.push(i - 1);\n systemCurrentWidths.push(currentLeft);\n console.log(\n 'setting new width at ' + currentLeft + ' measure ' + i\n );\n currentLeft = startLeft + measureWidths[i];\n lastSystemBreak = i;\n } else {\n currentLeft = currentRight;\n }\n for (let pNum = 0; pNum < currentStaves.length; pNum++) {\n currentStaves[pNum].append(parts.get(pNum).get(i));\n }\n }\n for (let j = 0; j < currentStaves.length; j++) {\n currentStaves[j].measureEnd = measureWidths.length - 1;\n currentSystem.insert(0, currentStaves[j]);\n }\n currentPage.insert(0, currentSystem);\n return layoutScore;\n}\n\n/**\n * @extends music21.stream.Score\n * @property {number|undefined} measureStart\n * @property {number|undefined} measureEnd\n * @property {number|undefined} width\n * @property {number|undefined} height\n */\nexport class LayoutScore extends stream.Score {\n static get className() { return 'music21.layout.LayoutScore'; }\n\n scoreLayout;\n measureStart;\n measureEnd;\n protected _width: number;\n height: number;\n top: number;\n left: number;\n\n constructor() {\n super();\n this.scoreLayout = undefined;\n this.measureStart = undefined;\n this.measureEnd = undefined;\n /**\n *\n * @type {number|undefined}\n * @private\n */\n this._width = undefined;\n this.height = undefined;\n this.top = 0;\n this.left = 0;\n }\n\n get pages() {\n return this.getElementsByClass('Page');\n }\n\n get width() {\n if (this._width) {\n return this._width;\n } else if (this.activeSite) {\n return this.activeSite.width;\n } else {\n return undefined;\n }\n }\n // /**\n // * return a tuple of (top, bottom) for a staff, specified by a given pageId,\n // * systemId, and staffId in PIXELS.\n //\n // * @param pageId\n // * @param systemId\n // * @param staffId\n // * @param units -- \"pixels\" or \"tenths\" (not supported)\n // */\n //\n // getPositionForStaff(pageId, systemId, staffId, units) {\n // units = units || 'pixels';\n // }\n}\n\n/**\n * All music must currently be on page 1.\n *\n * @extends music21.stream.Score\n * @property {number|undefined} measureStart\n * @property {number|undefined} measureEnd\n * @property {number|undefined} systemStart\n * @property {number|undefined} systemEnd\n */\nexport class Page extends stream.Score {\n static get className() { return 'music21.layout.Page'; }\n\n pageNumber: number;\n measureStart;\n measureEnd;\n systemStart;\n systemEnd;\n pageLayout;\n _width: number;\n\n constructor() {\n super();\n this.pageNumber = 1;\n this.measureStart = undefined;\n this.measureEnd = undefined;\n this.systemStart = undefined;\n this.systemEnd = undefined;\n this.pageLayout = undefined;\n }\n\n get systems() {\n return this.getElementsByClass('System');\n }\n\n get width() {\n if (this._width) {\n return this._width;\n } else if (this.activeSite) {\n return this.activeSite.width;\n } else {\n return undefined;\n }\n }\n}\n\n/**\n * @extends music21.stream.Score\n * @property {number|undefined} measureStart\n * @property {number|undefined} measureEnd\n * @property {number|undefined} width\n * @property {number|undefined} height\n * @property {number|undefined} top\n * @property {number|undefined} left\n */\nexport class System extends stream.Score {\n static get className() { return 'music21.layout.System'; }\n\n systemNumber: number;\n systemLayout;\n measureStart;\n measureEnd;\n protected _width: number;\n height: number;\n top: number;\n left: number;\n\n constructor() {\n super();\n this.systemNumber = 1;\n this.systemLayout = undefined;\n this.measureStart = undefined;\n this.measureEnd = undefined;\n this.height = undefined;\n this.top = undefined;\n this.left = undefined;\n }\n\n get staves() {\n return this.getElementsByClass('Staff');\n }\n\n get width() {\n if (this._width) {\n return this._width;\n } else if (this.activeSite) {\n return this.activeSite.width;\n } else {\n return undefined;\n }\n }\n}\n\n/**\n * @extends music21.stream.Score\n *\n */\nexport class Staff extends stream.Part {\n static get className() { return 'music21.layout.Staff'; }\n\n measureStart: number;\n measureEnd: number;\n staffNumber: number;\n optimized: number;\n top: number;\n left: number;\n protected _width: number;\n height: number;\n inheritedHeight: number;\n staffLayout;\n\n constructor() {\n super();\n this.staffNumber = 1;\n this.optimized = 0;\n this.top = undefined;\n this.left = undefined;\n this._width = undefined;\n this.height = undefined;\n this.inheritedHeight = undefined;\n this.staffLayout = undefined;\n }\n\n get width() {\n if (this._width) {\n return this._width;\n } else if (this.activeSite) {\n return this.activeSite.width;\n } else {\n return undefined;\n }\n }\n}\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/meter -- TimeSignature objects\n *\n * Copyright (c) 2013-19, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–17, Michael Scott Cuthbert and cuthbertLab\n *\n * meter module. See {@link music21.meter} namespace for details.\n * Meter and TimeSignature Classes (esp. {@link music21.meter.TimeSignature} ) and methods.\n *\n * @exports music21/meter\n *\n * @namespace music21.meter\n * @memberof music21\n * @requires music21/base\n * @requires music21/duration\n */\nimport Vex from 'vexflow';\n\nimport * as base from './base';\nimport * as beam from './beam';\nimport * as common from './common';\nimport * as duration from './duration';\n\n// imports for typing\nimport * as stream from './stream';\nimport {Music21Object} from './base';\nimport { Music21Exception } from './exceptions21';\n\n/**\n * A MUCH simpler version of the music21p TimeSignature object.\n *\n * @param {string} meterString - a string (\"4/4\", \"3/8\" etc.) to initialize the TimeSignature.\n * @property {int} [numerator=4]\n * @property {int} [denominator=4]\n * @property {number[][]} beatGroups - groupings of beats; inner arrays are numerator, denominator\n * @property {string} ratioString - a string like \"4/4\"\n * @property {music21.duration.Duration} barDuration - a Duration object\n * representing the expressed total length of the TimeSignature.\n */\nexport class TimeSignature extends base.Music21Object {\n static get className() { return 'music21.meter.TimeSignature'; }\n\n _numerator: number = 4;\n _denominator: number = 4;\n _overwrittenBarDuration;\n symbol: string = '';\n symbolizeDenominator: boolean = false;\n\n // music21j simple attributes;\n _beatGroups: number[][] = [];\n _overwrittenBeatCount;\n _overwrittenBeatDuration;\n\n constructor(value: string = '4/4', divisions?) {\n super();\n this.classSortOrder = 4;\n this.resetValues(value, divisions);\n }\n\n stringInfo(): string {\n return this.ratioString;\n }\n\n resetValues(value: string = '4/4', divisions?) {\n this.symbol = '';\n this.symbolizeDenominator = false;\n this._overwrittenBarDuration = undefined;\n\n // m21j only, simple functions\n this._beatGroups = [];\n this._overwrittenBeatCount = undefined;\n this._overwrittenBeatDuration = undefined;\n\n this.load(value, divisions);\n }\n\n load(value: string, divisions?) {\n const valueLower = value.toLowerCase();\n if (valueLower === 'common' || valueLower === 'c') {\n value = '4/4';\n this.symbol = 'common';\n } else if (valueLower === 'cut' || valueLower === 'allabreve') {\n value = '2/2';\n this.symbol = 'cut';\n }\n const meterList = value.split('/');\n this.numerator = parseInt(meterList[0]);\n this.denominator = parseInt(meterList[1]);\n }\n\n // loadRatio is deprecated in m21p so not implemented here.\n\n get numerator(): number {\n return this._numerator;\n }\n\n set numerator(s: number) {\n this._numerator = s;\n }\n\n get denominator(): number {\n return this._denominator;\n }\n\n set denominator(s: number) {\n this._denominator = s;\n }\n\n get ratioString(): string {\n return this.numerator.toString() + '/' + this.denominator.toString();\n }\n\n set ratioString(meterString: string) {\n this.resetValues(meterString);\n }\n\n get barDuration(): duration.Duration {\n if (this._overwrittenBarDuration) {\n return this._overwrittenBarDuration;\n }\n const ql = 4.0 * this._numerator / this._denominator;\n return new duration.Duration(ql);\n }\n\n set barDuration(value: duration.Duration) {\n this._overwrittenBarDuration = value;\n }\n\n get beatGroups(): number[][] {\n if (this._beatGroups.length === 0) {\n this._beatGroups = this.computeBeatGroups();\n }\n return this._beatGroups;\n }\n\n set beatGroups(newGroups: number[][]) {\n this._beatGroups = newGroups;\n }\n\n /**\n * Get the beatCount from the numerator, assuming fast 6/8, etc.\n * unless .beatCount has been set manually.\n */\n get beatCount(): number {\n if (this._overwrittenBeatCount !== undefined) {\n return this._overwrittenBeatCount;\n }\n if (this.numerator % 3 === 0) {\n if (this.numerator > 3 || this.denominator >= 8) {\n // 6/8, 9/8, 12/8, and 6/4, 6/2, 9/2, etc.\n // and 3/8, 3/16, 3/32 but not 3/4, 3/2, etc.\n return this.numerator / 3;\n } else {\n return this.numerator;\n }\n } else {\n return this.numerator;\n }\n }\n\n /**\n * Manually set the beatCount to an int.\n */\n set beatCount(overwrite: number) {\n this._overwrittenBeatCount = overwrite;\n }\n\n /**\n * Gets a single duration.Duration object representing\n * the length of a beat in this time signature (using beatCount)\n * or, if set manually, it can return a list of Durations For\n * asymmetrical meters.\n */\n get beatDuration(): duration.Duration {\n const dur = this.barDuration;\n dur.quarterLength /= this.beatCount;\n return dur;\n }\n\n /**\n * Set beatDuration to a duration.Duration object or\n * if the client can handle it, a list of Duration objects...\n */\n set beatDuration(overwrite: duration.Duration) {\n this._overwrittenBeatDuration = overwrite;\n }\n\n /**\n * Compute the Beat Group according to this time signature.\n *\n * returns a list of numerator and denominators,\n * find a list of beat groups.\n */\n computeBeatGroups(): number[][] {\n const tempBeatGroups = [];\n let numBeats = this.numerator;\n let beatValue = this.denominator;\n if (beatValue < 8 && numBeats >= 5) {\n const beatsToEighthNoteRatio = 8 / beatValue;\n // hopefully beatValue is an int -- right Brian Ferneyhough?\n beatValue = 8;\n numBeats *= beatsToEighthNoteRatio;\n }\n\n if (beatValue >= 8) {\n while (numBeats >= 5) {\n tempBeatGroups.push([3, beatValue]);\n numBeats -= 3;\n }\n if (numBeats === 4) {\n tempBeatGroups.push([2, beatValue]);\n tempBeatGroups.push([2, beatValue]);\n } else if (numBeats > 0) {\n tempBeatGroups.push([numBeats, beatValue]);\n }\n } else if (beatValue === 2) {\n tempBeatGroups.push([1, 2]);\n } else if (beatValue <= 1) {\n tempBeatGroups.push([1, 1]);\n } else {\n // 4/4, 2/4, 3/4, standard stuff\n tempBeatGroups.push([2, 8]);\n }\n return tempBeatGroups;\n }\n\n offsetToIndex(\n qLenPos: number,\n {includeCoincidentBoundaries = false}: {includeCoincidentBoundaries?: boolean} = {},\n ): number {\n // This should be a method on a MeterSequence.\n if (qLenPos >= this.barDuration.quarterLength || qLenPos < 0) {\n throw new Music21Exception(\n `cannot access from qLenPos ${qLenPos} `\n + `where total duration is ${this.barDuration.quarterLength}`\n );\n }\n // DOES NOT SUPPORT irregular beats yet...\n const beatDuration = this.beatDuration;\n // does not support includeCoincidentBoundaries yet.\n return Math.floor(qLenPos / beatDuration.quarterLength);\n }\n\n /**\n * Return a span of [start, end] for the current beat/beam grouping\n */\n offsetToSpan(offset: number): number[] {\n const beatDuration = this.beatDuration.quarterLength;\n const beatsFromStart = Math.floor(offset / beatDuration);\n const start = beatsFromStart * beatDuration;\n const end = start + beatDuration;\n return [start, end];\n }\n\n /**\n * srcStream - a stream of elements.\n * options - an object with measureStartOffset\n */\n getBeams(srcStream: stream.Stream, options={}) {\n const params = { measureStartOffset: 0.0 };\n common.merge(params, options);\n const measureStartOffset = params.measureStartOffset;\n let beamsList = beam.Beams.naiveBeams(srcStream);\n beamsList = beam.Beams.removeSandwichedUnbeamables(beamsList);\n const fixBeamsOneElementDepth = (i, el, depth) => {\n const beams = beamsList[i];\n if (!beams) {\n return;\n }\n\n if (el.duration.quarterLength >= this.beatDuration.quarterLength) {\n beamsList[i] = undefined;\n return;\n }\n\n const beamNumber = depth + 1;\n if (!(beams.getNumbers().includes(beamNumber))) {\n return;\n }\n const dur = el.duration;\n const pos = el.offset + measureStartOffset;\n\n const start = pos; // opFrac\n const end = pos + dur.quarterLength; // opFrac;\n const startNext = end;\n const isLast = (i === srcStream.length - 1);\n const isFirst = (i === 0);\n let beamNext;\n let beamPrevious;\n if (!isFirst) {\n beamPrevious = beamsList[i - 1];\n }\n if (!isLast) {\n beamNext = beamsList[i + 1];\n }\n const [archetypeSpanStart, archetypeSpanEnd] = this.offsetToSpan(start);\n let archetypeSpanNextStart = 0.0;\n if (beamNext !== undefined) {\n archetypeSpanNextStart = this.offsetToSpan(startNext)[0];\n }\n if (start === archetypeSpanStart && end === archetypeSpanEnd) {\n beamsList[i] = undefined;\n return;\n }\n\n let beamType;\n if (isFirst && measureStartOffset === 0.0) {\n beamType = 'start';\n if (beamNext === undefined || !(beamNext.getNumbers().includes(beamNumber))) {\n beamType = 'partial-right';\n }\n } else if (isLast) {\n beamType = 'stop';\n if (beamPrevious === undefined || !beamPrevious.getNumbers().includes(beamNumber)) {\n beamType = 'partial-left';\n } else if (beamPrevious && beamPrevious.getTypeByNumber(beamNumber) === 'stop') {\n beamsList[i] = undefined;\n }\n } else if (beamPrevious === undefined || !beamPrevious.getNumbers().includes(beamNumber)) {\n if (beamNumber === 1 && beamNext === undefined) {\n beamsList[i] = undefined;\n return;\n } else if (beamNext === undefined && beamNumber > 1) {\n beamType = 'partial-left';\n } else if (startNext >= archetypeSpanEnd) {\n beamType = 'partial-left';\n } else if (beamNext === undefined || !(beamNext.getNumbers().includes(beamNumber))) {\n beamType = 'partial-right';\n } else {\n beamType = 'start';\n }\n } else if (beamPrevious\n && beamPrevious.getNumbers().includes(beamNumber)\n && ['stop', 'partial-left'].includes(beamPrevious.getTypeByNumber(beamNumber))\n ) {\n if (beamNext !== undefined) {\n beamType = 'start';\n } else {\n beamType = 'partial-left';\n }\n } else if (beamNext === undefined || !beamNext.getNumbers().includes(beamNumber)) {\n beamType = 'stop';\n } else if (startNext < archetypeSpanEnd) {\n beamType = 'continue';\n } else if (startNext >= archetypeSpanNextStart) {\n beamType = 'stop';\n } else {\n console.warn('Cannot match beamType');\n return;\n }\n beams.setByNumber(beamNumber, beamType);\n };\n\n const elList = Array.from(srcStream);\n for (let depth = 0; depth < beam.beamableDurationTypes.length; depth++) {\n for (let i = 0; i < elList.length; i++) {\n const el = elList[i];\n fixBeamsOneElementDepth(i, el, depth);\n }\n }\n\n beamsList = beam.Beams.sanitizePartialBeams(beamsList);\n beamsList = beam.Beams.mergeConnectingPartialBeams(beamsList);\n return beamsList;\n }\n\n /**\n * Return the measure offset based on a Measure, if it exists,\n * otherwise based on meter modulus of the TimeSignature.\n */\n getMeasureOffsetOrMeterModulusOffset(el: Music21Object) {\n const mOffset = el._getMeasureOffset();\n const tsMeasureOffset = this._getMeasureOffset({includeMeasurePadding: false});\n if ((mOffset + tsMeasureOffset) < this.barDuration.quarterLength) {\n return mOffset;\n } else {\n const post = common.posMod((mOffset - tsMeasureOffset), this.barDuration.quarterLength);\n return post;\n }\n }\n\n /**\n * Given a quarter length position into the meter, return a numerical progress\n through the beat (where beats count from one) with a floating-point or fractional value\n between 0 and 1 appended to this value that gives the proportional progress into the beat.\n\n For faster, integer values, use simply `.getBeat()`\n\n NOTE: currently returns floats only, no fractions.\n\n TODO: this does not allow for irregular beat proportions\n */\n getBeatProportion(qLenPos: number): number {\n const beatIndex = this.offsetToIndex(qLenPos);\n const [start, end] = this.offsetToSpan(qLenPos);\n const totalRange = end - start;\n const progress = qLenPos - start;\n return beatIndex + 1 + (progress / totalRange);\n }\n\n /**\n * Compute the Beat Group according to this time signature for VexFlow. For beaming.\n *\n * @returns {Array} a list of numerator and denominator groups, for VexFlow\n */\n vexflowBeatGroups(): Vex.Flow.Fraction[] {\n const tempBeatGroups = this.beatGroups;\n const vfBeatGroups = [];\n for (let i = 0; i < tempBeatGroups.length; i++) {\n const [bg_numerator, bg_denominator] = tempBeatGroups[i];\n vfBeatGroups.push(new Vex.Flow.Fraction(bg_numerator, bg_denominator));\n }\n return vfBeatGroups;\n\n // if (numBeats % 3 == 0 && beatValue < 4) {\n // // 6/8, 3/8, 9/8, etc.\n // numBeats = numBeats / 3;\n // beatValue = beatValue / 3;\n // }\n }\n}\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/miditools -- A collection of tools for midi.\n *\n * Copyright (c) 2014-19, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–19, Michael Scott Cuthbert and cuthbertLab\n *\n * @author Michael Scott Cuthbert\n *\n * A collection of tools for midi. See the namespace.\n *\n * Module that holds **music21j** tools for connecting with MIDI.js and somewhat with the\n * events from the Jazz plugin or the WebMIDI protocol.\n *\n *\n * @exports music21/miditools\n * @memberof music21\n */\nimport * as $ from 'jquery';\nimport * as MIDI from 'midicube';\n\nimport { debug } from './debug';\nimport '../../css/midiPlayer.css';\n\nimport * as chord from './chord';\nimport * as common from './common';\nimport * as instrument from './instrument';\nimport * as note from './note';\n\n// imports for typechecking only\nimport * as tempo from './tempo';\n\ndeclare interface MIDIWindow extends Window {\n MIDI?: MIDI,\n}\n\nexport interface CallbackInterface {\n raw: (t, a, b, c) => Event,\n general: Function|Function[],\n sendOutChord: Function,\n}\n\n\n// expose midicube's MIDI to window for soundfonts to load.\n( window).MIDI = MIDI;\n\nclass _ConfigSingletonClass {\n /**\n * Number of octaves to transpose all incoming midi signals\n */\n transposeOctave: number = 0;\n /**\n * How long to wait in milliseconds before deciding\n * that a note belongs to another chord. Default 100ms\n */\n maxDelay: number = 100; // in ms\n /**\n * At what time (in ms since Epoch) the chord started.\n */\n heldChordTime: number = 0; // in ms\n /**\n * An Array (or undefined) of currently held Notes that have not been sent out yet.\n */\n heldChordNotes: any[] = undefined;\n\n /**\n * When, in MS since Jan 1, 1970, was the last {@link note.Note} played.\n * Defaults to the time that the module was loaded.\n */\n timeOfLastNote: number = Date.now(); // in ms\n\n /**\n * The last Note or Chord to be sent out from miditools. This is an important semi-global\n * attribute, since the last element may need to be quantized by quantizeLastNote() to\n * determine its length, since the note may need to be placed into a staff before its total\n * length can be determined.\n */\n lastElement: chord.Chord|note.Note = undefined;\n\n protected _baseTempo = 60;\n /**\n * Assign (or query) a Metronome object to run all timing information.\n */\n metronome: tempo.Metronome = undefined;\n\n get tempo(): number {\n if (this.metronome === undefined) {\n return this._baseTempo;\n } else {\n return this.metronome.tempo;\n }\n }\n\n set tempo(t: number) {\n if (this.metronome === undefined) {\n this._baseTempo = t;\n } else {\n this.metronome.tempo = t;\n }\n }\n}\n\nexport const config = new _ConfigSingletonClass();\n\n\n/**\n * @class Event\n * @memberof music21.miditools\n * @param {number} t - timing information\n * @param {number} a - midi data 1 (N.B. a >> 4 = midiCommand )\n * @param {number} b - midi data 2\n * @param {number} c - midi data 3\n */\nexport class Event {\n timing: number;\n data1: number;\n data2: number;\n data3: number;\n midiCommand: number;\n noteOff: boolean;\n noteOn: boolean;\n midiNote: number;\n velocity: number = undefined;\n\n constructor(t, a, b, c) {\n this.timing = t;\n this.data1 = a;\n this.data2 = b;\n this.data3 = c;\n this.midiCommand = a >> 4; // eslint-disable-line no-bitwise\n this.noteOff = this.midiCommand === 8;\n this.noteOn = this.midiCommand === 9;\n\n this.midiNote = undefined;\n if (this.noteOn || this.noteOff) {\n this.midiNote = this.data2 + 12 * config.transposeOctave;\n this.velocity = this.data3;\n }\n }\n\n /**\n * Calls MIDI.noteOn or MIDI.noteOff for the note\n * represented by the Event (if appropriate)\n *\n * @returns {undefined}\n */\n sendToMIDIjs() {\n if (MIDI.config.is_connected) {\n // noteOn check because does not exist if no audio context\n // or soundfont has been loaded, such as if a play event\n // is triggered before soundfont has been loaded.\n if (this.noteOn) {\n MIDI.noteOn(0, this.midiNote, this.velocity, 0);\n } else if (this.noteOff) {\n MIDI.noteOff(0, this.midiNote, 0);\n }\n } else {\n console.warn('could not playback note because no MIDI connection defined');\n }\n }\n\n /**\n * Makes a {@link note.Note} object from the event's midiNote number.\n *\n * @returns {note.Note} - the {@link note.Note} object represented by Event.midiNote\n */\n music21Note(): note.Note {\n const m21n = new note.Note();\n m21n.pitch.ps = this.midiNote;\n return m21n;\n }\n}\n\n\n/**\n * a mapping of soundfont text names to true, false, or \"loading\".\n *\n * @memberof music21.miditools\n * @type {Object}\n */\nexport const loadedSoundfonts = {};\n\n\n\n/* --------- chords ------------- */\n/**\n * Clears chords that are older than miditools.heldChordTime\n *\n * Runs a setTimeout on itself.\n * Calls miditools.sendOutChord\n *\n * @memberof music21.miditools\n */\nexport function clearOldChords() {\n // clear out notes that may be a chord...\n const nowInMs = Date.now(); // in ms\n if (config.heldChordTime + config.maxDelay < nowInMs) {\n config.heldChordTime = nowInMs;\n if (config.heldChordNotes !== undefined) {\n // console.log('to send out chords');\n sendOutChord(config.heldChordNotes);\n config.heldChordNotes = undefined;\n }\n }\n setTimeout(clearOldChords, config.maxDelay);\n}\n/**\n * Take a series of jEvent noteOn objects and convert them to a single Chord object\n * so long as they are all sounded within miditools.maxDelay milliseconds of each other.\n * this method stores notes in miditools.heldChordNotes (Array).\n *\n * @param {music21.miditools.Event} jEvent\n * @memberof music21.miditools\n * @returns undefined\n */\nexport function makeChords(jEvent) {\n // jEvent is a miditools.Event object\n if (jEvent.noteOn) {\n const m21n = jEvent.music21Note();\n if (config.heldChordNotes === undefined) {\n config.heldChordNotes = [m21n];\n } else {\n for (let i = 0; i < config.heldChordNotes.length; i++) {\n const foundNote = config.heldChordNotes[i];\n if (foundNote.pitch.ps === m21n.pitch.ps) {\n return; // no duplicates\n }\n }\n config.heldChordNotes.push(m21n);\n }\n }\n}\n\n/**\n * Take the list of Notes and makes a chord out of it, if appropriate and call\n * {@link music21.miditools.callbacks.sendOutChord} callback with the Chord or Note as a parameter.\n *\n * @memberof music21.miditools\n * @param {Array} chordNoteList - an Array of {@link music21.note.Note} objects\n * @returns {(music21.note.Note|music21.chord.Chord|undefined)} A {@link music21.chord.Chord} object,\n * most likely, but maybe a {@link music21.note.Note} object)\n */\nexport function sendOutChord(chordNoteList) {\n let appendObject;\n if (chordNoteList.length > 1) {\n // console.log(chordNoteList[0].name, chordNoteList[1].name);\n appendObject = new chord.Chord(chordNoteList);\n } else if (chordNoteList.length === 1) {\n appendObject = chordNoteList[0]; // note object\n } else {\n return undefined;\n }\n appendObject.stemDirection = 'noStem';\n quantizeLastNote();\n config.lastElement = appendObject;\n if (callbacks.sendOutChord !== undefined) {\n callbacks.sendOutChord(appendObject);\n }\n return appendObject;\n}\n\n/* ----------- callbacks --------- */\n// TODO: all callbacks (incl. raw, sendOutChord) should be able to be a function or an array of functions\n\n\n\n/**\n * Quantizes the lastElement (passed in) or music21.miditools.lastElement.\n *\n * @memberof music21.miditools\n * @param {music21.note.GeneralNote} [lastElement] - A {@link music21.note.Note} to be quantized\n * @returns {music21.note.GeneralNote} The same {@link music21.note.Note} object passed in with\n * duration quantized\n */\nexport function quantizeLastNote(lastElement=undefined) {\n if (lastElement === undefined) {\n lastElement = config.lastElement;\n }\n if (lastElement === undefined) {\n return undefined;\n }\n\n if (lastElement instanceof note.NotRest) {\n lastElement.stemDirection = undefined;\n }\n const nowInMS = Date.now();\n const msSinceLastNote = nowInMS - config.timeOfLastNote;\n config.timeOfLastNote = nowInMS;\n const normalQuarterNoteLength = 1000 * 60 / config.tempo;\n const numQuarterNotes = msSinceLastNote / normalQuarterNoteLength;\n let roundedQuarterLength = Math.round(4 * numQuarterNotes) / 4;\n if (roundedQuarterLength >= 4) {\n roundedQuarterLength = 4;\n } else if (roundedQuarterLength >= 3) {\n roundedQuarterLength = 3;\n } else if (roundedQuarterLength > 2) {\n roundedQuarterLength = 2;\n } else if (roundedQuarterLength === 1.25) {\n roundedQuarterLength = 1;\n } else if (roundedQuarterLength === 0.75) {\n roundedQuarterLength = 0.5;\n } else if (roundedQuarterLength === 0) {\n roundedQuarterLength = 0.125;\n }\n lastElement.duration.quarterLength = roundedQuarterLength;\n return lastElement;\n}\n\n/* ----------- callbacks --------- */\n/**\n * Callback to midiEvent.sendToMIDIjs.\n *\n * @memberof music21.miditools\n * @param {music21.miditools.Event} midiEvent - event to send out.\n * @returns undefined\n */\nexport const sendToMIDIjs = midiEvent => {\n midiEvent.sendToMIDIjs();\n};\n\n/* ------------ MIDI.js ----------- */\n\n/**\n * Called after a soundfont has been loaded. The callback is better to be specified elsewhere\n * rather than overriding this important method.\n *\n * @memberof music21.miditools\n * @param {string} soundfont The name of the soundfont that was just loaded\n * @param {function} callback A function to be called after the soundfont is loaded.\n */\nexport function postLoadCallback(soundfont, callback) {\n // this should be bound to MIDI\n if (debug) {\n console.log('soundfont loaded about to execute callback.');\n console.log(\n 'first playing two notes very softly -- seems to flush the buffer.'\n );\n }\n $('.loadingSoundfont').remove();\n\n const isAudioTag = MIDI.config.api === 'audiotag';\n const instrumentObj = instrument.find(soundfont);\n if (instrumentObj !== undefined) {\n MIDI.programChange(\n instrumentObj.midiChannel,\n instrumentObj.midiProgram\n );\n if (debug) {\n console.log(\n soundfont + ' (' + instrumentObj.midiProgram + ') loaded on ',\n instrumentObj.midiChannel\n );\n }\n if (isAudioTag === false) {\n // Firefox ignores sound volume! so don't play!\n // as does IE and others using HTML audio tag.\n // these old browsers don't have auto prevention anyhow.\n const channel = instrumentObj.midiChannel;\n MIDI.noteOn(channel, 36, 1, 0); // if no notes have been played before then\n MIDI.noteOff(channel, 36, 1, 0.1); // the second note to be played is always\n MIDI.noteOn(channel, 48, 1, 0.2); // very clipped (on Safari at least)\n MIDI.noteOff(channel, 48, 1, 0.3); // this helps a lot.\n MIDI.noteOn(channel, 60, 1, 0.3); // chrome needs three notes?\n MIDI.noteOff(channel, 60, 1, 0.4);\n }\n }\n if (callback !== undefined) {\n callback(instrumentObj);\n }\n loadedSoundfonts[soundfont] = true;\n}\n\n/**\n * method to load soundfonts while waiting for other processes that need them\n * to load first.\n *\n * @memberof music21.miditools\n * @param {string} soundfont The name of the soundfont that was just loaded\n * @param {function} [callback] A function to be called after the soundfont is loaded.\n * @example\n * s = new music21.stream.Stream();\n * music21.miditools.loadSoundfont(\n * 'clarinet',\n * function(i) {\n * console.log('instrument object', i, 'loaded');\n * s.instrument = i;\n * });\n */\nexport function loadSoundfont(\n soundfont: string,\n callback=undefined\n) {\n if (loadedSoundfonts[soundfont] === true) {\n // this soundfont has already been loaded once, so just call the callback.\n if (callback !== undefined) {\n const instrumentObj = instrument.find(soundfont);\n callback(instrumentObj);\n }\n } else if (loadedSoundfonts[soundfont] === 'loading') {\n // we are still waiting for this instrument to load, so\n // wait for it before calling callback.\n const waitThenCall = () => {\n if (loadedSoundfonts[soundfont] === true) {\n if (debug) {\n console.log(\n 'other process has finished loading; calling callback'\n );\n }\n if (callback !== undefined) {\n const instrumentObj = instrument.find(soundfont);\n callback(instrumentObj);\n }\n } else {\n if (debug) {\n console.log('waiting for other process load');\n }\n setTimeout(waitThenCall, 100);\n }\n };\n waitThenCall();\n } else {\n // soundfont we have not seen before:\n // set its status to loading and then load it.\n loadedSoundfonts[soundfont] = 'loading';\n if (debug) {\n console.log('waiting for document ready');\n }\n $(document).ready(() => {\n if (debug) {\n console.log('document ready, waiting to load soundfont');\n }\n $(document.body).append(\n $(\n \"
Loading MIDI Instrument: \"\n + 'audio will begin when this message disappears.
'\n )\n );\n MIDI.loadPlugin({\n soundfontUrl: common.urls.soundfontUrl,\n instrument: soundfont,\n onsuccess: postLoadCallback.bind(\n MIDI,\n soundfont,\n callback\n ),\n });\n });\n }\n}\n\n/**\n * MidiPlayer -- an embedded midi player including the ability to create a\n * playback device.\n *\n * @class MidiPlayer\n * @memberOf music21.miditools\n * @property {number} speed - playback speed scaling (1=default).\n * @property {JQuery|undefined} $playDiv - div holding the player,\n */\nexport class MidiPlayer {\n player: MIDI.Player;\n speed: number = 1.0;\n $playDiv: JQuery;\n state: string = ''; // up, down, or empty...\n\n constructor() {\n this.player = new MIDI.Player();\n }\n\n /**\n * @param {jQuery|HTMLElement} [where]\n * @returns {jQuery}\n */\n addPlayer(where) {\n let $where;\n if (where === undefined) {\n where = document.body;\n }\n\n if (!(where instanceof $)) {\n $where = $(where);\n } else {\n $where = where;\n }\n\n /**\n *\n * @type {jQuery}\n */\n const $playDiv = $('
');\n /**\n *\n * @type {jQuery}\n */\n const $controls = $('
');\n /**\n *\n * @type {jQuery}\n */\n const $playPause = $(\n ''\n );\n\n /**\n *\n * @type {jQuery}\n */\n const $stop = $(\n ''\n );\n\n $playPause.on('click', () => this.pausePlayStop());\n $stop.on('click', () => this.stopButton());\n $controls.append($playPause);\n $controls.append($stop);\n $playDiv.append($controls);\n\n /**\n *\n * @type {jQuery}\n */\n const $time = $('
');\n /**\n *\n * @type {jQuery}\n */\n const $timePlayed = $('0:00');\n /**\n *\n * @type {jQuery}\n */\n const $capsule = $(\n ''\n );\n /**\n *\n * @type {jQuery}\n */\n const $timeRemaining = $('-0:00');\n $time.append($timePlayed);\n $time.append($capsule);\n $time.append($timeRemaining);\n $playDiv.append($time);\n\n $where.append($playDiv);\n this.$playDiv = $playDiv;\n return $playDiv;\n }\n\n stopButton() {\n this.pausePlayStop('yes');\n }\n\n /**\n *\n * @returns {string}\n */\n playPng() {\n return common.urls.midiPlayer + '/play.png';\n }\n\n /**\n *\n * @returns {string}\n */\n pausePng() {\n return common.urls.midiPlayer + '/pause.png';\n }\n\n /**\n *\n * @returns {string}\n */\n stopPng() {\n return common.urls.midiPlayer + '/stop.png';\n }\n\n pausePlayStop(stop='no') {\n let d;\n if (this.$playDiv === undefined) {\n d = { src: 'doesnt matter' };\n } else {\n d = this.$playDiv.find('.playPause')[0];\n }\n if (stop === 'yes') {\n this.player.stop();\n d.src = this.playPng();\n } else if (this.player.playing || stop === 'pause') {\n d.src = this.playPng();\n this.player.pause(true);\n } else {\n d.src = this.pausePng();\n this.player.resume().catch(console.error);\n }\n }\n\n base64Load(b64data) {\n const player = this.player;\n player.timeWarp = this.speed;\n\n const m21MidiPlayer = this;\n loadSoundfont('acoustic_grand_piano', () => {\n player.loadFile(\n b64data,\n () => {\n // success\n m21MidiPlayer.fileLoaded();\n },\n undefined, // loading\n e => {\n // failure\n console.log(e);\n }\n );\n });\n }\n\n songFinished() {\n this.pausePlayStop('yes');\n }\n\n fileLoaded() {\n this.updatePlaying();\n }\n\n startAndUpdate() {\n this.player.start();\n this.updatePlaying();\n }\n\n updatePlaying() {\n const player = this.player;\n if (this.$playDiv === undefined) {\n return;\n }\n const $d = this.$playDiv;\n // update the timestamp\n const timePlayed = $d.find('.timePlayed')[0];\n const timeRemaining = $d.find('.timeRemaining')[0];\n const timeCursor = $d.find('.cursor')[0];\n const $capsule = $d.find('.capsule');\n //\n $capsule.on('dragstart', e => {\n player.currentTime = (e.pageX - $capsule.offset().left) / 420 * player.endTime;\n if (player.currentTime < 0) {\n player.currentTime = 0;\n }\n if (player.currentTime > player.endTime) {\n player.currentTime = player.endTime;\n }\n if (this.state === 'down') {\n this.pausePlayStop('pause');\n } else if (this.state === 'up') {\n this.pausePlayStop('play');\n }\n });\n //\n const timeFormatting = n => {\n const minutes = Math.floor(n / 60);\n let seconds = String(Math.floor(n - minutes * 60));\n if (seconds.length === 1) {\n seconds = '0' + seconds;\n }\n return minutes + ':' + seconds;\n };\n\n player.setAnimation(data => {\n const percent = data.now / data.end;\n const now = Math.floor(data.now); // where we are now\n const end = Math.floor(data.end); // end of song\n if (now === end) {\n // go to next song\n this.songFinished();\n }\n // display the information to the user\n timeCursor.style.width = percent * 100 + '%';\n timePlayed.innerHTML = timeFormatting(now);\n timeRemaining.innerHTML = '-' + timeFormatting(end - now);\n });\n }\n}\n\n/**\n * callbacks is an object with three keys:\n *\n * - raw: function (t, a, b,c) to call when any midi event arrives.\n * Default: `function (t, a, b, c) { return new miditools.Event(t, a, b, c); }`\n * - general: function ( miditools.Event() ) to call when an Event object\n * has been created. Default:\n * `[miditools.sendToMIDIjs, miditools.quantizeLastNote]`\n * - sendOutChord: function (note.Note[]) to call\n * when a sufficient time has passed to build a chord from input.\n * Default: empty function.\n *\n * At present, only \"general\" can take an Array of event listening functions,\n * but I hope to change that for sendOutChord also.\n *\n * \"general\" is usually the callback list to play around with.\n *\n * @memberof music21.miditools\n */\nexport const callbacks: CallbackInterface = {\n raw: (t, a, b, c) => new Event(t, a, b, c),\n general: [sendToMIDIjs, quantizeLastNote],\n sendOutChord: arrayOfNotes => {},\n};\n\n// For backwards compatibility -- this used to have a capital b.\nexport const callBacks = callbacks;\n","import * as m21ToXml from './musicxml/m21ToXml';\nimport * as xmlToM21 from './musicxml/xmlToM21';\n\nexport { m21ToXml, xmlToM21 };\n","/**\n * @namespace music21.musicxml.m21ToXml\n */\nimport * as clef from '../clef';\nimport * as common from '../common';\nimport { // eslint-disable-line import/no-cycle\n Stream, Measure, Part, Score,\n} from '../stream';\n\nimport { Music21Exception } from '../exceptions21';\n\n// imports for type checking only\nimport { Music21Object } from '../base';\nimport { GeneralNote, Note } from '../note';\n\nclass MusicXMLExportException extends Music21Exception {\n\n}\n\nfunction typeToMusicXMLType(value) {\n if (value === 'longa') {\n return 'long';\n } else if (value === '2048th') {\n throw new MusicXMLExportException('Cannot convert \"2048th\" duration to MusicXML (too short).');\n } else {\n return value;\n }\n}\n\nfunction normalizeColor(color) {\n const colors = {\n 'aliceblue': '#f0f8ff', 'antiquewhite': '#faebd7', 'aqua': '#00ffff',\n 'aquamarine': '#7fffd4', 'azure': '#f0ffff',\n 'beige': '#f5f5dc', 'bisque': '#ffe4c4', 'black': '#000000',\n 'blanchedalmond': '#ffebcd', 'blue': '#0000ff', 'blueviolet': '#8a2be2',\n 'brown': '#a52a2a', 'burlywood': '#deb887',\n 'cadetblue': '#5f9ea0', 'chartreuse': '#7fff00', 'chocolate': '#d2691e',\n 'coral': '#ff7f50', 'cornflowerblue': '#6495ed', 'cornsilk': '#fff8dc',\n 'crimson': '#dc143c', 'cyan': '#00ffff',\n 'darkblue': '#00008b', 'darkcyan': '#008b8b', 'darkgoldenrod': '#b8860b',\n 'darkgray': '#a9a9a9', 'darkgreen': '#006400', 'darkkhaki': '#bdb76b',\n 'darkmagenta': '#8b008b', 'darkolivegreen': '#556b2f',\n 'darkorange': '#ff8c00', 'darkorchid': '#9932cc', 'darkred': '#8b0000',\n 'darksalmon': '#e9967a', 'darkseagreen': '#8fbc8f', 'darkslateblue': '#483d8b',\n 'darkslategray': '#2f4f4f', 'darkturquoise': '#00ced1',\n 'darkviolet': '#9400d3', 'deeppink': '#ff1493', 'deepskyblue': '#00bfff',\n 'dimgray': '#696969', 'dodgerblue': '#1e90ff',\n 'firebrick': '#b22222', 'floralwhite': '#fffaf0', 'forestgreen': '#228b22',\n 'fuchsia': '#ff00ff',\n 'gainsboro': '#dcdcdc', 'ghostwhite': '#f8f8ff', 'gold': '#ffd700',\n 'goldenrod': '#daa520', 'gray': '#808080', 'green': '#008000',\n 'greenyellow': '#adff2f',\n 'honeydew': '#f0fff0', 'hotpink': '#ff69b4',\n 'indianred ': '#cd5c5c', 'indigo': '#4b0082', 'ivory': '#fffff0',\n 'khaki': '#f0e68c',\n 'lavender': '#e6e6fa', 'lavenderblush': '#fff0f5', 'lawngreen': '#7cfc00',\n 'lemonchiffon': '#fffacd', 'lightblue': '#add8e6', 'lightcoral': '#f08080',\n 'lightcyan': '#e0ffff', 'lightgoldenrodyellow': '#fafad2',\n 'lightgrey': '#d3d3d3', 'lightgreen': '#90ee90', 'lightpink': '#ffb6c1',\n 'lightsalmon': '#ffa07a', 'lightseagreen': '#20b2aa', 'lightskyblue': '#87cefa',\n 'lightslategray': '#778899', 'lightsteelblue': '#b0c4de',\n 'lightyellow': '#ffffe0', 'lime': '#00ff00', 'limegreen': '#32cd32',\n 'linen': '#faf0e6',\n 'magenta': '#ff00ff', 'maroon': '#800000', 'mediumaquamarine': '#66cdaa',\n 'mediumblue': '#0000cd', 'mediumorchid': '#ba55d3', 'mediumpurple': '#9370d8',\n 'mediumseagreen': '#3cb371', 'mediumslateblue': '#7b68ee',\n 'mediumspringgreen': '#00fa9a', 'mediumturquoise': '#48d1cc',\n 'mediumvioletred': '#c71585', 'midnightblue': '#191970', 'mintcream': '#f5fffa',\n 'mistyrose': '#ffe4e1', 'moccasin': '#ffe4b5',\n 'navajowhite': '#ffdead', 'navy': '#000080',\n 'oldlace': '#fdf5e6', 'olive': '#808000', 'olivedrab': '#6b8e23',\n 'orange': '#ffa500', 'orangered': '#ff4500', 'orchid': '#da70d6',\n 'palegoldenrod': '#eee8aa', 'palegreen': '#98fb98', 'paleturquoise': '#afeeee',\n 'palevioletred': '#d87093', 'papayawhip': '#ffefd5', 'peachpuff': '#ffdab9',\n 'peru': '#cd853f', 'pink': '#ffc0cb', 'plum': '#dda0dd', 'powderblue': '#b0e0e6',\n 'purple': '#800080',\n 'rebeccapurple': '#663399', 'red': '#ff0000', 'rosybrown': '#bc8f8f',\n 'royalblue': '#4169e1',\n 'saddlebrown': '#8b4513', 'salmon': '#fa8072', 'sandybrown': '#f4a460',\n 'seagreen': '#2e8b57', 'seashell': '#fff5ee', 'sienna': '#a0522d',\n 'silver': '#c0c0c0', 'skyblue': '#87ceeb', 'slateblue': '#6a5acd',\n 'slategray': '#708090', 'snow': '#fffafa', 'springgreen': '#00ff7f',\n 'steelblue': '#4682b4',\n 'tan': '#d2b48c', 'teal': '#008080', 'thistle': '#d8bfd8', 'tomato': '#ff6347',\n 'turquoise': '#40e0d0',\n 'violet': '#ee82ee',\n 'wheat': '#f5deb3', 'white': '#ffffff', 'whitesmoke': '#f5f5f5',\n 'yellow': '#ffff00', 'yellowgreen': '#9acd32',\n };\n if (color === undefined || color === '') {\n return color;\n } else if (!color.startsWith('#')) {\n return colors[color].toUpperCase();\n } else {\n return color.toUpperCase();\n }\n}\n\n\nconst _classMapping = [\n 'Score', 'Part', 'Measure', 'Voice', // 'Stream',\n 'GeneralNote', // 'Pitch', 'Duration', 'Dynamic', 'DiatonicScale', 'Scale',\n // 'Music21Object',\n];\n\nexport class GeneralObjectExporter {\n generalObj: Music21Object;\n\n constructor(obj: Music21Object) {\n this.generalObj = obj;\n }\n\n parse(obj=undefined) {\n if (obj === undefined) {\n obj = this.generalObj;\n }\n const outObj = this.fromGeneralObj(obj);\n return this.parseWellformedObject(outObj);\n }\n\n parseWellformedObject(sc) {\n const scoreExporter = new ScoreExporter(sc);\n scoreExporter.parse();\n return scoreExporter.asBytes();\n }\n\n fromGeneralObj(obj) {\n const classes = obj.classes;\n let outObj;\n for (const cM of _classMapping) {\n if (classes.includes(cM)) {\n const methName = 'from' + cM;\n outObj = this[methName](obj);\n break;\n }\n }\n if (outObj === undefined) {\n throw new MusicXMLExportException(\n `Cannot translate the object ${obj} to a complete musicXML document; `\n + 'put it in a Stream first!'\n );\n }\n return outObj;\n }\n\n fromScore(sc) {\n const scOut = sc.makeNotation({ inPlace: false });\n return scOut;\n }\n\n fromPart(p) {\n if (p.isFlat) {\n p = p.makeMeasures();\n }\n const s = new Score();\n s.insert(0, p);\n // metadata...;\n return this.fromScore(s);\n }\n\n fromMeasure(m) {\n const mCopy = m.makeNotation();\n if (m.clef === undefined) {\n mCopy.clef = clef.bestClef(mCopy, { recurse: true });\n }\n const p = new Part();\n p.append(mCopy);\n // TODO(msc): metadata;\n return this.fromPart(p);\n }\n\n fromVoice(v) {\n const m = new Measure();\n m.number = 1;\n m.insert(0, v);\n return this.fromMeasure(m);\n }\n\n // TODO(msc): fromStream\n // TODO(msc): fromDuration\n // TODO(msc): fromDynamic\n // TODO(msc): fromScale\n // TODO(msc): fromDiatonicScale\n // TODO(msc): fromMusic21Object\n\n fromGeneralNote(n) {\n const nCopy = n.clone(true);\n // makeTupletBrackets;\n const out = new Measure();\n out.number = 1;\n out.append(nCopy);\n\n return this.fromMeasure(out);\n }\n\n // TODO(msc): fromPitch\n}\n\nconst _musicxmlVersion = '3.0';\n\n/**\n * @memberOf music21.musicxml.m21ToXml\n */\nexport class XMLExporterBase {\n doc: XMLDocument;\n xmlRoot;\n\n constructor() {\n this.doc = document.implementation.createDocument('', '', null);\n this.xmlRoot = undefined;\n }\n\n asBytes({ noCopy=true }={}) {\n let out = this.xmlHeader();\n const oSerializer = new XMLSerializer();\n out += oSerializer.serializeToString(this.xmlRoot);\n return out;\n }\n\n // no indentation :-(\n\n xmlHeader() {\n return `\n \n `;\n }\n\n /**\n * Note: this is not a method in music21p, but it needs access to this.doc in music21j\n */\n _setTagTextFromAttribute(\n m21El,\n xmlEl,\n tag: string,\n attributeName: string=undefined,\n { transform=undefined, forceEmpty=false }={}\n ) {\n if (attributeName === undefined) {\n attributeName = common.hyphenToCamelCase(tag);\n }\n\n let value = m21El[attributeName];\n if (transform !== undefined) {\n value = transform(value);\n }\n if ((value === undefined || value === '') && !forceEmpty) {\n return undefined;\n }\n const subElement = this.subElement(xmlEl, tag);\n if (value !== undefined) {\n subElement.innerHTML = value;\n }\n return subElement;\n }\n\n seta(m21El, xmlEl, tag, options={}) {\n return this._setTagTextFromAttribute(m21El, xmlEl, tag, undefined, options);\n }\n\n _setAttributeFromAttribute(\n m21El,\n xmlEl,\n xmlAttributeName,\n { attributeName=undefined, transform=undefined }={}\n ) {\n if (attributeName === undefined) {\n attributeName = common.hyphenToCamelCase(xmlAttributeName);\n }\n let value = m21El[attributeName];\n if (value === undefined) {\n return;\n }\n if (transform !== undefined) {\n value = transform(value);\n }\n xmlEl.setAttribute(xmlAttributeName, value.toString());\n }\n\n setb(m21El, xmlEl, xmlAttributeName, options={}) {\n return this._setAttributeFromAttribute(m21El, xmlEl, xmlAttributeName, options);\n }\n\n // TODO(msc): _synchronizeIds;\n _synchronizeIds(element, m21Object) {}\n\n addDividerComment(comment='') {\n let commentLength = comment.length;\n if (commentLength > 60) {\n commentLength = 60;\n }\n const spacerLengthLow = Math.floor((60 - commentLength) / 2);\n const spacerLengthHigh = Math.ceil((60 - commentLength) / 2);\n const commentText = '='.repeat(spacerLengthLow) + ' ' + comment + ' ' + '='.repeat(spacerLengthHigh);\n const divider = this.doc.createComment(commentText);\n this.xmlRoot.appendChild(divider);\n }\n\n // TODO(msc): dump\n\n /**\n * Helper method since SubElement does not exist in javascript document.implementation\n */\n subElement(el: HTMLElement, tag: string): HTMLElement {\n const subElement = this.doc.createElement(tag);\n el.appendChild(subElement);\n return subElement;\n }\n\n // TODO(msc): setStyleAttributes\n // TODO(msc): setTextFormatting\n // TODO(msc): setPrintStyleAlign\n // TODO(msc): setPrintStyle\n // TODO(msc): setPrintObject\n setColor(mxObject, m21Object) {\n if (m21Object.color !== undefined) {\n mxObject.setAttribute('color', normalizeColor(m21Object.color));\n } else if (m21Object.style !== undefined && m21Object.style.color !== undefined) {\n mxObject.setAttribute('color', normalizeColor(m21Object.style.color));\n }\n }\n\n // TODO(msc): setFont\n // TODO(msc): setPosition\n // TODO(msc): setEditorial\n setEditorial(mxEl, el) {\n\n }\n\n // TODO(msc): pageLayoutToXmlPrint\n // TODO(msc): pageLayoutToXmlPageLayout\n // TODO(msc): systemLayoutToXmlPrint\n // TODO(msc): systemLayoutToXmlSystemLayout\n // TODO(msc): staffLayoutToXmlStaffLayout\n\n accidentalToMx(a) {\n // TODO(msc): v 3.0 and v3.1 accidentals; microtone;\n let mxName;\n if (a.name === 'double-flat') {\n mxName = 'flat-flat';\n } else {\n mxName = a.name;\n // check other accidentals here.\n }\n const mxAccidental = this.doc.createElement('accidental');\n mxAccidental.innerHTML = mxName;\n // TODO(msc): parentheses, bracket, setPrintStyle\n return mxAccidental;\n }\n\n getRandomId() {\n // hack to get random ids.\n let text = '';\n // noinspection SpellCheckingInspection\n const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n\n for (let i = 0; i < 6; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n\n return text;\n }\n\n}\n\n/**\n * @extends music21.musicxml.m21ToXml.XMLExporterBase\n */\nexport class ScoreExporter extends XMLExporterBase {\n stream: Score;\n xmIdentification = undefined;\n scoreMetadata = undefined;\n spannerBundle = undefined;\n meterStream = undefined;\n scoreLayouts = undefined;\n firstScoreLayout = undefined;\n highestTime = 0.0;\n refStreamOrTimeRange = [0.0, this.highestTime];\n partExporterList = [];\n instrumentList = [];\n midiChannelList = [];\n parts: Part[] = [];\n\n constructor(score) {\n super();\n if (score === undefined) {\n this.stream = new Score();\n } else {\n this.stream = score;\n }\n this.xmlRoot = this.doc.createElement('score-partwise');\n this.xmlRoot.setAttribute('version', _musicxmlVersion);\n }\n\n parse() {\n const s = this.stream;\n if (s.length === 0) {\n return this.emptyObject();\n }\n this.scorePreliminaries();\n this.parsePartlikeScore(); // does not have parseFlatScore...\n this.postPartProcess();\n this.partExporterList = [];\n return this.xmlRoot;\n }\n\n emptyObject() {\n // TODO(msc): do this.\n return this.xmlRoot;\n }\n\n scorePreliminaries() {\n // this.setScoreLayouts();\n // this.setMeterStream();\n this.setPartsAndRefStream();\n // this.textBoxes = ...;\n this.highestTime = 0.0;\n // spannerBundle\n }\n\n setPartsAndRefStream() {\n const s = this.stream;\n const streamOfStreams = s.getElementsByClass('Stream');\n for (const innerStream of streamOfStreams) {\n // innerStream.transferOffsetToElements(); // only needed for appended Parts\n const ht = (innerStream as Stream).highestTime;\n if (ht > this.highestTime) {\n this.highestTime = ht;\n }\n this.refStreamOrTimeRange = [0.0, this.highestTime];\n }\n this.parts = Array.from(streamOfStreams.stream()) as Part[];\n }\n\n // TODO(msc): setMeterStream\n // TODO(msc): setScoreLayouts\n\n parsePartlikeScore() {\n // makeRests\n for (const innerStream of this.parts) {\n const pp = new PartExporter(innerStream, { parent: this });\n // spanner bundle.\n pp.parse();\n this.partExporterList.push(pp);\n }\n }\n\n // TODO(msc): parseFlatScore\n\n postPartProcess() {\n this.setScoreHeader();\n for (let i = 0; i < this.partExporterList.length; i++) {\n const pex = this.partExporterList[i];\n this.addDividerComment('Part ' + i.toString());\n this.xmlRoot.appendChild(pex.xmlRoot);\n }\n }\n\n setScoreHeader() {\n // const s = this.stream;\n // scoreMetadata\n // titles\n // identification\n // setDefaults\n // textBoxes\n this.setPartList();\n }\n\n // TODO(msc): textBoxToXmlCredit\n // TODO(msc): setDefaults\n // TODO(msc): addStyleToXmlDefaults\n // TODO(msc): styleToXmlAppearance\n\n setPartList() {\n // const spannerBundle = this.spannerBundle; // for now, always undefined;\n const mxPartList = this.subElement(this.xmlRoot, 'part-list');\n // staffGroups are non-existent\n for (const pex of this.partExporterList) {\n // const p = pex.stream;\n const mxScorePart = pex.getXmlScorePart();\n mxPartList.appendChild(mxScorePart);\n }\n return mxPartList;\n }\n // TODO(msc): staffGroupToXmlPartGroup;\n // TODO(msc): setIdentification\n // TODO(msc): metadataToMiscellaneous\n // TODO(msc): setEncoding\n // TODO(msc): getSupports\n // TODO(msc): setTitles\n // TODO(msc): contributorToXmlCreator\n}\n\n/**\n * @extends music21.musicxml.m21ToXml.XMLExporterBase\n */\nexport class PartExporter extends XMLExporterBase {\n stream: Part;\n parent: ScoreExporter;\n meterStream: Stream;\n refStreamOrTimeRange;\n midiChannelList;\n instrumentStream;\n firstInstrumentObject;\n lastDivisions: number;\n spannerBundle;\n xmlPartId;\n\n constructor(partObj, { parent=undefined }={}) {\n super();\n this.stream = partObj;\n this.parent = parent;\n this.xmlRoot = this.doc.createElement('part');\n if (parent === undefined) {\n this.meterStream = new Stream();\n this.refStreamOrTimeRange = [0.0, 0.0];\n this.midiChannelList = [];\n } else {\n this.meterStream = parent.meterStream;\n this.refStreamOrTimeRange = parent.refStreamOrTimeRange;\n this.midiChannelList = parent.midiChannelList;\n }\n this.instrumentStream = undefined;\n this.firstInstrumentObject = undefined;\n\n this.lastDivisions = undefined;\n this.spannerBundle = partObj.spannerBundle;\n this.xmlPartId = this.getRandomId(); // hacky\n }\n\n parse() {\n // this.instrumentSetup();\n this.xmlRoot.setAttribute('id', this.xmlPartId);\n const measureStream = this.stream.getElementsByClass('Stream');\n // fixupNotation;\n // setIdLocals on spannerBundle;\n for (const m of measureStream) {\n this.addDividerComment('Measure ' + (m as Measure).number.toString());\n const measureExporter = new MeasureExporter(m, { parent: this });\n measureExporter.spannerBundle = this.spannerBundle;\n const mxMeasure = measureExporter.parse();\n this.xmlRoot.appendChild(mxMeasure);\n }\n return this.xmlRoot;\n }\n\n // TODO(msc): instrumentSetup\n // TODO(msc): fixupNotationFlat -- might be redundant\n // TODO(msc): fixupNotationMeasured\n\n getXmlScorePart() {\n // const part = this.stream;\n const mxScorePart = this.doc.createElement('score-part');\n mxScorePart.setAttribute('id', this.xmlPartId);\n // partName\n // partAbbreviation\n // instrument\n return mxScorePart;\n }\n // TODO(msc): instrumentToXmlScoreInstrument\n // TODO(msc): instrumentToXmlMidiInstrument\n}\n\nconst _classesToMeasureMethods = [\n ['Note', 'noteToXml'],\n // NoChord\n // ChordWithFretBoard\n // ChordSymbol\n ['Chord', 'chordToXml'],\n ['Rest', 'restToXml'],\n // Dynamic, Segno, Coda, MetronomeMark, MetricModulation,\n // TextExpression, RepeatExpression, RehearsalMark\n];\n\nconst _wrapAttributeMethodClasses = [\n ['Clef', 'clefToXml'],\n ['KeySignature', 'keySignatureToXml'],\n ['TimeSignature', 'timeSignatureToXml'],\n];\n\nconst _ignoreOnParseClasses = ['LayoutBase', 'Barline'];\n\nconst divisionsPerQuarter = 32 * 3 * 3 * 5 * 7; // TODO(msc): create defaults.js\n\n/**\n * @extends music21.musicxml.m21ToXml.XMLExporterBase\n */\nexport class MeasureExporter extends XMLExporterBase {\n stream: Measure;\n parent: PartExporter;\n currentDivisions: number = divisionsPerQuarter;\n transpositionInterval = undefined;\n mxTranspose = undefined;\n measureOffsetStart = 0.0;\n offsetInMeasure = 0.0;\n currentVoiceId = undefined;\n\n rbSpanners = [];\n spannerBundle;\n objectSpannerBundle;\n\n\n constructor(measureObj, { parent=undefined }={}) {\n super();\n this.stream = measureObj;\n this.parent = parent;\n this.xmlRoot = this.doc.createElement('measure');\n this.spannerBundle = parent.spannerBundle;\n\n this.objectSpannerBundle = this.spannerBundle;\n }\n\n parse() {\n // TODO(msc): setTranspose\n // TODO(msc): setRbSpanners\n this.setMxAttributes();\n // TODO(msc): setMxPrint\n this.setMxAttributesObjectForStartOfMeasure();\n // TODO(msc): setLeftBarline\n\n // THE BIG ONE\n this.mainElementsParse();\n\n // TODO(msc): setRightBarline\n return this.xmlRoot;\n }\n\n mainElementsParse() {\n const m = this.stream;\n if (!m.hasVoices()) {\n this.parseFlatElements(m, { backupAfterwards: false });\n return;\n }\n // TODO(msc): parse elements outside of Voices...needs getElementsNotOfClass\n const allVoices = Array.from(m.voices);\n for (const [i, v] of allVoices.entries()) {\n let backupAfterwards = true;\n if (i === allVoices.length - 1) {\n backupAfterwards = false;\n }\n this.parseFlatElements(v, { backupAfterwards });\n }\n }\n\n parseFlatElements(m, { backupAfterwards=false }={}) {\n const root = this.xmlRoot;\n const divisions = this.currentDivisions;\n this.offsetInMeasure = 0.0;\n let voiceId;\n if (m.classes.includes('Voice')) {\n voiceId = m.id;\n if (voiceId === undefined) {\n voiceId = this.getRandomId();\n }\n }\n this.currentVoiceId = voiceId;\n\n for (const el of m) {\n this.parseOneElement(el);\n }\n\n if (backupAfterwards) {\n const amountToBackup = Math.round(divisions * this.offsetInMeasure);\n if (amountToBackup > 0) {\n const mxBackup = this.doc.createElement('backup');\n const mxDuration = this.subElement(mxBackup, 'duration');\n mxDuration.innerHTML = amountToBackup.toString();\n root.appendChild(mxBackup);\n }\n }\n this.currentVoiceId = undefined;\n }\n\n parseOneElement(obj) {\n // const root = this.xmlRoot;\n // spanners...\n const classes = obj.classes;\n if (classes.includes('GeneralNote')) {\n this.offsetInMeasure += obj.duration.quarterLength;\n }\n // odd durations...\n\n let parsedObject = false;\n\n for (const [className, methName] of _classesToMeasureMethods) {\n if (classes.includes(className)) {\n this[methName](obj);\n parsedObject = true;\n break;\n }\n }\n\n for (const [className, methName] of _wrapAttributeMethodClasses) {\n if (classes.includes(className)) {\n const meth = o => this[methName](o);\n this.wrapObjectInAttributes(obj, meth);\n parsedObject = true;\n break;\n }\n }\n\n // deal with skipped objects.\n if (!parsedObject && !_ignoreOnParseClasses.includes(obj.classes[0])) {\n console.warn('skipped object of class ' + obj.classes[0]);\n }\n\n // postSpanners.\n }\n\n // TODO(msc): prePostObjectSpanners\n // TODO(msc): _spannerStartParameters\n // TODO(msc): _spannerEndParameters\n // TODO(msc): objectAttachedSpanners\n\n /**\n *\n * @param {music21.note.GeneralNote} n\n * @param noteIndexInChord\n * @param chordParent\n * @returns {Node}\n */\n noteToXml(n: GeneralNote, { noteIndexInChord=0, chordParent=undefined }={}) {\n const addChordTag = (noteIndexInChord !== 0);\n let chordOrN;\n if (chordParent === undefined) {\n chordOrN = n;\n } else {\n chordOrN = chordParent;\n }\n const mxNote = this.doc.createElement('note');\n // setPrintStyle\n // volumeInformation\n this.setColor(mxNote, n);\n // _synchronizeId;\n const d = chordOrN.duration;\n // grace;\n // setColor chord\n // setPrintObject\n // hideObject\n // articulation pizz:\n if (addChordTag) {\n this.subElement(mxNote, 'chord');\n }\n if (n.isNote) {\n const mxPitch = this.pitchToXml(( n).pitch);\n mxNote.appendChild(mxPitch);\n } else {\n this.subElement(mxNote, 'rest');\n }\n if (d.isGrace !== true) {\n const mxDuration = this.durationXml(d);\n mxNote.appendChild(mxDuration);\n }\n if (n.tie !== undefined) {\n const mxTieList = this.tieToXmlTie(n.tie);\n for (const t of mxTieList) {\n mxNote.appendChild(t);\n }\n }\n // instrument\n this.setEditorial(mxNote, n);\n if (this.currentVoiceId !== undefined) {\n const mxVoice = this.subElement(mxNote, 'voice');\n let vId;\n if (typeof vId === 'number') {\n vId = this.currentVoiceId + 1;\n } else {\n // not a number;\n vId = this.currentVoiceId;\n }\n mxVoice.innerHTML = vId.toString();\n }\n\n const mxType = this.subElement(mxNote, 'type');\n mxType.innerHTML = typeToMusicXMLType(d.type);\n // set styleAttributes\n // set noteSize\n for (let _ = 0; _ < d.dots; _++) {\n this.subElement(mxNote, 'dot');\n }\n\n // components.\n if (n instanceof Note\n && n.pitch.accidental !== undefined\n && n.pitch.accidental.displayStatus !== false) {\n const mxAccidental = this.accidentalToMx(n.pitch.accidental);\n mxNote.appendChild(mxAccidental);\n }\n if (d.tuplets.length > 0) {\n // todo--nested tuplets;\n const mxTimeModification = this.tupletToTimeModification(d.tuplets[0]);\n mxNote.appendChild(mxTimeModification);\n }\n\n let stemDirection;\n if (!addChordTag\n && ![undefined, 'unspecified'].includes(chordOrN.stemDirection)) {\n stemDirection = chordOrN.stemDirection;\n } else if (\n chordOrN !== n\n && n instanceof Note\n && ![undefined, 'unspecified'].includes(n.stemDirection)) {\n stemDirection = n.stemDirection;\n }\n if (stemDirection !== undefined) {\n const mxStem = this.subElement(mxNote, 'stem');\n let sdText = stemDirection;\n if (sdText === 'noStem') {\n sdText = 'none';\n }\n mxStem.innerHTML = sdText;\n // TODO: stemStyle\n }\n\n // dealWithNotehead\n // beams\n // staff\n // notations\n // tuplet display\n // notations\n if (!addChordTag) {\n for (const lyricObj of chordOrN.lyrics) {\n if (lyricObj.text === undefined) {\n continue;\n }\n const mxLyric = this.lyricToXml(lyricObj);\n mxNote.appendChild(mxLyric);\n }\n }\n\n this.xmlRoot.appendChild(mxNote);\n return mxNote;\n }\n\n restToXml(r) {\n return this.noteToXml(r);\n // full measure\n // display-step, display-octave, etc.\n }\n\n chordToXml(c) {\n const mxNoteList = [];\n for (const [i, n] of Array.from(c).entries()) {\n const mxNote = this.noteToXml(\n n,\n {\n noteIndexInChord: i,\n chordParent: c,\n }\n );\n mxNoteList.push(mxNote);\n }\n return mxNoteList;\n }\n\n durationXml(dur) {\n const mxDuration = this.doc.createElement('duration');\n mxDuration.innerHTML = Math.round(this.currentDivisions * dur.quarterLength).toString();\n return mxDuration;\n }\n\n pitchToXml(p) {\n const mxPitch = this.doc.createElement('pitch');\n this._setTagTextFromAttribute(p, mxPitch, 'step');\n if (p.accidental !== undefined) {\n const mxAlter = this.subElement(mxPitch, 'alter');\n mxAlter.innerHTML = common.numToIntOrFloat(p.accidental.alter).toString();\n }\n this._setTagTextFromAttribute(p, mxPitch, 'octave', 'implicitOctave');\n return mxPitch;\n }\n // TODO(msc): fretNoteToXml\n // TODO(msc): fretBoardToXml\n // TODO(msc): chordWithFretBoardToXml\n\n tupletToTimeModification(tup) {\n const mxTimeModification = this.doc.createElement('time-modification');\n this._setTagTextFromAttribute(tup, mxTimeModification, 'actual-notes', 'numberNotesActual');\n this._setTagTextFromAttribute(tup, mxTimeModification, 'normal-notes', 'numberNotesNormal');\n if (tup.durationNormal !== undefined) {\n const mxNormalType = this.subElement(mxTimeModification, 'normal-type');\n mxNormalType.innerHTML = typeToMusicXMLType(tup.durationNormal.type);\n if (tup.durationNormal.dots > 0) {\n for (let i = 0; i < tup.durationNormal.dots; i++) {\n this.subElement(mxTimeModification, 'normal-dot');\n }\n }\n }\n return mxTimeModification;\n }\n\n // TODO(msc): dealWithNotehead\n // TODO(msc): noteheadToXml\n // TODO(msc): noteToNotations\n\n tieToXmlTie(t) {\n const mxTieList = [];\n let musicxmlTieType = t.type;\n if (t.type === 'continue') {\n musicxmlTieType = 'stop';\n }\n const mxTie = this.doc.createElement('tie');\n mxTie.setAttribute('type', musicxmlTieType);\n mxTieList.push(mxTie);\n\n if (t.type === 'continue') {\n const mxTie = this.doc.createElement('tie');\n mxTie.setAttribute('type', 'start');\n mxTieList.push(mxTie);\n }\n return mxTieList;\n }\n\n // TODO(msc): tieToXmlTied -- needs notations\n // TODO(msc): tupletToXmlTuplet\n // TODO(msc): expressionToXml\n // TODO(msc): articulationToXmlArticulation\n // TODO(msc): setLineStyle\n // TODO(msc): articulationToXmlTechnical\n // TODO(msc): setHarmonic\n // TODO(msc): noChordToXml\n // TODO(msc): chordSymbolToXml\n // TODO(msc): setOffsetOptional\n // TODO(msc): placeInDirection\n // TODO(msc): dynamicToXml\n // TODO(msc): segnoToXml\n // TODO(msc): codaToXml\n // TODO(msc): tempoIndicationToXml\n // TODO(msc): rehearsalMarkToXml\n // TODO(msc): textExpressionToXml\n\n wrapObjectInAttributes(objectToWrap, methodToMx) {\n if (this.offsetInMeasure === 0.0) {\n return undefined;\n }\n\n const mxAttributes = this.doc.createElement('attributes');\n const mxObj = methodToMx(objectToWrap);\n mxAttributes.appendChild(mxObj);\n this.xmlRoot.appendChild(mxAttributes);\n return mxAttributes;\n }\n\n lyricToXml(l) {\n const mxLyric = this.doc.createElement('lyric');\n this._setTagTextFromAttribute(l, mxLyric, 'syllabic');\n this._setTagTextFromAttribute(l, mxLyric, 'text', 'text', { forceEmpty: true });\n if (l.identifier !== undefined) {\n mxLyric.setAttribute('name', l.identifier.toString());\n }\n\n if (l.number !== undefined) {\n mxLyric.setAttribute('number', l.number.toString());\n } else if (l.identifier !== undefined) {\n mxLyric.setAttribute('number', l.identifier.toString());\n }\n // setStyleAttributes\n // setPrintObject\n // setColor\n // setPosition\n return mxLyric;\n }\n // TODO(msc): beamsToXml\n // TODO(msc): beamToXml\n // TODO(msc): setRightBarline\n // TODO(msc): setLeftBarline\n // TODO(msc): setBarline\n // TODO(msc): barlineToXml\n // TODO(msc): repeatToXml\n\n setMxAttributesObjectForStartOfMeasure() {\n const m = this.stream;\n const mxAttributes = this.doc.createElement('attributes');\n let appendToRoot = false;\n this.currentDivisions = divisionsPerQuarter;\n if (this.parent === undefined || this.currentDivisions !== this.parent.lastDivisions) {\n const mxDivisions = this.subElement(mxAttributes, 'divisions');\n mxDivisions.innerHTML = this.currentDivisions.toString();\n this.parent.lastDivisions = this.currentDivisions;\n appendToRoot = true;\n }\n if (m.classes.includes('Measure')) {\n if (m._keySignature !== undefined) {\n mxAttributes.appendChild(this.keySignatureToXml(m._keySignature));\n appendToRoot = true;\n }\n if (m._timeSignature !== undefined) {\n mxAttributes.appendChild(this.timeSignatureToXml(m._timeSignature));\n appendToRoot = true;\n }\n // todo SenzaMisura...\n if (m._clef !== undefined) {\n mxAttributes.appendChild(this.clefToXml(m._clef));\n appendToRoot = true;\n }\n }\n\n // staffLayout\n // transpositionInterval\n // measureStyle\n if (appendToRoot) {\n this.xmlRoot.appendChild(mxAttributes);\n }\n return mxAttributes;\n }\n // TODO(msc): measureStyle\n // TODO(msc): staffLayoutToXmlStaffDetails\n\n timeSignatureToXml(ts) {\n const mxTime = this.doc.createElement('time');\n // synchronizeIds\n // senzaMisura\n // summed denominators, compound etc.\n const mxBeats = this.subElement(mxTime, 'beats');\n mxBeats.innerHTML = ts.numerator.toString();\n const mxBeatType = this.subElement(mxTime, 'beat-type');\n mxBeatType.innerHTML = ts.denominator.toString();\n // symbolizeDenominator\n // separator\n // style\n return mxTime;\n }\n\n keySignatureToXml(keyOrKeySignature) {\n const mxKey = this.doc.createElement('key');\n // synchronizeIds\n // number\n // printStyle, print-object\n this.seta(keyOrKeySignature, mxKey, 'fifths', 'sharps');\n if (keyOrKeySignature.mode !== undefined) {\n this.seta(keyOrKeySignature, mxKey, 'mode');\n }\n // non-traditional\n // altered pitches\n return mxKey;\n }\n\n clefToXml(clefObj) {\n const mxClef = this.doc.createElement('clef');\n // print-style\n const sign = clefObj.sign || 'G';\n const mxSign = this.subElement(mxClef, 'sign');\n mxSign.innerHTML = sign;\n this.seta(clefObj, mxClef, 'line');\n if (clefObj.octaveChange !== undefined && clefObj.octaveChange !== 0) {\n this.seta(clefObj, mxClef, 'clef-octave-change', 'octaveChange');\n }\n return mxClef;\n }\n\n // intervalToXmlTranspose\n // setMxPrint\n // staffLayoutToXmlPrint\n setMxAttributes() {\n const m = this.stream;\n this.xmlRoot.setAttribute('number', m.measureNumberWithSuffix());\n // layoutWidth\n }\n\n // setRbSpanners\n // transpose\n}\n","import * as $ from 'jquery';\n\nimport { hyphenToCamelCase } from '../common';\nimport * as chord from '../chord';\nimport * as clef from '../clef';\nimport * as duration from '../duration';\nimport * as key from '../key';\nimport * as meter from '../meter';\nimport * as note from '../note';\nimport * as pitch from '../pitch';\nimport * as stream from '../stream';\nimport * as tie from '../tie';\n\n// imports just for typing:\nimport { Music21Object } from '../base';\nimport {base} from '../../music21_modules';\n\nconst DEFAULTS = {\n divisionsPerQuarter: 32 * 3 * 3 * 5 * 7,\n};\n\nfunction seta(\n m21El,\n xmlEl,\n tag: string,\n attributeName=undefined,\n transform=undefined\n) {\n const $matchEl = $(xmlEl).children(tag);\n if (!$matchEl) {\n return;\n }\n let value = $matchEl\n .contents()\n .eq(0)\n .text();\n if (value === undefined || value === '') {\n return;\n }\n if (transform !== undefined) {\n value = transform(value);\n }\n if (attributeName === undefined) {\n attributeName = hyphenToCamelCase(tag);\n }\n m21El[attributeName] = value;\n}\n\nexport class ScoreParser {\n xmlText;\n xmlUrl;\n $xmlRoot;\n stream: stream.Score;\n definesExplicitSystemBreaks: boolean = false;\n definesExplicitPageBreaks: boolean = false;\n\n mxScorePartDict = {};\n m21PartObjectsById = {};\n partGroupList = [];\n parts = [];\n\n musicXmlVersion: string = '1.0';\n\n constructor() {\n this.stream = new stream.Score();\n }\n\n scoreFromUrl(url) {\n this.xmlUrl = url;\n // noinspection JSUnusedLocalSymbols\n return $.get(url, {}, (xmlDoc, textStatus) => this.scoreFromDOMTree(xmlDoc));\n }\n\n scoreFromText(xmlText) {\n this.xmlText = xmlText;\n // Not sure why this is not being found in jQuery\n // noinspection JSUnresolvedFunction\n const xmlDoc = $.parseXML(xmlText);\n return this.scoreFromDOMTree(xmlDoc);\n }\n\n scoreFromDOMTree(xmlDoc) {\n this.$xmlRoot = $($(xmlDoc).children('score-partwise'));\n this.xmlRootToScore(this.$xmlRoot, this.stream);\n return this.stream;\n }\n\n xmlRootToScore($mxScore, inputM21) {\n let s = inputM21;\n if (inputM21 === undefined) {\n s = new stream.Score();\n }\n // version\n // defaults\n // credit\n this.parsePartList($mxScore);\n for (const p of $mxScore.children('part')) {\n const $p = $(p);\n const partId = $p.attr('id');\n // if (partId === undefined) {\n // partId = //something\n // }\n const $mxScorePart = this.mxScorePartDict[partId];\n const part = this.xmlPartToPart($p, $mxScorePart);\n if (part !== undefined) {\n // partStreams are undefined\n s.insert(0.0, part);\n this.m21PartObjectsById[partId] = part;\n this.parts.push(part);\n }\n }\n // partGroups;\n // spanners;\n // definesExplicitSystemBreaks, etc.\n // sort\n return s;\n }\n\n xmlPartToPart($mxPart, $mxScorePart) {\n const parser = new PartParser($mxPart, $mxScorePart, this);\n parser.parse();\n // handle partStreams\n return parser.stream;\n }\n\n parsePartList($mxScore) {\n const mxPartList = $mxScore.children('part-list');\n if (!mxPartList) {\n return;\n }\n // const openPartGroups = [];\n for (const partListElement of mxPartList) {\n const $partListElement = $(partListElement);\n const partId = $partListElement.attr('id');\n this.mxScorePartDict[partId] = $partListElement;\n }\n // deal with part-groups\n }\n}\n\n/**\n * @property {MeasureParser|undefined} lastMeasureParser\n * @property {music21.meter.TimeSignature|undefined} lastTimeSignature\n * @property {jQuery|undefined} $activeAttributes\n */\nexport class PartParser {\n parent: ScoreParser;\n $mxPart;\n $mxScorePart;\n partId: string;\n stream: stream.Part;\n atSoundingPitch = true;\n staffReferenceList = [];\n\n lastTimeSignature = undefined;\n lastMeasureWasShort = false;\n lastMeasureOffset = 0.0;\n lastClefs;\n activeTuplets = [undefined, undefined, undefined, undefined, undefined, undefined, undefined];\n maxStaves = 1;\n lastMeasureNumber = 0;\n lastNumberSuffix = undefined;\n\n multiMeasureRestsToCapture = 0;\n activeMultimeasureRestSpanner = undefined;\n\n activeInstrument = undefined;\n firstMeasureParsed = false;\n $activeAttributes = undefined;\n lastDivisions = DEFAULTS.divisionsPerQuarter;\n\n appendToScoreAfterParse = true;\n lastMeasureParser = undefined;\n\n constructor($mxPart, $mxScorePart, parent=undefined) {\n this.parent = parent;\n this.$mxPart = $mxPart;\n this.$mxScorePart = $mxScorePart;\n // ignore parent for now\n if ($mxPart !== undefined) {\n this.partId = $mxPart.attr('id');\n // ignore empty partId for now\n }\n // TODO(msc): spannerBundles\n this.stream = new stream.Part();\n this.lastClefs = {\n 0: new clef.TrebleClef(),\n };\n }\n\n parse() {\n this.parseXmlScorePart();\n this.parseMeasures();\n // atSoundingPitch;\n // spannerBundles\n // partStaves;\n this.stream.clef = this.lastClefs[0];\n }\n\n parseXmlScorePart() {\n const part = this.stream;\n const $mxScorePart = this.$mxScorePart;\n\n seta(part, $mxScorePart, 'part-name'); // todo -- clean string\n // remainder of part names\n // instruments\n }\n\n parseMeasures() {\n for (const mxMeasure of this.$mxPart.children('measure')) {\n const $mxMeasure = $(mxMeasure);\n this.xmlMeasureToMeasure($mxMeasure);\n }\n if (this.lastMeasureParser !== undefined) {\n this.lastMeasureParser.parent = undefined; // gc.\n }\n }\n\n xmlMeasureToMeasure($mxMeasure) {\n const measureParser = new MeasureParser($mxMeasure, this);\n measureParser.parse();\n if (this.lastMeasureParser !== undefined) {\n this.lastMeasureParser.parent = undefined; // gc.\n }\n this.lastMeasureParser = measureParser;\n // max staves\n // transposition\n this.firstMeasureParsed = true;\n // staffReferenceList\n\n const m = measureParser.stream;\n this.setLastMeasureInfo(m);\n // fullMeasureRests\n\n // TODO: offsets!!!\n // this.stream.insert(this.lastMeasureOffset, m);\n this.stream.append( m);\n\n this.adjustTimeAttributesFromMeasure(m);\n }\n\n setLastMeasureInfo(m) {\n if (m.number !== this.lastMeasureNumber) {\n this.lastMeasureNumber = m.number;\n this.lastNumberSuffix = m.numberSuffix;\n }\n\n if (m.timeSignature !== undefined) {\n this.lastTimeSignature = m.timeSignature;\n } else if (this.lastTimeSignature === undefined) {\n this.lastTimeSignature = new meter.TimeSignature('4/4');\n }\n }\n\n adjustTimeAttributesFromMeasure(m) {\n const mHighestTime = m.highestTime;\n // ignore incomplete measures.\n const mOffsetShift = mHighestTime;\n this.lastMeasureOffset += mOffsetShift;\n }\n}\n\nexport class MeasureParser {\n $mxMeasure;\n parent: PartParser;\n $mxMeasureElements = [];\n stream: stream.Measure;\n\n divisions = undefined;\n transposition = undefined;\n // spannerBundles\n staffReference = {};\n // activeTuplets\n useVoices = false;\n voicesById = {};\n voiceIndices;\n staves = 1;\n $activeAttributes = undefined;\n attributesAreInternal = true;\n measureNumber: number = undefined;\n numberSuffix: string = undefined;\n staffLayoutObjects = [];\n\n $mxNoteList = [];\n $mxLyricList = [];\n nLast = undefined;\n chordVoice = undefined;\n fullMeasureRest = false;\n restAndNoteCount = {\n rest: 0,\n note: 0,\n };\n\n lastClefs = {\n 0: undefined,\n };\n\n parseIndex = 0;\n offsetMeasureNote = 0.0;\n\n // class attributes in m21p\n attributeTagsToMethods = {\n time: 'handleTimeSignature',\n clef: 'handleClef',\n key: 'handleKeySignature',\n // 'staff-details': 'handleStaffDetails',\n // 'measure-style': 'handleMeasureStyle',\n };\n\n musicDataMethods = {\n note: 'xmlToNote',\n // 'backup': 'xmlBackup',\n // 'forward': 'xmlForward',\n // 'direction': 'xmlDirection',\n attributes: 'parseAttributesTag',\n // 'harmony': 'xmlHarmony',\n // 'figured-bass': undefined,\n // 'sound': undefined,\n // 'barline': 'xmlBarline',\n // 'grouping': undefined,\n // 'link': undefined,\n // 'bookmark': undefined,\n\n // Note: is handled separately...\n };\n\n /**\n *\n * @param {jQuery} $mxMeasure\n * @param {PartParser} [parent]\n * @property {music21.note.GeneralNote|undefined} nLast\n * @property {jQuery|undefined} $activeAttributes\n */\n constructor($mxMeasure, parent: PartParser = undefined) {\n this.$mxMeasure = $mxMeasure;\n this.parent = parent;\n this.stream = new stream.Measure();\n\n this.voiceIndices = new Set();\n this.staves = 1;\n this.$activeAttributes = undefined;\n this.attributesAreInternal = true;\n\n if (parent !== undefined) {\n this.divisions = parent.lastDivisions;\n } else {\n this.divisions = DEFAULTS.divisionsPerQuarter;\n }\n\n }\n\n parse() {\n // mxPrint\n this.parseMeasureAttributes();\n // updateVoiceInformation;\n\n const children = this.$mxMeasure.children();\n this.$mxMeasureElements = [];\n for (const c of children) {\n const $c = $(c);\n this.$mxMeasureElements.push($c);\n }\n\n let i = 0;\n for (const $mxObj of this.$mxMeasureElements) {\n const tag = $mxObj[0].tagName;\n this.parseIndex = i;\n const methName = this.musicDataMethods[tag];\n if (methName !== undefined) {\n this[methName]($mxObj);\n }\n i += 1;\n }\n // useVoices\n // fullMeasureRest\n }\n\n insertInMeasureOrVoice($mxObj, el) {\n // TODO: offsets!\n // this.stream.insert(this.offsetMeasureNote, el);\n this.stream.append(el);\n }\n\n xmlToNote($mxNote) {\n let nextNoteIsChord = false;\n const $mxObjNext = this.$mxMeasureElements[this.parseIndex + 1];\n if ($mxObjNext !== undefined) {\n if (\n $mxObjNext[0].tagName === 'note'\n && $mxObjNext.children('chord').length > 0\n ) {\n nextNoteIsChord = true;\n }\n }\n let isChord = false;\n let isRest = false;\n\n let offsetIncrement = 0.0;\n if ($mxNote.children('rest').length > 0) {\n isRest = true;\n }\n if ($mxNote.children('chord').length > 0) {\n isChord = true;\n }\n if (nextNoteIsChord) {\n isChord = true;\n }\n\n let n;\n\n if (isChord) {\n this.$mxNoteList.push($mxNote);\n this.$mxLyricList.push(...$mxNote.children('lyric'));\n } else if (!isChord && !isRest) {\n // normal note\n this.restAndNoteCount.note += 1;\n n = this.xmlToSimpleNote($mxNote);\n } else {\n this.restAndNoteCount.rest += 1;\n n = this.xmlToRest($mxNote);\n }\n\n if (!isChord) {\n this.updateLyricsFromList(n, $mxNote.children('lyric'));\n // add to staffReference\n this.insertInMeasureOrVoice($mxNote, n);\n offsetIncrement = n.duration.quarterLength;\n this.nLast = n;\n }\n\n if (this.$mxNoteList.length && !nextNoteIsChord) {\n const c = this.xmlToChord(this.$mxNoteList);\n this.updateLyricsFromList(c, this.$mxLyricList);\n // addToStaffRest;\n\n // voices;\n this.insertInMeasureOrVoice($mxNote, c);\n\n this.$mxNoteList = [];\n this.$mxLyricList = [];\n offsetIncrement = c.duration.quarterLength;\n this.nLast = c;\n }\n\n this.offsetMeasureNote += offsetIncrement;\n }\n\n xmlToChord($mxNoteList) {\n const notes = [];\n for (const $mxNote of $mxNoteList) {\n const freeSpanners = false;\n notes.push(this.xmlToSimpleNote($mxNote, freeSpanners));\n }\n const c = new chord.Chord(notes);\n // move beams from first note;\n // move articulations;\n // move expressions;\n // move spanners;\n\n return c;\n }\n\n xmlToSimpleNote($mxNote, freeSpanners=true) {\n const n = new note.Note();\n this.xmlToPitch($mxNote, n.pitch);\n // beams;\n // stems;\n // noteheads\n return this.xmlNoteToGeneralNoteHelper(n, $mxNote, freeSpanners);\n }\n\n // xmlToBeam\n // xmlToBeams\n // xmlNotehead\n\n xmlToPitch($mxNote, inputM21) {\n let p = inputM21;\n if (inputM21 === undefined) {\n p = new pitch.Pitch();\n }\n\n let $mxPitch;\n if ($mxNote[0].tagName === 'pitch') {\n $mxPitch = $mxNote;\n } else {\n $mxPitch = $($mxNote.children('pitch')[0]);\n if ($mxPitch.length === 0) {\n // whoops!\n return p;\n }\n }\n\n seta(p, $mxPitch, 'step');\n seta(p, $mxPitch, 'octave', undefined, parseInt);\n const $mxAlter = $mxPitch.children('alter');\n let accAlter;\n if ($mxAlter.length) {\n accAlter = parseFloat($mxAlter.text().trim());\n }\n\n const $mxAccidental = $mxNote.children('accidental');\n // dropping support for musescore 0.9 errors...\n if ($mxAccidental.length) {\n const accObj = this.xmlToAccidental($mxAccidental);\n p.accidental = accObj;\n p.accidental.displayStatus = true;\n // independent accidental from alter\n } else if (accAlter !== undefined && !Number.isNaN(Number(accAlter))) {\n p.accidental = new pitch.Accidental(accAlter);\n p.accidental.displayStatus = false;\n }\n return p;\n }\n\n xmlToAccidental($mxAccidental) {\n const acc = new pitch.Accidental(0);\n // to-do m21/musicxml accidental name differences;\n let name = $($mxAccidental[0])\n .text()\n .trim()\n .toLowerCase();\n if (name === 'flat-flat') {\n name = 'double-flat';\n }\n\n acc.set(name);\n\n // set print style\n // parentheses\n // bracket\n // editorial\n return acc;\n }\n\n xmlToRest($mxRest) {\n const r = new note.Rest();\n // full measure rest\n // apply multi-measure rest\n // display-step, octave, etc.\n return this.xmlNoteToGeneralNoteHelper(r, $mxRest);\n }\n\n // noinspection JSUnusedLocalSymbols\n xmlNoteToGeneralNoteHelper(n, $mxNote, freeSpanners=true) {\n // spanners\n // setPrintStyle\n // print-object\n // dynamics\n // pizzicato\n // grace\n this.xmlToDuration($mxNote, n.duration);\n // type styles\n // color\n // position\n if ($mxNote.children('tie').length > 0) {\n n.tie = this.xmlToTie($mxNote);\n }\n // grace\n // notations\n // editorial\n return n;\n }\n\n xmlToDuration($mxNote, inputM21) {\n let d = inputM21;\n if (inputM21 === undefined) {\n d = new duration.Duration();\n }\n const divisions = this.divisions;\n const mxDuration = $mxNote.children('duration')[0];\n let qLen = 0.0;\n\n if (mxDuration) {\n const noteDivisions = parseFloat(\n $(mxDuration)\n .text()\n .trim()\n );\n qLen = noteDivisions / divisions;\n }\n\n const mxType = $mxNote.children('type')[0];\n if (mxType) {\n // long vs longa todo\n const durationType = $(mxType)\n .text()\n .trim();\n const numDots = $mxNote.children('dot').length;\n // tuplets!!!! big to-do!\n d.type = durationType;\n d.dots = numDots;\n } else {\n d.quarterLength = qLen;\n }\n\n return d;\n }\n\n // xmlGraceToGrace\n // xmlNotations\n // xmlTechnicalToArticulation\n // setHarmonic\n // handleFingering\n // xmlToArticulation\n // xmlOrnamentToExpression\n // xmlDirectionTypeToSpanners\n // xmlNotationsToSpanners\n // xmlToTremolo\n // xmlOneSpanner\n\n /**\n *\n * @param {jQuery} $mxNote\n * @returns {music21.tie.Tie}\n */\n xmlToTie($mxNote) {\n const t = new tie.Tie();\n const allTies = $mxNote.children('tie');\n if (allTies.length > 1) {\n t.type = 'continue';\n } else {\n const $t0 = $(allTies[0]);\n t.type = $t0.attr('type');\n }\n // style\n return t;\n }\n\n // xmlToTuplets\n updateLyricsFromList(n, lyricList) {\n let currentLyricNumber = 1;\n for (const mxLyric of lyricList) {\n const lyricObj = this.xmlToLyric($(mxLyric));\n if (lyricObj === undefined) {\n continue;\n }\n if (lyricObj.number === 0) {\n lyricObj.number = currentLyricNumber;\n }\n n.lyrics.push(lyricObj);\n currentLyricNumber += 1;\n }\n }\n\n /**\n *\n * @param {jQuery} $mxLyric\n * @param {music21.note.Lyric} [inputM21]\n * @returns {*|music21.note.Lyric|undefined}\n */\n xmlToLyric($mxLyric, inputM21=undefined) {\n let l = inputM21;\n if (inputM21 === undefined) {\n l = new note.Lyric('');\n }\n try {\n l.text = $mxLyric.children('text').text().trim();\n } catch (exc) {\n return undefined; // sometimes there are empty lyrics.\n }\n let number = $mxLyric.attr('number');\n try {\n number = parseInt(number);\n l.number = number;\n } catch (exc) {\n l.number = 0;\n if (number !== undefined) {\n l.identifier = number;\n }\n }\n const identifier = $mxLyric.get('name');\n if (identifier !== undefined) {\n l.identifier = identifier;\n }\n\n const $mxSyllabic = $mxLyric.children('syllabic');\n if ($mxSyllabic.length) {\n l.syllabic = $mxSyllabic.text().trim();\n }\n // setStyleAttributes\n // setColor\n // setPosition\n if (inputM21 === undefined) {\n return l;\n }\n return undefined;\n }\n\n\n insertIntoMeasureOrVoice($mxElement: JQuery, el: base.Music21Object) {\n this.stream.insert(this.offsetMeasureNote, el);\n }\n\n parseMeasureAttributes() {\n this.parseMeasureNumbers();\n // width;\n }\n\n parseMeasureNumbers() {\n const mNumRaw = this.$mxMeasure.attr('number');\n const mNum = parseInt(mNumRaw); // no suffixes...\n this.stream.number = mNum;\n if (this.parent) {\n this.parent.lastMeasureNumber = mNum;\n }\n this.measureNumber = mNum;\n }\n\n parseAttributesTag($mxAttributes) {\n this.attributesAreInternal = false;\n this.$activeAttributes = $mxAttributes;\n for (const mxSub of $mxAttributes.children()) {\n const tag = mxSub.tagName;\n const $mxSub = $(mxSub);\n const methName = this.attributeTagsToMethods[tag];\n if (methName !== undefined) {\n this[methName]($mxSub);\n } else if (tag === 'staves') {\n this.staves = parseInt($mxSub.text());\n } else if (tag === 'divisions') {\n this.divisions = parseFloat($mxSub.text());\n }\n // transpose;\n }\n if (this.parent !== undefined) {\n this.parent.lastDivisions = this.divisions;\n this.parent.$activeAttributes = this.$activeAttributes;\n }\n }\n // xmlTransposeToInterval\n\n handleTimeSignature($mxTime) {\n const ts = this.xmlToTimeSignature($mxTime);\n this.insertIntoMeasureOrVoice($mxTime, ts);\n }\n\n xmlToTimeSignature($mxTime) {\n // senza-misura\n // simple time signature only;\n const numerator = $($mxTime.children('beats')[0])\n .text()\n .trim();\n const denominator = $($mxTime.children('beat-type')[0])\n .text()\n .trim();\n return new meter.TimeSignature(numerator + '/' + denominator);\n // symbol\n }\n\n handleClef($mxClef) {\n const clefObj = this.xmlToClef($mxClef);\n this.stream.clef = clefObj;\n this.insertIntoMeasureOrVoice($mxClef, clefObj);\n this.lastClefs[0] = clefObj;\n // if (this.parent !== undefined) {\n // this.parent.lastClefs[0] = clefObj.clone(true);\n // }\n }\n\n xmlToClef($mxClef) {\n const sign = $($mxClef.children('sign')[0])\n .text()\n .trim();\n // TODO: percussion, etc.\n const line = $($mxClef.children('line')[0])\n .text()\n .trim();\n\n let clefOctaveChange = 0;\n const $coc = $mxClef.children('clef-octave-change');\n if ($coc.length > 0) {\n clefOctaveChange = parseInt(\n $($coc[0])\n .text()\n .trim()\n );\n }\n return clef.clefFromString(sign + line, clefOctaveChange);\n }\n\n handleKeySignature($mxKey) {\n const keySig = this.xmlToKeySignature($mxKey);\n this.insertIntoMeasureOrVoice($mxKey, keySig);\n }\n\n xmlToKeySignature($mxKey) {\n const ks = new key.KeySignature();\n seta(ks, $mxKey, 'fifths', 'sharps', parseInt);\n // mode!\n // non-standard and key-octaves\n return ks;\n }\n}\n\nconst musicxml = {\n ScoreParser,\n PartParser,\n MeasureParser,\n};\n\nexport default musicxml;\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/note -- Note, Rest, NotRest, GeneralNote\n *\n * Copyright (c) 2013-19, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (music21p), Copyright (c) 2006–19, Michael Scott Cuthbert and cuthbertLab\n *\n * Module for note classes. See the namespace {@link music21.note}\n *\n * @requires music21/prebase\n * @requires music21/base\n * @requires music21/pitch\n * @requires music21/beam\n * @exports music21/note\n * Namespace for notes (single pitch) or rests, and some things like Lyrics that go on notes.\n *\n * @namespace music21.note\n * @memberof music21\n * @property {string[]} noteheadTypeNames - an Array of allowable notehead names.\n * @property {string[]} stemDirectionNames - an Array of allowable stemDirection names.\n */\nimport Vex from 'vexflow';\nimport * as MIDI from 'midicube';\n\nimport * as prebase from './prebase';\nimport * as base from './base';\nimport * as pitch from './pitch';\nimport * as beam from './beam';\n\nimport { debug } from './debug';\nimport { Music21Exception } from './exceptions21';\n\n// imports just for typechecking\nimport type * as articulations from './articulations';\nimport type * as expressions from './expressions';\nimport type * as instrument from './instrument';\n\nexport class NotRestException extends Music21Exception {\n // thrown in a couple of places.\n}\n\n// noinspection JSUnusedGlobalSymbols\nexport const noteheadTypeNames = [\n 'arrow down',\n 'arrow up',\n 'back slashed',\n 'circle dot',\n 'circle-x',\n 'circled',\n 'cluster',\n 'cross',\n 'diamond',\n 'do',\n 'fa',\n 'inverted triangle',\n 'la',\n 'left triangle',\n 'mi',\n 'none',\n 'normal',\n 'other',\n 're',\n 'rectangle',\n 'slash',\n 'slashed',\n 'so',\n 'square',\n 'ti',\n 'triangle',\n 'x',\n];\n\nexport const stemDirectionNames = [\n 'double',\n 'down',\n 'noStem',\n 'none',\n 'unspecified',\n 'up',\n];\n\n/**\n * Class for a single Lyric attached to a {@link GeneralNote}\n *\n * @class Lyric\n * @memberOf music21.note\n * @param {string} text - the text of the lyric\n * @param {number} number=1 - the lyric number\n * @param {string} syllabic=undefined - placement of the syllable\n * ('begin', 'middle', 'end', 'single'); undefined = interpret from text\n * @param {boolean} applyRaw=false - true = display the text exactly as it\n * is or, false = use \"-\" etc. to determine syllabic\n * @param {string} identifier=undefined - identifier for the lyric.\n * @property {string} lyricConnector='-' - what to place between two\n * lyrics that are syllabic.\n * @property {string} text - the text of the lyric syllable.\n * @property {string} syllabic - see above\n * @property {boolean} applyRaw - see above\n * @property {string} identifier - see above; gets .number if undefined\n * @property {number} number - see above\n * @property {string} rawText - text + any connectors\n */\nexport class Lyric extends prebase.ProtoM21Object {\n static get className() { return 'music21.note.Lyric'; }\n\n lyricConnector: string = '-'; // override to place something else between two notes...\n text: string;\n protected _number: number;\n protected _identifier: string|number;\n syllabic: string;\n applyRaw: boolean;\n style;\n\n constructor(\n text: string,\n number: number = 1,\n syllabic=undefined,\n applyRaw: boolean = undefined,\n identifier: string|number =undefined\n ) {\n super();\n this.text = text;\n this._number = number;\n this.syllabic = syllabic;\n this.applyRaw = applyRaw ?? false;\n this.setTextAndSyllabic(this.text, this.applyRaw);\n this._identifier = identifier;\n this.style = {\n fillStyle: 'black',\n strokeStyle: 'black',\n fontFamily: 'Serif',\n fontSize: 12,\n fontWeight: '',\n };\n }\n\n get identifier() {\n return this._identifier || this._number;\n }\n\n set identifier(i) {\n this._identifier = i;\n }\n\n // a property just to match m21p\n get number() {\n return this._number;\n }\n\n set number(n) {\n this._number = n;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * get rawText - gets the raw text.\n *\n * @return {string} raw text\n */\n get rawText(): string {\n if (this.syllabic === 'begin') {\n return this.text + this.lyricConnector;\n } else if (this.syllabic === 'middle') {\n return this.lyricConnector + this.text + this.lyricConnector;\n } else if (this.syllabic === 'end') {\n return this.lyricConnector + this.text;\n } else {\n return this.text;\n }\n }\n\n // noinspection JSUnusedGlobalSymbols\n set rawText(t: string) {\n this.setTextAndSyllabic(t, true);\n }\n\n /**\n * setTextAndSyllabic - Given a setting for rawText and applyRaw,\n * sets the syllabic type for a lyric based on the rawText\n *\n * @param {string} rawText text\n * @param {boolean} applyRaw = false if hyphens should not be applied\n * @return {this}\n */\n setTextAndSyllabic(rawText, applyRaw = false) {\n if (rawText === undefined) {\n this.text = undefined;\n return this;\n }\n\n if (\n !applyRaw\n && rawText.indexOf(this.lyricConnector) === 0\n && rawText.slice(-1) === this.lyricConnector\n ) {\n this.text = rawText.slice(1, -1);\n this.syllabic = 'middle';\n } else if (!applyRaw && rawText.indexOf(this.lyricConnector) === 0) {\n this.text = rawText.slice(1);\n this.syllabic = 'end';\n } else if (!applyRaw && rawText.slice(-1) === this.lyricConnector) {\n this.text = rawText.slice(0, -1);\n this.syllabic = 'begin';\n } else {\n this.text = rawText;\n if (this.syllabic === undefined) {\n this.syllabic = 'single';\n }\n }\n return this;\n }\n}\n\n/* Notes and rests etc... */\n\n/**\n * Superclass for all Note values\n *\n * @class GeneralNote\n * @memberof music21.note\n * @param {(number|undefined)} [ql=1.0] - quarterLength of the note\n * @property {boolean} [isChord=false] - is this a chord\n * @property {number} quarterLength - shortcut to `.duration.quarterLength`\n * @property {Vex.Flow.StaveNote} [activeVexflowNote] - most recent\n * Vex.Flow.StaveNote object to be made from this note (could change);\n * default: undefined\n * @property {Array} expressions - array\n * of attached expressions\n * @property {Array} articulations - array\n * of attached articulations\n * @property {string} lyric - the text of the first\n * {@link Lyric} object; can also set one.\n * @property {Array} lyrics - array of attached lyrics\n * @property {number} [volume=60] - how loud is this note, 0-127, before\n * articulations\n * @property {number} midiVolume - how loud is this note, taking into\n * account articulations\n * @property {music21.tie.Tie|undefined} [tie=undefined] - a tie object\n */\nexport class GeneralNote extends base.Music21Object {\n static get className() { return 'music21.note.GeneralNote'; }\n\n isNote: boolean = false;\n isRest: boolean = false;\n isChord: boolean = false;\n volume: number = 60;\n expressions: expressions.Expression[];\n articulations: articulations.Articulation[];\n lyrics: Lyric[];\n tie;\n\n activeVexflowNote: Vex.Flow.Note;\n\n constructor(ql=1.0) {\n super();\n this.expressions = [];\n this.articulations = [];\n this.lyrics = [];\n\n this.duration.quarterLength = ql;\n /* TODO: editorial objects, style(color), addLyric, insertLyric, hasLyrics */\n /* Later: augmentOrDiminish, getGrace, */\n }\n\n get lyric() {\n if (this.lyrics.length > 0) {\n return this.lyrics[0].text;\n } else {\n return undefined;\n }\n }\n\n set lyric(value) {\n this.lyrics = [];\n if (value !== undefined) {\n this.lyrics.push(new Lyric(value));\n }\n }\n\n get midiVolume() {\n let volume = this.volume;\n if (volume === undefined) {\n volume = 60;\n }\n if (this.articulations !== undefined) {\n this.articulations.forEach(a => {\n volume *= a.dynamicScale;\n if (volume > 127) {\n volume = 127;\n } else if (Number.isNaN(volume)) {\n volume = 60;\n }\n });\n }\n volume = Math.floor(volume);\n return volume;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Add a {@link Lyric} object to the Note\n *\n * @param {string} text - text to be added\n * @param {number} [lyricNumber] - integer specifying lyric (defaults to the current `.lyrics.length` + 1)\n * @param {boolean} [applyRaw=false] - if `true`, do not parse the text for cluses about syllable placement.\n * @param {string} [lyricIdentifier] - an optional identifier\n */\n addLyric(text, lyricNumber, applyRaw = false, lyricIdentifier) {\n if (lyricNumber === undefined) {\n const maxLyrics = this.lyrics.length + 1;\n const newLyric = new Lyric(\n text,\n maxLyrics,\n undefined,\n applyRaw,\n lyricIdentifier\n );\n this.lyrics.push(newLyric);\n } else {\n let foundLyric = false;\n for (let i = 0; i < this.lyrics.length; i++) {\n const thisLyric = this.lyrics[i];\n if (thisLyric.number === lyricNumber) {\n thisLyric.text = text;\n foundLyric = true;\n break;\n }\n }\n if (foundLyric === false) {\n const newLyric = new Lyric(\n text,\n lyricNumber,\n undefined,\n applyRaw,\n lyricIdentifier\n );\n this.lyrics.push(newLyric);\n }\n }\n }\n\n /**\n * Change stem direction according to clef. Does nothing for GeneralNote; overridden in subclasses.\n *\n * @param {music21.clef.Clef} [clef] - clef to set the stem direction of.\n * @returns {this}\n */\n setStemDirectionFromClef(clef) {\n return this;\n }\n\n getStemDirectionFromClef(clef) {\n return undefined;\n }\n\n /**\n * Sets the vexflow accidentals (if any) and the dots\n *\n * @param {Vex.Flow.StaveNote} vfn - a Vex.Flow note\n * @param {Object} options -- a set of Vex Flow options\n */\n vexflowAccidentalsAndDisplay(vfn, options={}) {\n if (this.duration.dots > 0) {\n for (let i = 0; i < this.duration.dots; i++) {\n vfn.addDotToAll();\n }\n }\n }\n\n /**\n * Return the active channel for the instrument or activeSite's instrument\n */\n activeChannel(instrument?: instrument.Instrument): number {\n if (instrument === undefined && this.activeSite !== undefined) {\n instrument = this.activeSite.instrument;\n }\n let channel: number = 0;\n if (instrument !== undefined) {\n channel = instrument.midiChannel;\n }\n return channel;\n }\n\n /**\n * Play the current element as a MIDI note.\n *\n * For a general note -- same as a rest -- doesn't make a sound. :-)\n *\n * @param {number} [tempo=120] - tempo in bpm\n * @param {base.Music21Object} [nextElement] - for determining\n * the length to play in case of tied notes, etc.\n * @param {Object} [options] - other options (currently just\n * `{instrument: {@link music21.instrument.Instrument} }`)\n * @returns {number} - delay time in milliseconds until the next element (may be ignored)\n */\n playMidi(\n tempo=120,\n nextElement,\n { instrument=undefined, channel=undefined } = {}\n ): number {\n // returns the number of milliseconds to the next element in\n // case that can't be determined otherwise.\n const ql = this.duration.quarterLength;\n const milliseconds = 60 * ql * 1000 / tempo;\n return milliseconds;\n }\n}\n\n/**\n * Specifies that a GeneralNote is not a rest (Unpitched, Note, Chord).\n *\n * @param {number} [ql=1.0] - length in quarter notes\n * @property {music21.beam.Beams} beams - a link to a beam object\n * @property {string} [notehead='normal'] - notehead type\n * @property {string} [noteheadFill='default'] - notehead fill (to be moved to style...)\n * @property {string|undefined} [noteheadColor=undefined] - notehead color\n * @property {boolean} [noteheadParenthesis=false] - put a parenthesis around the notehead?\n * @property {string|undefined} [stemDirection=undefined] - One of\n * ['up','down','noStem', undefined] -- 'double' not supported\n */\nexport class NotRest extends GeneralNote {\n static get className() { return 'music21.note.NotRest'; }\n // noinspection JSUnusedGlobalSymbols\n notehead: string = 'normal';\n // noinspection JSUnusedGlobalSymbols\n noteheadFill: string = 'default';\n noteheadColor: string = 'black';\n noteheadParenthesis: boolean = false;\n volume: number = 64; // not a real object yet.\n beams: beam.Beams;\n protected _stemDirection: string = 'unspecified';\n\n constructor(ql: number = 1.0) {\n super(ql);\n this.beams = new beam.Beams();\n /* TODO: this.duration.linkage -- need durationUnits */\n /* TODO: check notehead, noteheadFill, noteheadParentheses */\n }\n\n get pitches(): pitch.Pitch[] {\n return [];\n }\n\n set pitches(_value: pitch.Pitch[]) {\n // purposely does nothing\n }\n\n\n get stemDirection() {\n return this._stemDirection;\n }\n\n set stemDirection(direction) {\n if (direction === undefined) {\n direction = 'unspecified';\n } else if (direction === 'none') {\n direction = 'noStem';\n } else if (!stemDirectionNames.includes(direction)) {\n throw new NotRestException(`not a valid stem direction name: ${direction}`);\n }\n this._stemDirection = direction;\n }\n\n /**\n * Returns a `Vex.Flow.StaveNote` that approximates this note.\n *\n * @param {Object} [options={}] - `{clef: {@link music21.clef.Clef} }`\n * clef to set the stem direction of.\n * @returns {Vex.Flow.StaveNote}\n */\n vexflowNote({ clef=undefined }={}): Vex.Flow.StaveNote {\n let useStemDirection = this.stemDirection;\n\n // fixup stem direction -- must happen before Vex.Flow.Note is created...\n if ([undefined, 'unspecified'].includes(this.stemDirection)\n && clef !== undefined) {\n useStemDirection = this.getStemDirectionFromClef(clef);\n }\n\n const vfd = this.duration.vexflowDuration;\n if (vfd === undefined) {\n return undefined;\n }\n const vexflowPitchKeys = [];\n for (const p of this.pitches) {\n vexflowPitchKeys.push(p.vexflowName(clef));\n }\n\n // Not supported: Double; None is done elsewhere?\n const vfnStemDirection = useStemDirection === 'down'\n ? Vex.Flow.StaveNote.STEM_DOWN\n : Vex.Flow.StaveNote.STEM_UP;\n\n const vfn = new Vex.Flow.StaveNote({\n keys: vexflowPitchKeys,\n duration: vfd,\n stem_direction: vfnStemDirection,\n });\n this.vexflowAccidentalsAndDisplay(vfn, { clef }); // clean up stuff...\n for (const [i, p] of this.pitches.entries()) {\n if (p.accidental !== undefined) {\n const acc = p.accidental;\n const vf_accidental = new Vex.Flow.Accidental(acc.vexflowModifier);\n if (acc.vexflowModifier !== 'n' && acc.displayStatus !== false) {\n vfn.addAccidental(i, vf_accidental);\n } else if (acc.displayType === 'always' || acc.displayStatus === true) {\n vfn.addAccidental(i, vf_accidental);\n }\n }\n }\n for (const art of this.articulations) {\n vfn.addArticulation(0, art.vexflow({stemDirection: useStemDirection}));\n }\n for (const exp of this.expressions) {\n vfn.addArticulation(0, exp.vexflow({stemDirection: useStemDirection}));\n }\n if (this.noteheadColor !== undefined) {\n vfn.setStyle({ fillStyle: this.noteheadColor, strokeStyle: this.noteheadColor });\n }\n this.activeVexflowNote = vfn;\n return vfn;\n }\n}\n\n/* ------- Note ----------- */\n/**\n * A very, very important class! music21.note.Note objects combine a {@link music21.pitch.Pitch}\n * object to describe pitch (highness/lowness) with a {@link music21.duration.Duration} object\n * that defines length, with additional features for drawing the Note, playing it back, etc.\n *\n * Together with {@link Stream} one of the two most important\n * classes in `music21`.\n *\n * See {@link NotRest}, {@link GeneralNote},\n * {@link base.Music21Object}\n * and {@link prebase.ProtoM21Object} (or in general, the **extends** list below) for other\n * things you can do with a `Note` object.\n *\n * Missing from music21p: `transpose(), fullName`. Transpose cannot be added because of circular imports\n *\n * @class Note\n * @memberof music21.note\n */\nexport class Note extends NotRest {\n static get className() { return 'music21.note.Note'; }\n\n // noinspection JSUnusedGlobalSymbols\n isNote: boolean = true;\n isRest: boolean = false;\n pitch: pitch.Pitch;\n\n /**\n *\n * @param {(string|music21.pitch.Pitch|undefined)} [nn='C4'] - pitch\n * name (\"C\", \"D#\", \"E-\") w/ or w/o octave (\"C#4\"), or a pitch.Pitch object\n * @param {(number|undefined)} [ql=1.0] - length in quarter notes\n * @property {boolean} [isNote=true] - is it a Note? Yes!\n * @property {boolean} [isRest=false] - is it a Rest? No!\n * @property {music21.pitch.Pitch} pitch - the {@link music21.pitch.Pitch} associated with the Note.\n * @property {string} name - shortcut to `.pitch.name`\n * @property {string} nameWithOctave - shortcut to `.pitch.nameWithOctave`\n * @property {string} step - shortcut to `.pitch.step`\n * @property {number} octave - shortcut to `.pitch.octave`\n */\n constructor(nn: string|pitch.Pitch = 'C4', ql: number=1.0) {\n super(ql);\n if (nn instanceof pitch.Pitch) {\n this.pitch = nn as pitch.Pitch;\n } else {\n this.pitch = new pitch.Pitch(nn as string);\n }\n }\n\n stringInfo(): string {\n return this.name;\n }\n\n get name(): string {\n return this.pitch.name;\n }\n\n set name(nn: string) {\n this.pitch.name = nn;\n }\n\n get nameWithOctave(): string {\n return this.pitch.nameWithOctave;\n }\n\n set nameWithOctave(nn: string) {\n this.pitch.nameWithOctave = nn;\n }\n\n get step(): string {\n return this.pitch.step;\n }\n\n set step(nn: string) {\n this.pitch.step = nn;\n }\n\n get octave(): number {\n return this.pitch.octave;\n }\n\n set octave(nn: number) {\n this.pitch.octave = nn;\n }\n\n get pitches(): pitch.Pitch[] {\n return [this.pitch];\n }\n\n set pitches(value: pitch.Pitch[]) {\n if (!value.length) {\n throw new Error('Pitches must be an Array of one (or more) pitches');\n }\n this.pitch = value[0];\n }\n\n\n /* TODO: transpose, fullName */\n\n\n /**\n * Change stem direction according to clef.\n *\n * @param {music21.clef.Clef} [clef] - clef to set the stem direction of.\n * @returns {this} Original object, for chaining methods\n */\n setStemDirectionFromClef(clef): this {\n if (clef !== undefined) {\n this.stemDirection = this.getStemDirectionFromClef(clef);\n }\n return this;\n }\n\n /**\n * Same as setStemDirectionFromClef, but do not set the note, just return it.\n */\n getStemDirectionFromClef(clef): string {\n if (clef === undefined) {\n return undefined;\n }\n const midLine = clef.lowestLine + 4;\n const dnnFromCenter = this.pitch.diatonicNoteNum - midLine;\n // console.log(dnnFromCenter, this.pitch.nameWithOctave);\n if (dnnFromCenter >= 0) {\n return 'down';\n } else {\n return 'up';\n }\n }\n\n vexflowAccidentalsAndDisplay(vfn, { stave=undefined, clef=undefined }={}) {\n super.vexflowAccidentalsAndDisplay(vfn, { stave, clef });\n if (debug) {\n console.log(this.stemDirection);\n }\n if (this.stemDirection === 'noStem') {\n vfn.glyph.stem = false;\n // vfn.render_options.stem_height = 0;\n } else {\n // correct VexFlow stem length for notes far from the center line;\n let staveDNNSpacing = 5;\n if (stave !== undefined) {\n staveDNNSpacing = Math.floor(\n stave.options.spacing_between_lines_px / 2\n );\n }\n if (clef !== undefined && this.pitch !== undefined) {\n const midLine = clef.lowestLine + 4;\n // console.log(midLine);\n const absDNNFromCenter = Math.abs(\n this.pitch.diatonicNoteNum - midLine\n );\n const absOverOctave = absDNNFromCenter - 7;\n // console.log(absOverOctave);\n if (absOverOctave > 0 && vfn.getStemLength !== undefined) {\n const stemHeight\n = absOverOctave * staveDNNSpacing + vfn.getStemLength();\n vfn.setStemLength(stemHeight);\n }\n }\n }\n }\n\n playMidi(\n tempo=120,\n nextElement=undefined,\n {\n instrument=undefined,\n channel=undefined,\n playLegato=true,\n }={}\n ): number {\n const milliseconds = super.playMidi(tempo, nextElement, { instrument, channel });\n if (channel === undefined) {\n channel = this.activeChannel();\n }\n const volume = this.midiVolume;\n\n // Note, not rest\n const midNum = this.pitch.midi;\n let stopTime = milliseconds / 1000;\n if (nextElement instanceof Note) {\n if (nextElement.pitch.midi !== this.pitch.midi && playLegato) {\n stopTime += 60 * 0.25 / tempo; // legato -- play 16th note longer\n } else if (\n this.tie !== undefined\n && (this.tie.type === 'start' || this.tie.type === 'continue')\n ) {\n stopTime += 60 * nextElement.duration.quarterLength / tempo;\n // this does not take into account 3 or more notes tied.\n // TODO: look ahead at next nexts, etc.\n }\n } else if (nextElement === undefined && playLegato) {\n // let last note ring an extra beat...\n stopTime += 60 / tempo;\n }\n // console.log(stopTime);\n // console.log(this.tie);\n if (this.tie === undefined || this.tie.type === 'start') {\n // console.log(volume);\n try {\n MIDI.noteOn(channel, midNum, volume, 0);\n MIDI.noteOff(channel, midNum, stopTime);\n } catch (e) {\n // do nothing -- might not have an output channel because of audio not connected\n }\n } // else { console.log ('not going to play ', this.nameWithOctave); }\n return milliseconds;\n }\n}\n\n/* ------ TODO: Unpitched ------ */\n\n/* ------ Rest ------ */\n\n/**\n * Represents a musical rest.\n *\n * @class Rest\n * @memberof music21.note\n * @param {number} [ql=1.0] - length in number of quarterNotes\n * @property {Boolean} [isNote=false]\n * @property {Boolean} [isRest=true]\n * @property {string} [name='rest']\n * @property {number} [lineShift=undefined] - number of lines to shift up or down from default\n * @property {string|undefined} [color='black'] - color of the rest\n */\nexport class Rest extends GeneralNote {\n static get className() { return 'music21.note.Rest'; }\n\n // noinspection JSUnusedGlobalSymbols\n isNote: boolean = false;\n isRest: boolean = true;\n name: string = 'rest';\n lineShift: number = 0;\n color: string = 'black';\n volume: number = 0;\n\n // this dummy constructor is here for JetBrains typescript linter\n // which otherwise complains that Rests have no durations, etc.\n constructor(ql=1.0) {\n super(ql);\n this.name = 'rest';\n }\n\n /**\n *\n * @returns {string}\n */\n stringInfo() {\n return this.duration.quarterLength.toString();\n }\n\n\n /**\n * Returns a `Vex.Flow.StaveNote` that approximates this rest.\n * Corrects for bug in VexFlow that renders a whole rest too low.\n *\n * @param {Object} options -- vexflow options\n * @returns {Vex.Flow.StaveNote}\n */\n vexflowNote(options) {\n let keyLine = 'b/4';\n if (this.duration.type === 'whole') {\n if (\n this.activeSite !== undefined\n && this.activeSite.renderOptions.staffLines !== 1\n ) {\n keyLine = 'd/5';\n }\n }\n if (this.lineShift !== undefined) {\n const p = new pitch.Pitch('B4');\n let ls = this.lineShift;\n if (this.duration.type === 'whole') {\n ls += 2;\n }\n p.diatonicNoteNum += ls;\n keyLine = p.vexflowName(undefined);\n }\n\n const vfn = new Vex.Flow.StaveNote({\n keys: [keyLine],\n duration: this.duration.vexflowDuration + 'r',\n });\n if (this.duration.dots > 0) {\n for (let i = 0; i < this.duration.dots; i++) {\n vfn.addDotToAll();\n }\n }\n if (this.color !== undefined) {\n vfn.setStyle({ fillStyle: this.color, strokeStyle: this.color });\n }\n this.activeVexflowNote = vfn;\n return vfn;\n }\n}\n\n/* ------ TODO(msc): SpacerRest or remove from music21p ------ */\n","/**\n * Parses loading options -- called by music21_modules.js\n *\n */\nimport { debug } from './debug';\nimport * as common from './common';\nimport * as miditools from './miditools';\nimport * as tinyNotation from './tinyNotation';\n\nexport function runConfiguration() {\n let conf;\n // noinspection JSUnresolvedVariable\n if (typeof ( window).m21conf !== 'undefined') {\n // noinspection JSUnresolvedVariable\n conf = ( window).m21conf;\n } else {\n conf = loadConfiguration();\n }\n conf.warnBanner = (conf.warnBanner !== undefined) ? conf.warnBanner : warnBanner();\n conf.loadSoundfont = (\n conf.loadSoundfont !== undefined\n ? conf.loadSoundfont\n : getM21attribute('loadSoundFont') || true\n );\n conf.renderHTML = (conf.renderHTML !== undefined) ? conf.renderHTML : getM21attribute('renderHTML');\n if (conf.renderHTML === undefined) {\n conf.renderHTML = true;\n }\n conf.m21basePath = getBasePath();\n\n fixUrls(conf);\n loadDefaultSoundfont(conf);\n renderHTML();\n}\n\nexport function getBasePath() {\n let m21jsPath = getM21attribute('data-main');\n if (!m21jsPath) {\n m21jsPath = getM21attribute('src');\n }\n const m21basePath = common.pathSimplify(m21jsPath + '/../..');\n if (debug) {\n console.log('Music21 paths: base: ', m21basePath, '; js: ', m21jsPath);\n }\n return m21basePath;\n}\n\n\nexport function fixUrls(conf) {\n if (!conf.m21basePath) {\n return;\n }\n for (const u of Object.keys(common.urls)) {\n common.urls[u] = common.pathSimplify(conf.m21basePath + common.urls[u]);\n }\n}\n\n/**\n * @returns undefined\n */\nexport function renderHTML() {\n if (!document) {\n return;\n }\n if (document.readyState === 'complete') {\n tinyNotation.renderNotationDivs();\n } else {\n window.addEventListener('load', () => {\n tinyNotation.renderNotationDivs();\n });\n }\n}\n\n\nexport function loadDefaultSoundfont(conf) {\n if (!conf.loadSoundfont || (['no', 'false'].includes(conf.loadSoundfont))) {\n return undefined;\n }\n let instrument;\n if (conf.loadSoundfont === true) {\n instrument = 'acoustic_grand_piano';\n } else {\n instrument = conf.loadSoundfont;\n }\n return miditools.loadSoundfont(instrument);\n}\n\n/**\n *\n * @returns {{}}\n */\nexport function loadConfiguration() {\n const rawConf = getM21attribute('m21conf');\n if (!rawConf) {\n return {};\n }\n\n let m21conf;\n try {\n m21conf = JSON.parse(rawConf);\n } catch (e) {\n console.warn('Unable to JSON parse music21 configuration' + rawConf.toString() + ' into m21conf');\n m21conf = {};\n }\n return m21conf;\n}\n\n/**\n *\n * @param {string} [attribute=m21conf]\n * @returns {undefined|*|string}\n */\nexport function getM21attribute(attribute='m21conf') {\n // this is case insensitive.\n const scripts = document.getElementsByTagName('script');\n for (const s of Array.from(scripts)) {\n const scriptName = s.getAttribute('data-main') || s.getAttribute('src');\n if (scriptName && /music21/.test(scriptName)) {\n const thisValue = s.getAttribute(attribute) || s.getAttribute(attribute.toLowerCase());\n if (thisValue !== undefined) {\n return thisValue;\n }\n }\n }\n return undefined;\n}\n\n/**\n *\n * @returns {boolean}\n */\nexport function warnBanner() {\n return getM21attribute('warnBanner') !== 'no';\n}\n","/**\n * music21j -- Javascript reimplementation of Core music21 features.\n * music21/pitch -- pitch routines\n *\n * Copyright (c) 2013-17, Michael Scott Cuthbert and cuthbertLab\n * Based on music21, Copyright (c) 2006–17, Michael Scott Cuthbert and cuthbertLab\n *\n * pitch module. See {@link music21.pitch} namespace\n * Pitch related objects and methods\n *\n * @exports music21/pitch\n * @namespace music21.pitch\n * @memberof music21\n * @requires music21/prebase\n */\nimport { Music21Exception } from './exceptions21';\n\nimport * as prebase from './prebase';\nimport * as common from './common';\n\n\ninterface UpdateAccidentalDisplayParams {\n pitchPast?: Pitch[],\n pitchPastMeasure?: Pitch[],\n alteredPitches?: Pitch[],\n cautionaryPitchClass?: boolean,\n cautionaryAll?: boolean,\n overrideStatus?: boolean,\n cautionaryNotImmediateRepeat?: boolean,\n lastNoteWasTied?: boolean,\n}\n\n\n\n/**\n * @class Accidental\n * @memberof music21.pitch\n * @param {string|number} accName - an accidental name\n * @property {number} alter\n * @property {string} displayType\n * @property {boolean|undefined} displayStatus\n */\nexport class Accidental extends prebase.ProtoM21Object {\n static get className() { return 'music21.pitch.Accidental'; }\n\n protected _name: string = '';\n protected _alter: number = 0.0;\n protected _modifier: string = '';\n protected _unicodeModifier: string = '';\n displayType: string = 'normal'; // \"normal\", \"always\" supported currently\n displayStatus: boolean = undefined; // true, false, undefined\n\n constructor(accName: string|number) {\n super();\n this.set(accName);\n }\n\n stringInfo(): string {\n return this.name;\n }\n\n\n /**\n * Sets a parameter of the accidental and updates name, alter, and modifier to suit.\n *\n * @param {number|string} accName - the name, number, or modifier to set\n * @returns {undefined}\n */\n set(accName: number|string) {\n if (typeof accName === 'string') {\n accName = accName.toLowerCase();\n }\n\n if (\n accName === 'natural'\n || accName === 'n'\n || accName === 0\n || accName === undefined\n ) {\n this._name = 'natural';\n this._alter = 0.0;\n this._modifier = '';\n this._unicodeModifier = '♮';\n } else if (accName === 'sharp' || accName === '#' || accName === 1) {\n this._name = 'sharp';\n this._alter = 1.0;\n this._modifier = '#';\n this._unicodeModifier = '♯';\n } else if (\n accName === 'flat'\n || accName === '-'\n || accName === 'b'\n || accName === -1\n ) {\n this._name = 'flat';\n this._alter = -1.0;\n this._modifier = '-';\n this._unicodeModifier = '♭';\n } else if (\n accName === 'double-flat'\n || accName === '--'\n || accName === -2\n ) {\n this._name = 'double-flat';\n this._alter = -2.0;\n this._modifier = '--';\n this._unicodeModifier = '𝄫';\n } else if (\n accName === 'double-sharp'\n || accName === '##'\n || accName === 2\n ) {\n this._name = 'double-sharp';\n this._alter = 2.0;\n this._modifier = '##';\n this._unicodeModifier = '𝄪';\n } else if (\n accName === 'triple-flat'\n || accName === '---'\n || accName === -3\n ) {\n this._name = 'triple-flat';\n this._alter = -3.0;\n this._modifier = '---';\n this._unicodeModifier = '♭𝄫';\n } else if (\n accName === 'triple-sharp'\n || accName === '###'\n || accName === 3\n ) {\n this._name = 'triple-sharp';\n this._alter = 3.0;\n this._modifier = '###';\n this._unicodeModifier = '𝄪';\n } else if (\n accName === 'quadruple-flat'\n || accName === '----'\n || accName === -4\n ) {\n this._name = 'quadruple-flat';\n this._alter = -4.0;\n this._modifier = '----';\n this._unicodeModifier = '♭𝄫';\n } else if (\n accName === 'quadruple-sharp'\n || accName === '####'\n || accName === 4\n ) {\n this._name = 'quadruple-sharp';\n this._alter = 4.0;\n this._modifier = '####';\n this._unicodeModifier = '𝄪';\n } else {\n throw new Music21Exception('Accidental is not supported: ' + accName);\n }\n\n }\n\n /**\n * Return or set the name of the accidental ('flat', 'sharp', 'natural', etc.);\n *\n * When set, updates alter and modifier.\n *\n * @type {string}\n */\n get name() {\n return this._name;\n }\n\n set name(n) {\n this.set(n);\n }\n\n /**\n * Return or set the alter of the accidental\n *\n * When set, updates name and modifier.\n *\n * @type {number}\n */\n get alter() {\n return this._alter;\n }\n\n set alter(alter) {\n this.set(alter);\n }\n\n /**\n * Return or set the modifier ('-', '#', '')\n *\n * When set, updates alter and name.\n *\n * @type {string}\n */\n get modifier() {\n return this._modifier;\n }\n\n set modifier(modifier) {\n this.set(modifier);\n }\n\n /**\n * Returns the modifier for vexflow ('b', '#', 'n')\n *\n * @type {string}\n * @readonly\n */\n get vexflowModifier() {\n // todo -- rewrite with mapping.\n const m = this.modifier;\n if (m === '') {\n return 'n';\n } else if (m === '#') {\n return '#';\n } else if (m === '-') {\n return 'b';\n } else if (m === '##') {\n return '##';\n } else if (m === '--') {\n return 'bb';\n } else if (m === '###') {\n return '###';\n } else if (m === '---') {\n return 'bbb';\n } else {\n throw new Music21Exception('Vexflow does not support: ' + m);\n }\n }\n\n /**\n * Returns the modifier in unicode or\n * for double and triple accidentals, as a hex escape\n *\n * @type {string}\n * @readonly\n */\n get unicodeModifier() {\n return this._unicodeModifier;\n }\n}\n\n/**\n *\n * @type {{A: number, B: number, C: number, D: number, E: number, F: number, G: number}}\n */\nexport const nameToMidi = {\n C: 0, D: 2, E: 4, F: 5, G: 7, A: 9, B: 11,\n};\n\n/**\n *\n * @type {{A: number, B: number, C: number, D: number, E: number, F: number, G: number}}\n */\nexport const nameToSteps = {\n C: 0, D: 1, E: 2, F: 3, G: 4, A: 5, B: 6,\n};\n\n/**\n *\n * @type {string[]}\n */\nexport const stepsToName = ['C', 'D', 'E', 'F', 'G', 'A', 'B'];\n\n/**\n *\n * @type {string[]}\n */\nexport const midiToName = [\n 'C',\n 'C#',\n 'D',\n 'E-',\n 'E',\n 'F',\n 'F#',\n 'G',\n 'A-',\n 'A',\n 'B-',\n 'B',\n];\n\n/**\n * Pitch objects are found in {@link music21.note.Note} objects, and many other places.\n *\n * They do not have a {@link music21.duration.Duration} associated with them, so they\n * cannot be placed inside music21.stream.Stream objects.\n *\n * Valid pitch name formats are\n * - \"C\", \"D', etc. (\"B\" = American B; \"H\" is not allowed)\n * - \"C#\", \"C-\" (C-flat; do not use \"b\" for flat), \"C##\", \"C###\", \"C--\" etc.\n * - Octave may be specified after the name + accidental: \"C#4\" etc.\n * - Octave can be arbitrarily high (\"C10\") but only as low as \"C0\" because\n * \"C-1\" would be interpreted as C-flat octave 1; shift octave later for very low notes.\n * - If octave is not specified, the system will usually use octave 4, but might\n * adjust according to context. If you do not like this behavior, give an octave always.\n * - Microtones are not supported in music21j (they are in music21p)\n *\n * @class Pitch\n * @memberof music21.pitch\n * @param {string|number} pn - name of the pitch, with or without octave, see above.\n * @property {Accidental|undefined} accidental - link to an accidental\n * @property {number} diatonicNoteNum - diatonic number of the pitch,\n * where 29 = C4, C#4, C-4, etc.; 30 = D-4, D4, D#4, etc. updates other properties.\n * @property {number} midi - midi number of the pitch (C4 = 60); readonly.\n * See {@link Pitch#ps} for settable version.\n * @property {string} name - letter name of pitch + accidental modifier;\n * e.g., B-flat = 'B-'; changes automatically w/ step and accidental\n * @property {string} nameWithOctave - letter name of pitch + accidental\n * modifier + octave; changes automatically w/ step, accidental, and octave\n * @property {number} octave - number for the octave, where middle C = C4, and\n * octaves change between B and C; default 4\n * @property {number} ps - pitch space number, like midi number but floating\n * point and w/ no restriction on range. C4 = 60.0\n * @property {string} step - letter name for the pitch (C-G, A, B),\n * without accidental; default 'C'\n */\nexport class Pitch extends prebase.ProtoM21Object {\n static get className() { return 'music21.pitch.Pitch'; }\n protected _step: string = 'C';\n protected _octave: number = 4;\n protected _accidental: Accidental|undefined;\n spellingIsInferred: boolean = false;\n microtone = undefined;\n\n constructor(pn: string|number='C') {\n super();\n\n /* pn can be a nameWithOctave */\n if (typeof pn === 'number') {\n if (pn < 12) {\n pn += 60; // pitchClass\n }\n this.ps = pn;\n } else if (pn.match(/\\d+/)) {\n this.nameWithOctave = pn;\n } else {\n this.name = pn;\n }\n }\n\n stringInfo(): string {\n return this.nameWithOctave;\n }\n\n // N.B. cannot use transpose here, because of circular import.\n\n get step(): string {\n return this._step;\n }\n\n set step(s: string) {\n if (s === '') {\n throw new TypeError('All notes must have a step');\n }\n if (typeof s !== 'string') {\n throw new TypeError('Steps must be strings');\n }\n s = s.toUpperCase();\n if (!stepsToName.includes(s)) {\n throw new TypeError(`${s} is not a valid step name.`);\n }\n this._step = s;\n this.spellingIsInferred = false;\n }\n\n get octave(): number {\n return this._octave;\n }\n\n set octave(o: number) {\n this._octave = o;\n }\n\n get implicitOctave(): number {\n const o = this._octave;\n if (o === undefined) {\n return 4; // TODO(msc): get from defaults.\n } else {\n return o;\n }\n }\n\n get accidental(): Accidental|undefined {\n return this._accidental;\n }\n\n set accidental(a: Accidental|undefined) {\n this._accidental = a;\n this.spellingIsInferred = false;\n }\n\n get name(): string {\n const a = this.accidental;\n if (a === undefined) {\n return this.step;\n } else {\n return this.step + a.modifier;\n }\n }\n\n set name(nn: string) {\n this.step = nn.slice(0, 1);\n const tempAccidental = nn.slice(1);\n if (tempAccidental) {\n // not the empty string\n this.accidental = new Accidental(tempAccidental);\n } else {\n this.accidental = undefined;\n }\n }\n\n get nameWithOctave(): string {\n return this.name + this.octave.toString();\n }\n\n set nameWithOctave(pn: string) {\n const storedOctave = pn.match(/\\d+/);\n if (storedOctave !== undefined) {\n pn = pn.replace(/\\d+/, '');\n this.octave = parseInt(storedOctave[0]);\n this.name = pn;\n } else {\n this.name = pn;\n }\n }\n\n /**\n *\n * @type {number}\n * @readonly\n */\n get pitchClass() {\n return common.posMod(Math.round(this.ps), 12);\n }\n\n /**\n *\n * @type {number}\n */\n get diatonicNoteNum() {\n return this.octave * 7 + nameToSteps[this.step] + 1;\n }\n\n set diatonicNoteNum(newDNN) {\n newDNN -= 1; // makes math easier\n this.octave = Math.floor(newDNN / 7);\n const mod7DNN = common.posMod(Math.round(newDNN), 7);\n this.step = stepsToName[mod7DNN];\n }\n\n /**\n *\n * @type {number}\n * @readonly\n */\n get frequency() {\n return 440 * (2 ** (this.ps - 69) / 12);\n }\n\n /**\n *\n * @type {number}\n * @readonly\n */\n get midi() {\n return Math.floor(this.ps);\n }\n\n /**\n *\n * @type {number}\n */\n get ps() {\n let accidentalAlter = 0;\n if (this.accidental !== undefined) {\n accidentalAlter = this.accidental.alter;\n }\n return (\n (this.octave + 1) * 12\n + nameToMidi[this.step]\n + accidentalAlter\n );\n }\n\n set ps(ps) {\n this.name = midiToName[common.posMod(ps, 12)];\n this.octave = Math.floor(ps / 12) - 1;\n this.spellingIsInferred = true;\n }\n\n /**\n * @type {string}\n * @readonly\n */\n get unicodeName() {\n if (this.accidental !== undefined) {\n return this.step + this.accidental.unicodeModifier;\n } else {\n return this.step;\n }\n }\n\n /**\n * @type {string}\n * @readonly\n */\n get unicodeNameWithOctave() {\n if (this.octave === undefined) {\n return this.unicodeName;\n } else {\n return this.unicodeName + this.octave.toString();\n }\n }\n\n /**\n * @param {boolean} inPlace\n * @param {int} directionInt -- -1 = down, 1 = up\n * @returns {Pitch}\n */\n _getEnharmonicHelper(inPlace=false, directionInt) {\n // differs from Python version because\n // cannot import interval here.\n let octaveStored = true;\n if (this.octave === undefined) {\n octaveStored = false;\n }\n const p = this.clone();\n p.diatonicNoteNum += directionInt;\n if (p.accidental === undefined) {\n p.accidental = new Accidental(0);\n }\n while (p.ps % 12 !== this.ps % 12) { // octaveless\n // again a JSDoc choke\n // eslint-disable-next-line operator-assignment\n p.accidental.alter = p.accidental.alter + (-1 * directionInt);\n }\n\n if (!inPlace) {\n return p;\n }\n this.step = p.step;\n this.accidental = p.accidental;\n if (p.microtone === undefined) {\n this.microtone = p.microtone;\n }\n if (!octaveStored) {\n this.octave = undefined;\n } else {\n this.octave = p.octave;\n }\n return p;\n }\n\n /**\n *\n * @param {boolean} [inPlace=false]\n * @returns {Pitch}\n */\n getHigherEnharmonic(inPlace=false) {\n return this._getEnharmonicHelper(inPlace, 1);\n }\n\n /**\n *\n * @param {boolean} [inPlace=false]\n * @returns {Pitch}\n */\n getLowerEnharmonic(inPlace=false) {\n return this._getEnharmonicHelper(inPlace, -1);\n }\n /* TODO: isEnharmonic, getEnharmonic, getAllCommonEnharmonics */\n\n protected _nameInKeySignature(alteredPitches: Pitch[]) : boolean {\n for (const p of alteredPitches) { // all are altered tones, must have acc\n if (p.step === this.step) { // A# to A or A# to A-, etc\n if (p.accidental.name === this.accidental.name) {\n return true;\n }\n }\n }\n return false;\n }\n\n protected _stepInKeySignature(alteredPitches: Pitch[]) : boolean {\n for (const p of alteredPitches) { // all are altered tones, must have acc\n if (p.step === this.step) { // A# to A or A# to A-, etc\n return true;\n }\n }\n return false;\n }\n\n // noinspection PointlessBooleanExpressionJS\n updateAccidentalDisplay(\n {\n pitchPast = [],\n pitchPastMeasure = [],\n alteredPitches = [],\n cautionaryPitchClass = true,\n cautionaryAll = false,\n overrideStatus = false,\n cautionaryNotImmediateRepeat = true,\n lastNoteWasTied = false,\n }: UpdateAccidentalDisplayParams = {}\n ) {\n // TODO: this presently deals with chords as simply a list\n // we might permit pitchPast to contain a list of pitches, to represent\n // a simultaneity?\n\n // should we display accidental if no previous accidentals have been displayed\n // i.e. if it's the first instance of an accidental after a tie\n let displayAccidentalIfNoPreviousAccidentals = false;\n const pitchPastAll: Pitch[] = [...pitchPastMeasure, ...pitchPast];\n const acc_orig: Accidental | undefined = this.accidental;\n const display_orig = (\n this.accidental !== undefined\n ? this.accidental.displayStatus\n : undefined\n );\n let continuousRepeatsInMeasure = false;\n\n if (overrideStatus === false) { // go with what we have defined\n if (acc_orig === undefined) {\n // no accidental defined; we may need to add one\n } else if (display_orig === undefined) {\n // not set; need to set\n // configure based on displayStatus alone, continue w/ normal\n } else if (display_orig === true || display_orig === false) {\n return; // exit: already set, do not override\n }\n }\n if (lastNoteWasTied === true) {\n if (this.accidental !== undefined) {\n if (this.accidental.displayType !== 'even-tied') {\n this.accidental.displayStatus = false;\n } else {\n this.accidental.displayStatus = true;\n }\n return;\n } else {\n return; // exit: nothing more to do\n }\n }\n\n // no pitches in past...\n // noinspection PointlessBooleanExpressionJS\n if (pitchPastAll.length === 0) {\n // if we have no past, we always need to show the accidental,\n // unless this accidental is in the alteredPitches list\n if (acc_orig !== undefined\n && (display_orig === false\n || display_orig === undefined)) {\n if (!this._nameInKeySignature(alteredPitches)) {\n this.accidental.displayStatus = true;\n } else {\n this.accidental.displayStatus = false;\n }\n } else if (this.accidental?.displayStatus === true\n && this._nameInKeySignature(alteredPitches)) {\n // in case display set to true and in alteredPitches, make false\n this.accidental.displayStatus = false;\n\n } else if ((this.accidental === undefined\n || this.accidental.name === 'natural')\n && this._stepInKeySignature(alteredPitches)) {\n // if no accidental or natural but matches step in key sig\n // we need to show or add or an accidental\n // noinspection PointlessBooleanExpressionJS\n if (this.accidental === undefined) {\n this.accidental = new Accidental('natural');\n }\n this.accidental.displayStatus = true;\n }\n return; // do not search past\n }\n\n // pitches in past... first search if last pitch in measure\n // at this octave contradicts this pitch. if so then no matter what\n // we need an accidental.\n for (let i = pitchPast.length - 1; i >= 0; i--) {\n const thisPPast = pitchPast[i];\n if (thisPPast === undefined) {\n throw new Error(`PitchPast was undefined ${i}`);\n }\n\n if (thisPPast.step === this.step && thisPPast.octave === this.octave) {\n if (thisPPast.name !== this.name) { // conflicting alters, need accidental and return\n if (this.accidental === undefined) {\n this.accidental = new Accidental('natural');\n }\n this.accidental.displayStatus = true;\n return;\n } else { // names are the same, skip this line of questioning\n break;\n }\n }\n }\n // nope, no previous pitches in this octave and register, now more complex things...\n\n // here tied and always are treated the same; we assume that\n // making ties sets the displayStatus, and thus we would not be\n // overriding that display status here\n if (cautionaryAll === true\n || (this.accidental !== undefined\n && ['even-tied', 'always'].includes(this.accidental.displayType))) {\n // show all no matter\n if (this.accidental === undefined) {\n this.accidental = new Accidental('natural');\n }\n // show all accidentals, even if past encountered\n this.accidental.displayStatus = true;\n return; // do not search past\n }\n\n // store if a match was found and display set from past pitches\n let setFromPitchPast = false;\n\n let pSelf: Pitch;\n if (cautionaryPitchClass === true) { // warn no mater what octave; thus create new without oct\n pSelf = new Pitch(this.name);\n pSelf.accidental = this.accidental;\n } else {\n pSelf = this;\n }\n // where does the line divide between in measure and out of measure\n const outOfMeasureLength = pitchPastMeasure.length;\n\n // need to step through pitchPast in reverse\n // comparing this pitch to the past pitches; if we find a match\n // in terms of name, then decide what to do\n\n // are we only comparing a list of past pitches all of\n // which are the same as this one and in the same measure?\n // if so, set continuousRepeatsInMeasure to true\n // else, set to false\n\n // figure out if this pitch is in the measure (pPastInMeasure = true)\n // or not.\n for (let i = pitchPastAll.length - 1; i >= 0; i--) {\n // is the past pitch in the measure or out of the measure?\n let pPastInMeasure: boolean;\n\n if (i < outOfMeasureLength) {\n pPastInMeasure = false;\n continuousRepeatsInMeasure = false;\n } else {\n pPastInMeasure = true;\n let broken = false; // did we break out of the measure...\n for (let j = i; j < pitchPastAll.length; j++) {\n // do we have a continuous stream of the same note leading up to this one...\n if (pitchPastAll[j].nameWithOctave !== this.nameWithOctave) {\n continuousRepeatsInMeasure = false;\n broken = true;\n break;\n }\n }\n if (!broken) {\n continuousRepeatsInMeasure = true;\n }\n }\n // if the pitch is the first of a measure, has an accidental,\n // it is not an altered key signature pitch,\n // and it is not a natural, it should always be set to display\n if (pPastInMeasure === false\n && this.accidental !== undefined\n && !this._nameInKeySignature(alteredPitches)) {\n this.accidental.displayStatus = true;\n return; // do not search past\n }\n // create Pitch objects for comparison; remove pitch space\n // information if we are only doing a pitch class comparison\n let pPast: Pitch;\n\n if (cautionaryPitchClass === true) { // no octave; create new without oct\n pPast = new Pitch(pitchPastAll[i].name);\n // must manually assign reference to the same accidentals\n // as name alone will not transfer display status\n pPast.accidental = pitchPastAll[i].accidental;\n } else { // cautionary in terms of pitch space; must match exact\n pPast = pitchPastAll[i];\n }\n // if we do not match steps (A and A#), we can continue\n if (pPast.step !== pSelf.step) {\n continue;\n }\n // store whether these match at the same octave; needed for some\n // comparisons even if not matching pitchSpace\n let octaveMatch: boolean;\n if (this.octave === pitchPastAll[i].octave) {\n octaveMatch = true;\n } else {\n octaveMatch = false;\n }\n // repeats of the same pitch immediately following, in the same measure\n // where one previous pitch has displayStatus = true; don't display\n if (continuousRepeatsInMeasure === true\n && pPast.accidental !== undefined\n && pPast.accidental.displayStatus === true) {\n // only needed if one has a natural and this does not\n if (pSelf.accidental !== undefined) {\n if (this.accidental !== undefined) {\n this.accidental.displayStatus = false;\n }\n }\n return;\n\n } else if (continuousRepeatsInMeasure === true\n && pPast.accidental !== undefined\n && pSelf.accidental !== undefined\n && pPast.accidental.name === pSelf.accidental.name) {\n // repeats of the same accidentally immediately following\n // if An to An or A# to A#: do not need unless repeats requested,\n // regardless of if 'unless-repeated' is set, this will catch\n // a repeated case\n\n // BUG! what about C#4 C#5 C#4 C#5 -- last C#4 and C#5\n // should not show accidental if cautionaryNotImmediateRepeat is false\n\n // if not in the same octave, and not in the key sig, do show accidental\n if (this._nameInKeySignature(alteredPitches) === false\n && (octaveMatch === false\n || pPast.accidental.displayStatus === false)) {\n displayAccidentalIfNoPreviousAccidentals = true;\n // noinspection UnnecessaryContinueJS\n continue; // end of loop\n } else {\n this.accidental.displayStatus = false;\n setFromPitchPast = true;\n break;\n }\n // if An to A: do not need another natural\n // yet, if we are against the key sig, then we need another natural if in another octave\n } else if (pPast.accidental !== undefined\n && pPast.accidental.name === 'natural'\n && (pSelf.accidental === undefined\n || pSelf.accidental.name === 'natural')) {\n if (continuousRepeatsInMeasure === true) { // an immediate repeat; do not show\n // unless we are altering the key signature and in\n // a different register\n if (this._stepInKeySignature(alteredPitches) === true\n && octaveMatch === false) {\n if (this.accidental === undefined) {\n this.accidental = new Accidental('natural');\n }\n this.accidental.displayStatus = true;\n } else {\n if (this.accidental !== undefined) {\n this.accidental.displayStatus = false;\n }\n }\n // if we match the step in a key signature and we want\n // cautionary not immediate repeated\n } else if (this._stepInKeySignature(alteredPitches) === true\n && cautionaryNotImmediateRepeat === true) {\n if (this.accidental === undefined) {\n this.accidental = new Accidental('natural');\n }\n this.accidental.displayStatus = true;\n\n // cautionaryNotImmediateRepeat is false\n // but the previous note was not in this measure,\n // so do the previous step anyhow\n } else if (this._stepInKeySignature(alteredPitches) === true\n && cautionaryNotImmediateRepeat === false\n && pPastInMeasure === false) {\n if (this.accidental === undefined) {\n this.accidental = new Accidental('natural');\n }\n this.accidental.displayStatus = true;\n\n // other cases: already natural in past usage, do not need\n // natural again (and not in key sig)\n } else {\n if (this.accidental !== undefined) {\n this.accidental.displayStatus = false;\n }\n }\n setFromPitchPast = true;\n break;\n\n // if A# to A, or A- to A, but not A# to A#\n // we use step and octave though not necessarily a ps comparison\n } else if (pPast.accidental !== undefined\n && pPast.accidental.name !== 'natural'\n && (pSelf.accidental === undefined\n || pSelf.accidental.displayStatus === false)) {\n if (octaveMatch === false && cautionaryPitchClass === false) {\n continue;\n }\n if (this.accidental === undefined) {\n this.accidental = new Accidental('natural');\n }\n this.accidental.displayStatus = true;\n setFromPitchPast = true;\n break;\n\n // if An or A to A#: need to make sure display is set\n } else if ((pPast.accidental === undefined\n || pPast.accidental.name === 'natural')\n && pSelf.accidental !== undefined\n && pSelf.accidental.name !== 'natural') {\n // noinspection JSObjectNullOrUndefined\n this.accidental.displayStatus = true; // accidental is never undefined/natural\n setFromPitchPast = true;\n break;\n\n // if A- or An to A#: need to make sure display is set\n } else if (pPast.accidental !== undefined\n && pSelf.accidental !== undefined\n && pPast.accidental.name !== pSelf.accidental.name) {\n // noinspection JSObjectNullOrUndefined\n this.accidental.displayStatus = true; // accidental is never undefined/natural\n setFromPitchPast = true;\n break;\n\n // going from a natural to an accidental, we should already be\n // showing the accidental, but just to check\n // if A to A#, or A to A-, but not A# to A\n } else if (pPast.accidental === undefined && pSelf.accidental !== undefined) {\n // noinspection JSObjectNullOrUndefined\n this.accidental.displayStatus = true; // accidental is never undefined/natural\n // environLocal.printDebug(['match previous no mark'])\n setFromPitchPast = true;\n break;\n\n // if A# to A# and not immediately repeated:\n // default is to show accidental\n // if cautionaryNotImmediateRepeat is false, will not be shown\n } else if (continuousRepeatsInMeasure === false\n && pPast.accidental !== undefined\n && pSelf.accidental !== undefined\n && pPast.accidental.name === pSelf.accidental.name\n && octaveMatch === true) {\n if (cautionaryNotImmediateRepeat === false\n && pPast.accidental.displayStatus !== false) {\n // do not show (unless previous note's accidental wasn't displayed\n // because of a tie or some other reason)\n // result will be false, do not need to check altered tones\n // noinspection JSObjectNullOrUndefined\n this.accidental.displayStatus = false;\n displayAccidentalIfNoPreviousAccidentals = false;\n setFromPitchPast = true;\n break;\n } else if (pPast.accidental.displayStatus === false) {\n // in case of ties...\n displayAccidentalIfNoPreviousAccidentals = true;\n } else {\n if (!this._nameInKeySignature(alteredPitches)) {\n this.accidental.displayStatus = true;\n } else {\n this.accidental.displayStatus = false;\n }\n setFromPitchPast = true;\n return;\n }\n }\n }\n // if we have no previous matches for this pitch and there is\n // an accidental: show, unless in alteredPitches\n // cases of displayAlways and related are matched above\n if (displayAccidentalIfNoPreviousAccidentals === true) {\n // not the first pitch of this nameWithOctave in the measure\n // but, because of ties, the first to be displayed\n if (this._nameInKeySignature(alteredPitches) === false) {\n if (this.accidental === undefined) {\n this.accidental = new Accidental('natural');\n }\n this.accidental.displayStatus = true;\n } else {\n this.accidental.displayStatus = false;\n }\n // displayAccidentalIfNoPreviousAccidentals = false // just to be sure\n } else if (!setFromPitchPast && this.accidental !== undefined) {\n if (!this._nameInKeySignature(alteredPitches)) {\n this.accidental.displayStatus = true;\n } else {\n this.accidental.displayStatus = false;\n }\n // if we have natural that alters the key sig, create a natural\n } else if (!setFromPitchPast && this.accidental === undefined) {\n if (this._stepInKeySignature(alteredPitches)) {\n this.accidental = new Accidental('natural');\n this.accidental.displayStatus = true;\n }\n }\n }\n\n\n\n /**\n * Returns the vexflow name for the pitch in the given clef.\n *\n * if clefObj is undefined, then the clef is treated as TrebleClef.\n *\n * @param {music21.clef.Clef} [clefObj] - the active {@link music21.clef.Clef} object\n * @returns {string} - representation in vexflow\n */\n vexflowName(clefObj=undefined) {\n // returns a vexflow Key name for this pitch.\n let tempPitch = this;\n if (clefObj !== undefined) {\n try {\n tempPitch = clefObj.convertPitchToTreble(this);\n } catch (e) {\n console.log(e, clefObj);\n }\n }\n let accidentalType = 'n';\n if (this.accidental !== undefined) {\n if ([0, -1, -2, 1, 2].includes(this.accidental.alter)) {\n accidentalType = this.accidental.vexflowModifier;\n } else {\n console.warn('unsupported accidental: ' + this.accidental);\n }\n }\n const outName\n = tempPitch.step + accidentalType + '/' + tempPitch.octave;\n return outName;\n }\n}\n","/**\n * module for things that all music21-created objects, not just objects that can live in\n * Stream.elements should inherit. See the {@link music21.prebase} namespace.\n * Copyright (c) 2013-17, Michael Scott Cuthbert and cuthbertLab\n *\n * @exports music21/prebase\n * @namespace music21.prebase\n * @memberof music21\n */\n\ndeclare interface ProtoM21ObjectConstructorInterface extends Function {\n className: string;\n}\n\ndeclare interface Constructable {\n new() : T;\n}\n\n/**\n * Class for pseudo-m21 objects to inherit from. The most important attributes that nearly\n * everything in music21 should inherit from are given below.\n *\n * @class ProtoM21Object\n * @memberof music21.prebase\n * @property {Array} classes - An Array of strings of classes\n * that the object belongs to (default ['ProtoM21Object'])\n * @property {boolean} isProtoM21Object - Does this object descend\n * from {@link music21.prebase.ProtoM21Object}: obviously true.\n * @property {boolean} isMusic21Object - Does this object descend\n * from Music21Object; default false.\n */\nexport class ProtoM21Object {\n static get className() { return 'music21.prebase.ProtoM21Object'; }\n protected _storedClasses: string[];\n protected _storedClassSet: Set;\n _cl: string;\n isProtoM21Object: boolean = true;\n isMusic21Object: boolean = false;\n protected _cloneCallbacks: any = {};\n\n constructor() {\n // this exists for looking at Proxies of this object in Javascript\n // consoles. Because Chrome prints a stream as:\n // Proxy {_cl: 'Stream', ... }\n this._cl = this.classes[0];\n }\n\n get classSet(): Set {\n if (this._storedClassSet !== undefined) {\n return this._storedClassSet;\n }\n this._populateClassCaches();\n return this._storedClassSet;\n }\n\n /**\n * Gets all classes. Note that because of webpack mangling of class names,\n * we need to specify `className` as a static property on each class.\n */\n get classes(): string[] {\n if (this._storedClasses !== undefined) {\n return this._storedClasses;\n }\n this._populateClassCaches();\n return this._storedClasses;\n }\n\n /**\n * Populates the class caches (.classes and .classSet)\n *\n * Stored on the individual object, not the class, unlike music21p\n */\n private _populateClassCaches() {\n const classSet = new Set();\n const classList = [];\n let thisConstructor = this.constructor;\n let maxLinks = 20;\n while (\n thisConstructor !== undefined\n && maxLinks\n ) {\n maxLinks -= 1;\n const constructorName = thisConstructor.className;\n if (constructorName === undefined || constructorName === '') {\n break;\n }\n const constructorNameShort = constructorName.slice(constructorName.lastIndexOf('.') + 1);\n classList.push(constructorNameShort);\n classSet.add(thisConstructor);\n classSet.add(constructorName);\n classSet.add(constructorNameShort);\n thisConstructor = Object.getPrototypeOf(thisConstructor);\n }\n classList.push('object');\n this._storedClasses = classList;\n this._storedClassSet = classSet;\n }\n\n /**\n * Makes (as much as possible) a complete duplicate copy of the object called with .clone()\n *\n * Works similarly to Python's copy.deepcopy().\n *\n * Every ProtoM21Object has a `._cloneCallbacks` object which maps\n * `{attribute: callbackFunction|boolean}`\n * to handle custom clone cases. See, for instance, Music21Object which\n * uses a custom callback to NOT clone the `.derivation` attribute directly.\n *\n * @example\n * var n1 = new music21.note.Note(\"C#\");\n * n1.duration.quarterLength = 4;\n * var n2 = n1.clone();\n * n2.duration.quarterLength == 4; // true\n * n2 === n1; // false\n */\n clone(deep=true, memo=undefined): this {\n // console.log(`cloning ${this + ''} as ${deep ? 'deep' : 'shallow'}`);\n const classConstructor = > this.constructor;\n const ret = > new classConstructor();\n if (memo === undefined) {\n memo = new WeakMap();\n }\n\n // TODO(msc): test if Arrays work?\n for (const key in this) {\n // not that we ONLY copy the keys in Ret -- it's easier that way.\n if ({}.hasOwnProperty.call(this, key) === false) {\n continue;\n }\n if (key in this._cloneCallbacks) {\n if (this._cloneCallbacks[key] === true) {\n ret[key] = this[key];\n } else if (this._cloneCallbacks[key] === false) {\n ret[key] = undefined;\n } else {\n // call the cloneCallbacks function\n this._cloneCallbacks[key](key, ret, this, deep, memo);\n }\n } else if (\n Object.getOwnPropertyDescriptor(this, key).get !== undefined\n || Object.getOwnPropertyDescriptor(this, key).set !== undefined\n ) {\n // do nothing\n } else if (typeof this[key] === 'function') {\n // do nothing -- events might not be copied.\n } else if (\n deep\n && typeof this[key] === 'object'\n && this[key] !== null\n && ( this[key]).isProtoM21Object\n ) {\n // console.log('cloning ', key);\n const m21Obj = this[key];\n let clonedVersion;\n if (memo.has(m21Obj)) {\n clonedVersion = memo.get(m21Obj);\n } else {\n clonedVersion = m21Obj.clone(deep, memo);\n }\n ret[key] = clonedVersion;\n } else {\n try {\n // for deep this should be:\n // music21.common.merge(ret[key], this[key]);\n ret[key] = this[key];\n } catch (e) {\n if (e instanceof TypeError) {\n console.log('typeError:', e, key);\n // do nothing\n } else {\n throw e;\n }\n }\n }\n }\n return ret as this;\n }\n\n /**\n * Check to see if an object is of this class or subclass.\n *\n * @param {string|string[]} testClass - a class or Array of classes to test\n * @returns {boolean}\n * @example\n * var n = new music21.note.Note();\n * n.isClassOrSubclass('Note'); // true\n * n.isClassOrSubclass('music21.base.Music21Object'); // true\n * n.isClassOrSubclass(music21.note.GeneralNote); // true\n * n.isClassOrSubclass(['Note', 'Rest']); // true\n * n.isClassOrSubclass(['Duration', 'NotRest']); // true // NotRest\n */\n isClassOrSubclass(\n testClass: string|typeof ProtoM21Object|(string | typeof ProtoM21Object)[]\n ): boolean {\n let useTestClass: (string | typeof ProtoM21Object)[];\n if (!(testClass instanceof Array)) {\n useTestClass = [testClass] as (string | typeof ProtoM21Object)[];\n } else {\n useTestClass = testClass as (string | typeof ProtoM21Object)[];\n }\n for (const thisTestClass of useTestClass) {\n if (this.classSet.has(thisTestClass)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n *\n * @returns {string}\n */\n toString() {\n let si = this.stringInfo();\n if (si !== '') {\n si = ' ' + si;\n }\n return `<${this.classes[0]}${si}>`;\n }\n\n /**\n *\n * @returns {string}\n */\n stringInfo() {\n return '';\n }\n}\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/renderOptions -- an object that defines the render options for a Stream\n *\n * note: no parallel in music21p except Style\n *\n * Copyright (c) 2013-19, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–19, Michael Scott Cuthbert and cuthbertLab\n *\n * renderOptions module, see {@link music21.renderOptions}\n * Options for rendering a stream\n *\n * @exports music21/renderOptions\n * @namespace music21.renderOptions\n * @memberof music21\n */\n\ninterface EventInterface {\n click: string|Function|undefined,\n dblclick: string|Function|undefined,\n resize?: string|Function|undefined,\n}\n\ninterface ScaleFactor {\n x: number,\n y: number,\n}\n\n\n/**\n * An object that contains information on rendering the current stream\n *\n * Found on every Stream as `.renderOptions`\n *\n * @memberof music21.renderOptions\n */\nexport class RenderOptions {\n displayClef: boolean = true;\n displayTimeSignature: boolean = true;\n displayKeySignature: boolean = true;\n\n scaleFactor: ScaleFactor = {\n x: 0.7,\n y: 0.7,\n };\n\n top: number = 0;\n left: number = undefined;\n width: number = undefined;\n overriddenWidth: number = undefined;\n height: number = undefined;\n\n // additional padding at the bottom of the stream\n // (not every system).\n marginBottom: number = 0;\n\n systemIndex: number = 0;\n partIndex: number = 0;\n measureIndex: number = 0;\n\n // amount of space between systems on a Score object\n // does nothing on any other object. Defaults to 0 for everything\n // except Score which overrides in constructor to 40.\n systemPadding: number = 0;\n\n // this sets a fixed width for a system, not accounting for\n // scaleFactors.\n maxSystemWidth: number = undefined;\n\n rightBarline: string = undefined;\n staffLines: number = 5;\n staffConnectors: string[] = ['single', 'brace'];\n staffPadding: number = 60; // width...\n events: EventInterface = {\n click: 'play',\n dblclick: undefined,\n // resize\n };\n\n useVexflowAutobeam: boolean = true;\n\n startNewSystem: boolean = false;\n // noinspection JSUnusedGlobalSymbols\n startNewPage: boolean = false;\n showMeasureNumber: boolean = undefined;\n\n heightAboveStaff: number = 20;\n heightOfStaffProper: number = 80;\n heightBelowStaff: number = 20;\n\n // was naiveHeight\n get staffAreaHeight(): number {\n return this.heightAboveStaff + this.heightOfStaffProper + this.heightBelowStaff;\n }\n\n deepClone(): RenderOptions {\n // TODO(MSC): allow for subclassing...\n const out = new RenderOptions();\n for (const [key, value] of Object.entries(this)) {\n if (['scaleFactor', 'staffConnectors', 'events'].includes(key)) {\n continue;\n }\n out[key] = value;\n }\n out.scaleFactor.x = this.scaleFactor.x;\n out.scaleFactor.y = this.scaleFactor.y;\n out.staffConnectors = [...this.staffConnectors];\n out.events = {...this.events};\n return out;\n }\n}\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/roman -- roman.RomanNumeral -- Chord subclass\n *\n * Copyright (c) 2013-19, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–19, Michael Scott Cuthbert and cuthbertLab\n *\n * Roman numeral module. See namespace\n * music21.roman -- namespace for dealing with RomanNumeral analysis.\n *\n * @exports music21/roman\n * @memberof music21\n * @requires music21/chord\n * @requires music21/common\n * @requires music21/figuredBass\n * @requires music21/harmony\n * @requires music21/key\n * @requires music21/pitch\n * @requires music21/interval\n */\nimport { Music21Exception } from './exceptions21';\n\nimport * as chord from './chord';\nimport * as common from './common';\nimport * as figuredBass from './figuredBass';\nimport * as harmony from './harmony';\nimport * as interval from './interval';\nimport * as key from './key';\nimport * as pitch from './pitch';\nimport * as scale from './scale';\n\nexport const figureShorthands = {\n '53': '',\n '3': '',\n '63': '6',\n '753': '7',\n '75': '7', // controversial perhaps\n '73': '7', // controversial perhaps\n '9753': '9',\n '975': '9', // controversial perhaps\n '953': '9', // controversial perhaps\n '97': '9', // controversial perhaps\n '95': '9', // controversial perhaps\n '93': '9', // controversial perhaps\n '653': '65',\n '6b53': '6b5',\n '643': '43',\n '642': '42',\n bb7b5b3: 'o7',\n bb7b53: 'o7',\n // '6b5bb3': 'o65',\n b7b5b3: 'ø7',\n};\n\n// noinspection SpellCheckingInspection\nexport const functionalityScores = {\n I: 100,\n i: 90,\n V7: 80,\n V: 70,\n V65: 68,\n I6: 65,\n V6: 63,\n V43: 61,\n I64: 60,\n IV: 59,\n i6: 58,\n viio7: 57,\n V42: 55,\n viio65: 53,\n viio6: 52,\n '#viio65': 51,\n ii: 50,\n '#viio6': 49,\n ii65: 48,\n ii43: 47,\n ii42: 46,\n IV6: 45,\n ii6: 43,\n VI: 42,\n '#VI': 41,\n vi: 40,\n viio: 39,\n '#viio': 39,\n iio: 37, // common in Minor\n iio42: 36,\n bII6: 35, // Neapolitan\n iio43: 32,\n iio65: 31,\n '#vio': 28,\n '#vio6': 28,\n III: 22,\n v: 20,\n VII: 19,\n VII7: 18,\n IV65: 17,\n IV7: 16,\n iii: 15,\n iii6: 12,\n vi6: 10,\n};\n\n/**\n * expandShortHand - expand a string of numbers into an array\n *\n * N.B. this is NOT where abbreviations get expanded\n *\n * @memberof music21.roman\n * @param {string} shorthand string of a figure w/o roman to parse\n * @return {Array} array of shorthands\n */\nexport function expandShortHand(shorthand) {\n shorthand = shorthand.replace('/', '');\n if (shorthand.match(/[b-]$/)) {\n shorthand += '3';\n }\n shorthand = shorthand.replace('11', 'x');\n shorthand = shorthand.replace('13', 'y');\n shorthand = shorthand.replace('15', 'z');\n const rx = new RegExp('#*-*b*o*[1-9xyz]', 'g');\n let shorthandGroups = [];\n let match = rx.exec(shorthand);\n while (match !== null) {\n shorthandGroups.push(match[0]);\n match = rx.exec(shorthand);\n }\n if (shorthandGroups.length === 1 && shorthandGroups[0].endsWith('3')) {\n shorthandGroups = ['5', shorthandGroups[0]];\n }\n const shGroupOut = [];\n for (const sh of shorthandGroups) {\n let sh2 = sh.replace('x', '11');\n sh2 = sh2.replace('y', '13');\n sh2 = sh2.replace('z', '15');\n shGroupOut.push(sh2);\n }\n return shGroupOut;\n}\n\n/**\n * correctSuffixForChordQuality - Correct a given inversionString suffix given a\n * chord of various qualities.\n *\n * @memberof music21.roman\n * @param {chord.Chord} chordObj\n * @param {string} inversionString a string like '6' to fix.\n * @return {string} corrected inversionString\n */\nexport function correctSuffixForChordQuality(\n chordObj: chord.Chord,\n inversionString: string\n): string {\n const fifthType = chordObj.semitonesFromChordStep(5);\n let qualityName = '';\n if (fifthType === 6) {\n qualityName = 'o';\n } else if (fifthType === 8) {\n qualityName = '+';\n }\n\n if (\n inversionString !== undefined\n && (inversionString.startsWith('o')\n || inversionString.startsWith('/o')\n || inversionString.startsWith('ø')\n )\n ) {\n if (qualityName === 'o') {\n // don't call viio7, viioo7.\n qualityName = '';\n }\n }\n\n const seventhType = chordObj.semitonesFromChordStep(7);\n if (seventhType !== undefined && fifthType === 6) {\n // there is a seventh and this is a diminished 5\n if (seventhType === 10 && qualityName === 'o') {\n qualityName = 'ø';\n } else if (seventhType !== 9) {\n // do something for very odd chords built on diminished triad.\n }\n }\n return qualityName + inversionString;\n}\n\n/**\n * maps an index number to a roman numeral in lowercase\n *\n * @memberof music21.roman\n * @example\n * music21.roman.romanToNumber[4]\n * // 'iv'\n */\nexport const romanToNumber = [undefined, 'i', 'ii', 'iii', 'iv', 'v', 'vi', 'vii'];\n\n/**\n * Represents a RomanNumeral. By default, capital Roman Numerals are\n * major chords; lowercase are minor.\n *\n * @class RomanNumeral\n * @memberof music21.roman\n * @param {string} figure - the roman numeral as a string, e.g., 'IV', 'viio', 'V7'\n * @param {string|music21.key.Key} [keyStr='C']\n * @property {Array} scale - (readonly) returns the scale\n * associated with the roman numeral\n * @property {music21.key.Key} key - the key associated with the\n * RomanNumeral (not allowed to be undefined yet)\n * @property {string} figure - the figure as passed in\n * @property {string} degreeName - the name associated with the scale degree,\n * such as \"mediant\" etc., scale 7 will be \"leading tone\" or\n * \"subtonic\" appropriately\n * @property {int} scaleDegree\n * @property {string|undefined} impliedQuality - \"major\", \"minor\", \"diminished\", \"augmented\"\n * @property {music21.roman.RomanNumeral|undefined} secondaryRomanNumeral\n * @property {music21.key.Key|undefined} secondaryRomanNumeralKey\n * @property {string|undefined} frontAlterationString\n * @property {music21.interval.Interval|undefined} frontAlterationTransposeInterval\n * @property {music21.pitch.Accidental|undefined} frontAlterationAccidental\n * @property {string|undefined} romanNumeralAlone\n * @property {scale.Scale|boolean|undefined} impliedScale\n * @property {music21.interval.Interval|undefined} scaleOffset\n * @property {Array} pitches - RomanNumerals\n * are Chord objects, so .pitches will work for them also.\n */\nexport class RomanNumeral extends harmony.Harmony {\n static get className() { return 'music21.roman.RomanNumeral'; }\n\n // do not set up initial values here because super is not first.\n _parsingComplete: boolean;\n primaryFigure;\n secondaryRomanNumeral: RomanNumeral;\n secondaryRomanNumeralKey: key.Key;\n pivotChord;\n scaleCardinality: number;\n _figure: string;\n caseMatters: boolean;\n scaleDegree: number;\n frontAlterationString: string;\n frontAlterationTransposeInterval: interval.Interval;\n frontAlterationAccidental: pitch.Accidental;\n romanNumeralAlone;\n quality;\n impliedQuality;\n impliedScale;\n scaleOffset;\n useImpliedScale: boolean;\n bracketedAlterations;\n omittedSteps;\n followsKeyChange: boolean;\n protected _functionalityScore: number;\n protected _scale: scale.ConcreteScale;\n protected _tempRoot: pitch.Pitch;\n numbers: number;\n figuresNotationObj: figuredBass.Notation;\n\n constructor(\n figure: string = '',\n keyStr: key.Key|string|undefined = undefined,\n {\n parseFigure=false,\n updatePitches=false,\n }={}\n ) {\n super(figure, { updatePitches, parseFigure });\n\n // immediately fix low-preference figures\n figure = figure.replace('0', 'o');\n figure = figure.replace('/o', 'ø');\n\n // end immediate fixes\n\n this._parsingComplete = false;\n\n // not yet used...\n this.primaryFigure = undefined;\n this.secondaryRomanNumeral = undefined;\n this.secondaryRomanNumeralKey = undefined;\n\n this.pivotChord = undefined;\n this.scaleCardinality = 7;\n this._figure = undefined;\n\n this.caseMatters = true;\n if (typeof figure === 'number') {\n this.caseMatters = false;\n }\n\n this.scaleDegree = undefined;\n this.frontAlterationString = undefined;\n this.frontAlterationTransposeInterval = undefined;\n this.frontAlterationAccidental = undefined;\n this.romanNumeralAlone = undefined;\n\n // TODO(msc) -- this is never defined.\n this.quality = undefined;\n\n this.impliedQuality = undefined;\n this.impliedScale = undefined;\n this.scaleOffset = undefined;\n this.useImpliedScale = false;\n this.bracketedAlterations = [];\n this.omittedSteps = [];\n this.followsKeyChange = false;\n this._functionalityScore = undefined;\n this._scale = undefined; // the Key\n\n this.figure = figure;\n\n if (typeof keyStr === 'string') {\n this.key = new key.Key(keyStr);\n } else {\n this.key = keyStr;\n }\n\n // to remove...\n this.numbers = undefined;\n\n if (figure !== '') {\n this._parseFigure();\n this._parsingComplete = true;\n this._updatePitches();\n }\n }\n\n stringInfo() {\n return this.figure + ' in ' + this.key.stringInfo();\n }\n\n _parseFigure() {\n let workingFigure;\n let useScale = this.impliedScale;\n if (!this.useImpliedScale) {\n useScale = this.key;\n }\n [workingFigure, useScale] = this._correctForSecondaryRomanNumeral(\n useScale\n );\n\n if (workingFigure === 'Cad64') {\n if (useScale.mode === 'minor') {\n workingFigure = 'i64';\n } else {\n workingFigure = 'I64';\n }\n }\n\n this.primaryFigure = workingFigure;\n\n workingFigure = this._parseOmittedSteps(workingFigure);\n workingFigure = this._parseBracketedAlterations(workingFigure);\n workingFigure = workingFigure.replace(/^N6/, 'bII6');\n workingFigure = workingFigure.replace(/^N/, 'bII6');\n workingFigure = this._parseFrontAlterations(workingFigure);\n [workingFigure, useScale] = this._parseRNAloneAmidstAug6(\n workingFigure,\n useScale\n );\n workingFigure = this._setImpliedQualityFromString(workingFigure);\n\n this._tempRoot = useScale.pitchFromDegree(this.scaleDegree);\n this._fixMinorVIandVII(useScale);\n const expandedFigure = expandShortHand(workingFigure);\n this.figuresNotationObj = new figuredBass.Notation(\n expandedFigure.toString()\n );\n\n const numbersArr = workingFigure.match(/\\d+/);\n if (numbersArr != null) {\n // noinspection JSUnusedAssignment\n workingFigure = workingFigure.replace(/\\d+/, '');\n this.numbers = parseInt(numbersArr[0]);\n }\n }\n\n _parseFrontAlterations(workingFigure) {\n let frontAlterationString = '';\n let frontAlterationTransposeInterval;\n let frontAlterationAccidental;\n const _alterationRegex = new RegExp('^(b+|-+|#+)');\n const match = _alterationRegex.exec(workingFigure);\n if (match != null) {\n const group = match[1];\n let alteration = group.length;\n if (group[0] === 'b' || group[0] === '-') {\n alteration *= -1;\n }\n frontAlterationTransposeInterval = interval.intervalFromGenericAndChromatic(\n 1,\n alteration\n );\n frontAlterationAccidental = new pitch.Accidental(alteration);\n frontAlterationString = group;\n workingFigure = workingFigure.replace(_alterationRegex, '');\n }\n this.frontAlterationString = frontAlterationString;\n this.frontAlterationTransposeInterval = frontAlterationTransposeInterval;\n this.frontAlterationAccidental = frontAlterationAccidental;\n return workingFigure;\n }\n\n _correctBracketedPitches() {\n for (const innerAlteration of this.bracketedAlterations) {\n const [alterNotation, chordStep] = innerAlteration;\n const alterPitch = this.getChordStep(chordStep);\n if (alterPitch === undefined) {\n continue;\n }\n const newAccidental = new pitch.Accidental(alterNotation);\n if (alterPitch.accidental === undefined) {\n alterPitch.accidental = newAccidental;\n } else {\n alterPitch.accidental.set(\n alterPitch.accidental.alter + newAccidental.alter\n );\n }\n }\n }\n\n _setImpliedQualityFromString(workingFigure) {\n let impliedQuality = '';\n if (workingFigure.startsWith('o')) {\n impliedQuality = 'diminished';\n workingFigure = workingFigure.replace(/^o/, '');\n } else if (workingFigure.startsWith('/o')) {\n impliedQuality = 'half-diminished';\n workingFigure = workingFigure.replace(/^\\/o/, '');\n } else if (workingFigure.startsWith('ø')) {\n impliedQuality = 'half-diminished';\n workingFigure = workingFigure.replace(/^ø/, '');\n } else if (workingFigure.startsWith('+')) {\n impliedQuality = 'augmented';\n workingFigure = workingFigure.replace(/^\\+/, '');\n } else if (workingFigure.endsWith('d7')) {\n impliedQuality = 'dominant-seventh';\n workingFigure = workingFigure.replace(/d7$/, '7');\n } else if (\n this.caseMatters\n && this.romanNumeralAlone.toUpperCase() === this.romanNumeralAlone\n ) {\n impliedQuality = 'major';\n } else if (\n this.caseMatters\n && this.romanNumeralAlone.toLowerCase() === this.romanNumeralAlone\n ) {\n impliedQuality = 'minor';\n }\n this.impliedQuality = impliedQuality;\n return workingFigure;\n }\n\n _fixMinorVIandVII(useScale) {\n if (useScale.mode !== 'minor') {\n return;\n }\n if (!this.caseMatters) {\n return;\n }\n if (this.scaleDegree !== 6 && this.scaleDegree !== 7) {\n return;\n }\n if (\n !['minor', 'diminished', 'half-diminished'].includes(\n this.impliedQuality\n )\n ) {\n return;\n }\n\n const fati = this.frontAlterationTransposeInterval;\n if (fati !== undefined) {\n const newFati = interval.add([fati, new interval.Interval('A1')]);\n this.frontAlterationTransposeInterval = newFati;\n this.frontAlterationAccidental.alter += 1;\n } else {\n this.frontAlterationTransposeInterval = new interval.Interval('A1');\n this.frontAlterationAccidental = new pitch.Accidental(1);\n }\n\n this._tempRoot = this.frontAlterationTransposeInterval.transposePitch(\n this._tempRoot\n );\n }\n\n _parseRNAloneAmidstAug6(workingFigure, useScale) {\n let romanNumeralAlone = '';\n const _romanNumeralAloneRegex = new RegExp(\n '^(IV|I{1,3}|VI{0,2}|iv|i{1,3}|vi{0,2}|N)'\n );\n const _augmentedSixthRegex = new RegExp('^(It|Ger|Fr|Sw)');\n const rm = _romanNumeralAloneRegex.exec(workingFigure);\n const a6match = _augmentedSixthRegex.exec(workingFigure);\n if (rm === null && a6match === null) {\n throw new Music21Exception(\n `No roman numeral found in ${workingFigure}`\n );\n }\n if (a6match !== null) {\n if (useScale.mode === 'major') {\n useScale = new key.Key(useScale.tonic.name, 'minor');\n this.impliedScale = useScale;\n this.useImpliedScale = true;\n }\n romanNumeralAlone = a6match[1];\n if (['It', 'Ger'].includes(romanNumeralAlone)) {\n this.scaleDegree = 4;\n } else {\n this.scaleDegree = 2;\n }\n workingFigure = workingFigure.replace(_augmentedSixthRegex, '');\n this.romanNumeralAlone = romanNumeralAlone;\n if (romanNumeralAlone !== 'Fr') {\n this.bracketedAlterations.push(['#', 1]);\n }\n if (romanNumeralAlone === 'Fr' || romanNumeralAlone === 'Sw') {\n this.bracketedAlterations.push(['#', 3]);\n }\n } else {\n romanNumeralAlone = rm[1];\n this.scaleDegree = common.fromRoman(romanNumeralAlone);\n workingFigure = workingFigure.replace(_romanNumeralAloneRegex, '');\n this.romanNumeralAlone = romanNumeralAlone;\n }\n return [workingFigure, useScale];\n }\n\n /**\n * get romanNumeral - return either romanNumeralAlone (II) or with frontAlterationAccidental (#II)\n *\n * @return {string} new romanNumeral;\n */\n\n get romanNumeral() {\n if (this.frontAlterationAccidental === undefined) {\n return this.romanNumeralAlone;\n } else {\n return (\n this.frontAlterationAccidental.modifier + this.romanNumeralAlone\n );\n }\n }\n\n get scale() {\n if (this._scale !== undefined) {\n return this._scale;\n } else {\n this._scale = this.key.getScale();\n return this._scale;\n }\n }\n\n get key(): key.Key {\n return this._key;\n }\n\n set key(keyOrScale: key.Key) {\n if (typeof keyOrScale === 'string') {\n this._key = new key.Key(keyOrScale);\n } else if (typeof keyOrScale === 'undefined') {\n this._key = new key.Key('C');\n } else {\n this._key = keyOrScale;\n }\n if (keyOrScale === undefined) {\n this.useImpliedScale = true;\n this.impliedScale = new scale.MajorScale('C');\n } else {\n this.useImpliedScale = false;\n this.impliedScale = false;\n }\n if (this._parsingComplete) {\n this._updatePitches();\n }\n }\n\n get figure() {\n return this._figure;\n }\n\n set figure(newFigure) {\n this._figure = newFigure;\n if (this._parsingComplete) {\n this._parseFigure();\n this._updatePitches();\n }\n }\n\n get figureAndKey() {\n let tonicName = this.key.tonic.name;\n let mode = '';\n if (this.key.mode !== undefined) {\n mode = ' ' + this.key.mode;\n }\n\n if (mode === ' minor') {\n tonicName = tonicName.toLowerCase();\n } else if (mode === ' major') {\n tonicName = tonicName.toUpperCase();\n }\n return this.figure + ' in ' + tonicName + mode;\n }\n\n get degreeName() {\n if (this.scaleDegree < 7) {\n return [\n undefined,\n 'Tonic',\n 'Supertonic',\n 'Mediant',\n 'Subdominant',\n 'Dominant',\n 'Submediant',\n ][this.scaleDegree];\n } else {\n const tonicPitch = this.key.tonic;\n let diffRootToTonic = (tonicPitch.ps - this.root().ps) % 12;\n if (diffRootToTonic < 0) {\n diffRootToTonic += 12;\n }\n if (diffRootToTonic === 1) {\n return 'Leading-tone';\n } else {\n return 'Subtonic';\n }\n }\n }\n\n /**\n * Update the .pitches array. Called at instantiation, but not automatically afterwards.\n *\n */\n _updatePitches() {\n let useScale;\n if (this.secondaryRomanNumeralKey !== undefined) {\n useScale = this.secondaryRomanNumeralKey;\n } else if (!this.useImpliedScale) {\n useScale = this.key;\n } else {\n useScale = this.impliedScale;\n }\n\n this.scaleCardinality = 7; // simple speedup;\n const bassScaleDegree = this.bassScaleDegreeFromNotation(\n this.figuresNotationObj\n );\n const bassPitch = useScale.pitchFromDegree(\n bassScaleDegree,\n 'ascending'\n );\n const pitches = [bassPitch];\n let lastPitch = bassPitch;\n const numberNotes = this.figuresNotationObj.numbers.length;\n\n for (let j = 0; j < numberNotes; j++) {\n const i = numberNotes - j - 1;\n const thisScaleDegree\n = bassScaleDegree + this.figuresNotationObj.numbers[i] - 1;\n const newPitch = useScale.pitchFromDegree(\n thisScaleDegree,\n 'ascending'\n );\n const pitchName = this.figuresNotationObj.modifiers[\n i\n ].modifyPitchName(newPitch.name);\n const newNewPitch = new pitch.Pitch(pitchName);\n newNewPitch.octave = newPitch.octave;\n if (newNewPitch.ps < lastPitch.ps) {\n newNewPitch.octave += 1;\n }\n pitches.push(newNewPitch);\n lastPitch = newNewPitch;\n }\n if (this.frontAlterationTransposeInterval !== undefined) {\n const newPitches = [];\n for (const thisPitch of pitches) {\n const newPitch = this.frontAlterationTransposeInterval.transposePitch(\n thisPitch\n );\n newPitches.push(newPitch);\n }\n this.pitches = newPitches;\n } else {\n this.pitches = pitches;\n }\n\n this._matchAccidentalsToQuality(this.impliedQuality);\n\n this.scaleOffset = this.frontAlterationTransposeInterval;\n\n if (this.omittedSteps.length) {\n const omittedPitches = [];\n for (const thisCS of this.omittedSteps) {\n const p = this.getChordStep(thisCS);\n if (p !== undefined) {\n omittedPitches.push(p.name);\n }\n }\n const newPitches = [];\n for (const thisPitch of pitches) {\n if (!omittedPitches.includes(thisPitch.name)) {\n newPitches.push(thisPitch);\n }\n }\n this.pitches = newPitches;\n // do something...\n }\n this._correctBracketedPitches();\n }\n\n bassScaleDegreeFromNotation(notationObject) {\n const c = new pitch.Pitch('C3');\n const cDNN = c.diatonicNoteNum; // always 22\n const pitches = [c];\n for (const i of notationObject.numbers) {\n const distanceToMove = i - 1;\n const newDiatonicNumber = cDNN + distanceToMove;\n const [newStep, newOctave] = interval.convertDiatonicNumberToStep(\n newDiatonicNumber\n );\n const newPitch = new pitch.Pitch('C3');\n newPitch.step = newStep;\n newPitch.octave = newOctave;\n pitches.push(newPitch);\n }\n const tempChord = new chord.Chord(pitches);\n const rootDNN = tempChord.root().diatonicNoteNum;\n const staffDistanceFromBassToRoot = rootDNN - cDNN;\n let bassSD = common.posMod(\n this.scaleDegree - staffDistanceFromBassToRoot,\n 7\n );\n if (bassSD === 0) {\n bassSD = 7;\n }\n return bassSD;\n }\n\n _matchAccidentalsToQuality(impliedQuality) {\n const correctSemitones = this._findSemitoneSizeForQuality(\n impliedQuality\n );\n const chordStepsToExamine = [3, 5, 7];\n for (let i = 0; i < chordStepsToExamine.length; i++) {\n const thisChordStep = chordStepsToExamine[i];\n const thisCorrect = correctSemitones[i];\n const thisSemis = this.semitonesFromChordStep(thisChordStep);\n if (thisCorrect === undefined) {\n continue;\n }\n if (thisSemis === undefined) {\n continue;\n }\n if (thisSemis === thisCorrect) {\n continue;\n }\n\n let correctedSemis = thisCorrect - thisSemis;\n if (correctedSemis >= 6) {\n correctedSemis = -1 * (12 - correctedSemis);\n } else if (correctedSemis <= -6) {\n correctedSemis += 12;\n }\n\n const faultyPitch = this.getChordStep(thisChordStep);\n // TODO: check for faultyPitch is undefined\n\n if (faultyPitch.accidental === undefined) {\n faultyPitch.accidental = new pitch.Accidental(correctedSemis);\n } else {\n const acc = faultyPitch.accidental;\n correctedSemis += acc.alter;\n if (correctedSemis >= 6) {\n correctedSemis = -1 * (12 - correctedSemis);\n } else if (correctedSemis <= -6) {\n correctedSemis += 12;\n }\n acc.set(correctedSemis);\n }\n }\n }\n\n _correctForSecondaryRomanNumeral(useScale, figure=undefined) {\n if (figure === undefined) {\n figure = this._figure;\n }\n let workingFigure = figure;\n const rx = new RegExp('(.*?)/([#a-np-zA-NP-Z].*)');\n const match = rx.exec(figure);\n if (match !== null) {\n const primaryFigure = match[1];\n const secondaryFigure = match[2];\n const secondaryRomanNumeral = new RomanNumeral(\n secondaryFigure,\n useScale,\n );\n this.secondaryRomanNumeral = secondaryRomanNumeral;\n let secondaryMode;\n if (secondaryRomanNumeral.quality === 'minor') {\n secondaryMode = 'minor';\n } else if (secondaryRomanNumeral.quality === 'major') {\n secondaryMode = 'minor';\n } else if (secondaryRomanNumeral.semitonesFromChordStep(3) === 3) {\n secondaryMode = 'minor';\n } else {\n secondaryMode = 'major';\n }\n this.secondaryRomanNumeralKey = new key.Key(\n secondaryRomanNumeral.root().name,\n secondaryMode\n );\n useScale = this.secondaryRomanNumeralKey;\n workingFigure = primaryFigure;\n }\n return [workingFigure, useScale];\n }\n\n _parseOmittedSteps(workingFigure) {\n const omittedSteps = [];\n const rx = new RegExp(/\\[no(\\d+)]s*/);\n let match = rx.exec(workingFigure);\n while (match !== null) {\n const thisStepStr = match[1];\n let thisStep = parseInt(thisStepStr);\n thisStep = thisStep % 7 || 7;\n omittedSteps.push(thisStep);\n workingFigure = workingFigure.replace(rx, '');\n match = rx.exec(workingFigure);\n }\n this.omittedSteps = omittedSteps;\n return workingFigure;\n }\n\n _parseBracketedAlterations(workingFigure) {\n const bracketedAlterations = this.bracketedAlterations;\n const rx = new RegExp(/\\[(b+|-+|#+)(\\d+)]/);\n let match = rx.exec(workingFigure);\n while (match !== null) {\n const matchAlteration = match[1];\n const matchDegree = parseInt(match[2]);\n bracketedAlterations.push([matchAlteration, matchDegree]);\n workingFigure = workingFigure.replace(rx, '');\n match = rx.exec(workingFigure);\n }\n return workingFigure;\n }\n\n _findSemitoneSizeForQuality(impliedQuality) {\n let correctSemitones;\n if (impliedQuality === 'major') {\n correctSemitones = [4, 7];\n } else if (impliedQuality === 'minor') {\n correctSemitones = [3, 7];\n } else if (impliedQuality === 'diminished') {\n correctSemitones = [3, 6, 9];\n } else if (impliedQuality === 'half-diminished') {\n correctSemitones = [3, 6, 10];\n } else if (impliedQuality === 'augmented') {\n correctSemitones = [4, 8];\n } else if (impliedQuality === 'dominant-seventh') {\n correctSemitones = [4, 7, 10];\n } else {\n correctSemitones = [];\n }\n\n return correctSemitones;\n }\n\n /**\n * Gives a string display. Note that since inversion is not yet supported\n * it needs to be given separately.\n *\n * Inverting 7th chords does not work.\n *\n * @param {string} displayType - ['roman', 'bassName', 'nameOnly', other]\n * @param {number} [inversion=0]\n * @returns {string}\n */\n asString(displayType: string, inversion: number = 0): string {\n const keyObj = this.key;\n const tonicName = keyObj.tonic.name;\n const mode = keyObj.mode;\n\n // specifying inversion is for backwards compatibility only.\n if (inversion === undefined) {\n inversion = this.inversion();\n }\n let inversionName = '';\n if (inversion === 1) {\n if (displayType === 'roman') {\n inversionName = '6';\n } else {\n inversionName = ' (first inversion)';\n }\n } else if (inversion === 2) {\n if (displayType === 'roman') {\n inversionName = '64';\n } else {\n inversionName = ' (second inversion)';\n }\n }\n let fullChordName;\n let connector = ' in ';\n let suffix = '';\n if (displayType === 'roman') {\n fullChordName = this.figure;\n fullChordName = fullChordName.replace('/o', 'ø');\n } else if (displayType === 'nameOnly') {\n // use only with only choice being tonicName\n fullChordName = '';\n connector = '';\n suffix = ' triad';\n } else if (displayType === 'bassName') {\n fullChordName = this.bass().name.replace(/-/, 'b');\n } else {\n // \"default\" or \"degreeName\" submediant, etc...\n fullChordName = this.degreeName;\n if (this.numbers !== undefined) {\n fullChordName += ' ' + this.numbers.toString();\n }\n }\n let tonicDisplay = tonicName.replace(/-/, 'b');\n if (mode === 'minor') {\n tonicDisplay = tonicDisplay.toLowerCase();\n }\n const chordStr = fullChordName\n + inversionName\n + connector\n + tonicDisplay\n + ' '\n + mode\n + suffix;\n return chordStr;\n }\n}\n","/**\n * Scale module. See {@link music21.scale} namespace\n * @module music21/scale\n */\n/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/scale -- Scales\n *\n * Does not implement the full range of scales from music21p\n *\n * Copyright (c) 2013-17, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–17, Michael Scott Cuthbert and cuthbertLab\n *\n *\n *\n * Scale namespace. Right now only supports very simple scales.\n *\n * @namespace music21.scale\n * @requires music21.base\n * @requires music21.common\n * @requires music21.debug\n * @requires music21.interval\n * @requires music21.pitch\n */\nimport { Music21Exception } from './exceptions21';\nimport { debug } from './debug';\n\nimport * as base from './base';\nimport * as common from './common';\nimport * as interval from './interval';\nimport * as pitch from './pitch';\n\n// imports just for typechecking\nimport * as note from './note';\n\n// const DIRECTION_BI = 'bi';\n// const DIRECTION_DESCENDING = 'descending';\n// const DIRECTION_ASCENDING = 'ascending';\n\nexport\n/**\n * A generalized Scale object.\n *\n * @memberOf music21.scale\n */\nclass Scale extends base.Music21Object {\n static get className() { return 'music21.scale.Scale'; }\n\n type: string = 'Scale';\n\n constructor() {\n super();\n this.type = 'Scale';\n }\n\n /**\n *\n * @returns {string}\n * @readonly\n */\n get name(): string {\n return this.type;\n }\n\n /**\n * @readonly\n * @returns {boolean}\n */\n get isConcrete(): boolean {\n return false;\n }\n}\n\nexport\n/**\n * An Abstract Scale\n *\n * @memberOf music21.scale\n */\nclass AbstractScale extends Scale {\n static get className() { return 'music21.scale.AbstractScale'; }\n\n protected _net: interval.Interval[] = [];\n tonicDegree: number = 1;\n octaveDuplicating: boolean = true;\n deterministic: boolean = true;\n protected _alteredDegrees = {};\n protected _oneOctaveRealizationCache = undefined;\n\n constructor() {\n super();\n this.type = 'Abstract';\n }\n\n /**\n * To be subclassed\n */\n buildNetwork(mode=undefined): void {\n this._net = [];\n }\n\n /**\n * One scale equals another\n *\n * @param {AbstractScale} other - the scale compared to.\n * @returns {boolean}\n */\n equals(other: AbstractScale): boolean {\n if (\n common.arrayEquals(this.classes, other.classes)\n && this.tonicDegree === other.tonicDegree\n && common.arrayEquals(this._net, other._net)\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n buildNetworkFromPitches(pitchList: string[]|pitch.Pitch[]|note.Note[]) {\n const pitchListReal: pitch.Pitch[] = [];\n for (const p of pitchList) {\n if (typeof p === 'string') {\n pitchListReal.push(new pitch.Pitch(p));\n } else if (p.classes.includes('Note')) {\n pitchListReal.push(( p).pitch);\n } else {\n pitchListReal.push(( p));\n }\n }\n\n const pLast = pitchListReal[pitchListReal.length - 1];\n if (pLast.name === pitchListReal[0].name) {\n const p = pitchListReal[0].clone();\n if (pLast.ps > pitchListReal[0]) {\n // ascending;\n while (p.ps < pLast.ps) {\n p.octave += 1;\n }\n } else {\n while (p.ps < pLast.ps) {\n p.octave += -1;\n }\n }\n pitchListReal.push(p);\n }\n\n const intervalList = [];\n for (let i = 0; i < pitchListReal.length - 1; i++) {\n const thisInterval = new interval.Interval(\n pitchListReal[i],\n pitchListReal[i + 1]\n );\n intervalList.push(thisInterval);\n }\n this._net = intervalList;\n }\n\n getDegreeMaxUnique(): number {\n return this._net.length;\n }\n\n // noinspection JSUnusedLocalSymbols\n getRealization(\n pitchObj,\n unused_stepOfPitch=undefined,\n unused_minPitch=undefined,\n unused_maxPitch=undefined,\n unused_direction=undefined,\n unused_reverse=undefined\n ) {\n // if (direction === undefined) {\n // direction = DIRECTION_ASCENDING;\n // }\n // if (stepOfPitch === undefined) {\n // stepOfPitch = 1;\n // }\n if (typeof pitchObj === 'string') {\n pitchObj = new pitch.Pitch(pitchObj);\n } else {\n pitchObj = pitchObj.clone();\n }\n const post = [pitchObj];\n for (const intV of this._net) {\n pitchObj = intV.transposePitch(pitchObj);\n post.push(pitchObj);\n }\n return post;\n }\n\n getPitchFromNodeDegree(pitchReference, unused_nodeName, nodeDegreeTarget) {\n const zeroIndexDegree = nodeDegreeTarget - 1;\n for (let i = 0; i < zeroIndexDegree; i++) {\n const thisIntv = this._net[i % this._net.length];\n pitchReference = thisIntv.transposePitch(pitchReference);\n }\n return pitchReference;\n }\n\n // noinspection JSUnusedLocalSymbols\n getRelativeNodeDegree(\n pitchReference,\n unused_nodeName,\n pitchTarget,\n unused_comparisonAttribute=undefined,\n unused_direction=undefined\n ) {\n if (typeof pitchTarget === 'string') {\n pitchTarget = new pitch.Pitch(pitchTarget);\n }\n let realizedPitches;\n if (this._oneOctaveRealizationCache !== undefined) {\n realizedPitches = this._oneOctaveRealizationCache;\n } else {\n realizedPitches = this.getRealization(pitchReference);\n this._oneOctaveRealizationCache = realizedPitches;\n }\n const realizedNames = [];\n for (const p of realizedPitches) {\n realizedNames.push(p.name);\n }\n const realizedIndex = realizedNames.indexOf(pitchTarget.name);\n if (realizedIndex === -1) {\n return undefined;\n } else {\n return realizedIndex + 1;\n }\n }\n}\n\n/**\n * @memberOf music21.scale\n *\n */\nexport class AbstractDiatonicScale extends AbstractScale {\n static get className() { return 'music21.scale.AbstractDiatonicScale'; }\n\n dominantDegree: number;\n relativeMajorDegree: number;\n relativeMinorDegree: number;\n\n /**\n *\n * @param {string} [mode]\n * @property {string} type\n * @property {number|undefined} tonicDegree\n * @property {number|undefined} dominantDegree\n * @property {boolean} octaveDuplicating\n */\n constructor(mode='major') {\n super();\n this.type = 'Abstract diatonic';\n this.tonicDegree = undefined;\n this.dominantDegree = undefined;\n this.octaveDuplicating = true;\n this.buildNetwork(mode);\n }\n\n buildNetwork(mode: string) {\n const srcList = ['M2', 'M2', 'm2', 'M2', 'M2', 'M2', 'm2'];\n let intervalList;\n this.tonicDegree = 1;\n this.dominantDegree = 5;\n if (['major', 'ionian'].includes(mode)) {\n intervalList = srcList;\n this.relativeMajorDegree = 1;\n this.relativeMinorDegree = 6;\n } else if (['minor', 'aeolian'].includes(mode)) {\n intervalList = srcList.slice(5, 7);\n intervalList.push(...srcList.slice(0, 5));\n this.relativeMajorDegree = 3;\n this.relativeMinorDegree = 1;\n }\n this._net = [];\n for (const intVStr of intervalList) {\n this._net.push(new interval.Interval(intVStr));\n }\n }\n}\n\n/**\n * @memberOf music21.scale\n *\n */\nexport class AbstractHarmonicMinorScale extends AbstractScale {\n static get className() { return 'music21.scale.AbstractHarmonicMinorScale'; }\n\n constructor() {\n super();\n this.type = 'Abstract harmonic minor';\n this.octaveDuplicating = true;\n this.buildNetwork();\n }\n\n buildNetwork() {\n const intervalList = ['M2', 'm2', 'M2', 'M2', 'm2', 'A2', 'm2'];\n this._net = [];\n for (const intVStr of intervalList) {\n this._net.push(new interval.Interval(intVStr));\n }\n }\n}\n\n// temporary, until bidirectional scales are created\n// no need for descending, since minor takes care of that.\n/**\n * @memberOf music21.scale\n */\nexport class AbstractAscendingMelodicMinorScale extends AbstractScale {\n static get className() { return 'music21.scale.AbstractAscendingMelodicMinorScale'; }\n\n constructor() {\n super();\n this.type = 'Abstract ascending melodic minor';\n this.octaveDuplicating = true;\n this.buildNetwork();\n }\n\n buildNetwork() {\n const intervalList = ['M2', 'm2', 'M2', 'M2', 'M2', 'M2', 'm2'];\n this._net = [];\n for (const intVStr of intervalList) {\n this._net.push(new interval.Interval(intVStr));\n }\n }\n}\n\n/**\n * @memberOf music21.scale\n */\nexport class ConcreteScale extends Scale {\n static get className() { return 'music21.scale.ConcreteScale'; }\n\n tonic: pitch.Pitch;\n abstract: AbstractScale;\n\n constructor(tonic) {\n super();\n if (typeof tonic === 'string') {\n tonic = new pitch.Pitch(tonic);\n }\n this.tonic = tonic;\n this.abstract = undefined;\n }\n\n // when adding functionality here, must also be added to key.Key.\n get isConcrete() {\n if (this.tonic !== undefined) {\n return true;\n } else {\n return false;\n }\n }\n\n getTonic() {\n return this.tonic;\n }\n\n // transpose\n // tune\n // No .romanNumeral function because of circular imports...\n // romanNumeral(degree) {\n // return new roman.RomanNumeral(degree, this);\n // }\n\n // noinspection JSUnusedLocalSymbols\n getPitches(\n unused_minPitch=undefined,\n unused_maxPitch=undefined,\n unused_direction=undefined\n ) {\n let pitchObj;\n if (this.tonic === undefined) {\n pitchObj = new pitch.Pitch('C4');\n } else {\n pitchObj = this.tonic;\n }\n return this.abstract.getRealization(pitchObj);\n }\n\n // noinspection JSUnusedLocalSymbols\n pitchFromDegree(\n degree,\n unused_minPitch=undefined,\n unused_maxPitch=undefined,\n unused_direction=undefined,\n unused_equateTermini=undefined\n ) {\n return this.abstract.getPitchFromNodeDegree(\n this.tonic,\n this.abstract.tonicDegree,\n degree\n );\n }\n\n // noinspection JSUnusedLocalSymbols\n getScaleDegreeFromPitch(\n pitchTarget,\n unused_direction=undefined,\n unused_comparisonAttribute=undefined\n ) {\n return this.abstract.getRelativeNodeDegree(\n this.tonic,\n this.abstract.tonicDegree,\n pitchTarget\n );\n }\n}\n\n/**\n * @memberOf music21.scale\n */\nexport class DiatonicScale extends ConcreteScale {\n static get className() { return 'music21.scale.DiatonicScale'; }\n\n constructor(tonic) {\n super(tonic); // a.k.a. ^2 :-)\n this.abstract = new AbstractDiatonicScale();\n this.type = 'diatonic';\n }\n}\n\n/**\n * @memberOf music21.scale\n */\nexport class MajorScale extends DiatonicScale {\n static get className() { return 'music21.scale.MajorScale'; }\n\n constructor(tonic) {\n super(tonic); // a.k.a. ^2 :-)\n this.type = 'major';\n this.abstract.buildNetwork(this.type);\n }\n}\n\n\n/**\n * @memberOf music21.scale\n */\nexport class MinorScale extends DiatonicScale {\n static get className() { return 'music21.scale.MinorScale'; }\n\n constructor(tonic) {\n super(tonic); // a.k.a. ^2 :-)\n this.type = 'minor';\n this.abstract.buildNetwork(this.type);\n }\n}\n\n/**\n * @memberOf music21.scale\n */\nexport class HarmonicMinorScale extends ConcreteScale {\n static get className() { return 'music21.scale.HarmonicMinorScale'; }\n\n constructor(tonic) {\n super(tonic); // a.k.a. ^2 :-)\n this.type = 'harmonic minor';\n this.abstract = new AbstractHarmonicMinorScale();\n }\n}\n\n/**\n * @memberOf music21.scale\n */\nexport class AscendingMelodicMinorScale extends ConcreteScale {\n static get className() { return 'music21.scale.AscendingMelodicMinorScale'; }\n\n constructor(tonic) {\n super(tonic); // a.k.a. ^2 :-)\n this.type = 'harmonic minor';\n this.abstract = new AbstractAscendingMelodicMinorScale();\n }\n}\n\n/**\n * Function, not class\n *\n * @memberOf music21.scale\n * @function music21.scale.SimpleDiatonicScale\n * @param {pitch.Pitch} [tonic]\n * @param {Array} scaleSteps - an array of diatonic prefixes,\n * generally 'M' (major) or 'm' (minor) describing the seconds.\n * @returns {Array} an octave of scale objects.\n */\nexport function SimpleDiatonicScale(tonic, scaleSteps) {\n if (tonic === undefined) {\n tonic = new pitch.Pitch('C4');\n } else if (!(tonic instanceof pitch.Pitch)) {\n throw new Music21Exception(\n 'Cannot make a scale not from '\n + 'a music21.pitch.Pitch object: '\n + tonic\n );\n }\n if (scaleSteps === undefined) {\n scaleSteps = ['M', 'M', 'm', 'M', 'M', 'M', 'm'];\n }\n const gi = new interval.GenericInterval(2);\n const pitches: pitch.Pitch[] = [tonic];\n let lastPitch = tonic;\n for (let i = 0; i < scaleSteps.length; i++) {\n const di = new interval.DiatonicInterval(scaleSteps[i], gi);\n const ii = new interval.Interval(di);\n const newPitch = ii.transposePitch(lastPitch);\n if (debug) {\n console.log('ScaleSimpleMajor -- adding pitch: ' + newPitch.name);\n }\n pitches.push(newPitch);\n lastPitch = newPitch;\n }\n return pitches;\n}\n\n/**\n * One octave of a major scale\n *\n * @memberOf music21.scale\n * @function music21.scale.ScaleSimpleMajor\n * @param {pitch.Pitch} tonic\n * @returns {Array} an octave of scale objects.\n */\nexport function ScaleSimpleMajor(tonic: pitch.Pitch): pitch.Pitch[] {\n const scaleSteps = ['M', 'M', 'm', 'M', 'M', 'M', 'm'];\n return SimpleDiatonicScale(tonic, scaleSteps);\n}\n\n/**\n * One octave of a minor scale\n *\n * @memberOf music21.scale\n * @function music21.scale.ScaleSimpleMinor\n * @param {pitch.Pitch} tonic\n * @param {string} [minorType='natural'] - 'harmonic', 'harmonic-minor',\n * 'melodic', 'melodic-minor', 'melodic-minor-ascending',\n * 'melodic-ascending' or other (=natural/melodic-descending)\n * @returns {Array} an octave of scale objects.\n */\nexport function ScaleSimpleMinor(tonic, minorType) {\n const scaleSteps = ['M', 'm', 'M', 'M', 'm', 'M', 'M'];\n if (typeof minorType === 'string') {\n // \"harmonic minor\" -> \"harmonic-minor\"\n minorType = minorType.replace(/\\s/g, '-');\n }\n if (minorType === 'harmonic' || minorType === 'harmonic-minor') {\n scaleSteps[5] = 'A';\n scaleSteps[6] = 'm';\n } else if (\n minorType === 'melodic'\n || minorType === 'melodic-ascending'\n || minorType === 'melodic-minor'\n || minorType === 'melodic-minor-ascending'\n ) {\n scaleSteps[4] = 'M';\n scaleSteps[6] = 'm';\n }\n return SimpleDiatonicScale(tonic, scaleSteps);\n}\n","/**\n * Objects for keeping track of relationships among Music21Objects. See {@link music21.sites} namespace\n *\n * Copyright 2017-2019, Michael Scott Cuthbert and cuthbertLab\n * License: BSD\n *\n * @namespace music21.sites\n * @memberof music21\n * @requires music21/common\n */\n\nimport * as common from './common';\nimport { Music21Exception } from './exceptions21';\n\n// for typing only...\nimport { Stream } from './stream';\n\n/**\n */\nexport class SitesException extends Music21Exception {}\n/**\n * SiteRef.site is held strongly in Javascript. This is\n * actually NOT a problem because of the difference between\n * the way JS Garbage Collection works from Python (in all\n * browsers since IE6...). They follow reference chains and\n * find unreachable references and don't just check reference\n * counts. Thus circular references still allow memory to be\n * garbage collected. Tested in Chrome on 100000 streams, and\n * very small additional memory usage.\n *\n * https://stackoverflow.com/questions/7347203/circular-references-in-javascript-garbage-collector\n */\nexport class SiteRef {\n isDead: boolean = false;\n classString: string;\n globalSiteIndex: boolean|number = false;\n siteIndex: number;\n site: Stream;\n}\n\nconst _NoneSiteRef = new SiteRef();\n_NoneSiteRef.globalSiteIndex = -2;\n_NoneSiteRef.siteIndex = -2;\n\nconst _singletonCounter = new common.SingletonCounter();\n\nconst GLOBAL_SITE_STATE_DICT = new WeakMap();\n\n/**\n * @memberOf music21.sites\n * @param {*} obj\n * @returns {number|string}\n */\nexport function getId(obj) {\n if (!GLOBAL_SITE_STATE_DICT.has(obj)) {\n const newId = _singletonCounter.call();\n GLOBAL_SITE_STATE_DICT.set(obj, newId);\n }\n return GLOBAL_SITE_STATE_DICT.get(obj);\n}\n\n/**\n * @memberOf music21.sites\n */\nexport class Sites {\n siteDict;\n protected _siteIndex: number = 0;\n protected _lastID: number = -1;\n\n constructor() {\n this.siteDict = new Map();\n this.siteDict.set(_NoneSiteRef.siteIndex, _NoneSiteRef);\n }\n\n get length(): number {\n return this.siteDict.size;\n }\n\n includes(checkSite: Stream): boolean {\n // noinspection JSUnusedLocalSymbols\n for (const [unused_key, siteRef] of this.siteDict) {\n if (siteRef.site === checkSite) {\n return true;\n }\n }\n return false;\n }\n\n /**\n *\n * @returns {Array<*>}\n */\n protected _keysByTime(newFirst: boolean = true) {\n const post = [];\n for (const [key, siteRef] of this.siteDict) {\n const keyVal = [siteRef.siteIndex, key];\n post.push(keyVal);\n }\n post.sort();\n if (newFirst) {\n post.reverse();\n }\n return post.map(innerList => innerList[1]);\n }\n\n add(obj, idKey=undefined, classString: string = undefined) {\n if (idKey === undefined && obj !== undefined) {\n idKey = getId(obj);\n }\n let updateNotAdd = false;\n if (this.siteDict.has(idKey)) {\n const tempSiteRef = this.siteDict.get(idKey);\n if (!tempSiteRef.isDead && tempSiteRef.site !== undefined) {\n updateNotAdd = true;\n }\n }\n if (obj !== undefined && classString === undefined) {\n classString = obj.classes[0];\n }\n\n let siteRef;\n if (updateNotAdd) {\n siteRef = this.siteDict.get(idKey);\n siteRef.isDead = false;\n } else {\n siteRef = new SiteRef();\n }\n\n siteRef.site = obj; // stores a weakRef;\n siteRef.classString = classString;\n siteRef.siteIndex = this._siteIndex;\n this._siteIndex += 1;\n siteRef.globalSiteIndex = _singletonCounter.call();\n\n if (!updateNotAdd) {\n this.siteDict.set(idKey, siteRef);\n }\n }\n\n /**\n * @param obj\n */\n remove(obj): boolean {\n const idKey = getId(obj);\n if (idKey === undefined) {\n return false;\n }\n return this.siteDict.delete(idKey);\n }\n\n clear(): void {\n this.siteDict = new Map();\n this.siteDict.set(_NoneSiteRef.siteIndex, _NoneSiteRef);\n this._lastID = -1;\n }\n\n /**\n */\n * yieldSites(\n sortByCreationTime: boolean|string = false,\n priorityTarget: Stream = undefined,\n excludeNone: boolean = false\n ): Generator {\n let keyRepository;\n if (sortByCreationTime === true) {\n keyRepository = this._keysByTime(false);\n } else if (sortByCreationTime === 'reverse') {\n keyRepository = this._keysByTime(true);\n } else {\n keyRepository = Array.from(this.siteDict.keys());\n }\n if (priorityTarget !== undefined) {\n const priorityId = getId(priorityTarget);\n if (keyRepository.includes(priorityId)) {\n const priorityIndex = keyRepository.indexOf(priorityId);\n keyRepository.splice(priorityIndex, 1);\n keyRepository.unshift(priorityId);\n }\n }\n for (const key of keyRepository) {\n const siteRef = this.siteDict.get(key);\n if (siteRef === _NoneSiteRef) {\n if (!excludeNone) {\n yield siteRef.site;\n }\n } else {\n const obj = siteRef.site;\n if (obj === undefined) {\n siteRef.isDead = true;\n } else {\n yield obj;\n }\n }\n }\n }\n\n get(\n sortByCreationTime: boolean = false,\n priorityTarget: Stream = undefined,\n excludeNone: boolean = false\n ): Stream[] {\n const post = Array.from(\n this.yieldSites(sortByCreationTime, priorityTarget, excludeNone)\n );\n\n // we do this resorting again, because the priority target might not match id and we\n // want to be extra safe. If you want fast, use .yieldSites\n if (priorityTarget !== undefined) {\n if (post.includes(priorityTarget)) {\n const priorityIndex = post.indexOf(priorityTarget);\n post.splice(priorityIndex, 1);\n post.unshift(priorityTarget);\n }\n }\n return post;\n }\n\n /**\n *\n * @param {string} attrName\n * @returns {undefined|*}\n */\n getAttrByName(attrName) {\n for (const obj of this.yieldSites('reverse')) {\n if (obj === undefined) {\n continue;\n }\n if (attrName in obj) {\n return obj[attrName];\n }\n }\n return undefined;\n }\n\n /**\n *\n * @param {string} className\n * @param {Object} [options]\n * @returns {Stream}\n */\n getObjByClass(className: string, options={}): Stream {\n const params = {\n callerFirst: this,\n sortByCreationTime: false,\n priorityTarget: undefined,\n getElementMethod: 'getElementAtOrBefore',\n memo: {},\n };\n common.merge(params, options);\n const memo = params.memo;\n let post;\n const objs = Array.from(\n this.yieldSites(\n params.sortByCreationTime,\n params.priorityTarget,\n true // excludeNone\n )\n );\n for (const obj of objs) {\n if (obj.isClassOrSubclass(className)) {\n post = obj;\n break;\n }\n }\n if (post !== undefined) {\n return post;\n }\n for (const obj of objs) {\n // TODO: check inside object... perhaps should not be done in m21p\n const objId = getId(obj);\n if (!(objId in memo)) {\n memo[objId] = obj;\n }\n post = obj.getContextByClass(className, params);\n if (post !== undefined) {\n break;\n }\n }\n return post;\n }\n}\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/stream -- Streams -- objects that hold other Music21Objects\n *\n * Does not implement the full features of music21p Streams by a long shot...\n *\n * Copyright (c) 2013-19, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006-19, Michael Scott Cuthbert\n * and cuthbertLab\n *\n * powerful stream module, See {@link music21.stream} namespace\n * @exports music21/stream\n *\n * Streams are powerful music21 objects that hold Music21Object collections,\n * such as {@link music21.note.Note} or music21.chord.Chord objects.\n *\n * Understanding the {@link Stream} object is of fundamental\n * importance for using music21. Definitely read the music21(python) tutorial\n * on using Streams before proceeding\n *\n * @namespace music21.stream\n * @memberof music21\n * @requires music21/base\n * @requires music21/renderOptions\n * @requires music21/clef\n * @requires music21/vfShow\n * @requires music21/duration\n * @requires music21/common\n * @requires music21/meter\n * @requires music21/pitch\n * @requires jQuery\n *\n */\nimport * as $ from 'jquery';\nimport * as MIDI from 'midicube';\nimport Vex from 'vexflow';\n\nimport { Music21Exception } from './exceptions21';\nimport { debug } from './debug';\n\nimport * as base from './base';\nimport * as clef from './clef';\nimport * as common from './common';\nimport { Duration } from './duration';\nimport * as instrument from './instrument';\nimport * as meter from './meter';\nimport * as note from './note';\nimport * as pitch from './pitch';\nimport * as renderOptions from './renderOptions';\nimport { svg_accidentals } from './svgs';\nimport * as tempo from './tempo';\nimport * as vfShow from './vfShow';\n\n// eslint-disable-next-line import/no-cycle\nimport { GeneralObjectExporter } from './musicxml/m21ToXml';\n\nimport * as filters from './stream/filters';\nimport * as iterator from './stream/iterator';\nimport * as makeNotation from './stream/makeNotation';\n\n// for typing only\nimport type {chord, key} from '../music21_modules';\n\nexport { filters };\nexport { iterator };\nexport { makeNotation };\n\nexport class StreamException extends Music21Exception {}\n\ndeclare interface Constructable {\n new() : T;\n}\n\n\nfunction _exportMusicXMLAsText(s) {\n const gox = new GeneralObjectExporter(s);\n return gox.parse();\n}\n\ninterface MakeAccidentalsParams {\n pitchPast?: pitch.Pitch[],\n pitchPastMeasure?: pitch.Pitch[],\n useKeySignature?: boolean | key.KeySignature,\n alteredPitches?: pitch.Pitch[],\n searchKeySignatureByContext?: boolean,\n cautionaryPitchClass?: boolean,\n cautionaryAll?: boolean,\n inPlace?: boolean,\n overrideStatus?: boolean,\n cautionaryNotImmediateRepeat?: boolean,\n tiePitchSet?: Set,\n}\n\n\n/**\n * A generic Stream class -- a holder for other music21 objects\n * Will be subclassed into {@link Score},\n * {@link Part},\n * {@link Measure},\n * {@link Voice}, but most functions will be found here.\n *\n * @property {number} length - (readonly) the number of elements in the stream.\n * @property {Duration} duration - the total duration of the stream's elements\n * @property {number} highestTime -- the highest time point in the stream's elements\n * @property {music21.clef.Clef} clef - the clef for the Stream (if there is\n * one; if there are multiple, then the first clef)\n * @property {music21.meter.TimeSignature} timeSignature - the first TimeSignature of the Stream\n * @property {music21.key.KeySignature} keySignature - the first KeySignature for the Stream\n * @property {renderOptions.RenderOptions} renderOptions - an object\n * specifying how to render the stream\n * @property {Stream} flat - (readonly) a flattened representation of the Stream\n * @property {StreamIterator} notes - (readonly) the stream with\n * only {@link music21.note.Note} and music21.chord.Chord objects included\n * @property {StreamIterator} notesAndRests - (readonly) like notes but\n * also with {@link music21.note.Rest} objects included\n * @property {StreamIterator} parts - (readonly) a filter on the Stream\n * to just get the parts (NON-recursive)\n * @property {StreamIterator} measures - (readonly) a filter on the\n * Stream to just get the measures (NON-recursive)\n * @property {number} tempo - tempo in beats per minute (will become more\n * sophisticated later, but for now the whole stream has one tempo\n * @property {music21.instrument.Instrument|undefined} instrument - an\n * instrument object associated with the stream (can be set with a\n * string also, but will return an `Instrument` object)\n * @property {boolean} autoBeam - whether the notes should be beamed automatically\n * or not (will be moved to `renderOptions` soon)\n * @property {Vex.Flow.Stave|undefined} activeVFStave - the current Stave object for the Stream\n * @property {music21.vfShow.Renderer|undefined} activeVFRenderer - the current\n * vfShow.Renderer object for the Stream\n * @property {int} [staffLines=5] - number of staff lines\n * @property {function|undefined} changedCallbackFunction - function to\n * call when the Stream changes through a standard interface\n * @property {number} maxSystemWidth - confusing... should be in renderOptions\n */\nexport class Stream extends base.Music21Object {\n static get className() { return 'music21.stream.Stream'; }\n\n // from music21p's core.py\n _offsetDict: WeakMap = new WeakMap();\n _elements: base.Music21Object[] = [];\n // TODO(msc): endElements\n isSorted: boolean = true;\n\n // from music21p's __init__.py\n // class attributes.\n isStream: boolean = true;\n isMeasure: boolean = false;\n classSortOrder: number = -20;\n recursionType: string = 'elementsFirst'; // this may change to an enum\n // TODO(msc): _styleClass\n\n // individual instance attributes\n // TODO(msc): StreamStatus\n // TODO(msc): _unlinkedDuration\n autoSort: boolean = true;\n isFlat: boolean = true;\n // TODO(msc): definesExplicitSystemBreaks\n // TODO(msc): definesExplicitPageBreaks\n // TODO(msc): _atSoundingPitch\n // TODO(msc): _mutable -- experimental\n\n // music21j specific attributes NOT to remove:\n activeVFStave: Vex.Flow.Stave = undefined;\n activeVFRenderer: vfShow.Renderer = undefined;\n changedCallbackFunction: Function = undefined; // for editable svg objects\n /**\n * A function bound to the current stream that\n * will change the stream. Used in editableAccidentalDOM, among other places.\n *\n * var can = s.appendNewDOM();\n * $(can).on('click', s.DOMChangerFunction);\n */\n DOMChangerFunction:\n (e: MouseEvent|TouchEvent|JQuery.MouseEventBase) => base.Music21Object|undefined;\n\n // music21j specific attributes eventually to remove:\n storedVexflowStave: Vex.Flow.Stave = undefined; // cannot figure out diff w/ activeVFStave\n\n activeNote: note.GeneralNote = undefined;\n _clef = undefined;\n displayClef = undefined;\n _keySignature = undefined; // a music21.key.KeySignature object\n _timeSignature = undefined; // a music21.meter.TimeSignature object\n _instrument = undefined;\n _autoBeam: boolean = undefined;\n renderOptions: renderOptions.RenderOptions = new renderOptions.RenderOptions();\n _tempo = undefined;\n staffLines: number = 5;\n _stopPlaying = false;\n _overriddenDuration: Duration = undefined;\n\n\n constructor() {\n super();\n this._cloneCallbacks.activeVexflowNote = false;\n this._cloneCallbacks.storedVexflowStave = false;\n this._cloneCallbacks._offsetDict = false;\n this._cloneCallbacks.renderOptions = function cloneRenderOptions(\n keyName,\n newObj,\n self: Stream,\n deep: boolean,\n memo\n ) {\n if (!deep) {\n newObj.renderOptions = self.renderOptions;\n } else {\n newObj.renderOptions = self.renderOptions.deepClone();\n }\n };\n\n this._cloneCallbacks._elements = function cloneElements(\n keyName,\n newObj,\n self,\n deep,\n memo,\n ) {\n if (!deep) {\n newObj.elements = self;\n return;\n }\n newObj.clear();\n for (let j = 0; j < self._elements.length; j++) {\n const el = self._elements[j];\n const elOffset = self.elementOffset(el);\n // console.log('cloning el: ', el.name);\n const elCopy = el.clone(true, memo);\n // there may be more efficient ways to do this,\n // but for now, safety trumps efficiency.\n newObj.insert(\n elOffset,\n elCopy,\n {\n ignoreSort: true,\n }\n );\n }\n // isSorted will be cloned elsewhere.\n };\n\n this.DOMChangerFunction = (e: MouseEvent|TouchEvent|JQuery.MouseEventBase) => {\n const canvasOrSVGElement = e.currentTarget;\n if (!(canvasOrSVGElement instanceof HTMLElement)\n && !(canvasOrSVGElement instanceof SVGElement)) {\n return undefined;\n }\n\n const [clickedDiatonicNoteNum, foundNote] = this.findNoteForClick(\n canvasOrSVGElement,\n e\n );\n if (foundNote === undefined) {\n if (debug) {\n console.log('No note found');\n }\n return undefined;\n }\n return this.noteChanged(\n clickedDiatonicNoteNum,\n foundNote as note.Note,\n canvasOrSVGElement\n );\n };\n // return new Proxy(this, {\n // get(target, n: PropertyKey) {\n // let name: PropertyKey;\n // name = parseInt(n.toString()); // need toString for Symbol.iterator\n // if (Number.isNaN(name)) {\n // name = n;\n // }\n // if (typeof name === 'number') {\n // return target.get(name as number);\n // } else {\n // return target[name];\n // }\n // },\n // set(target, n: PropertyKey, value) {\n // let name: PropertyKey;\n // name = parseInt(n.toString()); // need toString for Symbol.iterator\n // if (Number.isNaN(name)) {\n // name = n;\n // }\n // if (typeof name === 'number') {\n // target.set(name, value);\n // } else { // if (Object.prototype.hasOwnProperty.call(target, name)) {\n // target[name] = value;\n // }\n // return true;\n // },\n // });\n }\n\n /**\n *\n * @returns {IterableIterator}\n */\n * [Symbol.iterator](): IterableIterator {\n if (this.autoSort && !this.isSorted) {\n this.sort();\n }\n\n for (let i = 0; i < this.length; i++) {\n yield this.get(i);\n }\n }\n\n forEach(\n callback: (el: base.Music21Object, i: number, innerThis: any) => void,\n thisArg?: any\n ) {\n if (thisArg !== undefined) {\n callback = callback.bind(thisArg);\n }\n let i = 0;\n for (const el of this) {\n callback(el, i, this);\n i += 1;\n }\n }\n\n // TODO(MSC) 2020-07-20 -- Add .map() => stream.iterator.StreamIterator.map()\n\n get duration(): Duration {\n if (this._overriddenDuration instanceof Duration) {\n // return new duration.Duration(32.0);\n return this._overriddenDuration;\n }\n return new Duration(this.highestTime);\n }\n\n set duration(newDuration: Duration) {\n this._overriddenDuration = newDuration;\n }\n\n get highestTime(): number {\n let highestTime = 0.0;\n for (const el of this) {\n let endTime = el.offset;\n if (el.duration !== undefined) {\n endTime += el.duration.quarterLength;\n }\n if (endTime > highestTime) {\n highestTime = endTime;\n }\n }\n return highestTime;\n }\n\n get semiFlat(): this {\n return this._getFlatOrSemiFlat(true);\n }\n\n get flat(): this {\n return this._getFlatOrSemiFlat(false);\n }\n\n _getFlatOrSemiFlat(retainContainers): this {\n const newSt = this.clone(false);\n // console.log('done cloning...');\n if (!this.isFlat) {\n // not the most efficient, but safety counts for a lot...\n // namely, do not set inner streams activeSites to be\n // in things that they won't have later.\n newSt.clear();\n const ri = new iterator.RecursiveIterator(this, {\n restoreActiveSites: false,\n includeSelf: false,\n ignoreSorting: true,\n });\n for (const e of ri) {\n if (e.isStream && !retainContainers) {\n continue;\n }\n newSt.insert(\n ri.currentHierarchyOffset(),\n e,\n {\n setActiveSite: false,\n ignoreSort: true,\n }\n );\n }\n }\n if (!retainContainers) {\n newSt.isFlat = true;\n newSt.coreElementsChanged({ updateIsFlat: false });\n } else {\n newSt.coreElementsChanged();\n }\n return newSt as this;\n }\n\n get notes(): iterator.StreamIterator {\n return this.getElementsByClass(['Note', 'Chord']) as\n iterator.StreamIterator;\n }\n\n get notesAndRests(): iterator.StreamIterator {\n return this.getElementsByClass('GeneralNote') as iterator.StreamIterator;\n }\n\n get tempo(): number {\n if (this._tempo === undefined && this.activeSite !== undefined) {\n return this.activeSite.tempo;\n } else if (this._tempo === undefined) {\n return 150;\n } else {\n return this._tempo;\n }\n }\n\n set tempo(newTempo: number) {\n this._tempo = newTempo;\n }\n\n /**\n * Return an array of the outer bounds of each MetronomeMark in the stream.\n * [offsetStart, offsetEnd, tempo.MetronomeMark]\n *\n * @returns {Array}\n */\n _metronomeMarkBoundaries() {\n const mmBoundaries = [];\n const thisFlat = this.flat;\n const metronomeMarks = thisFlat.getElementsByClass('MetronomeMark');\n\n const highestTime = thisFlat.highestTime;\n const lowestOffset = 0;\n\n const mmDefault = new tempo.MetronomeMark({ number: 120 });\n\n if (!metronomeMarks.length) {\n mmBoundaries.push([lowestOffset, highestTime, mmDefault]);\n } else if (metronomeMarks.length === 1) {\n const metronomeMark = metronomeMarks.get(0);\n const offset = metronomeMark.getOffsetBySite(thisFlat);\n if (offset > lowestOffset) {\n mmBoundaries.push([lowestOffset, offset, mmDefault]);\n mmBoundaries.push([offset, highestTime, metronomeMark]);\n } else {\n mmBoundaries.push([lowestOffset, highestTime, metronomeMark]);\n }\n } else {\n const offsetPairs = [];\n for (let i = 0; i < metronomeMarks.length; i++) {\n const metronomeMark = metronomeMarks.get(i);\n offsetPairs.push([\n metronomeMark.getOffsetBySite(thisFlat),\n metronomeMark\n ]);\n }\n if (offsetPairs[0][0] > lowestOffset) {\n mmBoundaries.push([lowestOffset, offsetPairs[0][0], mmDefault]);\n }\n offsetPairs.forEach((offsetPair, i) => {\n if (i === offsetPairs.length - 1) {\n mmBoundaries.push([offsetPair[0], highestTime, offsetPair[1]]);\n } else {\n mmBoundaries.push([offsetPair[0], offsetPairs[i + 1][0], offsetPair[1]]);\n }\n });\n }\n return mmBoundaries;\n }\n\n /**\n * Return the average tempo within the span indicated by offset start and end.\n *\n * @param {number} oStart - offset start\n * @param {number} oEnd - offset end\n * @returns {number}\n */\n _averageTempo(oStart: number, oEnd: number): number {\n const overallDuration = oEnd - oStart;\n return this._metronomeMarkBoundaries().reduce((tempo, mm) => {\n if (mm[0] >= oStart && mm[0] < oEnd) {\n const overlapDur = mm[1] <= oEnd ? mm[1] - mm[0] : oEnd - mm[0];\n tempo += (overlapDur / overallDuration) * mm[2].number;\n } else if (mm[1] > oStart && mm[1] <= oEnd) {\n const overlapDur = mm[0] >= oStart ? mm[1] - mm[0] : mm[1] - oStart;\n tempo += (overlapDur / overallDuration) * mm[2].number;\n } else if (mm[0] <= oStart && mm[1] >= oEnd) {\n tempo = mm[2].number;\n }\n return tempo;\n }, 0);\n }\n\n\n /**\n * Note that .instrument will never return a string, but Typescript requires\n * that getter and setter are the same.\n */\n get instrument(): instrument.Instrument|string {\n if (this._instrument === undefined && this.activeSite !== undefined) {\n return this.activeSite.instrument;\n } else {\n return this._instrument;\n }\n }\n\n set instrument(newInstrument: instrument.Instrument|string) {\n if (typeof newInstrument === 'string') {\n newInstrument = new instrument.Instrument(newInstrument);\n }\n this._instrument = newInstrument;\n }\n\n /**\n * specialContext gets from a private attribute or from zero-position\n * or from site's first or special context.\n *\n * @private\n */\n _specialContext(attr: string): any {\n const privAttr = '_' + attr;\n if (this[privAttr] !== undefined) {\n return this[privAttr];\n }\n // should be:\n // const contextClef = this.getContextByClass('Clef');\n // const context = this.getContextByClass('Stream', { getElementMethod: 'getElementBefore' });\n // let contextObj;\n // if (context !== undefined && context !== this) {\n // contextObj = context[privAttr];\n // }\n for (const site of this.sites.yieldSites()) {\n if (site === undefined) {\n continue;\n }\n let contextObj = site._firstElementContext(attr);\n if (contextObj === undefined) {\n contextObj = site._specialContext(attr);\n }\n if (contextObj !== undefined) {\n return contextObj;\n }\n }\n return undefined;\n }\n\n /**\n * Get an attribute like 'keySignature' from an element with the\n * same class name (except 'KeySignature' instead of 'keySignature')\n * in the stream at position 0.\n *\n * @private\n */\n _firstElementContext(attr: string): base.Music21Object {\n const firstElements = this\n .getElementsByOffset(0.0)\n .getElementsByClass(attr.charAt(0).toUpperCase() + attr.slice(1));\n if (firstElements.length) {\n return firstElements.get(0);\n } else {\n return undefined;\n }\n }\n\n get clef(): clef.Clef {\n return this.getSpecialContext('clef', false) as clef.Clef;\n }\n\n set clef(newClef: clef.Clef) {\n const oldClef = this._firstElementContext('clef');\n if (oldClef !== undefined) {\n this.replace(oldClef, newClef);\n } else {\n this.insert(0.0, newClef);\n }\n this._clef = newClef;\n }\n\n get keySignature() {\n return this.getSpecialContext('keySignature', false);\n }\n\n set keySignature(newKeySignature) {\n const oldKS = this._firstElementContext('keySignature');\n if (oldKS !== undefined) {\n this.replace(oldKS, newKeySignature);\n } else {\n this.insert(0.0, newKeySignature);\n }\n this._keySignature = newKeySignature;\n }\n\n get timeSignature() {\n return this.getSpecialContext('timeSignature', false);\n }\n\n set timeSignature(newTimeSignature) {\n if (typeof newTimeSignature === 'string') {\n newTimeSignature = new meter.TimeSignature(newTimeSignature);\n }\n const oldTS = this._firstElementContext('timeSignature');\n if (oldTS !== undefined) {\n this.replace(oldTS, newTimeSignature);\n } else {\n this.insert(0.0, newTimeSignature);\n }\n this._timeSignature = newTimeSignature;\n }\n\n get autoBeam() {\n return this._specialContext('autoBeam');\n }\n\n set autoBeam(ab) {\n this._autoBeam = ab;\n }\n\n\n /**\n * maxSystemWidth starts at 750. It can then be changed\n * by renderOptions.maxSystemWidth, by activeSite's maxSystemWidth\n * (recursively); and then is scaled by renderOptions.scaleFactor.x\n *\n * Smaller scaleFactors lead to LARGER maxSystemWidth\n */\n get maxSystemWidth() {\n let baseMaxSystemWidth = 750;\n if (this.renderOptions.maxSystemWidth === undefined\n && this.activeSite !== undefined) {\n baseMaxSystemWidth = this.activeSite.maxSystemWidth;\n } else if (this.renderOptions.maxSystemWidth !== undefined) {\n baseMaxSystemWidth = this.renderOptions.maxSystemWidth;\n }\n return baseMaxSystemWidth / this.renderOptions.scaleFactor.x;\n }\n\n\n /**\n * Sets the renderOptions.maxSystemWidth after accounting for\n * scaleFactor\n */\n set maxSystemWidth(newSW) {\n this.renderOptions.maxSystemWidth\n = newSW * this.renderOptions.scaleFactor.x;\n }\n\n get parts(): iterator.StreamIterator {\n return this.getElementsByClass('Part') as iterator.StreamIterator;\n }\n\n // TODO -- replace w/ music21p version.\n get measures(): iterator.StreamIterator {\n return this.getElementsByClass('Measure') as iterator.StreamIterator;\n }\n\n get voices(): iterator.StreamIterator {\n return this.getElementsByClass('Voice') as iterator.StreamIterator;\n }\n\n get length(): number {\n return this._elements.length;\n }\n\n /**\n * Property: the elements in the stream returned as an Array and set\n * either from an Array or from another Stream. Setting from another Stream\n * will preserve the offsets.\n * DO NOT MODIFY individual components (consider it like a Python tuple)\n *\n * Note that a Stream is never returned from .elements,\n * but TypeScript requires getter and setters to have the same\n * function signature.\n */\n get elements(): base.Music21Object[]|Stream {\n if (!this.isSorted) {\n this.sort();\n }\n return this._elements;\n }\n\n set elements(newElements: base.Music21Object[]|Stream) {\n let highestOffsetSoFar = 0.0;\n this.clear();\n const tempInsert = [];\n let i;\n let thisEl;\n if (newElements instanceof Stream) {\n // iterate to set active site;\n for (const unused of newElements) {} // eslint-disable-line no-empty\n newElements = newElements.elements;\n }\n\n for (i = 0; i < newElements.length; i++) {\n thisEl = newElements[i];\n const thisElOffset = thisEl.offset;\n if (thisElOffset === undefined || thisElOffset === highestOffsetSoFar) {\n // append\n this._elements.push(thisEl);\n this.setElementOffset(thisEl, highestOffsetSoFar);\n thisEl.sites.add(this);\n if (thisEl.duration === undefined) {\n console.error('No duration for ', thisEl, ' in ', this);\n }\n highestOffsetSoFar += thisEl.duration.quarterLength;\n } else {\n // append -- slow\n tempInsert.push(thisEl);\n }\n }\n // console.warn('end', highestOffsetSoFar, tempInsert);\n for (i = 0; i < tempInsert.length; i++) {\n thisEl = tempInsert[i];\n this.insert(thisEl.offset, thisEl);\n }\n this.coreElementsChanged(); // would be called already if newElements != [];\n }\n\n /**\n * getSpecialContext is a transitional replacement for\n * .clef, .keySignature, .timeSignature that looks\n * for context to get the appropriate element as ._clef, etc.\n * as a way of making the older music21j attributes still work while\n * transitioning to a more music21p-like approach.\n *\n * May be removed\n */\n getSpecialContext(context, warnOnCall=false) {\n const first_el = this._firstElementContext(context);\n if (first_el !== undefined) {\n return first_el;\n }\n const special_context = this._specialContext(context);\n if (special_context === undefined) {\n return undefined;\n }\n if (warnOnCall) {\n console.warn(`Calling special context ${context}!`);\n }\n return special_context;\n }\n\n /**\n * Map as if this were an Array\n */\n map(func) {\n return Array.from(this).map(func);\n }\n\n filter(func) {\n return Array.from(this).filter(func);\n }\n\n clear() {\n for (const e of this._elements) {\n if (e.activeSite === this) {\n e.activeSite = undefined;\n }\n e.sites.remove(this);\n }\n\n this._elements = [];\n this._offsetDict = new WeakMap();\n this.isFlat = true;\n this.isSorted = true;\n }\n\n coreElementsChanged({\n updateIsFlat=true,\n clearIsSorted=true,\n memo=undefined, // unused\n keepIndex=false, // unused\n }={}) {\n if (clearIsSorted) {\n this.isSorted = false;\n }\n if (updateIsFlat) {\n this.isFlat = true;\n for (const e of this._elements) {\n if (e.isStream) {\n this.isFlat = false;\n break;\n }\n }\n }\n }\n\n recurse({\n streamsOnly=false,\n restoreActiveSites=true,\n classFilter=undefined,\n skipSelf=true,\n }={}) {\n const includeSelf = !skipSelf;\n const ri = new iterator.RecursiveIterator(\n this,\n {\n streamsOnly,\n restoreActiveSites,\n includeSelf,\n }\n );\n if (classFilter !== undefined) {\n ri.addFilter(new filters.ClassFilter(classFilter));\n }\n return ri;\n }\n\n /**\n * Add an element to the end of the stream, setting its `.offset` accordingly\n *\n * @param elOrElList - element\n * or list of elements to append\n * @returns {this}\n */\n append(elOrElList: base.Music21Object|base.Music21Object[]) {\n if (Array.isArray(elOrElList)) {\n for (const el of elOrElList) {\n this.append(el);\n }\n return this;\n }\n\n const el: base.Music21Object = elOrElList;\n if (!(el instanceof base.Music21Object)) {\n throw new Music21Exception('Can only append a music21 object.');\n }\n\n try {\n if (\n el.isClassOrSubclass !== undefined\n && el.isClassOrSubclass('NotRest')\n ) {\n // set stem direction on output...;\n }\n const elOffset = this.highestTime;\n this._elements.push(el);\n this.setElementOffset(el, elOffset);\n el.offset = elOffset;\n el.sites.add(this);\n el.activeSite = this;\n } catch (err) {\n console.error(\n 'Cannot append element ',\n el,\n ' to stream ',\n this,\n ' : ',\n err\n );\n }\n this.coreElementsChanged({ clearIsSorted: false });\n return this;\n }\n\n sort() {\n if (this.isSorted) {\n return this;\n }\n this._elements.sort((a, b) => this._offsetDict.get(a) - this._offsetDict.get(b)\n || a.priority - b.priority\n || a.classSortOrder - b.classSortOrder);\n this.isSorted = true;\n return this;\n }\n\n /**\n * Add an element to the specified place in the stream, setting its `.offset` accordingly\n *\n * @param {number} offset - offset to place.\n * @param {Music21Object} el - element to append\n * @param {Object} [config] -- configuration options\n * @param {boolean} [config.ignoreSort=false] -- do not sort\n * @param {boolean} [config.setActiveSite=true] -- set the active site for the inserted element.\n * @returns {this}\n */\n insert(\n offset: number,\n el: base.Music21Object,\n {\n ignoreSort=false,\n setActiveSite=true,\n }={}\n ) {\n if (el === undefined) {\n throw new StreamException('Cannot insert without an element.');\n }\n try {\n if (!ignoreSort) {\n if (offset <= this.highestTime) {\n this.isSorted = false;\n }\n }\n this._elements.push(el);\n this.setElementOffset(el, offset);\n el.sites.add(this);\n if (setActiveSite) {\n el.activeSite = this;\n }\n this.coreElementsChanged({ clearIsSorted: false });\n } catch (err) {\n console.error(\n 'Cannot insert element ',\n el,\n ' to stream ',\n this,\n ' : ',\n err\n );\n }\n return this;\n }\n\n /**\n * Inserts a single element at offset, shifting elements at or after it begins\n * later in the stream.\n *\n * In single argument form, assumes it is an element and takes the offset from the element.\n *\n * Unlike music21p, does not take a list of elements. TODO(msc): add this feature.\n *\n * @param {number|Music21Object} offset -- offset of the item to insert\n * @param {Music21Object|undefined} [elementOrNone] -- element.\n * @return {this}\n */\n insertAndShift(offset: number|base.Music21Object, elementOrNone?: base.Music21Object): this {\n let element;\n if (elementOrNone === undefined) {\n element = offset;\n offset = element.offset;\n } else {\n element = elementOrNone;\n if (typeof offset !== 'number') {\n throw new Error('offset must be a number if elementOrNone is not given');\n }\n }\n const amountToShift = element.duration.quarterLength;\n\n let shiftingOffsets = false;\n for (let i = 0; i < this.length; i++) {\n const existingEl = this._elements[i];\n const existingElOffset = this.elementOffset(existingEl);\n if (!shiftingOffsets && existingElOffset >= offset) {\n shiftingOffsets = true;\n }\n if (shiftingOffsets) {\n this.setElementOffset(existingEl, existingElOffset + amountToShift);\n }\n }\n this.insert(offset as number, element);\n return this;\n }\n\n /**\n * Return the first matched index\n */\n index(el: base.Music21Object) {\n if (!this.isSorted && this.autoSort) {\n this.sort();\n }\n const index = this._elements.indexOf(el);\n if (index === -1) {\n // endElements\n throw new StreamException(\n `cannot find object (${el}) in Stream`\n );\n }\n return index;\n }\n\n /**\n * Remove and return the last element in the stream,\n * or return undefined if the stream is empty\n */\n pop(): base.Music21Object|undefined {\n if (!this.isSorted && this.autoSort) {\n this.sort();\n }\n // remove last element;\n if (this.length > 0) {\n const el = this.get(-1);\n this._elements.pop();\n this._offsetDict.delete(el);\n el.sites.remove(this);\n this.coreElementsChanged({ clearIsSorted: false });\n return el;\n } else {\n return undefined;\n }\n }\n\n /**\n * Remove an object from this Stream. shiftOffsets and recurse do nothing.\n */\n remove(\n targetOrList: base.Music21Object|base.Music21Object[],\n {\n shiftOffsets=false,\n recurse=false,\n } = {}\n ) {\n if (shiftOffsets === true) {\n throw new StreamException('sorry cannot shiftOffsets yet');\n }\n if (recurse === true) {\n throw new StreamException('sorry cannot recurse yet');\n }\n\n let targetList: base.Music21Object[];\n if (!Array.isArray(targetOrList)) {\n targetList = [targetOrList];\n } else {\n targetList = targetOrList;\n }\n // if (targetList.length > 1) {\n // sort targetList\n // }\n // let shiftDur = 0.0; // for shiftOffsets\n let i = -1;\n for (const target of targetList) {\n i += 1;\n let indexInStream;\n try {\n indexInStream = this.index(target);\n } catch (err) {\n if (err instanceof StreamException) {\n if (recurse) {\n // do something\n }\n continue;\n }\n throw err;\n }\n\n // const matchOffset = this._offsetDict[indexInStream];\n // let match;\n // handle _endElements\n // let matchedEndElement = false;\n // let baseElementCount = this._elements.length;\n this._elements.splice(indexInStream, 1);\n this._offsetDict.delete(target);\n target.activeSite = undefined;\n target.sites.remove(this);\n // remove from sites if needed.\n\n // if (shiftOffsets) {\n // const matchDuration = target.duration.quarterLength;\n // const shiftedRegionStart = matchOffset + matchDuration;\n // shiftDur += matchDuration;\n // let shiftedRegionEnd;\n // if ((i + 1) < targetList.length) {\n // const nextElIndex = this.index(targetList[i + 1]);\n // const nextElOffset = this._offsetDict[nextElIndex];\n // shiftedRegionEnd = nextElOffset;\n // } else {\n // shiftedRegionEnd = this.duration.quarterLength;\n // }\n // if (shiftDur !== 0.0) {\n // for (const e of this.getElementsByOffset(\n // shiftedRegionStart,\n // shiftedRegionEnd,\n // {\n // includeEndBoundary: false,\n // mustFinishInSpan: false,\n // mustBeginInSpan: false,\n // }\n // )) {\n // const elementOffset = this.elementOffset(e);\n // this.setElementOffset(e, elementOffset - shiftDur);\n // }\n // }\n // }\n }\n this.coreElementsChanged({ clearIsSorted: false });\n }\n\n /**\n * Given a `target` object, replace it with\n * the supplied `replacement` object.\n *\n * `recurse` and `allDerived` do not currently work.\n *\n * Does nothing if target cannot be found.\n */\n replace(\n target: base.Music21Object,\n replacement: base.Music21Object,\n {\n recurse=false,\n allDerived=true,\n } = {}\n ) {\n try {\n this.index(target);\n } catch (err) {\n if (err instanceof StreamException) {\n return;\n } else {\n throw err;\n }\n }\n const targetOffset = this.elementOffset(target);\n this.remove(target);\n this.insert(targetOffset, replacement);\n this.coreElementsChanged({ clearIsSorted: false });\n }\n\n /**\n * Get the `index`th element from the Stream. Equivalent to the\n * music21p format of s[index] using __getitem__. Can use negative indexing to get from the end.\n *\n * Once Proxy objects are supported by all operating systems for\n *\n * @param {number} index - can be -1, -2, to index from the end, like python\n * @returns {Music21Object|undefined}\n */\n get(index: number): base.Music21Object {\n // substitute for Python stream __getitem__; supports -1 indexing, etc.\n if (!this.isSorted) {\n this.sort();\n }\n\n let el;\n if (index === undefined || Number.isNaN(index)) {\n return undefined;\n } else if (Math.abs(index) > this._elements.length) {\n return undefined;\n } else if (index === this._elements.length) {\n return undefined;\n } else if (index < 0) {\n el = this._elements[this._elements.length + index];\n el.activeSite = this;\n return el;\n } else {\n el = this._elements[index];\n el.activeSite = this;\n return el;\n }\n }\n\n /**\n *\n */\n set(index, newEl) {\n const replaceEl = this.get(index);\n if (replaceEl === undefined) {\n throw new StreamException(`Cannot set element at index ${index}.`);\n }\n this.replace(replaceEl, newEl);\n return this;\n }\n\n\n setElementOffset(el, value, addElement=false) {\n if (!this._elements.includes(el)) {\n if (addElement) {\n this.insert(value, el);\n return;\n } else {\n throw new StreamException(\n 'Cannot set the offset for element '\n + el.toString()\n + ', not in Stream'\n );\n }\n }\n this._offsetDict.set(el, value);\n el.activeSite = this;\n }\n\n elementOffset(element, stringReturns=false) {\n if (!this._offsetDict.has(element)) {\n throw new StreamException(\n 'An entry for this object ' + element.toString() + ' is not stored in this Stream.'\n );\n } else {\n return this._offsetDict.get(element);\n }\n }\n\n /* --- ############# END ELEMENT FUNCTIONS ########## --- */\n\n /**\n * Takes a stream and places all of its elements into\n * measures (:class:`~music21.stream.Measure` objects)\n * based on the :class:`~music21.meter.TimeSignature` objects\n * placed within\n * the stream. If no TimeSignatures are found in the\n * stream, a default of 4/4 is used.\n\n * If `options.inPlace` is true, the original Stream is modified and lost\n * if `options.inPlace` is False, this returns a modified deep copy.\n\n * @param {Object} [options]\n * @returns {Stream}\n */\n makeMeasures(options) {\n const params = {\n meterStream: undefined,\n refStreamOrTimeRange: undefined,\n searchContext: false,\n innerBarline: undefined,\n finalBarline: 'final',\n bestClef: false,\n inPlace: false,\n };\n common.merge(params, options);\n let voiceCount;\n if (this.hasVoices()) {\n voiceCount = this.getElementsByClass('Voice').length;\n } else {\n voiceCount = 0;\n }\n // MSC 2019 -- this was not working or even being used.\n // // meterStream\n // const meterStream = this.getElementsByClass('TimeSignature');\n // if (meterStream.length === 0) {\n // meterStream.append(this.timeSignature);\n // }\n\n // getContextByClass('Clef')\n const clefObj = this.getSpecialContext('clef') || this.getContextByClass('Clef');\n const offsetMap = this.offsetMap();\n let oMax = 0;\n for (let i = 0; i < offsetMap.length; i++) {\n if (offsetMap[i].endTime > oMax) {\n oMax = offsetMap[i].endTime;\n }\n }\n\n const classConstructor = > this.constructor;\n const post = new classConstructor();\n\n // derivation\n let o = 0.0;\n let measureCount = 0;\n let lastTimeSignature;\n let m;\n let mStart;\n while (measureCount === 0 || o < oMax) {\n m = new Measure();\n m.number = measureCount + 1;\n // var thisTimeSignature = meterStream.getElementAtOrBefore(o);\n const thisTimeSignature = this.timeSignature;\n if (thisTimeSignature === undefined) {\n break;\n }\n const oneMeasureLength\n = thisTimeSignature.barDuration.quarterLength;\n if (oneMeasureLength === 0) {\n // if for some reason we are advancing not at all, then get out!\n break;\n }\n if (measureCount === 0) {\n // simplified...\n }\n m.clef = clefObj;\n m.timeSignature = thisTimeSignature.clone();\n\n for (let voiceIndex = 0; voiceIndex < voiceCount; voiceIndex++) {\n const v = new Voice();\n v.id = voiceIndex;\n m.insert(0, v);\n }\n post.insert(o, m);\n o += oneMeasureLength;\n measureCount += 1;\n lastTimeSignature = thisTimeSignature;\n }\n for (let i = 0; i < offsetMap.length; i++) {\n const ob = offsetMap[i];\n const e = ob.element;\n const start = ob.offset;\n const voiceIndex = ob.voiceIndex;\n\n // if 'Spanner' in e.classes;\n lastTimeSignature = undefined;\n for (let j = 0; j < post.length; j++) {\n m = post.get(j); // nothing but measures...\n const foundTS = m.getSpecialContext('timeSignature');\n if (foundTS !== undefined) {\n lastTimeSignature = foundTS;\n }\n mStart = m.getOffsetBySite(post);\n let mEnd;\n if (lastTimeSignature !== undefined) {\n mEnd\n = mStart + lastTimeSignature.barDuration.quarterLength;\n } else {\n mEnd = mStart + 4.0;\n }\n if (start >= mStart && start < mEnd) {\n break;\n }\n }\n // if not match, raise Exception;\n const oNew = start - mStart;\n if (m.clef === e) {\n continue;\n }\n if (oNew === 0 && e.isClassOrSubclass('TimeSignature')) {\n continue;\n }\n let insertStream = m;\n if (voiceIndex !== undefined) {\n insertStream = m.getElementsByClass('Voice').get(voiceIndex);\n }\n insertStream.insert(oNew, e);\n }\n // set barlines, etc.\n if (params.inPlace !== true) {\n return post;\n } else {\n this.elements = [];\n // endElements\n // elementsChanged;\n for (const e of post) {\n this.insert(e.offset, e);\n }\n return this; // javascript style;\n }\n }\n\n containerInHierarchy(el, { setActiveSite=true }={}) {\n const elSites = el.sites;\n for (const s of this.recurse({\n skipSelf: false,\n streamsOnly: true,\n restoreActiveSites: false,\n })) {\n if (elSites.includes(s)) {\n if (setActiveSite) {\n el.activeSite = s;\n }\n return s;\n }\n }\n return undefined;\n }\n\n /**\n * chordify does not yet work...\n */\n chordify({\n addTies=true,\n addPartIdAsGroup=true,\n removeRedundantPitches=true,\n toSoundingPitch=true,\n }={}) {\n const workObj = this;\n let templateStream;\n if (this.hasPartLikeStreams()) {\n templateStream = workObj.getElementsByClass('Stream').get(0);\n } else {\n templateStream = workObj;\n }\n const template = templateStream.template({\n fillWithRests: false,\n removeClasses: ['GeneralNote'],\n retainVoices: false,\n });\n return template;\n }\n\n template({\n fillWithRests=true,\n removeClasses=[],\n retainVoices=true,\n }={}): this {\n const out = this.cloneEmpty('template');\n const restInfo = {\n offset: undefined,\n endTime: undefined,\n };\n const optionalAddRest = function optionalAddRest() {\n if (!fillWithRests) {\n return;\n }\n if (restInfo.offset === undefined) {\n return;\n }\n const restQL = restInfo.endTime - restInfo.offset;\n const restObj = new note.Rest();\n restObj.duration.quarterLength = restQL;\n out.insert(restInfo.offset, restObj);\n restInfo.offset = undefined;\n restInfo.endTime = undefined;\n };\n for (const el of this) {\n if (el.isStream\n && (retainVoices || el.classes.includes('Voice'))) {\n optionalAddRest();\n const outEl = (el as Stream).template({\n fillWithRests,\n removeClasses,\n retainVoices,\n });\n out.insert(el.offset, outEl);\n }\n }\n return out;\n }\n\n cloneEmpty(derivationMethod?: string): this {\n const returnObj = this.constructor();\n // TODO(msc): derivation\n returnObj.mergeAttributes(this);\n return returnObj;\n }\n\n /**\n *\n * @param {this} other\n * @returns {this}\n */\n mergeAttributes(other: Stream): this {\n super.mergeAttributes(other);\n for (const attr of [\n 'autoSort',\n 'isSorted',\n 'definesExplicitSystemBreaks',\n 'definesExplicitPageBreaks',\n '_atSoundingPitch',\n '_mutable',\n ]) {\n if (Object.prototype.hasOwnProperty.call(other, attr)) {\n this[attr] = other[attr];\n }\n }\n return this;\n }\n\n\n /**\n * makeNotation does not do anything yet, but it is a placeholder\n * so it can start to be called.\n *\n * TODO: move call to makeBeams from renderVexflow to here.\n */\n makeNotation({ inPlace=true }={}): this {\n let out;\n if (inPlace) {\n out = this;\n } else {\n out = this.clone(true);\n }\n this.makeAccidentals();\n return out;\n }\n\n\n /**\n * Return a new Stream or modify this stream\n * to have beams.\n *\n * Called from renderVexflow()\n */\n makeBeams(\n {\n inPlace=false,\n setStemDirections=true,\n }: makeNotation.MakeBeamsOptions={}\n ): this {\n return makeNotation.makeBeams(this, { inPlace, setStemDirections }) as this;\n }\n\n /**\n * Returns a boolean value showing if this\n * Stream contains any Parts or Part-like\n * sub-Streams.\n *\n * Will deal with Part-like sub-streams later\n * for now just checks for real Part objects.\n *\n * Part-like sub-streams are Streams that\n * contain Measures or Notes. And where no\n * sub-stream begins at an offset besides zero.\n */\n hasPartLikeStreams() {\n for (const el of this) {\n if (el.classes.includes('Part')) {\n return true;\n }\n }\n return false;\n }\n\n\n /**\n * Returns true if any note in the stream has lyrics, otherwise false\n *\n * @returns {boolean}\n */\n hasLyrics() {\n for (const el of this) {\n if ((el as note.Note).lyric !== undefined) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Returns a list of OffsetMap objects\n */\n offsetMap(): OffsetMap[] {\n const offsetMap = [];\n let groups = [];\n if (this.hasVoices()) {\n // TODO(msc) -- remove jQuery each...\n $.each(this.getElementsByClass('Voice'), (i, v) => {\n groups.push([v.flat, i]);\n });\n } else {\n groups = [[this, undefined]];\n }\n for (let i = 0; i < groups.length; i++) {\n const group = groups[i][0];\n const voiceIndex = groups[i][1];\n for (let j = 0; j < group.length; j++) {\n const e = group.get(j);\n const dur = e.duration.quarterLength;\n const offset = group.elementOffset(e);\n const endTime = offset + dur;\n const thisOffsetMap = new OffsetMap(\n e,\n offset,\n endTime,\n voiceIndex\n );\n offsetMap.push(thisOffsetMap);\n }\n }\n return offsetMap;\n }\n\n get iter(): iterator.StreamIterator {\n return new iterator.StreamIterator(this);\n }\n\n /**\n * Find all elements with a certain class; if an Array is given, then any\n * matching class will work.\n *\n * @param {string[]|string} classList - a list of classes to find\n */\n getElementsByClass(classList: string|string[]): iterator.StreamIterator {\n return this.iter.getElementsByClass(classList);\n }\n\n /**\n * Find all elements NOT with a certain class; if an Array is given, then any\n * matching class will work.\n *\n * @param {string[]|string} classList - a list of classes to find\n */\n getElementsNotOfClass(classList: string|string[]): iterator.StreamIterator {\n return this.iter.getElementsNotOfClass(classList);\n }\n\n // getElementsByClass(classList) {\n // const tempEls = [];\n // for (const thisEl of this) {\n // // console.warn(thisEl);\n // if (thisEl.isClassOrSubclass === undefined) {\n // console.error(\n // 'what the hell is a ',\n // thisEl,\n // 'doing in a Stream?'\n // );\n // } else if (thisEl.isClassOrSubclass(classList)) {\n // tempEls.push(thisEl);\n // }\n // }\n // const newSt = this.clone(false);\n // newSt.elements = tempEls;\n // return newSt;\n // }\n\n /**\n * Returns a new stream [StreamIterator does not yet exist in music21j]\n * containing all Music21Objects that are found at a certain offset or\n * within a certain offset time range (given the offsetStart and\n * (optional) offsetEnd values).\n *\n * See music21p documentation for the effect of various parameters.\n */\n getElementsByOffset(\n offsetStart: number,\n offsetEnd: number = undefined,\n {\n includeEndBoundary=true,\n mustFinishInSpan=false,\n mustBeginInSpan=true,\n includeElementsThatEndAtStart=true,\n classList=undefined,\n }={}\n ) {\n\n let s;\n if (classList !== undefined) {\n s = this.iter.getElementsByClass(classList);\n } else {\n s = this.iter;\n }\n s.getElementsByOffset(\n offsetStart,\n offsetEnd,\n {\n includeEndBoundary,\n mustFinishInSpan,\n mustBeginInSpan,\n includeElementsThatEndAtStart,\n }\n );\n return s;\n }\n\n /**\n * Given an element (from another Stream) returns the single element\n * in this Stream that is sounding while the given element starts.\n *\n * If there are multiple elements sounding at the moment it is\n * attacked, the method returns the first element of the same class\n * as this element, if any. If no element\n * is of the same class, then the first element encountered is\n * returned. For more complex usages, use allPlayingWhileSounding.\n *\n * Returns None if no elements fit the bill.\n *\n * The optional elStream is the stream in which el is found.\n * If provided, el's offset\n * in that Stream is used. Otherwise, the current offset in\n * el is used. It is just\n * in case you are paranoid that el.offset might not be what\n * you want, because of some fancy manipulation of\n * el.activeSite\n *\n * el is the object with an offset and class to search for.\n *\n * elStream is a place to get el's offset from. Otherwise activeSite is used\n */\n playingWhenAttacked(el: base.Music21Object, elStream?): base.Music21Object|undefined {\n let elOffset;\n if (elStream !== undefined) {\n elOffset = el.getOffsetBySite(elStream);\n } else {\n elOffset = el.offset;\n }\n\n const otherElements = this.getElementsByOffset(elOffset, elOffset, { mustBeginInSpan: false });\n if (otherElements.length === 0) {\n return undefined;\n } else if (otherElements.length === 1) {\n return otherElements.get(0);\n } else {\n for (const thisEl of otherElements) {\n if (el.constructor === thisEl.constructor) {\n return thisEl;\n }\n }\n return otherElements.get(0);\n }\n }\n\n\n /**\n A method to set and provide accidentals given various conditions and contexts.\n\n `pitchPast` is a list of pitches preceding this pitch in this measure.\n\n `pitchPastMeasure` is a list of pitches preceding this pitch but in a previous measure.\n\n If `useKeySignature` is True, a :class:`~music21.key.KeySignature` will be searched\n for in this Stream or this Stream's defined contexts. An alternative KeySignature\n can be supplied with this object and used for temporary pitch processing.\n\n If `alteredPitches` is a list of modified pitches (Pitches with Accidentals) that\n can be directly supplied to Accidental processing. These are the same values obtained\n from a :class:`music21.key.KeySignature` object using the\n :attr:`~music21.key.KeySignature.alteredPitches` property.\n\n If `cautionaryPitchClass` is True, comparisons to past accidentals are made regardless\n of register. That is, if a past sharp is found two octaves above a present natural,\n a natural sign is still displayed.\n\n If `cautionaryAll` is true, all accidentals are shown.\n\n If `overrideStatus` is true, this method will ignore any current `displayStatus` stetting\n found on the Accidental. By default this does not happen. If `displayStatus` is set to\n None, the Accidental's `displayStatus` is set.\n\n If `cautionaryNotImmediateRepeat` is true, cautionary accidentals will be displayed for\n an altered pitch even if that pitch had already been displayed as altered.\n\n If `tiePitchSet` is not None it should be a set of `.nameWithOctave` strings\n to determine whether following accidentals should be shown because the last\n note of the same pitch had a start or continue tie.\n\n If `searchKeySignatureByContext` is true then keySignatures from the context of the\n stream will be used if none found. (DOES NOT WORK YET)\n\n The :meth:`~music21.pitch.Pitch.updateAccidentalDisplay` method is used to determine if\n an accidental is necessary.\n\n This will assume that the complete Stream is the context of evaluation. For smaller context\n ranges, call this on Measure objects.\n\n If `inPlace` is True, this is done in-place; if `inPlace` is False,\n this returns a modified deep copy.\n\n TODO: inPlace default will become False in when music21p v.7 is released.\n\n Called automatically before appendDOM routines are called.\n */\n makeAccidentals({\n pitchPast=[],\n pitchPastMeasure=[],\n useKeySignature=true,\n alteredPitches=[],\n searchKeySignatureByContext=false, // not yet used.\n cautionaryPitchClass=true,\n cautionaryAll=false,\n inPlace=true,\n overrideStatus=false,\n cautionaryNotImmediateRepeat=true,\n tiePitchSet=new Set(),\n } : MakeAccidentalsParams = {}) : this {\n let returnObj: this;\n if (inPlace) {\n returnObj = this;\n } else {\n returnObj = this.clone(true);\n }\n let ks: key.KeySignature;\n if (useKeySignature === true) {\n ks = this.keySignature ?? this.getContextByClass('KeySignature');\n } else if (useKeySignature !== false) {\n ks = useKeySignature as key.KeySignature;\n }\n if (ks !== undefined) {\n const addAlterPitches = ks.alteredPitches;\n alteredPitches.push(...addAlterPitches);\n }\n\n const noteIterator = returnObj.recurse().notesAndRests;\n\n for (const e of noteIterator) {\n if ((e as base.Music21Object).classes.includes('Note')) {\n const p = (e as note.Note).pitch;\n const lastNoteWasTied: boolean = tiePitchSet.has(p.nameWithOctave);\n\n p.updateAccidentalDisplay({\n pitchPast,\n pitchPastMeasure,\n alteredPitches,\n cautionaryPitchClass,\n cautionaryAll,\n overrideStatus,\n cautionaryNotImmediateRepeat,\n lastNoteWasTied,\n });\n pitchPast.push(p);\n\n tiePitchSet.clear();\n const tie = (e as note.Note).tie;\n if (tie !== undefined && tie.type !== 'stop') {\n tiePitchSet.add(p.nameWithOctave);\n }\n } else if ((e as base.Music21Object).classes.includes('Chord')) {\n const chordNotes = (e as chord.Chord).notes;\n const seenPitchNames: Set = new Set();\n for (const n of chordNotes) {\n const p = n.pitch;\n const lastNoteWasTied: boolean = tiePitchSet.has(p.nameWithOctave);\n\n p.updateAccidentalDisplay({\n pitchPast,\n pitchPastMeasure,\n alteredPitches,\n cautionaryPitchClass,\n cautionaryAll,\n overrideStatus,\n cautionaryNotImmediateRepeat,\n lastNoteWasTied,\n });\n\n if (n.tie !== undefined && n.tie.type !== 'stop') {\n seenPitchNames.add(p.nameWithOctave);\n }\n }\n tiePitchSet.clear();\n for (const pName of seenPitchNames) {\n tiePitchSet.add(pName);\n }\n pitchPast.push(...(e as chord.Chord).pitches);\n } else {\n tiePitchSet.clear();\n }\n\n }\n return returnObj;\n }\n\n /**\n * Sets the render options for any substreams (such as placing them\n * in systems, etc.) DOES NOTHING for music21.stream.Stream, but is\n * overridden in subclasses.\n *\n * @returns {this}\n */\n setSubstreamRenderOptions() {\n /* does nothing for standard streams ... */\n return this;\n }\n\n /**\n * Resets all the RenderOptions back to defaults. Can run recursively\n * and can also preserve the `RenderOptions.events` object.\n *\n * @param {boolean} [recursive=false]\n * @param {boolean} [preserveEvents=false]\n * @returns {this}\n */\n resetRenderOptions(recursive, preserveEvents) {\n const oldEvents = this.renderOptions.events;\n this.renderOptions = new renderOptions.RenderOptions();\n if (preserveEvents) {\n this.renderOptions.events = oldEvents;\n }\n\n if (recursive) {\n for (const el of this) {\n if (el.isClassOrSubclass('Stream')) {\n (el as Stream).resetRenderOptions(recursive, preserveEvents);\n }\n }\n }\n return this;\n }\n\n // * ********* VexFlow functionality\n\n write(format='musicxml') {\n return _exportMusicXMLAsText(this);\n }\n\n\n /**\n * Uses {@link music21.vfShow.Renderer} to render Vexflow onto an\n * existing canvas or SVG object.\n *\n * Runs `this.setRenderInteraction` on the canvas.\n *\n * Will be moved to vfShow eventually when converter objects are enabled...maybe.\n *\n * @param {jQuery|HTMLElement} $canvasOrSVG - a canvas or the div surrounding an SVG object\n * @returns {music21.vfShow.Renderer}\n */\n renderVexflow($canvasOrSVG) {\n /**\n * @type {HTMLElement|undefined}\n */\n let canvasOrSVG;\n if ($canvasOrSVG instanceof $) {\n canvasOrSVG = $canvasOrSVG[0];\n } else {\n canvasOrSVG = $canvasOrSVG;\n }\n const DOMContains = document.body.contains(canvasOrSVG);\n if (!DOMContains) {\n // temporarily add to DOM so Firefox can measure it...\n document.body.appendChild(canvasOrSVG);\n }\n const tagName = canvasOrSVG.tagName.toLowerCase();\n\n if (this.autoBeam === true) {\n try {\n this.makeBeams({ inPlace: true });\n } catch (e) {\n if (!e.toString().includes('Time Signature')) {\n throw e;\n }\n }\n }\n const vfr = new vfShow.Renderer(this, canvasOrSVG);\n if (tagName === 'canvas') {\n vfr.rendererType = 'canvas';\n } else if (tagName === 'svg') {\n vfr.rendererType = 'svg';\n }\n vfr.render();\n this.setRenderInteraction(canvasOrSVG);\n this.activeVFRenderer = vfr;\n if (!DOMContains) {\n // remove the adding to DOM so that Firefox could measure it...\n document.body.removeChild(canvasOrSVG);\n }\n\n return vfr;\n }\n\n /**\n * Estimate the stream height for the Stream.\n *\n * If there are systems they will be incorporated into the height unless `ignoreSystems` is `true`.\n *\n * @returns {number} height in pixels\n */\n estimateStreamHeight({ignoreSystems=false, ignoreMarginBottom=false}={}): number {\n const staffHeight = this.renderOptions.staffAreaHeight;\n const marginBottom = this.renderOptions.marginBottom; // extra at end.\n const systemPadding = this.renderOptions.systemPadding;\n let numSystems;\n if (this instanceof Score) {\n const numParts = this.parts.length;\n numSystems = this.numSystems();\n if (ignoreSystems) {\n numSystems = 1;\n }\n let scoreHeight\n = numSystems * staffHeight * numParts\n + (numSystems - 1) * systemPadding;\n\n if (!ignoreMarginBottom) {\n scoreHeight += marginBottom;\n }\n\n // TODO(msc) -- Fix and Remove\n if (numSystems > 1) {\n // needs a little extra padding for some reason...\n scoreHeight += systemPadding / 2;\n }\n\n // console.log('scoreHeight of ' + scoreHeight);\n return scoreHeight;\n } else if (this instanceof Part) {\n numSystems = 1;\n if (!ignoreSystems) {\n numSystems = this.numSystems();\n }\n if (debug) {\n console.log(\n 'estimateStreamHeight for Part: numSystems ['\n + numSystems\n + '] * staffHeight ['\n + staffHeight\n + '] + (numSystems ['\n + numSystems\n + '] - 1) * systemPadding ['\n + systemPadding\n + '].'\n );\n }\n let partHeight = numSystems * staffHeight + (numSystems - 1) * systemPadding;\n if (!ignoreMarginBottom) {\n partHeight += marginBottom;\n }\n return partHeight;\n } else {\n if (!ignoreMarginBottom) {\n return staffHeight + marginBottom;\n } else {\n return staffHeight;\n }\n }\n }\n\n /**\n * Estimates the length of the Stream in pixels.\n *\n * @returns {number} length in pixels\n */\n estimateStaffLength() {\n let i;\n let totalLength;\n if (this.renderOptions.overriddenWidth !== undefined) {\n // console.log('Overridden staff width: ' + this.renderOptions.overriddenWidth);\n return this.renderOptions.overriddenWidth;\n }\n if (this.hasVoices()) {\n let maxLength = 0;\n for (const v of this) {\n if (v instanceof Stream) {\n const thisLength\n = v.estimateStaffLength() + v.renderOptions.staffPadding;\n if (thisLength > maxLength) {\n maxLength = thisLength;\n }\n }\n }\n return maxLength;\n } else if (!this.isFlat) {\n // part\n totalLength = 0;\n for (i = 0; i < this.length; i++) {\n const m = this.get(i);\n if (m instanceof Stream) {\n totalLength\n += m.estimateStaffLength() + m.renderOptions.staffPadding;\n if (i !== 0 && m.renderOptions.startNewSystem === true) {\n break;\n }\n }\n }\n return totalLength;\n } else {\n const rendOp = this.renderOptions;\n totalLength = 30 * this.notesAndRests.length;\n if (rendOp.displayClef) {\n totalLength += 30;\n }\n if (rendOp.displayKeySignature) {\n const ks = this.getSpecialContext('keySignature');\n totalLength += ks?.width ?? 0;\n }\n if (rendOp.displayTimeSignature) {\n totalLength += 30;\n }\n // totalLength += rendOp.staffPadding;\n return totalLength;\n }\n }\n\n /**\n * Returns either (1) a Stream containing Elements\n * (that wrap the null object) whose offsets and durations\n * are the length of gaps in the Stream\n * or (2) null if there are no gaps.\n * @returns {object}\n */\n findGaps() {\n if (!this.isSorted && this.autoSort) {\n this.sort();\n }\n const sortedElements = this.elements;\n let elementDuration = 0;\n const gapStream = new Stream(); // cloneEmpty does not work, created new obj\n let highestCurrentEndTime = 0.0;\n for (const element of sortedElements) {\n if (element) {\n if (element.offset > highestCurrentEndTime) {\n const gapElement = new base.Music21Object();\n const gapQuarterLength = element.offset - highestCurrentEndTime;\n gapElement.duration = this.duration;\n gapElement.duration.quarterLength = gapQuarterLength;\n gapStream.insert(highestCurrentEndTime, gapElement);\n } if ('duration' in element && element.duration !== null) {\n elementDuration = element.duration.quarterLength;\n } else {\n elementDuration = 0;\n }\n highestCurrentEndTime = (\n Math.max(highestCurrentEndTime, element.offset + elementDuration)\n );\n }\n }\n gapStream.sort();\n if (gapStream.elements.length) {\n return gapStream;\n }\n return null;\n }\n\n /**\n * Returns True if there are no gaps between the lowest offset and the highest time.\n * Otherwise returns False\n *\n * @returns {boolean}\n */\n\n get isGapless() {\n return (this.findGaps() === null);\n }\n\n // * ***** MIDI related routines...\n\n /**\n * Plays the Stream through the MIDI/sound playback (for now, only MIDI.js is supported)\n *\n * `options` can be an object containing:\n * - instrument: {@link `music`21.instrument.Instrument} object (default, `this.instrument`)\n * - tempo: number (default, `this.tempo`)\n *\n * @param {Object} [options] - object of playback options\n * @returns {this}\n */\n playStream(options={}) {\n const params = {\n instrument: this.instrument,\n tempo: this.tempo,\n done: undefined,\n startNote: undefined,\n };\n common.merge(params, options);\n const startNoteIndex = params.startNote;\n let currentNoteIndex = 0;\n if (startNoteIndex !== undefined) {\n currentNoteIndex = startNoteIndex;\n }\n const thisFlat = this.flat;\n const flatEls = [];\n for (const el of thisFlat) {\n flatEls.push(el);\n }\n const lastNoteIndex = flatEls.length - 1;\n this._stopPlaying = false;\n\n const playNext = (elements, params) => {\n if (currentNoteIndex <= lastNoteIndex && !this._stopPlaying) {\n const el = elements[currentNoteIndex];\n let nextNote;\n let playDuration;\n if (currentNoteIndex < lastNoteIndex) {\n nextNote = elements[currentNoteIndex + 1];\n playDuration = thisFlat.elementOffset(nextNote) - thisFlat.elementOffset(el);\n } else {\n playDuration = el.duration.quarterLength;\n }\n const milliseconds = playDuration * 1000 * 60 / params.tempo;\n\n // when we're ready to do full-on tempo marks: from JV.\n // const nextOffset = nextNote ? nextNote.offset : el.offset + el.duration.quarterLength;\n // const tempo = thisStream._averageTempo(el.offset, nextOffset);\n // const milliseconds = playDuration * 1000 * 60 / tempo;\n\n if (debug) {\n console.log(\n 'playing: ',\n el,\n playDuration,\n milliseconds,\n params.tempo\n );\n }\n\n if (el.playMidi !== undefined) {\n el.playMidi(params.tempo, nextNote, params);\n }\n currentNoteIndex += 1;\n setTimeout(() => {\n playNext(elements, params);\n }, milliseconds);\n } else if (params && params.done) {\n params.done.call();\n }\n };\n playNext(flatEls, params);\n return this;\n }\n\n /**\n * Stops a stream from playing if it currently is.\n *\n * @returns {this}\n */\n stopPlayStream() {\n // turns off all currently playing MIDI notes (on any stream) and stops playback.\n this._stopPlaying = true;\n for (let i = 0; i < 127; i++) {\n MIDI.noteOff(0, i, 0);\n }\n return this;\n }\n /* ----------------------------------------------------------------------\n *\n * SVG/Canvas DOM routines -- to be factored out eventually.\n *\n */\n\n /**\n * Creates and returns a new `<canvas>` or `<svg>` object.\n *\n * Calls setSubstreamRenderOptions() first.\n *\n * Does not render on the DOM element.\n *\n * elementType can be `svg` (default) or `canvas`\n *\n * returns a $div encompasing either the SVG or Canvas element.\n *\n * if width is undefined, will use `this.estimateStaffLength()`\n * + `this.renderOptions.staffPadding`\n *\n * if height is undefined will use\n * `this.renderOptions.height`. If still undefined, will use\n * `this.estimateStreamHeight()`\n */\n createNewDOM(\n width?: number|string,\n height?: number|string,\n elementType='svg'\n ): JQuery|JQuery {\n if (!this.isFlat) {\n this.setSubstreamRenderOptions();\n }\n\n let $newCanvasOrDIV;\n\n if (elementType === 'svg') {\n // we render SVG on a Div for Vexflow\n $newCanvasOrDIV = $('
') as JQuery;\n } else if (elementType === 'canvas') {\n $newCanvasOrDIV = $('') as JQuery;\n }\n\n $newCanvasOrDIV.addClass('streamHolding'); // .css('border', '1px red solid');\n $newCanvasOrDIV.css('display', 'inline-block');\n\n if (width !== undefined) {\n if (typeof width === 'string') {\n width = common.stripPx(width);\n }\n $newCanvasOrDIV.attr('width', width);\n } else {\n const computedWidth\n = this.estimateStaffLength()\n + this.renderOptions.staffPadding;\n $newCanvasOrDIV.attr('width', computedWidth);\n }\n if (height !== undefined) {\n $newCanvasOrDIV.attr('height', height);\n } else {\n let computedHeight;\n if (this.renderOptions.height === undefined) {\n computedHeight = this.estimateStreamHeight();\n // console.log('computed Height estimate: ' + computedHeight);\n } else {\n computedHeight = this.renderOptions.height;\n // console.log('computed Height: ' + computedHeight);\n }\n $newCanvasOrDIV.attr(\n 'height',\n computedHeight * this.renderOptions.scaleFactor.y\n );\n }\n return $newCanvasOrDIV;\n }\n\n /**\n * Creates a rendered, playable svg where clicking plays it.\n *\n * Called from appendNewDOM() etc.\n *\n * @param {number|string|undefined} [width]\n * @param {number|string|undefined} [height]\n * @param {string} [elementType='svg'] - what type of element, default = svg\n * @returns {JQuery} canvas or svg\n */\n createPlayableDOM(\n width: number|string|undefined = undefined,\n height: number|string|undefined = undefined,\n elementType='svg'\n ): JQuery {\n this.renderOptions.events.click = 'play';\n return this.createDOM(width, height, elementType);\n }\n\n /**\n * Creates a new svg and renders vexflow on it\n *\n * @param {number|string|undefined} [width]\n * @param {number|string|undefined} [height]\n * @param {string} elementType - what type of element svg or canvas, default = svg\n * @returns {JQuery} canvas or SVG\n */\n createDOM(\n width: number|string|undefined = undefined,\n height: number|string|undefined = undefined,\n elementType: string = 'svg'\n ): JQuery {\n const $newSvg = this.createNewDOM(width, height, elementType);\n // temporarily append the SVG to the document to fix a Firefox bug\n // where nothing can be measured unless is it in the document.\n this.renderVexflow($newSvg);\n return $newSvg;\n }\n\n /**\n * Creates a new canvas, renders vexflow on it, and appends it to the DOM.\n *\n * @param {JQuery|HTMLElement} [appendElement=document.body] - where to place the svg\n * @param {number|string} [width]\n * @param {number|string} [height]\n * @param {string} elementType - what type of element, default = svg\n * @returns {SVGElement|HTMLElement} svg (not the jQuery object --\n * this is a difference with other routines and should be fixed. TODO: FIX)\n *\n */\n appendNewDOM(\n appendElement: JQuery|HTMLElement = document.body,\n width: number|string = undefined,\n height: number|string = undefined,\n elementType: string = 'svg'\n ): HTMLElement {\n // noinspection JSMismatchedCollectionQueryUpdate\n let $appendElement: JQuery;\n if (appendElement instanceof $) {\n $appendElement = appendElement;\n } else {\n $appendElement = $(appendElement);\n }\n\n // if (width === undefined && this.renderOptions.maxSystemWidth === undefined) {\n // var $bodyElement = bodyElement;\n // if (!(bodyElement instanceof $) {\n // $bodyElement = $(bodyElement);\n // }\n // width = $bodyElement.width();\n // };\n\n const $svgOrCanvasBlock = this.createDOM(width, height, elementType);\n $appendElement.append($svgOrCanvasBlock);\n return $svgOrCanvasBlock[0];\n }\n\n /**\n * Replaces a particular Svg with a new rendering of one.\n *\n * Note that if 'where' is empty, will replace all svg elements on the page.\n *\n * @param {JQuery|HTMLElement} [where] - the canvas or SVG to replace or\n * a container holding the canvas(es) to replace.\n * @param {boolean} [preserveSvgSize=false]\n * @param {string} elementType - what type of element, default = svg\n * @returns {JQuery} the svg\n */\n replaceDOM(where, preserveSvgSize: boolean=false, elementType: string='svg') {\n // if called with no where, replaces all the svg elements on the page...\n if (where === undefined) {\n where = document.body;\n }\n let $where;\n if (!(where instanceof $)) {\n $where = $(where);\n } else {\n $where = where;\n // where = $where[0];\n }\n let $oldSVGOrCanvas;\n\n if ($where.hasClass('streamHolding')) {\n $oldSVGOrCanvas = $where;\n } else {\n $oldSVGOrCanvas = $where.find('.streamHolding');\n }\n // TODO: Max Width!\n if ($oldSVGOrCanvas.length === 0) {\n throw new Music21Exception('No svg defined for replaceDOM!');\n } else if ($oldSVGOrCanvas.length > 1) {\n // change last svg...\n // replacing each with svgBlock doesn't work\n // anyhow, it just resizes the svg but doesn't\n // draw.\n $oldSVGOrCanvas = $($oldSVGOrCanvas[$oldSVGOrCanvas.length - 1]);\n }\n\n let svgBlock;\n if (preserveSvgSize) {\n const width = $oldSVGOrCanvas.width() || parseInt($oldSVGOrCanvas.attr('width'));\n const height = $oldSVGOrCanvas.attr('height'); // height manipulates\n svgBlock = this.createDOM(width, height, elementType);\n } else {\n svgBlock = this.createDOM(undefined, undefined, elementType);\n }\n\n $oldSVGOrCanvas.replaceWith(svgBlock);\n return svgBlock;\n }\n\n\n /**\n * Set the type of interaction on the svg based on\n * - Stream.renderOptions.events.click\n * - Stream.renderOptions.events.dblclick\n * - Stream.renderOptions.events.resize\n *\n * Currently the only options available for each are:\n * - 'play' (string)\n * - 'reflow' (string; only on event.resize)\n * - customFunction (will receive event as a first variable; should set up a way to\n * find the original stream; var s = this; var f = function () { s...}\n * )\n *\n * @param {JQuery|HTMLElement} canvasOrDiv - canvas or the Div surrounding it.\n * @returns {this}\n */\n setRenderInteraction(canvasOrDiv: JQuery|HTMLElement) {\n let $svg;\n if (canvasOrDiv === undefined) {\n return this;\n } else if (!(canvasOrDiv instanceof $)) {\n $svg = $(canvasOrDiv);\n } else {\n $svg = canvasOrDiv;\n }\n const playFunc = () => {\n this.playStream();\n };\n\n for (const [eventType, eventFunction] of Object.entries(this.renderOptions.events)) {\n $svg.off(eventType);\n if (\n typeof eventFunction === 'string'\n && eventFunction === 'play'\n ) {\n $svg.on(eventType, playFunc);\n } else if (\n typeof eventFunction === 'string'\n && eventType === 'resize'\n && eventFunction === 'reflow'\n ) {\n this.windowReflowStart($svg);\n } else if (eventFunction !== undefined) {\n const eventFunctionTyped = eventFunction;\n $svg.on(eventType, eventFunctionTyped);\n }\n }\n return this;\n }\n\n /**\n *\n * Recursively search downward for the closest storedVexflowStave...\n *\n * @returns {Vex.Flow.Stave|undefined}\n */\n recursiveGetStoredVexflowStave() {\n const storedVexflowStave = this.storedVexflowStave;\n if (storedVexflowStave === undefined) {\n if (this.isFlat) {\n return undefined;\n } else {\n const subStreams = this.getElementsByClass('Stream') as\n iterator.StreamIterator;\n const first_subStream = subStreams.get(0);\n return first_subStream.recursiveGetStoredVexflowStave();\n }\n }\n return storedVexflowStave;\n }\n\n /**\n * Given a mouse click, or other event with .pageX and .pageY,\n * find the x and y for the svg.\n *\n * returns {Array} two-elements, [x, y] in pixels.\n */\n getUnscaledXYforDOM(\n svg,\n e: MouseEvent|TouchEvent|JQuery.MouseEventBase\n ): [number, number] {\n let offset;\n if (svg === undefined) {\n offset = { left: 0, top: 0 };\n } else {\n offset = $(svg).offset();\n }\n\n /*\n * mouse event handler code originally from: http://diveintohtml5.org/canvas.html\n */\n let xClick: number;\n let yClick: number;\n if ((e instanceof MouseEvent || e instanceof $.Event)\n && (e as MouseEvent).pageX !== undefined\n && (e as MouseEvent).pageY !== undefined) {\n xClick = (e as MouseEvent).pageX;\n yClick = (e as MouseEvent).pageY;\n } else if (typeof TouchEvent !== 'undefined' && e instanceof TouchEvent) {\n const touch1 = (e as TouchEvent).touches[0];\n xClick\n = touch1.clientX\n + document.body.scrollLeft\n + document.documentElement.scrollLeft;\n yClick\n = touch1.clientY\n + document.body.scrollTop\n + document.documentElement.scrollTop;\n } else {\n console.error(`what are you? ${typeof e}`);\n xClick\n = (e as MouseEvent).clientX\n + document.body.scrollLeft\n + document.documentElement.scrollLeft;\n yClick\n = (e as MouseEvent).clientY\n + document.body.scrollTop\n + document.documentElement.scrollTop;\n }\n const xPx = xClick - offset.left;\n const yPx = yClick - offset.top;\n return [xPx, yPx];\n }\n\n /**\n * return a list of [scaledX, scaledY] for\n * a svg element.\n *\n * xScaled refers to 1/scaleFactor.x -- for instance, scaleFactor.x = 0.7 (default)\n * x of 1 gives 1.42857...\n *\n */\n getScaledXYforDOM(\n svg: HTMLElement|SVGElement,\n e: MouseEvent|TouchEvent|JQuery.MouseEventBase\n ): [number, number] {\n const [xPx, yPx] = this.getUnscaledXYforDOM(svg, e);\n const pixelScaling = this.renderOptions.scaleFactor;\n\n const yPxScaled = yPx / pixelScaling.y;\n const xPxScaled = xPx / pixelScaling.x;\n return [xPxScaled, yPxScaled];\n }\n\n /**\n *\n * Given a Y position find the diatonicNoteNum that a note at that position would have.\n *\n * searches this.storedVexflowStave\n *\n * Y position must be offset from the start of the stave...\n */\n diatonicNoteNumFromScaledY(yPxScaled: number): number {\n const storedVexflowStave = this.recursiveGetStoredVexflowStave();\n if (storedVexflowStave === undefined) {\n throw new StreamException('Could not find vexflowStave for getting size');\n }\n\n // for (var i = -10; i < 10; i++) {\n // console.log('line: ' + i + ' y: ' + storedVexflowStave.getYForLine(i));\n // }\n const thisClef = this.clef || this.getContextByClass('Clef');\n\n // TODO: on music21p percussion clef defines no lowest line, but does in music21j...\n const lowestLine: number = (thisClef !== undefined) ? thisClef.lowestLine : 31;\n\n const lineSpacing: number = storedVexflowStave.options.spacing_between_lines_px;\n const linesAboveStaff: number = storedVexflowStave.options.space_above_staff_ln;\n\n const notesFromTop = yPxScaled * 2 / lineSpacing;\n const notesAboveLowestLine\n = (storedVexflowStave.options.num_lines - 1 + linesAboveStaff) * 2\n - notesFromTop;\n const clickedDiatonicNoteNum = lowestLine + Math.round(notesAboveLowestLine);\n return clickedDiatonicNoteNum;\n }\n\n /**\n * Returns the stream that is at X location xPxScaled and system systemIndex.\n *\n * Override in subclasses, always returns this; here.\n *\n * @param {number} xPxScaled\n * @param {number} [systemIndex]\n * @returns {this}\n *\n */\n getStreamFromScaledXandSystemIndex(xPxScaled, systemIndex=0) {\n return this;\n }\n\n /**\n *\n * Return the note (or chord or rest) at pixel X (or within allowablePixels [default 10])\n * of the note.\n *\n * systemIndex element is not used on bare Stream\n *\n * options can be a dictionary of: 'allowBackup' which gets the closest\n * note within the window even if it's beyond allowablePixels (default: true)\n * and 'backupMaximum' which specifies a maximum distance even for backup\n * (default: 70);\n *\n * @param {number} xPxScaled\n * @param {number} [allowablePixels=10]\n * @param {number} [systemIndex]\n * @param {Object} [options]\n * @returns {Music21Object|undefined}\n */\n noteElementFromScaledX(\n xPxScaled: number,\n allowablePixels: number = 10,\n systemIndex?: number,\n options={},\n ): base.Music21Object {\n const params = {\n allowBackup: true,\n backupMaximum: 70,\n };\n common.merge(params, options);\n let foundNote;\n const subStream = this.getStreamFromScaledXandSystemIndex(\n xPxScaled,\n systemIndex\n );\n if (subStream === undefined) {\n return undefined;\n }\n const backup = {\n minDistanceSoFar: params.backupMaximum,\n note: undefined,\n }; // a backup in case we did not find within allowablePixels\n\n for (const el of subStream.flat.notesAndRests) {\n const n = el as any; // for missing x and width\n /* should also\n * compensate for accidentals...\n */\n const leftDistance = Math.abs(n.x - xPxScaled);\n const rightDistance = Math.abs(n.x + n.width - xPxScaled);\n const minDistance = Math.min(leftDistance, rightDistance);\n\n if (\n leftDistance < allowablePixels\n && rightDistance < allowablePixels\n ) {\n foundNote = n;\n break; /* O(n); can be made O(log n) */\n } else if (\n leftDistance < params.backupMaximum\n && rightDistance < params.backupMaximum\n && minDistance < backup.minDistanceSoFar\n ) {\n backup.note = n;\n backup.minDistanceSoFar = minDistance;\n }\n }\n // console.log('note here is: ', foundNote);\n if (params.allowBackup && foundNote === undefined) {\n foundNote = backup.note;\n // console.log('used backup: closest was: ', backup.minDistanceSoFar);\n }\n // console.log(foundNote);\n return foundNote;\n }\n\n /**\n * Given an event object, and an x and y location, returns a two-element array\n * of the pitch.Pitch.diatonicNoteNum that was clicked (i.e., if C4 was clicked this\n * will return 29; if D4 was clicked this will return 30) and the closest note in the\n * stream that was clicked.\n *\n * Return a list of [diatonicNoteNum, closestXNote]\n * for an event (e) called on the svg (svg)\n *\n * @returns {Array} [diatonicNoteNum, closestXNote]\n */\n findNoteForClick(\n svg?: HTMLElement|SVGElement,\n e?: MouseEvent|TouchEvent|JQuery.MouseEventBase,\n x?: number,\n y?: number,\n ): [number, base.Music21Object] {\n // this is Stream.findNoteForClick.\n if (x === undefined || y === undefined) {\n [x, y] = this.getScaledXYforDOM(svg, e);\n }\n const clickedDiatonicNoteNum = this.diatonicNoteNumFromScaledY(y);\n const foundNote = this.noteElementFromScaledX(x);\n return [clickedDiatonicNoteNum, foundNote];\n }\n\n /**\n * Change the pitch of a note given that it has been clicked and then\n * call changedCallbackFunction\n *\n * @param {number} clickedDiatonicNoteNum\n * @param {music21.note.Note} foundNote\n * @param {SVGElement|HTMLElement} svg\n * @returns {*} output of changedCallbackFunction\n */\n noteChanged(\n clickedDiatonicNoteNum: number,\n foundNote: note.Note,\n svg: SVGElement|HTMLElement\n ) {\n const n = foundNote;\n const p = new pitch.Pitch('C');\n p.diatonicNoteNum = clickedDiatonicNoteNum;\n p.accidental = n.pitch.accidental;\n n.pitch = p;\n n.stemDirection = undefined;\n this.activeNote = n;\n const $newSvg = this.redrawDOM(svg);\n const params = { foundNote: n, svg: $newSvg };\n if (this.changedCallbackFunction !== undefined) {\n return this.changedCallbackFunction(params);\n } else {\n return params;\n }\n }\n\n /**\n * Redraws an svgDiv, keeping the events of the previous svg.\n */\n redrawDOM(svg: JQuery|HTMLElement|SVGElement): JQuery {\n // this.resetRenderOptions(true, true); // recursive, preserveEvents\n if (!this.isFlat) {\n this.setSubstreamRenderOptions();\n }\n const $svg = $(svg); // works even if svg is already $jquery\n const $newSvg = this.createNewDOM($svg.width(), $svg.height());\n this.renderVexflow($newSvg);\n $svg.replaceWith($newSvg);\n return $newSvg;\n }\n\n /**\n * Renders a stream on svg with the ability to edit it and\n * a toolbar that allows the accidentals to be edited.\n */\n editableAccidentalDOM(\n width?: number,\n height?: number,\n {\n minAccidental=-1,\n maxAccidental=1,\n }: {minAccidental?: number, maxAccidental?: number} = {}\n ): JQuery {\n /*\n * Create an editable svg with an accidental selection bar.\n */\n const $d = $('
')\n .css('text-align', 'left')\n .css('position', 'relative') as JQuery;\n\n this.renderOptions.events.click = this.DOMChangerFunction;\n if (this.changedCallbackFunction === undefined) {\n this.changedCallbackFunction = this.DOMChangerFunction;\n }\n const $svgDiv = this.createDOM(width, height);\n const $buttonDiv: JQuery = this.getAccidentalToolbar(\n minAccidental,\n maxAccidental,\n $svgDiv\n );\n $d.append($buttonDiv);\n $d.append($(\"
\"));\n $d.append($svgDiv);\n return $d;\n }\n\n /*\n * SVG toolbars...\n */\n\n /**\n * Returns an accidental toolbar from minAccidental to maxAccidental.\n *\n * If $siblingSvg is defined then this toolbar alters the notes in that\n * toolbar.\n */\n getAccidentalToolbar(\n minAccidental: number = -1,\n maxAccidental: number = 1,\n $siblingSvg?: JQuery\n ): JQuery {\n minAccidental = Math.round(minAccidental);\n maxAccidental = Math.round(maxAccidental);\n\n const addAccidental = (newAlter, clickEvent) => {\n /*\n * To be called on a button...\n */\n let $useSvg = $siblingSvg;\n if ($useSvg === undefined) {\n let $searchParent = $(clickEvent.target).parent();\n let maxSearch = 99;\n while (\n maxSearch > 0\n && $searchParent !== undefined\n && ($useSvg === undefined || $useSvg[0] === undefined)\n ) {\n maxSearch -= 1;\n $useSvg = $searchParent.find('.streamHolding');\n $searchParent = $searchParent.parent();\n }\n if ($useSvg[0] === undefined) {\n console.log('Could not find a svg...');\n return;\n }\n }\n if (this.activeNote !== undefined && this.activeNote instanceof note.Note) {\n const n = this.activeNote;\n n.pitch.accidental = new pitch.Accidental(newAlter);\n /* console.log(n.pitch.name); */\n const $newSvg = this.redrawDOM($useSvg[0]);\n if (this.changedCallbackFunction !== undefined) {\n this.changedCallbackFunction({\n foundNote: n,\n svg: $newSvg,\n });\n }\n }\n };\n\n const $buttonDiv = $('
').attr(\n 'class',\n 'accidentalToolbar scoreToolbar'\n ) as JQuery;\n for (let i = minAccidental; i <= maxAccidental; i++) {\n const svg_acc = svg_accidentals.get(i).cloneNode(true);\n const $button = $(\n ''\n ).on('click', e => addAccidental(i, e));\n $button[0].appendChild(svg_acc);\n $buttonDiv.append($button);\n }\n return $buttonDiv;\n }\n\n /**\n * get a JQuery div containing two buttons -- play and stop\n */\n getPlayToolbar(): JQuery {\n const $buttonDiv = $('
').attr(\n 'class',\n 'playToolbar scoreToolbar'\n ) as JQuery;\n const $bPlay = $('');\n $bPlay.on('click', () => {\n this.playStream();\n });\n $buttonDiv.append($bPlay);\n const $bStop = $('');\n $bStop.on('click', () => {\n this.stopPlayStream();\n });\n $buttonDiv.append($bStop);\n return $buttonDiv;\n }\n // reflow\n\n /**\n * Begins a series of bound events to the window that makes it\n * so that on resizing the stream is redrawn and reflowed to the\n * new size.\n *bt\n */\n windowReflowStart($jSvg: JQuery): this {\n // set up a bunch of windowReflow bindings that affect the svg.\n let $jSvgNow = $jSvg;\n const resizeEnd = () => {\n // do something, window hasn't changed size in 500ms\n const $jSvgParent = $jSvgNow.parent();\n const newWidth = $jSvgParent.width();\n const svgWidth = newWidth;\n // console.log(svgWidth);\n console.log('resizeEnd triggered', newWidth);\n // console.log(callingStream.renderOptions.events.click);\n this.resetRenderOptions(true, true); // recursive, preserveEvents\n // console.log(callingStream.renderOptions.events.click);\n this.maxSystemWidth = svgWidth - 40;\n $jSvgNow.remove();\n const svgObj = this.appendNewDOM($jSvgParent);\n $jSvgNow = $(svgObj);\n };\n let resizeTimeout: number = 0;\n\n $(window).on('resize', () => {\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n resizeTimeout = window.setTimeout(() => resizeEnd(), 200);\n });\n setTimeout(() => {\n const $window = $(window);\n const doResize = $window.data('triggerResizeOnCreateSvg');\n if (doResize === undefined || doResize === true) {\n resizeEnd();\n $window.data('triggerResizeOnCreateSvg', false);\n }\n }, 1000);\n return this;\n }\n\n /**\n * Does this stream have a {@link Voice} inside it?\n */\n hasVoices(): boolean {\n for (const el of this) {\n if (el.isClassOrSubclass('Voice')) {\n return true;\n }\n }\n return false;\n }\n}\n\n\n\nexport class Voice extends Stream {\n static get className() { return 'music21.stream.Voice'; }\n\n constructor() {\n super();\n this.recursionType = 'elementsFirst';\n }\n}\n\nexport class Measure extends Stream {\n static get className() { return 'music21.stream.Measure'; }\n\n recursionType: string = 'elementsFirst';\n isMeasure: boolean = true;\n number: number = 0;\n numberSuffix: string = '';\n paddingLeft: number = 0;\n paddingRight: number = 0;\n\n stringInfo(): string {\n // avoid using 'this.offset' to not infinite loops.\n const offset = this._activeSiteStoredOffset ?? this._naiveOffset;\n return this.measureNumberWithSuffix() + ' offset=' + offset.toString();\n }\n\n measureNumberWithSuffix(): string {\n return this.number.toString() + this.numberSuffix;\n }\n}\n\n/**\n * Part -- specialized to handle Measures inside it\n *\n * @class Part\n * @memberof music21.stream\n */\nexport class Part extends Stream {\n static get className() { return 'music21.stream.Part'; }\n\n recursionType: string = 'flatten';\n\n // constructor() {\n // super();\n // }\n\n /**\n * How many systems does this Part have?\n *\n * Does not change any reflow information, so by default it's always 1.\n */\n numSystems(): number {\n let numSystems = 1;\n const subStreams = this.getElementsByClass('Stream') as iterator.StreamIterator;\n for (let i = 1; i < subStreams.length; i++) {\n if (subStreams.get(i).renderOptions.startNewSystem) {\n numSystems += 1;\n }\n }\n return numSystems;\n }\n\n /**\n * Find the width of every measure in the Part.\n */\n getMeasureWidths(): number[] {\n /* call after setSubstreamRenderOptions */\n const measureWidths: number[] = [];\n for (const el of this.getElementsByClass('Measure')) {\n const elRendOp = (el as Measure).renderOptions;\n measureWidths[elRendOp.measureIndex] = elRendOp.width;\n }\n return measureWidths;\n }\n\n /**\n * Overrides the default music21.stream.Stream#estimateStaffLength\n */\n estimateStaffLength(): number {\n if (this.renderOptions.overriddenWidth !== undefined) {\n // console.log('Overridden staff width: ' + this.renderOptions.overriddenWidth);\n return this.renderOptions.overriddenWidth;\n }\n if (!this.isFlat) {\n // part with Measures underneath\n let totalLength = 0;\n let isFirst = true;\n for (const el of this.getElementsByClass('Measure')) {\n const m = el as Measure;\n // this looks wrong, but actually seems to be right. moving it to\n // after the break breaks things.\n totalLength\n += m.estimateStaffLength() + m.renderOptions.staffPadding;\n if (!isFirst && m.renderOptions.startNewSystem === true) {\n break;\n }\n isFirst = false;\n }\n return totalLength;\n }\n // no measures found in part... treat as measure\n const tempM = new Measure();\n tempM.elements = this;\n return tempM.estimateStaffLength();\n }\n\n systemWidthsAndBreaks(): [number[], number[]] {\n const measureWidths = this.getMeasureWidths();\n const maxSystemWidth = this.maxSystemWidth; // cryptic note: 'of course fix!'?\n const systemCurrentWidths = [];\n const systemBreakIndexes = [];\n let lastSystemBreak = 0; /* needed to ensure each line has at least one measure */\n const startLeft = 20; /* TODO: make it obtained elsewhere */\n let currentLeft = startLeft;\n for (let i = 0; i < measureWidths.length; i++) {\n const currentRight = currentLeft + measureWidths[i];\n /* console.log('left: ' + currentLeft + ' ; right: ' + currentRight + ' ; m: ' + i); */\n if (currentRight > maxSystemWidth && lastSystemBreak !== i) {\n systemBreakIndexes.push(i - 1);\n systemCurrentWidths.push(currentLeft);\n\n // console.log('setting new width at ' + currentLeft);\n currentLeft = startLeft + measureWidths[i]; // 20 + this width;\n lastSystemBreak = i;\n } else {\n currentLeft = currentRight;\n }\n }\n return [systemCurrentWidths, systemBreakIndexes];\n }\n\n /**\n * Divide a part up into systems and fix the measure\n * widths so that they are all even.\n *\n * Note that this is done on the part level even though\n * the measure widths need to be consistent across parts in a score.\n * This is possible because the system is deterministic and\n * will come to the same result for each part. Opportunity\n * for making more efficient through this...\n *\n * returns an array of all the widths\n */\n fixSystemInformation(systemHeight?: number, systemPadding?: number): number[] {\n // this is a method on Part!\n if (systemHeight === undefined) {\n /* part.show() called... */\n systemHeight = this.renderOptions.staffAreaHeight;\n } else if (debug) {\n console.log('overridden systemHeight: ' + systemHeight);\n }\n const [systemCurrentWidths, systemBreakIndexes] = this.systemWidthsAndBreaks();\n\n if (systemPadding === undefined) {\n systemPadding = this.renderOptions.systemPadding;\n }\n const maxSystemWidth = this.maxSystemWidth; // cryptic note: 'of course fix!'?\n\n let currentSystemIndex = 0;\n let leftSubtract = 0;\n let newLeftSubtract;\n\n for (const [i, el] of Array.from(this.getElementsByClass('Measure')).entries()) {\n const m = el as Measure;\n if (i === 0) {\n m.renderOptions.startNewSystem = true;\n }\n const currentLeft = m.renderOptions.left;\n\n if (systemBreakIndexes.indexOf(i - 1) !== -1) {\n /* first measure of new System */\n const oldWidth = m.renderOptions.width;\n const oldEstimate = m.estimateStaffLength() + m.renderOptions.staffPadding;\n const offsetFromEstimate = oldWidth - oldEstimate;\n // we look at the offset from the current estimate to see how much\n // the staff length may have been adjusted to compensate for other\n // parts with different lengths.\n\n // but setting these options is bound to change something\n m.renderOptions.displayClef = true;\n m.renderOptions.displayKeySignature = true;\n m.renderOptions.startNewSystem = true;\n\n // so we get a new estimate.\n const newEstimate = m.estimateStaffLength() + m.renderOptions.staffPadding;\n\n // and adjust it for the change.\n const newWidth = newEstimate + offsetFromEstimate;\n m.renderOptions.width = newWidth;\n leftSubtract = currentLeft - 20;\n // after this one, we'll have a new left subtract...\n newLeftSubtract = leftSubtract - (newWidth - oldWidth);\n\n currentSystemIndex += 1;\n } else if (i !== 0) {\n m.renderOptions.startNewSystem = false;\n m.renderOptions.displayClef = false; // check for changed clef first?\n m.renderOptions.displayKeySignature = false; // check for changed KS first?\n }\n m.renderOptions.systemIndex = currentSystemIndex;\n let currentSystemMultiplier;\n if (currentSystemIndex >= systemCurrentWidths.length) {\n /* last system... non-justified */\n currentSystemMultiplier = 1;\n } else {\n const currentSystemWidth = systemCurrentWidths[currentSystemIndex];\n currentSystemMultiplier = maxSystemWidth / currentSystemWidth;\n // console.log('systemMultiplier: ' + currentSystemMultiplier\n // + ' max: ' + maxSystemWidth + ' current: ' + currentSystemWidth);\n }\n /* might make a small gap? fix? */\n const newLeft = currentLeft - leftSubtract;\n if (newLeftSubtract !== undefined) {\n leftSubtract = newLeftSubtract;\n newLeftSubtract = undefined;\n }\n // console.log('M: ' + i + ' ; old left: ' + currentLeft + ' ; new Left: ' + newLeft);\n m.renderOptions.left = Math.floor(newLeft * currentSystemMultiplier);\n m.renderOptions.width = Math.floor(m.renderOptions.width * currentSystemMultiplier);\n const newTop = (m.renderOptions.top\n + currentSystemIndex * (systemHeight + systemPadding));\n // console.log('M: ' + i + '; New top: ' + newTop + ' ; old Top: ' + m.renderOptions.top);\n m.renderOptions.top = newTop;\n }\n return systemCurrentWidths;\n }\n\n /**\n * overrides music21.stream.Stream#setSubstreamRenderOptions\n *\n * figures out the `.left` and `.top` attributes for all contained measures\n *\n */\n setSubstreamRenderOptions() {\n let currentMeasureIndex = 0; /* 0 indexed for now */\n let currentMeasureLeft = 20;\n const rendOp = this.renderOptions;\n let lastTimeSignature;\n let lastKeySignature;\n let lastClef: clef.Clef;\n\n for (const el of this.getElementsByClass('Measure')) {\n const m = el as Measure;\n const mRendOp = m.renderOptions;\n mRendOp.measureIndex = currentMeasureIndex;\n mRendOp.top = rendOp.top;\n mRendOp.partIndex = rendOp.partIndex;\n mRendOp.left = currentMeasureLeft;\n\n if (currentMeasureIndex === 0) {\n lastClef = m._clef;\n lastTimeSignature = m._timeSignature;\n lastKeySignature = m._keySignature;\n\n mRendOp.displayClef = true;\n mRendOp.displayKeySignature = true;\n mRendOp.displayTimeSignature = true;\n } else {\n // noinspection JSUnusedAssignment\n if (\n m._clef !== undefined\n && lastClef !== undefined\n && m._clef.name !== lastClef.name\n ) {\n // noinspection JSUnusedAssignment\n console.log(\n 'changing clefs for ',\n mRendOp.measureIndex,\n ' from ',\n lastClef.name,\n ' to ',\n m._clef.name\n );\n lastClef = m._clef;\n mRendOp.displayClef = true;\n } else {\n mRendOp.displayClef = false;\n }\n\n // noinspection JSUnusedAssignment\n if (\n m._keySignature !== undefined\n && lastKeySignature !== undefined\n && m._keySignature.sharps !== lastKeySignature.sharps\n ) {\n lastKeySignature = m._keySignature;\n mRendOp.displayKeySignature = true;\n } else {\n mRendOp.displayKeySignature = false;\n }\n\n // noinspection JSUnusedAssignment\n if (\n m._timeSignature !== undefined\n && lastTimeSignature !== undefined\n && m._timeSignature.ratioString\n !== lastTimeSignature.ratioString\n ) {\n lastTimeSignature = m._timeSignature;\n mRendOp.displayTimeSignature = true;\n } else {\n mRendOp.displayTimeSignature = false;\n }\n }\n mRendOp.width\n = m.estimateStaffLength() + mRendOp.staffPadding;\n mRendOp.height = m.estimateStreamHeight();\n currentMeasureLeft += mRendOp.width;\n currentMeasureIndex += 1;\n }\n return this;\n }\n\n /**\n * systemIndexAndScaledY - given a scaled Y, return the systemIndex\n * and the scaledYRelativeToSystem\n *\n * @param {number} y the scaled Y\n * @return {number[]} systemIndex, scaledYRelativeToSystem\n */\n systemIndexAndScaledY(y) {\n // this is Part.systemIndexAndScaledY\n const systemHeight = this.renderOptions.staffAreaHeight;\n const systemPadding = this.renderOptions.systemPadding;\n const systemIndex = Math.floor(y / (systemHeight + systemPadding));\n const scaledYRelativeToSystem\n = y - systemIndex * (systemHeight + systemPadding);\n return [systemIndex, scaledYRelativeToSystem];\n }\n\n /**\n * Overrides the default music21.stream.Stream#findNoteForClick\n * by taking into account systems\n *\n * @returns {Array} [clickedDiatonicNoteNum, foundNote]\n */\n findNoteForClick(\n svg?: HTMLElement|SVGElement,\n e?: MouseEvent|TouchEvent|JQuery.MouseEventBase,\n x?: number,\n y?: number,\n ): [number, base.Music21Object] {\n // this is Part.FindNoteForClick\n if (x === undefined || y === undefined) {\n [x, y] = this.getScaledXYforDOM(svg, e);\n }\n // debug = true;\n if (debug && svg !== undefined) {\n console.log(\n 'this.estimateStreamHeight(): '\n + this.estimateStreamHeight()\n + ' / $(svg).height(): '\n + $(svg).height()\n );\n }\n // TODO(msc) -- systemPadding was never used -- should it be?\n // let systemPadding = this.renderOptions.systemPadding;\n const [systemIndex, scaledYRelativeToSystem] = this.systemIndexAndScaledY(y);\n const clickedDiatonicNoteNum = this.diatonicNoteNumFromScaledY(\n scaledYRelativeToSystem\n );\n\n const foundNote = this.noteElementFromScaledX(\n x,\n undefined,\n systemIndex\n );\n return [clickedDiatonicNoteNum, foundNote];\n }\n\n /**\n * Returns the measure that is at X location xPxScaled and system systemIndex.\n *\n * @param {number} [xPxScaled]\n * @param {number} [systemIndex]\n * @returns {Stream}\n *\n */\n getStreamFromScaledXandSystemIndex(xPxScaled, systemIndex=undefined) {\n let gotMeasure;\n const measures = this.measures;\n for (const m of measures) {\n const rendOp = m.renderOptions;\n const left = rendOp.left;\n const right = left + rendOp.width;\n const top = rendOp.top;\n const bottom = top + rendOp.height;\n if (debug) {\n console.log(\n 'Searching for X:'\n + Math.round(xPxScaled)\n + ' in Measure '\n + ' with boundaries L:'\n + left\n + ' R:'\n + right\n + ' T: '\n + top\n + ' B: '\n + bottom\n );\n }\n if (xPxScaled >= left && xPxScaled <= right) {\n if (systemIndex === undefined) {\n gotMeasure = m;\n break;\n } else if (rendOp.systemIndex === systemIndex) {\n gotMeasure = m;\n break;\n }\n }\n }\n return gotMeasure;\n }\n}\n\n/**\n * Scores with multiple parts\n */\nexport class Score extends Stream {\n static get className() { return 'music21.stream.Score'; }\n\n recursionType = 'elementsOnly';\n measureWidths: number[] = [];\n\n constructor() {\n super();\n this.renderOptions.systemPadding = 40;\n }\n\n get clef() { // TODO: remove -- this is unlike m21p\n const c = super.clef;\n if (c === undefined) {\n return new clef.TrebleClef();\n } else {\n return c;\n }\n }\n\n set clef(newClef) {\n super.clef = newClef;\n }\n\n /**\n * Override main stream makeBeams to call on each part.\n */\n makeBeams({ inPlace=false, setStemDirections=true }: makeNotation.MakeBeamsOptions = {}) {\n let returnObj = this;\n if (!inPlace) {\n returnObj = this.clone(true);\n }\n for (const p of returnObj.parts) {\n p.makeBeams({inPlace: true, setStemDirections});\n }\n // returnObj.streamStatus.beams = true;\n return returnObj;\n }\n\n\n /**\n * Returns the measure that is at X location xPxScaled and system systemIndex.\n *\n * Always returns the measure of the top part...\n *\n * @param {number} xPxScaled\n * @param {number} [systemIndex]\n * @returns {Stream} usually a Measure\n *\n */\n getStreamFromScaledXandSystemIndex(\n xPxScaled,\n systemIndex: number = undefined\n ) {\n const parts = this.parts;\n return parts\n .get(0)\n .getStreamFromScaledXandSystemIndex(xPxScaled, systemIndex);\n }\n\n /**\n * overrides music21.stream.Stream#setSubstreamRenderOptions\n *\n * figures out the `.left` and `.top` attributes for all contained parts\n */\n setSubstreamRenderOptions() {\n let currentPartNumber = 0;\n let currentPartTop = 0;\n // was this.partSpacing.\n const partSpacing = this.renderOptions.staffAreaHeight;\n for (const p of this.parts) {\n p.renderOptions.partIndex = currentPartNumber;\n p.renderOptions.top = currentPartTop;\n p.setSubstreamRenderOptions();\n currentPartTop += partSpacing;\n currentPartNumber += 1;\n }\n this.evenPartMeasureSpacing();\n const currentScoreHeight = this.estimateStreamHeight(\n {\n ignoreSystems: true,\n ignoreMarginBottom: true,\n }\n );\n for (const p of this.parts) {\n p.fixSystemInformation(currentScoreHeight, this.renderOptions.systemPadding);\n }\n this.renderOptions.height = this.estimateStreamHeight();\n return this;\n }\n\n /**\n * Overrides the default music21.stream.Stream#estimateStaffLength\n *\n * @returns {number}\n */\n estimateStaffLength() {\n // override\n if (this.renderOptions.overriddenWidth !== undefined) {\n // console.log('Overridden staff width: ' + this.renderOptions.overriddenWidth);\n return this.renderOptions.overriddenWidth;\n }\n let maxWidth = -1;\n for (const p of this.parts) {\n const pWidth = p.estimateStaffLength();\n if (pWidth > maxWidth) {\n maxWidth = pWidth;\n }\n }\n if (maxWidth > -1) {\n return maxWidth;\n }\n\n // no parts found in score... use part...\n console.log('no parts found in score');\n const tempPart = new Part();\n tempPart.elements = this;\n return tempPart.estimateStaffLength();\n }\n\n /* MIDI override */\n /**\n * Overrides the default music21.stream.Stream#playStream\n *\n * Works poorly -- just starts *n* midi players.\n *\n * Render scrollable score works better...\n *\n * @param {Object} params -- passed to each part\n */\n playStream(params): this {\n // play multiple parts in parallel...\n for (const el of this) {\n if (el.isClassOrSubclass('Part')) {\n (el as Part).playStream(params);\n }\n }\n return this;\n }\n\n /**\n * Overrides the default music21.stream.Stream#stopPlayScore()\n */\n stopPlayStream(): this {\n for (const el of this) {\n if (el.isClassOrSubclass('Part')) {\n (el as Part).stopPlayStream();\n }\n }\n return this;\n }\n\n /*\n * Svg routines\n */\n /**\n * call after setSubstreamRenderOptions\n * gets the maximum measure width for each measure\n * by getting the maximum for each measure of\n * Part.getMeasureWidths();\n *\n * Does this work? I found a bug in this and fixed it that should have\n * broken it!\n *\n * @returns Array\n */\n getMaxMeasureWidths() {\n const maxMeasureWidths = [];\n const measureWidthsArrayOfArrays = [];\n let i;\n // TODO: Do not crash on not partlike...\n for (const p of this.parts) {\n measureWidthsArrayOfArrays.push(p.getMeasureWidths());\n }\n for (i = 0; i < measureWidthsArrayOfArrays[0].length; i++) {\n let maxFound = 0;\n for (let j = 0; j < this.length; j++) {\n if (measureWidthsArrayOfArrays[j][i] > maxFound) {\n maxFound = measureWidthsArrayOfArrays[j][i];\n }\n }\n maxMeasureWidths.push(maxFound);\n }\n // console.log(measureWidths);\n return maxMeasureWidths;\n }\n\n /**\n * systemIndexAndScaledY - given a scaled Y, return the systemIndex\n * and the scaledYRelativeToSystem\n *\n * @param {number} y the scaled Y\n * @return Array systemIndex, scaledYRelativeToSystem\n */\n systemIndexAndScaledY(y) {\n // this is Score.systemIndexAndScaledY\n const numParts = this.parts.length;\n const staffHeight = this.renderOptions.staffAreaHeight;\n const numSystems = this.numSystems();\n let endOfLastSystem = 0;\n for (let tryIndex = 0; tryIndex < numSystems; tryIndex++) {\n const endOfThisSystem = endOfLastSystem + (numParts * staffHeight) + this.renderOptions.systemPadding;\n if (y > endOfThisSystem && tryIndex !== numSystems - 1) {\n endOfLastSystem = endOfThisSystem;\n continue;\n }\n const scaledYRelativeToSystem = y - endOfLastSystem;\n return [tryIndex, scaledYRelativeToSystem];\n }\n console.error('Should not get here!');\n return [0, 0];\n }\n\n /**\n * Score object\n *\n * Returns a list of [clickedDiatonicNoteNum, foundNote] for a\n * click or other mouse event, taking into account that the note will be in different\n * Part objects (and different Systems) given the height and possibly different Systems.\n *\n * returns [diatonicNoteNum, m21Element]\n */\n findNoteForClick(\n svg?: HTMLElement|SVGElement,\n e?: MouseEvent|TouchEvent|JQuery.MouseEventBase,\n x?: number,\n y?: number,\n ): [number, base.Music21Object] {\n // this is Score.findNoteForClick()\n if (x === undefined || y === undefined) {\n [x, y] = this.getScaledXYforDOM(svg, e);\n }\n\n // defaults to 120 and includes ledger line area\n const staffHeight = this.renderOptions.staffAreaHeight;\n const [systemIndex, scaledYFromSystemTop] = this.systemIndexAndScaledY(y);\n let partIndex = Math.floor(scaledYFromSystemTop / staffHeight);\n // console.log('systemIndex: ' + systemIndex + ' partIndex: ' + partIndex);\n let rightPart = this.parts.get(partIndex);\n if (rightPart === undefined) {\n partIndex = this.parts.length - 1; // may be too low?\n rightPart = this.parts.get(partIndex);\n if (rightPart === undefined) {\n // degenerate Score with no Part objects\n return [undefined, undefined];\n }\n }\n const scaledYinPart = scaledYFromSystemTop - partIndex * staffHeight;\n\n const clickedDiatonicNoteNum = rightPart.diatonicNoteNumFromScaledY(scaledYinPart);\n\n // console.log(rightPart, systemIndex, x);\n const foundNote = rightPart.noteElementFromScaledX(\n x,\n undefined,\n systemIndex\n );\n return [clickedDiatonicNoteNum, foundNote];\n }\n\n /**\n * How many systems are there? Calls numSystems() on the first part.\n */\n numSystems(): number {\n const pIter = (this.getElementsByClass('Part') as iterator.StreamIterator);\n if (!(pIter.length)) {\n return 1;\n }\n return pIter.get(0).numSystems();\n }\n\n /**\n * Makes the width of every Measure object within a measure stack be the same.\n * if setLeft is true then also set the renderOptions.left\n *\n * This does not even out systems.\n *\n * @param {Object} options\n * @param {boolean} [options.setLeft=true]\n */\n evenPartMeasureSpacing({ setLeft=true }={}): this {\n const measureStacks: number[][] = [];\n let currentPartNumber = 0;\n const maxMeasureWidth: number[] = []; // the maximum measure width among all parts\n for (const p of this.parts) {\n const measureWidths = (p as Part).getMeasureWidths();\n for (let j = 0; j < measureWidths.length; j++) {\n const thisMeasureWidth = measureWidths[j];\n if (measureStacks[j] === undefined) {\n measureStacks[j] = [];\n maxMeasureWidth[j] = thisMeasureWidth;\n } else if (thisMeasureWidth > maxMeasureWidth[j]) {\n maxMeasureWidth[j] = thisMeasureWidth;\n }\n measureStacks[j][currentPartNumber] = thisMeasureWidth;\n }\n currentPartNumber += 1;\n }\n\n let currentLeft = 20; // TODO: do not hardcode left start.\n for (let i = 0; i < maxMeasureWidth.length; i++) {\n const measureNewWidth = maxMeasureWidth[i];\n for (const part of this.parts) {\n const measure = part.getElementsByClass('Measure').get(i) as Measure;\n const rendOp = measure.renderOptions;\n rendOp.width = measureNewWidth;\n if (setLeft) {\n rendOp.left = currentLeft;\n }\n }\n currentLeft += measureNewWidth;\n }\n return this;\n }\n}\n\n// TODO(msc) -- Opus\n\n// small Class; a namedtuple in music21p\nexport class OffsetMap {\n element: base.Music21Object;\n offset: number;\n endTime: number;\n voiceIndex: number;\n\n constructor(\n element: base.Music21Object,\n offset: number,\n endTime: number,\n voiceIndex: number\n ) {\n this.element = element;\n this.offset = offset;\n this.endTime = endTime;\n this.voiceIndex = voiceIndex;\n }\n}\n","import { Music21Exception } from '../exceptions21';\n\n// noinspection JSUnusedGlobalSymbols\nexport class FilterException extends Music21Exception {}\n\nclass _StopIteration {}\n\nexport const StopIterationSingleton = new _StopIteration();\n\n/**\n * @memberof music21.stream.filters\n */\nexport class StreamFilter {\n static get derivationStr() {\n return 'streamFilter';\n }\n\n reset() {}\n\n call(item, iterator): boolean|_StopIteration {\n return true;\n }\n}\n\nexport class IsFilter extends StreamFilter {\n static get derivationStr() {\n return 'is';\n }\n\n target: any[];\n numToFind: number;\n\n constructor(target: any|any[] =[]) {\n super();\n if (!Array.isArray(target)) {\n target = [target];\n }\n this.target = target;\n this.numToFind = target.length;\n }\n\n reset() {\n this.numToFind = this.target.length;\n }\n\n call(item, iterator): boolean|_StopIteration {\n if (this.numToFind === 0) {\n return StopIterationSingleton;\n }\n if (this.target.includes(item)) {\n this.numToFind -= 1;\n return true;\n } else {\n return false;\n }\n }\n}\n\nexport class IsNotFilter extends IsFilter {\n static get derivationStr() {\n return 'IsNot';\n }\n\n constructor(target) {\n super(target);\n this.numToFind = Number.MAX_SAFE_INTEGER;\n }\n\n reset() {}\n\n call(item, iterator) {\n const ret = super.call(item, iterator);\n if (ret === StopIterationSingleton) {\n return ret;\n } else {\n return !ret;\n }\n }\n}\n\n// TODO(msc): IdFilter\n\nexport class ClassFilter extends StreamFilter {\n static get derivationStr() {\n return 'getElementsByClass';\n }\n\n classList: string[];\n\n constructor(classList: string|string[] =[]) {\n super();\n if (!Array.isArray(classList)) {\n classList = [classList];\n }\n this.classList = classList;\n }\n // TODO: __eq__\n\n call(item, iterator) {\n return item.isClassOrSubclass(this.classList);\n }\n}\n\nexport class ClassNotFilter extends ClassFilter {\n static get derivationStr() {\n return 'getElementsNotOfClass';\n }\n\n call(item, iterator) {\n return !(super.call(item, iterator));\n }\n}\n\n// TODO: GroupFilter\n\nexport class OffsetFilter extends StreamFilter {\n static get derivationStr() {\n return 'getElementsByOffset';\n }\n\n offsetStart: number;\n offsetEnd: number;\n includeEndBoundary: boolean;\n mustFinishInSpan: boolean;\n mustBeginInSpan: boolean;\n includeElementsThatEndAtStart: boolean;\n zeroLengthSearch: boolean = false;\n\n constructor(\n offsetStart: number,\n offsetEnd=undefined,\n {\n includeEndBoundary=true,\n mustFinishInSpan=false,\n mustBeginInSpan=true,\n includeElementsThatEndAtStart=true,\n }={}\n ) {\n super();\n this.offsetStart = offsetStart;\n this.offsetEnd = offsetEnd;\n this.includeEndBoundary = includeEndBoundary;\n this.mustFinishInSpan = mustFinishInSpan;\n this.mustBeginInSpan = mustBeginInSpan;\n this.includeElementsThatEndAtStart = includeElementsThatEndAtStart;\n\n if (offsetEnd === undefined) {\n this.offsetEnd = offsetStart;\n this.zeroLengthSearch = true;\n } else if (offsetEnd <= offsetStart) {\n this.zeroLengthSearch = true;\n }\n\n\n }\n\n call(item, iterator) {\n // N.B. iterator.srcStream.elementOffset is necessary instead\n // of elementOffset, because we have not set activeSite yet.\n return this.isElementOffsetInRange(\n item,\n iterator.srcStream.elementOffset(item)\n );\n }\n\n isElementOffsetInRange(e, offset) {\n if (offset > this.offsetEnd) {\n // anything that begins after the span is definitely out.\n return false;\n }\n const dur = e.duration;\n const elementEnd = offset + dur.quarterLength;\n if (elementEnd < this.offsetStart) {\n // anything that finishes before the span ends is definitely out\n return false;\n }\n\n // some part of the element is at least touching some part of span.\n\n let elementIsZeroLength = false;\n if (dur.quarterLength === 0) {\n elementIsZeroLength = true;\n }\n if (this.zeroLengthSearch && elementIsZeroLength) {\n return true;\n }\n\n if (this.mustFinishInSpan) {\n if (elementEnd > this.offsetEnd) {\n return false;\n }\n if (!this.includeEndBoundary && offset === this.offsetEnd) {\n return false;\n }\n }\n\n if (this.mustBeginInSpan) {\n if (offset < this.offsetStart) {\n return false;\n }\n if (!this.includeEndBoundary && offset === this.offsetEnd) {\n return false;\n }\n } else if (!elementIsZeroLength && elementEnd === this.offsetEnd && this.zeroLengthSearch) {\n return false;\n }\n\n if (!this.includeEndBoundary && offset === this.offsetEnd) {\n return false;\n }\n if (!this.includeElementsThatEndAtStart && elementEnd === this.offsetStart) {\n return false;\n }\n return true;\n }\n}\n\n// TODO: OffsetHierarchyFilter\n","import { StreamException } from '../exceptions21';\nimport * as filters from './filters';\n\n// just for declaration\nimport {base, stream} from '../../music21_modules';\n\nconst StopIterationSingleton = filters.StopIterationSingleton;\n\n// noinspection JSUnusedGlobalSymbols\nexport class StreamIteratorException extends StreamException {\n\n}\n\nclass _StreamIteratorBase {\n srcStream: stream.Stream; // should be Stream\n index: number = 0;\n srcStreamElements: base.Music21Object[];\n streamLength: number;\n iterSection: string = '_elements';\n cleanupOnStop: boolean = false;\n restoreActiveSites: boolean;\n overrideDerivation;\n filters: any[];\n\n protected _len: number;\n protected _matchingElements: base.Music21Object[];\n\n sectionIndex: number = 0;\n activeInformation: any;\n\n constructor(\n srcStream: stream.Stream,\n {\n filterList = [],\n restoreActiveSites=true,\n activeInformation=undefined,\n ignoreSorting=false,\n }={}\n ) {\n if (!ignoreSorting && !srcStream.isSorted && srcStream.autoSort) {\n srcStream.sort();\n }\n this.srcStream = srcStream;\n this.srcStreamElements = srcStream.elements as base.Music21Object[];\n this.streamLength = this.srcStreamElements.length;\n\n this.restoreActiveSites = restoreActiveSites;\n this.overrideDerivation = undefined;\n if (!Array.isArray(filterList)) {\n filterList = [filterList];\n }\n this.filters = filterList;\n\n this.sectionIndex = 0; // no endElements yet...\n\n if (activeInformation === undefined) {\n this.activeInformation = {};\n this.updateActiveInformation();\n } else {\n this.activeInformation = activeInformation;\n }\n }\n\n * [Symbol.iterator](): Generator {\n this.reset();\n for (const el of this.srcStreamElements) {\n yield el;\n }\n }\n\n map(func) {\n return Array.from(this).map(func);\n }\n\n get(k): T {\n const fe = this.matchingElements();\n if (k < 0) {\n k = fe.length + k;\n }\n return fe[k];\n }\n\n get length(): number {\n if (this._len !== undefined) {\n return this._len;\n }\n this._len = this.matchingElements().length;\n this.reset();\n return this._len;\n }\n\n updateActiveInformation() {\n const ai = this.activeInformation;\n ai.stream = this.srcStream;\n ai.index = this.index - 1;\n ai.iterSection = this.iterSection;\n ai.sectionIndex = this.sectionIndex;\n }\n\n reset() {\n this.index = 0;\n this.iterSection = '_elements';\n this.updateActiveInformation();\n for (const f of this.filters) {\n if (f.reset !== undefined) {\n f.reset();\n }\n }\n }\n\n resetCaches() {\n this._len = undefined;\n this._matchingElements = undefined;\n }\n\n cleanup() {\n if (this.cleanupOnStop) {\n this.reset();\n this.srcStream = undefined;\n this.srcStreamElements = [];\n }\n }\n\n matchingElements(): T[] {\n if (this._matchingElements !== undefined) {\n return this._matchingElements;\n }\n\n const savedIndex = this.index;\n const savedRestoreActiveSites = this.restoreActiveSites;\n this.restoreActiveSites = true;\n\n const me = []; // matching elements\n for (const e of this) {\n me.push(e);\n }\n this.reset();\n this.index = savedIndex;\n this.restoreActiveSites = savedRestoreActiveSites;\n this._matchingElements = me;\n return me;\n }\n\n matchesFilters(e: base.Music21Object) {\n for (const f of this.filters) {\n const ret = f.call(e, this);\n if (ret === false) {\n return false; // must === false;\n }\n if (ret === StopIterationSingleton) {\n return ret;\n }\n }\n return true;\n }\n\n stream() {\n const ss = this.srcStream;\n // let clearIsSorted = false;\n\n const found = ss.clone(false);\n found.elements = [];\n // derivation;\n const fe = this.matchingElements();\n for (const e of fe) {\n const stringReturns = true;\n const o = ss.elementOffset(e, stringReturns);\n // try: getOffsetInHierarchy...\n // string returns;\n found.insert(o, e);\n }\n // if (fe.length) {\n // found.coreElementsChanged()\n // }\n return found;\n }\n\n // noinspection JSUnusedGlobalSymbols\n get activeElementList() {\n return this.activeInformation.stream[this.activeInformation.iterSection];\n }\n\n addFilter(newFilter) {\n for (const f of this.filters) {\n if (newFilter === f) {\n return this; // will not work... because == overrides.\n }\n }\n this.filters.push(newFilter);\n this.resetCaches();\n return this;\n }\n\n // noinspection JSUnusedGlobalSymbols\n removeFilter(oldFilter) {\n const index = this.filters.indexOf(oldFilter);\n if (index !== -1) {\n this.filters.splice(index, 1);\n }\n this.resetCaches();\n return this;\n }\n\n // getElementById(elementId) {\n //\n // }\n\n getElementsByClass(classFilterList) {\n return this.addFilter(new filters.ClassFilter(classFilterList));\n }\n\n getElementsNotOfClass(classFilterList) {\n return this.addFilter(new filters.ClassNotFilter(classFilterList));\n }\n\n // getElementsByGroup;\n // getElementsByOffset;\n getElementsByOffset(offsetStart, ...args) {\n return this.addFilter(new filters.OffsetFilter(offsetStart, ...args));\n }\n\n\n get notes() {\n return this.addFilter(new filters.ClassFilter('NotRest'));\n }\n\n get notesAndRests() {\n return this.addFilter(new filters.ClassFilter('GeneralNote'));\n }\n\n get parts() {\n return this.addFilter(new filters.ClassFilter('Part'));\n }\n\n // noinspection JSUnusedGlobalSymbols\n get spanners() {\n return this.addFilter(new filters.ClassFilter('Spanner'));\n }\n\n get voices() {\n return this.addFilter(new filters.ClassFilter('Voice'));\n }\n}\n\nexport class StreamIterator extends _StreamIteratorBase {\n\n * [Symbol.iterator](): Generator {\n this.reset();\n while (this.index < this.streamLength) {\n // noinspection DuplicatedCode\n this.index += 1;\n let e;\n try {\n e = this.srcStreamElements[this.index - 1];\n } catch (exc) {\n continue;\n }\n const matches = this.matchesFilters(e);\n if (matches === false) {\n continue;\n }\n if (matches === StopIterationSingleton) {\n break;\n }\n if (this.restoreActiveSites) {\n e.activeSite = this.srcStream;\n }\n this.updateActiveInformation();\n yield e;\n }\n this.cleanup();\n }\n\n}\n\nexport class OffsetIterator extends _StreamIteratorBase {\n nextToYield: any[]; // should be Music21Object[]\n nextOffsetToYield: number;\n\n constructor(srcStream, options={}) {\n super(srcStream, options);\n this.nextToYield = [];\n }\n\n * [Symbol.iterator](): Generator {\n this.reset();\n // this.sort();\n\n while (this.index < this.streamLength) {\n // noinspection DuplicatedCode\n this.index += 1;\n let e;\n try {\n e = this.srcStreamElements[this.index - 1];\n } catch (exc) {\n continue;\n }\n const matches = this.matchesFilters(e);\n if (matches === false) {\n continue;\n }\n if (matches === StopIterationSingleton) {\n break;\n }\n const yieldEls = [e];\n const eOffset = this.srcStream.elementOffset(e);\n\n for (let forwardIndex = this.index; forwardIndex < this.streamLength; forwardIndex++) {\n let nextE;\n try {\n nextE = this.srcStreamElements[this.index - 1];\n } catch (exc) {\n continue;\n }\n const nextOffset = this.srcStream.elementOffset(nextE);\n if (nextOffset !== eOffset) {\n this.nextToYield = [nextE];\n this.nextOffsetToYield = nextOffset;\n break;\n }\n if (!this.matchesFilters(nextE)) {\n continue;\n }\n\n yieldEls.push(e);\n this.index = forwardIndex;\n }\n\n if (this.restoreActiveSites) {\n for (const el of yieldEls) {\n el.activeSite = this.srcStream;\n }\n }\n this.updateActiveInformation();\n yield yieldEls;\n }\n this.cleanup();\n }\n\n reset() {\n super.reset();\n this.nextToYield = [];\n this.nextOffsetToYield = undefined;\n }\n}\n\nexport class RecursiveIterator extends _StreamIteratorBase {\n returnSelf: boolean;\n includeSelf: boolean;\n ignoreSorting: boolean;\n iteratorStartOffsetInHierarchy: number = 0.0;\n childRecursiveIterator: RecursiveIterator;\n\n constructor(\n srcStream: stream.Stream,\n {\n filterList=[],\n restoreActiveSites=true,\n activeInformation=undefined,\n streamsOnly=false,\n includeSelf=false,\n ignoreSorting=false,\n }={}\n ) {\n super(srcStream, {\n filterList,\n restoreActiveSites,\n activeInformation,\n ignoreSorting,\n });\n this.returnSelf = includeSelf;\n this.includeSelf = includeSelf;\n this.ignoreSorting = ignoreSorting;\n if (streamsOnly) {\n this.filters.push(new filters.ClassFilter('Stream'));\n }\n this.childRecursiveIterator = undefined;\n }\n\n reset() {\n this.returnSelf = this.includeSelf;\n this.childRecursiveIterator = undefined;\n this.activeInformation.lastYielded = undefined;\n super.reset();\n }\n\n * [Symbol.iterator](): Generator {\n this.reset(); // in __iter__.\n\n if (this.returnSelf && this.matchesFilters(this.srcStream)) {\n this.activeInformation.stream = undefined;\n this.activeInformation.index = -1;\n this.activeInformation.lastYielded = this.srcStream;\n this.returnSelf = false;\n yield this.srcStream;\n } else if (this.returnSelf) {\n // did not match filters...\n this.returnSelf = false;\n }\n\n while (this.index < this.streamLength) {\n this.index += 1;\n const e = this.srcStreamElements[this.index - 1];\n if (e === undefined) {\n // maybe can happen if elements changed.\n continue;\n }\n if (this.matchesFilters(e)) {\n if (this.restoreActiveSites) {\n e.activeSite = this.srcStream;\n }\n this.updateActiveInformation();\n this.activeInformation.lastYielded = e;\n yield e;\n }\n\n if (e.isStream) {\n this.childRecursiveIterator = new RecursiveIterator(\n e,\n {\n restoreActiveSites: this.restoreActiveSites,\n filterList: this.filters, // shared list\n activeInformation: this.activeInformation, // shared\n includeSelf: false,\n ignoreSorting: this.ignoreSorting,\n // parentIterator: this,\n //\n }\n );\n const newStartOffset = (\n this.iteratorStartOffsetInHierarchy\n + this.srcStream.elementOffset(e)\n );\n this.childRecursiveIterator.iteratorStartOffsetInHierarchy = newStartOffset;\n for (const e of this.childRecursiveIterator) {\n yield e;\n }\n this.childRecursiveIterator = undefined;\n }\n }\n this.activeInformation.lastYielded = undefined;\n this.cleanup();\n }\n\n matchingElements() {\n // none of this may be necessary in JavaScript,\n // but perhaps if called during iteration.\n const savedRecursiveIterator = this.childRecursiveIterator;\n const fe = super.matchingElements();\n this.childRecursiveIterator = savedRecursiveIterator;\n return fe;\n }\n\n /**\n * Returns a stack of RecursiveIterators at this point in the iteration.\n * Last is most recent.\n */\n iteratorStack(): RecursiveIterator[] {\n const iterStack: RecursiveIterator[] = [this];\n let x: RecursiveIterator = this;\n while (x.childRecursiveIterator !== undefined) {\n x = x.childRecursiveIterator;\n iterStack.push(x);\n }\n return iterStack;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Returns a stack of Streams at this point. Last is most recent.\n */\n streamStack() {\n return this.iteratorStack().map(iter => iter.srcStream);\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Called on the current iterator, returns the current offset\n * in the hierarchy. or undefined if we are not currently iterating.\n */\n currentHierarchyOffset() {\n const lastYield = this.activeInformation.lastYielded;\n if (lastYield === undefined) {\n return undefined;\n }\n\n const iteratorStack = this.iteratorStack();\n const newestIterator = iteratorStack[iteratorStack.length - 1];\n const lastStream = newestIterator.srcStream;\n const lastStartOffset = newestIterator.iteratorStartOffsetInHierarchy;\n if (lastYield === lastStream) {\n return lastStartOffset;\n } else {\n return lastStartOffset + lastStream.elementOffset(lastYield);\n }\n }\n // TODO(msc): getElementsByOffsetInHierarchy\n}\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/stream/makeNotation -- notation making functions\n */\nimport * as beam from '../beam';\nimport * as clef from '../clef';\n\nimport * as note from '../note'; // for typing only\nimport * as pitch from '../pitch'; // for typing only\nimport * as stream from '../stream';\nimport {StreamException} from '../stream'; // for typing only -- circular import otherwise\n\nexport declare interface MakeBeamsOptions {\n inPlace?: boolean,\n setStemDirections?: boolean,\n}\n\nexport function makeBeams(s, {\n inPlace=false,\n setStemDirections=true,\n}: MakeBeamsOptions = {}): stream.Stream {\n let returnObj = s;\n if (!inPlace) {\n returnObj = s.clone(true);\n }\n let mColl;\n if (s.classes.includes('Measure')) {\n mColl = [returnObj];\n } else {\n mColl = [];\n for (const m of returnObj.getElementsByClass('Measure')) {\n mColl.push(m);\n }\n }\n let lastTimeSignature;\n for (const m of mColl) {\n if (m.timeSignature !== undefined) {\n lastTimeSignature = m.timeSignature;\n }\n if (lastTimeSignature === undefined) {\n throw new StreamException('Need a Time Signature to process beams');\n }\n // todo voices!\n if (m.length <= 1) {\n continue; // nothing to beam.\n }\n const noteStream = m.notesAndRests;\n const durList = [];\n for (const n of noteStream) {\n durList.push(n.duration);\n }\n const durSumErr = durList.map(a => a.quarterLength).reduce((total, val) => total + val);\n const durSum = parseFloat(durSumErr.toFixed(8)); // remove fraction errors\n const barQL = lastTimeSignature.barDuration.quarterLength;\n if (durSum > barQL) {\n continue;\n }\n let offset = 0.0;\n if (m.paddingLeft !== 0.0 && m.paddingLeft !== undefined) {\n offset = m.paddingLeft;\n } else if (noteStream.highestTime < barQL) {\n offset = barQL - noteStream.highestTime;\n }\n const beamsList = lastTimeSignature.getBeams(noteStream, { measureStartOffset: offset });\n for (let i = 0; i < noteStream.length; i++) {\n const n = noteStream.get(i);\n const thisBeams = beamsList[i];\n if (thisBeams !== undefined) {\n n.beams = thisBeams;\n } else {\n n.beams = new beam.Beams();\n }\n }\n }\n\n if (setStemDirections) {\n setStemDirectionForBeamGroups(returnObj);\n }\n\n // returnObj.streamStatus.beams = true;\n return returnObj;\n}\n\nexport function * iterateBeamGroups(\n s: stream.Stream,\n {\n skipNoBeams=true,\n recurse=true,\n }: {skipNoBeams?: boolean, recurse?: boolean} = {}\n): Generator {\n let iterator: stream.iterator.StreamIterator;\n if (recurse) {\n iterator = s.recurse();\n } else {\n iterator = s.iter;\n }\n let current_beam_group: note.NotRest[] = [];\n let in_beam_group: boolean = false;\n for (const untyped_el of iterator.getElementsByClass('NotRest')) {\n const el: note.NotRest = untyped_el as note.NotRest;\n let first_el_type: string;\n if (el.beams !== undefined && el.beams.getNumbers().includes(1)) {\n first_el_type = el.beams.getTypeByNumber(1);\n }\n\n if (first_el_type === 'start') {\n in_beam_group = true;\n }\n if (in_beam_group) {\n current_beam_group.push(el);\n }\n if (first_el_type === 'stop') {\n yield current_beam_group;\n current_beam_group = [];\n in_beam_group = false;\n } else if (!skipNoBeams && !in_beam_group) {\n yield [el];\n }\n }\n\n if (current_beam_group.length) {\n yield current_beam_group;\n }\n}\n\n\nexport function setStemDirectionForBeamGroups(\n s: stream.Stream,\n {\n setNewStems=true,\n overrideConsistentStemDirections=false,\n }: {setNewStems?: boolean, overrideConsistentStemDirections?: boolean} = {}\n): void {\n for (const beamGroup of iterateBeamGroups(s, {skipNoBeams: true, recurse: true})) {\n setStemDirectionOneGroup(\n beamGroup,\n {setNewStems, overrideConsistentStemDirections},\n );\n }\n}\n\nconst _up_down: readonly string[] = ['up', 'down'];\nconst _up_down_unspecified: readonly string[] = ['up', 'down', 'unspecified'];\n\nexport function setStemDirectionOneGroup(\n group: note.NotRest[],\n {\n setNewStems=true,\n overrideConsistentStemDirections=false,\n }: {setNewStems?: boolean, overrideConsistentStemDirections?: boolean} = {}\n): void {\n if (!group.length) {\n return; // should not happen\n }\n const up_down_stem_direction: Set = new Set();\n for (const n of group) {\n if (_up_down.includes(n.stemDirection)) {\n up_down_stem_direction.add(n.stemDirection);\n }\n }\n let has_consistent_stem_directions: boolean = false;\n if (up_down_stem_direction.size < 2) {\n has_consistent_stem_directions = true;\n }\n\n const clef_context = group[0].getContextByClass(clef.Clef) as clef.Clef;\n if (clef_context === undefined) {\n return;\n }\n const pitchList: pitch.Pitch[] = [];\n for (const n of group) {\n pitchList.push(...n.pitches);\n }\n\n const groupStemDirection = clef_context.getStemDirectionForPitches(pitchList);\n for (const n of group) {\n const noteDirection = n.stemDirection;\n if (noteDirection === 'unspecified' && !setNewStems) {\n // continue\n } else if (_up_down.includes(noteDirection)\n && !overrideConsistentStemDirections\n && has_consistent_stem_directions) {\n // continue\n } else if (_up_down_unspecified.includes(noteDirection)) {\n n.stemDirection = groupStemDirection;\n }\n }\n}\n","/**\n * SVGs for Accidentals\n */\nimport { makeSVGright } from './common';\n\nfunction make_accidental(path) {\n const acc = makeSVGright();\n acc.setAttribute('viewBox', '0 0 1000 1000');\n const acc_path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n acc_path.setAttribute('fill', '#000');\n acc_path.setAttribute(\n 'd',\n path\n );\n acc.appendChild(acc_path);\n return acc;\n}\n\n// eslint-disable-next-line max-len\nexport const acc_dbl_flat = make_accidental('M221 974c4 6 8 8 14 8 4 0 10-4 10-4 47-24 87-70 124-96 58-41 103-85 133-123 4 119 6 211 12 215 4 5 8 7 12 7s10-4 10-4c49-23 87-69 123-95 143-99 194-196 194-269 0-87-69-147-145-149h-10c-29 0-49 10-73 26-12 6-24 20-39 20h-8c-10-4-16-16-16-28v-18l10-428c0-17-14-25-30-25-20 0-46 15-50 41l6 412v26c-24-16-51-26-81-26h-10c-8 0-16 0-22 2-19 4-37 14-53 24-12 6-24 20-38 20h-8c-10-4-17-16-17-28l11-446c0-17-14-25-29-25-22 0-48 16-50 41 0 0 8 908 20 922zm166-428c46 0 64 53 64 93 0 89-72 166-143 212-6 4-12 6-16 6-12 0-16-16-16-26 0 0-6-93-6-155 0-26 2-45 4-51 10-32 78-79 113-79zm250 11c14-8 28-12 42-12 16 1 27 5 37 16 14 20 24 46 24 78 0 29-8 61-26 93-14 29-97 125-128 125-14 0-18-16-18-26 0 0-6-109-6-171 0-16 0-31 2-35 6-20 49-56 73-68z');\n// eslint-disable-next-line max-len\nexport const acc_flat = make_accidental('M375 682c0-27 2-47 4-53 10-30 77-78 113-78 46 0 66 54 66 92 0 30-8 65-28 97-14 30-99 127-133 127-14 0-16-16-16-24 0 0-6-97-6-161zm-36 312c4 0 10-4 10-4 48-26 87-71 127-97 143-101 193-199 193-274 0-91-70-149-145-153-12 0-22 0-34 4-18 4-36 12-54 22-11 8-29 22-37 22h-8c-10-6-18-16-18-28 2-36 12-423 12-456 0-16-14-26-30-26-22 0-49 16-51 44 0 0 6 922 21 938 4 6 8 8 14 8z');\n// eslint-disable-next-line max-len\nexport const acc_natural = make_accidental('M372 783c20-8 102-44 144-44 14 0 25 6 25 16v217c0 11 8 18 17 18h20c9 0 16-7 16-18V243c0-8-5-13-11-13-2 0-3 0-5 2l-22 7c-4 0-6 2-6 2s-94 32-131 32c-9 0-14 0-14-7V24c0-11-9-18-18-18h-19c-11 0-18 7-18 18v750c0 9 4 12 11 12 2 0 9-1 11-3zm157-395c7 0 12 2 12 7v149c0 28-83 60-120 60-9 0-16-3-16-9V446c0-20 87-58 124-58z');\n// eslint-disable-next-line max-len\nexport const acc_sharp = make_accidental('M303 453c0 8 4 12 11 12s33-12 37-16h5c9 0 18 14 18 25v140c0 17-7 29-16 34-9 2-37 14-37 14-11 4-18 15-18 24v101c0 9 4 13 11 13 5 0 35-13 39-15l3-2c11 1 18 17 18 24v176c0 7 9 14 18 14 14 0 25-7 25-14V784c0-18 7-29 14-31l87-35c15 0 23 5 23 23v178c1 9 9 16 20 16 16 0 23-7 23-16V718c0-13 7-29 16-34l41-14c9-6 16-16 16-25V543c0-7-3-10-9-10l-7 1-37 14c-9 1-20-8-20-26V390c0-11 7-37 20-41l37-14c9-5 16-16 16-25V209c0-7-3-11-9-11-3 0-5 0-7 2 0 0-28 11-35 12-11 0-22-7-22-19V20c0-9-7-16-19-16-15 0-24 7-24 16v185c0 14-5 32-17 41-18 11-66 30-89 36-15 0-18-18-18-29V82c0-9-11-16-20-16-14 0-23 7-23 16v193c0 19-9 33-18 39l-35 14c-11 3-18 14-18 23v102zm114-13c3-25 67-55 103-55 11 0 20 3 22 9a489 489 0 010 173c-8 28-75 56-107 56-9 0-16-3-18-7-4-5-4-37-4-71 0-44 0-94 4-105z');\n// eslint-disable-next-line max-len\nexport const acc_dbl_sharp = make_accidental('M319 769c32 0 66-5 80-21 10-11 16-48 16-80 0-3 2-8 5-11 8-26 32-74 53-85 3-3 8-3 11-3s8 0 11 3c26 13 53 66 64 96 0 37 0 74 10 80 14 13 48 21 86 21 80 0 96-21 96-99 0-34-8-74-16-85-11-10-48-13-86-13h-21c-24-13-101-56-101-72 0-29 72-61 101-72 8 0 16 3 27 3 32 0 64-8 80-21 10-11 16-43 16-78 0-85-11-101-96-101-38 0-75 5-86 16-10 5-10 45-10 83-11 24-46 101-72 101-30 0-64-72-72-101 0-35-5-75-16-83-11-11-43-16-77-16-38 0-75 5-88 16-6 5-11 40-11 80 0 37 5 75 11 83 16 13 53 21 90 21 8 0 14-3 22-3 21 14 98 56 98 69 0 30-66 64-98 75h-22c-37 0-77 3-90 13-6 8-11 43-11 83 0 37 5 75 11 80 16 13 48 21 85 21z');\n\nexport const svg_accidentals = new Map();\nsvg_accidentals.set(-2, acc_dbl_flat);\nsvg_accidentals.set(-1, acc_flat);\nsvg_accidentals.set(0, acc_natural);\nsvg_accidentals.set(1, acc_sharp);\nsvg_accidentals.set(2, acc_dbl_sharp);\n","/**\n * music21j -- Javascript reimplementation of Core music21 features.\n * music21/tempo -- tempo and (not in music21p) metronome objects\n *\n * Copyright (c) 2013-18, Michael Scott Cuthbert and cuthbertLab\n * Based on music21, Copyright (c) 2006–17, Michael Scott Cuthbert and cuthbertLab\n *\n * tempo module, see {@link music21.tempo}\n *\n * @exports music21/tempo\n * @namespace music21.tempo\n * @memberof music21\n * @requires music21/duration\n * @requires music21/prebase\n * @requires music21/base\n * @requires MIDI\n * @property {number} [baseTempo=60] - basic tempo\n */\nimport * as $ from 'jquery';\nimport * as MIDI from 'midicube';\n\nimport * as prebase from './prebase';\nimport * as base from './base';\nimport * as duration from './duration';\n\nimport { Music21Exception } from './exceptions21';\n\nexport class TempoException extends Music21Exception {}\n\n// noinspection JSNonASCIINames,NonAsciiCharacters\n/**\n * Object mapping names to tempo values\n *\n * @name music21.tempo.defaultTempoValues\n * @memberof music21.tempo\n * @example\n * music21.tempo.defaultTempoValues.grave\n * // 40\n */\nexport const defaultTempoValues = {\n larghissimo: 16,\n largamente: 32,\n grave: 40,\n 'molto adagio': 40,\n largo: 46,\n lento: 52,\n adagio: 56,\n slow: 56,\n langsam: 56,\n larghetto: 60,\n adagietto: 66,\n andante: 72,\n andantino: 80,\n 'andante moderato': 83,\n maestoso: 88,\n moderato: 92,\n moderate: 92,\n allegretto: 108,\n animato: 120,\n 'allegro moderato': 128,\n allegro: 132,\n fast: 132,\n schnell: 132,\n allegrissimo: 140,\n 'molto allegro': 144,\n 'très vite': 144,\n vivace: 160,\n vivacissimo: 168,\n presto: 184,\n prestissimo: 208,\n};\n\nexport const baseTempo = 60;\n\n/* --------- metronome ---------- */\n/**\n *\n * @class Metronome\n * @memberof music21.tempo\n * @extends music21.prebase.ProtoM21Object\n * @param {number} [tempo=music21.tempo.baseTempo] - the tempo of the metronome to start\n * @property {number} tempo\n * @property {number} [numBeatsPerMeasure=4]\n * @property {number} [minTempo=10]\n * @property {number} [maxTempo=600]\n * @property {boolean} [flash=false] - flash the tempo\n * @property {boolean} [silent=false] - play silently\n * @property {number} beat - current beat number\n * @property {number} chirpTimeout - an index of a timeout object for chirping\n */\nexport class Metronome extends prebase.ProtoM21Object {\n static get className() { return 'music21.tempo.Metronome'; }\n\n _tempo: number = baseTempo;\n numBeatsPerMeasure: number = 4;\n minTempo: number = 10;\n maxTempo: number = 600;\n beat: number = 4;\n chirpTimeout: number;\n silent: boolean = false;\n flash: boolean = false;\n tempoRanges = [0, 40, 60, 72, 120, 144, 240, 999];\n tempoIncreases = [0, 1, 2, 3, 4, 6, 8, 15, 100];\n $metronomeDiv: JQuery;\n\n constructor(tempoInt: number = baseTempo) {\n super();\n if (tempoInt === undefined) {\n this.tempo = baseTempo;\n } else {\n this.tempo = tempoInt;\n }\n }\n\n get tempo(): number {\n return this._tempo;\n }\n\n set tempo(t: number) {\n this._tempo = t;\n if (this._tempo > this.maxTempo) {\n this._tempo = this.maxTempo;\n } else if (this._tempo < this.minTempo) {\n this._tempo = this.minTempo;\n }\n }\n\n get beatLength(): number {\n return 60.0 / this.tempo;\n }\n\n _silentFlash(flashColor) {\n this.$metronomeDiv\n .find('.metroFlash')\n .css('background-color', flashColor)\n .fadeOut(this.beatLength * 1000 / 4, function silentFadeOut() {\n $(this)\n .css('background-color', '#ffffff')\n .fadeIn(1);\n });\n }\n\n /**\n * Play a note (a higher one on the downbeat) and start the metronome chirping.\n */\n chirp() {\n this.beat += 1;\n if (this.beat > this.numBeatsPerMeasure) {\n this.beat = 1;\n if (this.silent !== true) {\n MIDI.noteOn(0, 96, 100, 0);\n MIDI.noteOff(0, 96, 0.1);\n }\n if (this.flash === true) {\n this._silentFlash('#0000f0');\n }\n } else {\n if (this.silent !== true) {\n MIDI.noteOn(0, 84, 70, 0);\n MIDI.noteOff(0, 84, 0.1);\n }\n if (this.flash === true) {\n this._silentFlash('#ff0000');\n }\n }\n const that = this;\n this.chirpTimeout = window.setTimeout(() => {\n that.chirp();\n }, 1000 * 60 / this.tempo);\n }\n\n /**\n * Stop the metronome from chirping.\n */\n stopChirp() {\n if (this.chirpTimeout !== undefined) {\n clearTimeout(this.chirpTimeout);\n this.chirpTimeout = undefined;\n }\n }\n\n /**\n * Increase the metronome tempo one \"click\".\n *\n * Value changes depending on the current tempo. Uses standard metronome guidelines.\n *\n * To change the tempo, just set this.tempo = n\n *\n * @param {int} [n=1 - number of clicks to the right\n * @returns {number} new tempo\n */\n increaseSpeed(n=1) {\n // increase by one metronome 'click' for every n\n for (let i = 0; i < n; i++) {\n let t = this.tempo;\n for (let tr = 0; tr < this.tempoRanges.length; tr++) {\n const tempoExtreme = this.tempoRanges[tr];\n const tempoIncrease = this.tempoIncreases[tr];\n if (t < tempoExtreme) {\n t += tempoIncrease;\n t = tempoIncrease * Math.round(t / tempoIncrease);\n break;\n }\n }\n // console.log(t);\n this.tempo = t;\n }\n return this.tempo;\n }\n\n /**\n * Decrease the metronome tempo one \"click\"\n *\n * To change the tempo, just set this.tempo = n\n *\n * @param {int} [n=1] - number of clicks to the left\n * @returns {number} new tempo\n */\n decreaseSpeed(n=1) {\n for (let i = 0; i < n; i++) {\n let t = this.tempo;\n const trL = this.tempoRanges.length;\n for (let tr = 1; tr <= trL; tr++) {\n const tempoExtreme = this.tempoRanges[trL - tr];\n const tempoIncrease = this.tempoIncreases[trL - tr + 1];\n if (t > tempoExtreme) {\n t -= tempoIncrease;\n t = tempoIncrease * Math.floor(t / tempoIncrease);\n break;\n }\n }\n // console.log(t);\n this.tempo = t;\n }\n return this.tempo;\n }\n\n /**\n * add a Metronome interface onto the DOM at where\n *\n * @param {jQuery|HTMLElement} [where]\n * @returns {jQuery} - a div holding the metronome.\n */\n addDiv(where) {\n /**\n * @type {jQuery}\n */\n let $where;\n if (where !== undefined && where instanceof $) {\n $where = where;\n } else if (where !== undefined && !(where instanceof $)) {\n $where = $(where);\n } else {\n $where = $('body');\n }\n const metroThis = this;\n /**\n *\n * @type {jQuery}\n */\n const $tempoHolder = $(\n '' + this.tempo.toString() + ''\n );\n $tempoHolder.css({\n 'font-size': '24px',\n 'padding-left': '10px',\n 'padding-right': '10px',\n });\n /**\n *\n * @type {jQuery}\n */\n const $newDiv = $('
');\n $newDiv.append($tempoHolder);\n\n /**\n *\n * @type {jQuery}\n */\n const b1 = $('');\n b1.on('click', () => {\n metroThis.chirp();\n });\n\n /**\n *\n * @type {jQuery}\n */\n const b2 = $('');\n b2.on('click', () => {\n metroThis.stopChirp();\n });\n $newDiv.prepend(b2);\n $newDiv.prepend(b1);\n /**\n *\n * @type {jQuery}\n */\n const b3 = $('');\n b3.on('click', function increaseSpeedButton() {\n metroThis.increaseSpeed();\n $(this)\n .prevAll('.tempoHolder')\n .html(metroThis.tempo.toString());\n });\n /**\n *\n * @type {jQuery}\n */\n const b4 = $('');\n b4.on('click', function decreaseSpeedButton() {\n metroThis.decreaseSpeed();\n $(this)\n .prevAll('.tempoHolder')\n .html(metroThis.tempo.toString());\n });\n $newDiv.append(b3);\n $newDiv.append(b4);\n /**\n *\n * @type {jQuery}\n */\n const $flash = $(\n ''\n + '            '\n );\n $flash.css('margin-left', '40px');\n $flash.css('height', '40px');\n\n $newDiv.append($flash);\n\n $where.append($newDiv);\n\n this.$metronomeDiv = $newDiv;\n return $newDiv;\n }\n}\n\nclass TempoText {\n text: string;\n constructor(text: string = '') {\n this.text = text;\n }\n}\n\n/**\n *\n * @class MetronomeMark\n * @memberof music21.tempo\n * @extends base.Music21Object\n * @param {Object} metronome - metronome\n * @param {string} metronome.text - tempo text\n * @param {number} metronome.number - beats per minute\n * @param {number|music21.duration.Duration} metronome.referent - duration value of tempo\n * @param {boolean} metronome.parentheses - ???\n * @property {string} text - tempo text\n * @property {number} number - beats per minute\n * @property {music21.duration.Duration} referent - duration value of tempo\n */\nexport class MetronomeMark extends base.Music21Object {\n static get className() { return 'music21.tempo.MetronomeMark'; }\n\n protected _number: number;\n numberImplicit: boolean;\n protected _tempoText: TempoText;\n textImplicit;\n protected _referent;\n parentheses: boolean = false;\n\n constructor({\n text=undefined,\n number=undefined,\n referent=undefined,\n parentheses=false,\n } = {}) {\n super();\n\n this._number = number;\n if (this._number !== undefined) {\n this.numberImplicit = false;\n }\n\n this._tempoText = undefined;\n this.textImplicit = undefined;\n this.text = text;\n\n this._referent = undefined;\n this.referent = referent;\n\n this.parentheses = parentheses;\n\n this._updateNumberFromText();\n this._updateTextFromNumber();\n }\n\n _updateNumberFromText() {\n if (this._number === undefined && this._tempoText !== undefined) {\n this._number = this._getDefaultNumber(this._tempoText);\n if (this._number !== undefined) {\n this.numberImplicit = true;\n }\n }\n }\n\n _updateTextFromNumber() {\n if (this._tempoText === undefined && this._number !== undefined) {\n this.text = this._getDefaultText(this._number);\n if (this.text !== undefined) {\n this.textImplicit = true;\n }\n }\n }\n\n // sigh, again the TypeScript limitation...\n get text(): undefined|string|TempoText {\n if (this._tempoText === undefined) {\n return undefined;\n }\n return this._tempoText.text;\n }\n\n set text(value: undefined|string|TempoText) {\n if (value === undefined) {\n this._tempoText = undefined;\n } else if (value instanceof TempoText) {\n this._tempoText = value;\n this.textImplicit = false;\n } else {\n this._tempoText = new TempoText(value);\n // if (this.hasStyleInformation) { // TODO: where is this?\n // this._tempoText.style = this.style;\n // } else {\n // this.style = this._tempoText.style;\n // }\n this.textImplicit = false;\n }\n }\n\n get number() {\n return this._number;\n }\n\n set number(value) {\n if (typeof value !== 'number') {\n throw new TempoException('cannot set number to a string');\n }\n this._number = value;\n this.numberImplicit = false;\n }\n\n get referent() {\n return this._referent;\n }\n\n set referent(value) {\n if (value === undefined) {\n this._referent = new duration.Duration(1);\n } else if (['number', 'string'].includes(typeof value)) {\n this._referent = new duration.Duration(value);\n } else if (value.classes.includes('Duration')) {\n this._referent = value;\n } else if (value.duration) {\n this._referent = value.duration;\n } else {\n throw new TempoException(`Cannot get a Duration from the supplied object: ${value}`);\n }\n }\n\n _getDefaultNumber(tempoText) {\n const tempoStr = tempoText instanceof TempoText ? tempoText.text : tempoText;\n let post;\n const tempoNames = Object.keys(defaultTempoValues);\n if (tempoNames.includes(tempoStr.toLowerCase())) {\n post = defaultTempoValues[tempoStr.toLowerCase()];\n } else if (tempoNames.includes(tempoStr)) {\n post = defaultTempoValues[tempoStr];\n } else {\n for (const word of tempoStr.split(' ')) {\n if (tempoNames.includes(word.toLowerCase())) {\n post = defaultTempoValues[tempoStr.toLowerCase()];\n }\n }\n }\n return post;\n }\n\n _getDefaultText(number, spread=2) {\n const tempoNumber = typeof number === 'number' ? number : parseFloat(number);\n return Object.keys(defaultTempoValues).find(tempoName => {\n const tempoValue = defaultTempoValues[tempoName];\n return ((tempoValue - spread) <= tempoNumber\n && (tempoValue + spread) >= tempoNumber);\n });\n }\n}\n\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/tie -- ties!\n *\n * Copyright (c) 2013-17, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–17, Michael Scott Cuthbert and cuthbertLab\n *\n */\n\nimport * as prebase from './prebase';\nimport { Music21Exception } from './exceptions21';\n\n/**\n * Simple tie module {@link music21.tie} namespace\n *\n * @exports music21/tie\n */\n\n/**\n * Tie namespace, just has the {@link music21.tie.Tie} object\n *\n * @namespace music21.tie\n * @memberof music21\n * @requires music21/prebase\n */\n\nconst VALID_TIE_TYPES = ['start', 'stop', 'continue', 'let-ring', 'continue-let-ring'];\n\n/**\n * Tie class. Found in {@link music21.note.GeneralNote} `.tie`.\n *\n * Does not support advanced music21p values `.to` and `.from`\n *\n * @class Tie\n * @memberof music21.tie\n * @extends music21.prebase.ProtoM21Object\n * @param {string} type - 'start', 'stop', 'continue', or 'let-ring'\n * @property {string} type - the tie type\n * @property {string} style - only supports 'normal' for now.\n * @property {string|undefined} placement - undefined = unknown or above/below.\n * (NB currently does nothing)\n */\nexport class Tie extends prebase.ProtoM21Object {\n static get className() { return 'music21.tie.Tie'; }\n\n protected _type: string;\n style: string = 'normal';\n placement: string;\n\n constructor(type='start') {\n super();\n this.type = type;\n }\n\n stringInfo(): string {\n return this.type;\n }\n\n get type(): string {\n return this._type;\n }\n\n set type(newType: string) {\n if (!VALID_TIE_TYPES.includes(newType)) {\n throw new Music21Exception(\n `Type must be one of ${VALID_TIE_TYPES}, not ${newType}`\n );\n }\n this._type = newType;\n }\n}\n\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/tinyNotation -- TinyNotation implementation\n *\n * Copyright (c) 2013-17, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–17, Michael Scott Cuthbert and cuthbertLab\n *\n * TinyNotation module\n *\n * @exports music21.tinyNotation\n * @memberof music21\n * @requires music21/base\n * @requires music21/clef\n * @requires music21/duration\n * @requires music21/pitch\n * @requires music21/note\n * @requires music21/meter\n * @requires music21/stream\n * @requires music21/tie\n */\nimport * as $ from 'jquery';\n\nimport * as chord from './chord';\nimport * as clef from './clef';\nimport * as duration from './duration';\nimport * as pitch from './pitch';\nimport * as note from './note';\nimport * as meter from './meter';\nimport * as stream from './stream';\nimport * as tie from './tie';\n\n/**\n * Regular expressions object\n *\n * @memberof music21.tinyNotation\n */\nconst regularExpressions = {\n REST: /r/,\n OCTAVE2: /([A-G])[A-G]+/,\n OCTAVE3: /([A-G])/,\n OCTAVE5: /([a-g])('+)/,\n OCTAVE4: /([a-g])/,\n EDSHARP: /\\((#+)\\)/,\n EDFLAT: /\\((-+)\\)/,\n EDNAT: /\\(n\\)/,\n SHARP: /^[A-Ga-g]+'*(#+)/, // simple notation finds\n FLAT: /^[A-Ga-g]+'*(-+)/, // double accidentals too\n NAT: /^[A-Ga-g]+'*n/, // explicit naturals\n TYPE: /(\\d+)/,\n TIE: /.~/, // not preceding ties\n PRECTIE: /~/, // front ties\n ID_EL: /=([A-Za-z0-9]*)/,\n LYRIC: /_(.*)/,\n DOT: /\\.+/,\n TIMESIG: /(\\d+)\\/(\\d+)/,\n\n PARTBREAK: /partBreak/, // nonstandard...fix later...\n\n CHORD: /chord{/,\n TRIP: /trip{/,\n QUAD: /quad{/,\n ENDBRAC: /}($|_)/,\n};\n\n/**\n * **Function, not class**.\n *\n * Converts a TinyNotation String into a music21 Stream\n *\n * See music21p for examples of what can go into tinyNotation. It's an\n * adaptation of Lilypond format, by design Extremely simple!\n *\n * @memberof music21.tinyNotation\n * @param {string} textIn - a valid tinyNotation string\n * @returns {music21.stream.Part|music21.stream.Measure} - a Stream or Part object (if multiple measures)\n * @example\n * var t = \"3/4 c4 B8 c d4 e2.\";\n * var p = music21.tinyNotation.TinyNotation(t);\n * p.duration.quarterLength;\n * // 6.0\n */\nexport function TinyNotation(textIn): stream.Part|stream.Measure|stream.Score {\n textIn = textIn.trim();\n const tokens = textIn.split(' ');\n\n let optionalScore;\n\n let p = new stream.Part();\n let m = new stream.Measure();\n m.number = 1;\n let currentTSBarDuration = 4.0;\n let lastDurationQL = 1.0;\n const storedDict = {\n lastNoteTied: false,\n inTrip: false,\n inQuad: false,\n inChord: false,\n endStateAfterNote: false,\n };\n let chordObj = null;\n const tnre = regularExpressions; // faster typing\n let measureNumber = 1;\n for (let i = 0; i < tokens.length; i++) {\n // check at first so that a full measure but not over full\n // gets returned as a stream.Measure object.\n if ((m.duration.quarterLength >= currentTSBarDuration)\n || (Math.abs(m.duration.quarterLength - currentTSBarDuration) < 0.0001)) {\n p.append(m);\n measureNumber += 1;\n m = new stream.Measure();\n m.number = measureNumber;\n }\n\n let token = tokens[i];\n /**\n * @type {music21.note.GeneralNote|undefined}\n */\n let noteObj;\n let lyric;\n if (tnre.PARTBREAK.exec(token)) {\n if (m.length > 0) {\n p.append(m);\n m = new stream.Measure();\n }\n if (optionalScore === undefined) {\n optionalScore = new stream.Score();\n }\n optionalScore.insert(0, p);\n p = new stream.Part();\n\n storedDict.lastNoteTied = false;\n storedDict.inTrip = false;\n storedDict.inQuad = false;\n storedDict.endStateAfterNote = false;\n\n continue;\n }\n\n if (tnre.TRIP.exec(token)) {\n token = token.slice(5); // cut...\n storedDict.inTrip = true;\n }\n if (tnre.QUAD.exec(token)) {\n token = token.slice(5); // cut...\n storedDict.inQuad = true;\n }\n if (tnre.CHORD.exec(token)) {\n token = token.slice(6); // cut...\n storedDict.inChord = true;\n }\n if (tnre.ENDBRAC.exec(token)) {\n if (chordObj && tnre.LYRIC.exec(token)) {\n let chordLyric;\n [token, chordLyric] = token.split('_');\n chordObj.lyric = chordLyric;\n }\n token = token.slice(0, -1); // cut...\n storedDict.endStateAfterNote = true;\n }\n\n // Modifiers\n if (tnre.LYRIC.exec(token)) {\n [token, lyric] = token.split('_');\n }\n\n if (tnre.TIMESIG.exec(token)) {\n const MATCH = tnre.TIMESIG.exec(token);\n const ts = new meter.TimeSignature();\n ts.numerator = parseInt(MATCH[1]);\n ts.denominator = parseInt(MATCH[2]);\n m.timeSignature = ts;\n currentTSBarDuration = ts.barDuration.quarterLength;\n // console.log(currentTSBarDuration);\n continue;\n } else if (tnre.REST.exec(token)) {\n noteObj = new note.Rest(lastDurationQL);\n } else if (tnre.OCTAVE2.exec(token)) {\n const MATCH = tnre.OCTAVE2.exec(token);\n noteObj = new note.Note(MATCH[1], lastDurationQL);\n noteObj.pitch.octave = 4 - MATCH[0].length;\n } else if (tnre.OCTAVE3.exec(token)) {\n const MATCH = tnre.OCTAVE3.exec(token);\n noteObj = new note.Note(MATCH[1], lastDurationQL);\n noteObj.pitch.octave = 3;\n } else if (tnre.OCTAVE5.exec(token)) {\n // must match octave 5 before 4\n const MATCH = tnre.OCTAVE5.exec(token);\n noteObj = new note.Note(MATCH[1].toUpperCase(), lastDurationQL);\n noteObj.pitch.octave = 3 + MATCH[0].length;\n } else if (tnre.OCTAVE4.exec(token)) {\n const MATCH = tnre.OCTAVE4.exec(token);\n noteObj = new note.Note(MATCH[1].toUpperCase(), lastDurationQL);\n noteObj.pitch.octave = 4;\n }\n\n if (noteObj === undefined) {\n continue;\n }\n\n if (lyric !== undefined) {\n noteObj.lyric = lyric;\n }\n\n if (tnre.TIE.exec(token)) {\n noteObj.tie = new tie.Tie('start');\n if (storedDict.lastNoteTied) {\n noteObj.tie.type = 'continue';\n }\n storedDict.lastNoteTied = true;\n } else if (storedDict.lastNoteTied) {\n noteObj.tie = new tie.Tie('stop');\n storedDict.lastNoteTied = false;\n }\n if (tnre.SHARP.exec(token)) {\n const MATCH = tnre.SHARP.exec(token); // sharp\n noteObj.pitch.accidental = new pitch.Accidental(MATCH[1].length);\n } else if (tnre.FLAT.exec(token)) {\n const MATCH = tnre.FLAT.exec(token); // sharp\n noteObj.pitch.accidental = new pitch.Accidental(-1 * MATCH[1].length);\n } else if (tnre.NAT.exec(token)) {\n noteObj.pitch.accidental = new pitch.Accidental('natural');\n noteObj.pitch.accidental.displayType = 'always';\n }\n let MATCH = tnre.TYPE.exec(token);\n if (MATCH) {\n const durationType = parseInt(MATCH[0]);\n noteObj.duration.quarterLength = 4.0 / durationType;\n }\n MATCH = tnre.DOT.exec(token);\n if (MATCH) {\n const numDots = MATCH[0].length;\n const multiplier = 1 + (1 - 0.5 ** numDots);\n noteObj.duration.quarterLength *= multiplier;\n }\n lastDurationQL = noteObj.duration.quarterLength;\n // do before appending tuplets\n\n if (storedDict.inTrip) {\n // console.log(noteObj.duration.quarterLength);\n noteObj.duration.appendTuplet(\n new duration.Tuplet(3, 2, noteObj.duration.quarterLength)\n );\n }\n if (storedDict.inQuad) {\n noteObj.duration.appendTuplet(\n new duration.Tuplet(4, 3, noteObj.duration.quarterLength)\n );\n }\n if (storedDict.inChord) {\n if (chordObj) {\n chordObj.add(noteObj);\n } else {\n chordObj = new chord.Chord([noteObj]);\n }\n }\n if (storedDict.endStateAfterNote) {\n storedDict.inTrip = false;\n storedDict.inQuad = false;\n storedDict.inChord = false;\n storedDict.endStateAfterNote = false;\n\n if (chordObj) {\n m.append(chordObj);\n chordObj = null;\n continue;\n }\n }\n if (!storedDict.inChord) {\n m.append(noteObj);\n }\n }\n\n if (m.length > 0) {\n p.append(m);\n }\n\n let returnObject;\n\n if (optionalScore !== undefined) {\n if (p.length > 0) {\n optionalScore.insert(0, p);\n }\n for (let i = 0; i < optionalScore.parts.length; i++) {\n const innerPart = optionalScore.parts.get(i);\n const innerPartClef = clef.bestClef(innerPart);\n const innerMeasure = innerPart.getElementsByClass('Measure').get(0);\n if (innerMeasure !== undefined) {\n innerMeasure.insert(0, innerPartClef);\n }\n }\n returnObject = optionalScore;\n } else {\n const bestClef = clef.bestClef(p);\n (p.getElementsByClass('Measure').get(0) as stream.Measure).insert(0, bestClef);\n returnObject = p;\n }\n return returnObject;\n}\n\n// render notation divs in HTML\n/**\n * Render all the TinyNotation classes in the DOM as notation\n *\n * Called automatically when music21 is loaded.\n *\n * @memberof music21.tinyNotation\n * @param {string} [classTypes='.music21.tinyNotation'] - a JQuery selector to find elements to replace.\n * @param {HTMLElement|jQuery} [selector]\n */\nexport function renderNotationDivs(\n classTypes: string = '.music21.tinyNotation',\n selector=undefined\n) {\n let $allRender: JQuery;\n\n if (selector === undefined) {\n $allRender = $(classTypes);\n } else {\n /**\n * @type {jQuery}\n */\n let $selector;\n if (!(selector instanceof $)) {\n $selector = $(selector);\n } else {\n $selector = selector;\n }\n $allRender = $selector.find(classTypes);\n }\n\n for (let i = 0; i < $allRender.length; i++) {\n const thisTN = $allRender[i];\n const $thisTN = $(thisTN);\n let thisTNContents;\n if ($thisTN.attr('tinynotationcontents') !== undefined) {\n thisTNContents = $thisTN.attr('tinynotationcontents');\n } else if (thisTN.textContent !== undefined) {\n thisTNContents = thisTN.textContent;\n thisTNContents = thisTNContents.replace(/s+/g, ' '); // no line-breaks, etc.\n }\n\n if (\n String.prototype.trim !== undefined\n && thisTNContents !== undefined\n ) {\n thisTNContents = thisTNContents.trim(); // remove leading, trailing whitespace\n }\n if (thisTNContents) {\n const st = TinyNotation(thisTNContents);\n if ($thisTN.hasClass('noPlayback')) {\n st.renderOptions.events.click = undefined;\n }\n const newSVG = st.createDOM();\n\n $thisTN.attr('tinynotationcontents', thisTNContents);\n $thisTN.empty();\n $thisTN.data('stream', st);\n $thisTN.append(newSVG);\n // console.log(thisTNContents);\n }\n }\n}\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/vfShow -- Vexflow integration\n *\n * Copyright (c) 2013-17, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–17, Michael Scott Cuthbert and cuthbertLab\n *\n * for rendering vexflow. Will eventually go to music21/converter/vexflow\n *\n * See {@link music21.vfShow} namespace for details\n *\n * @namespace music21.vfShow\n * @memberof music21\n * @requires music21.common\n * @requires vexflow\n * @exports music21.vfShow\n */\n\nimport * as $ from 'jquery';\nimport Vex from 'vexflow';\n\nimport { debug } from './debug';\nimport * as clef from './clef';\nimport * as duration from './duration';\n\n// imports for typechecking only\nimport * as note from './note';\nimport * as stream from './stream';\n\nconst _clefSingleton = new clef.TrebleClef();\n\n/**\n * Represents a stack of objects that need to be rendered together.\n *\n * An intermediary state for showing created by {@link music21.vfShow.Renderer}.\n *\n * @class RenderStack\n * @memberof music21.vfShow\n * @property {Stream[]} streams - {@link Stream} objects\n * associated with the voices\n * @property {Array} voices - Vex.Flow.Voice objects\n * @property {Array} textVoices - Vex.Flow.Voice objects for the text.\n */\nexport class RenderStack {\n streams: stream.Stream[] = [];\n voices: Vex.Flow.Voice[] = [];\n textVoices: Vex.Flow.Voice[] = [];\n voiceToStreamMapping = new Map();\n\n /**\n * @returns {Array} this.voices and this.textVoices as one array\n */\n allTickables(): Vex.Flow.Voice[] {\n const t: Vex.Flow.Voice[] = [];\n t.push(...this.voices);\n t.push(...this.textVoices);\n return t;\n }\n\n /**\n * @returns {Array} each array represents one staff....\n * where this.voices and this.textVoices are all in that staff...\n */\n tickablesByStave() {\n const tickablesByStave = []; // a list of lists of tickables being placed on the same Stave.\n const knownStaves = []; // a list of Vex.Flow.Stave objects...\n\n for (const t of this.allTickables()) {\n const thisStaveIndex = knownStaves.indexOf(t.stave);\n let currentStaveHolder;\n if (thisStaveIndex === -1) {\n knownStaves.push(t.stave);\n currentStaveHolder = [];\n tickablesByStave.push(currentStaveHolder);\n } else {\n currentStaveHolder = tickablesByStave[thisStaveIndex];\n }\n currentStaveHolder.push(t);\n }\n return tickablesByStave;\n }\n}\n\n/**\n * Renderer is a function that takes a stream, an\n * optional existing canvas or SVG element and a DOM\n * element where the canvas or SVG element should be placed\n * and renders the stream as Vexflow on the\n * canvas or svg element, placing it then in the where\n * DOM.\n *\n * \"s\" can be any type of Stream.\n *\n * \"div\" and \"where\" can be either a DOM\n * element or a jQuery object.\n *\n * @class Renderer\n * @memberof music21.vfShow\n * @param {Stream} s - main stream to render\n * @param {div} [div] - existing canvas or div-surroundingSVG element\n * @param {Node|jQuery} [where=document.body] - where to render the stream\n * @property {Vex.Flow.Renderer} vfRenderer - a Vex.Flow.Renderer to use\n * (will create if not existing)\n * @property {string} rendererType - canvas or svg\n * @property ctx - a Vex.Flow.SVGContext or Vex.Flow.CanvasContext to use.\n * @property {div} div - div-with-svg-or-canvas element\n * @property {jQuery} $div - jQuery div or canvas element\n * @property {jQuery} $where - jQuery element to render onto\n * @property {Vex.Flow.Formatter} activeFormatter - formatter\n * @property {Array} beamGroups - beamGroups\n * @property {Array} vfTies - ties as instances of Vex.Flow.StaveTie\n * @property {Array} systemBreakOffsets - where to break the systems\n * @property {Array} vfTuplets - tuplets represented in Vexflow\n * @property {Array} stacks - array of RenderStack objects\n */\nexport class Renderer {\n stream: stream.Stream;\n rendererType = 'svg';\n div = undefined;\n $div = undefined;\n $where = undefined;\n activeFormatter = undefined;\n _vfRenderer = undefined;\n _ctx = undefined;\n beamGroups = [];\n stacks = []; // an Array of RenderStacks: {voices: [Array of Vex.Flow.Voice objects],\n // streams: [Array of Streams, usually Measures]}\n vfTies = [];\n systemBreakOffsets = [];\n vfTuplets = [];\n // measureFormatters = [];\n\n constructor(s, div=undefined, where=undefined) {\n this.stream = s;\n // this.streamType = s.classes[-1];\n if (div !== undefined) {\n if (div.jquery !== undefined) {\n this.$div = div;\n this.div = div[0];\n } else {\n this.div = div;\n this.$div = $(div);\n }\n }\n\n if (where !== undefined) {\n if (where.jquery !== undefined) {\n this.$where = where;\n } else {\n this.$where = $(where);\n }\n }\n }\n\n get vfRenderer(): any {\n let backend;\n if (this.rendererType === 'canvas') {\n backend = Vex.Flow.Renderer.Backends.CANVAS;\n } else {\n backend = Vex.Flow.Renderer.Backends.SVG;\n }\n\n if (this._vfRenderer !== undefined) {\n return this._vfRenderer;\n } else {\n this._vfRenderer = new Vex.Flow.Renderer(this.div, backend);\n if (this.rendererType === 'svg') {\n // this is NOT NOT NOT a JQuery object.\n // noinspection JSDeprecatedSymbols\n this._vfRenderer.resize(\n this.$div.attr('width'),\n this.$div.attr('height')\n );\n }\n return this._vfRenderer;\n }\n }\n\n set vfRenderer(vfr: any) {\n this._vfRenderer = vfr;\n }\n\n get ctx() {\n if (this._ctx !== undefined) {\n return this._ctx;\n } else {\n this._ctx = this.vfRenderer.getContext();\n if (\n this.stream\n && this.stream.renderOptions\n && this.stream.renderOptions.scaleFactor.x\n && this.stream.renderOptions.scaleFactor.y\n ) {\n this._ctx.scale(\n this.stream.renderOptions.scaleFactor.x,\n this.stream.renderOptions.scaleFactor.y\n );\n }\n return this._ctx;\n }\n }\n\n set ctx(ctx) {\n this._ctx = ctx;\n }\n\n /**\n *\n * main function to render a Stream.\n *\n * if s is undefined, uses the stored Stream from\n * the constructor object.\n *\n * @param {Stream} [s=this.stream]\n */\n render(s: stream.Stream = undefined) {\n if (s === undefined) {\n s = this.stream;\n }\n\n let isScorelike = false;\n let isPartlike = false;\n const isFlat = s.isFlat;\n\n if (s.isClassOrSubclass('Score')) {\n isScorelike = true;\n } else if (!isFlat && !(s.get(0) as stream.Stream).isFlat) {\n isScorelike = true;\n } else if (!isFlat) {\n isPartlike = true;\n }\n // requires organization Score -> Part -> Measure -> elements...\n if (isScorelike) {\n this.prepareScorelike(s as stream.Score);\n } else if (isPartlike) {\n this.preparePartlike(s as stream.Part);\n } else {\n this.prepareArrivedFlat(s);\n }\n this.formatMeasureStacks();\n this.drawTies();\n this.drawMeasureStacks();\n this.drawBeamGroups();\n this.drawTuplets();\n }\n\n /**\n * Prepares a scorelike stream (i.e., one with parts or\n * Streams that should be rendered vertically like parts)\n * for rendering and adds Staff Connectors\n *\n * @param {music21.stream.Score} s - prepare a stream of parts (i.e., Score)\n */\n prepareScorelike(s: stream.Score) {\n // console.log('prepareScorelike called');\n //\n const parts = s.parts;\n for (const subStream of parts) {\n this.preparePartlike(subStream);\n }\n this.addStaffConnectors(s);\n }\n\n /**\n *\n * Prepares a Partlike stream (that is one with Measures\n * or substreams that should be considered like Measures)\n * for rendering.\n *\n * @param {music21.stream.Part} p\n */\n preparePartlike(p: stream.Part) {\n // console.log('preparePartlike called');\n this.systemBreakOffsets = [];\n const measureList = p.measures;\n for (let i = 0; i < measureList.length; i++) {\n const subStream = measureList.get(i);\n if (subStream.renderOptions.startNewSystem) {\n this.systemBreakOffsets.push(subStream.offset);\n }\n if (i === p.length - 1) {\n subStream.renderOptions.rightBarline = 'end';\n }\n if (this.stacks[i] === undefined) {\n this.stacks[i] = new RenderStack();\n }\n this.prepareMeasure(subStream, this.stacks[i]);\n }\n this.prepareTies(p);\n }\n\n /**\n *\n * Prepares a score that arrived flat... sets up\n * stacks and vfTies after calling prepareFlat\n *\n * @param {Stream} m - a flat stream (maybe a measure or voice)\n */\n prepareArrivedFlat(m: stream.Stream) {\n const stack = new RenderStack();\n this.prepareMeasure(m, stack);\n this.stacks[0] = stack;\n this.prepareTies(m);\n }\n\n /**\n *\n * Prepares a measure (w/ or w/o voices) or generic Stream -- makes accidentals,\n * associates a Vex.Flow.Stave with the stream and\n * returns a vexflow Voice object\n *\n * @param {music21.stream.Measure} m - a measure object (w or w/o voices)\n * @param {music21.vfShow.RenderStack} stack - a RenderStack object to prepare into.\n */\n prepareMeasure(m, stack) {\n if (m.hasVoices === undefined || m.hasVoices() === false) {\n this.prepareFlat(m, stack);\n } else {\n // get elements outside of voices;\n const firstVoiceCopy = m.getElementsByClass('Voice').get(0).clone(false);\n for (const el of m.getElementsNotOfClass('Voice')) {\n firstVoiceCopy.insert(el.offset, el);\n }\n const rendOp = m.renderOptions; // get render options from Measure;\n let stave;\n for (const [i, voiceStream] of Array.from(m.getElementsByClass('Voice')).entries()) {\n let voiceToRender = voiceStream;\n if (i === 0) {\n voiceToRender = firstVoiceCopy;\n }\n // noinspection JSUnusedAssignment\n stave = this.prepareFlat(voiceToRender, stack, stave, rendOp);\n if (i === 0) {\n ( voiceStream).activeVFStave = voiceToRender.activeVFStave;\n ( voiceStream).storedVexflowStave = voiceToRender.activeVFStave;\n }\n }\n }\n return stack;\n }\n\n /**\n * Main internal routine to prepare a flat stream\n *\n * @param {Stream} s - a flat stream object\n * @param {music21.vfShow.RenderStack} stack - a RenderStack object to prepare into.\n * @param {Vex.Flow.Stave} [optionalStave] - an optional existing stave.\n * @param {Object} [optional_renderOp] - render options.\n * Passed to {@link music21.vfShow.Renderer#renderStave}\n * @returns {Vex.Flow.Stave} staff to return too\n * (also changes the `stack` parameter and runs `makeNotation` on s)\n */\n prepareFlat(s, stack, optionalStave=undefined, optional_renderOp=undefined) {\n s.makeNotation();\n let stave;\n if (optionalStave !== undefined) {\n stave = optionalStave;\n } else {\n stave = this.renderStave(s, optional_renderOp);\n }\n s.activeVFStave = stave;\n const vf_voice = this.getVoice(s, stave);\n stack.voices.push(vf_voice);\n stack.streams.push(s);\n stack.voiceToStreamMapping.set(vf_voice, s);\n\n if (s.hasLyrics()) {\n stack.textVoices.push(this.getLyricVoice(s, stave));\n }\n\n return stave;\n }\n\n /**\n * Render the Vex.Flow.Stave from a flat stream and draws it.\n *\n * Just draws the stave, not the notes, etc.\n *\n * @param {Stream} [m=this.stream] - a flat stream\n * @param {Object} [optional_rendOp] - render options, passed\n * to {@link music21.vfShow.Renderer#newStave} and {@link music21.vfShow.Renderer#setClefEtc}\n * @returns {Vex.Flow.Stave} stave\n */\n renderStave(m=undefined, optional_rendOp=undefined) {\n if (m === undefined) {\n m = this.stream;\n }\n const ctx = this.ctx;\n // stave will be passed in from Measure when we have Voices\n const stave = this.newStave(m, optional_rendOp);\n\n this.setClefEtc(m, stave, optional_rendOp);\n stave.setContext(ctx);\n stave.draw();\n return stave;\n }\n\n /**\n * Draws the Voices (music and text) from `this.stacks`\n *\n */\n drawMeasureStacks() {\n const ctx = this.ctx;\n for (let i = 0; i < this.stacks.length; i++) {\n const voices = this.stacks[i].allTickables();\n for (let j = 0; j < voices.length; j++) {\n const v = voices[j];\n v.draw(ctx);\n }\n }\n }\n\n /**\n * draws the tuplets.\n *\n */\n drawTuplets() {\n const ctx = this.ctx;\n this.vfTuplets.forEach(vft => {\n vft.setContext(ctx).draw();\n });\n }\n\n /**\n * draws the vfTies\n *\n */\n drawTies() {\n const ctx = this.ctx;\n for (let i = 0; i < this.vfTies.length; i++) {\n this.vfTies[i].setContext(ctx).draw();\n }\n }\n\n /**\n * Finds all tied notes and creates the proper Vex.Flow.StaveTie objects in\n * `this.vfTies`.\n *\n * @param {Stream} p - a Part or similar object\n */\n prepareTies(p: stream.Stream) {\n const pf = Array.from(p.flat.notesAndRests);\n // console.log('newSystemsAt', this.systemBreakOffsets);\n for (let i = 0; i < pf.length - 1; i++) {\n const thisNote = pf[i];\n if (thisNote.tie === undefined || thisNote.tie.type === 'stop') {\n continue;\n }\n const nextNote = pf[i + 1];\n let onSameSystem = true;\n // this.systemBreakOffsets.length will be 0 for a flat score\n for (let sbI = 0; sbI < this.systemBreakOffsets.length; sbI++) {\n const thisSystemBreak = this.systemBreakOffsets[sbI];\n if (\n thisNote.offset < thisSystemBreak\n && nextNote.offset >= thisSystemBreak\n ) {\n onSameSystem = false;\n break;\n }\n }\n if (onSameSystem) {\n const vfTie = new Vex.Flow.StaveTie({\n first_note: thisNote.activeVexflowNote,\n last_note: nextNote.activeVexflowNote,\n first_indices: [0],\n last_indices: [0],\n });\n this.vfTies.push(vfTie);\n } else {\n // console.log('got me a tie across systemBreaks!');\n const vfTie1 = new Vex.Flow.StaveTie({\n first_note: thisNote.activeVexflowNote,\n first_indices: [0],\n });\n this.vfTies.push(vfTie1);\n const vfTie2 = new Vex.Flow.StaveTie({\n last_note: nextNote.activeVexflowNote,\n first_indices: [0],\n });\n this.vfTies.push(vfTie2);\n }\n }\n }\n\n /**\n * Returns a Vex.Flow.Voice object with all the tickables (i.e., Notes, Voices, etc.)\n *\n * Does not draw it...\n *\n * @param {Stream} [s=this.stream] -- usually a Measure or Voice\n * @param {Vex.Flow.Stave} stave - not optional (would never fly in Python...)\n * @returns {Vex.Flow.Voice}\n */\n getVoice(s: stream.Stream=undefined, stave) {\n if (s === undefined) {\n s = this.stream;\n }\n\n // gets a group of notes as a voice, but completely un-formatted and not drawn.\n const notes = this.vexflowNotes(s, stave);\n const voice = this.vexflowVoice(s);\n voice.setStave(stave);\n\n voice.addTickables(notes);\n return voice;\n }\n\n /**\n * Returns a Vex.Flow.Voice with the lyrics set to render in the proper place.\n *\n * @param {Stream} s -- usually a Measure or Voice\n * @param {Vex.Flow.Stave} stave\n * @returns {Vex.Flow.Voice}\n */\n getLyricVoice(s, stave) {\n const textVoice = this.vexflowVoice(s);\n const lyrics = this.vexflowLyrics(s, stave);\n textVoice.setStave(stave);\n textVoice.addTickables(lyrics);\n return textVoice;\n }\n\n /**\n * Aligns all of `this.stacks` (after they've been prepared) so they align properly.\n *\n */\n formatMeasureStacks() {\n // adds formats the voices, then adds the formatter information to every note in a voice...\n for (let i = 0; i < this.stacks.length; i++) {\n const stack = this.stacks[i];\n const vf_voices = stack.voices;\n const measuresOrVoices = stack.streams;\n const formatter = this.formatVoiceGroup(stack);\n for (let j = 0; j < measuresOrVoices.length; j++) {\n const m = measuresOrVoices[j];\n const v = vf_voices[j];\n this.applyFormatterInformationToNotes(v.stave, m, formatter);\n }\n }\n }\n\n /**\n * Formats a single voice group from a stack.\n *\n * @param {music21.vfShow.RenderStack} stack\n * @param {boolean} [autoBeam=measures[0].autoBeam]\n * @returns {Vex.Flow.Formatter}\n */\n formatVoiceGroup(stack, autoBeam: boolean =undefined) {\n // formats a group of voices to use the same formatter; returns the formatter\n // if autoBeam is true then it will apply beams for each voice and put them in\n // this.beamGroups;\n const allTickables = stack.allTickables();\n const vf_voices = stack.voices;\n const measuresOrVoices = stack.streams;\n const useVexflowAutobeam = this.stream.renderOptions.useVexflowAutobeam;\n if (autoBeam === undefined) {\n autoBeam = measuresOrVoices[0].autoBeam;\n }\n\n const formatter = new Vex.Flow.Formatter();\n // var minLength = formatter.preCalculateMinTotalWidth([voices]);\n // console.log(minLength);\n if (vf_voices.length === 0) {\n return formatter;\n }\n let maxGlyphStart = 0; // find the stave with the farthest start point -- diff key sig, etc.\n for (let i = 0; i < allTickables.length; i++) {\n // console.log(voices[i], voices[i].stave, i);\n if (allTickables[i].stave.getNoteStartX() > maxGlyphStart) {\n maxGlyphStart = allTickables[i].stave.getNoteStartX();\n }\n }\n for (let i = 0; i < allTickables.length; i++) {\n allTickables[i].stave.setNoteStartX(maxGlyphStart); // corrected!\n }\n // TODO: should do the same for end_x -- for key sig changes, etc...\n\n const stave = vf_voices[0].stave; // all staves should be same length, so does not matter;\n const tickablesByStave = stack.tickablesByStave();\n for (const staveTickables of tickablesByStave) {\n formatter.joinVoices(staveTickables);\n }\n formatter.formatToStave(allTickables, stave);\n\n // VexFlow and native autobeam both wipe out stemDirection. worth it usually...\n if (autoBeam && useVexflowAutobeam) {\n for (let i = 0; i < vf_voices.length; i++) {\n const vf_voice = vf_voices[i];\n const associatedStream = stack.voiceToStreamMapping.get(vf_voice);\n let beatGroups;\n if (\n associatedStream !== undefined\n && associatedStream.getSpecialContext('timeSignature') !== undefined\n ) {\n beatGroups = associatedStream.getSpecialContext('timeSignature').vexflowBeatGroups();\n // TODO: getContextByClass...\n // console.log(beatGroups);\n } else {\n beatGroups = [new Vex.Flow.Fraction(2, 8)]; // default beam groups\n }\n const beamGroups = Vex.Flow.Beam.applyAndGetBeams(\n vf_voice,\n undefined,\n beatGroups\n );\n this.beamGroups.push(...beamGroups);\n }\n } else {\n for (const s of stack.streams) {\n const notes = s.flat.notes;\n let activeBeamGroupNotes = [];\n for (const n of notes) {\n if (n.beams === undefined || !n.beams.getNumbers().includes(1)) {\n continue;\n }\n const eighthNoteBeam = n.beams.getByNumber(1);\n if (eighthNoteBeam.type === 'start') {\n activeBeamGroupNotes = [n.activeVexflowNote];\n } else {\n activeBeamGroupNotes.push(n.activeVexflowNote);\n }\n if (eighthNoteBeam.type === 'stop') {\n const vfBeam = new Vex.Flow.Beam(activeBeamGroupNotes, false);\n this.beamGroups.push(vfBeam);\n activeBeamGroupNotes = [];\n }\n }\n }\n }\n return formatter;\n }\n\n /**\n * Draws the beam groups.\n *\n */\n drawBeamGroups() {\n const ctx = this.ctx;\n for (let i = 0; i < this.beamGroups.length; i++) {\n this.beamGroups[i].setContext(ctx).draw();\n }\n }\n\n /**\n * Return a new Vex.Flow.Stave object, which represents\n * a single MEASURE of notation in m21j\n *\n * @param {Stream} s\n * @param {Object} [rendOp]\n * @returns {Vex.Flow.Stave}\n */\n newStave(s, rendOp) {\n if (s === undefined) {\n s = this.stream;\n }\n if (rendOp === undefined) {\n rendOp = s.renderOptions;\n }\n // measure level...\n let width = rendOp.width;\n if (width === undefined) {\n width = s.estimateStaffLength() + rendOp.staffPadding;\n }\n let top = rendOp.top; // * rendOp.scaleFactor.y;\n if (top === undefined) {\n top = 0;\n }\n let left = rendOp.left;\n if (left === undefined) {\n left = 10;\n }\n // console.log('streamLength: ' + streamLength);\n if (debug) {\n console.log(\n 'creating new stave: left:'\n + left\n + ' top: '\n + top\n + ' width: '\n + width\n );\n }\n const stave = new Vex.Flow.Stave(left, top, width);\n return stave;\n }\n\n /**\n * Sets the number of stafflines, puts the clef on the Stave,\n * adds keySignature, timeSignature, and rightBarline\n *\n * @param {Stream} s\n * @param {Vex.Flow.Stave} stave\n * @param {Object} [rendOp=s.renderOptions] - a {@link music21.renderOptions.RenderOptions}\n * object that might have\n * `{showMeasureNumber: boolean, rightBarLine: string<{'single', 'double', 'end'}>}`\n */\n setClefEtc(s, stave, rendOp) {\n if (rendOp === undefined) {\n rendOp = s.renderOptions;\n }\n\n\n let sClef = s.getSpecialContext('clef')\n || s.getContextByClass('Clef');\n\n // this should not be necessary now that derivation is\n // checked, but does not hurt.\n if (sClef === undefined && s.length) {\n // the clef context might be from something else in the stream...\n const firstEl = s.get(0);\n sClef = firstEl.getContextByClass('Clef');\n }\n // last resort\n sClef = sClef || _clefSingleton;\n\n this.setStafflines(s, stave);\n if (rendOp.showMeasureNumber) {\n stave.setMeasure(rendOp.measureIndex + 1);\n }\n if (rendOp.displayClef) {\n let ottava;\n const size = 'default';\n if (sClef.octaveChange === 1) {\n ottava = '8va';\n } else if (sClef.octaveChange === -1) {\n ottava = '8vb';\n }\n stave.addClef(sClef.name, size, ottava);\n }\n const context_ks = s.getSpecialContext('keySignature') || s.getContextByClass('KeySignature');\n if (context_ks !== undefined && rendOp.displayKeySignature) {\n const ksVFName = context_ks.majorName().replace(/-/g, 'b');\n stave.addKeySignature(ksVFName);\n }\n\n const context_ts = s.getSpecialContext('timeSignature') || s.getContextByClass('TimeSignature');\n if (context_ts !== undefined && rendOp.displayTimeSignature) {\n stave.addTimeSignature(\n context_ts.numerator.toString()\n + '/'\n + context_ts.denominator.toString()\n );\n }\n if (rendOp.rightBarline !== undefined) {\n const bl = rendOp.rightBarline;\n const barlineMap = {\n single: 'SINGLE',\n double: 'DOUBLE',\n end: 'END',\n };\n const vxBL = barlineMap[bl];\n if (vxBL !== undefined) {\n stave.setEndBarType(Vex.Flow.Barline.type[vxBL]);\n }\n }\n }\n\n /**\n * Sets the number of stafflines properly for the Stave object.\n *\n * This method does not just set Vex.Flow.Stave#setNumLines() except\n * if the number of lines is 0 or >=4, because the default in VexFlow is\n * to show the bottom(top?), not middle, lines and that looks bad.\n *\n * @param {Stream} s - stream to get the `.staffLines`\n * from `s.renderOptions` from -- should allow for overriding.\n * @param {Vex.Flow.Stave} vexflowStave - stave to set the staff lines for.\n */\n setStafflines(s, vexflowStave) {\n const rendOp = s.renderOptions;\n if (rendOp.staffLines !== 5) {\n if (rendOp.staffLines === 0) {\n vexflowStave.setNumLines(0);\n } else if (rendOp.staffLines === 1) {\n // Vex.Flow.Stave.setNumLines hides all but the top line.\n // this is better\n vexflowStave.options.line_config = [\n { visible: false },\n { visible: false },\n { visible: true }, // show middle\n { visible: false },\n { visible: false },\n ];\n } else if (rendOp.staffLines === 2) {\n vexflowStave.options.line_config = [\n { visible: false },\n { visible: false },\n { visible: true }, // show middle\n { visible: true },\n { visible: false },\n ];\n } else if (rendOp.staffLines === 3) {\n vexflowStave.options.line_config = [\n { visible: false },\n { visible: true },\n { visible: true }, // show middle\n { visible: true },\n { visible: false },\n ];\n } else {\n vexflowStave.setNumLines(rendOp.staffLines);\n }\n }\n }\n\n /**\n * Gets the Vex.Flow.StaveNote objects from a Stream.\n *\n * Also changes `this.vfTuplets`.\n *\n * @param {Stream} [s=this.stream] - flat stream to find notes in\n * @param {Vex.Flow.Stave} stave - Vex.Flow.Stave to render notes on to.\n * @returns {Array} notes to return\n */\n vexflowNotes(s, stave) {\n if (s === undefined) {\n s = this.stream;\n }\n // runs on a flat stream, returns a list of voices...\n const notes = [];\n const vfTuplets = [];\n let activeTuplet;\n let activeTupletLength = 0.0;\n let activeTupletVexflowNotes = [];\n let sClef = s.getSpecialContext('clef') || s.getContextByClass('Clef');\n if (sClef === undefined && s.length) {\n // TODO: follow Derivation...\n const firstEl = s.get(0);\n sClef = firstEl.getContextByClass('Clef');\n }\n if (sClef === undefined) {\n sClef = _clefSingleton;\n }\n\n const options = { clef: sClef, stave };\n for (const thisEl of s) {\n if (\n thisEl.isClassOrSubclass('GeneralNote')\n && thisEl.duration !== undefined\n ) {\n // sets thisEl.activeVexflowNote -- may be overwritten but not so fast...\n const vfn = thisEl.vexflowNote(options);\n if (vfn === undefined) {\n console.error('Cannot create a vexflowNote from: ', thisEl);\n continue;\n }\n if (stave !== undefined) {\n // noinspection TypeScriptValidateJSTypes\n vfn.setStave(stave);\n }\n notes.push(vfn);\n\n // account for tuplets...\n if (thisEl.duration.tuplets.length > 0) {\n // only support one tuplet per note -- like vexflow\n if (activeTuplet === undefined) {\n activeTuplet = thisEl.duration.tuplets[0];\n }\n activeTupletVexflowNotes.push(vfn);\n activeTupletLength += thisEl.duration.quarterLength;\n // console.log(activeTupletLength, activeTuplet.totalTupletLength());\n //\n // Add tuplet when complete.\n if (\n activeTupletLength\n >= activeTuplet.totalTupletLength()\n || Math.abs(\n activeTupletLength\n - activeTuplet.totalTupletLength()\n ) < 0.001\n ) {\n // console.log(activeTupletVexflowNotes);\n const tupletOptions = {\n num_notes: activeTuplet.numberNotesActual,\n notes_occupied: activeTuplet.numberNotesNormal,\n };\n // console.log('tupletOptions', tupletOptions);\n const vfTuplet = new Vex.Flow.Tuplet(\n activeTupletVexflowNotes,\n tupletOptions\n );\n if (activeTuplet.tupletNormalShow === 'ratio') {\n vfTuplet.setRatioed(true);\n }\n\n vfTuplets.push(vfTuplet);\n activeTupletLength = 0.0;\n activeTuplet = undefined;\n activeTupletVexflowNotes = [];\n }\n }\n }\n }\n if (activeTuplet !== undefined) {\n console.warn('incomplete tuplet found in stream: ', s);\n }\n if (vfTuplets.length > 0) {\n this.vfTuplets.push(...vfTuplets);\n }\n return notes;\n }\n\n /**\n * Gets an Array of `Vex.Flow.TextNote` objects from any lyrics found in s\n *\n * @param {Stream} s - flat stream to search.\n * @param {Vex.Flow.Stave} stave\n * @returns {Array}\n */\n vexflowLyrics(s, stave) {\n const getTextNote = (text, font, d, lyricObj=undefined) => {\n // console.log(text, font, d);\n // noinspection TypeScriptValidateJSTypes\n const t1 = new Vex.Flow.TextNote({\n text,\n font,\n duration: d.vexflowDuration,\n })\n .setLine(11)\n .setStave(stave)\n .setJustification(Vex.Flow.TextNote.Justification.LEFT);\n if (lyricObj) {\n t1.setStyle(lyricObj.style);\n }\n if (d.tuplets.length > 0) {\n t1.applyTickMultiplier(d.tuplets[0].numberNotesNormal, d.tuplets[0].numberNotesActual);\n }\n return t1;\n };\n\n if (s === undefined) {\n s = this.stream;\n }\n // runs on a flat, gapless, no-overlap stream, returns a list of TextNote objects...\n const lyricsObjects = [];\n for (const el of s) {\n const lyricsArray = el.lyrics;\n if (lyricsArray === undefined) {\n continue;\n }\n let text;\n let d = el.duration;\n let addConnector: boolean|string = false;\n let firstLyric;\n const font = {\n family: 'Serif',\n size: 12,\n weight: '',\n };\n\n if (lyricsArray.length === 0) {\n text = '';\n } else {\n firstLyric = lyricsArray[0];\n text = firstLyric.text;\n if (text === undefined) {\n text = '';\n }\n if (\n firstLyric.syllabic === 'middle'\n || firstLyric.syllabic === 'begin'\n ) {\n addConnector = ' ' + firstLyric.lyricConnector;\n const tempQl = el.duration.quarterLength / 2.0;\n d = new duration.Duration(tempQl);\n }\n if (firstLyric.style.fontFamily) {\n font.family = firstLyric.style.fontFamily;\n }\n if (firstLyric.style.fontSize) {\n font.size = firstLyric.style.fontSize;\n }\n if (firstLyric.style.fontWeight) {\n font.weight = firstLyric.style.fontWeight;\n }\n }\n const t1 = getTextNote(text, font, d, firstLyric);\n lyricsObjects.push(t1);\n if (addConnector !== false) {\n const connector = getTextNote(addConnector, font, d);\n lyricsObjects.push(connector);\n }\n }\n return lyricsObjects;\n }\n\n /**\n * Creates a Vex.Flow.Voice of the appropriate length given a Stream.\n */\n vexflowVoice(s: stream.Stream): Vex.Flow.Voice {\n const totalLength = s.duration.quarterLength;\n\n let num1024 = Math.round(totalLength / (1 / 256));\n let beatValue = 1024;\n\n if (num1024 % 512 === 0) {\n beatValue = 2;\n num1024 /= 512;\n } else if (num1024 % 256 === 0) {\n beatValue = 4;\n num1024 /= 256;\n } else if (num1024 % 128 === 0) {\n beatValue = 8;\n num1024 /= 128;\n } else if (num1024 % 64 === 0) {\n beatValue = 16;\n num1024 /= 64;\n } else if (num1024 % 32 === 0) {\n beatValue = 32;\n num1024 /= 32;\n } else if (num1024 % 16 === 0) {\n beatValue = 64;\n num1024 /= 16;\n } else if (num1024 % 8 === 0) {\n beatValue = 128;\n num1024 /= 8;\n } else if (num1024 % 4 === 0) {\n beatValue = 256;\n num1024 /= 4;\n } else if (num1024 % 2 === 0) {\n beatValue = 512;\n num1024 /= 2;\n }\n // console.log('creating voice');\n if (debug) {\n console.log(\n 'New voice, num_beats: '\n + num1024.toString()\n + ' beat_value: '\n + beatValue.toString()\n );\n }\n const vfv = new Vex.Flow.Voice({\n num_beats: num1024,\n beat_value: beatValue,\n resolution: Vex.Flow.RESOLUTION,\n });\n\n // from vexflow/src/voice.js\n //\n // Modes allow the addition of ticks in three different ways:\n //\n // STRICT: This is the default. Ticks must fill the voice.\n // SOFT: Ticks can be added without restrictions.\n // FULL: Ticks do not need to fill the voice, but can't exceed the maximum\n // tick length.\n // noinspection TypeScriptValidateJSTypes\n vfv.setMode(Vex.Flow.Voice.Mode.SOFT);\n return vfv;\n }\n\n staffConnectorsMap(connectorType) {\n const connectorMap = {\n brace: Vex.Flow.StaveConnector.type.BRACE,\n single: Vex.Flow.StaveConnector.type.SINGLE,\n double: Vex.Flow.StaveConnector.type.DOUBLE,\n bracket: Vex.Flow.StaveConnector.type.BRACKET,\n };\n return connectorMap[connectorType];\n }\n\n /**\n * If a stream has parts (NOT CHECKED HERE) create and\n * draw an appropriate Vex.Flow.StaveConnector\n *\n * @param {music21.stream.Score} s\n */\n addStaffConnectors(s) {\n if (s === undefined) {\n s = this.stream;\n }\n const parts = s.parts;\n const numParts = parts.length;\n if (numParts < 2) {\n return;\n }\n\n const firstPart = parts.get(0);\n const lastPart = parts.get(-1);\n\n const firstPartMeasures = firstPart.measures;\n const lastPartMeasures = lastPart.measures;\n const numMeasures = firstPartMeasures.length;\n\n for (let mIndex = 0; mIndex < numMeasures; mIndex++) {\n const thisPartMeasure = firstPartMeasures.get(mIndex);\n const lastPartMeasure = lastPartMeasures.get(mIndex); // only needed once per system but\n // good for symmetry.\n if (thisPartMeasure.renderOptions.startNewSystem) {\n let topVFStaff = thisPartMeasure.activeVFStave;\n let bottomVFStaff = lastPartMeasure.activeVFStave;\n if (topVFStaff === undefined) {\n if (!thisPartMeasure.isFlat) {\n const thisPartVoice = thisPartMeasure\n .getElementsByClass('Stream')\n .get(0);\n topVFStaff = thisPartVoice.activeVFStave;\n if (topVFStaff === undefined) {\n console.warn(\n 'No active VexFlow Staves defined for at least one measure'\n );\n continue;\n }\n }\n }\n if (bottomVFStaff === undefined) {\n if (!lastPartMeasure.isFlat) {\n const lastPartVoice = lastPartMeasure\n .getElementsByClass('Stream')\n .get(0);\n bottomVFStaff = lastPartVoice.activeVFStave;\n if (bottomVFStaff === undefined) {\n console.warn(\n 'No active VexFlow Staves defined for at least one measure'\n );\n continue;\n }\n }\n }\n for (\n let i = 0;\n i < s.renderOptions.staffConnectors.length;\n i++\n ) {\n const sc = new Vex.Flow.StaveConnector(\n topVFStaff,\n bottomVFStaff\n );\n const scTypeM21 = s.renderOptions.staffConnectors[i];\n const scTypeVF = this.staffConnectorsMap(scTypeM21);\n // noinspection TypeScriptValidateJSTypes\n sc.setType(scTypeVF);\n sc.setContext(this.ctx);\n sc.draw();\n }\n }\n }\n }\n\n /**\n * The process of putting a Stream onto a div affects each of the\n * elements in the Stream by adding pieces of information to\n * each {@link Music21Object} -- see `applyFormatterInformationToNotes`\n *\n * You might want to remove this information; this routine does that.\n *\n * @param {Stream} s - can have parts, measures, etc.\n * @param {boolean} [recursive=false]\n */\n removeFormatterInformation(s, recursive=false) {\n s.storedVexflowStave = undefined;\n for (const el of s) {\n el.x = undefined;\n el.y = undefined;\n el.width = undefined;\n el.systemIndex = undefined;\n el.activeVexflowNote = undefined;\n if (recursive && el.isClassOrSubclass('Stream')) {\n this.removeFormatterInformation(el, recursive);\n }\n }\n }\n\n /**\n * Adds the following pieces of information to each Note\n *\n * - el.x -- x location in pixels\n * - el.y -- y location in pixels\n * - el.width - width of element in pixels.\n * - el.systemIndex -- which system is it on\n * - el.activeVexflowNote - which Vex.Flow.StaveNote is it connected with.\n *\n * mad props to our friend Vladimir Viro for figuring this out! Visit http://peachnote.com/\n *\n * Also sets s.storedVexflowStave to stave.\n *\n * @param {Vex.Flow.Stave} stave\n * @param {Stream} [s=this.stream]\n * @param {Vex.Flow.Formatter} formatter\n */\n applyFormatterInformationToNotes(stave: Vex.Flow.Stave, s?: stream.Stream, formatter?) {\n if (s === undefined) {\n s = this.stream;\n }\n const sClef = s.getSpecialContext('clef') || s.getContextByClass('Clef') || _clefSingleton;\n let noteOffsetLeft = 0;\n // var staveHeight = 80;\n if (stave !== undefined) {\n noteOffsetLeft = stave.start_x + stave.glyph_start_x;\n if (debug) {\n console.log(\n 'noteOffsetLeft: '\n + noteOffsetLeft\n + ' ; stave.start_x: '\n + stave.start_x\n );\n console.log('Bottom y: ' + stave.getBottomY());\n }\n // staveHeight = stave.height;\n }\n\n let nextTicks = 0;\n for (const ee of s) {\n const el = ee; // TODO: get rid of the hacky el.x, el.systemIndex, el.width.\n if (el.isClassOrSubclass('GeneralNote')) {\n const vfn = (el as note.GeneralNote).activeVexflowNote;\n if (vfn === undefined) {\n continue;\n }\n const nTicks = parseInt(vfn.ticks);\n const formatterNote\n = formatter.tickContexts.map[String(nextTicks)];\n nextTicks += nTicks;\n el.x = vfn.getAbsoluteX();\n // these are a bit hacky...\n el.systemIndex = s.renderOptions.systemIndex;\n\n // console.log(el.x + \" \" + formatterNote.x + \" \" + noteOffsetLeft);\n if (formatterNote === undefined) {\n continue;\n }\n\n el.width = formatterNote.width;\n if (el.pitch !== undefined && stave !== undefined) {\n // note only...\n el.y\n = stave.getBottomY()\n - (sClef.lowestLine - el.pitch.diatonicNoteNum)\n * stave.options.spacing_between_lines_px;\n // console.log('Note DNN: ' + el.pitch.diatonicNoteNum + \" ; y: \" + el.y);\n }\n }\n }\n if (debug) {\n for (const n of s) {\n if ((n as note.Note).pitch !== undefined) {\n const nn = n;\n console.log(\n nn.pitch.diatonicNoteNum\n + ' '\n + nn.x\n + ' '\n + (nn.x + nn.width)\n );\n }\n }\n }\n s.storedVexflowStave = stave;\n }\n}\n","/**\n * music21j -- Javascript reimplementation of Core music21 features.\n * music21/voiceLeading -- voiceLeading objects\n *\n * Copyright (c) 2013-18, Michael Scott Cuthbert and cuthbertLab\n * Based on music21, Copyright (c) 2006–18, Michael Scott Cuthbert and cuthbertLab\n *\n * @namespace music21.voiceLeading\n */\n\nimport * as interval from './interval';\nimport * as key from './key';\nimport * as note from './note';\n\nimport { Music21Object } from './base';\n\n// imports just for type checking\nimport { ConcreteScale } from './scale';\n\n\nconst intervalCache = [];\n\nexport const MotionType = {\n antiParallel: 'Anti-Parallel',\n contrary: 'Contrary',\n noMotion: 'No Motion',\n oblique: 'Oblique',\n parallel: 'Parallel',\n similar: 'Similar',\n};\n\n/**\n * @memberOf music21.voiceLeading\n * @extends Music21Object\n */\nexport class VoiceLeadingQuartet extends Music21Object {\n static get className() { return 'music21.voiceLeading.VoiceLeadingQuartet'; }\n\n unison: interval.Interval;\n fifth: interval.Interval;\n octave: interval.Interval;\n protected _v1n1: note.Note;\n protected _v1n2: note.Note;\n protected _v2n1: note.Note;\n protected _v2n2: note.Note;\n vIntervals: interval.Interval[];\n hIntervals: interval.Interval[];\n _key: key.Key;\n\n constructor(v1n1, v1n2, v2n1, v2n2, analyticKey?) {\n super();\n if (!intervalCache.length) {\n intervalCache.push(new interval.Interval('P1'));\n intervalCache.push(new interval.Interval('P5'));\n intervalCache.push(new interval.Interval('P8'));\n }\n this.unison = intervalCache[0];\n this.fifth = intervalCache[1];\n this.octave = intervalCache[2];\n\n this._v1n1 = undefined;\n this._v1n2 = undefined;\n this._v2n1 = undefined;\n this._v2n2 = undefined;\n\n this.v1n1 = v1n1;\n this.v1n2 = v1n2;\n this.v2n1 = v2n1;\n this.v2n2 = v2n2;\n\n this.vIntervals = [];\n this.hIntervals = [];\n\n this._key = undefined;\n if (analyticKey !== undefined) {\n this.key = analyticKey;\n }\n if (\n v1n1 !== undefined\n && v1n2 !== undefined\n && v2n1 !== undefined\n && v2n2 !== undefined\n ) {\n this._findIntervals();\n }\n }\n\n _setVoiceNote(value: note.Note, which: string) {\n if (value === undefined) {\n this[which] = value;\n } else if (typeof value === 'string') {\n this[which] = new note.Note(value);\n } else if (value.classes.includes('Note')) {\n this[which] = value;\n } else {\n const n = new note.Note(value.nameWithOctave);\n n.duration.quarterLength = 0.0;\n this[which] = n;\n }\n }\n\n get v1n1(): note.Note {\n return this._v1n1;\n }\n\n set v1n1(value: note.Note) {\n this._setVoiceNote(value, '_v1n1');\n }\n\n get v1n2(): note.Note {\n return this._v1n2;\n }\n\n set v1n2(value: note.Note) {\n this._setVoiceNote(value, '_v1n2');\n }\n\n get v2n1(): note.Note {\n return this._v2n1;\n }\n\n set v2n1(value: note.Note) {\n this._setVoiceNote(value, '_v2n1');\n }\n\n get v2n2(): note.Note {\n return this._v2n2;\n }\n\n set v2n2(value: note.Note) {\n this._setVoiceNote(value, '_v2n2');\n }\n\n get key(): key.Key {\n return this._key;\n }\n\n // turning off string entry because of Typescript deficiency\n set key(keyValue: key.Key) {\n // if (typeof keyValue === 'string') {\n // keyValue = new key.Key(\n // key.convertKeyStringToMusic21KeyString(keyValue)\n // );\n // }\n this._key = keyValue;\n }\n\n protected _findIntervals(): void {\n this.vIntervals.push(new interval.Interval(this.v1n1, this.v2n1));\n this.vIntervals.push(new interval.Interval(this.v1n2, this.v2n2));\n this.hIntervals.push(new interval.Interval(this.v1n1, this.v1n2));\n this.hIntervals.push(new interval.Interval(this.v2n1, this.v2n2));\n }\n\n motionType() {\n if (this.obliqueMotion()) {\n return MotionType.oblique;\n } else if (this.parallelMotion()) {\n return MotionType.parallel;\n } else if (this.similarMotion()) {\n return MotionType.similar;\n } else if (this.contraryMotion()) {\n return MotionType.contrary;\n } else if (this.antiParallelMotion()) {\n return MotionType.antiParallel;\n } else if (this.noMotion()) {\n return MotionType.noMotion;\n }\n return undefined;\n }\n\n noMotion(): boolean {\n for (const iV of this.hIntervals) {\n if (iV.name !== 'P1') {\n return false;\n }\n }\n return true;\n }\n\n obliqueMotion(): boolean {\n if (this.noMotion()) {\n return false;\n }\n\n for (const iH of this.hIntervals) {\n if (iH.name === 'P1') {\n return true;\n }\n }\n return false;\n }\n\n similarMotion(): boolean {\n if (this.noMotion()) {\n return false;\n }\n\n if (this.hIntervals[0].direction === this.hIntervals[1].direction) {\n return true;\n } else {\n return false;\n }\n }\n\n parallelMotion(requiredInterval: interval.Interval|string|undefined=undefined): boolean {\n if (!this.similarMotion()) {\n return false;\n }\n if (\n this.vIntervals[0].directedSimpleName\n !== this.vIntervals[1].directedSimpleName\n ) {\n return false;\n }\n if (requiredInterval === undefined) {\n return true;\n }\n if (typeof requiredInterval === 'string') {\n requiredInterval = new interval.Interval(requiredInterval);\n }\n if (this.vIntervals[0].simpleName === requiredInterval.simpleName) {\n return true;\n } else {\n return false;\n }\n }\n\n contraryMotion(): boolean {\n if (this.noMotion()) {\n return false;\n }\n if (this.obliqueMotion()) {\n return false;\n }\n if (this.hIntervals[0].direction === this.hIntervals[1].direction) {\n return false;\n } else {\n return true;\n }\n }\n\n outwardContraryMotion(): boolean {\n return (\n this.contraryMotion()\n && this.hIntervals[0].direction === interval.Direction.ASCENDING\n );\n }\n\n inwardContraryMotion(): boolean {\n return (\n this.contraryMotion()\n && this.hIntervals[0].direction === interval.Direction.DESCENDING\n );\n }\n\n antiParallelMotion(simpleName: interval.Interval|string|undefined=undefined): boolean {\n if (!this.contraryMotion()) {\n return false;\n }\n if (this.vIntervals[0].simpleName !== this.vIntervals[1].simpleName) {\n return false;\n }\n if (simpleName === undefined) {\n return true;\n }\n if (typeof simpleName === 'string') {\n if (this.vIntervals[0].simpleName === simpleName) {\n return true;\n } else {\n return false;\n }\n } else if (this.vIntervals[0].simpleName === simpleName.simpleName) {\n return true;\n } else {\n return false;\n }\n }\n\n parallelInterval(thisInterval: interval.Interval|string): boolean {\n if (!(this.parallelMotion() || this.antiParallelMotion())) {\n return false;\n }\n if (typeof thisInterval === 'string') {\n thisInterval = new interval.Interval(thisInterval);\n }\n\n if (this.vIntervals[0].semiSimpleName === thisInterval.semiSimpleName) {\n return true;\n } else {\n return false;\n }\n }\n\n parallelFifth(): boolean {\n return this.parallelInterval(this.fifth);\n }\n\n parallelOctave(): boolean {\n return this.parallelInterval(this.octave);\n }\n\n parallelUnison(): boolean {\n return this.parallelInterval(this.unison);\n }\n\n parallelUnisonOrOctave(): boolean {\n return this.parallelUnison() || this.parallelOctave();\n }\n\n hiddenInterval(thisInterval: interval.Interval|string): boolean {\n if (this.parallelMotion()) {\n return false;\n }\n if (!this.similarMotion()) {\n return false;\n }\n\n if (typeof thisInterval === 'string') {\n thisInterval = new interval.Interval(thisInterval);\n }\n if (this.vIntervals[1].simpleName === thisInterval.simpleName) {\n return true;\n } else {\n return false;\n }\n }\n\n hiddenFifth(): boolean {\n return this.hiddenInterval(this.fifth);\n }\n\n hiddenOctave(): boolean {\n return this.hiddenInterval(this.octave);\n }\n\n // True if either note in voice 1 is lower than the corresponding voice 2 note\n voiceCrossing(): boolean {\n return (\n this.v1n1.pitch.ps < this.v2n1.pitch.ps\n || this.v1n2.pitch.ps < this.v2n2.pitch.ps\n );\n }\n\n voiceOverlap(): boolean {\n return (\n this.v1n2.pitch.ps < this.v2n1.pitch.ps\n || this.v2n2.pitch.ps > this.v1n1.pitch.ps\n );\n }\n\n /**\n * isProperResolution - Checks whether the voice-leading quartet resolves correctly according to standard\n * counterpoint rules. If the first harmony is dissonant (d5, A4, or m7) it checks\n * that these are correctly resolved. If the first harmony is consonant, True is returned.\n *\n * The key parameter should be specified to check for motion in the bass from specific\n * note degrees. If it is not set, then no checking for scale degrees takes place.\n *\n * Diminished Fifth: in by contrary motion to a third, with 7 resolving up to 1 in the bass\n * Augmented Fourth: out by contrary motion to a sixth, with chordal seventh resolving\n * down to a third in the bass.\n * Minor Seventh: Resolves to a third with a leap form 5 to 1 in the bass\n *\n * @return {boolean} true if proper or rules do not apply; false if improper\n */\n\n isProperResolution(): boolean {\n if (this.noMotion()) {\n return true;\n }\n let scale;\n let n1degree;\n let n2degree;\n if (this.key !== undefined) {\n scale = this.key.getScale();\n n1degree = scale.getScaleDegreeFromPitch(this.v2n1);\n n2degree = scale.getScaleDegreeFromPitch(this.v2n2);\n }\n\n // catches case of #7 in minor\n if (\n this.key !== undefined\n && this.key.mode === 'minor'\n && (n1degree === undefined || n2degree === undefined)\n ) {\n const scale2 = this.key.getScale('melodic-minor'); // gets ascending form\n if (n1degree === undefined) {\n n1degree = scale2.getScaleDegreeFromPitch(this.v2n1);\n }\n if (n2degree === undefined) {\n n2degree = scale2.getScaleDegreeFromPitch(this.v2n2);\n }\n }\n\n const firstHarmony = this.vIntervals[0].simpleName;\n const secondHarmony = this.vIntervals[1].generic.simpleUndirected;\n\n if (firstHarmony === 'P4') {\n if (this.v1n1.pitch.ps >= this.v1n2.pitch.ps) {\n return true;\n } else {\n return false;\n }\n } else if (firstHarmony === 'd5') {\n if (scale !== undefined && n1degree !== 7) {\n return true;\n }\n if (scale !== undefined && n2degree !== 1) {\n return false;\n }\n return this.inwardContraryMotion() && secondHarmony === 3;\n } else if (firstHarmony === 'A4') {\n if (scale !== undefined && n1degree !== 4) {\n return true;\n }\n if (scale !== undefined && n2degree !== 3) {\n return false;\n }\n return this.outwardContraryMotion() && secondHarmony === 6;\n } else if (firstHarmony === 'm7') {\n if (scale !== undefined && n1degree !== 5) {\n return true;\n }\n if (scale !== undefined && n2degree !== 1) {\n return false;\n }\n return secondHarmony === 3;\n } else {\n return true;\n }\n }\n}\n","/**\n * music21j -- Javascript reimplementation of Core music21p features.\n * music21/webmidi -- webmidi or wrapper around the Jazz Plugin\n *\n * For non webmidi -- Uses the cross-platform, cross-browser plugin from\n * http://jazz-soft.net/doc/Jazz-Plugin/Plugin.html\n * P.S. by the standards of divinity of most major religions, Sema Kachalo is a god.\n *\n * Copyright (c) 2014-18, Michael Scott Cuthbert and cuthbertLab\n * Based on music21 (=music21p), Copyright (c) 2006–18, Michael Scott Cuthbert and cuthbertLab\n *\n */\n/**\n * webmidi -- for connecting with external midi devices\n *\n * Uses either the webmidi API or the Jazz plugin\n * See {@link music21.webmidi}\n *\n * @namespace music21.webmidi\n * @memberof music21\n * @requires music21/miditools\n * @requires jQuery\n * @exports music21/webmidi\n * @example smallest usage of the webmidi toolkit. see testHTML/midiInRequire.html\n\n\n\n MIDI In/Jazz Test for Music21j\n \n\n\n
\nMIDI Input:
\n
\n
\n
\n\n\n\n\n */\n\nimport * as $ from 'jquery';\nimport { debug } from './debug';\n\nimport * as common from './common';\nimport * as miditools from './miditools';\n\ndeclare interface Jazz extends HTMLObjectElement {\n isJazz: boolean,\n classid: string,\n}\n\ndeclare interface NavigatorWithWebMIDI extends Navigator {\n requestMIDIAccess?: Function,\n}\n\n/**\n * @typedef {Object} Jazz\n * @extends HTMLObjectElement\n * @property {boolean} isJazz\n * @property {function} MidiInOpen\n * @property {function} MidiInClose\n * @property {function} MidiInList\n *\n */\n\n/**\n *\n * @type {\n * {\n * selectedInputPort: *,\n * access: *,\n * jazzDownloadUrl: string,\n * selectedOutputPort: *,\n * storedPlugin: *,\n * selectedJazzInterface: *,\n * $select: jQuery|undefined\n * }\n * }\n */\nexport const webmidi = {\n selectedOutputPort: undefined,\n selectedInputPort: undefined,\n\n access: undefined,\n $select: undefined,\n\n jazzDownloadUrl: 'http://jazz-soft.net/download/Jazz-Plugin/',\n storedPlugin: undefined,\n selectedJazzInterface: undefined, // not the same as \"\" etc. uses last selected interface by default.\n};\n\n/**\n * Called by Jazz MIDI plugin when an event arrives.\n *\n * Shim to convert the data into WebMIDI API format and then call the WebMIDI API midiInArrived\n *\n * See the MIDI spec for information on parameters\n *\n * @memberof music21.webmidi\n * @param {byte} t - timing information\n * @param {byte} a - data 1\n * @param {byte} b - data 2\n * @param {byte} c - data 3\n */\nexport function jazzMidiInArrived(t, a, b, c) {\n const webmidiEvent = {\n timestamp: t,\n data: [a, b, c],\n };\n return midiInArrived(webmidiEvent);\n}\n\n/**\n * Called directly when a MIDI event arrives from the WebMIDI API, or via a Shim (jazzMidiInArrived)\n * when MIDI information comes from JazzMIDI\n *\n * Calls the 'raw' and 'general callbacks when a raw midi event (four bytes)\n * arrives.\n *\n * See the MIDI spec for information on the contents of the three parameters.\n *\n * midiMessageEvent should be an object with two keys: timeStamp (int) and data (array of three int values)\n *\n * @memberof music21.webmidi\n * @param {Object} midiMessageEvent - midi Information\n */\nexport function midiInArrived(midiMessageEvent) {\n const t = midiMessageEvent.timeStamp;\n const a = midiMessageEvent.data[0];\n const b = midiMessageEvent.data[1];\n const c = midiMessageEvent.data[2];\n\n const midiCallbacks: miditools.CallbackInterface = miditools.callbacks;\n const eventObject = midiCallbacks.raw(t, a, b, c);\n if (midiCallbacks.general instanceof Array) {\n return midiCallbacks.general.forEach((el, index, array) => {\n el(eventObject);\n });\n } else if (midiCallbacks.general instanceof Function) {\n return midiCallbacks.general(eventObject);\n } else {\n return undefined;\n }\n}\n\n/**\n * Create a hidden tiny, <object> tag in the DOM with the\n * proper classid (`CLSID:1ACE1618-1C7D-4561-AEE1-34842AA85E90`) to\n * load the Jazz plugin.\n *\n * It will return the plugin if it can or undefined if it cannot. Caches it in webmidi.storedPlugin.\n *\n * @function music21.webmidi.createPlugin\n * @param {HTMLElement} [appendElement=document.body] - where to place this hidden object (does not really matter)\n * @param {Boolean} [override=false] - if this method has been called\n * successfully before return the storedPlugin unless override is true.\n * @returns {Jazz|undefined} Jazz MIDI plugin object\n */\nexport function createPlugin(\n appendElement: HTMLElement = undefined,\n override: boolean = false\n) {\n if (webmidi.storedPlugin && !override) {\n return webmidi.storedPlugin;\n }\n if (typeof appendElement === 'undefined') {\n appendElement = $('body')[0];\n }\n const obj = document.createElement('object');\n // noinspection SpellCheckingInspection\n obj.classid = 'CLSID:1ACE1618-1C7D-4561-AEE1-34842AA85E90';\n if (!obj.isJazz) {\n obj.type = 'audio/x-jazz';\n }\n obj.style.visibility = 'hidden';\n obj.style.width = '0px';\n obj.style.height = '0px';\n appendElement.appendChild(obj);\n\n if (obj.isJazz) {\n webmidi.storedPlugin = obj;\n return obj;\n } else {\n appendElement.removeChild(obj);\n console.error(\n 'Cannot use jazz plugin; install at ' + webmidi.jazzDownloadUrl\n );\n return undefined;\n }\n}\n\n/**\n * Creates a <select> object for selecting among the MIDI choices in Jazz\n *\n * @function music21.webmidi.createJazzSelector\n * @param {jQuery|HTMLElement} [$newSelect=document.body] - object to append the select to\n * @param {Object} [options] - see createSelector for details\n * @returns {HTMLElement|undefined} DOM object containing the select tag, or undefined if Jazz cannot be loaded.\n */\nexport function createJazzSelector($newSelect, options={}) {\n const params = {\n onsuccess: undefined,\n oninputsuccess: undefined,\n oninputempty: undefined,\n };\n common.merge(params, options);\n\n const Jazz = createPlugin();\n if (Jazz === undefined) {\n return undefined;\n }\n\n $newSelect.on('change', () => {\n const selectedInput = $('#midiInSelect option:selected').text();\n if (selectedInput !== 'None selected') {\n webmidi.selectedJazzInterface = Jazz.MidiInOpen(\n selectedInput,\n jazzMidiInArrived\n );\n } else {\n Jazz.MidiInClose();\n }\n if (debug) {\n console.log(\n 'current input changed to: ' + webmidi.selectedJazzInterface\n );\n }\n });\n const midiOptions = Jazz.MidiInList();\n const noneAppendOption = $(\"\");\n $newSelect.append(noneAppendOption);\n\n let anySelected = false;\n const allAppendOptions = [];\n for (let i = 0; i < midiOptions.length; i++) {\n const $appendOption = $(\n \"'\n );\n if (midiOptions[i] === webmidi.selectedJazzInterface) {\n $appendOption.prop('selected', true);\n anySelected = true;\n }\n allAppendOptions.push($appendOption);\n // console.log(appendOption);\n $newSelect.append($appendOption);\n }\n if (anySelected === false && midiOptions.length > 0) {\n $newSelect.val(midiOptions[0]);\n allAppendOptions[0].prop('selected', true);\n webmidi.selectedJazzInterface = Jazz.MidiInOpen(\n midiOptions[0],\n jazzMidiInArrived\n );\n anySelected = true;\n } else {\n noneAppendOption.prop('selected', true);\n }\n if (params.onsuccess !== undefined) {\n params.onsuccess();\n }\n if (anySelected === true && params.oninputsuccess !== undefined) {\n params.oninputsuccess();\n } else if (anySelected === false && params.oninputempty !== undefined) {\n params.oninputempty();\n }\n return $newSelect;\n}\n\n/**\n * Function to be called if the webmidi-api selection changes. (not jazz)\n *\n */\nexport function selectionChanged() {\n const selectedInput = webmidi.$select.val();\n if (selectedInput === webmidi.selectedInputPort) {\n return false;\n }\n const storedStateChange = webmidi.access.onstatechange; // port.close() fires onstatechange, so turn off for a moment.\n webmidi.access.onstatechange = () => {};\n if (debug) {\n console.log('current input changed to: ' + selectedInput);\n }\n webmidi.selectedInputPort = selectedInput;\n\n webmidi.access.inputs.forEach(port => {\n if (port.name === selectedInput) {\n port.onmidimessage = midiInArrived;\n } else {\n port.close();\n }\n });\n webmidi.access.onstatechange = storedStateChange;\n return false;\n}\n\n/**\n * Creates a <select> object for selecting among the MIDI choices in Jazz\n *\n * The options object has several parameters:\n *\n *\n * @function music21.webmidi.createSelector\n * @param {jQuery|HTMLElement} [midiSelectDiv=$('body')] - object to append the select to\n * @param {Object} [options] - see above.\n * @param {boolean} options.autoupdate -- should this auto update?\n * @param {function} options.onsuccess -- function to call on all successful port queries\n * @param {function} options.oninputsuccess -- function to call if successful and at least one input device is found\n * @param {function} options.oninputempty -- function to call if successful but no input devices are found.\n * @param {boolean} options.existingMidiSelect -- is there already a select tag for MIDI?\n * @returns {jQuery|undefined} DOM object containing the select tag, or undefined if Jazz cannot be loaded.\n */\nexport function createSelector(midiSelectDiv, options) {\n const params = {\n autoUpdate: true,\n existingMidiSelect: false,\n onsuccess: undefined,\n oninputsuccess: undefined,\n oninputempty: undefined,\n };\n common.merge(params, options);\n\n /**\n * @type {jQuery}\n */\n let $midiSelectDiv;\n if (typeof midiSelectDiv === 'undefined') {\n $midiSelectDiv = $('body');\n } else if (!(midiSelectDiv instanceof $)) {\n $midiSelectDiv = $(midiSelectDiv);\n } else {\n $midiSelectDiv = midiSelectDiv;\n }\n let $newSelect;\n const foundMidiSelects = $midiSelectDiv.find('select#midiInSelect');\n if (foundMidiSelects.length > 0) {\n $newSelect = foundMidiSelects[0];\n params.existingMidiSelect = true;\n } else {\n $newSelect = $('\",\n\toptions: {\n\t\tappendTo: null,\n\t\tautoFocus: false,\n\t\tdelay: 300,\n\t\tminLength: 1,\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\tsource: null,\n\n\t\t// Callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresponse: null,\n\t\tsearch: null,\n\t\tselect: null\n\t},\n\n\trequestIndex: 0,\n\tpending: 0,\n\n\t_create: function() {\n\n\t\t// Some browsers only repeat keydown events, not keypress events,\n\t\t// so we use the suppressKeyPress flag to determine if we've already\n\t\t// handled the keydown event. #7269\n\t\t// Unfortunately the code for & in keypress is the same as the up arrow,\n\t\t// so we use the suppressKeyPressRepeat flag to avoid handling keypress\n\t\t// events when we know the keydown event was used to modify the\n\t\t// search term. #7799\n\t\tvar suppressKeyPress, suppressKeyPressRepeat, suppressInput,\n\t\t\tnodeName = this.element[ 0 ].nodeName.toLowerCase(),\n\t\t\tisTextarea = nodeName === \"textarea\",\n\t\t\tisInput = nodeName === \"input\";\n\n\t\t// Textareas are always multi-line\n\t\t// Inputs are always single-line, even if inside a contentEditable element\n\t\t// IE also treats inputs as contentEditable\n\t\t// All other element types are determined by whether or not they're contentEditable\n\t\tthis.isMultiLine = isTextarea || !isInput && this._isContentEditable( this.element );\n\n\t\tthis.valueMethod = this.element[ isTextarea || isInput ? \"val\" : \"text\" ];\n\t\tthis.isNewMenu = true;\n\n\t\tthis._addClass( \"ui-autocomplete-input\" );\n\t\tthis.element.attr( \"autocomplete\", \"off\" );\n\n\t\tthis._on( this.element, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.element.prop( \"readOnly\" ) ) {\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tsuppressInput = true;\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsuppressKeyPress = false;\n\t\t\t\tsuppressInput = false;\n\t\t\t\tsuppressKeyPressRepeat = false;\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ENTER:\n\n\t\t\t\t\t// when menu is open and has focus\n\t\t\t\t\tif ( this.menu.active ) {\n\n\t\t\t\t\t\t// #6055 - Opera still allows the keypress to occur\n\t\t\t\t\t\t// which causes forms to submit\n\t\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.TAB:\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ESCAPE:\n\t\t\t\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tif ( !this.isMultiLine ) {\n\t\t\t\t\t\t\tthis._value( this.term );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.close( event );\n\n\t\t\t\t\t\t// Different browsers have different default behavior for escape\n\t\t\t\t\t\t// Single press can mean undo or clear\n\t\t\t\t\t\t// Double press in IE means clear the whole form\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\n\t\t\t\t\t// search timeout should be triggered before the input value is changed\n\t\t\t\t\tthis._searchTimeout( event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tkeypress: function( event ) {\n\t\t\t\tif ( suppressKeyPress ) {\n\t\t\t\t\tsuppressKeyPress = false;\n\t\t\t\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( suppressKeyPressRepeat ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Replicate some key handlers to allow them to repeat in Firefox and Opera\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tinput: function( event ) {\n\t\t\t\tif ( suppressInput ) {\n\t\t\t\t\tsuppressInput = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._searchTimeout( event );\n\t\t\t},\n\t\t\tfocus: function() {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.previous = this._value();\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tif ( this.cancelBlur ) {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tclearTimeout( this.searching );\n\t\t\t\tthis.close( event );\n\t\t\t\tthis._change( event );\n\t\t\t}\n\t\t} );\n\n\t\tthis._initSource();\n\t\tthis.menu = $( \"