@period-year-norway/ngx-bootstrap
Version:
1 lines • 119 kB
Source Map (JSON)
{"version":3,"file":"period-year-norway-ngx-bootstrap-typeahead.mjs","sources":["../../../../src/typeahead/latin-map.ts","../../../../src/typeahead/typeahead-options.class.ts","../../../../src/typeahead/typeahead-match.class.ts","../../../../src/typeahead/typeahead-utils.ts","../../../../src/typeahead/typeahead-animations.ts","../../../../src/typeahead/typeahead-container.component.ts","../../../../src/typeahead/typeahead-container.component.html","../../../../src/typeahead/typeahead.config.ts","../../../../src/typeahead/typeahead.directive.ts","../../../../src/typeahead/typeahead.module.ts","../../../../src/typeahead/period-year-norway-ngx-bootstrap-typeahead.ts"],"sourcesContent":["export const latinMap: { [key: string]: string } = {\r\n 'Á': 'A',\r\n 'Ă': 'A',\r\n 'Ắ': 'A',\r\n 'Ặ': 'A',\r\n 'Ằ': 'A',\r\n 'Ẳ': 'A',\r\n 'Ẵ': 'A',\r\n 'Ǎ': 'A',\r\n 'Â': 'A',\r\n 'Ấ': 'A',\r\n 'Ậ': 'A',\r\n 'Ầ': 'A',\r\n 'Ẩ': 'A',\r\n 'Ẫ': 'A',\r\n 'Ä': 'A',\r\n 'Ǟ': 'A',\r\n 'Ȧ': 'A',\r\n 'Ǡ': 'A',\r\n 'Ạ': 'A',\r\n 'Ȁ': 'A',\r\n 'À': 'A',\r\n 'Ả': 'A',\r\n 'Ȃ': 'A',\r\n 'Ā': 'A',\r\n 'Ą': 'A',\r\n 'Å': 'A',\r\n 'Ǻ': 'A',\r\n 'Ḁ': 'A',\r\n 'Ⱥ': 'A',\r\n 'Ã': 'A',\r\n 'Ꜳ': 'AA',\r\n 'Æ': 'AE',\r\n 'Ǽ': 'AE',\r\n 'Ǣ': 'AE',\r\n 'Ꜵ': 'AO',\r\n 'Ꜷ': 'AU',\r\n 'Ꜹ': 'AV',\r\n 'Ꜻ': 'AV',\r\n 'Ꜽ': 'AY',\r\n 'Ḃ': 'B',\r\n 'Ḅ': 'B',\r\n 'Ɓ': 'B',\r\n 'Ḇ': 'B',\r\n 'Ƀ': 'B',\r\n 'Ƃ': 'B',\r\n 'Ć': 'C',\r\n 'Č': 'C',\r\n 'Ç': 'C',\r\n 'Ḉ': 'C',\r\n 'Ĉ': 'C',\r\n 'Ċ': 'C',\r\n 'Ƈ': 'C',\r\n 'Ȼ': 'C',\r\n 'Ď': 'D',\r\n 'Ḑ': 'D',\r\n 'Ḓ': 'D',\r\n 'Ḋ': 'D',\r\n 'Ḍ': 'D',\r\n 'Ɗ': 'D',\r\n 'Ḏ': 'D',\r\n 'Dz': 'D',\r\n 'Dž': 'D',\r\n 'Đ': 'D',\r\n 'Ƌ': 'D',\r\n 'DZ': 'DZ',\r\n 'DŽ': 'DZ',\r\n 'É': 'E',\r\n 'Ĕ': 'E',\r\n 'Ě': 'E',\r\n 'Ȩ': 'E',\r\n 'Ḝ': 'E',\r\n 'Ê': 'E',\r\n 'Ế': 'E',\r\n 'Ệ': 'E',\r\n 'Ề': 'E',\r\n 'Ể': 'E',\r\n 'Ễ': 'E',\r\n 'Ḙ': 'E',\r\n 'Ë': 'E',\r\n 'Ė': 'E',\r\n 'Ẹ': 'E',\r\n 'Ȅ': 'E',\r\n 'È': 'E',\r\n 'Ẻ': 'E',\r\n 'Ȇ': 'E',\r\n 'Ē': 'E',\r\n 'Ḗ': 'E',\r\n 'Ḕ': 'E',\r\n 'Ę': 'E',\r\n 'Ɇ': 'E',\r\n 'Ẽ': 'E',\r\n 'Ḛ': 'E',\r\n 'Ꝫ': 'ET',\r\n 'Ḟ': 'F',\r\n 'Ƒ': 'F',\r\n 'Ǵ': 'G',\r\n 'Ğ': 'G',\r\n 'Ǧ': 'G',\r\n 'Ģ': 'G',\r\n 'Ĝ': 'G',\r\n 'Ġ': 'G',\r\n 'Ɠ': 'G',\r\n 'Ḡ': 'G',\r\n 'Ǥ': 'G',\r\n 'Ḫ': 'H',\r\n 'Ȟ': 'H',\r\n 'Ḩ': 'H',\r\n 'Ĥ': 'H',\r\n 'Ⱨ': 'H',\r\n 'Ḧ': 'H',\r\n 'Ḣ': 'H',\r\n 'Ḥ': 'H',\r\n 'Ħ': 'H',\r\n 'Í': 'I',\r\n 'Ĭ': 'I',\r\n 'Ǐ': 'I',\r\n 'Î': 'I',\r\n 'Ï': 'I',\r\n 'Ḯ': 'I',\r\n 'İ': 'I',\r\n 'Ị': 'I',\r\n 'Ȉ': 'I',\r\n 'Ì': 'I',\r\n 'Ỉ': 'I',\r\n 'Ȋ': 'I',\r\n 'Ī': 'I',\r\n 'Į': 'I',\r\n 'Ɨ': 'I',\r\n 'Ĩ': 'I',\r\n 'Ḭ': 'I',\r\n 'Ꝺ': 'D',\r\n 'Ꝼ': 'F',\r\n 'Ᵹ': 'G',\r\n 'Ꞃ': 'R',\r\n 'Ꞅ': 'S',\r\n 'Ꞇ': 'T',\r\n 'Ꝭ': 'IS',\r\n 'Ĵ': 'J',\r\n 'Ɉ': 'J',\r\n 'Ḱ': 'K',\r\n 'Ǩ': 'K',\r\n 'Ķ': 'K',\r\n 'Ⱪ': 'K',\r\n 'Ꝃ': 'K',\r\n 'Ḳ': 'K',\r\n 'Ƙ': 'K',\r\n 'Ḵ': 'K',\r\n 'Ꝁ': 'K',\r\n 'Ꝅ': 'K',\r\n 'Ĺ': 'L',\r\n 'Ƚ': 'L',\r\n 'Ľ': 'L',\r\n 'Ļ': 'L',\r\n 'Ḽ': 'L',\r\n 'Ḷ': 'L',\r\n 'Ḹ': 'L',\r\n 'Ⱡ': 'L',\r\n 'Ꝉ': 'L',\r\n 'Ḻ': 'L',\r\n 'Ŀ': 'L',\r\n 'Ɫ': 'L',\r\n 'Lj': 'L',\r\n 'Ł': 'L',\r\n 'LJ': 'LJ',\r\n 'Ḿ': 'M',\r\n 'Ṁ': 'M',\r\n 'Ṃ': 'M',\r\n 'Ɱ': 'M',\r\n 'Ń': 'N',\r\n 'Ň': 'N',\r\n 'Ņ': 'N',\r\n 'Ṋ': 'N',\r\n 'Ṅ': 'N',\r\n 'Ṇ': 'N',\r\n 'Ǹ': 'N',\r\n 'Ɲ': 'N',\r\n 'Ṉ': 'N',\r\n 'Ƞ': 'N',\r\n 'Nj': 'N',\r\n 'Ñ': 'N',\r\n 'NJ': 'NJ',\r\n 'Ó': 'O',\r\n 'Ŏ': 'O',\r\n 'Ǒ': 'O',\r\n 'Ô': 'O',\r\n 'Ố': 'O',\r\n 'Ộ': 'O',\r\n 'Ồ': 'O',\r\n 'Ổ': 'O',\r\n 'Ỗ': 'O',\r\n 'Ö': 'O',\r\n 'Ȫ': 'O',\r\n 'Ȯ': 'O',\r\n 'Ȱ': 'O',\r\n 'Ọ': 'O',\r\n 'Ő': 'O',\r\n 'Ȍ': 'O',\r\n 'Ò': 'O',\r\n 'Ỏ': 'O',\r\n 'Ơ': 'O',\r\n 'Ớ': 'O',\r\n 'Ợ': 'O',\r\n 'Ờ': 'O',\r\n 'Ở': 'O',\r\n 'Ỡ': 'O',\r\n 'Ȏ': 'O',\r\n 'Ꝋ': 'O',\r\n 'Ꝍ': 'O',\r\n 'Ō': 'O',\r\n 'Ṓ': 'O',\r\n 'Ṑ': 'O',\r\n 'Ɵ': 'O',\r\n 'Ǫ': 'O',\r\n 'Ǭ': 'O',\r\n 'Ø': 'O',\r\n 'Ǿ': 'O',\r\n 'Õ': 'O',\r\n 'Ṍ': 'O',\r\n 'Ṏ': 'O',\r\n 'Ȭ': 'O',\r\n 'Ƣ': 'OI',\r\n 'Ꝏ': 'OO',\r\n 'Ɛ': 'E',\r\n 'Ɔ': 'O',\r\n 'Ȣ': 'OU',\r\n 'Ṕ': 'P',\r\n 'Ṗ': 'P',\r\n 'Ꝓ': 'P',\r\n 'Ƥ': 'P',\r\n 'Ꝕ': 'P',\r\n 'Ᵽ': 'P',\r\n 'Ꝑ': 'P',\r\n 'Ꝙ': 'Q',\r\n 'Ꝗ': 'Q',\r\n 'Ŕ': 'R',\r\n 'Ř': 'R',\r\n 'Ŗ': 'R',\r\n 'Ṙ': 'R',\r\n 'Ṛ': 'R',\r\n 'Ṝ': 'R',\r\n 'Ȑ': 'R',\r\n 'Ȓ': 'R',\r\n 'Ṟ': 'R',\r\n 'Ɍ': 'R',\r\n 'Ɽ': 'R',\r\n 'Ꜿ': 'C',\r\n 'Ǝ': 'E',\r\n 'Ś': 'S',\r\n 'Ṥ': 'S',\r\n 'Š': 'S',\r\n 'Ṧ': 'S',\r\n 'Ş': 'S',\r\n 'Ŝ': 'S',\r\n 'Ș': 'S',\r\n 'Ṡ': 'S',\r\n 'Ṣ': 'S',\r\n 'Ṩ': 'S',\r\n 'Ť': 'T',\r\n 'Ţ': 'T',\r\n 'Ṱ': 'T',\r\n 'Ț': 'T',\r\n 'Ⱦ': 'T',\r\n 'Ṫ': 'T',\r\n 'Ṭ': 'T',\r\n 'Ƭ': 'T',\r\n 'Ṯ': 'T',\r\n 'Ʈ': 'T',\r\n 'Ŧ': 'T',\r\n 'Ɐ': 'A',\r\n 'Ꞁ': 'L',\r\n 'Ɯ': 'M',\r\n 'Ʌ': 'V',\r\n 'Ꜩ': 'TZ',\r\n 'Ú': 'U',\r\n 'Ŭ': 'U',\r\n 'Ǔ': 'U',\r\n 'Û': 'U',\r\n 'Ṷ': 'U',\r\n 'Ü': 'U',\r\n 'Ǘ': 'U',\r\n 'Ǚ': 'U',\r\n 'Ǜ': 'U',\r\n 'Ǖ': 'U',\r\n 'Ṳ': 'U',\r\n 'Ụ': 'U',\r\n 'Ű': 'U',\r\n 'Ȕ': 'U',\r\n 'Ù': 'U',\r\n 'Ủ': 'U',\r\n 'Ư': 'U',\r\n 'Ứ': 'U',\r\n 'Ự': 'U',\r\n 'Ừ': 'U',\r\n 'Ử': 'U',\r\n 'Ữ': 'U',\r\n 'Ȗ': 'U',\r\n 'Ū': 'U',\r\n 'Ṻ': 'U',\r\n 'Ų': 'U',\r\n 'Ů': 'U',\r\n 'Ũ': 'U',\r\n 'Ṹ': 'U',\r\n 'Ṵ': 'U',\r\n 'Ꝟ': 'V',\r\n 'Ṿ': 'V',\r\n 'Ʋ': 'V',\r\n 'Ṽ': 'V',\r\n 'Ꝡ': 'VY',\r\n 'Ẃ': 'W',\r\n 'Ŵ': 'W',\r\n 'Ẅ': 'W',\r\n 'Ẇ': 'W',\r\n 'Ẉ': 'W',\r\n 'Ẁ': 'W',\r\n 'Ⱳ': 'W',\r\n 'Ẍ': 'X',\r\n 'Ẋ': 'X',\r\n 'Ý': 'Y',\r\n 'Ŷ': 'Y',\r\n 'Ÿ': 'Y',\r\n 'Ẏ': 'Y',\r\n 'Ỵ': 'Y',\r\n 'Ỳ': 'Y',\r\n 'Ƴ': 'Y',\r\n 'Ỷ': 'Y',\r\n 'Ỿ': 'Y',\r\n 'Ȳ': 'Y',\r\n 'Ɏ': 'Y',\r\n 'Ỹ': 'Y',\r\n 'Ź': 'Z',\r\n 'Ž': 'Z',\r\n 'Ẑ': 'Z',\r\n 'Ⱬ': 'Z',\r\n 'Ż': 'Z',\r\n 'Ẓ': 'Z',\r\n 'Ȥ': 'Z',\r\n 'Ẕ': 'Z',\r\n 'Ƶ': 'Z',\r\n 'IJ': 'IJ',\r\n 'Œ': 'OE',\r\n 'ᴀ': 'A',\r\n 'ᴁ': 'AE',\r\n 'ʙ': 'B',\r\n 'ᴃ': 'B',\r\n 'ᴄ': 'C',\r\n 'ᴅ': 'D',\r\n 'ᴇ': 'E',\r\n 'ꜰ': 'F',\r\n 'ɢ': 'G',\r\n 'ʛ': 'G',\r\n 'ʜ': 'H',\r\n 'ɪ': 'I',\r\n 'ʁ': 'R',\r\n 'ᴊ': 'J',\r\n 'ᴋ': 'K',\r\n 'ʟ': 'L',\r\n 'ᴌ': 'L',\r\n 'ᴍ': 'M',\r\n 'ɴ': 'N',\r\n 'ᴏ': 'O',\r\n 'ɶ': 'OE',\r\n 'ᴐ': 'O',\r\n 'ᴕ': 'OU',\r\n 'ᴘ': 'P',\r\n 'ʀ': 'R',\r\n 'ᴎ': 'N',\r\n 'ᴙ': 'R',\r\n 'ꜱ': 'S',\r\n 'ᴛ': 'T',\r\n 'ⱻ': 'E',\r\n 'ᴚ': 'R',\r\n 'ᴜ': 'U',\r\n 'ᴠ': 'V',\r\n 'ᴡ': 'W',\r\n 'ʏ': 'Y',\r\n 'ᴢ': 'Z',\r\n 'á': 'a',\r\n 'ă': 'a',\r\n 'ắ': 'a',\r\n 'ặ': 'a',\r\n 'ằ': 'a',\r\n 'ẳ': 'a',\r\n 'ẵ': 'a',\r\n 'ǎ': 'a',\r\n 'â': 'a',\r\n 'ấ': 'a',\r\n 'ậ': 'a',\r\n 'ầ': 'a',\r\n 'ẩ': 'a',\r\n 'ẫ': 'a',\r\n 'ä': 'a',\r\n 'ǟ': 'a',\r\n 'ȧ': 'a',\r\n 'ǡ': 'a',\r\n 'ạ': 'a',\r\n 'ȁ': 'a',\r\n 'à': 'a',\r\n 'ả': 'a',\r\n 'ȃ': 'a',\r\n 'ā': 'a',\r\n 'ą': 'a',\r\n 'ᶏ': 'a',\r\n 'ẚ': 'a',\r\n 'å': 'a',\r\n 'ǻ': 'a',\r\n 'ḁ': 'a',\r\n 'ⱥ': 'a',\r\n 'ã': 'a',\r\n 'ꜳ': 'aa',\r\n 'æ': 'ae',\r\n 'ǽ': 'ae',\r\n 'ǣ': 'ae',\r\n 'ꜵ': 'ao',\r\n 'ꜷ': 'au',\r\n 'ꜹ': 'av',\r\n 'ꜻ': 'av',\r\n 'ꜽ': 'ay',\r\n 'ḃ': 'b',\r\n 'ḅ': 'b',\r\n 'ɓ': 'b',\r\n 'ḇ': 'b',\r\n 'ᵬ': 'b',\r\n 'ᶀ': 'b',\r\n 'ƀ': 'b',\r\n 'ƃ': 'b',\r\n 'ɵ': 'o',\r\n 'ć': 'c',\r\n 'č': 'c',\r\n 'ç': 'c',\r\n 'ḉ': 'c',\r\n 'ĉ': 'c',\r\n 'ɕ': 'c',\r\n 'ċ': 'c',\r\n 'ƈ': 'c',\r\n 'ȼ': 'c',\r\n 'ď': 'd',\r\n 'ḑ': 'd',\r\n 'ḓ': 'd',\r\n 'ȡ': 'd',\r\n 'ḋ': 'd',\r\n 'ḍ': 'd',\r\n 'ɗ': 'd',\r\n 'ᶑ': 'd',\r\n 'ḏ': 'd',\r\n 'ᵭ': 'd',\r\n 'ᶁ': 'd',\r\n 'đ': 'd',\r\n 'ɖ': 'd',\r\n 'ƌ': 'd',\r\n 'ı': 'i',\r\n 'ȷ': 'j',\r\n 'ɟ': 'j',\r\n 'ʄ': 'j',\r\n 'dz': 'dz',\r\n 'dž': 'dz',\r\n 'é': 'e',\r\n 'ĕ': 'e',\r\n 'ě': 'e',\r\n 'ȩ': 'e',\r\n 'ḝ': 'e',\r\n 'ê': 'e',\r\n 'ế': 'e',\r\n 'ệ': 'e',\r\n 'ề': 'e',\r\n 'ể': 'e',\r\n 'ễ': 'e',\r\n 'ḙ': 'e',\r\n 'ë': 'e',\r\n 'ė': 'e',\r\n 'ẹ': 'e',\r\n 'ȅ': 'e',\r\n 'è': 'e',\r\n 'ẻ': 'e',\r\n 'ȇ': 'e',\r\n 'ē': 'e',\r\n 'ḗ': 'e',\r\n 'ḕ': 'e',\r\n 'ⱸ': 'e',\r\n 'ę': 'e',\r\n 'ᶒ': 'e',\r\n 'ɇ': 'e',\r\n 'ẽ': 'e',\r\n 'ḛ': 'e',\r\n 'ꝫ': 'et',\r\n 'ḟ': 'f',\r\n 'ƒ': 'f',\r\n 'ᵮ': 'f',\r\n 'ᶂ': 'f',\r\n 'ǵ': 'g',\r\n 'ğ': 'g',\r\n 'ǧ': 'g',\r\n 'ģ': 'g',\r\n 'ĝ': 'g',\r\n 'ġ': 'g',\r\n 'ɠ': 'g',\r\n 'ḡ': 'g',\r\n 'ᶃ': 'g',\r\n 'ǥ': 'g',\r\n 'ḫ': 'h',\r\n 'ȟ': 'h',\r\n 'ḩ': 'h',\r\n 'ĥ': 'h',\r\n 'ⱨ': 'h',\r\n 'ḧ': 'h',\r\n 'ḣ': 'h',\r\n 'ḥ': 'h',\r\n 'ɦ': 'h',\r\n 'ẖ': 'h',\r\n 'ħ': 'h',\r\n 'ƕ': 'hv',\r\n 'í': 'i',\r\n 'ĭ': 'i',\r\n 'ǐ': 'i',\r\n 'î': 'i',\r\n 'ï': 'i',\r\n 'ḯ': 'i',\r\n 'ị': 'i',\r\n 'ȉ': 'i',\r\n 'ì': 'i',\r\n 'ỉ': 'i',\r\n 'ȋ': 'i',\r\n 'ī': 'i',\r\n 'į': 'i',\r\n 'ᶖ': 'i',\r\n 'ɨ': 'i',\r\n 'ĩ': 'i',\r\n 'ḭ': 'i',\r\n 'ꝺ': 'd',\r\n 'ꝼ': 'f',\r\n 'ᵹ': 'g',\r\n 'ꞃ': 'r',\r\n 'ꞅ': 's',\r\n 'ꞇ': 't',\r\n 'ꝭ': 'is',\r\n 'ǰ': 'j',\r\n 'ĵ': 'j',\r\n 'ʝ': 'j',\r\n 'ɉ': 'j',\r\n 'ḱ': 'k',\r\n 'ǩ': 'k',\r\n 'ķ': 'k',\r\n 'ⱪ': 'k',\r\n 'ꝃ': 'k',\r\n 'ḳ': 'k',\r\n 'ƙ': 'k',\r\n 'ḵ': 'k',\r\n 'ᶄ': 'k',\r\n 'ꝁ': 'k',\r\n 'ꝅ': 'k',\r\n 'ĺ': 'l',\r\n 'ƚ': 'l',\r\n 'ɬ': 'l',\r\n 'ľ': 'l',\r\n 'ļ': 'l',\r\n 'ḽ': 'l',\r\n 'ȴ': 'l',\r\n 'ḷ': 'l',\r\n 'ḹ': 'l',\r\n 'ⱡ': 'l',\r\n 'ꝉ': 'l',\r\n 'ḻ': 'l',\r\n 'ŀ': 'l',\r\n 'ɫ': 'l',\r\n 'ᶅ': 'l',\r\n 'ɭ': 'l',\r\n 'ł': 'l',\r\n 'lj': 'lj',\r\n 'ſ': 's',\r\n 'ẜ': 's',\r\n 'ẛ': 's',\r\n 'ẝ': 's',\r\n 'ḿ': 'm',\r\n 'ṁ': 'm',\r\n 'ṃ': 'm',\r\n 'ɱ': 'm',\r\n 'ᵯ': 'm',\r\n 'ᶆ': 'm',\r\n 'ń': 'n',\r\n 'ň': 'n',\r\n 'ņ': 'n',\r\n 'ṋ': 'n',\r\n 'ȵ': 'n',\r\n 'ṅ': 'n',\r\n 'ṇ': 'n',\r\n 'ǹ': 'n',\r\n 'ɲ': 'n',\r\n 'ṉ': 'n',\r\n 'ƞ': 'n',\r\n 'ᵰ': 'n',\r\n 'ᶇ': 'n',\r\n 'ɳ': 'n',\r\n 'ñ': 'n',\r\n 'nj': 'nj',\r\n 'ó': 'o',\r\n 'ŏ': 'o',\r\n 'ǒ': 'o',\r\n 'ô': 'o',\r\n 'ố': 'o',\r\n 'ộ': 'o',\r\n 'ồ': 'o',\r\n 'ổ': 'o',\r\n 'ỗ': 'o',\r\n 'ö': 'o',\r\n 'ȫ': 'o',\r\n 'ȯ': 'o',\r\n 'ȱ': 'o',\r\n 'ọ': 'o',\r\n 'ő': 'o',\r\n 'ȍ': 'o',\r\n 'ò': 'o',\r\n 'ỏ': 'o',\r\n 'ơ': 'o',\r\n 'ớ': 'o',\r\n 'ợ': 'o',\r\n 'ờ': 'o',\r\n 'ở': 'o',\r\n 'ỡ': 'o',\r\n 'ȏ': 'o',\r\n 'ꝋ': 'o',\r\n 'ꝍ': 'o',\r\n 'ⱺ': 'o',\r\n 'ō': 'o',\r\n 'ṓ': 'o',\r\n 'ṑ': 'o',\r\n 'ǫ': 'o',\r\n 'ǭ': 'o',\r\n 'ø': 'o',\r\n 'ǿ': 'o',\r\n 'õ': 'o',\r\n 'ṍ': 'o',\r\n 'ṏ': 'o',\r\n 'ȭ': 'o',\r\n 'ƣ': 'oi',\r\n 'ꝏ': 'oo',\r\n 'ɛ': 'e',\r\n 'ᶓ': 'e',\r\n 'ɔ': 'o',\r\n 'ᶗ': 'o',\r\n 'ȣ': 'ou',\r\n 'ṕ': 'p',\r\n 'ṗ': 'p',\r\n 'ꝓ': 'p',\r\n 'ƥ': 'p',\r\n 'ᵱ': 'p',\r\n 'ᶈ': 'p',\r\n 'ꝕ': 'p',\r\n 'ᵽ': 'p',\r\n 'ꝑ': 'p',\r\n 'ꝙ': 'q',\r\n 'ʠ': 'q',\r\n 'ɋ': 'q',\r\n 'ꝗ': 'q',\r\n 'ŕ': 'r',\r\n 'ř': 'r',\r\n 'ŗ': 'r',\r\n 'ṙ': 'r',\r\n 'ṛ': 'r',\r\n 'ṝ': 'r',\r\n 'ȑ': 'r',\r\n 'ɾ': 'r',\r\n 'ᵳ': 'r',\r\n 'ȓ': 'r',\r\n 'ṟ': 'r',\r\n 'ɼ': 'r',\r\n 'ᵲ': 'r',\r\n 'ᶉ': 'r',\r\n 'ɍ': 'r',\r\n 'ɽ': 'r',\r\n 'ↄ': 'c',\r\n 'ꜿ': 'c',\r\n 'ɘ': 'e',\r\n 'ɿ': 'r',\r\n 'ś': 's',\r\n 'ṥ': 's',\r\n 'š': 's',\r\n 'ṧ': 's',\r\n 'ş': 's',\r\n 'ŝ': 's',\r\n 'ș': 's',\r\n 'ṡ': 's',\r\n 'ṣ': 's',\r\n 'ṩ': 's',\r\n 'ʂ': 's',\r\n 'ᵴ': 's',\r\n 'ᶊ': 's',\r\n 'ȿ': 's',\r\n 'ɡ': 'g',\r\n 'ᴑ': 'o',\r\n 'ᴓ': 'o',\r\n 'ᴝ': 'u',\r\n 'ť': 't',\r\n 'ţ': 't',\r\n 'ṱ': 't',\r\n 'ț': 't',\r\n 'ȶ': 't',\r\n 'ẗ': 't',\r\n 'ⱦ': 't',\r\n 'ṫ': 't',\r\n 'ṭ': 't',\r\n 'ƭ': 't',\r\n 'ṯ': 't',\r\n 'ᵵ': 't',\r\n 'ƫ': 't',\r\n 'ʈ': 't',\r\n 'ŧ': 't',\r\n 'ᵺ': 'th',\r\n 'ɐ': 'a',\r\n 'ᴂ': 'ae',\r\n 'ǝ': 'e',\r\n 'ᵷ': 'g',\r\n 'ɥ': 'h',\r\n 'ʮ': 'h',\r\n 'ʯ': 'h',\r\n 'ᴉ': 'i',\r\n 'ʞ': 'k',\r\n 'ꞁ': 'l',\r\n 'ɯ': 'm',\r\n 'ɰ': 'm',\r\n 'ᴔ': 'oe',\r\n 'ɹ': 'r',\r\n 'ɻ': 'r',\r\n 'ɺ': 'r',\r\n 'ⱹ': 'r',\r\n 'ʇ': 't',\r\n 'ʌ': 'v',\r\n 'ʍ': 'w',\r\n 'ʎ': 'y',\r\n 'ꜩ': 'tz',\r\n 'ú': 'u',\r\n 'ŭ': 'u',\r\n 'ǔ': 'u',\r\n 'û': 'u',\r\n 'ṷ': 'u',\r\n 'ü': 'u',\r\n 'ǘ': 'u',\r\n 'ǚ': 'u',\r\n 'ǜ': 'u',\r\n 'ǖ': 'u',\r\n 'ṳ': 'u',\r\n 'ụ': 'u',\r\n 'ű': 'u',\r\n 'ȕ': 'u',\r\n 'ù': 'u',\r\n 'ủ': 'u',\r\n 'ư': 'u',\r\n 'ứ': 'u',\r\n 'ự': 'u',\r\n 'ừ': 'u',\r\n 'ử': 'u',\r\n 'ữ': 'u',\r\n 'ȗ': 'u',\r\n 'ū': 'u',\r\n 'ṻ': 'u',\r\n 'ų': 'u',\r\n 'ᶙ': 'u',\r\n 'ů': 'u',\r\n 'ũ': 'u',\r\n 'ṹ': 'u',\r\n 'ṵ': 'u',\r\n 'ᵫ': 'ue',\r\n 'ꝸ': 'um',\r\n 'ⱴ': 'v',\r\n 'ꝟ': 'v',\r\n 'ṿ': 'v',\r\n 'ʋ': 'v',\r\n 'ᶌ': 'v',\r\n 'ⱱ': 'v',\r\n 'ṽ': 'v',\r\n 'ꝡ': 'vy',\r\n 'ẃ': 'w',\r\n 'ŵ': 'w',\r\n 'ẅ': 'w',\r\n 'ẇ': 'w',\r\n 'ẉ': 'w',\r\n 'ẁ': 'w',\r\n 'ⱳ': 'w',\r\n 'ẘ': 'w',\r\n 'ẍ': 'x',\r\n 'ẋ': 'x',\r\n 'ᶍ': 'x',\r\n 'ý': 'y',\r\n 'ŷ': 'y',\r\n 'ÿ': 'y',\r\n 'ẏ': 'y',\r\n 'ỵ': 'y',\r\n 'ỳ': 'y',\r\n 'ƴ': 'y',\r\n 'ỷ': 'y',\r\n 'ỿ': 'y',\r\n 'ȳ': 'y',\r\n 'ẙ': 'y',\r\n 'ɏ': 'y',\r\n 'ỹ': 'y',\r\n 'ź': 'z',\r\n 'ž': 'z',\r\n 'ẑ': 'z',\r\n 'ʑ': 'z',\r\n 'ⱬ': 'z',\r\n 'ż': 'z',\r\n 'ẓ': 'z',\r\n 'ȥ': 'z',\r\n 'ẕ': 'z',\r\n 'ᵶ': 'z',\r\n 'ᶎ': 'z',\r\n 'ʐ': 'z',\r\n 'ƶ': 'z',\r\n 'ɀ': 'z',\r\n 'ff': 'ff',\r\n 'ffi': 'ffi',\r\n 'ffl': 'ffl',\r\n 'fi': 'fi',\r\n 'fl': 'fl',\r\n 'ij': 'ij',\r\n 'œ': 'oe',\r\n 'st': 'st',\r\n 'ₐ': 'a',\r\n 'ₑ': 'e',\r\n 'ᵢ': 'i',\r\n 'ⱼ': 'j',\r\n 'ₒ': 'o',\r\n 'ᵣ': 'r',\r\n 'ᵤ': 'u',\r\n 'ᵥ': 'v',\r\n 'ₓ': 'x'\r\n};\r\n","import { TypeaheadDirective } from './typeahead.directive';\r\n\r\nexport class TypeaheadOptions {\r\n placement: string;\r\n animation: boolean;\r\n typeaheadRef: TypeaheadDirective;\r\n\r\n constructor(options: TypeaheadOptions) {\r\n this.placement = options.placement;\r\n this.animation = options.animation;\r\n this.typeaheadRef = options.typeaheadRef;\r\n }\r\n}\r\n","export class TypeaheadMatch {\r\n readonly value: string;\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n readonly item: any;\r\n protected header: boolean;\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constructor(item: any, value: string = item, header = false) {\r\n this.item = item;\r\n this.value = value;\r\n this.header = header;\r\n }\r\n\r\n isHeader(): boolean {\r\n return this.header;\r\n }\r\n\r\n toString(): string {\r\n return this.value;\r\n }\r\n}\r\n","import { latinMap } from './latin-map';\r\n\r\nexport function latinize(str: string): string {\r\n if (!str) {\r\n return '';\r\n }\r\n\r\n return str.replace(/[^A-Za-z0-9[\\] ]/g, function(a: string): string {\r\n return latinMap[a] || a;\r\n });\r\n}\r\n\r\nexport function escapeRegexp(queryToEscape: string): string {\r\n // Regex: capture the whole query string and replace it with the string\r\n // that will be used to match the results, for example if the capture is\r\n // 'a' the result will be \\a\r\n return queryToEscape.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\r\n}\r\n\r\nexport function tokenize(str: string,\r\n wordRegexDelimiters = ' ',\r\n phraseRegexDelimiters = '', delimitersForMultipleSearch?: string): Array<string> {\r\n\r\n let result: string[] = [];\r\n if (!delimitersForMultipleSearch) {\r\n result = tokenizeWordsAndPhrases(str, wordRegexDelimiters, phraseRegexDelimiters);\r\n } else {\r\n const multipleSearchRegexStr = `([${delimitersForMultipleSearch}]+)`;\r\n const delimitedTokens = str.split(new RegExp(multipleSearchRegexStr, 'g'));\r\n const lastToken = delimitedTokens[delimitedTokens.length - 1];\r\n if (lastToken > '') {\r\n if (wordRegexDelimiters && phraseRegexDelimiters) {\r\n result = tokenizeWordsAndPhrases(lastToken, wordRegexDelimiters, phraseRegexDelimiters);\r\n } else {\r\n result.push(lastToken);\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction tokenizeWordsAndPhrases(str: string, wordRegexDelimiters: string, phraseRegexDelimiters: string): Array<string> {\r\n const result: string[] = [];\r\n const regexStr = `(?:[${phraseRegexDelimiters}])([^${phraseRegexDelimiters}]+)` +\r\n `(?:[${phraseRegexDelimiters}])|([^${wordRegexDelimiters}]+)`;\r\n const preTokenized: string[] = str.split(new RegExp(regexStr, 'g'));\r\n const preTokenizedLength: number = preTokenized.length;\r\n let token: string;\r\n const replacePhraseDelimiters = new RegExp(`[${phraseRegexDelimiters}]+`, 'g');\r\n\r\n for (let i = 0; i < preTokenizedLength; i += 1) {\r\n token = preTokenized[i];\r\n if (token && token.length && token !== wordRegexDelimiters) {\r\n result.push(token.replace(replacePhraseDelimiters, ''));\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n// eslint-disable-next-line\r\nexport function getValueFromObject(object: string | Record<string | number, any>, option?: string): string {\r\n if (!option || typeof object !== 'object') {\r\n return object.toString();\r\n }\r\n\r\n if (option.endsWith('()')) {\r\n const functionName = option.slice(0, option.length - 2);\r\n\r\n return (object[functionName] as () => string)().toString();\r\n }\r\n\r\n const properties: string = option\r\n .replace(/\\[(\\w+)\\]/g, '.$1')\r\n .replace(/^\\./, '');\r\n const propertiesArray: string[] = properties.split('.');\r\n\r\n for (const property of propertiesArray) {\r\n if (property in (object as Record<string, unknown>)) {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n object = object[property];\r\n }\r\n }\r\n if (!object) {\r\n return '';\r\n }\r\n\r\n return object.toString();\r\n}\r\n","import {\r\n animate,\r\n style,\r\n AnimationTriggerMetadata,\r\n state,\r\n transition,\r\n trigger\r\n} from '@angular/animations';\r\n\r\nexport const TYPEAHEAD_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';\r\n\r\nexport const typeaheadAnimation: AnimationTriggerMetadata =\r\n trigger('typeaheadAnimation', [\r\n state('animated-down', style({ height: '*', overflow: 'hidden'})),\r\n transition('* => animated-down', [\r\n style({ height: 0, overflow: 'hidden' }),\r\n animate(TYPEAHEAD_ANIMATION_TIMING)\r\n ]),\r\n state('animated-up', style({ height: '*', overflow: 'hidden'})),\r\n transition('* => animated-up', [\r\n style({ height: '*', overflow: 'hidden' }),\r\n animate(TYPEAHEAD_ANIMATION_TIMING)\r\n ]),\r\n transition('* => unanimated', animate('0s'))\r\n ]);\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n OnDestroy,\r\n QueryList,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild,\r\n ViewChildren,\r\n Output,\r\n EventEmitter\r\n} from '@angular/core';\r\n\r\nimport { isBs3, Utils } from '@period-year-norway/ngx-bootstrap/utils';\r\nimport { PositioningService } from '@period-year-norway/ngx-bootstrap/positioning';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { latinize } from './typeahead-utils';\r\nimport { TypeaheadMatch } from './typeahead-match.class';\r\nimport { TypeaheadDirective } from './typeahead.directive';\r\nimport { typeaheadAnimation } from './typeahead-animations';\r\nimport { TypeaheadOptionItemContext, TypeaheadOptionListContext, TypeaheadTemplateMethods } from './models';\r\n\r\nlet nextWindowId = 0;\r\n\r\n@Component({\r\n selector: 'typeahead-container',\r\n templateUrl: './typeahead-container.component.html',\r\n host: {\r\n class: 'dropdown open bottom',\r\n '[class.dropdown-menu]': 'isBs4',\r\n '[style.height]': `isBs4 && needScrollbar ? guiHeight: 'auto'`,\r\n '[style.visibility]': `'inherit'`,\r\n '[class.dropup]': 'dropup',\r\n style: 'position: absolute;display: block;',\r\n '[attr.role]': `isBs4 ? 'listbox' : null `\r\n },\r\n styles: [\r\n `\r\n :host.dropdown {\r\n z-index: 1000;\r\n }\r\n\r\n :host.dropdown-menu,\r\n .dropdown-menu {\r\n overflow-y: auto;\r\n height: 100px;\r\n }\r\n `\r\n ],\r\n animations: [typeaheadAnimation],\r\n standalone: false\r\n})\r\nexport class TypeaheadContainerComponent implements OnDestroy {\r\n // eslint-disable-next-line @angular-eslint/no-output-rename\r\n @Output('activeChange') activeChangeEvent = new EventEmitter();\r\n\r\n parent?: TypeaheadDirective;\r\n query?: string[] | string;\r\n isFocused = false;\r\n top?: string;\r\n left?: string;\r\n display?: string;\r\n placemen?: string;\r\n dropup?: boolean;\r\n guiHeight?: string;\r\n needScrollbar?: boolean;\r\n animationState?: string;\r\n positionServiceSubscription = new Subscription();\r\n height = 0;\r\n popupId = `ngb-typeahead-${nextWindowId++}`;\r\n\r\n get isBs4(): boolean {\r\n return !isBs3();\r\n }\r\n\r\n get typeaheadTemplateMethods(): TypeaheadTemplateMethods {\r\n return {\r\n selectMatch: this.selectMatch.bind(this),\r\n selectActive: this.selectActive.bind(this),\r\n isActive: this.isActive.bind(this)\r\n };\r\n }\r\n\r\n protected _active?: TypeaheadMatch;\r\n protected _matches: TypeaheadMatch[] = [];\r\n\r\n @ViewChild('ulElement', { static: false })\r\n private ulElement?: ElementRef;\r\n\r\n @ViewChildren('liElements')\r\n private liElements?: QueryList<ElementRef>;\r\n\r\n constructor(\r\n private positionService: PositioningService,\r\n private renderer: Renderer2,\r\n public element: ElementRef,\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n this.renderer.setAttribute(this.element.nativeElement, 'id', this.popupId);\r\n this.positionServiceSubscription.add(\r\n this.positionService.event$?.subscribe(() => {\r\n if (this.isAnimated) {\r\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\r\n this.changeDetectorRef.detectChanges();\r\n\r\n return;\r\n }\r\n\r\n this.animationState = 'unanimated';\r\n this.changeDetectorRef.detectChanges();\r\n })\r\n );\r\n }\r\n\r\n get active(): TypeaheadMatch | undefined {\r\n return this._active;\r\n }\r\n\r\n set active(active: TypeaheadMatch | undefined) {\r\n this._active = active;\r\n this.activeChanged();\r\n }\r\n\r\n get matches(): TypeaheadMatch[] {\r\n return this._matches;\r\n }\r\n\r\n set matches(value: TypeaheadMatch[]) {\r\n this.positionService.setOptions({\r\n modifiers: { flip: { enabled: this.adaptivePosition } },\r\n allowedPositions: ['top', 'bottom']\r\n });\r\n\r\n this._matches = value;\r\n\r\n this.needScrollbar = this.typeaheadScrollable && this.typeaheadOptionsInScrollableView < this.matches.length;\r\n\r\n if (this.typeaheadScrollable) {\r\n setTimeout(() => {\r\n this.setScrollableMode();\r\n });\r\n }\r\n\r\n if (this.typeaheadIsFirstItemActive && this._matches.length > 0) {\r\n this.setActive(this._matches[0]);\r\n\r\n if (this._active?.isHeader()) {\r\n this.nextActiveMatch();\r\n }\r\n }\r\n\r\n if (this._active && !this.typeaheadIsFirstItemActive) {\r\n const concurrency = this._matches.find((match) => match.value === this._active?.value);\r\n\r\n if (concurrency) {\r\n this.selectActive(concurrency);\r\n\r\n return;\r\n }\r\n\r\n this.active = void 0;\r\n }\r\n }\r\n\r\n get isTopPosition(): boolean {\r\n return this.element.nativeElement.classList.contains('top');\r\n }\r\n\r\n get optionsListTemplate(): TemplateRef<TypeaheadOptionListContext> | undefined {\r\n return this.parent ? this.parent.optionsListTemplate : undefined;\r\n }\r\n\r\n get isAnimated(): boolean {\r\n return this.parent ? this.parent.isAnimated : false;\r\n }\r\n\r\n get adaptivePosition(): boolean {\r\n return this.parent ? this.parent.adaptivePosition : false;\r\n }\r\n\r\n get typeaheadScrollable(): boolean {\r\n return this.parent ? this.parent.typeaheadScrollable : false;\r\n }\r\n\r\n get typeaheadOptionsInScrollableView(): number {\r\n return this.parent ? this.parent.typeaheadOptionsInScrollableView : 5;\r\n }\r\n\r\n get typeaheadIsFirstItemActive(): boolean {\r\n return this.parent ? this.parent.typeaheadIsFirstItemActive : true;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n get itemTemplate(): TemplateRef<TypeaheadOptionItemContext> | undefined {\r\n return this.parent ? this.parent.typeaheadItemTemplate : undefined;\r\n }\r\n\r\n get canSelectItemsOnBlur(): boolean {\r\n return !!this.parent?.selectItemOnBlur;\r\n }\r\n\r\n selectActiveMatch(isActiveItemChanged?: boolean): void {\r\n if (this._active && this.parent?.typeaheadSelectFirstItem) {\r\n this.selectMatch(this._active);\r\n }\r\n\r\n if (!this.parent?.typeaheadSelectFirstItem && isActiveItemChanged) {\r\n this.selectMatch(this._active);\r\n }\r\n }\r\n\r\n activeChanged(): void {\r\n if (!this._active) {\r\n return;\r\n }\r\n const index = this.matches.indexOf(this._active);\r\n this.activeChangeEvent.emit(`${this.popupId}-${index}`);\r\n }\r\n\r\n prevActiveMatch(): void {\r\n if (!this._active) {\r\n return;\r\n }\r\n\r\n const index = this.matches.indexOf(this._active);\r\n this.setActive(this.matches[index - 1 < 0 ? this.matches.length - 1 : index - 1]);\r\n\r\n if (this._active.isHeader()) {\r\n this.prevActiveMatch();\r\n }\r\n\r\n if (this.typeaheadScrollable) {\r\n this.scrollPrevious(index);\r\n }\r\n }\r\n\r\n nextActiveMatch(): void {\r\n const index = this._active ? this.matches.indexOf(this._active) : -1;\r\n this.setActive(this.matches[index + 1 > this.matches.length - 1 ? 0 : index + 1]);\r\n\r\n if (this._active?.isHeader()) {\r\n this.nextActiveMatch();\r\n }\r\n\r\n if (this.typeaheadScrollable) {\r\n this.scrollNext(index);\r\n }\r\n }\r\n\r\n selectActive(value: TypeaheadMatch): void {\r\n this.isFocused = true;\r\n this.setActive(value);\r\n }\r\n\r\n highlight(match: TypeaheadMatch, query: string[] | string): string {\r\n let itemStr: string = match.value;\r\n let itemStrHelper: string = (\r\n this.parent && this.parent.typeaheadLatinize ? latinize(itemStr) : itemStr\r\n ).toLowerCase();\r\n let startIdx: number;\r\n let tokenLen: number;\r\n // Replaces the capture string with the same string inside of a \"strong\" tag\r\n if (typeof query === 'object') {\r\n const queryLen: number = query.length;\r\n for (let i = 0; i < queryLen; i += 1) {\r\n // query[i] is already latinized and lower case\r\n startIdx = itemStrHelper.indexOf(query[i]);\r\n tokenLen = query[i].length;\r\n if (startIdx >= 0 && tokenLen > 0) {\r\n itemStr =\r\n `${itemStr.substring(0, startIdx)}<strong>${itemStr.substring(startIdx, startIdx + tokenLen)}</strong>` +\r\n `${itemStr.substring(startIdx + tokenLen)}`;\r\n itemStrHelper =\r\n `${itemStrHelper.substring(0, startIdx)} ${' '.repeat(tokenLen)} ` +\r\n `${itemStrHelper.substring(startIdx + tokenLen)}`;\r\n }\r\n }\r\n } else if (query) {\r\n // query is already latinized and lower case\r\n startIdx = itemStrHelper.indexOf(query);\r\n tokenLen = query.length;\r\n if (startIdx >= 0 && tokenLen > 0) {\r\n itemStr =\r\n `${itemStr.substring(0, startIdx)}<strong>${itemStr.substring(startIdx, startIdx + tokenLen)}</strong>` +\r\n `${itemStr.substring(startIdx + tokenLen)}`;\r\n }\r\n }\r\n\r\n return itemStr;\r\n }\r\n\r\n @HostListener('mouseleave')\r\n @HostListener('blur')\r\n focusLost(): void {\r\n this.isFocused = false;\r\n if (!this.canSelectItemsOnBlur) {\r\n this.setActive(void 0);\r\n }\r\n }\r\n\r\n isActive(value: TypeaheadMatch): boolean {\r\n return this.active === value;\r\n }\r\n\r\n selectMatch(value?: TypeaheadMatch, event?: Event): boolean {\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n this.parent?.changeModel(value);\r\n setTimeout(() => this.parent?.typeaheadOnSelect.emit(value), 0);\r\n\r\n return false;\r\n }\r\n\r\n setScrollableMode(): void {\r\n if (!this.ulElement) {\r\n this.ulElement = this.element;\r\n }\r\n\r\n if (this.liElements?.first) {\r\n const ulStyles = Utils.getStyles(this.ulElement.nativeElement);\r\n const liStyles = Utils.getStyles(this.liElements.first.nativeElement);\r\n const ulPaddingBottom = parseFloat(\r\n (ulStyles['padding-bottom'] ? ulStyles['padding-bottom'] : '').replace('px', '')\r\n );\r\n const ulPaddingTop = parseFloat((ulStyles['padding-top'] ? ulStyles['padding-top'] : '0').replace('px', ''));\r\n const optionHeight = parseFloat((liStyles.height ? liStyles.height : '0').replace('px', ''));\r\n const height = this.typeaheadOptionsInScrollableView * optionHeight;\r\n this.guiHeight = `${height + ulPaddingTop + ulPaddingBottom}px`;\r\n }\r\n\r\n this.renderer.setStyle(this.element.nativeElement, 'visibility', 'visible');\r\n }\r\n\r\n scrollPrevious(index: number): void {\r\n if (index === 0) {\r\n this.scrollToBottom();\r\n\r\n return;\r\n }\r\n if (this.liElements && this.ulElement) {\r\n const liElement = this.liElements.toArray()[index - 1];\r\n if (liElement && !this.isScrolledIntoView(liElement.nativeElement)) {\r\n this.ulElement.nativeElement.scrollTop = liElement.nativeElement.offsetTop;\r\n }\r\n }\r\n }\r\n\r\n scrollNext(index: number): void {\r\n if (index + 1 > this.matches.length - 1) {\r\n this.scrollToTop();\r\n\r\n return;\r\n }\r\n if (this.liElements && this.ulElement) {\r\n const liElement = this.liElements.toArray()[index + 1];\r\n if (liElement && !this.isScrolledIntoView(liElement.nativeElement)) {\r\n this.ulElement.nativeElement.scrollTop =\r\n liElement.nativeElement.offsetTop -\r\n Number(this.ulElement.nativeElement.offsetHeight) +\r\n Number(liElement.nativeElement.offsetHeight);\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.positionServiceSubscription.unsubscribe();\r\n }\r\n\r\n protected setActive(value?: TypeaheadMatch): void {\r\n this._active = value;\r\n let preview;\r\n if (!(this._active == null || this._active.isHeader())) {\r\n preview = value;\r\n }\r\n this.parent?.typeaheadOnPreview.emit(preview);\r\n }\r\n\r\n private isScrolledIntoView(elem: HTMLElement): boolean {\r\n if (!this.ulElement) {\r\n return false;\r\n }\r\n const containerViewTop: number = this.ulElement.nativeElement.scrollTop;\r\n const containerViewBottom = containerViewTop + Number(this.ulElement.nativeElement.offsetHeight);\r\n const elemTop = elem.offsetTop;\r\n const elemBottom = elemTop + elem.offsetHeight;\r\n\r\n return elemBottom <= containerViewBottom && elemTop >= containerViewTop;\r\n }\r\n\r\n private scrollToBottom(): void {\r\n if (!this.ulElement?.nativeElement) {\r\n return;\r\n }\r\n this.ulElement.nativeElement.scrollTop = this.ulElement.nativeElement.scrollHeight;\r\n }\r\n\r\n private scrollToTop(): void {\r\n if (!this.ulElement?.nativeElement) {\r\n return;\r\n }\r\n this.ulElement.nativeElement.scrollTop = 0;\r\n }\r\n}\r\n","<!-- inject options list template -->\r\n<ng-template [ngTemplateOutlet]=\"optionsListTemplate || (isBs4 ? bs4Template : bs3Template)\"\r\n [ngTemplateOutletContext]=\"{\r\n matches: matches,\r\n itemTemplate: itemTemplate || bsItemTemplate,\r\n query: query,\r\n $implicit: typeaheadTemplateMethods\r\n }\">\r\n</ng-template>\r\n\r\n<!-- default options item template -->\r\n<ng-template #bsItemTemplate let-match=\"match\" let-query=\"query\">\r\n <span [innerHtml]=\"highlight(match, query)\"></span>\r\n</ng-template>\r\n\r\n<!-- Bootstrap 3 options list template -->\r\n<ng-template #bs3Template>\r\n <ul class=\"dropdown-menu\"\r\n #ulElement\r\n role=\"listbox\"\r\n [style.overflow-y]=\"needScrollbar ? 'scroll': 'auto'\"\r\n [style.height]=\"needScrollbar ? guiHeight: 'auto'\">\r\n <ng-template ngFor let-match let-i=\"index\" [ngForOf]=\"matches\">\r\n <li #liElements *ngIf=\"match.isHeader()\" class=\"dropdown-header\">{{ match }}</li>\r\n <li #liElements\r\n *ngIf=\"!match.isHeader()\"\r\n [id]=\"popupId + '-' + i\"\r\n role=\"option\"\r\n [@typeaheadAnimation]=\"animationState\"\r\n [class.active]=\"isActive(match)\"\r\n (mouseenter)=\"selectActive(match)\">\r\n\r\n <a href=\"#\" (click)=\"selectMatch(match, $event)\" tabindex=\"-1\">\r\n <ng-template [ngTemplateOutlet]=\"itemTemplate || bsItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: match.item, index: i, match: match, query: query}\">\r\n </ng-template>\r\n </a>\r\n </li>\r\n </ng-template>\r\n </ul>\r\n</ng-template>\r\n\r\n<!-- Bootstrap 4 options list template -->\r\n<ng-template #bs4Template>\r\n <ng-template ngFor let-match let-i=\"index\" [ngForOf]=\"matches\">\r\n <h6 *ngIf=\"match.isHeader()\" class=\"dropdown-header\">{{ match }}</h6>\r\n <ng-template [ngIf]=\"!match.isHeader()\">\r\n <button #liElements\r\n [id]=\"popupId + '-' + i\"\r\n role=\"option\"\r\n [@typeaheadAnimation]=\"animationState\"\r\n class=\"dropdown-item\"\r\n (click)=\"selectMatch(match, $event)\"\r\n (mouseenter)=\"selectActive(match)\"\r\n [class.active]=\"isActive(match)\">\r\n <ng-template [ngTemplateOutlet]=\"itemTemplate || bsItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: match.item, index: i, match: match, query: query}\">\r\n </ng-template>\r\n </button>\r\n </ng-template>\r\n </ng-template>\r\n</ng-template>\r\n","import { Injectable } from '@angular/core';\r\n\r\n/** Default values provider for typeahead */\r\n@Injectable({ providedIn: 'root' })\r\nexport class TypeaheadConfig {\r\n /** sets use adaptive position */\r\n adaptivePosition = false;\r\n /** turn on/off animation */\r\n isAnimated = false;\r\n /** used to hide results on blur */\r\n hideResultsOnBlur = true;\r\n /** if true, typeahead will cancel async request on blur */\r\n cancelRequestOnFocusLost = false;\r\n /** used to choose the first item in typeahead container */\r\n selectFirstItem = true;\r\n /** used to active/inactive the first item in typeahead container */\r\n isFirstItemActive = true;\r\n /** used to choose set minimal no of characters that needs to\r\n * be entered before typeahead kicks-in\r\n */\r\n minLength = 1;\r\n /**\r\n * used to choose item on blur event\r\n */\r\n selectItemOnBlur = false;\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n TemplateRef,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { ComponentLoader, ComponentLoaderFactory } from '@period-year-norway/ngx-bootstrap/component-loader';\r\n\r\nimport { EMPTY, from, isObservable, Observable, Subscription } from 'rxjs';\r\nimport { debounceTime, filter, mergeMap, switchMap, tap, toArray } from 'rxjs/operators';\r\nimport { TypeaheadOptionItemContext, TypeaheadOptionListContext } from './models';\r\n\r\nimport { TypeaheadContainerComponent } from './typeahead-container.component';\r\nimport { TypeaheadMatch } from './typeahead-match.class';\r\nimport { TypeaheadOrder } from './typeahead-order.class';\r\nimport { getValueFromObject, latinize, tokenize } from './typeahead-utils';\r\nimport { TypeaheadConfig } from './typeahead.config';\r\n\r\n// eslint-disable-next-line\r\ntype TypeaheadOption = string | Record<string | number, any>;\r\ntype TypeaheadOptionArr = TypeaheadOption[] | Observable<TypeaheadOption>;\r\n\r\n@Directive({\r\n selector: '[typeahead]',\r\n exportAs: 'bs-typeahead',\r\n host: {\r\n '[attr.aria-activedescendant]': 'activeDescendant',\r\n '[attr.aria-owns]': 'isOpen ? this._container?.popupId : null',\r\n '[attr.aria-expanded]': 'isOpen',\r\n '[attr.aria-autocomplete]': 'list'\r\n },\r\n standalone: false\r\n})\r\nexport class TypeaheadDirective implements OnInit, OnDestroy {\r\n /** options source, can be Array of strings, objects or\r\n * an Observable for external matching process\r\n */\r\n @Input() typeahead?: TypeaheadOptionArr;\r\n /** minimal no of characters that needs to be entered before\r\n * typeahead kicks-in. When set to 0, typeahead shows on focus with full\r\n * list of options (limited as normal by typeaheadOptionsLimit)\r\n */\r\n @Input() typeaheadMinLength = 1;\r\n /** sets use adaptive position */\r\n @Input() adaptivePosition = false;\r\n /** turn on/off animation */\r\n @Input() isAnimated = false;\r\n /** minimal wait time after last character typed before typeahead kicks-in */\r\n @Input() typeaheadWaitMs = 0;\r\n /** maximum length of options items list. The default value is 20 */\r\n @Input() typeaheadOptionsLimit?: number;\r\n /** when options source is an array of objects, the name of field\r\n * that contains the options value, we use array item as option in case\r\n * of this field is missing. Supports nested properties and methods.\r\n */\r\n @Input() typeaheadOptionField?: string;\r\n /** when options source is an array of objects, the name of field that\r\n * contains the group value, matches are grouped by this field when set.\r\n */\r\n @Input() typeaheadGroupField?: string;\r\n /** Used to specify a custom order of matches. When options source is an array of objects\r\n * a field for sorting has to be set up. In case of options source is an array of string,\r\n * a field for sorting is absent. The ordering direction could be changed to ascending or descending.\r\n */\r\n @Input() typeaheadOrderBy?: TypeaheadOrder;\r\n /** should be used only in case of typeahead attribute is Observable of array.\r\n * If true - loading of options will be async, otherwise - sync.\r\n * true make sense if options array is large.\r\n */\r\n @Input() typeaheadAsync?: boolean;\r\n /** match latin symbols.\r\n * If true the word súper would match super and vice versa.\r\n */\r\n @Input() typeaheadLatinize = true;\r\n /** Can be use to search words by inserting a single white space between each characters\r\n * for example 'C a l i f o r n i a' will match 'California'.\r\n */\r\n @Input() typeaheadSingleWords = true;\r\n /** should be used only in case typeaheadSingleWords attribute is true.\r\n * Sets the word delimiter to break words. Defaults to space.\r\n */\r\n @Input() typeaheadWordDelimiters = ' ';\r\n /** Can be used to conduct a search of multiple items and have suggestion not for the\r\n * whole value of the input but for the value that comes after a delimiter provided via\r\n * typeaheadMultipleSearchDelimiters attribute. This option can only be used together with\r\n * typeaheadSingleWords option if typeaheadWordDelimiters and typeaheadPhraseDelimiters\r\n * are different from typeaheadMultipleSearchDelimiters to avoid conflict in determining\r\n * when to delimit multiple searches and when a single word.\r\n */\r\n @Input() typeaheadMultipleSearch?: boolean;\r\n /** should be used only in case typeaheadMultipleSearch attribute is true.\r\n * Sets the multiple search delimiter to know when to start a new search. Defaults to comma.\r\n * If space needs to be used, then explicitly set typeaheadWordDelimiters to something else than space\r\n * because space is used by default OR set typeaheadSingleWords attribute to false if you don't need\r\n * to use it together with multiple search.\r\n */\r\n @Input() typeaheadMultipleSearchDelimiters = ',';\r\n /** should be used only in case typeaheadSingleWords attribute is true.\r\n * Sets the word delimiter to match exact phrase.\r\n * Defaults to simple and double quotes.\r\n */\r\n @Input() typeaheadPhraseDelimiters = '\\'\"';\r\n /** used to specify a custom item template.\r\n * Template variables exposed are called item and index;\r\n */\r\n @Input() typeaheadItemTemplate?: TemplateRef<TypeaheadOptionItemContext>;\r\n /** used to specify a custom options list template.\r\n * Template variables: matches, itemTemplate, query\r\n */\r\n @Input() optionsListTemplate?: TemplateRef<TypeaheadOptionListContext>;\r\n /** specifies if typeahead is scrollable */\r\n @Input() typeaheadScrollable = false;\r\n /** specifies number of options to show in scroll view */\r\n @Input() typeaheadOptionsInScrollableView = 5;\r\n /** used to hide result on blur */\r\n @Input() typeaheadHideResultsOnBlur?: boolean;\r\n /** fired when an options list was opened and the user clicked Tab\r\n * If a value equal true, it will be chosen first or active item in the list\r\n * If value equal false, it will be chosen an active item in the list or nothing\r\n */\r\n @Input() typeaheadSelectFirstItem = true;\r\n /** makes active first item in a list */\r\n @Input() typeaheadIsFirstItemActive = true;\r\n /** fired when 'busy' state of this component was changed,\r\n * fired on async mode only, returns boolean\r\n */\r\n @Output() typeaheadLoading = new EventEmitter<boolean>();\r\n /** fired on every key event and returns true\r\n * in case of matches are not detected\r\n */\r\n @Output() typeaheadNoResults = new EventEmitter<boolean>();\r\n /** fired when option was selected, return object with data of this option. */\r\n @Output() typeaheadOnSelect = new EventEmitter<TypeaheadMatch>();\r\n /** fired when option was previewed, return object with data of this option. */\r\n @Output() typeaheadOnPreview = new EventEmitter<TypeaheadMatch>();\r\n /** fired when blur event occurs. returns the active item */\r\n @Output() typeaheadOnBlur = new EventEmitter<TypeaheadMatch>();\r\n\r\n /**\r\n * A selector specifying the element the typeahead should be appended to.\r\n */\r\n @Input() container?: string;\r\n\r\n /** This attribute indicates that the dropdown should be opened upwards */\r\n @Input() dropup = false;\r\n\r\n // not yet implemented\r\n /** if false restrict model values to the ones selected from the popup only will be provided */\r\n // @Input() protected typeaheadEditable:boolean;\r\n /** if false the first match automatically will not be focused as you type */\r\n // @Input() protected typeaheadFocusFirst:boolean;\r\n /** format the ng-model result after selection */\r\n // @Input() protected typeaheadInputFormatter:any;\r\n /** if true automatically select an item when there is one option that exactly matches the user input */\r\n // @Input() protected typeaheadSelectOnExact:boolean;\r\n /** if true select the currently highlighted match on blur */\r\n // @Input() protected typeaheadSelectOnBlur:boolean;\r\n /** if false don't focus the input element the typeahead directive is associated with on selection */\r\n // @Input() protected typeaheadFocusOnSelect:boolean;\r\n\r\n activeDescendant?: string;\r\n isOpen = false;\r\n list = 'list';\r\n _container?: TypeaheadContainerComponent;\r\n isActiveItemChanged = false;\r\n isFocused = false;\r\n cancelRequestOnFocusLost = false;\r\n selectItemOnBlur = false;\r\n protected keyUpEventEmitter = new EventEmitter<string>();\r\n protected placement = 'bottom left';\r\n protected _matches: TypeaheadMatch[] = [];\r\n\r\n private _typeahead: ComponentLoader<TypeaheadContainerComponent>;\r\n private _subscriptions: Subscription[] = [];\r\n private _allEnteredValue?: string;\r\n private _outsideClickListener: () => void = () => void 0;\r\n\r\n constructor(\r\n cis: ComponentLoaderFactory,\r\n config: TypeaheadConfig,\r\n private changeDetection: ChangeDetectorRef,\r\n private element: ElementRef,\r\n private ngControl: NgControl,\r\n private renderer: Renderer2,\r\n viewContainerRef: ViewContainerRef\r\n ) {\r\n this._typeahead = cis\r\n .createLoader<TypeaheadContainerComponent>(element, viewContainerRef, renderer)\r\n .provide({ provide: TypeaheadConfig, useValue: config });\r\n\r\n Object.assign(this, {\r\n typeaheadHideResultsOnBlur: config.hideResultsOnBlur,\r\n cancelRequestOnFocusLost: config.cancelRequestOnFocusLost,\r\n typeaheadSelectFirstItem: config.selectFirstItem,\r\n typeaheadIsFirstItemActive: config.isFirstItemActive,\r\n typeaheadMinLength: config.minLength,\r\n adaptivePosition: config.adaptivePosition,\r\n isAnimated: config.isAnimated,\r\n selectItemOnBlur: config.selectItemOnBlur\r\n });\r\n }\r\n\r\n get matches(): TypeaheadMatch[] {\r\n return this._matches;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.typeaheadOptionsLimit = this.typeaheadOptionsLimit || 20;\r\n\r\n this.typeaheadMinLength = this.typeaheadMinLength === void 0 ? 1 : this.typeaheadMinLength;\r\n\r\n // async should be false in case of array\r\n if (this.typeaheadAsync === undefined && !isObservable(this.typeahead)) {\r\n this.typeaheadAsync = false;\r\n }\r\n\r\n if (isObservable(this.typeahead)) {\r\n this.typeaheadAsync = true;\r\n }\r\n\r\n if (this.typeaheadAsync) {\r\n this.asyncActions();\r\n } else {\r\n this.syncActions();\r\n }\r\n\r\n this.checkDelimitersConflict();\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onInput(e: any): void {\r\n // For `<input>`s, use the `value` property. For others that don't have a\r\n // `value` (such as `<span contenteditable=\"true\">`), use either\r\n // `textContent` or `innerText` (depending on which one is supported, i.e.\r\n // Firefox or IE).\r\n const value =\r\n e.target.value !== undefined\r\n ? e.target.value\r\n : e.target.textContent !== undefined\r\n ? e.target.textContent\r\n : e.target.innerText;\r\n\r\n if (value != null && value.trim().length >= this.typeaheadMinLength) {\r\n this.typeaheadLoading.emit(true);\r\n this.keyUpEventEmitter.emit(e.target.value);\r\n } else {\r\n this.typeaheadLoading.emit(false);\r\n this.typeaheadNoResults.emit(false);\r\n this.hide();\r\n }\r\n }\r\n\r\n @HostListener('keyup', ['$event'])\r\n onChange(event: KeyboardEvent): void {\r\n if (this._container) {\r\n // esc\r\n if (event.keyCode === 27 || event.key === 'Escape') {\r\n this.hide();\r\n\r\n return;\r\n }\r\n\r\n // up\r\n if (event.keyCode === 38 || event.key === 'ArrowUp') {\r\n this.isActiveItemChanged = true;\r\n this._container.prevActiveMatch();\r\n\r\n return;\r\n }\r\n\r\n // down\r\n if (event.keyCode === 40 || event.key === 'ArrowDown') {\r\n this.isActiveItemChanged = true;\r\n this._container.nextActiveMatch();\r\n\r\n return;\r\n }\r\n\r\n // enter\r\n if (event.keyCode === 13 || event.key === 'Enter') {\r\n this._container.selectActiveMatch();\r\n\r\n return;\r\n }\r\n }\r\n }\r\n\r\n @HostListener('click')\r\n @HostListener('focus')\r\n onFocus(): void {\r\n this.isFocused = true;\r\n // add setTimeout to fix issue #5251\r\n // to get and emit updated value if it's changed on focus\r\n setTimeout(() => {\r\n if (this.typeaheadMinLength === 0) {\r\n this.typeaheadLoading.emit(true);\r\n this.keyUpEventEmitter.emit(this.element.nativeElement.value || '');\r\n }\r\n }, 0);\r\n }\r\n\r\n @HostListener('blur')\r\n onBlur(): void {\r\n this.isFocused = false;\r\n if (this._container && !this._container.isFocused) {\r\n this.typeaheadOnBlur.emit(this._container.active);\r\n }\r\n\r\n if (!this.container && this._matches?.length === 0) {\r\n this.typeaheadOnBlur.emit(\r\n new TypeaheadMatch(this.element.nativeElement.value, this.element.nativeElement.value, false)\r\n );\r\n }\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeydown(event: KeyboardEvent): void {\r\n // no container - no problems\r\n if (!this._container) {\r\n return;\r\n }\r\n\r\n if (event.keyCode === 9 || event.key === 'Tab') {\r\n this.onBlur();\r\n }\r\n\r\n if (event.keyCode === 9 || event.key === 'Tab' || event.keyCode === 13 || event.key === 'Enter') {\r\n event.preventDefault();\r\n if (this.typeaheadSelectFirstItem) {\r\n this._container.selectActiveMatch();\r\n\r\n return;\r\n }\r\n\r\n if (!this.typeaheadSelectFirstItem) {\r\n this._container.selectActiveMatch(this.isActiveItemChanged);\r\n this.isActiveItemChanged = false;\r\n this.hide();\r\n }\r\n }\r\n }\r\n\r\n changeModel(match?: TypeaheadMatch): void {\r\n if (!match) {\r\n return;\r\n }\r\n let valueStr: string;\r\n if (this.typeaheadMultipleSearch && this._allEnteredValue) {\r\n const tokens = this._allEnteredValue.split(new RegExp(`([${this.typeaheadMultipleSearchDelimiters}]+)`));\r\n this._allEnteredValue = tokens\r\n .slice(0, tokens.length - 1)\r\n .concat(match.value)\r\n .join('');\r\n valueStr = this._allEnteredValue;\r\n } else {\r\n valueStr = match.value;\r\n }\r\n this.ngControl.viewToModelUpdate(valueStr);\r\n this.ngControl.control?.setValue(valueStr);\r\n this.changeDetection.markForCheck();\r\n this.hide();\r\n }\r\n\r\n show(): void {\r\n this._typeahead\r\n .attach(TypeaheadContainerComponent)\r\n .to(this.container)\r\n .position({ attachment: `${this.dropup ? 'top' : 'bottom'} left` })\r\n .show({\r\n typeaheadRef: this,\r\n placement: this.placement,\r\n animation: false,\r\n dropup: this.dropup\r\n });\r\n\r\n this._outsideClickListener = this.renderer.listen('document', 'click', (event: MouseEvent) => {\r\n if (this.typeaheadMinLength === 0 && this.element.nativeElement.contains(event.target)) {\r\n return;\r\n }\r\n if (!this.typeaheadHideResultsOnBlur || this.element.nativeElement.contains(event.target)) {\r\n return;\r\n }\r\n this.onOutsideClick();\r\n });\r\n\r\n if (!this._typeahead.instance || !this.ngControl.control) {\r\n return;\r\n }\r\n\r\n this._container = this._typeahead.instance;\r\n this._container.parent = this;\r\n // This improves the speed as it won't have to be done for each list item\r\n\r\n const normalizedQuery = (\r\n this.typeaheadLatinize ? latinize(this.ngControl.control.value) : this.ngControl.control.value\r\n )\r\n .toString()\r\n .toLowerCase();\r\n\r\n this._container.query = this.tokenizeQuery(normalizedQuery);\r\n\r\n this._container.matches = this._matches;\r\n this.element.nativeElement.focus();\r\n\r\n this._container.activeChangeEvent.subscribe((activeId: string) => {\r\n this.activeDescendant = activeId;\r\n this.changeDetection.markForCheck();\r\n });\r\n this.isOpen = true;\r\n }\r\n\r\n hide(): void {\r\n if (this._typeahead.isShown) {\r\n this._typeahead.hide();\r\n this._outsideClickListener();\r\n this._container = void 0;\r\n this.isOpen = false;\r\n this.changeDetection.markForCheck();\r\n }\r\n this.typeaheadOnPreview.emit();\r\n }\r\n\r\n onOutsideClick(): void {\r\n if (this._container && !this._container.isFocused) {\r\n this.hide();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n // clean up subscriptions\r\n for (const sub of this._subscriptions) {\r\n sub.unsubscribe();\r\n }\r\n this._typeahead.dispose();\r\n }\r\n\r\n protected asyncActions(): void {\r\n this._subscriptions.push(\r\n this.keyUpEventEmitter\r\n .pipe(\r\n debounceTime<string>(this.typeaheadWaitMs),\r\n tap((value) => (this._allEnteredValue = value)),\r\n switchMap(() => {\r\n if (!this.typeahead) {\r\n return EMPTY;\r\n }\r\n return this.typeahead;\r\n })\r\n )\r\n .subscribe((matches) => {\r\n this.finalizeAsyncCall(matches);\r\n })\r\n );\r\n }\r\n\r\n protected syncActions(): void {\r\n this._subscriptions.push(\r\n this.keyUpEventEmitter\r\n .pipe(\r\n debounceTime<string>(this.typeaheadWaitMs),\r\n mergeMap((value: string) => {\r\n this._allEnteredValue = value;\r\n const normalizedQuery = this.normalizeQuery(value);\r\n\r\n if (!this.typeahead) {\r\n return EMPTY;\r\n }\r\n\r\n const typeahead = isObservable(this.typeahead) ? this.typeahead : from(this.typeahead);\r\n\r\n return typeahead.pipe(\r\n filter((option: TypeaheadOption) => {\r\n return !!option && this.testMatch(this.normalizeOption(option), normalizedQuery);\r\n }),\r\n toArray()\r\n );\r\n })\r\n )\r\n .subscribe((matches: TypeaheadOption[]) => {\r\n this.finalizeAsyncCall(matches);\r\n })\r\n );\r\n }\r\n\r\n protected normalizeOption(option: TypeaheadOption): string {\r\n const optionValue: string = getValueFromObject(option, this.typeaheadOptionField);\r\n const normalizedOption = this.typeaheadLatinize ? latinize(optionValue) : optionValue;\r\n\r\n return normalizedOption.toLowerCase();\r\n }\r\n\r\n protected tokenizeQuery(currentQuery: string | string[]): string | string[] {\r\n let query = currentQuery;\r\n if (this.typeaheadMultipleSearch && this.typeaheadSingleWords) {\r\n if (\r\n !this.haveCommonCharacters(\r\n `${this.typeaheadPhraseDelimiters}${this.typeaheadWordDelimiters}`,\r\n this.typeaheadMultipleSearchDelimiters\r\n )\r\n ) {\r\n // single words and multiple search delimiters are different, can be used together\r\n query = tokenize(\r\n query as string,\r\n this.typeaheadWordDelimiters,\r\n this.typeaheadPhraseDelimiters,\r\n this.typeaheadMultipleSearchDelimiters\r\n );\r\n }\r\n } else if (this.typeaheadSingleWords) {\r\n query = tokenize(query as string, this.typeaheadWordDelimiters, this.typeaheadPhraseDelimiters);\r\n } else {\r\n // multiple searches\r\n query = tokenize(query as string, void 0, void 0, this.typeaheadMultipleSearchDelimiters);\r\n }\r\n\r\n return query;\r\n }\r\n\r\n protected normalizeQuery(value: string): string | string[] {\r\n // If singleWords, break model here to not be doing extra work on each iteration\r\n let normalizedQuery: string | string[] = (this.typeaheadLatinize ? latinize(value) : value)\r\n .toString()\r\n .toLowerCase();\r\n\r\n normalizedQuery = this.tokenizeQuery(normalizedQuery);\r\n\r\n return normalizedQuery;\r\n }\r\n\r\n protected testMatch(match: string, test: string[] | string): boolean {\r\n let spaceLength: number;\r\n\r\n if (typeof test === 'object') {\r\n spaceLength = test.length;\r\n for (let i = 0; i < spaceLength; i += 1) {\r\n if (test[i].length > 0 && match.indexOf(test[i]) < 0) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n return match.indexOf(test) >= 0;\r\n }\r\n\r\n protected finalizeAsyncCall(matches?: TypeaheadOption | TypeaheadOption[]): void {\r\n this.prepareMatches(matches || []);\r\n\r\n this.typeaheadLoading.emit(false);\r\n this.typeaheadNoResults.emit(!this.hasMatches());\r\n\r\n if (!this.hasMatches()) {\r\n this.hide();\r\n\r\n return;\r\n }\r\n\r\n if (!this.isFocused && this.cancelRequestOnFocusLost) {\r\n return;\r\n }\r\n\r\n if (this._container && this.ngControl.control) {\r\n // fix: remove usage of ngControl internals\r\n const _controlValue =\r\n (this.typeaheadLatinize ? latinize(this.ngControl.control.value) : this.ngControl.control.value) || '';\r\n\r\n // This improves the speed as it won't have to be done for each list item\r\n const normalizedQuery = _controlValue.toString().toLowerCase();\r\n\r\n this._container.query = this.tokenizeQuery(normalizedQuery);\r\n this._container.matches = this._matches;\r\n } else {\r\n this.show();\r\n }\r\n }\r\n\r\n protected prepareMatches(options: TypeaheadOption | TypeaheadOption[]): void {\r\n const limited = options.slice(0, this.typeaheadOptionsLimit);\r\n const sorted = !this.typeaheadOrderBy ? limited : this.orderMatches(limited);\r\n\r\n if (this.typeaheadGroupField) {\r\n let matches: TypeaheadMatch[] = [];\r\n\r\n // extract all group names\r\n const groups = sorted\r\n .map((option: TypeaheadOption) => getValueFromObject(option, this.typeaheadGroupField))\r\n .filter((v: string, i: number, a: string[]) => a.indexOf(v) === i);\r\n\r\n groups.forEach((group: string) => {\r\n // add group header to array of matches\r\n matches.push(new TypeaheadMatch(group, group, true));\r\n\r\n // add each item of group to array of matches\r\n matches = matches.concat(\r\n sorted\r\n .filter((option: TypeaheadOption) => getValueFromObject(option, this.typeaheadGroupField) === group)\r\n .map(\r\n (option: TypeaheadOption) =>\r\n new TypeaheadMatch(option, getValueFromObject(option, this.typeaheadOptionField))\r\n )\r\n );\r\n });\r\n\r\n this._matches = matches;\r\n } else {\r\n this._matches = sorted.map(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (option: any) => new TypeaheadMatch(option, getValueFromObject(option, this.typeaheadOptionField))\r\n );\r\n }\r\n }\r\n\r\n protected orderMatches(options: TypeaheadOption[]): TypeaheadOption[] {\r\n if (!options.length) {\r\n return options;\r\n }\r\n\r\n if (\r\n this.typeaheadOrderBy !== null &&\r\n this.typeaheadOrderBy !== undefined &&\r\n typeof this.typeaheadOrderBy === 'object' &&\r\n Object.keys(this.typeaheadOrderBy).length === 0\r\n ) {\r\n console.error('Field and direction properties for typeaheadOrderBy have to be set according to documentation!');\r\n\r\n return options;\r\n }\r\n\r\n const { field, direction } = this.typeaheadOrderBy || {};\r\n\r\n if (!direction || !(direction === 'asc' || direction === 'desc')) {\r\n console.error('typeaheadOrderBy direction has to equal \"asc\" or \"desc\". Please follow the documentation.');\r\n\r\n return options;\r\n }\r\n\r\n if (typeof options[0] === 'string') {\r\n return direction === 'asc' ? options.sort() : options.sort().reverse();\r\n }\r\n\r\n if (!field || typeof field !== 'string') {\r\n console.error('typeaheadOrderBy field has to set according to the documentation.');\r\n\r\n return options;\r\n }\r\n\r\n return options.sort((a: TypeaheadOption, b: TypeaheadOption) => {\r\n const stringA = getValueFromObject(a, field);\r\n const stringB = getValueFromObject(b, field);\r\n\r\n if (stringA < stringB) {\r\n return direction === 'asc' ? -1 : 1;\r\n }\r\n\r\n if (stringA > stringB) {\r\n return direction === 'asc' ? 1 : -1;\r\n }\r\n\r\n return 0;\r\n });\r\n }\r\n\r\n protected hasMatches(): boolean {\r\n return this._matches.length > 0;\r\n }\r\n\r\n protected checkDelimitersConflict(): void {\r\n if (\r\n this.typeaheadMultipleSearch &&\r\n this.typeaheadSingleWords &&\r\n this.haveCommonCharacters(\r\n `${this.typeaheadPhraseDelimiters}${this.typeaheadWordDelimiters}`,\r\n this.typeaheadMultipleSearchDelimiters\r\n )\r\n ) {\r\n throw new Error(`Delimiters used in typeaheadMultipleSearchDelimiters must be different\r\n from delimiters used in typeaheadWordDelimiters (current value: ${this.typeaheadWordDelimiters}) and\r\n typeaheadPhraseDelimiters (current value: ${this.typeaheadPhraseDelimiters}).\r\n Please refer to the documentation`);\r\n }\r\n }\r\n\r\n protected haveCommonCharacters(str1: string, str2: string) {\r\n for (let i = 0; i < str1.length; i++) {\r\n if (str1.charAt(i).indexOf(str2) > -1) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule, ModuleWithProviders } from '@angular/core';\r\n\r\nimport { TypeaheadContainerComponent } from './typeahead-container.component';\r\nimport { TypeaheadDirective } from './typeahead.directive';\r\nimport { ComponentLoaderFactory } from '@period-year-norway/ngx-bootstrap/component-loader';\r\nimport { PositioningService } from '@period-year-norway/ngx-bootstrap/positioning';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [TypeaheadContainerComponent, TypeaheadDirective],\r\n exports: [TypeaheadContainerComponent, TypeaheadDirective]\r\n})\r\nexport class TypeaheadModule {\r\n static forRoot(): ModuleWithProviders<TypeaheadModule> {\r\n return {\r\n ngModule: TypeaheadModule,\r\n providers: [ComponentLoaderFactory, PositioningService]\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.TypeaheadConfig"],"mappings":";;;;;;;;;;;;;;AAAO,MAAM,QAAQ,GAA8B;AAC/C,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE;;;MCtzBI,gBAAgB,CAAA;AAK3B,IAAA,WAAA,CAAY,OAAyB,EAAA;AACnC,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY;IAC1C;AACD;;MCZY,cAAc,CAAA;;AAQzB,IAAA,WAAA,CAAY,IAAS,EAAE,KAAA,GAAgB,IAAI,EAAE,MAAM,GAAG,KAAK,EAAA;AACzD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACtB;IAEA,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,MAAM;IACpB;IAEA,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;IACnB;AACD;;ACnBK,SAAU,QAAQ,CAAC,GAAW,EAAA;IAClC,IAAI,CAAC,GAAG,EAAE;AACR,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,OAAO,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,UAAS,CAAS,EAAA;AACxD,QAAA,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,IAAA,CAAC,CAAC;AACJ;AAEM,SAAU,YAAY,CAAC,aAAqB,EAAA;;;;IAIhD,OAAO,aAAa,CAAC,OAAO,CAAC,wBAAwB,EAAE,MAAM,CAAC;AAChE;AAEM,SAAU,QAAQ,CAAC,GAAW,EACX,mBAAmB,GAAG,GAAG,EACzB,qBAAqB,GAAG,EAAE,EAAE,2BAAoC,EAAA;IAEvF,IAAI,MAAM,GAAa,EAAE;IACzB,IAAI,CAAC,2BAA2B,EAAE;QAChC,MAAM,GAAG,uBAAuB,CAAC,GAAG,EAAE,mBAAmB,EAAE,qBAAqB,CAAC;IACnF;SAAO;AACL,QAAA,MAAM,sBAAsB,GAAG,CAAA,EAAA,EAAK,2BAA2B,KAAK;AACpE,QAAA,MAAM,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAC1E,MAAM,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7D,QAAA,IAAI,SAAS,GAAG,EAAE,EAAE;AAClB,YAAA,IAAI,mBAAmB,IAAI,qBAAqB,EAAE;gBAChD,MAAM,GAAG,uBAAuB,CAAC,SAAS,EAAE,mBAAmB,EAAE,qBAAqB,CAAC;YACzF;iBAAO;AACL,gBAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;YACxB;QACF;IACF;AAEA,IAAA,OAAO,MAAM;AACf;AAEA,SAAS,uBAAuB,CAAC,GAAW,EAAE,mBAA2B,EAAE,qBAA6B,EAAA;IACtG,MAAM,MAAM,GAAa,EAAE;AAC3B,IAAA,MAAM,QAAQ,GAAG,CAAA,IAAA,EAAO,qBAAqB,CAAA,KAAA,EAAQ,qBAAqB,CAAA,GAAA,CAAK;AAC7E,QAAA,CAAA,IAAA,EAAO,qBAAqB,CAAA,MAAA,EAAS,mBAAmB,CAAA,GAAA,CAAK;AAC/D,IAAA,MAAM,YAAY,GAAa,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACnE,IAAA,MAAM,kBAAkB,GAAW,YAAY,CAAC,MAAM;AACtD,IAAA,IAAI,KAAa;IACjB,MAAM,uBAAuB,GAAG,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,qBAAqB,CAAA,EAAA,CAAI,EAAE,GAAG,CAAC;AAE9E,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAC,IAAI,CAAC,EAAE;AAC9C,QAAA,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC;QACvB,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,KAAK,mBAAmB,EAAE;AAC1D,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QACzD;IACF;AAEA,IAAA,OAAO,MAAM;AACf;AAEA;AACM,SAAU,kBAAkB,CAAC,MAA6C,EAAE,MAAe,EAAA;IAC/F,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACzC,QAAA,OAAO,MAAM,CAAC,QAAQ,EAAE;IAC1B;AAEA,IAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACzB,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAEvD,OAAQ,MAAM,CAAC,YAAY,CAAkB,EAAE,CAAC,QAAQ,EAAE;IAC5D;IAEA,MAAM,UAAU,GAAW;AACxB,SAAA,OAAO,CAAC,YAAY,EAAE,KAAK;AAC3B,SAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IACrB,MAAM,eAAe,GAAa,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAEvD,IAAA,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE;AACtC,QAAA,IAAI,QAAQ,IAAK,MAAkC,EAAE;;;AAGnD,YAAA,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC3B;IACF;IACA,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,OAAO,MAAM,CAAC,QAAQ,EAAE;AAC1B;;ACjFO,MAAM,0BAA0B,GAAG,kCAAkC;AAErE,MAAM,kBAAkB,GAC7B,OAAO,CAAC,oBAAoB,EAAE;AAC5B,IAAA,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC,CAAC;IACjE,UAAU,CAAC,oBAAoB,EAAE;QAC/B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACxC,OAAO,CAAC,0BAA0B;KACnC,CAAC;AACF,IAAA,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC,CAAC;IAC/D,UAAU,CAAC,kBAAkB,EAAE;QAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC1C,OAAO,CAAC,0BAA0B;KACnC,CAAC;AACF,IAAA,UAAU,CAAC,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC;AAC5C,CAAA,CAAC;;ACCJ,IAAI,YAAY,GAAG,CAAC;MA8BP,2BAA2B,CAAA;AAmBtC,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,CAAC,KAAK,EAAE;IACjB;AAEA,IAAA,IAAI,wBAAwB,GAAA;QAC1B,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YACxC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;SAClC;IACH;AAWA,IAAA,WAAA,CACU,eAAmC,EACnC,QAAmB,EACpB,OAAmB,EAClB,iBAAoC,EAAA;QAHpC,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACT,IAAA,CAAA,OAAO,GAAP,OAAO;QACN,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;;AA1CH,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAE;QAI9D,IAAA,CAAA,SAAS,GAAG,KAAK;AASjB,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,YAAY,EAAE;QAChD,IAAA,CAAA,MAAM,GAAG,CAAC;AACV,QAAA,IAAA,CAAA,OAAO,GAAG,CAAA,cAAA,EAAiB,YAAY,EAAE,EAAE;QAejC,IAAA,CAAA,QAAQ,GAAqB,EAAE;AAcvC,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;AAC1E,QAAA,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAClC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,MAAK;AAC1C,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,aAAa,GAAG,eAAe;AAC1E,gBAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;gBAEtC;YACF;AAEA,YAAA,IAAI,CAAC,cAAc,GAAG,YAAY;AAClC,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;QACxC,CAAC,CAAC,CACH;IACH;AAEA,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;IACrB;IAEA,IAAI,MAAM,CAAC,MAAkC,EAAA;AAC3C,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;QACrB,IAAI,CAAC,aAAa,EAAE;IACtB;AAEA,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;IACtB;IAEA,IAAI,OAAO,CAAC,KAAuB,EAAA;AACjC,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;YAC9B,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACvD,YAAA,gBAAgB,EAAE,CAAC,KAAK,EAAE,QAAQ;AACnC,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AAErB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;AAE5G,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,CAAC,CAAC;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAEhC,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;gBAC5B,IAAI,CAAC,eAAe,EAAE;YACxB;QACF;QAEA,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACpD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;YAEtF,IAAI,WAAW,EAAE;AACf,gBAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;gBAE9B;YACF;AAEA,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB;IACF;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC7D;AAEA,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,GAAG,SAAS;IAClE;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK;IACrD;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,GAAG,KAAK;IAC3D;AAEA,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,GAAG,KAAK;IAC9D;AAEA,IAAA,IAAI,gCAAgC,GAAA;AAClC,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,gCAAgC,GAAG,CAAC;IACvE;AAEA,IAAA,IAAI,0BAA0B,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,0BAA0B,GAAG,IAAI;IACpE;;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,GAAG,SAAS;IACpE;AAEA,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB;IACxC;AAEA,IAAA,iBAAiB,CAAC,mBAA6B,EAAA;QAC7C,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,wBAAwB,EAAE;AACzD,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;QAChC;QAEA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,wBAAwB,IAAI,mBAAmB,EAAE;AACjE,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;QAChC;IACF;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB;QACF;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAChD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAC;IACzD;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAChD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAEjF,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE;YAC3B,IAAI,CAAC,eAAe,EAAE;QACxB;AAEA,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAC5B;IACF;IAEA,eAAe,GAAA;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAEjF,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;YAC5B,IAAI,CAAC,eAAe,EAAE;QACxB;AAEA,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACxB;IACF;AAEA,IAAA,YAAY,CAAC,KAAqB,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IACvB;IAEA,SAAS,CAAC,KAAqB,EAAE,KAAwB,EAAA;AACvD,QAAA,IAAI,OAAO,GAAW,KAAK,CAAC,KAAK;QACjC,IAAI,aAAa,GAAW,CAC1B,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,EAC1E,WAAW,EAAE;AACf,QAAA,IAAI,QAAgB;AACpB,QAAA,IAAI,QAAgB;;AAEpB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,MAAM,QAAQ,GAAW,KAAK,CAAC,MAAM;AACrC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE;;gBAEpC,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1C,gBAAA,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;gBAC1B,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE;oBACjC,OAAO;AACL,wBAAA,CAAA,EAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA,QAAA,EAAW,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAA,SAAA,CAAW;4BACvG,CAAA,EAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAA,CAAE;oBAC7C,aAAa;AACX,wBAAA,CAAA,EAAG,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA,QAAA,EAAW,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA,SAAA,CAAW;4BACjF,CAAA,EAAG,aAAa,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAA,CAAE;gBACrD;YACF;QACF;aAAO,IAAI,KAAK,EAAE;;AAEhB,YAAA,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;AACvC,YAAA,QAAQ,GAAG,KAAK,CAAC,MAAM;YACvB,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE;gBACjC,OAAO;AACL,oBAAA,CAAA,EAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA,QAAA,EAAW,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAA,SAAA,CAAW;wBACvG,CAAA,EAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAA,CAAE;YAC/C;QACF;AAEA,QAAA,OAAO,OAAO;IAChB;IAIA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACxB;IACF;AAEA,IAAA,QAAQ,CAAC,KAAqB,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK;IAC9B;IAEA,WAAW,CAAC,KAAsB,EAAE,KAAa,EAAA;QAC/C,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,eAAe,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE;QACxB;AACA,QAAA,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC;AAC/B,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAE/D,QAAA,OAAO,KAAK;IACd;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO;QAC/B;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE;AAC1B,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AAC9D,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC;AACrE,YAAA,MAAM,eAAe,GAAG,UAAU,CAChC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CACjF;AACD,YAAA,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC5G,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC5F,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gCAAgC,GAAG,YAAY;YACnE,IAAI,CAAC,SAAS,GAAG,CAAA,EAAG,MAAM,GAAG,YAAY,GAAG,eAAe,CAAA,EAAA,CAAI;QACjE;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,EAAE,SAAS,CAAC;IAC7E;AAEA,IAAA,cAAc,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,IAAI,CAAC,cAAc,EAAE;YAErB;QACF;QACA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE;AACrC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;AACtD,YAAA,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE;AAClE,gBAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC,SAAS;YAC5E;QACF;IACF;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,IAAI,CAAC,WAAW,EAAE;YAElB;QACF;QACA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE;AACrC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;AACtD,YAAA,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE;AAClE,gBAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS;oBACpC,SAAS,CAAC,aAAa,CAAC,SAAS;wBACjC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC;AACjD,wBAAA,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC;YAChD;QACF;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE;IAChD;AAEU,IAAA,SAAS,CAAC,KAAsB,EAAA;AACxC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,OAAO;AACX,QAAA,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE;YACtD,OAAO,GAAG,KAAK;QACjB;QACA,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;IAC/C;AAEQ,IAAA,kBAAkB,CAAC,IAAiB,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,OAAO,KAAK;QACd;QACA,MAAM,gBAAgB,GAAW,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS;AACvE,QAAA,MAAM,mBAAmB,GAAG,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC;AAChG,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS;AAC9B,QAAA,MAAM,UAAU,GAAG,OAAO,GAAG,IAAI,CAAC,YAAY;AAE9C,QAAA,OAAO,UAAU,IAAI,mBAAmB,IAAI,OAAO,IAAI,gBAAgB;IACzE;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE;YAClC;QACF;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY;IACpF;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE;YAClC;QACF;QACA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC;IAC5C;8GA9VW,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,aAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,cAAA,EAAA,4CAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,QAAA,EAAA,WAAA,EAAA,2BAAA,EAAA,EAAA,cAAA,EAAA,oCAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvDxC,ioFA8DA,EAAA,MAAA,EAAA,CAAA,gGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EDVc,CAAC,kBAAkB,CAAC,EAAA,CAAA,CAAA;;2FAGrB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBA5BvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,IAAA,EAEzB;AACJ,wBAAA,KAAK,EAAE,sBAAsB;AAC7B,wBAAA,uBAAuB,EAAE,OAAO;AAChC,wBAAA,gBAAgB,EAAE,CAAA,0CAAA,CAA4C;AAC9D,wBAAA,oBAAoB,EAAE,CAAA,SAAA,CAAW;AACjC,wBAAA,gBAAgB,EAAE,QAAQ;AAC1B,wBAAA,KAAK,EAAE,oCAAoC;AAC3C,wBAAA,aAAa,EAAE,CAAA,yBAAA;AAChB,qBAAA,EAAA,UAAA,EAcW,CAAC,kBAAkB,CAAC,EAAA,UAAA,EACpB,KAAK,EAAA,QAAA,EAAA,ioFAAA,EAAA,MAAA,EAAA,CAAA,gGAAA,CAAA,EAAA;;sBAIhB,MAAM;uBAAC,cAAc;;sBAgCrB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;sBAGxC,YAAY;uBAAC,YAAY;;sBAyMzB,YAAY;uBAAC,YAAY;;sBACzB,YAAY;uBAAC,MAAM;;;AEpStB;MAEa,eAAe,CAAA;AAD5B,IAAA,WAAA,GAAA;;QAGE,IAAA,CAAA,gBAAgB,GAAG,KAAK;;QAExB,IAAA,CAAA,UAAU,GAAG,KAAK;;QAElB,IAAA,CAAA,iBAAiB,GAAG,IAAI;;QAExB,IAAA,CAAA,wBAAwB,GAAG,KAAK;;QAEhC,IAAA,CAAA,eAAe,GAAG,IAAI;;QAEtB,IAAA,CAAA,iBAAiB,GAAG,IAAI;AACxB;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,CAAC;AACb;;AAEG;QACH,IAAA,CAAA,gBAAgB,GAAG,KAAK;AACzB,IAAA;8GArBY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADF,MAAM,EAAA,CAAA,CAAA;;2FACnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCuCrB,kBAAkB,CAAA;AAgJ7B,IAAA,WAAA,CACE,GAA2B,EAC3B,MAAuB,EACf,eAAkC,EAClC,OAAmB,EACnB,SAAoB,EACpB,QAAmB,EAC3B,gBAAkC,EAAA;QAJ1B,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,QAAQ,GAAR,QAAQ;AAjJlB;;;AAGG;QACM,IAAA,CAAA,kBAAkB,GAAG,CAAC;;QAEtB,IAAA,CAAA,gBAAgB,GAAG,KAAK;;QAExB,IAAA,CAAA,UAAU,GAAG,KAAK;;QAElB,IAAA,CAAA,eAAe,GAAG,CAAC;AAsB5B;;AAEG;QACM,IAAA,CAAA,iBAAiB,GAAG,IAAI;AACjC;;AAEG;QACM,IAAA,CAAA,oBAAoB,GAAG,IAAI;AACpC;;AAEG;QACM,IAAA,CAAA,uBAAuB,GAAG,GAAG;AAStC;;;;;AAKG;QACM,IAAA,CAAA,iCAAiC,GAAG,GAAG;AAChD;;;AAGG;QACM,IAAA,CAAA,yBAAyB,GAAG,KAAK;;QAUjC,IAAA,CAAA,mBAAmB,GAAG,KAAK;;QAE3B,IAAA,CAAA,gCAAgC,GAAG,CAAC;AAG7C;;;AAGG;QACM,IAAA,CAAA,wBAAwB,GAAG,IAAI;;QAE/B,IAAA,CAAA,0BAA0B,GAAG,IAAI;AAC1C;;AAEG;AACO,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAW;AACxD;;AAEG;AACO,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAW;;AAEhD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAkB;;AAEtD,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAkB;;AAEvD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAkB;;QAQrD,IAAA,CAAA,MAAM,GAAG,KAAK;QAiBvB,IAAA,CAAA,MAAM,GAAG,KAAK;QACd,IAAA,CAAA,IAAI,GAAG,MAAM;QAEb,IAAA,CAAA,mBAAmB,GAAG,KAAK;QAC3B,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,wBAAwB,GAAG,KAAK;QAChC,IAAA,CAAA,gBAAgB,GAAG,KAAK;AACd,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAU;QAC9C,IAAA,CAAA,SAAS,GAAG,aAAa;QACzB,IAAA,CAAA,QAAQ,GAAqB,EAAE;QAGjC,IAAA,CAAA,cAAc,GAAmB,EAAE;AAEnC,QAAA,IAAA,CAAA,qBAAqB,GAAe,MAAM,KAAK,CAAC;QAWtD,IAAI,CAAC,UAAU,GAAG;AACf,aAAA,YAAY,CAA8B,OAAO,EAAE,gBAAgB,EAAE,QAAQ;aAC7E,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAE1D,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;YAClB,0BAA0B,EAAE,MAAM,CAAC,iBAAiB;YACpD,wBAAwB,EAAE,MAAM,CAAC,wBAAwB;YACzD,wBAAwB,EAAE,MAAM,CAAC,eAAe;YAChD,0BAA0B,EAAE,MAAM,CAAC,iBAAiB;YACpD,kBAAkB,EAAE,MAAM,CAAC,SAAS;YACpC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,gBAAgB,EAAE,MAAM,CAAC;AAC1B,SAAA,CAAC;IACJ;AAEA,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;IACtB;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,IAAI,EAAE;AAE7D,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB;;AAG1F,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACtE,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC7B;AAEA,QAAA,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC5B;AAEA,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,YAAY,EAAE;QACrB;aAAO;YACL,IAAI,CAAC,WAAW,EAAE;QACpB;QAEA,IAAI,CAAC,uBAAuB,EAAE;IAChC;;AAIA,IAAA,OAAO,CAAC,CAAM,EAAA;;;;;QAKZ,MAAM,KAAK,GACT,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK;AACjB,cAAE,CAAC,CAAC,MAAM,CAAC;AACX,cAAE,CAAC,CAAC,MAAM,CAAC,WAAW,KAAK;AACzB,kBAAE,CAAC,CAAC,MAAM,CAAC;AACX,kBAAE,CAAC,CAAC,MAAM,CAAC,SAAS;AAE1B,QAAA,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACnE,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7C;aAAO;AACL,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;YACnC,IAAI,CAAC,IAAI,EAAE;QACb;IACF;AAGA,IAAA,QAAQ,CAAC,KAAoB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;;AAEnB,YAAA,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;gBAClD,IAAI,CAAC,IAAI,EAAE;gBAEX;YACF;;AAGA,YAAA,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;AACnD,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAC/B,gBAAA,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;gBAEjC;YACF;;AAGA,YAAA,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;AACrD,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAC/B,gBAAA,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;gBAEjC;YACF;;AAGA,YAAA,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;AACjD,gBAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;gBAEnC;YACF;QACF;IACF;IAIA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;;QAGrB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,CAAC,EAAE;AACjC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC;YACrE;QACF,CAAC,EAAE,CAAC,CAAC;IACP;IAGA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;YACjD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACnD;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,KAAK,CAAC,EAAE;YAClD,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAC9F;QACH;IACF;AAGA,IAAA,SAAS,CAAC,KAAoB,EAAA;;AAE5B,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;YAC9C,IAAI,CAAC,MAAM,EAAE;QACf;QAEA,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YAC/F,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACjC,gBAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;gBAEnC;YACF;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;gBAClC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC;AAC3D,gBAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;gBAChC,IAAI,CAAC,IAAI,EAAE;YACb;QACF;IACF;AAEA,IAAA,WAAW,CAAC,KAAsB,EAAA;QAChC,IAAI,CAAC,KAAK,EAAE;YACV;QACF;AACA,QAAA,IAAI,QAAgB;QACpB,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,iCAAiC,CAAA,GAAA,CAAK,CAAC,CAAC;YACxG,IAAI,CAAC,gBAAgB,GAAG;iBACrB,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC;AAC1B,iBAAA,MAAM,CAAC,KAAK,CAAC,KAAK;iBAClB,IAAI,CAAC,EAAE,CAAC;AACX,YAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB;QAClC;aAAO;AACL,YAAA,QAAQ,GAAG,KAAK,CAAC,KAAK;QACxB;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC;AAC1C,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;QACnC,IAAI,CAAC,IAAI,EAAE;IACb;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC;aACF,MAAM,CAAC,2BAA2B;AAClC,aAAA,EAAE,CAAC,IAAI,CAAC,SAAS;AACjB,aAAA,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAA,EAAG,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA,KAAA,CAAO,EAAE;AACjE,aAAA,IAAI,CAAC;AACJ,YAAA,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,IAAI,CAAC;AACd,SAAA,CAAC;AAEJ,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,KAAiB,KAAI;AAC3F,YAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBACtF;YACF;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBACzF;YACF;YACA,IAAI,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACxD;QACF;QAEA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ;AAC1C,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI;;AAG7B,QAAA,MAAM,eAAe,GAAG,CACtB,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK;AAE7F,aAAA,QAAQ;AACR,aAAA,WAAW,EAAE;QAEhB,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;QAE3D,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ;AACvC,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;QAElC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,QAAgB,KAAI;AAC/D,YAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ;AAChC,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACrC,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;IACpB;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACtB,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;QACrC;AACA,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE;IAChC;IAEA,cAAc,GAAA;QACZ,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;YACjD,IAAI,CAAC,IAAI,EAAE;QACb;IACF;IAEA,WAAW,GAAA;;AAET,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,cAAc,EAAE;YACrC,GAAG,CAAC,WAAW,EAAE;QACnB;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;IAC3B;IAEU,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,IAAI,CAAC;aACF,IAAI,CACH,YAAY,CAAS,IAAI,CAAC,eAAe,CAAC,EAC1C,GAAG,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC,EAC/C,SAAS,CAAC,MAAK;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,gBAAA,OAAO,KAAK;YACd;YACA,OAAO,IAAI,CAAC,SAAS;AACvB,QAAA,CAAC,CAAC;AAEH,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;QACjC,CAAC,CAAC,CACL;IACH;IAEU,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,IAAI,CAAC;AACF,aAAA,IAAI,CACH,YAAY,CAAS,IAAI,CAAC,eAAe,CAAC,EAC1C,QAAQ,CAAC,CAAC,KAAa,KAAI;AACzB,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;YAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAElD,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,gBAAA,OAAO,KAAK;YACd;YAEA,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAEtF,OAAO,SAAS,CAAC,IAAI,CACnB,MAAM,CAAC,CAAC,MAAuB,KAAI;AACjC,gBAAA,OAAO,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;AAClF,YAAA,CAAC,CAAC,EACF,OAAO,EAAE,CACV;AACH,QAAA,CAAC,CAAC;AAEH,aAAA,SAAS,CAAC,CAAC,OAA0B,KAAI;AACxC,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;QACjC,CAAC,CAAC,CACL;IACH;AAEU,IAAA,eAAe,CAAC,MAAuB,EAAA;QAC/C,MAAM,WAAW,GAAW,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC;AACjF,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,WAAW;AAErF,QAAA,OAAO,gBAAgB,CAAC,WAAW,EAAE;IACvC;AAEU,IAAA,aAAa,CAAC,YAA+B,EAAA;QACrD,IAAI,KAAK,GAAG,YAAY;QACxB,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7D,IACE,CAAC,IAAI,CAAC,oBAAoB,CACxB,CAAA,EAAG,IAAI,CAAC,yBAAyB,CAAA,EAAG,IAAI,CAAC,uBAAuB,EAAE,EAClE,IAAI,CAAC,iCAAiC,CACvC,EACD;;AAEA,gBAAA,KAAK,GAAG,QAAQ,CACd,KAAe,EACf,IAAI,CAAC,uBAAuB,EAC5B,IAAI,CAAC,yBAAyB,EAC9B,IAAI,CAAC,iCAAiC,CACvC;YACH;QACF;AAAO,aAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACpC,YAAA,KAAK,GAAG,QAAQ,CAAC,KAAe,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,yBAAyB,CAAC;QACjG;aAAO;;AAEL,YAAA,KAAK,GAAG,QAAQ,CAAC,KAAe,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,iCAAiC,CAAC;QAC3F;AAEA,QAAA,OAAO,KAAK;IACd;AAEU,IAAA,cAAc,CAAC,KAAa,EAAA;;AAEpC,QAAA,IAAI,eAAe,GAAsB,CAAC,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK;AACvF,aAAA,QAAQ;AACR,aAAA,WAAW,EAAE;AAEhB,QAAA,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;AAErD,QAAA,OAAO,eAAe;IACxB;IAEU,SAAS,CAAC,KAAa,EAAE,IAAuB,EAAA;AACxD,QAAA,IAAI,WAAmB;AAEvB,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,YAAA,WAAW,GAAG,IAAI,CAAC,MAAM;AACzB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE;gBACvC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACpD,oBAAA,OAAO,KAAK;gBACd;YACF;AAEA,YAAA,OAAO,IAAI;QACb;QAEA,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC;AAEU,IAAA,iBAAiB,CAAC,OAA6C,EAAA;AACvE,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,EAAE,CAAC;AAElC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AAEhD,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;YACtB,IAAI,CAAC,IAAI,EAAE;YAEX;QACF;QAEA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACpD;QACF;QAEA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;;AAE7C,YAAA,MAAM,aAAa,GACjB,CAAC,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE;;YAGxG,MAAM,eAAe,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE;YAE9D,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;YAC3D,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ;QACzC;aAAO;YACL,IAAI,CAAC,IAAI,EAAE;QACb;IACF;AAEU,IAAA,cAAc,CAAC,OAA4C,EAAA;AACnE,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC;AAC5D,QAAA,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,GAAG,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AAE5E,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,OAAO,GAAqB,EAAE;;YAGlC,MAAM,MAAM,GAAG;AACZ,iBAAA,GAAG,CAAC,CAAC,MAAuB,KAAK,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC;AACrF,iBAAA,MAAM,CAAC,CAAC,CAAS,EAAE,CAAS,EAAE,CAAW,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAEpE,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAa,KAAI;;AAE/B,gBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;;AAGpD,gBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CACtB;AACG,qBAAA,MAAM,CAAC,CAAC,MAAuB,KAAK,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,KAAK;qBAClG,GAAG,CACF,CAAC,MAAuB,KACtB,IAAI,cAAc,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CACpF,CACJ;AACH,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;QACzB;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG;;AAExB,YAAA,CAAC,MAAW,KAAK,IAAI,cAAc,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CACnG;QACH;IACF;AAEU,IAAA,YAAY,CAAC,OAA0B,EAAA;AAC/C,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnB,YAAA,OAAO,OAAO;QAChB;AAEA,QAAA,IACE,IAAI,CAAC,gBAAgB,KAAK,IAAI;YAC9B,IAAI,CAAC,gBAAgB,KAAK,SAAS;AACnC,YAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,QAAQ;AACzC,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,KAAK,CAAC,EAC/C;AACA,YAAA,OAAO,CAAC,KAAK,CAAC,gGAAgG,CAAC;AAE/G,YAAA,OAAO,OAAO;QAChB;QAEA,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,gBAAgB,IAAI,EAAE;AAExD,QAAA,IAAI,CAAC,SAAS,IAAI,EAAE,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,MAAM,CAAC,EAAE;AAChE,YAAA,OAAO,CAAC,KAAK,CAAC,2FAA2F,CAAC;AAE1G,YAAA,OAAO,OAAO;QAChB;QAEA,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;YAClC,OAAO,SAAS,KAAK,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE;QACxE;QAEA,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAA,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC;AAElF,YAAA,OAAO,OAAO;QAChB;QAEA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAkB,EAAE,CAAkB,KAAI;YAC7D,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC;YAC5C,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC;AAE5C,YAAA,IAAI,OAAO,GAAG,OAAO,EAAE;AACrB,gBAAA,OAAO,SAAS,KAAK,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;YACrC;AAEA,YAAA,IAAI,OAAO,GAAG,OAAO,EAAE;AACrB,gBAAA,OAAO,SAAS,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YACrC;AAEA,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;IACJ;IAEU,UAAU,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;IACjC;IAEU,uBAAuB,GAAA;QAC/B,IACE,IAAI,CAAC,uBAAuB;AAC5B,YAAA,IAAI,CAAC,oBAAoB;AACzB,YAAA,IAAI,CAAC,oBAAoB,CACvB,GAAG,IAAI,CAAC,yBAAyB,CAAA,EAAG,IAAI,CAAC,uBAAuB,EAAE,EAClE,IAAI,CAAC,iCAAiC,CACvC,EACD;YACA,MAAM,IAAI,KAAK,CAAC,CAAA;AACsD,0EAAA,EAAA,IAAI,CAAC,uBAAuB,CAAA;AAClD,oDAAA,EAAA,IAAI,CAAC,yBAAyB,CAAA;AACxC,2CAAA,CAAA,CAAC;QACzC;IACF;IAEU,oBAAoB,CAAC,IAAY,EAAE,IAAY,EAAA;AACvD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;AACrC,gBAAA,OAAO,IAAI;YACb;QACF;AAEA,QAAA,OAAO,KAAK;IACd;8GAnpBW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,gCAAA,EAAA,kCAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,0CAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAX9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,IAAI,EAAE;AACJ,wBAAA,8BAA8B,EAAE,kBAAkB;AAClD,wBAAA,kBAAkB,EAAE,0CAA0C;AAC9D,wBAAA,sBAAsB,EAAE,QAAQ;AAChC,wBAAA,0BAA0B,EAAE;AAC7B,qBAAA;AACD,oBAAA,UAAU,EAAE;AACb,iBAAA;;sBAKE;;sBAKA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAKA;;sBAIA;;sBAKA;;sBAKA;;sBAIA;;sBAIA;;sBAIA;;sBAQA;;sBAOA;;sBAKA;;sBAIA;;sBAIA;;sBAEA;;sBAEA;;sBAEA;;sBAKA;;sBAEA;;sBAIA;;sBAIA;;sBAEA;;sBAEA;;sBAEA;;sBAKA;;sBAGA;;sBAqFA,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAwBhC,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAmChC,YAAY;uBAAC,OAAO;;sBACpB,YAAY;uBAAC,OAAO;;sBAapB,YAAY;uBAAC,MAAM;;sBAcnB,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;MCxTxB,eAAe,CAAA;AAC1B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,eAAe;AACzB,YAAA,SAAS,EAAE,CAAC,sBAAsB,EAAE,kBAAkB;SACvD;IACH;8GANW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAf,eAAe,EAAA,YAAA,EAAA,CAHT,2BAA2B,EAAE,kBAAkB,aADpD,YAAY,CAAA,EAAA,OAAA,EAAA,CAEZ,2BAA2B,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAEhD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAJd,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAIb,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,YAAY,EAAE,CAAC,2BAA2B,EAAE,kBAAkB,CAAC;AAC/D,oBAAA,OAAO,EAAE,CAAC,2BAA2B,EAAE,kBAAkB;AAC5D,iBAAA;;;ACZD;;AAEG;;;;"}