@ngrdt/utils 0.0.77 → 0.0.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/ngrdt-utils.mjs +1616 -4
- package/fesm2022/ngrdt-utils.mjs.map +1 -1
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngrdt-utils.mjs","sources":["../tmp-esm2022/ngrdt-utils.js"],"sourcesContent":["\"use strict\";\n/**\n * Generated bundle index. Do not edit.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./index\"), exports);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyZHQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9AbmdyZHQvdXRpbHMvc3JjL25ncmR0LXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBRUgsa0RBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"AAAA,YAAY;AACZ;AACA;AACA;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAChC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"ngrdt-utils.mjs","sources":["../tmp-esm2022/lib/types/encodings.js","../tmp-esm2022/lib/types/keyboard.js","../tmp-esm2022/lib/types/mime-types.js","../tmp-esm2022/lib/utils/array.js","../tmp-esm2022/lib/utils/css.js","../tmp-esm2022/lib/utils/date.js","../tmp-esm2022/lib/utils/html.js","../tmp-esm2022/lib/utils/string.js","../tmp-esm2022/lib/utils/date-format.js","../tmp-esm2022/lib/utils/dom.js","../tmp-esm2022/lib/utils/file.js","../tmp-esm2022/lib/utils/names.js","../tmp-esm2022/lib/utils/model.js","../tmp-esm2022/lib/utils/object.js","../tmp-esm2022/lib/utils/random.js","../tmp-esm2022/lib/utils/rxjs.js","../tmp-esm2022/lib/utils/signal-to-promise.js","../tmp-esm2022/ngrdt-utils.js"],"sourcesContent":["export var RdtEncoding;\n(function (RdtEncoding) {\n RdtEncoding[\"UTF_8\"] = \"utf-8\";\n RdtEncoding[\"IBM_866\"] = \"ibm866\";\n RdtEncoding[\"ISO_8859_2\"] = \"iso-8859-2\";\n RdtEncoding[\"ISO_8859_3\"] = \"iso-8859-3\";\n RdtEncoding[\"ISO_8859_4\"] = \"iso-8859-4\";\n RdtEncoding[\"ISO_8859_5\"] = \"iso-8859-5\";\n RdtEncoding[\"ISO_8859_6\"] = \"iso-8859-6\";\n RdtEncoding[\"ISO_8859_7\"] = \"iso-8859-7\";\n RdtEncoding[\"ISO_8859_8\"] = \"iso-8859-8\";\n RdtEncoding[\"ISO_8859_8_I\"] = \"iso-8859-8-i\";\n RdtEncoding[\"ISO_8859_10\"] = \"iso-8859-10\";\n RdtEncoding[\"ISO_8859_13\"] = \"iso-8859-13\";\n RdtEncoding[\"ISO_8859_14\"] = \"iso-8859-14\";\n RdtEncoding[\"ISO_8859_15\"] = \"iso-8859-15\";\n RdtEncoding[\"ISO_8859_16\"] = \"iso-8859-16\";\n RdtEncoding[\"KOI8_R\"] = \"koi8-r\";\n RdtEncoding[\"MACINTOSH\"] = \"macintosh\";\n RdtEncoding[\"WINDOWS_874\"] = \"windows-874\";\n RdtEncoding[\"WINDOWS_1250\"] = \"windows-1250\";\n RdtEncoding[\"WINDOWS_1251\"] = \"windows-1251\";\n RdtEncoding[\"WINDOWS_1252\"] = \"windows-1252\";\n RdtEncoding[\"WINDOWS_1253\"] = \"windows-1253\";\n RdtEncoding[\"WINDOWS_1254\"] = \"windows-1254\";\n RdtEncoding[\"WINDOWS_1255\"] = \"windows-1255\";\n RdtEncoding[\"WINDOWS_1256\"] = \"windows-1256\";\n RdtEncoding[\"WINDOWS_1257\"] = \"windows-1257\";\n RdtEncoding[\"WINDOWS_1258\"] = \"windows-1258\";\n RdtEncoding[\"X_MAC_CYRILLIC\"] = \"x-mac-cyrillic\";\n RdtEncoding[\"GBK\"] = \"gbk\";\n RdtEncoding[\"GB18030\"] = \"gb18030\";\n RdtEncoding[\"BIG5\"] = \"big5\";\n RdtEncoding[\"EUC_JP\"] = \"euc-jp\";\n RdtEncoding[\"ISO_2022_JP\"] = \"iso-2022-jp\";\n RdtEncoding[\"SHIFT_JIS\"] = \"shift-jis\";\n RdtEncoding[\"EUC_KR\"] = \"euc-kr\";\n RdtEncoding[\"HZ_GB_2312\"] = \"hz-gb-2312\";\n RdtEncoding[\"ISO_2022_CN\"] = \"iso-2022-cn\";\n RdtEncoding[\"ISO_2022_CN_EXT\"] = \"iso-2022-cn-ext\";\n RdtEncoding[\"ISO_2022_KR\"] = \"iso-2022-kr\";\n RdtEncoding[\"UTF_16\"] = \"utf-16\";\n RdtEncoding[\"X_USER_DEFINED\"] = \"x-user-defined\";\n})(RdtEncoding || (RdtEncoding = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3V0aWxzL3NyYy9saWIvdHlwZXMvZW5jb2RpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFdBMENYO0FBMUNELFdBQVksV0FBVztJQUNyQiw4QkFBZSxDQUFBO0lBQ2YsaUNBQWtCLENBQUE7SUFDbEIsd0NBQXlCLENBQUE7SUFDekIsd0NBQXlCLENBQUE7SUFDekIsd0NBQXlCLENBQUE7SUFDekIsd0NBQXlCLENBQUE7SUFDekIsd0NBQXlCLENBQUE7SUFDekIsd0NBQXlCLENBQUE7SUFDekIsd0NBQXlCLENBQUE7SUFDekIsNENBQTZCLENBQUE7SUFDN0IsMENBQTJCLENBQUE7SUFDM0IsMENBQTJCLENBQUE7SUFDM0IsMENBQTJCLENBQUE7SUFDM0IsMENBQTJCLENBQUE7SUFDM0IsMENBQTJCLENBQUE7SUFDM0IsZ0NBQWlCLENBQUE7SUFDakIsc0NBQXVCLENBQUE7SUFDdkIsMENBQTJCLENBQUE7SUFDM0IsNENBQTZCLENBQUE7SUFDN0IsNENBQTZCLENBQUE7SUFDN0IsNENBQTZCLENBQUE7SUFDN0IsNENBQTZCLENBQUE7SUFDN0IsNENBQTZCLENBQUE7SUFDN0IsNENBQTZCLENBQUE7SUFDN0IsNENBQTZCLENBQUE7SUFDN0IsNENBQTZCLENBQUE7SUFDN0IsNENBQTZCLENBQUE7SUFDN0IsZ0RBQWlDLENBQUE7SUFDakMsMEJBQVcsQ0FBQTtJQUNYLGtDQUFtQixDQUFBO0lBQ25CLDRCQUFhLENBQUE7SUFDYixnQ0FBaUIsQ0FBQTtJQUNqQiwwQ0FBMkIsQ0FBQTtJQUMzQixzQ0FBdUIsQ0FBQTtJQUN2QixnQ0FBaUIsQ0FBQTtJQUNqQix3Q0FBeUIsQ0FBQTtJQUN6QiwwQ0FBMkIsQ0FBQTtJQUMzQixrREFBbUMsQ0FBQTtJQUNuQywwQ0FBMkIsQ0FBQTtJQUMzQixnQ0FBaUIsQ0FBQTtJQUNqQixnREFBaUMsQ0FBQTtBQUNuQyxDQUFDLEVBMUNXLFdBQVcsS0FBWCxXQUFXLFFBMEN0QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFJkdEVuY29kaW5nIHtcclxuICBVVEZfOCA9ICd1dGYtOCcsXHJcbiAgSUJNXzg2NiA9ICdpYm04NjYnLFxyXG4gIElTT184ODU5XzIgPSAnaXNvLTg4NTktMicsXHJcbiAgSVNPXzg4NTlfMyA9ICdpc28tODg1OS0zJyxcclxuICBJU09fODg1OV80ID0gJ2lzby04ODU5LTQnLFxyXG4gIElTT184ODU5XzUgPSAnaXNvLTg4NTktNScsXHJcbiAgSVNPXzg4NTlfNiA9ICdpc28tODg1OS02JyxcclxuICBJU09fODg1OV83ID0gJ2lzby04ODU5LTcnLFxyXG4gIElTT184ODU5XzggPSAnaXNvLTg4NTktOCcsXHJcbiAgSVNPXzg4NTlfOF9JID0gJ2lzby04ODU5LTgtaScsXHJcbiAgSVNPXzg4NTlfMTAgPSAnaXNvLTg4NTktMTAnLFxyXG4gIElTT184ODU5XzEzID0gJ2lzby04ODU5LTEzJyxcclxuICBJU09fODg1OV8xNCA9ICdpc28tODg1OS0xNCcsXHJcbiAgSVNPXzg4NTlfMTUgPSAnaXNvLTg4NTktMTUnLFxyXG4gIElTT184ODU5XzE2ID0gJ2lzby04ODU5LTE2JyxcclxuICBLT0k4X1IgPSAna29pOC1yJyxcclxuICBNQUNJTlRPU0ggPSAnbWFjaW50b3NoJyxcclxuICBXSU5ET1dTXzg3NCA9ICd3aW5kb3dzLTg3NCcsXHJcbiAgV0lORE9XU18xMjUwID0gJ3dpbmRvd3MtMTI1MCcsXHJcbiAgV0lORE9XU18xMjUxID0gJ3dpbmRvd3MtMTI1MScsXHJcbiAgV0lORE9XU18xMjUyID0gJ3dpbmRvd3MtMTI1MicsXHJcbiAgV0lORE9XU18xMjUzID0gJ3dpbmRvd3MtMTI1MycsXHJcbiAgV0lORE9XU18xMjU0ID0gJ3dpbmRvd3MtMTI1NCcsXHJcbiAgV0lORE9XU18xMjU1ID0gJ3dpbmRvd3MtMTI1NScsXHJcbiAgV0lORE9XU18xMjU2ID0gJ3dpbmRvd3MtMTI1NicsXHJcbiAgV0lORE9XU18xMjU3ID0gJ3dpbmRvd3MtMTI1NycsXHJcbiAgV0lORE9XU18xMjU4ID0gJ3dpbmRvd3MtMTI1OCcsXHJcbiAgWF9NQUNfQ1lSSUxMSUMgPSAneC1tYWMtY3lyaWxsaWMnLFxyXG4gIEdCSyA9ICdnYmsnLFxyXG4gIEdCMTgwMzAgPSAnZ2IxODAzMCcsXHJcbiAgQklHNSA9ICdiaWc1JyxcclxuICBFVUNfSlAgPSAnZXVjLWpwJyxcclxuICBJU09fMjAyMl9KUCA9ICdpc28tMjAyMi1qcCcsXHJcbiAgU0hJRlRfSklTID0gJ3NoaWZ0LWppcycsXHJcbiAgRVVDX0tSID0gJ2V1Yy1rcicsXHJcbiAgSFpfR0JfMjMxMiA9ICdoei1nYi0yMzEyJyxcclxuICBJU09fMjAyMl9DTiA9ICdpc28tMjAyMi1jbicsXHJcbiAgSVNPXzIwMjJfQ05fRVhUID0gJ2lzby0yMDIyLWNuLWV4dCcsXHJcbiAgSVNPXzIwMjJfS1IgPSAnaXNvLTIwMjIta3InLFxyXG4gIFVURl8xNiA9ICd1dGYtMTYnLFxyXG4gIFhfVVNFUl9ERUZJTkVEID0gJ3gtdXNlci1kZWZpbmVkJyxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQWxsRW5jb2RpbmdBbGlhc2VzID1cclxuICB8ICd1bmljb2RlLTEtMS11dGYtOCdcclxuICB8ICd1bmljb2RlMTF1dGY4J1xyXG4gIHwgJ3VuaWNvZGUyMHV0ZjgnXHJcbiAgfCAndXRmLTgnXHJcbiAgfCAndXRmOCdcclxuICB8ICd4LXVuaWNvZGUyMHV0ZjgnXHJcbiAgfCAnODY2J1xyXG4gIHwgJ2NwODY2J1xyXG4gIHwgJ2NzaWJtODY2J1xyXG4gIHwgJ2libTg2NidcclxuICB8ICdjc2lzb2xhdGluMidcclxuICB8ICdpc28tODg1OS0yJ1xyXG4gIHwgJ2lzby1pci0xMDEnXHJcbiAgfCAnaXNvODg1OS0yJ1xyXG4gIHwgJ2lzbzg4NTkyJ1xyXG4gIHwgJ2lzb184ODU5LTInXHJcbiAgfCAnaXNvXzg4NTktMjoxOTg3J1xyXG4gIHwgJ2wyJ1xyXG4gIHwgJ2xhdGluMidcclxuICB8ICdjc2lzb2xhdGluMydcclxuICB8ICdpc28tODg1OS0zJ1xyXG4gIHwgJ2lzby1pci0xMDknXHJcbiAgfCAnaXNvODg1OS0zJ1xyXG4gIHwgJ2lzbzg4NTkzJ1xyXG4gIHwgJ2lzb184ODU5LTMnXHJcbiAgfCAnaXNvXzg4NTktMzoxOTg4J1xyXG4gIHwgJ2wzJ1xyXG4gIHwgJ2xhdGluMydcclxuICB8ICdjc2lzb2xhdGluNCdcclxuICB8ICdpc28tODg1OS00J1xyXG4gIHwgJ2lzby1pci0xMTAnXHJcbiAgfCAnaXNvODg1OS00J1xyXG4gIHwgJ2lzbzg4NTk0J1xyXG4gIHwgJ2lzb184ODU5LTQnXHJcbiAgfCAnaXNvXzg4NTktNDoxOTg4J1xyXG4gIHwgJ2w0J1xyXG4gIHwgJ2xhdGluNCdcclxuICB8ICdjc2lzb2xhdGluY3lyaWxsaWMnXHJcbiAgfCAnY3lyaWxsaWMnXHJcbiAgfCAnaXNvLTg4NTktNSdcclxuICB8ICdpc28taXItMTQ0J1xyXG4gIHwgJ2lzbzg4NTktNSdcclxuICB8ICdpc284ODU5NSdcclxuICB8ICdpc29fODg1OS01J1xyXG4gIHwgJ2lzb184ODU5LTU6MTk4OCdcclxuICB8ICdhcmFiaWMnXHJcbiAgfCAnYXNtby03MDgnXHJcbiAgfCAnY3Npc284ODU5NmUnXHJcbiAgfCAnY3Npc284ODU5NmknXHJcbiAgfCAnY3Npc29sYXRpbmFyYWJpYydcclxuICB8ICdlY21hLTExNCdcclxuICB8ICdpc28tODg1OS02J1xyXG4gIHwgJ2lzby04ODU5LTYtZSdcclxuICB8ICdpc28tODg1OS02LWknXHJcbiAgfCAnaXNvLWlyLTEyNydcclxuICB8ICdpc284ODU5LTYnXHJcbiAgfCAnaXNvODg1OTYnXHJcbiAgfCAnaXNvXzg4NTktNidcclxuICB8ICdpc29fODg1OS02OjE5ODcnXHJcbiAgfCAnY3Npc29sYXRpbmdyZWVrJ1xyXG4gIHwgJ2VjbWEtMTE4J1xyXG4gIHwgJ2Vsb3RfOTI4J1xyXG4gIHwgJ2dyZWVrJ1xyXG4gIHwgJ2dyZWVrOCdcclxuICB8ICdpc28tODg1OS03J1xyXG4gIHwgJ2lzby1pci0xMjYnXHJcbiAgfCAnaXNvODg1OS03J1xyXG4gIHwgJ2lzbzg4NTk3J1xyXG4gIHwgJ2lzb184ODU5LTcnXHJcbiAgfCAnaXNvXzg4NTktNzoxOTg3J1xyXG4gIHwgJ3N1bl9ldV9ncmVlaydcclxuICB8ICdjc2lzbzg4NTk4ZSdcclxuICB8ICdjc2lzb2xhdGluaGVicmV3J1xyXG4gIHwgJ2hlYnJldydcclxuICB8ICdpc28tODg1OS04J1xyXG4gIHwgJ2lzby04ODU5LTgtZSdcclxuICB8ICdpc28taXItMTM4J1xyXG4gIHwgJ2lzbzg4NTktOCdcclxuICB8ICdpc284ODU5OCdcclxuICB8ICdpc29fODg1OS04J1xyXG4gIHwgJ2lzb184ODU5LTg6MTk4OCdcclxuICB8ICd2aXN1YWwnXHJcbiAgfCAnY3Npc284ODU5OGknXHJcbiAgfCAnaXNvLTg4NTktOC1pJ1xyXG4gIHwgJ2xvZ2ljYWwnXHJcbiAgfCAnY3Npc29sYXRpbjYnXHJcbiAgfCAnaXNvLTg4NTktMTAnXHJcbiAgfCAnaXNvLWlyLTE1NydcclxuICB8ICdpc284ODU5LTEwJ1xyXG4gIHwgJ2lzbzg4NTkxMCdcclxuICB8ICdsNidcclxuICB8ICdsYXRpbjYnXHJcbiAgfCAnaXNvLTg4NTktMTMnXHJcbiAgfCAnaXNvODg1OS0xMydcclxuICB8ICdpc284ODU5MTMnXHJcbiAgfCAnaXNvLTg4NTktMTQnXHJcbiAgfCAnaXNvODg1OS0xNCdcclxuICB8ICdpc284ODU5MTQnXHJcbiAgfCAnY3Npc29sYXRpbjknXHJcbiAgfCAnaXNvLTg4NTktMTUnXHJcbiAgfCAnaXNvODg1OS0xNSdcclxuICB8ICdpc284ODU5MTUnXHJcbiAgfCAnaXNvXzg4NTktMTUnXHJcbiAgfCAnbDknXHJcbiAgfCAnaXNvLTg4NTktMTYnXHJcbiAgfCAnY3Nrb2k4cidcclxuICB8ICdrb2knXHJcbiAgfCAna29pOCdcclxuICB8ICdrb2k4LXInXHJcbiAgfCAna29pOF9yJ1xyXG4gIHwgJ2tvaTgtcnUnXHJcbiAgfCAna29pOC11J1xyXG4gIHwgJ2NzbWFjaW50b3NoJ1xyXG4gIHwgJ21hYydcclxuICB8ICdtYWNpbnRvc2gnXHJcbiAgfCAneC1tYWMtcm9tYW4nXHJcbiAgfCAnZG9zLTg3NCdcclxuICB8ICdpc28tODg1OS0xMSdcclxuICB8ICdpc284ODU5LTExJ1xyXG4gIHwgJ2lzbzg4NTkxMSdcclxuICB8ICd0aXMtNjIwJ1xyXG4gIHwgJ3dpbmRvd3MtODc0J1xyXG4gIHwgJ2NwMTI1MCdcclxuICB8ICd3aW5kb3dzLTEyNTAnXHJcbiAgfCAneC1jcDEyNTAnXHJcbiAgfCAnY3AxMjUxJ1xyXG4gIHwgJ3dpbmRvd3MtMTI1MSdcclxuICB8ICd4LWNwMTI1MSdcclxuICB8ICdhbnNpX3gzLjQtMTk2OCdcclxuICB8ICdhc2NpaSdcclxuICB8ICdjcDEyNTInXHJcbiAgfCAnY3A4MTknXHJcbiAgfCAnY3Npc29sYXRpbjEnXHJcbiAgfCAnaWJtODE5J1xyXG4gIHwgJ2lzby04ODU5LTEnXHJcbiAgfCAnaXNvLWlyLTEwMCdcclxuICB8ICdpc284ODU5LTEnXHJcbiAgfCAnaXNvODg1OTEnXHJcbiAgfCAnaXNvXzg4NTktMSdcclxuICB8ICdpc29fODg1OS0xOjE5ODcnXHJcbiAgfCAnbDEnXHJcbiAgfCAnbGF0aW4xJ1xyXG4gIHwgJ3VzLWFzY2lpJ1xyXG4gIHwgJ3dpbmRvd3MtMTI1MidcclxuICB8ICd4LWNwMTI1MidcclxuICB8ICdjcDEyNTMnXHJcbiAgfCAnd2luZG93cy0xMjUzJ1xyXG4gIHwgJ3gtY3AxMjUzJ1xyXG4gIHwgJ2NwMTI1NCdcclxuICB8ICdjc2lzb2xhdGluNSdcclxuICB8ICdpc28tODg1OS05J1xyXG4gIHwgJ2lzby1pci0xNDgnXHJcbiAgfCAnaXNvODg1OS05J1xyXG4gIHwgJ2lzbzg4NTk5J1xyXG4gIHwgJ2lzb184ODU5LTknXHJcbiAgfCAnaXNvXzg4NTktOToxOTg5J1xyXG4gIHwgJ2w1J1xyXG4gIHwgJ2xhdGluNSdcclxuICB8ICd3aW5kb3dzLTEyNTQnXHJcbiAgfCAneC1jcDEyNTQnXHJcbiAgfCAnY3AxMjU1J1xyXG4gIHwgJ3dpbmRvd3MtMTI1NSdcclxuICB8ICd4LWNwMTI1NSdcclxuICB8ICdjcDEyNTYnXHJcbiAgfCAnd2luZG93cy0xMjU2J1xyXG4gIHwgJ3gtY3AxMjU2J1xyXG4gIHwgJ2NwMTI1NydcclxuICB8ICd3aW5kb3dzLTEyNTcnXHJcbiAgfCAneC1jcDEyNTcnXHJcbiAgfCAnY3AxMjU4J1xyXG4gIHwgJ3dpbmRvd3MtMTI1OCdcclxuICB8ICd4LWNwMTI1OCdcclxuICB8ICd4LW1hYy1jeXJpbGxpYydcclxuICB8ICd4LW1hYy11a3JhaW5pYW4nXHJcbiAgfCAnY2hpbmVzZSdcclxuICB8ICdjc2diMjMxMidcclxuICB8ICdjc2lzbzU4Z2IyMzEyODAnXHJcbiAgfCAnZ2IyMzEyJ1xyXG4gIHwgJ2diXzIzMTInXHJcbiAgfCAnZ2JfMjMxMi04MCdcclxuICB8ICdnYmsnXHJcbiAgfCAnaXNvLWlyLTU4J1xyXG4gIHwgJ3gtZ2JrJ1xyXG4gIHwgJ2diMTgwMzAnXHJcbiAgfCAnYmlnNSdcclxuICB8ICdiaWc1LWhrc2NzJ1xyXG4gIHwgJ2NuLWJpZzUnXHJcbiAgfCAnY3NiaWc1J1xyXG4gIHwgJ3gteC1iaWc1J1xyXG4gIHwgJ2NzZXVjcGtkZm10amFwYW5lc2UnXHJcbiAgfCAnZXVjLWpwJ1xyXG4gIHwgJ3gtZXVjLWpwJ1xyXG4gIHwgJ2NzaXNvMjAyMmpwJ1xyXG4gIHwgJ2lzby0yMDIyLWpwJ1xyXG4gIHwgJ2Nzc2hpZnRqaXMnXHJcbiAgfCAnbXM5MzInXHJcbiAgfCAnbXNfa2FuamknXHJcbiAgfCAnc2hpZnQtamlzJ1xyXG4gIHwgJ3NoaWZ0X2ppcydcclxuICB8ICdzamlzJ1xyXG4gIHwgJ3dpbmRvd3MtMzFqJ1xyXG4gIHwgJ3gtc2ppcydcclxuICB8ICdjc2V1Y2tyJ1xyXG4gIHwgJ2Nza3NjNTYwMTE5ODcnXHJcbiAgfCAnZXVjLWtyJ1xyXG4gIHwgJ2lzby1pci0xNDknXHJcbiAgfCAna29yZWFuJ1xyXG4gIHwgJ2tzX2NfNTYwMS0xOTg3J1xyXG4gIHwgJ2tzX2NfNTYwMS0xOTg5J1xyXG4gIHwgJ2tzYzU2MDEnXHJcbiAgfCAna3NjXzU2MDEnXHJcbiAgfCAnd2luZG93cy05NDknXHJcbiAgfCAnY3Npc28yMDIya3InXHJcbiAgfCAnaHotZ2ItMjMxMidcclxuICB8ICdpc28tMjAyMi1jbidcclxuICB8ICdpc28tMjAyMi1jbi1leHQnXHJcbiAgfCAnaXNvLTIwMjIta3InXHJcbiAgfCAncmVwbGFjZW1lbnQnXHJcbiAgfCAndW5pY29kZWZmZmUnXHJcbiAgfCAndXRmLTE2YmUnXHJcbiAgfCAnY3N1bmljb2RlJ1xyXG4gIHwgJ2lzby0xMDY0Ni11Y3MtMidcclxuICB8ICd1Y3MtMidcclxuICB8ICd1bmljb2RlJ1xyXG4gIHwgJ3VuaWNvZGVmZWZmJ1xyXG4gIHwgJ3V0Zi0xNidcclxuICB8ICd1dGYtMTZsZSdcclxuICB8ICd4LXVzZXItZGVmaW5lZCc7XHJcbiJdfQ==","export const ARROW = {\n UP: 'ArrowUp',\n DOWN: 'ArrowDown',\n LEFT: 'ArrowLeft',\n RIGHT: 'ArrowRight',\n};\nexport const KB_KEY = {\n SPACEBAR: ' ',\n ENTER: 'Enter',\n ESCAPE: 'Escape',\n HOME: 'Home',\n END: 'End',\n TAB: 'Tab',\n ARROW: ARROW,\n};\nexport const KB_CODE = {\n ...KB_KEY,\n SPACEBAR: 'Space',\n};\nconst ALPHABET_KEYCODES = Array.from(Array(26)).map((e, i) => i + 65);\nexport const ALPHABET_KB_KEYS = ALPHABET_KEYCODES.map(x => String.fromCharCode(x));\nexport const KB_ALPHABET_CODES = ALPHABET_KB_KEYS.map(key => `Key${key.toUpperCase()}`);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvdXRpbHMvc3JjL2xpYi90eXBlcy9rZXlib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDbkIsRUFBRSxFQUFFLFNBQVM7SUFDYixJQUFJLEVBQUUsV0FBVztJQUNqQixJQUFJLEVBQUUsV0FBVztJQUNqQixLQUFLLEVBQUUsWUFBWTtDQUNwQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHO0lBQ3BCLFFBQVEsRUFBRSxHQUFHO0lBQ2IsS0FBSyxFQUFFLE9BQU87SUFDZCxNQUFNLEVBQUUsUUFBUTtJQUNoQixJQUFJLEVBQUUsTUFBTTtJQUNaLEdBQUcsRUFBRSxLQUFLO0lBQ1YsR0FBRyxFQUFFLEtBQUs7SUFDVixLQUFLLEVBQUUsS0FBSztDQUNiLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUc7SUFDckIsR0FBRyxNQUFNO0lBQ1QsUUFBUSxFQUFFLE9BQU87Q0FDbEIsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDdEUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3hELE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQ3ZCLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQ25ELEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBUlJPVyA9IHtcclxuICBVUDogJ0Fycm93VXAnLFxyXG4gIERPV046ICdBcnJvd0Rvd24nLFxyXG4gIExFRlQ6ICdBcnJvd0xlZnQnLFxyXG4gIFJJR0hUOiAnQXJyb3dSaWdodCcsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgS0JfS0VZID0ge1xyXG4gIFNQQUNFQkFSOiAnICcsXHJcbiAgRU5URVI6ICdFbnRlcicsXHJcbiAgRVNDQVBFOiAnRXNjYXBlJyxcclxuICBIT01FOiAnSG9tZScsXHJcbiAgRU5EOiAnRW5kJyxcclxuICBUQUI6ICdUYWInLFxyXG4gIEFSUk9XOiBBUlJPVyxcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBLQl9DT0RFID0ge1xyXG4gIC4uLktCX0tFWSxcclxuICBTUEFDRUJBUjogJ1NwYWNlJyxcclxufTtcclxuXHJcbmNvbnN0IEFMUEhBQkVUX0tFWUNPREVTID0gQXJyYXkuZnJvbShBcnJheSgyNikpLm1hcCgoZSwgaSkgPT4gaSArIDY1KTtcclxuZXhwb3J0IGNvbnN0IEFMUEhBQkVUX0tCX0tFWVMgPSBBTFBIQUJFVF9LRVlDT0RFUy5tYXAoeCA9PlxyXG4gIFN0cmluZy5mcm9tQ2hhckNvZGUoeClcclxuKTtcclxuZXhwb3J0IGNvbnN0IEtCX0FMUEhBQkVUX0NPREVTID0gQUxQSEFCRVRfS0JfS0VZUy5tYXAoXHJcbiAga2V5ID0+IGBLZXkke2tleS50b1VwcGVyQ2FzZSgpfWBcclxuKTtcclxuIl19","export var RdtMimeType;\n(function (RdtMimeType) {\n RdtMimeType[\"DOCX\"] = \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\";\n RdtMimeType[\"XLSX\"] = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\n RdtMimeType[\"PDF\"] = \"application/pdf\";\n RdtMimeType[\"TXT\"] = \"text/plain\";\n RdtMimeType[\"CSV\"] = \"text/csv\";\n RdtMimeType[\"ZIP\"] = \"application/zip\";\n RdtMimeType[\"JPG\"] = \"image/jpeg\";\n RdtMimeType[\"PNG\"] = \"image/png\";\n RdtMimeType[\"GIF\"] = \"image/gif\";\n RdtMimeType[\"SVG\"] = \"image/svg+xml\";\n RdtMimeType[\"HTML\"] = \"text/html\";\n RdtMimeType[\"XML\"] = \"application/xml\";\n RdtMimeType[\"JSON\"] = \"application/json\";\n RdtMimeType[\"MP3\"] = \"audio/mpeg\";\n RdtMimeType[\"MP4\"] = \"video/mp4\";\n RdtMimeType[\"OGG\"] = \"audio/ogg\";\n RdtMimeType[\"WEBM\"] = \"video/webm\";\n RdtMimeType[\"WAV\"] = \"audio/wav\";\n RdtMimeType[\"AVI\"] = \"video/x-msvideo\";\n RdtMimeType[\"MPEG\"] = \"video/mpeg\";\n RdtMimeType[\"WEBP\"] = \"image/webp\";\n RdtMimeType[\"ICO\"] = \"image/x-icon\";\n RdtMimeType[\"TTF\"] = \"font/ttf\";\n RdtMimeType[\"WOFF\"] = \"font/woff\";\n RdtMimeType[\"WOFF2\"] = \"font/woff2\";\n RdtMimeType[\"EOT\"] = \"application/vnd.ms-fontobject\";\n RdtMimeType[\"OTF\"] = \"font/otf\";\n RdtMimeType[\"PPTX\"] = \"application/vnd.openxmlformats-officedocument.presentationml.presentation\";\n RdtMimeType[\"PPT\"] = \"application/vnd.ms-powerpoint\";\n RdtMimeType[\"XLS\"] = \"application/vnd.ms-excel\";\n RdtMimeType[\"DOC\"] = \"application/msword\";\n RdtMimeType[\"ODT\"] = \"application/vnd.oasis.opendocument.text\";\n RdtMimeType[\"ODS\"] = \"application/vnd.oasis.opendocument.spreadsheet\";\n RdtMimeType[\"ODP\"] = \"application/vnd.oasis.opendocument.presentation\";\n RdtMimeType[\"ODF\"] = \"application/vnd.oasis.opendocument.formula\";\n RdtMimeType[\"RAR\"] = \"application/vnd.rar\";\n RdtMimeType[\"TAR\"] = \"application/x-tar\";\n RdtMimeType[\"GZIP\"] = \"application/gzip\";\n RdtMimeType[\"BZIP2\"] = \"application/x-bzip2\";\n RdtMimeType[\"XZ\"] = \"application/x-xz\";\n RdtMimeType[\"SEVENZ\"] = \"application/x-7z-compressed\";\n RdtMimeType[\"RAR5\"] = \"application/x-rar-compressed\";\n RdtMimeType[\"WMA\"] = \"audio/x-ms-wma\";\n RdtMimeType[\"WMV\"] = \"video/x-ms-wmv\";\n RdtMimeType[\"FLV\"] = \"video/x-flv\";\n RdtMimeType[\"OGV\"] = \"video/ogg\";\n RdtMimeType[\"BIN\"] = \"application/octet-stream\";\n RdtMimeType[\"UNKNOWN\"] = \"unknown\";\n})(RdtMimeType || (RdtMimeType = {}));\nexport var RdtCombinedMimeType;\n(function (RdtCombinedMimeType) {\n RdtCombinedMimeType[\"IMAGE\"] = \"image/*\";\n RdtCombinedMimeType[\"AUDIO\"] = \"audio/*\";\n RdtCombinedMimeType[\"VIDEO\"] = \"video/*\";\n RdtCombinedMimeType[\"FONT\"] = \"font/*\";\n RdtCombinedMimeType[\"DOCUMENT\"] = \"application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.oasis.opendocument.text,application/pdf,text/plain,text/csv\";\n RdtCombinedMimeType[\"SPREADSHEET\"] = \"application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.oasis.opendocument.spreadsheet\";\n RdtCombinedMimeType[\"PRESENTATION\"] = \"application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation,application/vnd.oasis.opendocument.presentation\";\n RdtCombinedMimeType[\"ARCHIVE\"] = \"application/zip,application/vnd.rar,application/x-tar,application/gzip,application/x-bzip2,application/x-xz,application/x-7z-compressed,application/x-rar-compressed\";\n})(RdtCombinedMimeType || (RdtCombinedMimeType = {}));\nexport const EXTENSION_BY_MIME_TYPE = {\n [RdtMimeType.DOCX]: 'docx',\n [RdtMimeType.XLSX]: 'xlsx',\n [RdtMimeType.PDF]: 'pdf',\n [RdtMimeType.TXT]: 'txt',\n [RdtMimeType.CSV]: 'csv',\n [RdtMimeType.ZIP]: 'zip',\n [RdtMimeType.JPG]: 'jpg',\n [RdtMimeType.PNG]: 'png',\n [RdtMimeType.GIF]: 'gif',\n [RdtMimeType.SVG]: 'svg',\n [RdtMimeType.HTML]: 'html',\n [RdtMimeType.XML]: 'xml',\n [RdtMimeType.JSON]: 'json',\n [RdtMimeType.MP3]: 'mp3',\n [RdtMimeType.MP4]: 'mp4',\n [RdtMimeType.OGG]: 'ogg',\n [RdtMimeType.WEBM]: 'webm',\n [RdtMimeType.WAV]: 'wav',\n [RdtMimeType.AVI]: 'avi',\n [RdtMimeType.MPEG]: 'mpeg',\n [RdtMimeType.WEBP]: 'webp',\n [RdtMimeType.ICO]: 'ico',\n [RdtMimeType.TTF]: 'ttf',\n [RdtMimeType.WOFF]: 'woff',\n [RdtMimeType.WOFF2]: 'woff2',\n [RdtMimeType.EOT]: 'eot',\n [RdtMimeType.OTF]: 'otf',\n [RdtMimeType.PPTX]: 'pptx',\n [RdtMimeType.PPT]: 'ppt',\n [RdtMimeType.XLS]: 'xls',\n [RdtMimeType.DOC]: 'doc',\n [RdtMimeType.ODT]: 'odt',\n [RdtMimeType.ODS]: 'ods',\n [RdtMimeType.ODP]: 'odp',\n [RdtMimeType.ODF]: 'odf',\n [RdtMimeType.RAR]: 'rar',\n [RdtMimeType.TAR]: 'tar',\n [RdtMimeType.GZIP]: 'gz',\n [RdtMimeType.BZIP2]: 'bz2',\n [RdtMimeType.XZ]: 'xz',\n [RdtMimeType.SEVENZ]: '7z',\n [RdtMimeType.RAR5]: 'rar',\n [RdtMimeType.WMA]: 'wma',\n [RdtMimeType.WMV]: 'wmv',\n [RdtMimeType.FLV]: 'flv',\n [RdtMimeType.OGV]: 'ogv',\n [RdtMimeType.BIN]: 'bin',\n [RdtMimeType.UNKNOWN]: 'unknown',\n};\nexport const MIME_TYPE_BY_EXTENSION = {};\nfor (const [key, value] of Object.entries(EXTENSION_BY_MIME_TYPE)) {\n MIME_TYPE_BY_EXTENSION[value] = key;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWltZS10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC91dGlscy9zcmMvbGliL3R5cGVzL21pbWUtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksV0FpRFg7QUFqREQsV0FBWSxXQUFXO0lBQ3JCLCtGQUFnRixDQUFBO0lBQ2hGLHlGQUEwRSxDQUFBO0lBQzFFLHNDQUF1QixDQUFBO0lBQ3ZCLGlDQUFrQixDQUFBO0lBQ2xCLCtCQUFnQixDQUFBO0lBQ2hCLHNDQUF1QixDQUFBO0lBQ3ZCLGlDQUFrQixDQUFBO0lBQ2xCLGdDQUFpQixDQUFBO0lBQ2pCLGdDQUFpQixDQUFBO0lBQ2pCLG9DQUFxQixDQUFBO0lBQ3JCLGlDQUFrQixDQUFBO0lBQ2xCLHNDQUF1QixDQUFBO0lBQ3ZCLHdDQUF5QixDQUFBO0lBQ3pCLGlDQUFrQixDQUFBO0lBQ2xCLGdDQUFpQixDQUFBO0lBQ2pCLGdDQUFpQixDQUFBO0lBQ2pCLGtDQUFtQixDQUFBO0lBQ25CLGdDQUFpQixDQUFBO0lBQ2pCLHNDQUF1QixDQUFBO0lBQ3ZCLGtDQUFtQixDQUFBO0lBQ25CLGtDQUFtQixDQUFBO0lBQ25CLG1DQUFvQixDQUFBO0lBQ3BCLCtCQUFnQixDQUFBO0lBQ2hCLGlDQUFrQixDQUFBO0lBQ2xCLG1DQUFvQixDQUFBO0lBQ3BCLG9EQUFxQyxDQUFBO0lBQ3JDLCtCQUFnQixDQUFBO0lBQ2hCLGlHQUFrRixDQUFBO0lBQ2xGLG9EQUFxQyxDQUFBO0lBQ3JDLCtDQUFnQyxDQUFBO0lBQ2hDLHlDQUEwQixDQUFBO0lBQzFCLDhEQUErQyxDQUFBO0lBQy9DLHFFQUFzRCxDQUFBO0lBQ3RELHNFQUF1RCxDQUFBO0lBQ3ZELGlFQUFrRCxDQUFBO0lBQ2xELDBDQUEyQixDQUFBO0lBQzNCLHdDQUF5QixDQUFBO0lBQ3pCLHdDQUF5QixDQUFBO0lBQ3pCLDRDQUE2QixDQUFBO0lBQzdCLHNDQUF1QixDQUFBO0lBQ3ZCLHFEQUFzQyxDQUFBO0lBQ3RDLG9EQUFxQyxDQUFBO0lBQ3JDLHFDQUFzQixDQUFBO0lBQ3RCLHFDQUFzQixDQUFBO0lBQ3RCLGtDQUFtQixDQUFBO0lBQ25CLGdDQUFpQixDQUFBO0lBQ2pCLCtDQUFnQyxDQUFBO0lBQ2hDLGtDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFqRFcsV0FBVyxLQUFYLFdBQVcsUUFpRHRCO0FBRUQsTUFBTSxDQUFOLElBQVksbUJBU1g7QUFURCxXQUFZLG1CQUFtQjtJQUM3Qix3Q0FBaUIsQ0FBQTtJQUNqQix3Q0FBaUIsQ0FBQTtJQUNqQix3Q0FBaUIsQ0FBQTtJQUNqQixzQ0FBZSxDQUFBO0lBQ2YsME1BQStILENBQUE7SUFDL0gsZ0xBQXlFLENBQUE7SUFDekUsK0xBQTBFLENBQUE7SUFDMUUsdU1BQXlLLENBQUE7QUFDM0ssQ0FBQyxFQVRXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFTOUI7QUFFRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRztJQUNwQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNO0lBQzFCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU07SUFDMUIsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSztJQUN4QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQ3hCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDeEIsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSztJQUN4QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQ3hCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDeEIsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSztJQUN4QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQ3hCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU07SUFDMUIsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSztJQUN4QixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNO0lBQzFCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDeEIsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSztJQUN4QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQ3hCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU07SUFDMUIsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSztJQUN4QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQ3hCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU07SUFDMUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTTtJQUMxQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQ3hCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDeEIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTTtJQUMxQixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0lBQzVCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDeEIsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSztJQUN4QixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNO0lBQzFCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDeEIsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSztJQUN4QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQ3hCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDeEIsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSztJQUN4QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQ3hCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDeEIsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSztJQUN4QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQ3hCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUk7SUFDeEIsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSztJQUMxQixDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJO0lBQ3RCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUk7SUFDMUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSztJQUN6QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQ3hCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDeEIsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSztJQUN4QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQ3hCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDeEIsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUztDQUN4QixDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBRy9CLEVBQVMsQ0FBQztBQUVkLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQztJQUNsRSxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFrQixDQUFDO0FBQ3JELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBSZHRNaW1lVHlwZSB7XHJcbiAgRE9DWCA9ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcsXHJcbiAgWExTWCA9ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsXHJcbiAgUERGID0gJ2FwcGxpY2F0aW9uL3BkZicsXHJcbiAgVFhUID0gJ3RleHQvcGxhaW4nLFxyXG4gIENTViA9ICd0ZXh0L2NzdicsXHJcbiAgWklQID0gJ2FwcGxpY2F0aW9uL3ppcCcsXHJcbiAgSlBHID0gJ2ltYWdlL2pwZWcnLFxyXG4gIFBORyA9ICdpbWFnZS9wbmcnLFxyXG4gIEdJRiA9ICdpbWFnZS9naWYnLFxyXG4gIFNWRyA9ICdpbWFnZS9zdmcreG1sJyxcclxuICBIVE1MID0gJ3RleHQvaHRtbCcsXHJcbiAgWE1MID0gJ2FwcGxpY2F0aW9uL3htbCcsXHJcbiAgSlNPTiA9ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICBNUDMgPSAnYXVkaW8vbXBlZycsXHJcbiAgTVA0ID0gJ3ZpZGVvL21wNCcsXHJcbiAgT0dHID0gJ2F1ZGlvL29nZycsXHJcbiAgV0VCTSA9ICd2aWRlby93ZWJtJyxcclxuICBXQVYgPSAnYXVkaW8vd2F2JyxcclxuICBBVkkgPSAndmlkZW8veC1tc3ZpZGVvJyxcclxuICBNUEVHID0gJ3ZpZGVvL21wZWcnLFxyXG4gIFdFQlAgPSAnaW1hZ2Uvd2VicCcsXHJcbiAgSUNPID0gJ2ltYWdlL3gtaWNvbicsXHJcbiAgVFRGID0gJ2ZvbnQvdHRmJyxcclxuICBXT0ZGID0gJ2ZvbnQvd29mZicsXHJcbiAgV09GRjIgPSAnZm9udC93b2ZmMicsXHJcbiAgRU9UID0gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0JyxcclxuICBPVEYgPSAnZm9udC9vdGYnLFxyXG4gIFBQVFggPSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbicsXHJcbiAgUFBUID0gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JyxcclxuICBYTFMgPSAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJyxcclxuICBET0MgPSAnYXBwbGljYXRpb24vbXN3b3JkJyxcclxuICBPRFQgPSAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0JyxcclxuICBPRFMgPSAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldCcsXHJcbiAgT0RQID0gJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uJyxcclxuICBPREYgPSAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5mb3JtdWxhJyxcclxuICBSQVIgPSAnYXBwbGljYXRpb24vdm5kLnJhcicsXHJcbiAgVEFSID0gJ2FwcGxpY2F0aW9uL3gtdGFyJyxcclxuICBHWklQID0gJ2FwcGxpY2F0aW9uL2d6aXAnLFxyXG4gIEJaSVAyID0gJ2FwcGxpY2F0aW9uL3gtYnppcDInLFxyXG4gIFhaID0gJ2FwcGxpY2F0aW9uL3gteHonLFxyXG4gIFNFVkVOWiA9ICdhcHBsaWNhdGlvbi94LTd6LWNvbXByZXNzZWQnLFxyXG4gIFJBUjUgPSAnYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZCcsXHJcbiAgV01BID0gJ2F1ZGlvL3gtbXMtd21hJyxcclxuICBXTVYgPSAndmlkZW8veC1tcy13bXYnLFxyXG4gIEZMViA9ICd2aWRlby94LWZsdicsXHJcbiAgT0dWID0gJ3ZpZGVvL29nZycsXHJcbiAgQklOID0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsXHJcbiAgVU5LTk9XTiA9ICd1bmtub3duJyxcclxufVxyXG5cclxuZXhwb3J0IGVudW0gUmR0Q29tYmluZWRNaW1lVHlwZSB7XHJcbiAgSU1BR0UgPSAnaW1hZ2UvKicsXHJcbiAgQVVESU8gPSAnYXVkaW8vKicsXHJcbiAgVklERU8gPSAndmlkZW8vKicsXHJcbiAgRk9OVCA9ICdmb250LyonLFxyXG4gIERPQ1VNRU5UID0gYCR7UmR0TWltZVR5cGUuRE9DfSwke1JkdE1pbWVUeXBlLkRPQ1h9LCR7UmR0TWltZVR5cGUuT0RUfSwke1JkdE1pbWVUeXBlLlBERn0sJHtSZHRNaW1lVHlwZS5UWFR9LCR7UmR0TWltZVR5cGUuQ1NWfWAsXHJcbiAgU1BSRUFEU0hFRVQgPSBgJHtSZHRNaW1lVHlwZS5YTFN9LCR7UmR0TWltZVR5cGUuWExTWH0sJHtSZHRNaW1lVHlwZS5PRFN9YCxcclxuICBQUkVTRU5UQVRJT04gPSBgJHtSZHRNaW1lVHlwZS5QUFR9LCR7UmR0TWltZVR5cGUuUFBUWH0sJHtSZHRNaW1lVHlwZS5PRFB9YCxcclxuICBBUkNISVZFID0gYCR7UmR0TWltZVR5cGUuWklQfSwke1JkdE1pbWVUeXBlLlJBUn0sJHtSZHRNaW1lVHlwZS5UQVJ9LCR7UmR0TWltZVR5cGUuR1pJUH0sJHtSZHRNaW1lVHlwZS5CWklQMn0sJHtSZHRNaW1lVHlwZS5YWn0sJHtSZHRNaW1lVHlwZS5TRVZFTlp9LCR7UmR0TWltZVR5cGUuUkFSNX1gLFxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgRVhURU5TSU9OX0JZX01JTUVfVFlQRSA9IHtcclxuICBbUmR0TWltZVR5cGUuRE9DWF06ICdkb2N4JyxcclxuICBbUmR0TWltZVR5cGUuWExTWF06ICd4bHN4JyxcclxuICBbUmR0TWltZVR5cGUuUERGXTogJ3BkZicsXHJcbiAgW1JkdE1pbWVUeXBlLlRYVF06ICd0eHQnLFxyXG4gIFtSZHRNaW1lVHlwZS5DU1ZdOiAnY3N2JyxcclxuICBbUmR0TWltZVR5cGUuWklQXTogJ3ppcCcsXHJcbiAgW1JkdE1pbWVUeXBlLkpQR106ICdqcGcnLFxyXG4gIFtSZHRNaW1lVHlwZS5QTkddOiAncG5nJyxcclxuICBbUmR0TWltZVR5cGUuR0lGXTogJ2dpZicsXHJcbiAgW1JkdE1pbWVUeXBlLlNWR106ICdzdmcnLFxyXG4gIFtSZHRNaW1lVHlwZS5IVE1MXTogJ2h0bWwnLFxyXG4gIFtSZHRNaW1lVHlwZS5YTUxdOiAneG1sJyxcclxuICBbUmR0TWltZVR5cGUuSlNPTl06ICdqc29uJyxcclxuICBbUmR0TWltZVR5cGUuTVAzXTogJ21wMycsXHJcbiAgW1JkdE1pbWVUeXBlLk1QNF06ICdtcDQnLFxyXG4gIFtSZHRNaW1lVHlwZS5PR0ddOiAnb2dnJyxcclxuICBbUmR0TWltZVR5cGUuV0VCTV06ICd3ZWJtJyxcclxuICBbUmR0TWltZVR5cGUuV0FWXTogJ3dhdicsXHJcbiAgW1JkdE1pbWVUeXBlLkFWSV06ICdhdmknLFxyXG4gIFtSZHRNaW1lVHlwZS5NUEVHXTogJ21wZWcnLFxyXG4gIFtSZHRNaW1lVHlwZS5XRUJQXTogJ3dlYnAnLFxyXG4gIFtSZHRNaW1lVHlwZS5JQ09dOiAnaWNvJyxcclxuICBbUmR0TWltZVR5cGUuVFRGXTogJ3R0ZicsXHJcbiAgW1JkdE1pbWVUeXBlLldPRkZdOiAnd29mZicsXHJcbiAgW1JkdE1pbWVUeXBlLldPRkYyXTogJ3dvZmYyJyxcclxuICBbUmR0TWltZVR5cGUuRU9UXTogJ2VvdCcsXHJcbiAgW1JkdE1pbWVUeXBlLk9URl06ICdvdGYnLFxyXG4gIFtSZHRNaW1lVHlwZS5QUFRYXTogJ3BwdHgnLFxyXG4gIFtSZHRNaW1lVHlwZS5QUFRdOiAncHB0JyxcclxuICBbUmR0TWltZVR5cGUuWExTXTogJ3hscycsXHJcbiAgW1JkdE1pbWVUeXBlLkRPQ106ICdkb2MnLFxyXG4gIFtSZHRNaW1lVHlwZS5PRFRdOiAnb2R0JyxcclxuICBbUmR0TWltZVR5cGUuT0RTXTogJ29kcycsXHJcbiAgW1JkdE1pbWVUeXBlLk9EUF06ICdvZHAnLFxyXG4gIFtSZHRNaW1lVHlwZS5PREZdOiAnb2RmJyxcclxuICBbUmR0TWltZVR5cGUuUkFSXTogJ3JhcicsXHJcbiAgW1JkdE1pbWVUeXBlLlRBUl06ICd0YXInLFxyXG4gIFtSZHRNaW1lVHlwZS5HWklQXTogJ2d6JyxcclxuICBbUmR0TWltZVR5cGUuQlpJUDJdOiAnYnoyJyxcclxuICBbUmR0TWltZVR5cGUuWFpdOiAneHonLFxyXG4gIFtSZHRNaW1lVHlwZS5TRVZFTlpdOiAnN3onLFxyXG4gIFtSZHRNaW1lVHlwZS5SQVI1XTogJ3JhcicsXHJcbiAgW1JkdE1pbWVUeXBlLldNQV06ICd3bWEnLFxyXG4gIFtSZHRNaW1lVHlwZS5XTVZdOiAnd212JyxcclxuICBbUmR0TWltZVR5cGUuRkxWXTogJ2ZsdicsXHJcbiAgW1JkdE1pbWVUeXBlLk9HVl06ICdvZ3YnLFxyXG4gIFtSZHRNaW1lVHlwZS5CSU5dOiAnYmluJyxcclxuICBbUmR0TWltZVR5cGUuVU5LTk9XTl06ICd1bmtub3duJyxcclxufSBhcyBjb25zdDtcclxuXHJcbmV4cG9ydCBjb25zdCBNSU1FX1RZUEVfQllfRVhURU5TSU9OOiBSZWNvcmQ8XHJcbiAgKHR5cGVvZiBFWFRFTlNJT05fQllfTUlNRV9UWVBFKVtrZXlvZiB0eXBlb2YgRVhURU5TSU9OX0JZX01JTUVfVFlQRV0sXHJcbiAgUmR0TWltZVR5cGVcclxuPiA9IHt9IGFzIGFueTtcclxuXHJcbmZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKEVYVEVOU0lPTl9CWV9NSU1FX1RZUEUpKSB7XHJcbiAgTUlNRV9UWVBFX0JZX0VYVEVOU0lPTlt2YWx1ZV0gPSBrZXkgYXMgUmR0TWltZVR5cGU7XHJcbn1cclxuIl19","export class RdtArrayUtils {\n static removeAt(array, index) {\n if (index < 0 || index > array.length) {\n throw new Error(`Out of bounds! Array length: ${array.length}, index: ${index}`);\n }\n return [...array.slice(0, index), ...array.slice(index + 1)];\n }\n static insertAt(array, index, item) {\n if (index < 0 || index > array.length) {\n throw new Error(`Out of bounds! Array length: ${array.length}, index: ${index}`);\n }\n return [...array.slice(0, index), item, ...array.slice(index)];\n }\n static isEqual(a, b) {\n if (!a || !b) {\n return !a === !b;\n }\n return a.length === b.length && a.every((el) => b.indexOf(el) > -1);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvdXRpbHMvc3JjL2xpYi91dGlscy9hcnJheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sYUFBYTtJQUN4QixNQUFNLENBQUMsUUFBUSxDQUFJLEtBQVUsRUFBRSxLQUFhO1FBQzFDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0NBQWdDLEtBQUssQ0FBQyxNQUFNLFlBQVksS0FBSyxFQUFFLENBQ2hFLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFJLEtBQVUsRUFBRSxLQUFhLEVBQUUsSUFBTztRQUNuRCxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QyxNQUFNLElBQUksS0FBSyxDQUNiLGdDQUFnQyxLQUFLLENBQUMsTUFBTSxZQUFZLEtBQUssRUFBRSxDQUNoRSxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBSSxDQUEwQixFQUFFLENBQTBCO1FBQ3RFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4uL3R5cGVzL3R5cGUnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJkdEFycmF5VXRpbHMge1xyXG4gIHN0YXRpYyByZW1vdmVBdDxUPihhcnJheTogVFtdLCBpbmRleDogbnVtYmVyKTogVFtdIHtcclxuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPiBhcnJheS5sZW5ndGgpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgIGBPdXQgb2YgYm91bmRzISBBcnJheSBsZW5ndGg6ICR7YXJyYXkubGVuZ3RofSwgaW5kZXg6ICR7aW5kZXh9YFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBbLi4uYXJyYXkuc2xpY2UoMCwgaW5kZXgpLCAuLi5hcnJheS5zbGljZShpbmRleCArIDEpXTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpbnNlcnRBdDxUPihhcnJheTogVFtdLCBpbmRleDogbnVtYmVyLCBpdGVtOiBUKTogVFtdIHtcclxuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPiBhcnJheS5sZW5ndGgpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgIGBPdXQgb2YgYm91bmRzISBBcnJheSBsZW5ndGg6ICR7YXJyYXkubGVuZ3RofSwgaW5kZXg6ICR7aW5kZXh9YFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBbLi4uYXJyYXkuc2xpY2UoMCwgaW5kZXgpLCBpdGVtLCAuLi5hcnJheS5zbGljZShpbmRleCldO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzRXF1YWw8VD4oYTogTnVsbGFibGU8UmVhZG9ubHk8VFtdPj4sIGI6IE51bGxhYmxlPFJlYWRvbmx5PFRbXT4+KSB7XHJcbiAgICBpZiAoIWEgfHwgIWIpIHtcclxuICAgICAgcmV0dXJuICFhID09PSAhYjtcclxuICAgIH1cclxuICAgIHJldHVybiBhLmxlbmd0aCA9PT0gYi5sZW5ndGggJiYgYS5ldmVyeSgoZWwpID0+IGIuaW5kZXhPZihlbCkgPiAtMSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","export class RdtCssUtils {\n static normalizeColor(color) {\n const normalized = color.trim();\n if (this.isHexColor(normalized)) {\n return RdtCssUtils.normalizeHex(normalized);\n }\n else if (this.isRgbColor(normalized)) {\n return RdtCssUtils.normalizeRgb(normalized);\n }\n else if (this.isRgbaColor(normalized)) {\n return RdtCssUtils.normalizeRgba(normalized);\n }\n return null;\n }\n static normalizeHex(color) {\n const matches = color.match(RdtCssUtils.hexRegex);\n if (!matches) {\n return null;\n }\n return `#${matches[2]}`;\n }\n static normalizeRgb(color) {\n const matches = color.match(RdtCssUtils.rgbRegex);\n if (!matches) {\n return null;\n }\n return `rgb(${matches[2]},${matches[3]},${matches[4]})`;\n }\n static normalizeRgba(color) {\n const matches = color.match(RdtCssUtils.rgbaRegex);\n if (!matches) {\n return null;\n }\n return `rgba(${matches[2]},${matches[3]},${matches[4]},${matches[5]})`;\n }\n static isRgbColor(color) {\n return RdtCssUtils.rgbRegex.test(color);\n }\n static isHexColor(color) {\n return RdtCssUtils.hexRegex.test(color);\n }\n static isRgbaColor(color) {\n return RdtCssUtils.rgbaRegex.test(color);\n }\n static rgbRegex = /^(rgb)?\\(?\\s*([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\W+([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\W+([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)?$/;\n static rgbaRegex = /^(rgba)?\\(?\\s*([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\W+([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\W+([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\W+((0(\\.\\d+)?)|(1(\\.0)?))\\s*\\)?$/;\n static hexRegex = /^(#?)([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3V0aWxzL3NyYy9saWIvdXRpbHMvY3NzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBYTtRQUNqQyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFaEMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDaEMsT0FBTyxXQUFXLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxPQUFPLFdBQVcsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sV0FBVyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFhO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFhO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzFELENBQUM7SUFFTyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQWE7UUFDeEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxRQUFRLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3pFLENBQUM7SUFFTyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQWE7UUFDckMsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFhO1FBQ3JDLE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVPLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBYTtRQUN0QyxPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTyxNQUFNLENBQUMsUUFBUSxHQUNyQixtSEFBbUgsQ0FBQztJQUM5RyxNQUFNLENBQUMsU0FBUyxHQUN0Qiw4SUFBOEksQ0FBQztJQUN6SSxNQUFNLENBQUMsUUFBUSxHQUFHLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFJkdENzc1V0aWxzIHtcclxuICBzdGF0aWMgbm9ybWFsaXplQ29sb3IoY29sb3I6IHN0cmluZykge1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IGNvbG9yLnRyaW0oKTtcclxuXHJcbiAgICBpZiAodGhpcy5pc0hleENvbG9yKG5vcm1hbGl6ZWQpKSB7XHJcbiAgICAgIHJldHVybiBSZHRDc3NVdGlscy5ub3JtYWxpemVIZXgobm9ybWFsaXplZCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNSZ2JDb2xvcihub3JtYWxpemVkKSkge1xyXG4gICAgICByZXR1cm4gUmR0Q3NzVXRpbHMubm9ybWFsaXplUmdiKG5vcm1hbGl6ZWQpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlzUmdiYUNvbG9yKG5vcm1hbGl6ZWQpKSB7XHJcbiAgICAgIHJldHVybiBSZHRDc3NVdGlscy5ub3JtYWxpemVSZ2JhKG5vcm1hbGl6ZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgbm9ybWFsaXplSGV4KGNvbG9yOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG1hdGNoZXMgPSBjb2xvci5tYXRjaChSZHRDc3NVdGlscy5oZXhSZWdleCk7XHJcbiAgICBpZiAoIW1hdGNoZXMpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGAjJHttYXRjaGVzWzJdfWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBub3JtYWxpemVSZ2IoY29sb3I6IHN0cmluZykge1xyXG4gICAgY29uc3QgbWF0Y2hlcyA9IGNvbG9yLm1hdGNoKFJkdENzc1V0aWxzLnJnYlJlZ2V4KTtcclxuICAgIGlmICghbWF0Y2hlcykge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYHJnYigke21hdGNoZXNbMl19LCR7bWF0Y2hlc1szXX0sJHttYXRjaGVzWzRdfSlgO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgbm9ybWFsaXplUmdiYShjb2xvcjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBtYXRjaGVzID0gY29sb3IubWF0Y2goUmR0Q3NzVXRpbHMucmdiYVJlZ2V4KTtcclxuICAgIGlmICghbWF0Y2hlcykge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYHJnYmEoJHttYXRjaGVzWzJdfSwke21hdGNoZXNbM119LCR7bWF0Y2hlc1s0XX0sJHttYXRjaGVzWzVdfSlgO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgaXNSZ2JDb2xvcihjb2xvcjogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gUmR0Q3NzVXRpbHMucmdiUmVnZXgudGVzdChjb2xvcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBpc0hleENvbG9yKGNvbG9yOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBSZHRDc3NVdGlscy5oZXhSZWdleC50ZXN0KGNvbG9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGlzUmdiYUNvbG9yKGNvbG9yOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBSZHRDc3NVdGlscy5yZ2JhUmVnZXgudGVzdChjb2xvcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZ2JSZWdleCA9XHJcbiAgICAvXihyZ2IpP1xcKD9cXHMqKFswMV0/XFxkXFxkP3wyWzAtNF1cXGR8MjVbMC01XSlcXFcrKFswMV0/XFxkXFxkP3wyWzAtNF1cXGR8MjVbMC01XSlcXFcrKFswMV0/XFxkXFxkP3wyWzAtNF1cXGR8MjVbMC01XSlcXHMqXFwpPyQvO1xyXG4gIHByaXZhdGUgc3RhdGljIHJnYmFSZWdleCA9XHJcbiAgICAvXihyZ2JhKT9cXCg/XFxzKihbMDFdP1xcZFxcZD98MlswLTRdXFxkfDI1WzAtNV0pXFxXKyhbMDFdP1xcZFxcZD98MlswLTRdXFxkfDI1WzAtNV0pXFxXKyhbMDFdP1xcZFxcZD98MlswLTRdXFxkfDI1WzAtNV0pXFxXKygoMChcXC5cXGQrKT8pfCgxKFxcLjApPykpXFxzKlxcKT8kLztcclxuICBwcml2YXRlIHN0YXRpYyBoZXhSZWdleCA9IC9eKCM/KShbQS1GYS1mMC05XXs2fXxbQS1GYS1mMC05XXszfSkkLztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUmR0SG9yaXpvbnRhbERpcmVjdGlvbiA9ICdsZWZ0JyB8ICdyaWdodCc7XHJcbmV4cG9ydCB0eXBlIFJkdFZlcnRpY2FsRGlyZWN0aW9uID0gJ3VwJyB8ICdkb3duJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmR0UmdiQ29sb3Ige1xyXG4gIHI6IG51bWJlcjtcclxuICBnOiBudW1iZXI7XHJcbiAgYjogbnVtYmVyO1xyXG59XHJcbiJdfQ==","export class RdtDateUtils {\n static MS = 1;\n static SECOND = 1000 * RdtDateUtils.MS;\n static MINUTE = 60 * RdtDateUtils.SECOND;\n static HOUR = 60 * RdtDateUtils.MINUTE;\n static DAY = 24 * RdtDateUtils.HOUR;\n /**\n * Returns number of days between two dates.\n * Returns zero in case dates are the same. Ignores time.\n */\n static getDays(a, b) {\n return (RdtDateUtils.getDayOffset(new Date(a)) -\n RdtDateUtils.getDayOffset(new Date(b)));\n }\n static checkDate(year, month, day) {\n const d = new Date(year, month - 1, day);\n return (d.getFullYear() === year &&\n d.getMonth() + 1 === month &&\n d.getDate() === day);\n }\n static isValidDate(value) {\n if (value == null) {\n return false;\n }\n if (value instanceof Date) {\n return !isNaN(value.getTime());\n }\n return !isNaN(new Date(value).getTime());\n }\n static startOfDay(input) {\n const date = new Date(input);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n static endOfDay(input) {\n const date = new Date(input);\n date.setHours(23, 59, 59);\n return date;\n }\n static startOfMonth(input) {\n const date = new Date(input);\n date.setHours(0, 0, 0, 0);\n date.setDate(1);\n return date;\n }\n static endOfMonth(input) {\n const date = new Date(input);\n date.setHours(23, 59, 59);\n date.setDate(0);\n return date;\n }\n static startOfYear(year) {\n return new Date(year, Month.January, 1);\n }\n static endOfYear(year) {\n return new Date(year, Month.December, 31);\n }\n static beginningOfNextMonth() {\n const today = new Date();\n if (today.getMonth() === 11) {\n return new Date(today.getFullYear() + 1, 0, 1);\n }\n else {\n return new Date(today.getFullYear(), today.getMonth() + 1, 1);\n }\n }\n static endOfNextMonth() {\n const today = new Date();\n if (today.getMonth() === 10) {\n const firstDayOfInTwoMonths = new Date(today.getFullYear() + 1, 0, 1);\n return this.minusOneDay(firstDayOfInTwoMonths);\n }\n else if (today.getMonth() === 11) {\n const firstDayOfInTwoMonths = new Date(today.getFullYear() + 1, 1, 1);\n return this.minusOneDay(firstDayOfInTwoMonths);\n }\n else {\n const firstDayOfInTwoMonths = new Date(today.getFullYear(), today.getMonth() + 2, 1);\n return this.minusOneDay(firstDayOfInTwoMonths);\n }\n }\n static beginningOfInThreeMonths() {\n const today = new Date();\n if (today.getMonth() === 10) {\n return new Date(today.getFullYear() + 1, 1, 1);\n }\n else if (today.getMonth() === 11) {\n return new Date(today.getFullYear() + 1, 2, 1);\n }\n else {\n return new Date(today.getFullYear(), today.getMonth() + 3, 1);\n }\n }\n static endOfInNextThreeMonths() {\n const today = new Date();\n if (today.getMonth() === 9) {\n const firstDayOfInFourMonths = new Date(today.getFullYear() + 1, 1, 1);\n return this.minusOneDay(firstDayOfInFourMonths);\n }\n else if (today.getMonth() === 10) {\n const firstDayOfInFourMonths = new Date(today.getFullYear() + 1, 2, 1);\n return this.minusOneDay(firstDayOfInFourMonths);\n }\n else if (today.getMonth() === 11) {\n const firstDayOfInFourMonths = new Date(today.getFullYear() + 1, 3, 1);\n return this.minusOneDay(firstDayOfInFourMonths);\n }\n else {\n const firstDayOfInFourMonths = new Date(today.getFullYear(), today.getMonth() + 4, 1);\n return this.minusOneDay(firstDayOfInFourMonths);\n }\n }\n static minusOneDay(date) {\n return new Date(date.getTime() - RdtDateUtils.DAY);\n }\n static toISOLocal(d) {\n const year = d.getFullYear();\n const month = `${d.getMonth() + 1}`.padStart(2, '0');\n const day = `${d.getDate()}`.padStart(2, '0');\n const hours = `${d.getHours()}`.padStart(2, '0');\n const minutes = `${d.getMinutes()}`.padStart(2, '0');\n const seconds = `${d.getSeconds()}`.padStart(2, '0');\n return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}`;\n }\n static formatDate(date) {\n if (date === null || date === undefined || date === '') {\n return '';\n }\n const d = date instanceof Date ? date : new Date(date);\n if (RdtDateUtils.isValidDate(d)) {\n const year = d.getFullYear();\n const month = `${d.getMonth() + 1}`.padStart(2, '0');\n const day = `${d.getDate()}`.padStart(2, '0');\n return `${day}.${month}.${year}`;\n }\n else {\n return '';\n }\n }\n static timeToDate(time) {\n const date = new Date(0);\n if (RdtDateUtils.hhMmSsMsRegex.test(time)) {\n const matches = time.match(RdtDateUtils.hhMmSsMsRegex);\n if (matches) {\n const h = parseInt(matches[1]);\n const m = parseInt(matches[2]);\n const s = parseInt(matches[3]);\n const ms = parseInt(matches[4]);\n date.setHours(h, m, s, ms);\n return date;\n }\n }\n else if (RdtDateUtils.hhMmSsRegex.test(time)) {\n const matches = time.match(RdtDateUtils.hhMmSsRegex);\n if (matches) {\n const h = parseInt(matches[1]);\n const m = parseInt(matches[2]);\n const s = parseInt(matches[3]);\n date.setHours(h, m, s);\n return date;\n }\n }\n else if (RdtDateUtils.hhMmRegex.test(time)) {\n const matches = time.match(RdtDateUtils.hhMmRegex);\n if (matches) {\n const h = parseInt(matches[1]);\n const m = parseInt(matches[2]);\n date.setHours(h, m);\n return date;\n }\n }\n return null;\n }\n static setTime(date, time) {\n const newDate = new Date(date);\n const timeDate = RdtDateUtils.timeToDate(time);\n if (timeDate) {\n newDate.setHours(timeDate.getHours(), timeDate.getMinutes(), timeDate.getSeconds(), timeDate.getMilliseconds());\n }\n return newDate;\n }\n static getTime(d, showSeconds = true) {\n const hh = d.getHours().toString().padStart(2, '0');\n const mm = d.getMinutes().toString().padStart(2, '0');\n if (showSeconds) {\n const ss = d.getSeconds().toString().padStart(2, '0');\n return `${hh}:${mm}:${ss}`;\n }\n else {\n return `${hh}:${mm}`;\n }\n }\n static parseToDate(input) {\n if (input instanceof Date) {\n return RdtDateUtils.isValidDate(input) ? input : null;\n }\n if (typeof input === 'string') {\n const date = new Date(input);\n if (RdtDateUtils.isValidDate(date)) {\n return date;\n }\n }\n return null;\n }\n static parse(input) {\n if (input instanceof Date) {\n return RdtDateUtils.isValidDate(input) ? input.getTime() : null;\n }\n if (typeof input === 'string') {\n const date = new Date(input);\n if (RdtDateUtils.isValidDate(date)) {\n return date.getTime();\n }\n }\n return null;\n }\n static isEqual(d1, d2) {\n if (d1 === d2) {\n return true;\n }\n if (!d1 || !d2) {\n return false;\n }\n return d1.getTime() === d2.getTime();\n }\n static isLeapYear(year) {\n return new Date(year, 1, 29).getDate() === 29;\n }\n static getDaysInYear(year) {\n return RdtDateUtils.isLeapYear(year) ? 366 : 365;\n }\n static hhMmRegex = /^\\s*([0-9]|0[0-9]|1[0-9]|2[0-3])\\s*\\W+\\s*([0-5]?[0-9])\\s*$/;\n static hhMmSsRegex = /^\\s*([0-9]|0[0-9]|1[0-9]|2[0-3])\\s*\\W+\\s*([0-5]?[0-9])\\s*\\W+\\s*([0-5]?\\d)\\s*$/;\n static hhMmSsMsRegex = /^\\s*([0-9]|0[0-9]|1[0-9]|2[0-3])\\s*\\W+\\s*([0-5]?[0-9])\\s*\\W+\\s*([0-5]?\\d)\\s*[\\W|\\s]\\s*(\\d{1,3})\\s*$/;\n static daysUpToMonth = [\n 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334,\n ];\n static daysUpToMonthLeapYear = [\n 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335,\n ];\n static getDayOffset(date) {\n const year = date.getFullYear() - 1;\n const month = date.getMonth() + 1, day = date.getDate();\n const numOfLeapsYear = Math.trunc(year / 4) - Math.trunc(year / 100) + Math.trunc(year / 400);\n if (RdtDateUtils.isLeapYear(year + 1)) {\n return (year * 365 +\n numOfLeapsYear +\n RdtDateUtils.daysUpToMonthLeapYear[month - 1] +\n day -\n 1);\n }\n else {\n return (year * 365 +\n numOfLeapsYear +\n RdtDateUtils.daysUpToMonth[month - 1] +\n day -\n 1);\n }\n }\n static doubleDigitYearToPast(year2) {\n // If current year is 2024 and input is 24 or less, then result is 2024\n // If input is 25 or greater, then result is 1925-1999\n const currentYear = RdtDateUtils.getCurrentYear();\n const current2 = currentYear % 100;\n if (year2 <= current2) {\n return year2 + currentYear - current2;\n }\n else {\n return year2 + currentYear - current2 - 100;\n }\n }\n static doubleDigitYearToFuture(year2) {\n // If current year is 2024 and input is 24 or less, then result is 2124\n // If input is 25 or greater, then result is 2025-2099\n const currentYear = RdtDateUtils.getCurrentYear();\n const current2 = currentYear % 100;\n if (year2 >= current2) {\n return year2 + currentYear - current2;\n }\n else {\n return year2 + currentYear - current2 + 100;\n }\n }\n static getCurrentYear() {\n return new Date().getFullYear();\n }\n static calculateAge(birthDateStr, referenceDateStr) {\n const birthDate = new Date(birthDateStr);\n const referenceDate = new Date(referenceDateStr);\n let age = referenceDate.getFullYear() - birthDate.getFullYear();\n const monthDifference = referenceDate.getMonth() - birthDate.getMonth();\n const dayDifference = referenceDate.getDate() - birthDate.getDate();\n if (monthDifference < 0 || (monthDifference === 0 && dayDifference < 0)) {\n age--;\n }\n return age;\n }\n}\nexport var Month;\n(function (Month) {\n Month[Month[\"January\"] = 0] = \"January\";\n Month[Month[\"February\"] = 1] = \"February\";\n Month[Month[\"March\"] = 2] = \"March\";\n Month[Month[\"April\"] = 3] = \"April\";\n Month[Month[\"May\"] = 4] = \"May\";\n Month[Month[\"June\"] = 5] = \"June\";\n Month[Month[\"July\"] = 6] = \"July\";\n Month[Month[\"August\"] = 7] = \"August\";\n Month[Month[\"September\"] = 8] = \"September\";\n Month[Month[\"October\"] = 9] = \"October\";\n Month[Month[\"November\"] = 10] = \"November\";\n Month[Month[\"December\"] = 11] = \"December\";\n})(Month || (Month = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC91dGlscy9zcmMvbGliL3V0aWxzL2RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFlBQVk7SUFDdkIsTUFBTSxDQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkIsTUFBTSxDQUFVLE1BQU0sR0FBRyxJQUFJLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQztJQUNoRCxNQUFNLENBQVUsTUFBTSxHQUFHLEVBQUUsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ2xELE1BQU0sQ0FBVSxJQUFJLEdBQUcsRUFBRSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDaEQsTUFBTSxDQUFVLEdBQUcsR0FBRyxFQUFFLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQztJQUU3Qzs7O09BR0c7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQXlCLEVBQUUsQ0FBeUI7UUFDakUsT0FBTyxDQUNMLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN2QyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBRSxHQUFXO1FBQ3ZELE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sQ0FDTCxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSTtZQUN4QixDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEtBQUs7WUFDMUIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEdBQUcsQ0FDcEIsQ0FBQztJQUNKLENBQUM7SUFFRCxN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QyxPQUFPLEVBQUUsQ0FBQztRQUNwRSxJQUFJLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEtBQUssQ0FBQyxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs7QUFFSCxNQUFNLENBQU4sSUFBWSxLQWFYO0FBYkQsV0FBWSxLQUFLO0lBQ2YsdUNBQVcsQ0FBQTtJQUNYLHlDQUFZLENBQUE7SUFDWixtQ0FBUyxDQUFBO0lBQ1QsbUNBQVMsQ0FBQTtJQUNULCtCQUFPLENBQUE7SUFDUCxpQ0FBUSxDQUFBO0lBQ1IsaUNBQVEsQ0FBQTtJQUNSLHFDQUFVLENBQUE7SUFDViwyQ0FBYSxDQUFBO0lBQ2IsdUNBQVcsQ0FBQTtJQUNYLDBDQUFhLENBQUE7SUFDYiwwQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQWJXLEtBQUssS0FBTCxLQUFLLFFBYWhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi90eXBlcy90eXBlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBSZHREYXRlVXRpbHMge1xyXG4gIHN0YXRpYyByZWFkb25seSBNUyA9IDE7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNFQ09ORCA9IDEwMDAgKiBSZHREYXRlVXRpbHMuTVM7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1JTlVURSA9IDYwICogUmR0RGF0ZVV0aWxzLlNFQ09ORDtcclxuICBzdGF0aWMgcmVhZG9ubHkgSE9VUiA9IDYwICogUmR0RGF0ZVV0aWxzLk1JTlVURTtcclxuICBzdGF0aWMgcmVhZG9ubHkgREFZID0gMjQgKiBSZHREYXRlVXRpbHMuSE9VUjtcclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBudW1iZXIgb2YgZGF5cyBiZXR3ZWVuIHR3byBkYXRlcy5cclxuICAgKiBSZXR1cm5zIHplcm8gaW4gY2FzZSBkYXRlcyBhcmUgdGhlIHNhbWUuIElnbm9yZXMgdGltZS5cclxuICAgKi9cclxuICBzdGF0aWMgZ2V0RGF5cyhhOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyLCBiOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBSZHREYXRlVXRpbHMuZ2V0RGF5T2Zmc2V0KG5ldyBEYXRlKGEpKSAtXHJcbiAgICAgIFJkdERhdGVVdGlscy5nZXREYXlPZmZzZXQobmV3IERhdGUoYikpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNoZWNrRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBkID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXkpO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgZC5nZXRGdWxsWWVhcigpID09PSB5ZWFyICYmXHJcbiAgICAgIGQuZ2V0TW9udGgoKSArIDEgPT09IG1vbnRoICYmXHJcbiAgICAgIGQuZ2V0RGF0ZSgpID09PSBkYXlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNWYWxpZERhdGUodmFsdWU6IGFueSk6IHZhbHVlIGlzIHN0cmluZyB8IG51bWJlciB8IERhdGUge1xyXG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICByZXR1cm4gIWlzTmFOKHZhbHVlLmdldFRpbWUoKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIWlzTmFOKG5ldyBEYXRlKHZhbHVlKS5nZXRUaW1lKCkpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHN0YXJ0T2ZEYXkoaW5wdXQ6IERhdGUgfCBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShpbnB1dCk7XHJcbiAgICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xyXG4gICAgcmV0dXJuIGRhdGU7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZW5kT2ZEYXkoaW5wdXQ6IERhdGUgfCBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShpbnB1dCk7XHJcbiAgICBkYXRlLnNldEhvdXJzKDIzLCA1OSwgNTkpO1xyXG4gICAgcmV0dXJuIGRhdGU7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc3RhcnRPZk1vbnRoKGlucHV0OiBEYXRlIHwgc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoaW5wdXQpO1xyXG4gICAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcclxuICAgIGRhdGUuc2V0RGF0ZSgxKTtcclxuICAgIHJldHVybiBkYXRlO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGVuZE9mTW9udGgoaW5wdXQ6IERhdGUgfCBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShpbnB1dCk7XHJcbiAgICBkYXRlLnNldEhvdXJzKDIzLCA1OSwgNTkpO1xyXG4gICAgZGF0ZS5zZXREYXRlKDApO1xyXG4gICAgcmV0dXJuIGRhdGU7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc3RhcnRPZlllYXIoeWVhcjogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoeWVhciwgTW9udGguSmFudWFyeSwgMSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZW5kT2ZZZWFyKHllYXI6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIE1vbnRoLkRlY2VtYmVyLCAzMSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYmVnaW5uaW5nT2ZOZXh0TW9udGgoKSB7XHJcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZiAodG9kYXkuZ2V0TW9udGgoKSA9PT0gMTEpIHtcclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKHRvZGF5LmdldEZ1bGxZZWFyKCkgKyAxLCAwLCAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh0b2RheS5nZXRGdWxsWWVhcigpLCB0b2RheS5nZXRNb250aCgpICsgMSwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZW5kT2ZOZXh0TW9udGgoKSB7XHJcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZiAodG9kYXkuZ2V0TW9udGgoKSA9PT0gMTApIHtcclxuICAgICAgY29uc3QgZmlyc3REYXlPZkluVHdvTW9udGhzID0gbmV3IERhdGUodG9kYXkuZ2V0RnVsbFllYXIoKSArIDEsIDAsIDEpO1xyXG4gICAgICByZXR1cm4gdGhpcy5taW51c09uZURheShmaXJzdERheU9mSW5Ud29Nb250aHMpO1xyXG4gICAgfSBlbHNlIGlmICh0b2RheS5nZXRNb250aCgpID09PSAxMSkge1xyXG4gICAgICBjb25zdCBmaXJzdERheU9mSW5Ud29Nb250aHMgPSBuZXcgRGF0ZSh0b2RheS5nZXRGdWxsWWVhcigpICsgMSwgMSwgMSk7XHJcbiAgICAgIHJldHVybiB0aGlzLm1pbnVzT25lRGF5KGZpcnN0RGF5T2ZJblR3b01vbnRocyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBmaXJzdERheU9mSW5Ud29Nb250aHMgPSBuZXcgRGF0ZShcclxuICAgICAgICB0b2RheS5nZXRGdWxsWWVhcigpLFxyXG4gICAgICAgIHRvZGF5LmdldE1vbnRoKCkgKyAyLFxyXG4gICAgICAgIDFcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIHRoaXMubWludXNPbmVEYXkoZmlyc3REYXlPZkluVHdvTW9udGhzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBiZWdpbm5pbmdPZkluVGhyZWVNb250aHMoKSB7XHJcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZiAodG9kYXkuZ2V0TW9udGgoKSA9PT0gMTApIHtcclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKHRvZGF5LmdldEZ1bGxZZWFyKCkgKyAxLCAxLCAxKTtcclxuICAgIH0gZWxzZSBpZiAodG9kYXkuZ2V0TW9udGgoKSA9PT0gMTEpIHtcclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKHRvZGF5LmdldEZ1bGxZZWFyKCkgKyAxLCAyLCAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh0b2RheS5nZXRGdWxsWWVhcigpLCB0b2RheS5nZXRNb250aCgpICsgMywgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZW5kT2ZJbk5leHRUaHJlZU1vbnRocygpIHtcclxuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICAgIGlmICh0b2RheS5nZXRNb250aCgpID09PSA5KSB7XHJcbiAgICAgIGNvbnN0IGZpcnN0RGF5T2ZJbkZvdXJNb250aHMgPSBuZXcgRGF0ZSh0b2RheS5nZXRGdWxsWWVhcigpICsgMSwgMSwgMSk7XHJcbiAgICAgIHJldHVybiB0aGlzLm1pbnVzT25lRGF5KGZpcnN0RGF5T2ZJbkZvdXJNb250aHMpO1xyXG4gICAgfSBlbHNlIGlmICh0b2RheS5nZXRNb250aCgpID09PSAxMCkge1xyXG4gICAgICBjb25zdCBmaXJzdERheU9mSW5Gb3VyTW9udGhzID0gbmV3IERhdGUodG9kYXkuZ2V0RnVsbFllYXIoKSArIDEsIDIsIDEpO1xyXG4gICAgICByZXR1cm4gdGhpcy5taW51c09uZURheShmaXJzdERheU9mSW5Gb3VyTW9udGhzKTtcclxuICAgIH0gZWxzZSBpZiAodG9kYXkuZ2V0TW9udGgoKSA9PT0gMTEpIHtcclxuICAgICAgY29uc3QgZmlyc3REYXlPZkluRm91ck1vbnRocyA9IG5ldyBEYXRlKHRvZGF5LmdldEZ1bGxZZWFyKCkgKyAxLCAzLCAxKTtcclxuICAgICAgcmV0dXJuIHRoaXMubWludXNPbmVEYXkoZmlyc3REYXlPZkluRm91ck1vbnRocyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBmaXJzdERheU9mSW5Gb3VyTW9udGhzID0gbmV3IERhdGUoXHJcbiAgICAgICAgdG9kYXkuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgICB0b2RheS5nZXRNb250aCgpICsgNCxcclxuICAgICAgICAxXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiB0aGlzLm1pbnVzT25lRGF5KGZpcnN0RGF5T2ZJbkZvdXJNb250aHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIG1pbnVzT25lRGF5KGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSAtIFJkdERhdGVVdGlscy5EQVkpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHRvSVNPTG9jYWwoZDogRGF0ZSkge1xyXG4gICAgY29uc3QgeWVhciA9IGQuZ2V0RnVsbFllYXIoKTtcclxuICAgIGNvbnN0IG1vbnRoID0gYCR7ZC5nZXRNb250aCgpICsgMX1gLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBjb25zdCBkYXkgPSBgJHtkLmdldERhdGUoKX1gLnBhZFN0YXJ0KDIsICcwJyk7XHJcblxyXG4gICAgY29uc3QgaG91cnMgPSBgJHtkLmdldEhvdXJzKCl9YC5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgY29uc3QgbWludXRlcyA9IGAke2QuZ2V0TWludXRlcygpfWAucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgIGNvbnN0IHNlY29uZHMgPSBgJHtkLmdldFNlY29uZHMoKX1gLnBhZFN0YXJ0KDIsICcwJyk7XHJcblxyXG4gICAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fVQke2hvdXJzfToke21pbnV0ZXN9OiR7c2Vjb25kc31gO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZvcm1hdERhdGUoZGF0ZTogYW55KSB7XHJcbiAgICBpZiAoZGF0ZSA9PT0gbnVsbCB8fCBkYXRlID09PSB1bmRlZmluZWQgfHwgZGF0ZSA9PT0gJycpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGQgPSBkYXRlIGluc3RhbmNlb2YgRGF0ZSA/IGRhdGUgOiBuZXcgRGF0ZShkYXRlKTtcclxuXHJcbiAgICBpZiAoUmR0RGF0ZVV0aWxzLmlzVmFsaWREYXRlKGQpKSB7XHJcbiAgICAgIGNvbnN0IHllYXIgPSBkLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gYCR7ZC5nZXRNb250aCgpICsgMX1gLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIGNvbnN0IGRheSA9IGAke2QuZ2V0RGF0ZSgpfWAucGFkU3RhcnQoMiwgJzAnKTtcclxuXHJcbiAgICAgIHJldHVybiBgJHtkYXl9LiR7bW9udGh9LiR7eWVhcn1gO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIHRpbWVUb0RhdGUodGltZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoMCk7XHJcbiAgICBpZiAoUmR0RGF0ZVV0aWxzLmhoTW1Tc01zUmVnZXgudGVzdCh0aW1lKSkge1xyXG4gICAgICBjb25zdCBtYXRjaGVzID0gdGltZS5tYXRjaChSZHREYXRlVXRpbHMuaGhNbVNzTXNSZWdleCk7XHJcbiAgICAgIGlmIChtYXRjaGVzKSB7XHJcbiAgICAgICAgY29uc3QgaCA9IHBhcnNlSW50KG1hdGNoZXNbMV0pO1xyXG4gICAgICAgIGNvbnN0IG0gPSBwYXJzZUludChtYXRjaGVzWzJdKTtcclxuICAgICAgICBjb25zdCBzID0gcGFyc2VJbnQobWF0Y2hlc1szXSk7XHJcbiAgICAgICAgY29uc3QgbXMgPSBwYXJzZUludChtYXRjaGVzWzRdKTtcclxuICAgICAgICBkYXRlLnNldEhvdXJzKGgsIG0sIHMsIG1zKTtcclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChSZHREYXRlVXRpbHMuaGhNbVNzUmVnZXgudGVzdCh0aW1lKSkge1xyXG4gICAgICBjb25zdCBtYXRjaGVzID0gdGltZS5tYXRjaChSZHREYXRlVXRpbHMuaGhNbVNzUmVnZXgpO1xyXG4gICAgICBpZiAobWF0Y2hlcykge1xyXG4gICAgICAgIGNvbnN0IGggPSBwYXJzZUludChtYXRjaGVzWzFdKTtcclxuICAgICAgICBjb25zdCBtID0gcGFyc2VJbnQobWF0Y2hlc1syXSk7XHJcbiAgICAgICAgY29uc3QgcyA9IHBhcnNlSW50KG1hdGNoZXNbM10pO1xyXG4gICAgICAgIGRhdGUuc2V0SG91cnMoaCwgbSwgcyk7XHJcbiAgICAgICAgcmV0dXJuIGRhdGU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoUmR0RGF0ZVV0aWxzLmhoTW1SZWdleC50ZXN0KHRpbWUpKSB7XHJcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSB0aW1lLm1hdGNoKFJkdERhdGVVdGlscy5oaE1tUmVnZXgpO1xyXG4gICAgICBpZiAobWF0Y2hlcykge1xyXG4gICAgICAgIGNvbnN0IGggPSBwYXJzZUludChtYXRjaGVzWzFdKTtcclxuICAgICAgICBjb25zdCBtID0gcGFyc2VJbnQobWF0Y2hlc1syXSk7XHJcbiAgICAgICAgZGF0ZS5zZXRIb3VycyhoLCBtKTtcclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc2V0VGltZShkYXRlOiBEYXRlLCB0aW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZShkYXRlKTtcclxuICAgIGNvbnN0IHRpbWVEYXRlID0gUmR0RGF0ZVV0aWxzLnRpbWVUb0RhdGUodGltZSk7XHJcbiAgICBpZiAodGltZURhdGUpIHtcclxuICAgICAgbmV3RGF0ZS5zZXRIb3VycyhcclxuICAgICAgICB0aW1lRGF0ZS5nZXRIb3VycygpLFxyXG4gICAgICAgIHRpbWVEYXRlLmdldE1pbnV0ZXMoKSxcclxuICAgICAgICB0aW1lRGF0ZS5nZXRTZWNvbmRzKCksXHJcbiAgICAgICAgdGltZURhdGUuZ2V0TWlsbGlzZWNvbmRzKClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXdEYXRlO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldFRpbWUoZDogRGF0ZSwgc2hvd1NlY29uZHMgPSB0cnVlKSB7XHJcbiAgICBjb25zdCBoaCA9IGQuZ2V0SG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBjb25zdCBtbSA9IGQuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcclxuXHJcbiAgICBpZiAoc2hvd1NlY29uZHMpIHtcclxuICAgICAgY29uc3Qgc3MgPSBkLmdldFNlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIHJldHVybiBgJHtoaH06JHttbX06JHtzc31gO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGAke2hofToke21tfWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcGFyc2VUb0RhdGUoaW5wdXQ6IE51bGxhYmxlPHN0cmluZyB8IERhdGU+KTogRGF0ZSB8IG51bGwge1xyXG4gICAgaWYgKGlucHV0IGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICByZXR1cm4gUmR0RGF0ZVV0aWxzLmlzVmFsaWREYXRlKGlucHV0KSA/IGlucHV0IDogbnVsbDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShpbnB1dCk7XHJcbiAgICAgIGlmIChSZHREYXRlVXRpbHMuaXNWYWxpZERhdGUoZGF0ZSkpIHtcclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcGFyc2UoaW5wdXQ6IE51bGxhYmxlPHN0cmluZyB8IERhdGU+KTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgIHJldHVybiBSZHREYXRlVXRpbHMuaXNWYWxpZERhdGUoaW5wdXQpID8gaW5wdXQuZ2V0VGltZSgpIDogbnVsbDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShpbnB1dCk7XHJcbiAgICAgIGlmIChSZHREYXRlVXRpbHMuaXNWYWxpZERhdGUoZGF0ZSkpIHtcclxuICAgICAgICByZXR1cm4gZGF0ZS5nZXRUaW1lKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzRXF1YWwoZDE6IERhdGUgfCBudWxsLCBkMjogRGF0ZSB8IG51bGwpIHtcclxuICAgIGlmIChkMSA9PT0gZDIpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoIWQxIHx8ICFkMikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZDEuZ2V0VGltZSgpID09PSBkMi5nZXRUaW1lKCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNMZWFwWWVhcih5ZWFyOiBudW1iZXIpIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCAxLCAyOSkuZ2V0RGF0ZSgpID09PSAyOTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXREYXlzSW5ZZWFyKHllYXI6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIFJkdERhdGVVdGlscy5pc0xlYXBZZWFyKHllYXIpID8gMzY2IDogMzY1O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgaGhNbVJlZ2V4ID1cclxuICAgIC9eXFxzKihbMC05XXwwWzAtOV18MVswLTldfDJbMC0zXSlcXHMqXFxXK1xccyooWzAtNV0/WzAtOV0pXFxzKiQvO1xyXG4gIHByaXZhdGUgc3RhdGljIGhoTW1Tc1JlZ2V4ID1cclxuICAgIC9eXFxzKihbMC05XXwwWzAtOV18MVswLTldfDJbMC0zXSlcXHMqXFxXK1xccyooWzAtNV0/WzAtOV0pXFxzKlxcVytcXHMqKFswLTVdP1xcZClcXHMqJC87XHJcbiAgcHJpdmF0ZSBzdGF0aWMgaGhNbVNzTXNSZWdleCA9XHJcbiAgICAvXlxccyooWzAtOV18MFswLTldfDFbMC05XXwyWzAtM10pXFxzKlxcVytcXHMqKFswLTVdP1swLTldKVxccypcXFcrXFxzKihbMC01XT9cXGQpXFxzKltcXFd8XFxzXVxccyooXFxkezEsM30pXFxzKiQvO1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBkYXlzVXBUb01vbnRoID0gW1xyXG4gICAgMCwgMzEsIDU5LCA5MCwgMTIwLCAxNTEsIDE4MSwgMjEyLCAyNDMsIDI3MywgMzA0LCAzMzQsXHJcbiAgXTtcclxuICBwcml2YXRlIHN0YXRpYyBkYXlzVXBUb01vbnRoTGVhcFllYXIgPSBbXHJcbiAgICAwLCAzMSwgNjAsIDkxLCAxMjEsIDE1MiwgMTgyLCAyMTMsIDI0NCwgMjc0LCAzMDUsIDMzNSxcclxuICBdO1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBnZXREYXlPZmZzZXQoZGF0ZTogRGF0ZSkge1xyXG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKSAtIDE7XHJcbiAgICBjb25zdCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDEsXHJcbiAgICAgIGRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG4gICAgY29uc3QgbnVtT2ZMZWFwc1llYXIgPVxyXG4gICAgICBNYXRoLnRydW5jKHllYXIgLyA0KSAtIE1hdGgudHJ1bmMoeWVhciAvIDEwMCkgKyBNYXRoLnRydW5jKHllYXIgLyA0MDApO1xyXG5cclxuICAgIGlmIChSZHREYXRlVXRpbHMuaXNMZWFwWWVhcih5ZWFyICsgMSkpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICB5ZWFyICogMzY1ICtcclxuICAgICAgICBudW1PZkxlYXBzWWVhciArXHJcbiAgICAgICAgUmR0RGF0ZVV0aWxzLmRheXNVcFRvTW9udGhMZWFwWWVhclttb250aCAtIDFdICtcclxuICAgICAgICBkYXkgLVxyXG4gICAgICAgIDFcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgeWVhciAqIDM2NSArXHJcbiAgICAgICAgbnVtT2ZMZWFwc1llYXIgK1xyXG4gICAgICAgIFJkdERhdGVVdGlscy5kYXlzVXBUb01vbnRoW21vbnRoIC0gMV0gK1xyXG4gICAgICAgIGRheSAtXHJcbiAgICAgICAgMVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRvdWJsZURpZ2l0WWVhclRvUGFzdCh5ZWFyMjogbnVtYmVyKSB7XHJcbiAgICAvLyBJZiBjdXJyZW50IHllYXIgaXMgMjAyNCBhbmQgaW5wdXQgaXMgMjQgb3IgbGVzcywgdGhlbiByZXN1bHQgaXMgMjAyNFxyXG4gICAgLy8gSWYgaW5wdXQgaXMgMjUgb3IgZ3JlYXRlciwgdGhlbiByZXN1bHQgaXMgMTkyNS0xOTk5XHJcbiAgICBjb25zdCBjdXJyZW50WWVhciA9IFJkdERhdGVVdGlscy5nZXRDdXJyZW50WWVhcigpO1xyXG4gICAgY29uc3QgY3VycmVudDIgPSBjdXJyZW50WWVhciAlIDEwMDtcclxuICAgIGlmICh5ZWFyMiA8PSBjdXJyZW50Mikge1xyXG4gICAgICByZXR1cm4geWVhcjIgKyBjdXJyZW50WWVhciAtIGN1cnJlbnQyO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHllYXIyICsgY3VycmVudFllYXIgLSBjdXJyZW50MiAtIDEwMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBkb3VibGVEaWdpdFllYXJUb0Z1dHVyZSh5ZWFyMjogbnVtYmVyKSB7XHJcbiAgICAvLyBJZiBjdXJyZW50IHllYXIgaXMgMjAyNCBhbmQgaW5wdXQgaXMgMjQgb3IgbGVzcywgdGhlbiByZXN1bHQgaXMgMjEyNFxyXG4gICAgLy8gSWYgaW5wdXQgaXMgMjUgb3IgZ3JlYXRlciwgdGhlbiByZXN1bHQgaXMgMjAyNS0yMDk5XHJcbiAgICBjb25zdCBjdXJyZW50WWVhciA9IFJkdERhdGVVdGlscy5nZXRDdXJyZW50WWVhcigpO1xyXG4gICAgY29uc3QgY3VycmVudDIgPSBjdXJyZW50WWVhciAlIDEwMDtcclxuICAgIGlmICh5ZWFyMiA+PSBjdXJyZW50Mikge1xyXG4gICAgICByZXR1cm4geWVhcjIgKyBjdXJyZW50WWVhciAtIGN1cnJlbnQyO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHllYXIyICsgY3VycmVudFllYXIgLSBjdXJyZW50MiArIDEwMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRDdXJyZW50WWVhcigpIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY2FsY3VsYXRlQWdlKGJpcnRoRGF0ZVN0cjogc3RyaW5nLCByZWZlcmVuY2VEYXRlU3RyOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgY29uc3QgYmlydGhEYXRlID0gbmV3IERhdGUoYmlydGhEYXRlU3RyKTtcclxuICAgIGNvbnN0IHJlZmVyZW5jZURhdGUgPSBuZXcgRGF0ZShyZWZlcmVuY2VEYXRlU3RyKTtcclxuICAgIGxldCBhZ2UgPSByZWZlcmVuY2VEYXRlLmdldEZ1bGxZZWFyKCkgLSBiaXJ0aERhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIGNvbnN0IG1vbnRoRGlmZmVyZW5jZSA9IHJlZmVyZW5jZURhdGUuZ2V0TW9udGgoKSAtIGJpcnRoRGF0ZS5nZXRNb250aCgpO1xyXG4gICAgY29uc3QgZGF5RGlmZmVyZW5jZSA9IHJlZmVyZW5jZURhdGUuZ2V0RGF0ZSgpIC0gYmlydGhEYXRlLmdldERhdGUoKTtcclxuICAgIGlmIChtb250aERpZmZlcmVuY2UgPCAwIHx8IChtb250aERpZmZlcmVuY2UgPT09IDAgJiYgZGF5RGlmZmVyZW5jZSA8IDApKSB7XHJcbiAgICAgIGFnZS0tO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFnZTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGVudW0gTW9udGgge1xyXG4gIEphbnVhcnkgPSAwLFxyXG4gIEZlYnJ1YXJ5ID0gMSxcclxuICBNYXJjaCA9IDIsXHJcbiAgQXByaWwgPSAzLFxyXG4gIE1heSA9IDQsXHJcbiAgSnVuZSA9IDUsXHJcbiAgSnVseSA9IDYsXHJcbiAgQXVndXN0ID0gNyxcclxuICBTZXB0ZW1iZXIgPSA4LFxyXG4gIE9jdG9iZXIgPSA5LFxyXG4gIE5vdmVtYmVyID0gMTAsXHJcbiAgRGVjZW1iZXIgPSAxMSxcclxufVxyXG4iXX0=","export class RdtHTMLUtils {\n static scrollIntoViewHorizontallyWithinParent(element) {\n const container = element.parentElement;\n if (!container) {\n return;\n }\n const elOffset = element.offsetLeft;\n const elWidth = element.offsetWidth;\n const containerWidth = container.offsetWidth;\n const currentScroll = container.scrollLeft;\n const alignLeft = elOffset;\n const alignRight = elOffset - containerWidth + elWidth;\n if (currentScroll > alignLeft) {\n container.scrollLeft = alignLeft;\n }\n else if (currentScroll < alignRight) {\n container.scrollLeft = alignRight;\n }\n }\n static setCaretPosition(element, index) {\n element.focus();\n element.setSelectionRange(index, index);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC91dGlscy9zcmMvbGliL3V0aWxzL2h0bWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFlBQVk7SUFDdkIsTUFBTSxDQUFDLHNDQUFzQyxDQUFDLE9BQW9CO1FBQ2hFLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDeEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ3BDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDcEMsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUM3QyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO1FBRTNDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMzQixNQUFNLFVBQVUsR0FBRyxRQUFRLEdBQUcsY0FBYyxHQUFHLE9BQU8sQ0FBQztRQUV2RCxJQUFJLGFBQWEsR0FBRyxTQUFTLEVBQUUsQ0FBQztZQUM5QixTQUFTLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUNuQyxDQUFDO2FBQU0sSUFBSSxhQUFhLEdBQUcsVUFBVSxFQUFFLENBQUM7WUFDdEMsU0FBUyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBeUIsRUFBRSxLQUFhO1FBQzlELE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixPQUFPLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBSZHRIVE1MVXRpbHMge1xyXG4gIHN0YXRpYyBzY3JvbGxJbnRvVmlld0hvcml6b250YWxseVdpdGhpblBhcmVudChlbGVtZW50OiBIVE1MRWxlbWVudCkge1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xyXG4gICAgaWYgKCFjb250YWluZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZWxPZmZzZXQgPSBlbGVtZW50Lm9mZnNldExlZnQ7XHJcbiAgICBjb25zdCBlbFdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gY29udGFpbmVyLm9mZnNldFdpZHRoO1xyXG4gICAgY29uc3QgY3VycmVudFNjcm9sbCA9IGNvbnRhaW5lci5zY3JvbGxMZWZ0O1xyXG5cclxuICAgIGNvbnN0IGFsaWduTGVmdCA9IGVsT2Zmc2V0O1xyXG4gICAgY29uc3QgYWxpZ25SaWdodCA9IGVsT2Zmc2V0IC0gY29udGFpbmVyV2lkdGggKyBlbFdpZHRoO1xyXG5cclxuICAgIGlmIChjdXJyZW50U2Nyb2xsID4gYWxpZ25MZWZ0KSB7XHJcbiAgICAgIGNvbnRhaW5lci5zY3JvbGxMZWZ0ID0gYWxpZ25MZWZ0O1xyXG4gICAgfSBlbHNlIGlmIChjdXJyZW50U2Nyb2xsIDwgYWxpZ25SaWdodCkge1xyXG4gICAgICBjb250YWluZXIuc2Nyb2xsTGVmdCA9IGFsaWduUmlnaHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc2V0Q2FyZXRQb3NpdGlvbihlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBlbGVtZW50LmZvY3VzKCk7XHJcbiAgICBlbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKGluZGV4LCBpbmRleCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","export class RdtStringUtils {\n static tokenize(value) {\n return value ? value.split(/\\W+/).filter((tokens) => !!tokens) : [];\n }\n static joinPaths(parent, child) {\n const b = parent.endsWith('/');\n const p = child.startsWith('/');\n if (b && p) {\n return parent.slice(0, -1) + child;\n }\n else if (b || p) {\n return parent + child;\n }\n else {\n return parent + '/' + child;\n }\n }\n static isAlphabetCharacter(char) {\n if (char.length > 1) {\n return false;\n }\n return char.toLocaleLowerCase() !== char.toLocaleUpperCase();\n }\n static isNumericCharacter(char) {\n return !isNaN(parseInt(char));\n }\n static capitalize(str) {\n return str.charAt(0).toLocaleUpperCase() + str.slice(1);\n }\n static toDataTestId(str) {\n return RdtStringUtils.removeAccents(str).toLowerCase()?.replace(/ /g, '-');\n }\n static removeAccents(str) {\n return str.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n }\n static stripTrailingSlash(url) {\n const match = url.match(/#|\\?|$/);\n const pathEndIdx = (match && match.index) || url.length;\n const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);\n return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx);\n }\n static createAbsoluteUrl(url, baseHref) {\n return RdtStringUtils.joinPaths(baseHref, url);\n }\n static appendQueryParams(url, params) {\n if (!params || Object.keys(params).length === 0) {\n return url;\n }\n else {\n const queryParams = new URLSearchParams(params);\n return `${url}?${queryParams}`;\n }\n }\n static localeCompare(a, b, order = 'asc') {\n const mult = order === 'asc' ? 1 : -1;\n if (a == b) {\n return 0;\n }\n else if (a == null) {\n return -mult;\n }\n else if (b == null) {\n return mult;\n }\n return a.localeCompare(b) * mult;\n }\n static komixcomlocalReplaceString(url) {\n const hostname = location.hostname;\n const replaceString = url.includes('komix.com')\n ? 'komix.com'\n : 'komix.local';\n const toReplace = hostname.includes('komix.com')\n ? 'komix.com'\n : 'komix.local';\n return { replaceString, toReplace };\n }\n static swapChars(src, i, j) {\n if (i < 0 || j < 0 || i >= src.length || j >= src.length) {\n return src;\n }\n if (j < i) {\n [i, j] = [j, i];\n }\n return (src.slice(0, i) + src[j] + src.slice(i + 1, j) + src[i] + src.slice(j + 1));\n }\n static insertAt(src, index, value) {\n return src.slice(0, index) + value + src.slice(index);\n }\n static getDataTestId(label, prefix, suffix) {\n let dataTestId = label.toLowerCase()?.replace(/ /g, '-');\n if (prefix) {\n dataTestId = `${prefix}__${dataTestId}`;\n }\n if (suffix) {\n dataTestId = `${dataTestId}--${suffix}`;\n }\n return RdtStringUtils.removeAccents(dataTestId);\n }\n static stripQueryParams(url) {\n const match = url.match(/#|\\?|$/);\n const pathEndIdx = (match && match.index) || url.length;\n return url.slice(0, pathEndIdx);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3V0aWxzL3NyYy9saWIvdXRpbHMvc3RyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBeUI7UUFDdkMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFjLEVBQUUsS0FBYTtRQUM1QyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLENBQUM7YUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNsQixPQUFPLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLE1BQU0sR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLElBQVk7UUFDckMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGlCQUFp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QUssQ0FBQyxHQUFHLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUNsQixLQUFhLEVBQ2IsTUFBeUIsRUFDekIsTUFBeUI7UUFFekIsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFekQsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLFVBQVUsR0FBRyxHQUFHLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLFVBQVUsR0FBRyxHQUFHLFVBQVUsS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUMxQyxDQUFDO1FBRUQsT0FBTyxjQUFjLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBVztRQUNqQyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi90eXBlcy90eXBlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBSZHRTdHJpbmdVdGlscyB7XHJcbiAgc3RhdGljIHRva2VuaXplKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gdmFsdWUgPyB2YWx1ZS5zcGxpdCgvXFxXKy8pLmZpbHRlcigodG9rZW5zKSA9PiAhIXRva2VucykgOiBbXTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBqb2luUGF0aHMocGFyZW50OiBzdHJpbmcsIGNoaWxkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGIgPSBwYXJlbnQuZW5kc1dpdGgoJy8nKTtcclxuICAgIGNvbnN0IHAgPSBjaGlsZC5zdGFydHNXaXRoKCcvJyk7XHJcbiAgICBpZiAoYiAmJiBwKSB7XHJcbiAgICAgIHJldHVybiBwYXJlbnQuc2xpY2UoMCwgLTEpICsgY2hpbGQ7XHJcbiAgICB9IGVsc2UgaWYgKGIgfHwgcCkge1xyXG4gICAgICByZXR1cm4gcGFyZW50ICsgY2hpbGQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gcGFyZW50ICsgJy8nICsgY2hpbGQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNBbHBoYWJldENoYXJhY3RlcihjaGFyOiBzdHJpbmcpIHtcclxuICAgIGlmIChjaGFyLmxlbmd0aCA+IDEpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNoYXIudG9Mb2NhbGVMb3dlckNhc2UoKSAhPT0gY2hhci50b0xvY2FsZVVwcGVyQ2FzZSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzTnVtZXJpY0NoYXJhY3RlcihjaGFyOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiAhaXNOYU4ocGFyc2VJbnQoY2hhcikpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNhcGl0YWxpemUoc3RyOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBzdHIuY2hhckF0KDApLnRvTG9jYWxlVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgdG9EYXRhVGVzdElkKHN0cjogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gUmR0U3RyaW5nVXRpbHMucmVtb3ZlQWNjZW50cyhzdHIpLnRvTG93ZXJDYXNlKCk/LnJlcGxhY2UoLyAvZywgJy0nKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyByZW1vdmVBY2NlbnRzKHN0cjogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gc3RyLm5vcm1hbGl6ZSgnTkZEJykucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHN0cmlwVHJhaWxpbmdTbGFzaCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBtYXRjaCA9IHVybC5tYXRjaCgvI3xcXD98JC8pO1xyXG4gICAgY29uc3QgcGF0aEVuZElkeCA9IChtYXRjaCAmJiBtYXRjaC5pbmRleCkgfHwgdXJsLmxlbmd0aDtcclxuICAgIGNvbnN0IGRyb3BwZWRTbGFzaElkeCA9IHBhdGhFbmRJZHggLSAodXJsW3BhdGhFbmRJZHggLSAxXSA9PT0gJy8nID8gMSA6IDApO1xyXG4gICAgcmV0dXJuIHVybC5zbGljZSgwLCBkcm9wcGVkU2xhc2hJZHgpICsgdXJsLnNsaWNlKHBhdGhFbmRJZHgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZUFic29sdXRlVXJsKHVybDogc3RyaW5nLCBiYXNlSHJlZjogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gUmR0U3RyaW5nVXRpbHMuam9pblBhdGhzKGJhc2VIcmVmLCB1cmwpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFwcGVuZFF1ZXJ5UGFyYW1zKHVybDogc3RyaW5nLCBwYXJhbXM6IE51bGxhYmxlPFBhcmFtcz4pIHtcclxuICAgIGlmICghcGFyYW1zIHx8IE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zKTtcclxuICAgICAgcmV0dXJuIGAke3VybH0/JHtxdWVyeVBhcmFtc31gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGxvY2FsZUNvbXBhcmUoXHJcbiAgICBhOiBOdWxsYWJsZTxzdHJpbmc+LFxyXG4gICAgYjogTnVsbGFibGU8c3RyaW5nPixcclxuICAgIG9yZGVyOiAnYXNjJyB8ICdkZXNjJyA9ICdhc2MnXHJcbiAgKSB7XHJcbiAgICBjb25zdCBtdWx0ID0gb3JkZXIgPT09ICdhc2MnID8gMSA6IC0xO1xyXG4gICAgaWYgKGEgPT0gYikge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH0gZWxzZSBpZiAoYSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiAtbXVsdDtcclxuICAgIH0gZWxzZSBpZiAoYiA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBtdWx0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGEubG9jYWxlQ29tcGFyZShiKSAqIG11bHQ7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMga29taXhjb21sb2NhbFJlcGxhY2VTdHJpbmcodXJsOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGhvc3RuYW1lID0gbG9jYXRpb24uaG9zdG5hbWU7XHJcbiAgICBjb25zdCByZXBsYWNlU3RyaW5nID0gdXJsLmluY2x1ZGVzKCdrb21peC5jb20nKVxyXG4gICAgICA/ICdrb21peC5jb20nXHJcbiAgICAgIDogJ2tvbWl4LmxvY2FsJztcclxuICAgIGNvbnN0IHRvUmVwbGFjZSA9IGhvc3RuYW1lLmluY2x1ZGVzKCdrb21peC5jb20nKVxyXG4gICAgICA/ICdrb21peC5jb20nXHJcbiAgICAgIDogJ2tvbWl4LmxvY2FsJztcclxuICAgIHJldHVybiB7IHJlcGxhY2VTdHJpbmcsIHRvUmVwbGFjZSB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHN3YXBDaGFycyhzcmM6IHN0cmluZywgaTogbnVtYmVyLCBqOiBudW1iZXIpIHtcclxuICAgIGlmIChpIDwgMCB8fCBqIDwgMCB8fCBpID49IHNyYy5sZW5ndGggfHwgaiA+PSBzcmMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBzcmM7XHJcbiAgICB9XHJcbiAgICBpZiAoaiA8IGkpIHtcclxuICAgICAgW2ksIGpdID0gW2osIGldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgc3JjLnNsaWNlKDAsIGkpICsgc3JjW2pdICsgc3JjLnNsaWNlKGkgKyAxLCBqKSArIHNyY1tpXSArIHNyYy5zbGljZShqICsgMSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaW5zZXJ0QXQoc3JjOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBzcmMuc2xpY2UoMCwgaW5kZXgpICsgdmFsdWUgKyBzcmMuc2xpY2UoaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldERhdGFUZXN0SWQoXHJcbiAgICBsYWJlbDogc3RyaW5nLFxyXG4gICAgcHJlZml4PzogTnVsbGFibGU8c3RyaW5nPixcclxuICAgIHN1ZmZpeD86IE51bGxhYmxlPHN0cmluZz5cclxuICApIHtcclxuICAgIGxldCBkYXRhVGVzdElkID0gbGFiZWwudG9Mb3dlckNhc2UoKT8ucmVwbGFjZSgvIC9nLCAnLScpO1xyXG5cclxuICAgIGlmIChwcmVmaXgpIHtcclxuICAgICAgZGF0YVRlc3RJZCA9IGAke3ByZWZpeH1fXyR7ZGF0YVRlc3RJZH1gO1xyXG4gICAgfVxyXG4gICAgaWYgKHN1ZmZpeCkge1xyXG4gICAgICBkYXRhVGVzdElkID0gYCR7ZGF0YVRlc3RJZH0tLSR7c3VmZml4fWA7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFJkdFN0cmluZ1V0aWxzLnJlbW92ZUFjY2VudHMoZGF0YVRlc3RJZCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc3RyaXBRdWVyeVBhcmFtcyh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBtYXRjaCA9IHVybC5tYXRjaCgvI3xcXD98JC8pO1xyXG4gICAgY29uc3QgcGF0aEVuZElkeCA9IChtYXRjaCAmJiBtYXRjaC5pbmRleCkgfHwgdXJsLmxlbmd0aDtcclxuICAgIHJldHVybiB1cmwuc2xpY2UoMCwgcGF0aEVuZElkeCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { RdtDateUtils } from './date';\nimport { RdtHTMLUtils } from './html';\nimport { RdtStringUtils } from './string';\nvar RdtFormatType;\n(function (RdtFormatType) {\n RdtFormatType[\"Day\"] = \"day\";\n RdtFormatType[\"Month\"] = \"month\";\n RdtFormatType[\"Year\"] = \"year\";\n RdtFormatType[\"Constant\"] = \"constant\";\n})(RdtFormatType || (RdtFormatType = {}));\nexport const PRIMENG_DATE_FORMAT_META = {\n d: {\n type: RdtFormatType.Day,\n minLength: 1,\n maxLength: 2,\n },\n dd: {\n type: RdtFormatType.Day,\n minLength: 2,\n maxLength: 2,\n },\n m: {\n type: RdtFormatType.Month,\n minLength: 1,\n maxLength: 2,\n },\n mm: {\n type: RdtFormatType.Month,\n minLength: 2,\n maxLength: 2,\n },\n y: {\n type: RdtFormatType.Year,\n minLength: 2,\n maxLength: 2,\n },\n yy: {\n type: RdtFormatType.Year,\n minLength: 4,\n maxLength: 4,\n },\n};\nexport var RdtInsertMode;\n(function (RdtInsertMode) {\n RdtInsertMode[RdtInsertMode[\"Overwrite\"] = 0] = \"Overwrite\";\n RdtInsertMode[RdtInsertMode[\"Shift\"] = 1] = \"Shift\";\n})(RdtInsertMode || (RdtInsertMode = {}));\nexport var RdtPasteMode;\n(function (RdtPasteMode) {\n RdtPasteMode[RdtPasteMode[\"Replace\"] = 0] = \"Replace\";\n RdtPasteMode[RdtPasteMode[\"Insert\"] = 1] = \"Insert\";\n})(RdtPasteMode || (RdtPasteMode = {}));\nexport var RdtYearInputMode;\n(function (RdtYearInputMode) {\n RdtYearInputMode[RdtYearInputMode[\"FourDigit\"] = 1] = \"FourDigit\";\n RdtYearInputMode[RdtYearInputMode[\"TwoDigit\"] = 2] = \"TwoDigit\";\n RdtYearInputMode[RdtYearInputMode[\"Both\"] = 3] = \"Both\";\n})(RdtYearInputMode || (RdtYearInputMode = {}));\nexport var RdtLeadingZeroInputMode;\n(function (RdtLeadingZeroInputMode) {\n RdtLeadingZeroInputMode[RdtLeadingZeroInputMode[\"NoLeadingZero\"] = 1] = \"NoLeadingZero\";\n RdtLeadingZeroInputMode[RdtLeadingZeroInputMode[\"LeadingZero\"] = 2] = \"LeadingZero\";\n RdtLeadingZeroInputMode[RdtLeadingZeroInputMode[\"Both\"] = 3] = \"Both\";\n})(RdtLeadingZeroInputMode || (RdtLeadingZeroInputMode = {}));\nfunction getDigitCount(value) {\n return (Math.log10(value) + 1) | 0;\n}\nexport class RdtDateParser {\n cfg;\n _value;\n _inputValue;\n _parsedFormat;\n deleting;\n caretPosition;\n constructor(cfg) {\n this.cfg = cfg;\n this._inputValue = '';\n this._value = null;\n this._parsedFormat = this.parseFormat(cfg);\n this.deleting = false;\n this.caretPosition = 0;\n }\n set leadingZeroMode(mode) {\n this.cfg.leadingZeroMode = mode;\n this._parsedFormat = this.parseFormat(this.cfg);\n }\n get leadingZeroMode() {\n return this.cfg.leadingZeroMode;\n }\n set yearInputMode(mode) {\n this.cfg.yearInputMode = mode;\n this._parsedFormat = this.parseFormat(this.cfg);\n }\n get yearInputMode() {\n return this.cfg.yearInputMode;\n }\n set twoDigitYearInputStrategy(strategy) {\n this.cfg.twoDigitYearInputStrategy = strategy;\n this._parsedFormat = this.parseFormat(this.cfg);\n }\n get twoDigitYearInputStrategy() {\n return this.cfg.twoDigitYearInputStrategy;\n }\n set insertMode(mode) {\n this.cfg.insertMode = mode;\n this._parsedFormat = this.parseFormat(this.cfg);\n }\n get insertMode() {\n return this.cfg.insertMode;\n }\n set format(format) {\n this.cfg.format = format;\n this._parsedFormat = this.parseFormat(this.cfg);\n }\n get format() {\n return this.cfg.format;\n }\n onKeyDown(event) {\n if (event.key === 'Backspace') {\n this.deleting = true;\n }\n const target = event.target;\n this.caretPosition = target.selectionStart ?? target.value.length - 1;\n }\n onKeyUp(event) {\n if (event.key === 'Backspace') {\n this.deleting = false;\n }\n }\n onInput(event) {\n const target = event.target;\n const value = target.value;\n const caretPosition = target.selectionStart ?? value.length - 1;\n const res = this.parse(value, caretPosition);\n target.value = res.prettyInput;\n RdtHTMLUtils.setCaretPosition(target, res.caret);\n this._value = res.date;\n this._inputValue = res.prettyInput;\n this.caretPosition = res.caret;\n }\n get value() {\n return this._value;\n }\n set value(d) {\n if (!(d instanceof Date)) {\n this._value = null;\n this._inputValue = '';\n return;\n }\n let result = '';\n this._parsedFormat.forEach((node) => {\n switch (node.type) {\n case RdtFormatType.Constant:\n result += node.value;\n break;\n case RdtFormatType.Day:\n result += `${d.getDate()}`.padStart(node.minLength, '0');\n break;\n case RdtFormatType.Month:\n result += `${d.getMonth() + 1}`.padStart(node.minLength, '0');\n break;\n case RdtFormatType.Year:\n result += `${d.getFullYear() % 10 ** node.maxLength}`.padStart(node.minLength, '0');\n break;\n }\n });\n this._value = d;\n this._inputValue = result;\n }\n set inputValue(value) {\n this._inputValue = value;\n }\n get inputValue() {\n return this._inputValue;\n }\n parse(input, caretPosition = this.caretPosition, deleting = this.deleting) {\n let rest = input;\n let day = null, month = null, year = null;\n let output = '';\n let targetCaret = caretPosition;\n let allComplete = true;\n let ambiguous = false;\n for (let i = 0; i < this._parsedFormat.length; i++) {\n if (rest.length === 0) {\n break;\n }\n const node = this._parsedFormat[i];\n const firstNumber = rest.search(/\\d/);\n if (node.type === RdtFormatType.Constant) {\n if (firstNumber > 0) {\n const value = deleting\n ? rest.substring(0, node.value.length)\n : rest.substring(0, firstNumber);\n // In case we are deleting from separator, delete previous number as well\n if (deleting && value !== node.value) {\n if (rest.length === input.length) {\n continue;\n }\n else {\n targetCaret -= node.value.length - value.length;\n }\n }\n rest = rest.substring(firstNumber);\n }\n output += node.value;\n }\n else {\n if (firstNumber < 0) {\n break;\n }\n if (targetCaret > output.length) {\n allComplete = true;\n }\n if (node.type === RdtFormatType.Year) {\n if (this.cfg.yearInputMode & RdtYearInputMode.FourDigit &&\n (rest.match(/^\\d{3,4}/) ||\n (rest.match(/^\\d{2}$/) && i !== this._parsedFormat.length - 1))) {\n if (!deleting &&\n this.cfg.insertMode === RdtInsertMode.Overwrite &&\n rest.match(/^\\d{5}/) &&\n caretPosition < rest.length &&\n caretPosition - output.length <= 5 &&\n RdtStringUtils.isNumericCharacter(rest[caretPosition])) {\n rest =\n rest.substring(0, caretPosition) +\n rest.substring(caretPosition + 1);\n }\n if (rest.match(/^\\d{4}/)) {\n const strVal = rest.substring(0, 4);\n year = parseInt(strVal);\n rest = rest.substring(4);\n output += strVal;\n if (!deleting) {\n ({ rest, targetCaret } = this.useUpNumbersUntilNextSeparator(rest, targetCaret, true, deleting));\n }\n }\n else if (rest.match(/^\\d{3}/)) {\n output += rest.substring(0, 3);\n rest = rest.substring(3);\n if (output.length <= targetCaret) {\n allComplete = false;\n }\n }\n else {\n output = rest.substring(0, 2);\n rest = rest.substring(2);\n if (output.length <= targetCaret) {\n allComplete = false;\n }\n }\n }\n else if (this.cfg.yearInputMode & RdtYearInputMode.TwoDigit &&\n rest.match(/^\\d{2}/) &&\n (this.containsNonNumericCharacters(rest.substring(2)) ||\n i === this._parsedFormat.length - 1)) {\n const strVal = rest.substring(0, 2);\n const y2 = parseInt(strVal);\n if (this.cfg.twoDigitYearInputStrategy === 'past') {\n year = RdtDateUtils.doubleDigitYearToPast(y2);\n }\n else {\n year = RdtDateUtils.doubleDigitYearToFuture(y2);\n }\n rest = rest.substring(2);\n if (!deleting) {\n ({ rest, targetCaret } = this.useUpNumbersUntilNextSeparator(rest, targetCaret, true, deleting));\n }\n output += strVal;\n if (this.cfg.yearInputMode & RdtYearInputMode.FourDigit &&\n i === this._parsedFormat.length - 1) {\n ambiguous = true;\n }\n }\n else if (rest.match(/^\\d/)) {\n output += rest[0];\n rest = rest.substring(1);\n if (output.length <= targetCaret) {\n allComplete = false;\n }\n }\n }\n else if (node.type === RdtFormatType.Month) {\n const val = this.readNumber(1, 12, output, rest, targetCaret, deleting);\n output = val.output;\n rest = val.rest;\n targetCaret = val.targetCaret;\n if (val.value !== null) {\n month = val.value;\n // Add separator in case it's complete\n if (val.complete && !deleting) {\n ({ rest, targetCaret } = this.useUpNumbersUntilNextSeparator(rest, targetCaret, true, deleting));\n }\n if (!val.complete && output.length <= targetCaret) {\n allComplete = false;\n }\n }\n }\n else if (node.type === RdtFormatType.Day) {\n const val = this.readNumber(1, 31, output, rest, targetCaret, deleting);\n output = val.output;\n rest = val.rest;\n targetCaret = val.targetCaret;\n if (val.value !== null) {\n day = val.value;\n // Add separator in case it's complete\n if (val.complete && !deleting) {\n ({ rest, targetCaret } = this.useUpNumbersUntilNextSeparator(rest, targetCaret, true, deleting));\n }\n if (!val.complete && output.length <= targetCaret) {\n allComplete = false;\n }\n }\n }\n }\n }\n let date = null;\n if (year !== null && month !== null && day !== null) {\n date = new Date(year, month - 1, day);\n if (date.getMonth() !== month - 1) {\n date = null;\n }\n }\n targetCaret = Math.min(targetCaret, output.length + 1);\n if (!deleting) {\n if (caretPosition === input.length) {\n targetCaret = output.length;\n }\n else if (allComplete) {\n while (targetCaret > 0 &&\n output.length > targetCaret &&\n !RdtStringUtils.isNumericCharacter(output[targetCaret])) {\n targetCaret++;\n }\n }\n }\n else if (!date) {\n output = input;\n targetCaret = caretPosition;\n }\n return {\n prettyInput: output,\n date: date,\n complete: date !== null,\n caret: targetCaret,\n ambiguous: ambiguous || date === null,\n };\n }\n readNumber(min, max, output, rest, targetCaret, deleting) {\n const maxDigits = getDigitCount(max);\n let value = null;\n let strVal = '';\n let complete = false;\n if (!(this.cfg.leadingZeroMode & RdtLeadingZeroInputMode.NoLeadingZero)) {\n const regex = new RegExp(`^\\\\d{${maxDigits}}`);\n if (rest.match(regex)) {\n strVal = rest.substring(0, maxDigits);\n output += strVal;\n rest = rest.substring(maxDigits);\n value = parseInt(strVal);\n }\n }\n else {\n let digits = rest.match(/^\\d+/)?.[0] ?? '';\n if (digits.length > 0) {\n digits = digits.slice(0, maxDigits);\n value = parseInt(digits);\n if (value < min) {\n value = null;\n let nines = '9';\n while (digits.length + 1 > maxDigits ||\n parseInt(digits + nines) < min) {\n digits = digits.slice(0, -1);\n nines += '9';\n }\n }\n else {\n while (value > max && digits.length > 0) {\n digits = digits.slice(0, -1);\n value = parseInt(digits);\n }\n if (digits.length === 0) {\n value = null;\n }\n }\n if (digits[0] === '0' &&\n min !== 0 &&\n !(this.cfg.leadingZeroMode & RdtLeadingZeroInputMode.LeadingZero)) {\n value = null;\n digits = '';\n }\n }\n output += digits;\n rest = rest.substring(digits.length);\n strVal = digits;\n }\n if (value !== null && value >= min && value <= max) {\n complete = strVal.length === maxDigits || value * 10 > max;\n ({ rest, targetCaret } = this.useUpNumbersUntilNextSeparator(rest, targetCaret, complete && !deleting, deleting));\n return { value, complete, output, rest, targetCaret };\n }\n else {\n return { value: null, complete: false, output, rest, targetCaret };\n }\n }\n parseFormat(cfg) {\n const keys = Object.keys(cfg.symbolMeta);\n keys.sort((a, b) => b.length - a.length);\n let rest = cfg.format;\n const result = [];\n while (rest.length > 0) {\n const indices = keys.map((key) => rest.indexOf(key));\n const minI = indices.indexOf(Math.min(...indices.filter((i) => i >= 0)));\n const minIndex = indices[minI];\n const minKey = keys[minI];\n if (minIndex > 0) {\n result.push({\n type: RdtFormatType.Constant,\n value: rest.substring(0, minIndex),\n });\n rest = rest.substring(minIndex);\n }\n else if (minIndex < 0) {\n result.push({\n type: RdtFormatType.Constant,\n value: rest,\n });\n rest = '';\n }\n else {\n result.push(cfg.symbolMeta[minKey]);\n rest = rest.substring(minIndex + minKey.length);\n }\n }\n return result;\n }\n useUpNumbersUntilNextSeparator(input, targetCaret, insertSeparator, deleting) {\n let i = 0;\n while (i < input.length && RdtStringUtils.isNumericCharacter(input[i])) {\n i++;\n }\n if (i !== input.length) {\n return {\n rest: input.substring(i),\n targetCaret: targetCaret - (deleting ? i : 0),\n };\n }\n else if (insertSeparator) {\n return { rest: ' ' + input, targetCaret: targetCaret };\n }\n else {\n return { rest: input, targetCaret };\n }\n }\n containsNonNumericCharacters(input) {\n return input.search(/\\D/) >= 0;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1mb3JtYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvdXRpbHMvc3JjL2xpYi91dGlscy9kYXRlLWZvcm1hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQWUxQyxJQUFLLGFBS0o7QUFMRCxXQUFLLGFBQWE7SUFDaEIsNEJBQVcsQ0FBQTtJQUNYLGdDQUFlLENBQUE7SUFDZiw4QkFBYSxDQUFBO0lBQ2Isc0NBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUxJLGFBQWEsS0FBYixhQUFhLFFBS2pCO0FBRUQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQW1DO0lBQ3RFLENBQUMsRUFBRTtRQUNELElBQUksRUFBRSxhQUFhLENBQUMsR0FBRztRQUN2QixTQUFTLEVBQUUsQ0FBQztRQUNaLFNBQVMsRUFBRSxDQUFDO0tBQ2I7SUFDRCxFQUFFLEVBQUU7UUFDRixJQUFJLEVBQUUsYUFBYSxDQUFDLEdBQUc7UUFDdkIsU0FBUyxFQUFFLENBQUM7UUFDWixTQUFTLEVBQUUsQ0FBQztLQUNiO0lBQ0QsQ0FBQyxFQUFFO1FBQ0QsSUFBSSxFQUFFLGFBQWEsQ0FBQyxLQUFLO1FBQ3pCLFNBQVMsRUFBRSxDQUFDO1FBQ1osU0FBUyxFQUFFLENBQUM7S0FDYjtJQUNELEVBQUUsRUFBRTtRQUNGLElBQUksRUFBRSxhQUFhLENBQUMsS0FBSztRQUN6QixTQUFTLEVBQUUsQ0FBQztRQUNaLFNBQVMsRUFBRSxDQUFDO0tBQ2I7SUFDRCxDQUFDLEVBQUU7UUFDRCxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUk7UUFDeEIsU0FBUyxFQUFFLENBQUM7UUFDWixTQUFTLEVBQUUsQ0FBQztLQUNiO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsSUFBSSxFQUFFLGFBQWEsQ0FBQyxJQUFJO1FBQ3hCLFNBQVMsRUFBRSxDQUFDO1FBQ1osU0FBUyxFQUFFLENBQUM7S0FDYjtDQUNGLENBQUM7QUFXRixNQUFNLENBQU4sSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLDJEQUFTLENBQUE7SUFDVCxtREFBSyxDQUFBO0FBQ1AsQ0FBQyxFQUhXLGFBQWEsS0FBYixhQUFhLFFBR3hCO0FBRUQsTUFBTSxDQUFOLElBQVksWUFHWDtBQUhELFdBQVksWUFBWTtJQUN0QixxREFBTyxDQUFBO0lBQ1AsbURBQU0sQ0FBQTtBQUNSLENBQUMsRUFIVyxZQUFZLEtBQVosWUFBWSxRQUd2QjtBQUVELE1BQU0sQ0FBTixJQUFZLGdCQUlYO0FBSkQsV0FBWSxnQkFBZ0I7SUFDMUIsaUVBQWdCLENBQUE7SUFDaEIsK0RBQWUsQ0FBQTtJQUNmLHVEQUFXLENBQUE7QUFDYixDQUFDLEVBSlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUkzQjtBQUVELE1BQU0sQ0FBTixJQUFZLHVCQUlYO0FBSkQsV0FBWSx1QkFBdUI7SUFDakMsdUZBQW9CLENBQUE7SUFDcEIsbUZBQWtCLENBQUE7SUFDbEIscUVBQVcsQ0FBQTtBQUNiLENBQUMsRUFKVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBSWxDO0FBSUQsU0FBUyxhQUFhLENBQUMsS0FBYTtJQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQU0sT0FBTyxhQUFhO0lBQ2hCLEdBQUcsQ0FBcUI7SUFDeEIsTUFBTSxDQUFjO0lBQ3BCLFdBQVcsQ0FBUztJQUNwQixhQUFhLENBQWtCO0lBQy9CLFFBQVEsQ0FBVTtJQUNsQixhQUFhLENBQVM7SUFFOUIsWUFBWSxHQUF1QjtRQUNqQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxlQUFlLENBQUMsSUFBNkI7UUFDL0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLGFBQWEsQ0FBQyxJQUFzQjtRQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSx5QkFBeUIsQ0FDM0IsUUFBZ0Q7UUFFaEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsR0FBRyxRQUFRLENBQUM7UUFDOUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsSUFBSSx5QkFBeUI7UUFDM0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxJQUFtQjtRQUNoQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsTUFBYztRQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQW9CO1FBQzVCLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDaEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQW9CO1FBQzFCLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN4QixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUNoRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzNCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxjQUFjLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDN0MsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDO1FBQy9CLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7UUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLENBQWM7UUFDdEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNsQyxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbEIsS0FBSyxhQUFhLENBQUMsUUFBUTtvQkFDekIsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7b0JBQ3JCLE1BQU07Z0JBQ1IsS0FBSyxhQUFhLENBQUMsR0FBRztvQkFDcEIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3pELE1BQU07Z0JBQ1IsS0FBSyxhQUFhLENBQUMsS0FBSztvQkFDdEIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUM5RCxNQUFNO2dCQUNSLEtBQUssYUFBYSxDQUFDLElBQUk7b0JBQ3JCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FDNUQsSUFBSSxDQUFDLFNBQVMsRUFDZCxHQUFHLENBQ0osQ0FBQztvQkFDRixNQUFNO1lBQ1YsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsS0FBSyxDQUNILEtBQWEsRUFDYixhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFDbEMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRO1FBRXhCLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNqQixJQUFJLEdBQUcsR0FBa0IsSUFBSSxFQUMzQixLQUFLLEdBQWtCLElBQUksRUFDM0IsSUFBSSxHQUFrQixJQUFJLENBQUM7UUFFN0IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksV0FBVyxHQUFHLGFBQWEsQ0FBQztRQUNoQyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBRXRCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ25ELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsTUFBTTtZQUNSLENBQUM7WUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRW5DLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdEMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3BCLE1BQU0sS0FBSyxHQUFHLFFBQVE7d0JBQ3BCLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQzt3QkFDdEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO29CQUNuQyx5RUFBeUU7b0JBQ3pFLElBQUksUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQ3JDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7NEJBQ2pDLFNBQVM7d0JBQ1gsQ0FBQzs2QkFBTSxDQUFDOzRCQUNOLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO3dCQUNsRCxDQUFDO29CQUNILENBQUM7b0JBQ0QsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7Z0JBQ0QsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDdkIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNwQixNQUFNO2dCQUNSLENBQUM7Z0JBRUQsSUFBSSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixDQUFDO2dCQUVELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3JDLElBQ0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsU0FBUzt3QkFDbkQsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQzs0QkFDckIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUNqRSxDQUFDO3dCQUNELElBQ0UsQ0FBQyxRQUFROzRCQUNULElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxLQUFLLGFBQWEsQ0FBQyxTQUFTOzRCQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQzs0QkFDcEIsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNOzRCQUMzQixhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDOzRCQUNsQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQ3RELENBQUM7NEJBQ0QsSUFBSTtnQ0FDRixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUM7b0NBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUN0QyxDQUFDO3dCQUNELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDOzRCQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDcEMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQzs0QkFDeEIsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ3pCLE1BQU0sSUFBSSxNQUFNLENBQUM7NEJBQ2pCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQ0FDZCxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FDMUQsSUFBSSxFQUNKLFdBQVcsRUFDWCxJQUFJLEVBQ0osUUFBUSxDQUNULENBQUMsQ0FBQzs0QkFDTCxDQUFDO3dCQUNILENBQUM7NkJBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7NEJBQ2hDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDL0IsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ3pCLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxXQUFXLEVBQUUsQ0FBQztnQ0FDakMsV0FBVyxHQUFHLEtBQUssQ0FBQzs0QkFDdEIsQ0FBQzt3QkFDSCxDQUFDOzZCQUFNLENBQUM7NEJBQ04sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzRCQUM5QixJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDekIsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLFdBQVcsRUFBRSxDQUFDO2dDQUNqQyxXQUFXLEdBQUcsS0FBSyxDQUFDOzRCQUN0QixDQUFDO3dCQUNILENBQUM7b0JBQ0gsQ0FBQzt5QkFBTSxJQUNMLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLGdCQUFnQixDQUFDLFFBQVE7d0JBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO3dCQUNwQixDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUNuRCxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQ3RDLENBQUM7d0JBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ3BDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDNUIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLHlCQUF5QixLQUFLLE1BQU0sRUFBRSxDQUFDOzRCQUNsRCxJQUFJLEdBQUcsWUFBWSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUNoRCxDQUFDOzZCQUFNLENBQUM7NEJBQ04sSUFBSSxHQUFHLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDbEQsQ0FBQzt3QkFDRCxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDekIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDOzRCQUNkLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUMxRCxJQUFJLEVBQ0osV0FBVyxFQUNYLElBQUksRUFDSixRQUFRLENBQ1QsQ0FBQyxDQUFDO3dCQUNMLENBQUM7d0JBQ0QsTUFBTSxJQUFJLE1BQU0sQ0FBQzt3QkFDakIsSUFDRSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTOzRCQUNuRCxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUNuQyxDQUFDOzRCQUNELFNBQVMsR0FBRyxJQUFJLENBQUM7d0JBQ25CLENBQUM7b0JBQ0gsQ0FBQzt5QkFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQzt3QkFDN0IsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDbEIsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3pCLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxXQUFXLEVBQUUsQ0FBQzs0QkFDakMsV0FBVyxHQUFHLEtBQUssQ0FBQzt3QkFDdEIsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7cUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDN0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FDekIsQ0FBQyxFQUNELEVBQUUsRUFDRixNQUFNLEVBQ04sSUFBSSxFQUNKLFdBQVcsRUFDWCxRQUFRLENBQ1QsQ0FBQztvQkFDRixNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztvQkFDcEIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLFdBQVcsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDO29CQUM5QixJQUFJLEdBQUcsQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7d0JBQ3ZCLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO3dCQUNsQixzQ0FBc0M7d0JBQ3RDLElBQUksR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDOzRCQUM5QixDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FDMUQsSUFBSSxFQUNKLFdBQVcsRUFDWCxJQUFJLEVBQ0osUUFBUSxDQUNULENBQUMsQ0FBQzt3QkFDTCxDQUFDO3dCQUNELElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksV0FBVyxFQUFFLENBQUM7NEJBQ2xELFdBQVcsR0FBRyxLQUFLLENBQUM7d0JBQ3RCLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQzNDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQ3pCLENBQUMsRUFDRCxFQUFFLEVBQ0YsTUFBTSxFQUNOLElBQUksRUFDSixXQUFXLEVBQ1gsUUFBUSxDQUNULENBQUM7b0JBQ0YsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7b0JBQ3BCLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO29CQUNoQixXQUFXLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQztvQkFDOUIsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO3dCQUN2QixHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQzt3QkFDaEIsc0NBQXNDO3dCQUN0QyxJQUFJLEdBQUcsQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzs0QkFDOUIsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQzFELElBQUksRUFDSixXQUFXLEVBQ1gsSUFBSSxFQUNKLFFBQVEsQ0FDVCxDQUFDLENBQUM7d0JBQ0wsQ0FBQzt3QkFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLFdBQVcsRUFBRSxDQUFDOzRCQUNsRCxXQUFXLEdBQUcsS0FBSyxDQUFDO3dCQUN0QixDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxJQUFJLEdBQWdCLElBQUksQ0FBQztRQUM3QixJQUFJLElBQUksS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEQsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3RDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFdkQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsSUFBSSxhQUFhLEtBQUssS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNuQyxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUM5QixDQUFDO2lCQUFNLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQ0UsV0FBVyxHQUFHLENBQUM7b0JBQ2YsTUFBTSxDQUFDLE1BQU0sR0FBRyxXQUFXO29CQUMzQixDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsRUFDdkQsQ0FBQztvQkFDRCxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDZixXQUFXLEdBQUcsYUFBYSxDQUFDO1FBQzlCLENBQUM7UUFFRCxPQUFPO1lBQ0wsV0FBVyxFQUFFLE1BQU07WUFDbkIsSUFBSSxFQUFFLElBQUk7WUFDVixRQUFRLEVBQUUsSUFBSSxLQUFLLElBQUk7WUFDdkIsS0FBSyxFQUFFLFdBQVc7WUFDbEIsU0FBUyxFQUFFLFNBQVMsSUFBSSxJQUFJLEtBQUssSUFBSTtTQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVPLFVBQVUsQ0FDaEIsR0FBVyxFQUNYLEdBQVcsRUFDWCxNQUFjLEVBQ2QsSUFBWSxFQUNaLFdBQW1CLEVBQ25CLFFBQWlCO1FBRWpCLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVyQyxJQUFJLEtBQUssR0FBa0IsSUFBSSxDQUFDO1FBQ2hDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEdBQUcsdUJBQXVCLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUN4RSxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDL0MsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDdEMsTUFBTSxJQUFJLE1BQU0sQ0FBQztnQkFDakIsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2pDLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUUzQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDcEMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekIsSUFBSSxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUM7b0JBQ2hCLEtBQUssR0FBRyxJQUFJLENBQUM7b0JBQ2IsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO29CQUNoQixPQUNFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLFNBQVM7d0JBQzdCLFFBQVEsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxFQUM5QixDQUFDO3dCQUNELE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixLQUFLLElBQUksR0FBRyxDQUFDO29CQUNmLENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sS0FBSyxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUN4QyxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDN0IsS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDM0IsQ0FBQztvQkFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ3hCLEtBQUssR0FBRyxJQUFJLENBQUM7b0JBQ2YsQ0FBQztnQkFDSCxDQUFDO2dCQUNELElBQ0UsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUc7b0JBQ2pCLEdBQUcsS0FBSyxDQUFDO29CQUNULENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsR0FBRyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsRUFDakUsQ0FBQztvQkFDRCxLQUFLLEdBQUcsSUFBSSxDQUFDO29CQUNiLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ2QsQ0FBQztZQUNILENBQUM7WUFFRCxNQUFNLElBQUksTUFBTSxDQUFDO1lBQ2pCLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2xCLENBQUM7UUFFRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxJQUFJLEdBQUcsSUFBSSxLQUFLLElBQUksR0FBRyxFQUFFLENBQUM7WUFDbkQsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLEtBQUssR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDO1lBQzNELENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUMxRCxJQUFJLEVBQ0osV0FBVyxFQUNYLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFDckIsUUFBUSxDQUNULENBQUMsQ0FBQztZQUNILE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDeEQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDckUsQ0FBQztJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsR0FBdUI7UUFDekMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXpDLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFDdEIsTUFBTSxNQUFNLEdBQW9CLEVBQUUsQ0FBQztRQUVuQyxPQUFPLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUUxQixJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDVixJQUFJLEVBQUUsYUFBYSxDQUFDLFFBQVE7b0JBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUM7aUJBQ25DLENBQUMsQ0FBQztnQkFDSCxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsQyxDQUFDO2lCQUFNLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNWLElBQUksRUFBRSxhQUFhLENBQUMsUUFBUTtvQkFDNUIsS0FBSyxFQUFFLElBQUk7aUJBQ1osQ0FBQyxDQUFDO2dCQUNILElBQUksR0FBRyxFQUFFLENBQUM7WUFDWixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ3BDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sOEJBQThCLENBQ3BDLEtBQWEsRUFDYixXQUFtQixFQUNuQixlQUF3QixFQUN4QixRQUFpQjtRQUVqQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLENBQUMsRUFBRSxDQUFDO1FBQ04sQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2QixPQUFPO2dCQUNMLElBQUksRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsV0FBVyxFQUFFLFdBQVcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDOUMsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzNCLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDekQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVPLDRCQUE0QixDQUFDLEtBQWE7UUFDaEQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZHREYXRlVXRpbHMgfSBmcm9tICcuL2RhdGUnO1xyXG5pbXBvcnQgeyBSZHRIVE1MVXRpbHMgfSBmcm9tICcuL2h0bWwnO1xyXG5pbXBvcnQgeyBSZHRTdHJpbmdVdGlscyB9IGZyb20gJy4vc3RyaW5nJztcclxuXHJcbmludGVyZmFjZSBSZHROdW1lcmljTm9kZSB7XHJcbiAgdHlwZTogUmR0Rm9ybWF0VHlwZS5EYXkgfCBSZHRGb3JtYXRUeXBlLk1vbnRoIHwgUmR0Rm9ybWF0VHlwZS5ZZWFyO1xyXG4gIG1heExlbmd0aDogbnVtYmVyO1xyXG4gIG1pbkxlbmd0aDogbnVtYmVyO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgUmR0U2VwYXJhdG9yTm9kZSB7XHJcbiAgdHlwZTogUmR0Rm9ybWF0VHlwZS5Db25zdGFudDtcclxuICB2YWx1ZTogc3RyaW5nO1xyXG59XHJcblxyXG50eXBlIFJkdEZvcm1hdE5vZGUgPSBSZHRTZXBhcmF0b3JOb2RlIHwgUmR0TnVtZXJpY05vZGU7XHJcblxyXG5lbnVtIFJkdEZvcm1hdFR5cGUge1xyXG4gIERheSA9ICdkYXknLFxyXG4gIE1vbnRoID0gJ21vbnRoJyxcclxuICBZZWFyID0gJ3llYXInLFxyXG4gIENvbnN0YW50ID0gJ2NvbnN0YW50JyxcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFBSSU1FTkdfREFURV9GT1JNQVRfTUVUQTogUmVjb3JkPHN0cmluZywgUmR0TnVtZXJpY05vZGU+ID0ge1xyXG4gIGQ6IHtcclxuICAgIHR5cGU6IFJkdEZvcm1hdFR5cGUuRGF5LFxyXG4gICAgbWluTGVuZ3RoOiAxLFxyXG4gICAgbWF4TGVuZ3RoOiAyLFxyXG4gIH0sXHJcbiAgZGQ6IHtcclxuICAgIHR5cGU6IFJkdEZvcm1hdFR5cGUuRGF5LFxyXG4gICAgbWluTGVuZ3RoOiAyLFxyXG4gICAgbWF4TGVuZ3RoOiAyLFxyXG4gIH0sXHJcbiAgbToge1xyXG4gICAgdHlwZTogUmR0Rm9ybWF0VHlwZS5Nb250aCxcclxuICAgIG1pbkxlbmd0aDogMSxcclxuICAgIG1heExlbmd0aDogMixcclxuICB9LFxyXG4gIG1tOiB7XHJcbiAgICB0eXBlOiBSZHRGb3JtYXRUeXBlLk1vbnRoLFxyXG4gICAgbWluTGVuZ3RoOiAyLFxyXG4gICAgbWF4TGVuZ3RoOiAyLFxyXG4gIH0sXHJcbiAgeToge1xyXG4gICAgdHlwZTogUmR0Rm9ybWF0VHlwZS5ZZWFyLFxyXG4gICAgbWluTGVuZ3RoOiAyLFxyXG4gICAgbWF4TGVuZ3RoOiAyLFxyXG4gIH0sXHJcbiAgeXk6IHtcclxuICAgIHR5cGU6IFJkdEZvcm1hdFR5cGUuWWVhcixcclxuICAgIG1pbkxlbmd0aDogNCxcclxuICAgIG1heExlbmd0aDogNCxcclxuICB9LFxyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZHREYXRlSW5wdXRDb25maWcge1xyXG4gIGZvcm1hdDogc3RyaW5nO1xyXG4gIHllYXJJbnB1dE1vZGU6IFJkdFllYXJJbnB1dE1vZGU7XHJcbiAgdHdvRGlnaXRZZWFySW5wdXRTdHJhdGVneTogUmR0VHdvRGlnaXRZZWFySW5wdXRDb252ZXJzaW9uU3RyYXRlZ3k7XHJcbiAgbGVhZGluZ1plcm9Nb2RlOiBSZHRMZWFkaW5nWmVyb0lucHV0TW9kZTtcclxuICBzeW1ib2xNZXRhOiBSZWNvcmQ8c3RyaW5nLCBSZHROdW1lcmljTm9kZT47XHJcbiAgaW5zZXJ0TW9kZTogUmR0SW5zZXJ0TW9kZTtcclxufVxyXG5cclxuZXhwb3J0IGVudW0gUmR0SW5zZXJ0TW9kZSB7XHJcbiAgT3ZlcndyaXRlLFxyXG4gIFNoaWZ0LFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBSZHRQYXN0ZU1vZGUge1xyXG4gIFJlcGxhY2UsXHJcbiAgSW5zZXJ0LFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBSZHRZZWFySW5wdXRNb2RlIHtcclxuICBGb3VyRGlnaXQgPSAwYjAxLFxyXG4gIFR3b0RpZ2l0ID0gMGIxMCxcclxuICBCb3RoID0gMGIxMSxcclxufVxyXG5cclxuZXhwb3J0IGVudW0gUmR0TGVhZGluZ1plcm9JbnB1dE1vZGUge1xyXG4gIE5vTGVhZGluZ1plcm8gPSAwYjAxLFxyXG4gIExlYWRpbmdaZXJvID0gMGIxMCxcclxuICBCb3RoID0gMGIxMSxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUmR0VHdvRGlnaXRZZWFySW5wdXRDb252ZXJzaW9uU3RyYXRlZ3kgPSAncGFzdCcgfCAnZnV0dXJlJztcclxuXHJcbmZ1bmN0aW9uIGdldERpZ2l0Q291bnQodmFsdWU6IG51bWJlcikge1xyXG4gIHJldHVybiAoTWF0aC5sb2cxMCh2YWx1ZSkgKyAxKSB8IDA7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZHREYXRlUGFyc2VyIHtcclxuICBwcml2YXRlIGNmZzogUmR0RGF0ZUlucHV0Q29uZmlnO1xyXG4gIHByaXZhdGUgX3ZhbHVlOiBEYXRlIHwgbnVsbDtcclxuICBwcml2YXRlIF9pbnB1dFZhbHVlOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfcGFyc2VkRm9ybWF0OiBSZHRGb3JtYXROb2RlW107XHJcbiAgcHJpdmF0ZSBkZWxldGluZzogYm9vbGVhbjtcclxuICBwcml2YXRlIGNhcmV0UG9zaXRpb246IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoY2ZnOiBSZHREYXRlSW5wdXRDb25maWcpIHtcclxuICAgIHRoaXMuY2ZnID0gY2ZnO1xyXG4gICAgdGhpcy5faW5wdXRWYWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5fdmFsdWUgPSBudWxsO1xyXG4gICAgdGhpcy5fcGFyc2VkRm9ybWF0ID0gdGhpcy5wYXJzZUZvcm1hdChjZmcpO1xyXG4gICAgdGhpcy5kZWxldGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5jYXJldFBvc2l0aW9uID0gMDtcclxuICB9XHJcblxyXG4gIHNldCBsZWFkaW5nWmVyb01vZGUobW9kZTogUmR0TGVhZGluZ1plcm9JbnB1dE1vZGUpIHtcclxuICAgIHRoaXMuY2ZnLmxlYWRpbmdaZXJvTW9kZSA9IG1vZGU7XHJcbiAgICB0aGlzLl9wYXJzZWRGb3JtYXQgPSB0aGlzLnBhcnNlRm9ybWF0KHRoaXMuY2ZnKTtcclxuICB9XHJcbiAgZ2V0IGxlYWRpbmdaZXJvTW9kZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNmZy5sZWFkaW5nWmVyb01vZGU7XHJcbiAgfVxyXG5cclxuICBzZXQgeWVhcklucHV0TW9kZShtb2RlOiBSZHRZZWFySW5wdXRNb2RlKSB7XHJcbiAgICB0aGlzLmNmZy55ZWFySW5wdXRNb2RlID0gbW9kZTtcclxuICAgIHRoaXMuX3BhcnNlZEZvcm1hdCA9IHRoaXMucGFyc2VGb3JtYXQodGhpcy5jZmcpO1xyXG4gIH1cclxuICBnZXQgeWVhcklucHV0TW9kZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNmZy55ZWFySW5wdXRNb2RlO1xyXG4gIH1cclxuXHJcbiAgc2V0IHR3b0RpZ2l0WWVhcklucHV0U3RyYXRlZ3koXHJcbiAgICBzdHJhdGVneTogUmR0VHdvRGlnaXRZZWFySW5wdXRDb252ZXJzaW9uU3RyYXRlZ3lcclxuICApIHtcclxuICAgIHRoaXMuY2ZnLnR3b0RpZ2l0WWVhcklucHV0U3RyYXRlZ3kgPSBzdHJhdGVneTtcclxuICAgIHRoaXMuX3BhcnNlZEZvcm1hdCA9IHRoaXMucGFyc2VGb3JtYXQodGhpcy5jZmcpO1xyXG4gIH1cclxuICBnZXQgdHdvRGlnaXRZZWFySW5wdXRTdHJhdGVneSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNmZy50d29EaWdpdFllYXJJbnB1dFN0cmF0ZWd5O1xyXG4gIH1cclxuXHJcbiAgc2V0IGluc2VydE1vZGUobW9kZTogUmR0SW5zZXJ0TW9kZSkge1xyXG4gICAgdGhpcy5jZmcuaW5zZXJ0TW9kZSA9IG1vZGU7XHJcbiAgICB0aGlzLl9wYXJzZWRGb3JtYXQgPSB0aGlzLnBhcnNlRm9ybWF0KHRoaXMuY2ZnKTtcclxuICB9XHJcbiAgZ2V0IGluc2VydE1vZGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jZmcuaW5zZXJ0TW9kZTtcclxuICB9XHJcblxyXG4gIHNldCBmb3JtYXQoZm9ybWF0OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY2ZnLmZvcm1hdCA9IGZvcm1hdDtcclxuICAgIHRoaXMuX3BhcnNlZEZvcm1hdCA9IHRoaXMucGFyc2VGb3JtYXQodGhpcy5jZmcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZvcm1hdCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNmZy5mb3JtYXQ7XHJcbiAgfVxyXG5cclxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnKSB7XHJcbiAgICAgIHRoaXMuZGVsZXRpbmcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICB0aGlzLmNhcmV0UG9zaXRpb24gPSB0YXJnZXQuc2VsZWN0aW9uU3RhcnQgPz8gdGFyZ2V0LnZhbHVlLmxlbmd0aCAtIDE7XHJcbiAgfVxyXG5cclxuICBvbktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJykge1xyXG4gICAgICB0aGlzLmRlbGV0aW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0KGV2ZW50OiBJbnB1dEV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0LnZhbHVlO1xyXG4gICAgY29uc3QgY2FyZXRQb3NpdGlvbiA9IHRhcmdldC5zZWxlY3Rpb25TdGFydCA/PyB2YWx1ZS5sZW5ndGggLSAxO1xyXG4gICAgY29uc3QgcmVzID0gdGhpcy5wYXJzZSh2YWx1ZSwgY2FyZXRQb3NpdGlvbik7XHJcbiAgICB0YXJnZXQudmFsdWUgPSByZXMucHJldHR5SW5wdXQ7XHJcbiAgICBSZHRIVE1MVXRpbHMuc2V0Q2FyZXRQb3NpdGlvbih0YXJnZXQsIHJlcy5jYXJldCk7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHJlcy5kYXRlO1xyXG4gICAgdGhpcy5faW5wdXRWYWx1ZSA9IHJlcy5wcmV0dHlJbnB1dDtcclxuICAgIHRoaXMuY2FyZXRQb3NpdGlvbiA9IHJlcy5jYXJldDtcclxuICB9XHJcblxyXG4gIGdldCB2YWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcblxyXG4gIHNldCB2YWx1ZShkOiBEYXRlIHwgbnVsbCkge1xyXG4gICAgaWYgKCEoZCBpbnN0YW5jZW9mIERhdGUpKSB7XHJcbiAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5faW5wdXRWYWx1ZSA9ICcnO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgcmVzdWx0ID0gJyc7XHJcblxyXG4gICAgdGhpcy5fcGFyc2VkRm9ybWF0LmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcclxuICAgICAgICBjYXNlIFJkdEZvcm1hdFR5cGUuQ29uc3RhbnQ6XHJcbiAgICAgICAgICByZXN1bHQgKz0gbm9kZS52YWx1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgUmR0Rm9ybWF0VHlwZS5EYXk6XHJcbiAgICAgICAgICByZXN1bHQgKz0gYCR7ZC5nZXREYXRlKCl9YC5wYWRTdGFydChub2RlLm1pbkxlbmd0aCwgJzAnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgUmR0Rm9ybWF0VHlwZS5Nb250aDpcclxuICAgICAgICAgIHJlc3VsdCArPSBgJHtkLmdldE1vbnRoKCkgKyAxfWAucGFkU3RhcnQobm9kZS5taW5MZW5ndGgsICcwJyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFJkdEZvcm1hdFR5cGUuWWVhcjpcclxuICAgICAgICAgIHJlc3VsdCArPSBgJHtkLmdldEZ1bGxZZWFyKCkgJSAxMCAqKiBub2RlLm1heExlbmd0aH1gLnBhZFN0YXJ0KFxyXG4gICAgICAgICAgICBub2RlLm1pbkxlbmd0aCxcclxuICAgICAgICAgICAgJzAnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5fdmFsdWUgPSBkO1xyXG4gICAgdGhpcy5faW5wdXRWYWx1ZSA9IHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHNldCBpbnB1dFZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2lucHV0VmFsdWUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBpbnB1dFZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lucHV0VmFsdWU7XHJcbiAgfVxyXG5cclxuICBwYXJzZShcclxuICAgIGlucHV0OiBzdHJpbmcsXHJcbiAgICBjYXJldFBvc2l0aW9uID0gdGhpcy5jYXJldFBvc2l0aW9uLFxyXG4gICAgZGVsZXRpbmcgPSB0aGlzLmRlbGV0aW5nXHJcbiAgKSB7XHJcbiAgICBsZXQgcmVzdCA9IGlucHV0O1xyXG4gICAgbGV0IGRheTogbnVtYmVyIHwgbnVsbCA9IG51bGwsXHJcbiAgICAgIG1vbnRoOiBudW1iZXIgfCBudWxsID0gbnVsbCxcclxuICAgICAgeWVhcjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgbGV0IG91dHB1dCA9ICcnO1xyXG4gICAgbGV0IHRhcmdldENhcmV0ID0gY2FyZXRQb3NpdGlvbjtcclxuICAgIGxldCBhbGxDb21wbGV0ZSA9IHRydWU7XHJcbiAgICBsZXQgYW1iaWd1b3VzID0gZmFsc2U7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9wYXJzZWRGb3JtYXQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHJlc3QubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuX3BhcnNlZEZvcm1hdFtpXTtcclxuXHJcbiAgICAgIGNvbnN0IGZpcnN0TnVtYmVyID0gcmVzdC5zZWFyY2goL1xcZC8pO1xyXG5cclxuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gUmR0Rm9ybWF0VHlwZS5Db25zdGFudCkge1xyXG4gICAgICAgIGlmIChmaXJzdE51bWJlciA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlID0gZGVsZXRpbmdcclxuICAgICAgICAgICAgPyByZXN0LnN1YnN0cmluZygwLCBub2RlLnZhbHVlLmxlbmd0aClcclxuICAgICAgICAgICAgOiByZXN0LnN1YnN0cmluZygwLCBmaXJzdE51bWJlcik7XHJcbiAgICAgICAgICAvLyBJbiBjYXNlIHdlIGFyZSBkZWxldGluZyBmcm9tIHNlcGFyYXRvciwgZGVsZXRlIHByZXZpb3VzIG51bWJlciBhcyB3ZWxsXHJcbiAgICAgICAgICBpZiAoZGVsZXRpbmcgJiYgdmFsdWUgIT09IG5vZGUudmFsdWUpIHtcclxuICAgICAgICAgICAgaWYgKHJlc3QubGVuZ3RoID09PSBpbnB1dC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0YXJnZXRDYXJldCAtPSBub2RlLnZhbHVlLmxlbmd0aCAtIHZhbHVlLmxlbmd0aDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyaW5nKGZpcnN0TnVtYmVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3V0cHV0ICs9IG5vZGUudmFsdWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGZpcnN0TnVtYmVyIDwgMCkge1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGFyZ2V0Q2FyZXQgPiBvdXRwdXQubGVuZ3RoKSB7XHJcbiAgICAgICAgICBhbGxDb21wbGV0ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobm9kZS50eXBlID09PSBSZHRGb3JtYXRUeXBlLlllYXIpIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5jZmcueWVhcklucHV0TW9kZSAmIFJkdFllYXJJbnB1dE1vZGUuRm91ckRpZ2l0ICYmXHJcbiAgICAgICAgICAgIChyZXN0Lm1hdGNoKC9eXFxkezMsNH0vKSB8fFxyXG4gICAgICAgICAgICAgIChyZXN0Lm1hdGNoKC9eXFxkezJ9JC8pICYmIGkgIT09IHRoaXMuX3BhcnNlZEZvcm1hdC5sZW5ndGggLSAxKSlcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgIWRlbGV0aW5nICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5jZmcuaW5zZXJ0TW9kZSA9PT0gUmR0SW5zZXJ0TW9kZS5PdmVyd3JpdGUgJiZcclxuICAgICAgICAgICAgICByZXN0Lm1hdGNoKC9eXFxkezV9LykgJiZcclxuICAgICAgICAgICAgICBjYXJldFBvc2l0aW9uIDwgcmVzdC5sZW5ndGggJiZcclxuICAgICAgICAgICAgICBjYXJldFBvc2l0aW9uIC0gb3V0cHV0Lmxlbmd0aCA8PSA1ICYmXHJcbiAgICAgICAgICAgICAgUmR0U3RyaW5nVXRpbHMuaXNOdW1lcmljQ2hhcmFjdGVyKHJlc3RbY2FyZXRQb3NpdGlvbl0pXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIHJlc3QgPVxyXG4gICAgICAgICAgICAgICAgcmVzdC5zdWJzdHJpbmcoMCwgY2FyZXRQb3NpdGlvbikgK1xyXG4gICAgICAgICAgICAgICAgcmVzdC5zdWJzdHJpbmcoY2FyZXRQb3NpdGlvbiArIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChyZXN0Lm1hdGNoKC9eXFxkezR9LykpIHtcclxuICAgICAgICAgICAgICBjb25zdCBzdHJWYWwgPSByZXN0LnN1YnN0cmluZygwLCA0KTtcclxuICAgICAgICAgICAgICB5ZWFyID0gcGFyc2VJbnQoc3RyVmFsKTtcclxuICAgICAgICAgICAgICByZXN0ID0gcmVzdC5zdWJzdHJpbmcoNCk7XHJcbiAgICAgICAgICAgICAgb3V0cHV0ICs9IHN0clZhbDtcclxuICAgICAgICAgICAgICBpZiAoIWRlbGV0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAoeyByZXN0LCB0YXJnZXRDYXJldCB9ID0gdGhpcy51c2VVcE51bWJlcnNVbnRpbE5leHRTZXBhcmF0b3IoXHJcbiAgICAgICAgICAgICAgICAgIHJlc3QsXHJcbiAgICAgICAgICAgICAgICAgIHRhcmdldENhcmV0LFxyXG4gICAgICAgICAgICAgICAgICB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICBkZWxldGluZ1xyXG4gICAgICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3QubWF0Y2goL15cXGR7M30vKSkge1xyXG4gICAgICAgICAgICAgIG91dHB1dCArPSByZXN0LnN1YnN0cmluZygwLCAzKTtcclxuICAgICAgICAgICAgICByZXN0ID0gcmVzdC5zdWJzdHJpbmcoMyk7XHJcbiAgICAgICAgICAgICAgaWYgKG91dHB1dC5sZW5ndGggPD0gdGFyZ2V0Q2FyZXQpIHtcclxuICAgICAgICAgICAgICAgIGFsbENvbXBsZXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG91dHB1dCA9IHJlc3Quc3Vic3RyaW5nKDAsIDIpO1xyXG4gICAgICAgICAgICAgIHJlc3QgPSByZXN0LnN1YnN0cmluZygyKTtcclxuICAgICAgICAgICAgICBpZiAob3V0cHV0Lmxlbmd0aCA8PSB0YXJnZXRDYXJldCkge1xyXG4gICAgICAgICAgICAgICAgYWxsQ29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMuY2ZnLnllYXJJbnB1dE1vZGUgJiBSZHRZZWFySW5wdXRNb2RlLlR3b0RpZ2l0ICYmXHJcbiAgICAgICAgICAgIHJlc3QubWF0Y2goL15cXGR7Mn0vKSAmJlxyXG4gICAgICAgICAgICAodGhpcy5jb250YWluc05vbk51bWVyaWNDaGFyYWN0ZXJzKHJlc3Quc3Vic3RyaW5nKDIpKSB8fFxyXG4gICAgICAgICAgICAgIGkgPT09IHRoaXMuX3BhcnNlZEZvcm1hdC5sZW5ndGggLSAxKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0clZhbCA9IHJlc3Quc3Vic3RyaW5nKDAsIDIpO1xyXG4gICAgICAgICAgICBjb25zdCB5MiA9IHBhcnNlSW50KHN0clZhbCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNmZy50d29EaWdpdFllYXJJbnB1dFN0cmF0ZWd5ID09PSAncGFzdCcpIHtcclxuICAgICAgICAgICAgICB5ZWFyID0gUmR0RGF0ZVV0aWxzLmRvdWJsZURpZ2l0WWVhclRvUGFzdCh5Mik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgeWVhciA9IFJkdERhdGVVdGlscy5kb3VibGVEaWdpdFllYXJUb0Z1dHVyZSh5Mik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyaW5nKDIpO1xyXG4gICAgICAgICAgICBpZiAoIWRlbGV0aW5nKSB7XHJcbiAgICAgICAgICAgICAgKHsgcmVzdCwgdGFyZ2V0Q2FyZXQgfSA9IHRoaXMudXNlVXBOdW1iZXJzVW50aWxOZXh0U2VwYXJhdG9yKFxyXG4gICAgICAgICAgICAgICAgcmVzdCxcclxuICAgICAgICAgICAgICAgIHRhcmdldENhcmV0LFxyXG4gICAgICAgICAgICAgICAgdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGRlbGV0aW5nXHJcbiAgICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3V0cHV0ICs9IHN0clZhbDtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIHRoaXMuY2ZnLnllYXJJbnB1dE1vZGUgJiBSZHRZZWFySW5wdXRNb2RlLkZvdXJEaWdpdCAmJlxyXG4gICAgICAgICAgICAgIGkgPT09IHRoaXMuX3BhcnNlZEZvcm1hdC5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGFtYmlndW91cyA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAocmVzdC5tYXRjaCgvXlxcZC8pKSB7XHJcbiAgICAgICAgICAgIG91dHB1dCArPSByZXN0WzBdO1xyXG4gICAgICAgICAgICByZXN0ID0gcmVzdC5zdWJzdHJpbmcoMSk7XHJcbiAgICAgICAgICAgIGlmIChvdXRwdXQubGVuZ3RoIDw9IHRhcmdldENhcmV0KSB7XHJcbiAgICAgICAgICAgICAgYWxsQ29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAobm9kZS50eXBlID09PSBSZHRGb3JtYXRUeXBlLk1vbnRoKSB7XHJcbiAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLnJlYWROdW1iZXIoXHJcbiAgICAgICAgICAgIDEsXHJcbiAgICAgICAgICAgIDEyLFxyXG4gICAgICAgICAgICBvdXRwdXQsXHJcbiAgICAgICAgICAgIHJlc3QsXHJcbiAgICAgICAgICAgIHRhcmdldENhcmV0LFxyXG4gICAgICAgICAgICBkZWxldGluZ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIG91dHB1dCA9IHZhbC5vdXRwdXQ7XHJcbiAgICAgICAgICByZXN0ID0gdmFsLnJlc3Q7XHJcbiAgICAgICAgICB0YXJnZXRDYXJldCA9IHZhbC50YXJnZXRDYXJldDtcclxuICAgICAgICAgIGlmICh2YWwudmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgbW9udGggPSB2YWwudmFsdWU7XHJcbiAgICAgICAgICAgIC8vIEFkZCBzZXBhcmF0b3IgaW4gY2FzZSBpdCdzIGNvbXBsZXRlXHJcbiAgICAgICAgICAgIGlmICh2YWwuY29tcGxldGUgJiYgIWRlbGV0aW5nKSB7XHJcbiAgICAgICAgICAgICAgKHsgcmVzdCwgdGFyZ2V0Q2FyZXQgfSA9IHRoaXMudXNlVXBOdW1iZXJzVW50aWxOZXh0U2VwYXJhdG9yKFxyXG4gICAgICAgICAgICAgICAgcmVzdCxcclxuICAgICAgICAgICAgICAgIHRhcmdldENhcmV0LFxyXG4gICAgICAgICAgICAgICAgdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGRlbGV0aW5nXHJcbiAgICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF2YWwuY29tcGxldGUgJiYgb3V0cHV0Lmxlbmd0aCA8PSB0YXJnZXRDYXJldCkge1xyXG4gICAgICAgICAgICAgIGFsbENvbXBsZXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gUmR0Rm9ybWF0VHlwZS5EYXkpIHtcclxuICAgICAgICAgIGNvbnN0IHZhbCA9IHRoaXMucmVhZE51bWJlcihcclxuICAgICAgICAgICAgMSxcclxuICAgICAgICAgICAgMzEsXHJcbiAgICAgICAgICAgIG91dHB1dCxcclxuICAgICAgICAgICAgcmVzdCxcclxuICAgICAgICAgICAgdGFyZ2V0Q2FyZXQsXHJcbiAgICAgICAgICAgIGRlbGV0aW5nXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgb3V0cHV0ID0gdmFsLm91dHB1dDtcclxuICAgICAgICAgIHJlc3QgPSB2YWwucmVzdDtcclxuICAgICAgICAgIHRhcmdldENhcmV0ID0gdmFsLnRhcmdldENhcmV0O1xyXG4gICAgICAgICAgaWYgKHZhbC52YWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBkYXkgPSB2YWwudmFsdWU7XHJcbiAgICAgICAgICAgIC8vIEFkZCBzZXBhcmF0b3IgaW4gY2FzZSBpdCdzIGNvbXBsZXRlXHJcbiAgICAgICAgICAgIGlmICh2YWwuY29tcGxldGUgJiYgIWRlbGV0aW5nKSB7XHJcbiAgICAgICAgICAgICAgKHsgcmVzdCwgdGFyZ2V0Q2FyZXQgfSA9IHRoaXMudXNlVXBOdW1iZXJzVW50aWxOZXh0U2VwYXJhdG9yKFxyXG4gICAgICAgICAgICAgICAgcmVzdCxcclxuICAgICAgICAgICAgICAgIHRhcmdldENhcmV0LFxyXG4gICAgICAgICAgICAgICAgdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGRlbGV0aW5nXHJcbiAgICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF2YWwuY29tcGxldGUgJiYgb3V0cHV0Lmxlbmd0aCA8PSB0YXJnZXRDYXJldCkge1xyXG4gICAgICAgICAgICAgIGFsbENvbXBsZXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgZGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gICAgaWYgKHllYXIgIT09IG51bGwgJiYgbW9udGggIT09IG51bGwgJiYgZGF5ICE9PSBudWxsKSB7XHJcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XHJcbiAgICAgIGlmIChkYXRlLmdldE1vbnRoKCkgIT09IG1vbnRoIC0gMSkge1xyXG4gICAgICAgIGRhdGUgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGFyZ2V0Q2FyZXQgPSBNYXRoLm1pbih0YXJnZXRDYXJldCwgb3V0cHV0Lmxlbmd0aCArIDEpO1xyXG5cclxuICAgIGlmICghZGVsZXRpbmcpIHtcclxuICAgICAgaWYgKGNhcmV0UG9zaXRpb24gPT09IGlucHV0Lmxlbmd0aCkge1xyXG4gICAgICAgIHRhcmdldENhcmV0ID0gb3V0cHV0Lmxlbmd0aDtcclxuICAgICAgfSBlbHNlIGlmIChhbGxDb21wbGV0ZSkge1xyXG4gICAgICAgIHdoaWxlIChcclxuICAgICAgICAgIHRhcmdldENhcmV0ID4gMCAmJlxyXG4gICAgICAgICAgb3V0cHV0Lmxlbmd0aCA+IHRhcmdldENhcmV0ICYmXHJcbiAgICAgICAgICAhUmR0U3RyaW5nVXRpbHMuaXNOdW1lcmljQ2hhcmFjdGVyKG91dHB1dFt0YXJnZXRDYXJldF0pXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0YXJnZXRDYXJldCsrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICghZGF0ZSkge1xyXG4gICAgICBvdXRwdXQgPSBpbnB1dDtcclxuICAgICAgdGFyZ2V0Q2FyZXQgPSBjYXJldFBvc2l0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHByZXR0eUlucHV0OiBvdXRwdXQsXHJcbiAgICAgIGRhdGU6IGRhdGUsXHJcbiAgICAgIGNvbXBsZXRlOiBkYXRlICE9PSBudWxsLFxyXG4gICAgICBjYXJldDogdGFyZ2V0Q2FyZXQsXHJcbiAgICAgIGFtYmlndW91czogYW1iaWd1b3VzIHx8IGRhdGUgPT09IG51bGwsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkTnVtYmVyKFxyXG4gICAgbWluOiBudW1iZXIsXHJcbiAgICBtYXg6IG51bWJlcixcclxuICAgIG91dHB1dDogc3RyaW5nLFxyXG4gICAgcmVzdDogc3RyaW5nLFxyXG4gICAgdGFyZ2V0Q2FyZXQ6IG51bWJlcixcclxuICAgIGRlbGV0aW5nOiBib29sZWFuXHJcbiAgKSB7XHJcbiAgICBjb25zdCBtYXhEaWdpdHMgPSBnZXREaWdpdENvdW50KG1heCk7XHJcblxyXG4gICAgbGV0IHZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICAgIGxldCBzdHJWYWwgPSAnJztcclxuICAgIGxldCBjb21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgaWYgKCEodGhpcy5jZmcubGVhZGluZ1plcm9Nb2RlICYgUmR0TGVhZGluZ1plcm9JbnB1dE1vZGUuTm9MZWFkaW5nWmVybykpIHtcclxuICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBeXFxcXGR7JHttYXhEaWdpdHN9fWApO1xyXG4gICAgICBpZiAocmVzdC5tYXRjaChyZWdleCkpIHtcclxuICAgICAgICBzdHJWYWwgPSByZXN0LnN1YnN0cmluZygwLCBtYXhEaWdpdHMpO1xyXG4gICAgICAgIG91dHB1dCArPSBzdHJWYWw7XHJcbiAgICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyaW5nKG1heERpZ2l0cyk7XHJcbiAgICAgICAgdmFsdWUgPSBwYXJzZUludChzdHJWYWwpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgZGlnaXRzID0gcmVzdC5tYXRjaCgvXlxcZCsvKT8uWzBdID8/ICcnO1xyXG5cclxuICAgICAgaWYgKGRpZ2l0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZGlnaXRzID0gZGlnaXRzLnNsaWNlKDAsIG1heERpZ2l0cyk7XHJcbiAgICAgICAgdmFsdWUgPSBwYXJzZUludChkaWdpdHMpO1xyXG4gICAgICAgIGlmICh2YWx1ZSA8IG1pbikge1xyXG4gICAgICAgICAgdmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgbGV0IG5pbmVzID0gJzknO1xyXG4gICAgICAgICAgd2hpbGUgKFxyXG4gICAgICAgICAgICBkaWdpdHMubGVuZ3RoICsgMSA+IG1heERpZ2l0cyB8fFxyXG4gICAgICAgICAgICBwYXJzZUludChkaWdpdHMgKyBuaW5lcykgPCBtaW5cclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBkaWdpdHMgPSBkaWdpdHMuc2xpY2UoMCwgLTEpO1xyXG4gICAgICAgICAgICBuaW5lcyArPSAnOSc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHdoaWxlICh2YWx1ZSA+IG1heCAmJiBkaWdpdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBkaWdpdHMgPSBkaWdpdHMuc2xpY2UoMCwgLTEpO1xyXG4gICAgICAgICAgICB2YWx1ZSA9IHBhcnNlSW50KGRpZ2l0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZGlnaXRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGRpZ2l0c1swXSA9PT0gJzAnICYmXHJcbiAgICAgICAgICBtaW4gIT09IDAgJiZcclxuICAgICAgICAgICEodGhpcy5jZmcubGVhZGluZ1plcm9Nb2RlICYgUmR0TGVhZGluZ1plcm9JbnB1dE1vZGUuTGVhZGluZ1plcm8pXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICBkaWdpdHMgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG91dHB1dCArPSBkaWdpdHM7XHJcbiAgICAgIHJlc3QgPSByZXN0LnN1YnN0cmluZyhkaWdpdHMubGVuZ3RoKTtcclxuICAgICAgc3RyVmFsID0gZGlnaXRzO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSA+PSBtaW4gJiYgdmFsdWUgPD0gbWF4KSB7XHJcbiAgICAgIGNvbXBsZXRlID0gc3RyVmFsLmxlbmd0aCA9PT0gbWF4RGlnaXRzIHx8IHZhbHVlICogMTAgPiBtYXg7XHJcbiAgICAgICh7IHJlc3QsIHRhcmdldENhcmV0IH0gPSB0aGlzLnVzZVVwTnVtYmVyc1VudGlsTmV4dFNlcGFyYXRvcihcclxuICAgICAgICByZXN0LFxyXG4gICAgICAgIHRhcmdldENhcmV0LFxyXG4gICAgICAgIGNvbXBsZXRlICYmICFkZWxldGluZyxcclxuICAgICAgICBkZWxldGluZ1xyXG4gICAgICApKTtcclxuICAgICAgcmV0dXJuIHsgdmFsdWUsIGNvbXBsZXRlLCBvdXRwdXQsIHJlc3QsIHRhcmdldENhcmV0IH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4geyB2YWx1ZTogbnVsbCwgY29tcGxldGU6IGZhbHNlLCBvdXRwdXQsIHJlc3QsIHRhcmdldENhcmV0IH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcnNlRm9ybWF0KGNmZzogUmR0RGF0ZUlucHV0Q29uZmlnKSB7XHJcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY2ZnLnN5bWJvbE1ldGEpO1xyXG4gICAga2V5cy5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKTtcclxuXHJcbiAgICBsZXQgcmVzdCA9IGNmZy5mb3JtYXQ7XHJcbiAgICBjb25zdCByZXN1bHQ6IFJkdEZvcm1hdE5vZGVbXSA9IFtdO1xyXG5cclxuICAgIHdoaWxlIChyZXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgaW5kaWNlcyA9IGtleXMubWFwKChrZXkpID0+IHJlc3QuaW5kZXhPZihrZXkpKTtcclxuICAgICAgY29uc3QgbWluSSA9IGluZGljZXMuaW5kZXhPZihNYXRoLm1pbiguLi5pbmRpY2VzLmZpbHRlcigoaSkgPT4gaSA+PSAwKSkpO1xyXG4gICAgICBjb25zdCBtaW5JbmRleCA9IGluZGljZXNbbWluSV07XHJcbiAgICAgIGNvbnN0IG1pbktleSA9IGtleXNbbWluSV07XHJcblxyXG4gICAgICBpZiAobWluSW5kZXggPiAwKSB7XHJcbiAgICAgICAgcmVzdWx0LnB1c2goe1xyXG4gICAgICAgICAgdHlwZTogUmR0Rm9ybWF0VHlwZS5Db25zdGFudCxcclxuICAgICAgICAgIHZhbHVlOiByZXN0LnN1YnN0cmluZygwLCBtaW5JbmRleCksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyaW5nKG1pbkluZGV4KTtcclxuICAgICAgfSBlbHNlIGlmIChtaW5JbmRleCA8IDApIHtcclxuICAgICAgICByZXN1bHQucHVzaCh7XHJcbiAgICAgICAgICB0eXBlOiBSZHRGb3JtYXRUeXBlLkNvbnN0YW50LFxyXG4gICAgICAgICAgdmFsdWU6IHJlc3QsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmVzdCA9ICcnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc3VsdC5wdXNoKGNmZy5zeW1ib2xNZXRhW21pbktleV0pO1xyXG4gICAgICAgIHJlc3QgPSByZXN0LnN1YnN0cmluZyhtaW5JbmRleCArIG1pbktleS5sZW5ndGgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXNlVXBOdW1iZXJzVW50aWxOZXh0U2VwYXJhdG9yKFxyXG4gICAgaW5wdXQ6IHN0cmluZyxcclxuICAgIHRhcmdldENhcmV0OiBudW1iZXIsXHJcbiAgICBpbnNlcnRTZXBhcmF0b3I6IGJvb2xlYW4sXHJcbiAgICBkZWxldGluZzogYm9vbGVhblxyXG4gICkge1xyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgd2hpbGUgKGkgPCBpbnB1dC5sZW5ndGggJiYgUmR0U3RyaW5nVXRpbHMuaXNOdW1lcmljQ2hhcmFjdGVyKGlucHV0W2ldKSkge1xyXG4gICAgICBpKys7XHJcbiAgICB9XHJcbiAgICBpZiAoaSAhPT0gaW5wdXQubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcmVzdDogaW5wdXQuc3Vic3RyaW5nKGkpLFxyXG4gICAgICAgIHRhcmdldENhcmV0OiB0YXJnZXRDYXJldCAtIChkZWxldGluZyA/IGkgOiAwKSxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSBpZiAoaW5zZXJ0U2VwYXJhdG9yKSB7XHJcbiAgICAgIHJldHVybiB7IHJlc3Q6ICcgJyArIGlucHV0LCB0YXJnZXRDYXJldDogdGFyZ2V0Q2FyZXQgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IHJlc3Q6IGlucHV0LCB0YXJnZXRDYXJldCB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb250YWluc05vbk51bWVyaWNDaGFyYWN0ZXJzKGlucHV0OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBpbnB1dC5zZWFyY2goL1xcRC8pID49IDA7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { Observable } from 'rxjs';\nexport class RdtDomUtils {\n static getResizeEvent$(element) {\n return new Observable((observer) => {\n const resizeObserver = new ResizeObserver((entries) => {\n observer.next(entries);\n });\n resizeObserver.observe(element);\n return () => {\n resizeObserver.unobserve(element);\n resizeObserver.disconnect();\n };\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3V0aWxzL3NyYy9saWIvdXRpbHMvZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsTUFBTSxPQUFPLFdBQVc7SUFDdEIsTUFBTSxDQUFDLGVBQWUsQ0FDcEIsT0FBb0I7UUFFcEIsT0FBTyxJQUFJLFVBQVUsQ0FBd0IsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN4RCxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNwRCxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsY0FBYyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNoQyxPQUFPLEdBQUcsRUFBRTtnQkFDVixjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNsQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDOUIsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBSZHREb21VdGlscyB7XG4gIHN0YXRpYyBnZXRSZXNpemVFdmVudCQoXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnRcbiAgKTogT2JzZXJ2YWJsZTxSZXNpemVPYnNlcnZlckVudHJ5W10+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8UmVzaXplT2JzZXJ2ZXJFbnRyeVtdPigob2JzZXJ2ZXIpID0+IHtcbiAgICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICAgIG9ic2VydmVyLm5leHQoZW50cmllcyk7XG4gICAgICB9KTtcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZWxlbWVudCk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICByZXNpemVPYnNlcnZlci51bm9ic2VydmUoZWxlbWVudCk7XG4gICAgICAgIHJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { EXTENSION_BY_MIME_TYPE, MIME_TYPE_BY_EXTENSION, RdtMimeType, } from '../types/mime-types';\nexport var RdtMsOfficeAction;\n(function (RdtMsOfficeAction) {\n RdtMsOfficeAction[\"Edit\"] = \"ofe|u|\";\n RdtMsOfficeAction[\"View\"] = \"ofv|u|\";\n})(RdtMsOfficeAction || (RdtMsOfficeAction = {}));\nexport var RdtMsOfficeApp;\n(function (RdtMsOfficeApp) {\n RdtMsOfficeApp[\"Word\"] = \"ms-word\";\n RdtMsOfficeApp[\"Excel\"] = \"ms-excel\";\n RdtMsOfficeApp[\"PowerPoint\"] = \"ms-powerpoint\";\n})(RdtMsOfficeApp || (RdtMsOfficeApp = {}));\nexport const RDT_DEFAULT_MIME_TYPE = RdtMimeType.UNKNOWN;\nexport const RDT_DEFAULT_MS_OFFICE_ACTION = RdtMsOfficeAction.View;\nexport var RdtFileSizeUnit;\n(function (RdtFileSizeUnit) {\n RdtFileSizeUnit[\"B\"] = \"B\";\n RdtFileSizeUnit[\"KB\"] = \"KB\";\n RdtFileSizeUnit[\"MB\"] = \"MB\";\n RdtFileSizeUnit[\"GB\"] = \"GB\";\n RdtFileSizeUnit[\"TB\"] = \"TB\";\n RdtFileSizeUnit[\"PB\"] = \"PB\";\n RdtFileSizeUnit[\"EB\"] = \"EB\";\n RdtFileSizeUnit[\"ZB\"] = \"ZB\";\n RdtFileSizeUnit[\"YB\"] = \"YB\";\n})(RdtFileSizeUnit || (RdtFileSizeUnit = {}));\nconst SORTED_FILE_SIZE_UNITS = [\n RdtFileSizeUnit.B,\n RdtFileSizeUnit.KB,\n RdtFileSizeUnit.MB,\n RdtFileSizeUnit.GB,\n RdtFileSizeUnit.TB,\n RdtFileSizeUnit.PB,\n RdtFileSizeUnit.EB,\n RdtFileSizeUnit.ZB,\n RdtFileSizeUnit.YB,\n];\nexport class RdtFileUtils {\n static getMsOfficeLink(url, config) {\n const app = config.app ?? RdtFileUtils.getMsOfficeAppByMimeType(config.mimeType);\n if (app) {\n const action = config.action ?? RDT_DEFAULT_MS_OFFICE_ACTION;\n return `${app}:${action}${url}`;\n }\n else {\n return url;\n }\n }\n static openFileFromRemoteUrl(url, config) {\n window.open(RdtFileUtils.getMsOfficeLink(url, config));\n }\n static openFileInBrowser(stringData, mimeType) {\n const link = RdtFileUtils.getBase64Link(stringData, mimeType);\n window.open(link, '_blank');\n }\n static fileAsArrayBuffer(file) {\n return new Promise((resolve, reject) => {\n if (!file) {\n reject(null);\n }\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsArrayBuffer(file);\n });\n }\n static fileAsText(file, encoding) {\n return new Promise((resolve, reject) => {\n if (!file) {\n reject(null);\n }\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsText(file, encoding);\n });\n }\n static downloadFileFromData(stringData, filename, mimeType) {\n mimeType =\n mimeType ??\n RdtFileUtils.getMimeTypeFromFileName(filename) ??\n RdtFileUtils.getMimeTypeFromBase64(stringData);\n const url = RdtFileUtils.getBase64Link(stringData, mimeType);\n this.downloadFileFromRemoteUrl(url, filename, mimeType);\n }\n static downloadFileFromRemoteUrl(url, filename, mimeType) {\n mimeType = mimeType ?? RdtFileUtils.getMimeTypeFromFileName(filename);\n const link = document.createElement('a');\n link.href = url;\n link.download = RdtFileUtils.getFileName(filename, mimeType);\n link.click();\n }\n static getMimeTypeFromBase64(base64Data) {\n return base64Data.match(/data:(.*?);base64/)?.[1];\n }\n static getMimeTypeFromFileName(fileName) {\n const ext = fileName?.split('.').pop();\n // @ts-ignore\n return MIME_TYPE_BY_EXTENSION[ext];\n }\n static getFileName(filename, mimeType) {\n if (mimeType && mimeType !== RdtMimeType.UNKNOWN) {\n const ext = EXTENSION_BY_MIME_TYPE[mimeType];\n if (filename.endsWith(`.${ext}`)) {\n return filename;\n }\n else {\n return `${filename}.${ext}`;\n }\n }\n else {\n return filename;\n }\n }\n static getBase64Link(base64Data, mimeType) {\n if (base64Data.startsWith('data:')) {\n return base64Data;\n }\n else if (mimeType) {\n if (mimeType === RdtMimeType.UNKNOWN) {\n return `data:${RdtMimeType.BIN};base64,${base64Data}`;\n }\n else {\n return `data:${mimeType};base64,${base64Data}`;\n }\n }\n else {\n console.error('Missing mime type for base64 data.');\n return '';\n }\n }\n static getMimeTypeFromResponse(resp) {\n return resp.body?.type;\n }\n static getFileNameFromResponse(resp) {\n return (resp.headers\n .get('content-disposition')\n ?.split('filename=')?.[1]\n ?.split(';')?.[0] ?? '');\n }\n static async blobToDataUrl(file) {\n return new Promise((resolve, reject) => {\n if (!file) {\n reject(null);\n }\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsDataURL(file);\n });\n }\n static convertFromBytes(bytes, decimals = 2) {\n if (bytes === 0) {\n return '0 ' + RdtFileSizeUnit.B;\n }\n const k = 1024;\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return (parseFloat((bytes / Math.pow(k, i)).toFixed(decimals)) +\n ' ' +\n SORTED_FILE_SIZE_UNITS[i]);\n }\n static convertToBytes(amount, unit) {\n const k = 1024;\n const i = SORTED_FILE_SIZE_UNITS.indexOf(unit);\n return amount * Math.pow(k, i);\n }\n static fileSizeToBytes(fileSize) {\n const [amountStr, unitStr] = fileSize.split(' ');\n const amount = parseFloat(amountStr);\n const unit = unitStr;\n if (isNaN(amount) || SORTED_FILE_SIZE_UNITS.indexOf(unit) === -1) {\n return null;\n }\n return RdtFileUtils.convertToBytes(amount, unit);\n }\n static getMsOfficeAppByMimeType(mimeType) {\n switch (mimeType) {\n case RdtMimeType.DOC:\n case RdtMimeType.DOCX:\n case RdtMimeType.ODT:\n return RdtMsOfficeApp.Word;\n case RdtMimeType.XLS:\n case RdtMimeType.XLSX:\n case RdtMimeType.ODS:\n return RdtMsOfficeApp.Excel;\n case RdtMimeType.PPT:\n case RdtMimeType.PPTX:\n case RdtMimeType.ODP:\n return RdtMsOfficeApp.PowerPoint;\n default:\n return null;\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC91dGlscy9zcmMvbGliL3V0aWxzL2ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsV0FBVyxHQUNaLE1BQU0scUJBQXFCLENBQUM7QUFHN0IsTUFBTSxDQUFOLElBQVksaUJBR1g7QUFIRCxXQUFZLGlCQUFpQjtJQUMzQixvQ0FBZSxDQUFBO0lBQ2Ysb0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUc1QjtBQUVELE1BQU0sQ0FBTixJQUFZLGNBSVg7QUFKRCxXQUFZLGNBQWM7SUFDeEIsa0NBQWdCLENBQUE7SUFDaEIsb0NBQWtCLENBQUE7SUFDbEIsOENBQTRCLENBQUE7QUFDOUIsQ0FBQyxFQUpXLGNBQWMsS0FBZCxjQUFjLFFBSXpCO0FBMkJELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7QUFDekQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDO0FBRW5FLE1BQU0sQ0FBTixJQUFZLGVBVVg7QUFWRCxXQUFZLGVBQWU7SUFDekIsMEJBQU8sQ0FBQTtJQUNQLDRCQUFTLENBQUE7SUFDVCw0QkFBUyxDQUFBO0lBQ1QsNEJBQVMsQ0FBQTtJQUNULDRCQUFTLENBQUE7SUFDVCw0QkFBUyxDQUFBO0lBQ1QsNEJBQVMsQ0FBQTtJQUNULDRCQUFTLENBQUE7SUFDVCw0QkFBUyxDQUFBO0FBQ1gsQ0FBQyxFQVZXLGVBQWUsS0FBZixlQUFlLFFBVTFCO0FBSUQsTUFBTSxzQkFBc0IsR0FBRztJQUM3QixlQUFlLENBQUMsQ0FBQztJQUNqQixlQUFlLENBQUMsRUFBRTtJQUNsQixlQUFlLENBQUMsRUFBRTtJQUNsQixlQUFlLENBQUMsRUFBRTtJQUNsQixlQUFl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QUNFLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEFsbEVuY29kaW5nQWxpYXNlcyB9IGZyb20gJy4uL3R5cGVzL2VuY29kaW5ncyc7XHJcbmltcG9ydCB7XHJcbiAgRVhURU5TSU9OX0JZX01JTUVfVFlQRSxcclxuICBNSU1FX1RZUEVfQllfRVhURU5TSU9OLFxyXG4gIFJkdE1pbWVUeXBlLFxyXG59IGZyb20gJy4uL3R5cGVzL21pbWUtdHlwZXMnO1xyXG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4uL3R5cGVzL3R5cGUnO1xyXG5cclxuZXhwb3J0IGVudW0gUmR0TXNPZmZpY2VBY3Rpb24ge1xyXG4gIEVkaXQgPSAnb2ZlfHV8JyxcclxuICBWaWV3ID0gJ29mdnx1fCcsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFJkdE1zT2ZmaWNlQXBwIHtcclxuICBXb3JkID0gJ21zLXdvcmQnLFxyXG4gIEV4Y2VsID0gJ21zLWV4Y2VsJyxcclxuICBQb3dlclBvaW50ID0gJ21zLXBvd2VycG9pbnQnLFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJkdE1zT2ZmaWNlQ29uZmlnIHtcclxuICBtaW1lVHlwZT86IFJkdE1pbWVUeXBlO1xyXG4gIGFwcD86IFJkdE1zT2ZmaWNlQXBwO1xyXG4gIGFjdGlvbj86IFJkdE1zT2ZmaWNlQWN0aW9uO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJkdEZpbGU8VCA9IHN0cmluZz4ge1xyXG4gIGZpbGVOYW1lOiBzdHJpbmc7XHJcbiAgY29udGVudD86IFQ7XHJcbiAgdXJsPzogc3RyaW5nO1xyXG4gIG1pbWVUeXBlPzogUmR0TWltZVR5cGU7XHJcbiAgc2l6ZT86IG51bWJlcjtcclxuICBtb2RpZmllZD86IERhdGU7XHJcbiAgb3JpZ2luYWxGaWxlPzogRmlsZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEb2t1bWVudFByb3Rva29sIHtcclxuICBEb2t1bWVudFByb3Rva29sOiB7XHJcbiAgICBmaWxlbmFtZTogc3RyaW5nO1xyXG4gICAgY29udGVudF9kYXRhOiBzdHJpbmc7XHJcbiAgICBndWlkOiBzdHJpbmc7XHJcbiAgICBjb2RlOiBzdHJpbmc7XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFJEVF9ERUZBVUxUX01JTUVfVFlQRSA9IFJkdE1pbWVUeXBlLlVOS05PV047XHJcbmV4cG9ydCBjb25zdCBSRFRfREVGQVVMVF9NU19PRkZJQ0VfQUNUSU9OID0gUmR0TXNPZmZpY2VBY3Rpb24uVmlldztcclxuXHJcbmV4cG9ydCBlbnVtIFJkdEZpbGVTaXplVW5pdCB7XHJcbiAgQiA9ICdCJyxcclxuICBLQiA9ICdLQicsXHJcbiAgTUIgPSAnTUInLFxyXG4gIEdCID0gJ0dCJyxcclxuICBUQiA9ICdUQicsXHJcbiAgUEIgPSAnUEInLFxyXG4gIEVCID0gJ0VCJyxcclxuICBaQiA9ICdaQicsXHJcbiAgWUIgPSAnWUInLFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBSZHRGaWxlU2l6ZSA9IGAke251bWJlcn0gJHtSZHRGaWxlU2l6ZVVuaXR9YDtcclxuXHJcbmNvbnN0IFNPUlRFRF9GSUxFX1NJWkVfVU5JVFMgPSBbXHJcbiAgUmR0RmlsZVNpemVVbml0LkIsXHJcbiAgUmR0RmlsZVNpemVVbml0LktCLFxyXG4gIFJkdEZpbGVTaXplVW5pdC5NQixcclxuICBSZHRGaWxlU2l6ZVVuaXQuR0IsXHJcbiAgUmR0RmlsZVNpemVVbml0LlRCLFxyXG4gIFJkdEZpbGVTaXplVW5pdC5QQixcclxuICBSZHRGaWxlU2l6ZVVuaXQuRUIsXHJcbiAgUmR0RmlsZVNpemVVbml0LlpCLFxyXG4gIFJkdEZpbGVTaXplVW5pdC5ZQixcclxuXSBhcyBjb25zdDtcclxuXHJcbmV4cG9ydCBjbGFzcyBSZHRGaWxlVXRpbHMge1xyXG4gIHN0YXRpYyBnZXRNc09mZmljZUxpbmsodXJsOiBzdHJpbmcsIGNvbmZpZzogUmR0TXNPZmZpY2VDb25maWcpIHtcclxuICAgIGNvbnN0IGFwcCA9XHJcbiAgICAgIGNvbmZpZy5hcHAgPz8gUmR0RmlsZVV0aWxzLmdldE1zT2ZmaWNlQXBwQnlNaW1lVHlwZShjb25maWcubWltZVR5cGUpO1xyXG4gICAgaWYgKGFwcCkge1xyXG4gICAgICBjb25zdCBhY3Rpb24gPSBjb25maWcuYWN0aW9uID8/IFJEVF9ERUZBVUxUX01TX09GRklDRV9BQ1RJT047XHJcbiAgICAgIHJldHVybiBgJHthcHB9OiR7YWN0aW9ufSR7dXJsfWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdXJsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIG9wZW5GaWxlRnJvbVJlbW90ZVVybCh1cmw6IHN0cmluZywgY29uZmlnOiBSZHRNc09mZmljZUNvbmZpZykge1xyXG4gICAgd2luZG93Lm9wZW4oUmR0RmlsZVV0aWxzLmdldE1zT2ZmaWNlTGluayh1cmwsIGNvbmZpZykpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIG9wZW5GaWxlSW5Ccm93c2VyKHN0cmluZ0RhdGE6IHN0cmluZywgbWltZVR5cGU/OiBSZHRNaW1lVHlwZSkge1xyXG4gICAgY29uc3QgbGluayA9IFJkdEZpbGVVdGlscy5nZXRCYXNlNjRMaW5rKHN0cmluZ0RhdGEsIG1pbWVUeXBlKTtcclxuICAgIHdpbmRvdy5vcGVuKGxpbmssICdfYmxhbmsnKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBmaWxlQXNBcnJheUJ1ZmZlcihmaWxlOiBCbG9iKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgaWYgKCFmaWxlKSB7XHJcbiAgICAgICAgcmVqZWN0KG51bGwpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQgYXMgQXJyYXlCdWZmZXIpO1xyXG4gICAgICByZWFkZXIub25lcnJvciA9IHJlamVjdDtcclxuICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZmlsZUFzVGV4dChcclxuICAgIGZpbGU6IEJsb2IsXHJcbiAgICBlbmNvZGluZz86IEFsbEVuY29kaW5nQWxpYXNlc1xyXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAoIWZpbGUpIHtcclxuICAgICAgICByZWplY3QobnVsbCk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpO1xyXG4gICAgICByZWFkZXIub25lcnJvciA9IHJlamVjdDtcclxuICAgICAgcmVhZGVyLnJlYWRBc1RleHQoZmlsZSwgZW5jb2RpbmcpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZG93bmxvYWRGaWxlRnJvbURhdGEoXHJcbiAgICBzdHJpbmdEYXRhOiBzdHJpbmcsXHJcbiAgICBmaWxlbmFtZTogc3RyaW5nLFxyXG4gICAgbWltZVR5cGU/OiBSZHRNaW1lVHlwZVxyXG4gICk6IHZvaWQge1xyXG4gICAgbWltZVR5cGUgPVxyXG4gICAgICBtaW1lVHlwZSA/P1xyXG4gICAgICBSZHRGaWxlVXRpbHMuZ2V0TWltZVR5cGVGcm9tRmlsZU5hbWUoZmlsZW5hbWUpID8/XHJcbiAgICAgIFJkdEZpbGVVdGlscy5nZXRNaW1lVHlwZUZyb21CYXNlNjQoc3RyaW5nRGF0YSk7XHJcblxyXG4gICAgY29uc3QgdXJsID0gUmR0RmlsZVV0aWxzLmdldEJhc2U2NExpbmsoc3RyaW5nRGF0YSwgbWltZVR5cGUpO1xyXG5cclxuICAgIHRoaXMuZG93bmxvYWRGaWxlRnJvbVJlbW90ZVVybCh1cmwsIGZpbGVuYW1lLCBtaW1lVHlwZSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZG93bmxvYWRGaWxlRnJvbVJlbW90ZVVybChcclxuICAgIHVybDogc3RyaW5nLFxyXG4gICAgZmlsZW5hbWU6IHN0cmluZyxcclxuICAgIG1pbWVUeXBlPzogUmR0TWltZVR5cGVcclxuICApOiB2b2lkIHtcclxuICAgIG1pbWVUeXBlID0gbWltZVR5cGUgPz8gUmR0RmlsZVV0aWxzLmdldE1pbWVUeXBlRnJvbUZpbGVOYW1lKGZpbGVuYW1lKTtcclxuXHJcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgbGluay5ocmVmID0gdXJsO1xyXG4gICAgbGluay5kb3dubG9hZCA9IFJkdEZpbGVVdGlscy5nZXRGaWxlTmFtZShmaWxlbmFtZSwgbWltZVR5cGUpO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldE1pbWVUeXBlRnJvbUJhc2U2NChiYXNlNjREYXRhOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBiYXNlNjREYXRhLm1hdGNoKC9kYXRhOiguKj8pO2Jhc2U2NC8pPy5bMV0gYXNcclxuICAgICAgfCBSZHRNaW1lVHlwZVxyXG4gICAgICB8IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRNaW1lVHlwZUZyb21GaWxlTmFtZShcclxuICAgIGZpbGVOYW1lOiBOdWxsYWJsZTxzdHJpbmc+XHJcbiAgKTogUmR0TWltZVR5cGUgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3QgZXh0ID0gZmlsZU5hbWU/LnNwbGl0KCcuJykucG9wKCk7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICByZXR1cm4gTUlNRV9UWVBFX0JZX0VYVEVOU0lPTltleHRdO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEZpbGVOYW1lKGZpbGVuYW1lOiBzdHJpbmcsIG1pbWVUeXBlPzogUmR0TWltZVR5cGUpIHtcclxuICAgIGlmIChtaW1lVHlwZSAmJiBtaW1lVHlwZSAhPT0gUmR0TWltZVR5cGUuVU5LTk9XTikge1xyXG4gICAgICBjb25zdCBleHQgPSBFWFRFTlNJT05fQllfTUlNRV9UWVBFW21pbWVUeXBlXTtcclxuICAgICAgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKGAuJHtleHR9YCkpIHtcclxuICAgICAgICByZXR1cm4gZmlsZW5hbWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGAke2ZpbGVuYW1lfS4ke2V4dH1gO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmlsZW5hbWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0QmFzZTY0TGluayhiYXNlNjREYXRhOiBzdHJpbmcsIG1pbWVUeXBlPzogUmR0TWltZVR5cGUpIHtcclxuICAgIGlmIChiYXNlNjREYXRhLnN0YXJ0c1dpdGgoJ2RhdGE6JykpIHtcclxuICAgICAgcmV0dXJuIGJhc2U2NERhdGE7XHJcbiAgICB9IGVsc2UgaWYgKG1pbWVUeXBlKSB7XHJcbiAgICAgIGlmIChtaW1lVHlwZSA9PT0gUmR0TWltZVR5cGUuVU5LTk9XTikge1xyXG4gICAgICAgIHJldHVybiBgZGF0YToke1JkdE1pbWVUeXBlLkJJTn07YmFzZTY0LCR7YmFzZTY0RGF0YX1gO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBgZGF0YToke21pbWVUeXBlfTtiYXNlNjQsJHtiYXNlNjREYXRhfWA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ01pc3NpbmcgbWltZSB0eXBlIGZvciBiYXNlNjQgZGF0YS4nKTtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldE1pbWVUeXBlRnJvbVJlc3BvbnNlKHJlc3A6IEh0dHBSZXNwb25zZTxCbG9iPikge1xyXG4gICAgcmV0dXJuIHJlc3AuYm9keT8udHlwZSBhcyBSZHRNaW1lVHlwZTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRGaWxlTmFtZUZyb21SZXNwb25zZShyZXNwOiBIdHRwUmVzcG9uc2U8QmxvYj4pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgcmVzcC5oZWFkZXJzXHJcbiAgICAgICAgLmdldCgnY29udGVudC1kaXNwb3NpdGlvbicpXHJcbiAgICAgICAgPy5zcGxpdCgnZmlsZW5hbWU9Jyk/LlsxXVxyXG4gICAgICAgID8uc3BsaXQoJzsnKT8uWzBdID8/ICcnXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFzeW5jIGJsb2JUb0RhdGFVcmwoZmlsZTogQmxvYik6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAoIWZpbGUpIHtcclxuICAgICAgICByZWplY3QobnVsbCk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpO1xyXG4gICAgICByZWFkZXIub25lcnJvciA9IHJlamVjdDtcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjb252ZXJ0RnJvbUJ5dGVzKGJ5dGVzOiBudW1iZXIsIGRlY2ltYWxzID0gMikge1xyXG4gICAgaWYgKGJ5dGVzID09PSAwKSB7XHJcbiAgICAgIHJldHVybiAnMCAnICsgUmR0RmlsZVNpemVVbml0LkI7XHJcbiAgICB9XHJcbiAgICBjb25zdCBrID0gMTAyNDtcclxuICAgIGNvbnN0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZGVjaW1hbHMpKSArXHJcbiAgICAgICcgJyArXHJcbiAgICAgIFNPUlRFRF9GSUxFX1NJWkVfVU5JVFNbaV1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY29udmVydFRvQnl0ZXMoYW1vdW50OiBudW1iZXIsIHVuaXQ6IFJkdEZpbGVTaXplVW5pdCkge1xyXG4gICAgY29uc3QgayA9IDEwMjQ7XHJcbiAgICBjb25zdCBpID0gU09SVEVEX0ZJTEVfU0laRV9VTklUUy5pbmRleE9mKHVuaXQpO1xyXG4gICAgcmV0dXJuIGFtb3VudCAqIE1hdGgucG93KGssIGkpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZpbGVTaXplVG9CeXRlcyhmaWxlU2l6ZTogUmR0RmlsZVNpemUpIHtcclxuICAgIGNvbnN0IFthbW91bnRTdHIsIHVuaXRTdHJdID0gZmlsZVNpemUuc3BsaXQoJyAnKTtcclxuICAgIGNvbnN0IGFtb3VudCA9IHBhcnNlRmxvYXQoYW1vdW50U3RyKTtcclxuICAgIGNvbnN0IHVuaXQgPSB1bml0U3RyIGFzIFJkdEZpbGVTaXplVW5pdDtcclxuICAgIGlmIChpc05hTihhbW91bnQpIHx8IFNPUlRFRF9GSUxFX1NJWkVfVU5JVFMuaW5kZXhPZih1bml0KSA9PT0gLTEpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gUmR0RmlsZVV0aWxzLmNvbnZlcnRUb0J5dGVzKGFtb3VudCwgdW5pdCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0TXNPZmZpY2VBcHBCeU1pbWVUeXBlKFxyXG4gICAgbWltZVR5cGU6IFJkdE1pbWVUeXBlIHwgdW5kZWZpbmVkXHJcbiAgKTogUmR0TXNPZmZpY2VBcHAgfCBudWxsIHtcclxuICAgIHN3aXRjaCAobWltZVR5cGUpIHtcclxuICAgICAgY2FzZSBSZHRNaW1lVHlwZS5ET0M6XHJcbiAgICAgIGNhc2UgUmR0TWltZVR5cGUuRE9DWDpcclxuICAgICAgY2FzZSBSZHRNaW1lVHlwZS5PRFQ6XHJcbiAgICAgICAgcmV0dXJuIFJkdE1zT2ZmaWNlQXBwLldvcmQ7XHJcbiAgICAgIGNhc2UgUmR0TWltZVR5cGUuWExTOlxyXG4gICAgICBjYXNlIFJkdE1pbWVUeXBlLlhMU1g6XHJcbiAgICAgIGNhc2UgUmR0TWltZVR5cGUuT0RTOlxyXG4gICAgICAgIHJldHVybiBSZHRNc09mZmljZUFwcC5FeGNlbDtcclxuICAgICAgY2FzZSBSZHRNaW1lVHlwZS5QUFQ6XHJcbiAgICAgIGNhc2UgUmR0TWltZVR5cGUuUFBUWDpcclxuICAgICAgY2FzZSBSZHRNaW1lVHlwZS5PRFA6XHJcbiAgICAgICAgcmV0dXJuIFJkdE1zT2ZmaWNlQXBwLlBvd2VyUG9pbnQ7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==","/**\n * From @nx/devkit because it has nodejs as dependency and won't transpile.\n * Util function to generate different strings based off the provided name.\n *\n * Examples:\n *\n * ```typescript\n * names(\"my-name\") // {name: 'my-name', className: 'MyName', propertyName: 'myName', constantName: 'MY_NAME', fileName: 'my-name'}\n * names(\"myName\") // {name: 'myName', className: 'MyName', propertyName: 'myName', constantName: 'MY_NAME', fileName: 'my-name'}\n * ```\n * @param name\n */\nexport function names(name) {\n return {\n name,\n className: toClassName(name),\n propertyName: toPropertyName(name),\n constantName: toConstantName(name),\n fileName: toFileName(name),\n };\n}\n/**\n * Hyphenated to UpperCamelCase\n */\nfunction toClassName(str) {\n return toCapitalCase(toPropertyName(str));\n}\n/**\n * Hyphenated to lowerCamelCase\n */\nfunction toPropertyName(s) {\n return s\n .replace(/([^a-zA-Z0-9])+(.)?/g, (_, __, chr) => chr ? chr.toUpperCase() : '')\n .replace(/[^a-zA-Z\\d]/g, '')\n .replace(/^([A-Z])/, m => m.toLowerCase());\n}\n/**\n * Hyphenated to CONSTANT_CASE\n */\nfunction toConstantName(s) {\n const normalizedS = s.toUpperCase() === s ? s.toLowerCase() : s;\n return toFileName(toPropertyName(normalizedS))\n .replace(/([^a-zA-Z0-9])/g, '_')\n .toUpperCase();\n}\n/**\n * Upper camelCase to lowercase, hyphenated\n */\nfunction toFileName(s) {\n return s\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .toLowerCase()\n .replace(/(?!^_)[ _]/g, '-');\n}\n/**\n * Capitalizes the first letter of a string\n */\nfunction toCapitalCase(s) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvdXRpbHMvc3JjL2xpYi91dGlscy9uYW1lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsSUFBWTtJQU9oQyxPQUFPO1FBQ0wsSUFBSTtRQUNKLFNBQVMsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQzVCLFlBQVksRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDO1FBQ2xDLFlBQVksRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDO1FBQ2xDLFFBQVEsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDO0tBQzNCLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFdBQVcsQ0FBQyxHQUFXO0lBQzlCLE9BQU8sYUFBYSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsY0FBYyxDQUFDLENBQVM7SUFDL0IsT0FBTyxDQUFDO1NBQ0wsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUM5QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUM3QjtTQUNBLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1NBQzNCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGNBQWMsQ0FBQyxDQUFTO0lBQy9CLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLE9BQU8sVUFBVSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMzQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDO1NBQy9CLFdBQVcsRUFBRSxDQUFDO0FBQ25CLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsVUFBVSxDQUFDLENBQVM7SUFDM0IsT0FBTyxDQUFDO1NBQ0wsT0FBTyxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQztTQUNyQyxXQUFXLEVBQUU7U0FDYixPQUFPLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsYUFBYSxDQUFDLENBQVM7SUFDOUIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBGcm9tIEBueC9kZXZraXQgYmVjYXVzZSBpdCBoYXMgbm9kZWpzIGFzIGRlcGVuZGVuY3kgYW5kIHdvbid0IHRyYW5zcGlsZS5cclxuICogVXRpbCBmdW5jdGlvbiB0byBnZW5lcmF0ZSBkaWZmZXJlbnQgc3RyaW5ncyBiYXNlZCBvZmYgdGhlIHByb3ZpZGVkIG5hbWUuXHJcbiAqXHJcbiAqIEV4YW1wbGVzOlxyXG4gKlxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIG5hbWVzKFwibXktbmFtZVwiKSAvLyB7bmFtZTogJ215LW5hbWUnLCBjbGFzc05hbWU6ICdNeU5hbWUnLCBwcm9wZXJ0eU5hbWU6ICdteU5hbWUnLCBjb25zdGFudE5hbWU6ICdNWV9OQU1FJywgZmlsZU5hbWU6ICdteS1uYW1lJ31cclxuICogbmFtZXMoXCJteU5hbWVcIikgLy8ge25hbWU6ICdteU5hbWUnLCBjbGFzc05hbWU6ICdNeU5hbWUnLCBwcm9wZXJ0eU5hbWU6ICdteU5hbWUnLCBjb25zdGFudE5hbWU6ICdNWV9OQU1FJywgZmlsZU5hbWU6ICdteS1uYW1lJ31cclxuICogYGBgXHJcbiAqIEBwYXJhbSBuYW1lXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gbmFtZXMobmFtZTogc3RyaW5nKToge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBjbGFzc05hbWU6IHN0cmluZztcclxuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcclxuICBjb25zdGFudE5hbWU6IHN0cmluZztcclxuICBmaWxlTmFtZTogc3RyaW5nO1xyXG59IHtcclxuICByZXR1cm4ge1xyXG4gICAgbmFtZSxcclxuICAgIGNsYXNzTmFtZTogdG9DbGFzc05hbWUobmFtZSksXHJcbiAgICBwcm9wZXJ0eU5hbWU6IHRvUHJvcGVydHlOYW1lKG5hbWUpLFxyXG4gICAgY29uc3RhbnROYW1lOiB0b0NvbnN0YW50TmFtZShuYW1lKSxcclxuICAgIGZpbGVOYW1lOiB0b0ZpbGVOYW1lKG5hbWUpLFxyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBIeXBoZW5hdGVkIHRvIFVwcGVyQ2FtZWxDYXNlXHJcbiAqL1xyXG5mdW5jdGlvbiB0b0NsYXNzTmFtZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHRvQ2FwaXRhbENhc2UodG9Qcm9wZXJ0eU5hbWUoc3RyKSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBIeXBoZW5hdGVkIHRvIGxvd2VyQ2FtZWxDYXNlXHJcbiAqL1xyXG5mdW5jdGlvbiB0b1Byb3BlcnR5TmFtZShzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIHJldHVybiBzXHJcbiAgICAucmVwbGFjZSgvKFteYS16QS1aMC05XSkrKC4pPy9nLCAoXywgX18sIGNocikgPT5cclxuICAgICAgY2hyID8gY2hyLnRvVXBwZXJDYXNlKCkgOiAnJ1xyXG4gICAgKVxyXG4gICAgLnJlcGxhY2UoL1teYS16QS1aXFxkXS9nLCAnJylcclxuICAgIC5yZXBsYWNlKC9eKFtBLVpdKS8sIG0gPT4gbS50b0xvd2VyQ2FzZSgpKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEh5cGhlbmF0ZWQgdG8gQ09OU1RBTlRfQ0FTRVxyXG4gKi9cclxuZnVuY3Rpb24gdG9Db25zdGFudE5hbWUoczogc3RyaW5nKTogc3RyaW5nIHtcclxuICBjb25zdCBub3JtYWxpemVkUyA9IHMudG9VcHBlckNhc2UoKSA9PT0gcyA/IHMudG9Mb3dlckNhc2UoKSA6IHM7XHJcbiAgcmV0dXJuIHRvRmlsZU5hbWUodG9Qcm9wZXJ0eU5hbWUobm9ybWFsaXplZFMpKVxyXG4gICAgLnJlcGxhY2UoLyhbXmEtekEtWjAtOV0pL2csICdfJylcclxuICAgIC50b1VwcGVyQ2FzZSgpO1xyXG59XHJcblxyXG4vKipcclxuICogVXBwZXIgY2FtZWxDYXNlIHRvIGxvd2VyY2FzZSwgaHlwaGVuYXRlZFxyXG4gKi9cclxuZnVuY3Rpb24gdG9GaWxlTmFtZShzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIHJldHVybiBzXHJcbiAgICAucmVwbGFjZSgvKFthLXpcXGRdKShbQS1aXSkvZywgJyQxXyQyJylcclxuICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAucmVwbGFjZSgvKD8hXl8pWyBfXS9nLCAnLScpO1xyXG59XHJcblxyXG4vKipcclxuICogQ2FwaXRhbGl6ZXMgdGhlIGZpcnN0IGxldHRlciBvZiBhIHN0cmluZ1xyXG4gKi9cclxuZnVuY3Rpb24gdG9DYXBpdGFsQ2FzZShzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIHJldHVybiBzLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcy5zbGljZSgxKTtcclxufVxyXG4iXX0=","import { names } from './names';\nconst BOOLEAN_KEYWORDS = ['je', 'lze'];\nconst ID_KEYWORD = 'id';\nexport class RdtModelUtils {\n static inferPropertyInfo(properties, interfaceName) {\n // Lowercase words that interface name consists of\n const words = names(interfaceName).fileName.split('-');\n const wordMap = {};\n words.forEach((w) => (wordMap[w] = 1));\n let maxMatches = 0;\n // Primary key is property that shares the most words with interface name\n // while containing the word 'id'.\n // If more such properties exist, the one with shortest name is selected.\n let primaryKey = '';\n properties.forEach(({ key }) => {\n const propertyNameWords = names(key).fileName.split('-');\n let matches = 0;\n propertyNameWords.forEach((w) => (matches += wordMap[w] ?? 0));\n const isId = propertyNameWords.includes(ID_KEYWORD);\n if (matches > maxMatches && isId) {\n maxMatches = matches;\n primaryKey = key;\n }\n else if (matches === maxMatches && isId) {\n if (key.length < primaryKey.length) {\n primaryKey = key;\n }\n }\n });\n const res = properties.map((pair) => {\n const propertyNameWords = names(pair.key).fileName.split('-');\n const isId = propertyNameWords.includes(ID_KEYWORD);\n return {\n key: pair.key,\n type: pair.type,\n required: true,\n formControlType: pair.type === 'date' ? 'string' : pair.type,\n primaryKey: pair.key === primaryKey,\n // Any other property that contains ID, but is not primary key is foreign key.\n // Foreign keys are to be ignored.\n foreignKey: isId && pair.key !== primaryKey,\n // If the property starts with the word 'je' and it's numeric,\n // then it's probably boolean.\n probablyBoolean: BOOLEAN_KEYWORDS.includes(propertyNameWords[0]) &&\n pair.type === 'number',\n };\n });\n return res;\n }\n static names(name) {\n return names(name);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvdXRpbHMvc3JjL2xpYi91dGlscy9tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWhDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBRXhCLE1BQU0sT0FBTyxhQUFhO0lBQ3hCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FDdEIsVUFBMkMsRUFDM0MsYUFBcUI7UUFFckIsa0RBQWtEO1FBQ2xELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sT0FBTyxHQUE4QixFQUFFLENBQUM7UUFDOUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QyxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbkIseUVBQXlFO1FBQ3pFLGtDQUFrQztRQUNsQyx5RUFBeUU7UUFDekUsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBRXBCLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7WUFDN0IsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6RCxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7WUFDaEIsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvRCxNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFcEQsSUFBSSxPQUFPLEdBQUcsVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNqQyxVQUFVLEdBQUcsT0FBTyxDQUFDO2dCQUNyQixVQUFVLEdBQUcsR0FBRyxDQUFDO1lBQ25CLENBQUM7aUJBQU0sSUFBSSxPQUFPLEtBQUssVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUMxQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNuQyxVQUFVLEdBQUcsR0FBRyxDQUFDO2dCQUNuQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxHQUFHLEdBQXVCLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN0RCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5RCxNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDcEQsT0FBTztnQkFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFXO2dCQUN0QixRQUFRLEVBQUUsSUFBSTtnQkFDZCxlQUFlLEVBQUUsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLElBQVk7Z0JBQ3JFLFVBQVUsRUFBRSxJQUFJLENBQUMsR0FBRyxLQUFLLFVBQVU7Z0JBQ25DLDhFQUE4RTtnQkFDOUUsa0NBQWtDO2dCQUNsQyxVQUFVLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssVUFBVTtnQkFDM0MsOERBQThEO2dCQUM5RCw4QkFBOEI7Z0JBQzlCLGVBQWUsRUFDYixnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9DLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUTthQUN6QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQVk7UUFDdkIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbmFtZXMgfSBmcm9tICcuL25hbWVzJztcclxuXHJcbmNvbnN0IEJPT0xFQU5fS0VZV09SRFMgPSBbJ2plJywgJ2x6ZSddO1xyXG5jb25zdCBJRF9LRVlXT1JEID0gJ2lkJztcclxuXHJcbmV4cG9ydCBjbGFzcyBSZHRNb2RlbFV0aWxzIHtcclxuICBzdGF0aWMgaW5mZXJQcm9wZXJ0eUluZm8oXHJcbiAgICBwcm9wZXJ0aWVzOiB7IGtleTogc3RyaW5nOyB0eXBlOiBzdHJpbmcgfVtdLFxyXG4gICAgaW50ZXJmYWNlTmFtZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICAvLyBMb3dlcmNhc2Ugd29yZHMgdGhhdCBpbnRlcmZhY2UgbmFtZSBjb25zaXN0cyBvZlxyXG4gICAgY29uc3Qgd29yZHMgPSBuYW1lcyhpbnRlcmZhY2VOYW1lKS5maWxlTmFtZS5zcGxpdCgnLScpO1xyXG4gICAgY29uc3Qgd29yZE1hcDogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xyXG4gICAgd29yZHMuZm9yRWFjaCgodykgPT4gKHdvcmRNYXBbd10gPSAxKSk7XHJcbiAgICBsZXQgbWF4TWF0Y2hlcyA9IDA7XHJcbiAgICAvLyBQcmltYXJ5IGtleSBpcyBwcm9wZXJ0eSB0aGF0IHNoYXJlcyB0aGUgbW9zdCB3b3JkcyB3aXRoIGludGVyZmFjZSBuYW1lXHJcbiAgICAvLyB3aGlsZSBjb250YWluaW5nIHRoZSB3b3JkICdpZCcuXHJcbiAgICAvLyBJZiBtb3JlIHN1Y2ggcHJvcGVydGllcyBleGlzdCwgdGhlIG9uZSB3aXRoIHNob3J0ZXN0IG5hbWUgaXMgc2VsZWN0ZWQuXHJcbiAgICBsZXQgcHJpbWFyeUtleSA9ICcnO1xyXG5cclxuICAgIHByb3BlcnRpZXMuZm9yRWFjaCgoeyBrZXkgfSkgPT4ge1xyXG4gICAgICBjb25zdCBwcm9wZXJ0eU5hbWVXb3JkcyA9IG5hbWVzKGtleSkuZmlsZU5hbWUuc3BsaXQoJy0nKTtcclxuICAgICAgbGV0IG1hdGNoZXMgPSAwO1xyXG4gICAgICBwcm9wZXJ0eU5hbWVXb3Jkcy5mb3JFYWNoKCh3KSA9PiAobWF0Y2hlcyArPSB3b3JkTWFwW3ddID8/IDApKTtcclxuICAgICAgY29uc3QgaXNJZCA9IHByb3BlcnR5TmFtZVdvcmRzLmluY2x1ZGVzKElEX0tFWVdPUkQpO1xyXG5cclxuICAgICAgaWYgKG1hdGNoZXMgPiBtYXhNYXRjaGVzICYmIGlzSWQpIHtcclxuICAgICAgICBtYXhNYXRjaGVzID0gbWF0Y2hlcztcclxuICAgICAgICBwcmltYXJ5S2V5ID0ga2V5O1xyXG4gICAgICB9IGVsc2UgaWYgKG1hdGNoZXMgPT09IG1heE1hdGNoZXMgJiYgaXNJZCkge1xyXG4gICAgICAgIGlmIChrZXkubGVuZ3RoIDwgcHJpbWFyeUtleS5sZW5ndGgpIHtcclxuICAgICAgICAgIHByaW1hcnlLZXkgPSBrZXk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCByZXM6IFJkdE1vZGVsUHJvcGVydHlbXSA9IHByb3BlcnRpZXMubWFwKChwYWlyKSA9PiB7XHJcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZVdvcmRzID0gbmFtZXMocGFpci5rZXkpLmZpbGVOYW1lLnNwbGl0KCctJyk7XHJcbiAgICAgIGNvbnN0IGlzSWQgPSBwcm9wZXJ0eU5hbWVXb3Jkcy5pbmNsdWRlcyhJRF9LRVlXT1JEKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBrZXk6IHBhaXIua2V5LFxyXG4gICAgICAgIHR5cGU6IHBhaXIudHlwZSBhcyBhbnksXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgZm9ybUNvbnRyb2xUeXBlOiBwYWlyLnR5cGUgPT09ICdkYXRlJyA/ICdzdHJpbmcnIDogKHBhaXIudHlwZSBhcyBhbnkpLFxyXG4gICAgICAgIHByaW1hcnlLZXk6IHBhaXIua2V5ID09PSBwcmltYXJ5S2V5LFxyXG4gICAgICAgIC8vIEFueSBvdGhlciBwcm9wZXJ0eSB0aGF0IGNvbnRhaW5zIElELCBidXQgaXMgbm90IHByaW1hcnkga2V5IGlzIGZvcmVpZ24ga2V5LlxyXG4gICAgICAgIC8vIEZvcmVpZ24ga2V5cyBhcmUgdG8gYmUgaWdub3JlZC5cclxuICAgICAgICBmb3JlaWduS2V5OiBpc0lkICYmIHBhaXIua2V5ICE9PSBwcmltYXJ5S2V5LFxyXG4gICAgICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBzdGFydHMgd2l0aCB0aGUgd29yZCAnamUnIGFuZCBpdCdzIG51bWVyaWMsXHJcbiAgICAgICAgLy8gdGhlbiBpdCdzIHByb2JhYmx5IGJvb2xlYW4uXHJcbiAgICAgICAgcHJvYmFibHlCb29sZWFuOlxyXG4gICAgICAgICAgQk9PTEVBTl9LRVlXT1JEUy5pbmNsdWRlcyhwcm9wZXJ0eU5hbWVXb3Jkc1swXSkgJiZcclxuICAgICAgICAgIHBhaXIudHlwZSA9PT0gJ251bWJlcicsXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIG5hbWVzKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIG5hbWVzKG5hbWUpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZHRNb2RlbFByb3BlcnR5IHtcclxuICBrZXk6IHN0cmluZztcclxuICB0eXBlOiAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2RhdGUnIHwgJ2Jvb2xlYW4nIHwgJ2FycmF5JyB8ICdvYmplY3QnIHwgJ2FueSc7XHJcbiAgZm9ybUNvbnRyb2xUeXBlOiAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2Jvb2xlYW4nIHwgJ2FycmF5JyB8ICdvYmplY3QnIHwgJ2FueSc7XHJcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XHJcbiAgZm9yZWlnbktleTogYm9vbGVhbjtcclxuICBwcmltYXJ5S2V5OiBib29sZWFuO1xyXG4gIHByb2JhYmx5Qm9vbGVhbjogYm9vbGVhbjtcclxufVxyXG4iXX0=","export class RdtObjectUtils {\n static pluck(obj, path) {\n if (!obj) {\n return undefined;\n }\n const parts = Array.isArray(path) ? path : path.split('.');\n let current = obj;\n for (const key of parts) {\n if (current == undefined) {\n return undefined;\n }\n if (Array.isArray(current) && typeof key === 'string') {\n current = current[parseInt(key)];\n }\n else {\n current = current[key];\n }\n }\n return current;\n }\n static notNullGuard(value) {\n return value != null;\n }\n static expandKey(key, value) {\n const parts = key.split('.');\n if (parts.length === 0) {\n return value;\n }\n const first = getObjectFromKey(parts[0]);\n let current = first;\n for (let i = 1; i < parts.length; i++) {\n const next = getObjectFromKey(parts[i]);\n current.obj[current.key] = next.obj;\n current = next;\n }\n current.obj[current.key] = value;\n return first.obj;\n }\n static someValuesTrue(obj) {\n const keys = Object.getOwnPropertySymbols(obj);\n return keys.some((key) => obj[key]);\n }\n}\nfunction getObjectFromKey(key) {\n const int = parseInt(key);\n if (isNaN(int)) {\n return {\n obj: {},\n key: key,\n };\n }\n else {\n return {\n obj: [],\n key: int,\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3V0aWxzL3NyYy9saWIvdXRpbHMvb2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQUksR0FBTSxFQUFFLElBQWtDO1FBQ3hELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0QsSUFBSSxPQUFPLEdBQVEsR0FBRyxDQUFDO1FBRXZCLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDeEIsSUFBSSxPQUFPLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ3pCLE9BQU8sU0FBUyxDQUFDO1lBQ25CLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3RELE9BQU8sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBSSxLQUEyQjtRQUNoRCxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBVyxFQUFFLEtBQVU7UUFDdEMsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXBCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdEMsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNwQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFFakMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQTRCO1FBQ2hELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7Q0FDRjtBQUVELFNBQVMsZ0JBQWdCLENBQUMsR0FBVztJQUNuQyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNmLE9BQU87WUFDTCxHQUFHLEVBQUUsRUFBUztZQUNkLEdBQUcsRUFBRSxHQUFHO1NBQ0EsQ0FBQztJQUNiLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTztZQUNMLEdBQUcsRUFBRSxFQUFXO1lBQ2hCLEdBQUcsRUFBRSxHQUFHO1NBQ0EsQ0FBQztJQUNiLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFJkdE9iamVjdFV0aWxzIHtcclxuICBzdGF0aWMgcGx1Y2s8VD4ob2JqOiBULCBwYXRoOiBzdHJpbmcgfCAoc3RyaW5nIHwgbnVtYmVyKVtdKSB7XHJcbiAgICBpZiAoIW9iaikge1xyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGFydHMgPSBBcnJheS5pc0FycmF5KHBhdGgpID8gcGF0aCA6IHBhdGguc3BsaXQoJy4nKTtcclxuICAgIGxldCBjdXJyZW50OiBhbnkgPSBvYmo7XHJcblxyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgcGFydHMpIHtcclxuICAgICAgaWYgKGN1cnJlbnQgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50KSAmJiB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W3BhcnNlSW50KGtleSldO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjdXJyZW50O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIG5vdE51bGxHdWFyZDxUPih2YWx1ZTogVCB8IHVuZGVmaW5lZCB8IG51bGwpOiB2YWx1ZSBpcyBUIHtcclxuICAgIHJldHVybiB2YWx1ZSAhPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGV4cGFuZEtleShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgY29uc3QgcGFydHMgPSBrZXkuc3BsaXQoJy4nKTtcclxuICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZmlyc3QgPSBnZXRPYmplY3RGcm9tS2V5KHBhcnRzWzBdKTtcclxuICAgIGxldCBjdXJyZW50ID0gZmlyc3Q7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBuZXh0ID0gZ2V0T2JqZWN0RnJvbUtleShwYXJ0c1tpXSk7XHJcbiAgICAgIGN1cnJlbnQub2JqW2N1cnJlbnQua2V5XSA9IG5leHQub2JqO1xyXG4gICAgICBjdXJyZW50ID0gbmV4dDtcclxuICAgIH1cclxuICAgIGN1cnJlbnQub2JqW2N1cnJlbnQua2V5XSA9IHZhbHVlO1xyXG5cclxuICAgIHJldHVybiBmaXJzdC5vYmo7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc29tZVZhbHVlc1RydWUob2JqOiBSZWNvcmQ8c3ltYm9sLCBib29sZWFuPikge1xyXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqKTtcclxuICAgIHJldHVybiBrZXlzLnNvbWUoKGtleSkgPT4gb2JqW2tleV0pO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0T2JqZWN0RnJvbUtleShrZXk6IHN0cmluZykge1xyXG4gIGNvbnN0IGludCA9IHBhcnNlSW50KGtleSk7XHJcbiAgaWYgKGlzTmFOKGludCkpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG9iajoge30gYXMgYW55LFxyXG4gICAgICBrZXk6IGtleSxcclxuICAgIH0gYXMgY29uc3Q7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG9iajogW10gYXMgYW55W10sXHJcbiAgICAgIGtleTogaW50LFxyXG4gICAgfSBhcyBjb25zdDtcclxuICB9XHJcbn1cclxuIl19","export class RdtRandomUtils {\n static randomId() {\n return Math.random().toString(36).substring(2);\n }\n static trueFalse() {\n return Math.random() < 0.5;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3V0aWxzL3NyYy9saWIvdXRpbHMvcmFuZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFDN0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFJkdFJhbmRvbVV0aWxzIHtcbiAgc3RhdGljIHJhbmRvbUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKTtcbiAgfVxuXG4gIHN0YXRpYyB0cnVlRmFsc2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgPCAwLjU7XG4gIH1cbn1cbiJdfQ==","import { Observable, combineLatest, map, startWith, switchMap, EMPTY, of, } from 'rxjs';\nexport class RdtRxUtils {\n // Will repeat last value when notifier$ emits anything.\n static repeatLatestWhen(notifier$) {\n return (source) => {\n return combineLatest([source, notifier$.pipe(startWith(null))]).pipe(map(([val]) => val));\n };\n }\n static completeIfNull(source$) {\n return source$.pipe(switchMap((value) => (value == null ? EMPTY : of(value))));\n }\n static makeObservable(value) {\n return value instanceof Observable ? value : of(value);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnhqcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC91dGlscy9zcmMvbGliL3V0aWxzL3J4anMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixhQUFhLEVBQ2IsR0FBRyxFQUNILFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUNMLEVBQUUsR0FDSCxNQUFNLE1BQU0sQ0FBQztBQUVkLE1BQU0sT0FBTyxVQUFVO0lBQ3JCLHdEQUF3RDtJQUN4RCxNQUFNLENBQUMsZ0JBQWdCLENBQUksU0FBMEI7UUFDbkQsT0FBTyxDQUFDLE1BQXFCLEVBQUUsRUFBRTtZQUMvQixPQUFPLGFBQWEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2xFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUNwQixDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUksT0FBc0I7UUFDN0MsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUNqQixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUMxRCxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUksS0FBd0I7UUFDL0MsT0FBTyxLQUFLLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIE9ic2VydmFibGUsXHJcbiAgY29tYmluZUxhdGVzdCxcclxuICBtYXAsXHJcbiAgc3RhcnRXaXRoLFxyXG4gIHN3aXRjaE1hcCxcclxuICBFTVBUWSxcclxuICBvZixcclxufSBmcm9tICdyeGpzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBSZHRSeFV0aWxzIHtcclxuICAvLyBXaWxsIHJlcGVhdCBsYXN0IHZhbHVlIHdoZW4gbm90aWZpZXIkIGVtaXRzIGFueXRoaW5nLlxyXG4gIHN0YXRpYyByZXBlYXRMYXRlc3RXaGVuPFQ+KG5vdGlmaWVyJDogT2JzZXJ2YWJsZTxhbnk+KSB7XHJcbiAgICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxUPikgPT4ge1xyXG4gICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbc291cmNlLCBub3RpZmllciQucGlwZShzdGFydFdpdGgobnVsbCkpXSkucGlwZShcclxuICAgICAgICBtYXAoKFt2YWxdKSA9PiB2YWwpXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNvbXBsZXRlSWZOdWxsPFQ+KHNvdXJjZSQ6IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPE5vbk51bGxhYmxlPFQ+PiB7XHJcbiAgICByZXR1cm4gc291cmNlJC5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PiAodmFsdWUgPT0gbnVsbCA/IEVNUFRZIDogb2YodmFsdWUpKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbWFrZU9ic2VydmFibGU8VD4odmFsdWU6IFQgfCBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBPYnNlcnZhYmxlID8gdmFsdWUgOiBvZih2YWx1ZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { assertInInjectionContext, DestroyRef, effect, inject, Injector, untracked, } from '@angular/core';\nexport function signalToPromise(source, options) {\n if (ngDevMode && !options?.injector) {\n assertInInjectionContext(signalToPromise);\n }\n const injector = options?.injector ?? inject(Injector);\n return new Promise((resolve, reject) => {\n const watcher = effect(() => {\n let value;\n try {\n value = source();\n }\n catch (err) {\n untracked(() => reject(err));\n return;\n }\n untracked(() => resolve(value));\n }, { injector, manualCleanup: true });\n injector.get(DestroyRef).onDestroy(() => {\n watcher.destroy();\n });\n });\n}\nexport function signalToPromiseOnce(source, options) {\n const injector = options?.injector ?? inject(Injector);\n return new Promise((resolve, reject) => {\n let watcher = null;\n watcher = effect(() => {\n let value;\n try {\n value = source();\n }\n catch (err) {\n untracked(() => reject(err));\n watcher?.destroy();\n watcher = null;\n return;\n }\n untracked(() => {\n resolve(value);\n watcher?.destroy();\n watcher = null;\n });\n }, { injector, manualCleanup: true });\n const destroyRef = injector.get(DestroyRef, null);\n destroyRef?.onDestroy(() => {\n watcher?.destroy();\n watcher = null;\n });\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLXRvLXByb21pc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvdXRpbHMvc3JjL2xpYi91dGlscy9zaWduYWwtdG8tcHJvbWlzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFFUixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsTUFBaUIsRUFDakIsT0FBNkI7SUFFN0IsSUFBSSxTQUFTLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDcEMsd0JBQXdCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELE1BQU0sUUFBUSxHQUFHLE9BQU8sRUFBRSxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZELE9BQU8sSUFBSSxPQUFPLENBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDeEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUNwQixHQUFHLEVBQUU7WUFDSCxJQUFJLEtBQVEsQ0FBQztZQUNiLElBQUksQ0FBQztnQkFDSCxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUM7WUFDbkIsQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM3QixPQUFPO1lBQ1QsQ0FBQztZQUNELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNsQyxDQUFDLEVBQ0QsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUNsQyxDQUFDO1FBRUYsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3RDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsTUFBaUIsRUFDakIsT0FBNkI7SUFFN0IsTUFBTSxRQUFRLEdBQUcsT0FBTyxFQUFFLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkQsT0FBTyxJQUFJLE9BQU8sQ0FBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUN4QyxJQUFJLE9BQU8sR0FBcUMsSUFBSSxDQUFDO1FBQ3JELE9BQU8sR0FBRyxNQUFNLENBQ2QsR0FBRyxFQUFFO1lBQ0gsSUFBSSxLQUFRLENBQUM7WUFDYixJQUFJLENBQUM7Z0JBQ0gsS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQ25CLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUNuQixPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNmLE9BQU87WUFDVCxDQUFDO1lBQ0QsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2YsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUNuQixPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxFQUNELEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FDbEMsQ0FBQztRQUNGLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xELFVBQVUsRUFBRSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3pCLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUNuQixPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0LFxuICBEZXN0cm95UmVmLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgSW5qZWN0b3IsXG4gIFNpZ25hbCxcbiAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvT2JzZXJ2YWJsZU9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxUb1Byb21pc2U8VD4oXG4gIHNvdXJjZTogU2lnbmFsPFQ+LFxuICBvcHRpb25zPzogVG9PYnNlcnZhYmxlT3B0aW9uc1xuKTogUHJvbWlzZTxUPiB7XG4gIGlmIChuZ0Rldk1vZGUgJiYgIW9wdGlvbnM/LmluamVjdG9yKSB7XG4gICAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KHNpZ25hbFRvUHJvbWlzZSk7XG4gIH1cbiAgY29uc3QgaW5qZWN0b3IgPSBvcHRpb25zPy5pbmplY3RvciA/PyBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZTxUPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgd2F0Y2hlciA9IGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgbGV0IHZhbHVlOiBUO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHZhbHVlID0gc291cmNlKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiByZWplY3QoZXJyKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHVudHJhY2tlZCgoKSA9PiByZXNvbHZlKHZhbHVlKSk7XG4gICAgICB9LFxuICAgICAgeyBpbmplY3RvciwgbWFudWFsQ2xlYW51cDogdHJ1ZSB9XG4gICAgKTtcblxuICAgIGluamVjdG9yLmdldChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgd2F0Y2hlci5kZXN0cm95KCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsVG9Qcm9taXNlT25jZTxUPihcbiAgc291cmNlOiBTaWduYWw8VD4sXG4gIG9wdGlvbnM/OiBUb09ic2VydmFibGVPcHRpb25zXG4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgaW5qZWN0b3IgPSBvcHRpb25zPy5pbmplY3RvciA/PyBpbmplY3QoSW5qZWN0b3IpO1xuICByZXR1cm4gbmV3IFByb21pc2U8VD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGxldCB3YXRjaGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBlZmZlY3Q+IHwgbnVsbCA9IG51bGw7XG4gICAgd2F0Y2hlciA9IGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgbGV0IHZhbHVlOiBUO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHZhbHVlID0gc291cmNlKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiByZWplY3QoZXJyKSk7XG4gICAgICAgICAgd2F0Y2hlcj8uZGVzdHJveSgpO1xuICAgICAgICAgIHdhdGNoZXIgPSBudWxsO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgICAgIHdhdGNoZXI/LmRlc3Ryb3koKTtcbiAgICAgICAgICB3YXRjaGVyID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgeyBpbmplY3RvciwgbWFudWFsQ2xlYW51cDogdHJ1ZSB9XG4gICAgKTtcbiAgICBjb25zdCBkZXN0cm95UmVmID0gaW5qZWN0b3IuZ2V0KERlc3Ryb3lSZWYsIG51bGwpO1xuICAgIGRlc3Ryb3lSZWY/Lm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICB3YXRjaGVyPy5kZXN0cm95KCk7XG4gICAgICB3YXRjaGVyID0gbnVsbDtcbiAgICB9KTtcbiAgfSk7XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyZHQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9AbmdyZHQvdXRpbHMvc3JjL25ncmR0LXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":";;;AAAU,IAAC;AACX,CAAC,UAAU,WAAW,EAAE;AACxB,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,OAAO;AAClC,IAAI,WAAW,CAAC,SAAS,CAAC,GAAG,QAAQ;AACrC,IAAI,WAAW,CAAC,YAAY,CAAC,GAAG,YAAY;AAC5C,IAAI,WAAW,CAAC,YAAY,CAAC,GAAG,YAAY;AAC5C,IAAI,WAAW,CAAC,YAAY,CAAC,GAAG,YAAY;AAC5C,IAAI,WAAW,CAAC,YAAY,CAAC,GAAG,YAAY;AAC5C,IAAI,WAAW,CAAC,YAAY,CAAC,GAAG,YAAY;AAC5C,IAAI,WAAW,CAAC,YAAY,CAAC,GAAG,YAAY;AAC5C,IAAI,WAAW,CAAC,YAAY,CAAC,GAAG,YAAY;AAC5C,IAAI,WAAW,CAAC,cAAc,CAAC,GAAG,cAAc;AAChD,IAAI,WAAW,CAAC,aAAa,CAAC,GAAG,aAAa;AAC9C,IAAI,WAAW,CAAC,aAAa,CAAC,GAAG,aAAa;AAC9C,IAAI,WAAW,CAAC,aAAa,CAAC,GAAG,aAAa;AAC9C,IAAI,WAAW,CAAC,aAAa,CAAC,GAAG,aAAa;AAC9C,IAAI,WAAW,CAAC,aAAa,CAAC,GAAG,aAAa;AAC9C,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,QAAQ;AACpC,IAAI,WAAW,CAAC,WAAW,CAAC,GAAG,WAAW;AAC1C,IAAI,WAAW,CAAC,aAAa,CAAC,GAAG,aAAa;AAC9C,IAAI,WAAW,CAAC,cAAc,CAAC,GAAG,cAAc;AAChD,IAAI,WAAW,CAAC,cAAc,CAAC,GAAG,cAAc;AAChD,IAAI,WAAW,CAAC,cAAc,CAAC,GAAG,cAAc;AAChD,IAAI,WAAW,CAAC,cAAc,CAAC,GAAG,cAAc;AAChD,IAAI,WAAW,CAAC,cAAc,CAAC,GAAG,cAAc;AAChD,IAAI,WAAW,CAAC,cAAc,CAAC,GAAG,cAAc;AAChD,IAAI,WAAW,CAAC,cAAc,CAAC,GAAG,cAAc;AAChD,IAAI,WAAW,CAAC,cAAc,CAAC,GAAG,cAAc;AAChD,IAAI,WAAW,CAAC,cAAc,CAAC,GAAG,cAAc;AAChD,IAAI,WAAW,CAAC,gBAAgB,CAAC,GAAG,gBAAgB;AACpD,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK;AAC9B,IAAI,WAAW,CAAC,SAAS,CAAC,GAAG,SAAS;AACtC,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM;AAChC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,QAAQ;AACpC,IAAI,WAAW,CAAC,aAAa,CAAC,GAAG,aAAa;AAC9C,IAAI,WAAW,CAAC,WAAW,CAAC,GAAG,WAAW;AAC1C,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,QAAQ;AACpC,IAAI,WAAW,CAAC,YAAY,CAAC,GAAG,YAAY;AAC5C,IAAI,WAAW,CAAC,aAAa,CAAC,GAAG,aAAa;AAC9C,IAAI,WAAW,CAAC,iBAAiB,CAAC,GAAG,iBAAiB;AACtD,IAAI,WAAW,CAAC,aAAa,CAAC,GAAG,aAAa;AAC9C,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,QAAQ;AACpC,IAAI,WAAW,CAAC,gBAAgB,CAAC,GAAG,gBAAgB;AACpD,CAAC,EAAE,WAAW,KAAK,WAAW,GAAG,EAAE,CAAC,CAAC;;AC3CzB,MAAC,KAAK,GAAG;AACrB,IAAI,EAAE,EAAE,SAAS;AACjB,IAAI,IAAI,EAAE,WAAW;AACrB,IAAI,IAAI,EAAE,WAAW;AACrB,IAAI,KAAK,EAAE,YAAY;AACvB;AACY,MAAC,MAAM,GAAG;AACtB,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,KAAK,EAAE,KAAK;AAChB;AACY,MAAC,OAAO,GAAG;AACvB,IAAI,GAAG,MAAM;AACb,IAAI,QAAQ,EAAE,OAAO;AACrB;AACA,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AACzD,MAAC,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;AACrE,MAAC,iBAAiB,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;;ACrB5E,IAAC;AACX,CAAC,UAAU,WAAW,EAAE;AACxB,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,yEAAyE;AACnG,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,mEAAmE;AAC7F,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,iBAAiB;AAC1C,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,YAAY;AACrC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,UAAU;AACnC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,iBAAiB;AAC1C,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,YAAY;AACrC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW;AACpC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW;AACpC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,eAAe;AACxC,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW;AACrC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,iBAAiB;AAC1C,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,kBAAkB;AAC5C,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,YAAY;AACrC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW;AACpC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW;AACpC,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,YAAY;AACtC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW;AACpC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,iBAAiB;AAC1C,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,YAAY;AACtC,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,YAAY;AACtC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,cAAc;AACvC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,UAAU;AACnC,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW;AACrC,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,YAAY;AACvC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,+BAA+B;AACxD,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,UAAU;AACnC,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,2EAA2E;AACrG,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,+BAA+B;AACxD,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,0BAA0B;AACnD,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,oBAAoB;AAC7C,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,yCAAyC;AAClE,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,gDAAgD;AACzE,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,iDAAiD;AAC1E,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,4CAA4C;AACrE,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,qBAAqB;AAC9C,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,mBAAmB;AAC5C,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,kBAAkB;AAC5C,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,qBAAqB;AAChD,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,kBAAkB;AAC1C,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,6BAA6B;AACzD,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,8BAA8B;AACxD,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,gBAAgB;AACzC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,gBAAgB;AACzC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,aAAa;AACtC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW;AACpC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,0BAA0B;AACnD,IAAI,WAAW,CAAC,SAAS,CAAC,GAAG,SAAS;AACtC,CAAC,EAAE,WAAW,KAAK,WAAW,GAAG,EAAE,CAAC,CAAC;AAC3B,IAAC;AACX,CAAC,UAAU,mBAAmB,EAAE;AAChC,IAAI,mBAAmB,CAAC,OAAO,CAAC,GAAG,SAAS;AAC5C,IAAI,mBAAmB,CAAC,OAAO,CAAC,GAAG,SAAS;AAC5C,IAAI,mBAAmB,CAAC,OAAO,CAAC,GAAG,SAAS;AAC5C,IAAI,mBAAmB,CAAC,MAAM,CAAC,GAAG,QAAQ;AAC1C,IAAI,mBAAmB,CAAC,UAAU,CAAC,GAAG,wKAAwK;AAC9M,IAAI,mBAAmB,CAAC,aAAa,CAAC,GAAG,2IAA2I;AACpL,IAAI,mBAAmB,CAAC,cAAc,CAAC,GAAG,yJAAyJ;AACnM,IAAI,mBAAmB,CAAC,SAAS,CAAC,GAAG,sKAAsK;AAC3M,CAAC,EAAE,mBAAmB,KAAK,mBAAmB,GAAG,EAAE,CAAC,CAAC;AACzC,MAAC,sBAAsB,GAAG;AACtC,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,MAAM;AAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,MAAM;AAC9B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,MAAM;AAC9B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,MAAM;AAC9B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,MAAM;AAC9B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,MAAM;AAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,MAAM;AAC9B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,MAAM;AAC9B,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,OAAO;AAChC,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,MAAM;AAC9B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI;AAC5B,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK;AAC9B,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,IAAI;AAC1B,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI;AAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,KAAK;AAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK;AAC5B,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,SAAS;AACpC;AACY,MAAC,sBAAsB,GAAG;AACtC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE;AACnE,IAAI,sBAAsB,CAAC,KAAK,CAAC,GAAG,GAAG;AACvC;;ACnHO,MAAM,aAAa,CAAC;AAC3B,IAAI,OAAO,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE;AAClC,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;AAC/C,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,6BAA6B,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5F;AACA,QAAQ,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACpE;AACA,IAAI,OAAO,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;AACxC,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;AAC/C,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,6BAA6B,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5F;AACA,QAAQ,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtE;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE;AACzB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACtB,YAAY,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5B;AACA,QAAQ,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3E;AACA;;ACnBO,MAAM,WAAW,CAAC;AACzB,IAAI,OAAO,cAAc,CAAC,KAAK,EAAE;AACjC,QAAQ,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE;AACvC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AACzC,YAAY,OAAO,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC;AACvD;AACA,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AAC9C,YAAY,OAAO,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC;AACvD;AACA,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;AAC/C,YAAY,OAAO,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC;AACxD;AACA,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,OAAO,YAAY,CAAC,KAAK,EAAE;AAC/B,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC;AACzD,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B;AACA,IAAI,OAAO,YAAY,CAAC,KAAK,EAAE;AAC/B,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC;AACzD,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D;AACA,IAAI,OAAO,aAAa,CAAC,KAAK,EAAE;AAChC,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;AAC1D,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E;AACA,IAAI,OAAO,UAAU,CAAC,KAAK,EAAE;AAC7B,QAAQ,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/C;AACA,IAAI,OAAO,UAAU,CAAC,KAAK,EAAE;AAC7B,QAAQ,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/C;AACA,IAAI,OAAO,WAAW,CAAC,KAAK,EAAE;AAC9B,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAChD;AACA,IAAI,OAAO,QAAQ,GAAG,mHAAmH;AACzI,IAAI,OAAO,SAAS,GAAG,8IAA8I;AACrK,IAAI,OAAO,QAAQ,GAAG,uCAAuC;AAC7D;;AC/CO,MAAM,YAAY,CAAC;AAC1B,IAAI,OAAO,EAAE,GAAG,CAAC;AACjB,IAAI,OAAO,MAAM,GAAG,IAAI,GAAG,YAAY,CAAC,EAAE;AAC1C,IAAI,OAAO,MAAM,GAAG,EAAE,GAAG,YAAY,CAAC,MAAM;AAC5C,IAAI,OAAO,IAAI,GAAG,EAAE,GAAG,YAAY,CAAC,MAAM;AAC1C,IAAI,OAAO,GAAG,GAAG,EAAE,GAAG,YAAY,CAAC,IAAI;AACvC;AACA;AACA;AACA;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE;AACzB,QAAQ,QAAQ,YAAY,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,YAAY,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;AAClD;AACA,IAAI,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;AACvC,QAAQ,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC;AAChD,QAAQ,QAAQ,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI;AACxC,YAAY,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,KAAK;AACtC,YAAY,CAAC,CAAC,OAAO,EAAE,KAAK,GAAG;AAC/B;AACA,IAAI,OAAO,WAAW,CAAC,KAAK,EAAE;AAC9B,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;AAC3B,YAAY,OAAO,KAAK;AACxB;AACA,QAAQ,IAAI,KAAK,YAAY,IAAI,EAAE;AACnC,YAAY,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AAC1C;AACA,QAAQ,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AAChD;AACA,IAAI,OAAO,UAAU,CAAC,KAAK,EAAE;AAC7B,QAAQ,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AACpC,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACjC,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,OAAO,QAAQ,CAAC,KAAK,EAAE;AAC3B,QAAQ,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AACpC,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACjC,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,OAAO,YAAY,CAAC,KAAK,EAAE;AAC/B,QAAQ,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AACpC,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACvB,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,OAAO,UAAU,CAAC,KAAK,EAAE;AAC7B,QAAQ,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AACpC,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACvB,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,OAAO,WAAW,CAAC,IAAI,EAAE;AAC7B,QAAQ,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/C;AACA,IAAI,OAAO,SAAS,CAAC,IAAI,EAAE;AAC3B,QAAQ,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;AACjD;AACA,IAAI,OAAO,oBAAoB,GAAG;AAClC,QAAQ,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AAChC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;AACrC,YAAY,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1D;AACA,aAAa;AACb,YAAY,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACzE;AACA;AACA,IAAI,OAAO,cAAc,GAAG;AAC5B,QAAQ,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AAChC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;AACrC,YAAY,MAAM,qBAAqB,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACjF,YAAY,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC;AAC1D;AACA,aAAa,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;AAC1C,YAAY,MAAM,qBAAqB,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACjF,YAAY,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC;AAC1D;AACA,aAAa;AACb,YAAY,MAAM,qBAAqB,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAChG,YAAY,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC;AAC1D;AACA;AACA,IAAI,OAAO,wBAAwB,GAAG;AACtC,QAAQ,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AAChC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;AACrC,YAAY,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1D;AACA,aAAa,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;AAC1C,YAAY,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1D;AACA,aAAa;AACb,YAAY,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACzE;AACA;AACA,IAAI,OAAO,sBAAsB,GAAG;AACpC,QAAQ,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AAChC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;AACpC,YAAY,MAAM,sBAAsB,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAClF,YAAY,OAAO,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;AAC3D;AACA,aAAa,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;AAC1C,YAAY,MAAM,sBAAsB,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAClF,YAAY,OAAO,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;AAC3D;AACA,aAAa,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;AAC1C,YAAY,MAAM,sBAAsB,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAClF,YAAY,OAAO,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;AAC3D;AACA,aAAa;AACb,YAAY,MAAM,sBAAsB,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACjG,YAAY,OAAO,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;AAC3D;AACA;AACA,IAAI,OAAO,WAAW,CAAC,IAAI,EAAE;AAC7B,QAAQ,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC;AAC1D;AACA,IAAI,OAAO,UAAU,CAAC,CAAC,EAAE;AACzB,QAAQ,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE;AACpC,QAAQ,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC5D,QAAQ,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACrD,QAAQ,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACxD,QAAQ,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC5D,QAAQ,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC5D,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACvE;AACA,IAAI,OAAO,UAAU,CAAC,IAAI,EAAE;AAC5B,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,EAAE;AAChE,YAAY,OAAO,EAAE;AACrB;AACA,QAAQ,MAAM,CAAC,GAAG,IAAI,YAAY,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;AAC9D,QAAQ,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AACzC,YAAY,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE;AACxC,YAAY,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAChE,YAAY,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACzD,YAAY,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC5C;AACA,aAAa;AACb,YAAY,OAAO,EAAE;AACrB;AACA;AACA,IAAI,OAAO,UAAU,CAAC,IAAI,EAAE;AAC5B,QAAQ,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;AAChC,QAAQ,IAAI,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnD,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC;AAClE,YAAY,IAAI,OAAO,EAAE;AACzB,gBAAgB,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9C,gBAAgB,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9C,gBAAgB,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9C,gBAAgB,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/C,gBAAgB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAC1C,gBAAgB,OAAO,IAAI;AAC3B;AACA;AACA,aAAa,IAAI,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACtD,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC;AAChE,YAAY,IAAI,OAAO,EAAE;AACzB,gBAAgB,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9C,gBAAgB,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9C,gBAAgB,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9C,gBAAgB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtC,gBAAgB,OAAO,IAAI;AAC3B;AACA;AACA,aAAa,IAAI,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACpD,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC;AAC9D,YAAY,IAAI,OAAO,EAAE;AACzB,gBAAgB,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9C,gBAAgB,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9C,gBAAgB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;AACnC,gBAAgB,OAAO,IAAI;AAC3B;AACA;AACA,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE;AAC/B,QAAQ,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;AACtC,QAAQ,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC;AACtD,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC;AAC3H;AACA,QAAQ,OAAO,OAAO;AACtB;AACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,EAAE;AAC1C,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC3D,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC7D,QAAQ,IAAI,WAAW,EAAE;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACjE,YAAY,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtC;AACA,aAAa;AACb,YAAY,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChC;AACA;AACA,IAAI,OAAO,WAAW,CAAC,KAAK,EAAE;AAC9B,QAAQ,IAAI,KAAK,YAAY,IAAI,EAAE;AACnC,YAAY,OAAO,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI;AACjE;AACA,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AACxC,YAAY,IAAI,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;AAChD,gBAAgB,OAAO,IAAI;AAC3B;AACA;AACA,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,OAAO,KAAK,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,KAAK,YAAY,IAAI,EAAE;AACnC,YAAY,OAAO,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI;AAC3E;AACA,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AACxC,YAAY,IAAI,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;AAChD,gBAAgB,OAAO,IAAI,CAAC,OAAO,EAAE;AACrC;AACA;AACA,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,OAAO,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3B,QAAQ,IAAI,EAAE,KAAK,EAAE,EAAE;AACvB,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE;AACxB,YAAY,OAAO,KAAK;AACxB;AACA,QAAQ,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE;AAC5C;AACA,IAAI,OAAO,UAAU,CAAC,IAAI,EAAE;AAC5B,QAAQ,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE;AACrD;AACA,IAAI,OAAO,aAAa,CAAC,IAAI,EAAE;AAC/B,QAAQ,OAAO,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG;AACxD;AACA,IAAI,OAAO,SAAS,GAAG,4DAA4D;AACnF,IAAI,OAAO,WAAW,GAAG,+EAA+E;AACxG,IAAI,OAAO,aAAa,GAAG,qGAAqG;AAChI,IAAI,OAAO,aAAa,GAAG;AAC3B,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC7D,KAAK;AACL,IAAI,OAAO,qBAAqB,GAAG;AACnC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC7D,KAAK;AACL,IAAI,OAAO,YAAY,CAAC,IAAI,EAAE;AAC9B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;AAC3C,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC/D,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;AACrG,QAAQ,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE;AAC/C,YAAY,QAAQ,IAAI,GAAG,GAAG;AAC9B,gBAAgB,cAAc;AAC9B,gBAAgB,YAAY,CAAC,qBAAqB,CAAC,KAAK,GAAG,CAAC,CAAC;AAC7D,gBAAgB,GAAG;AACnB,gBAAgB,CAAC;AACjB;AACA,aAAa;AACb,YAAY,QAAQ,IAAI,GAAG,GAAG;AAC9B,gBAAgB,cAAc;AAC9B,gBAAgB,YAAY,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC;AACrD,gBAAgB,GAAG;AACnB,gBAAgB,CAAC;AACjB;AACA;AACA,IAAI,OAAO,qBAAqB,CAAC,KAAK,EAAE;AACxC;AACA;AACA,QAAQ,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,EAAE;AACzD,QAAQ,MAAM,QAAQ,GAAG,WAAW,GAAG,GAAG;AAC1C,QAAQ,IAAI,KAAK,IAAI,QAAQ,EAAE;AAC/B,YAAY,OAAO,KAAK,GAAG,WAAW,GAAG,QAAQ;AACjD;AACA,aAAa;AACb,YAAY,OAAO,KAAK,GAAG,WAAW,GAAG,QAAQ,GAAG,GAAG;AACvD;AACA;AACA,IAAI,OAAO,uBAAuB,CAAC,KAAK,EAAE;AAC1C;AACA;AACA,QAAQ,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,EAAE;AACzD,QAAQ,MAAM,QAAQ,GAAG,WAAW,GAAG,GAAG;AAC1C,QAAQ,IAAI,KAAK,IAAI,QAAQ,EAAE;AAC/B,YAAY,OAAO,KAAK,GAAG,WAAW,GAAG,QAAQ;AACjD;AACA,aAAa;AACb,YAAY,OAAO,KAAK,GAAG,WAAW,GAAG,QAAQ,GAAG,GAAG;AACvD;AACA;AACA,IAAI,OAAO,cAAc,GAAG;AAC5B,QAAQ,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACvC;AACA,IAAI,OAAO,YAAY,CAAC,YAAY,EAAE,gBAAgB,EAAE;AACxD,QAAQ,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC;AAChD,QAAQ,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC;AACxD,QAAQ,IAAI,GAAG,GAAG,aAAa,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,WAAW,EAAE;AACvE,QAAQ,MAAM,eAAe,GAAG,aAAa,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE;AAC/E,QAAQ,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE;AAC3E,QAAQ,IAAI,eAAe,GAAG,CAAC,KAAK,eAAe,KAAK,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE;AACjF,YAAY,GAAG,EAAE;AACjB;AACA,QAAQ,OAAO,GAAG;AAClB;AACA;AACU,IAAC;AACX,CAAC,UAAU,KAAK,EAAE;AAClB,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS;AAC3C,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU;AAC7C,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO;AACvC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO;AACvC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;AACnC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AACrC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AACrC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ;AACzC,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW;AAC/C,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS;AAC3C,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,UAAU;AAC9C,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,UAAU;AAC9C,CAAC,EAAE,KAAK,KAAK,KAAK,GAAG,EAAE,CAAC,CAAC;;ACxTlB,MAAM,YAAY,CAAC;AAC1B,IAAI,OAAO,sCAAsC,CAAC,OAAO,EAAE;AAC3D,QAAQ,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa;AAC/C,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,YAAY;AACZ;AACA,QAAQ,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU;AAC3C,QAAQ,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW;AAC3C,QAAQ,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW;AACpD,QAAQ,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU;AAClD,QAAQ,MAAM,SAAS,GAAG,QAAQ;AAClC,QAAQ,MAAM,UAAU,GAAG,QAAQ,GAAG,cAAc,GAAG,OAAO;AAC9D,QAAQ,IAAI,aAAa,GAAG,SAAS,EAAE;AACvC,YAAY,SAAS,CAAC,UAAU,GAAG,SAAS;AAC5C;AACA,aAAa,IAAI,aAAa,GAAG,UAAU,EAAE;AAC7C,YAAY,SAAS,CAAC,UAAU,GAAG,UAAU;AAC7C;AACA;AACA,IAAI,OAAO,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE;AAC5C,QAAQ,OAAO,CAAC,KAAK,EAAE;AACvB,QAAQ,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC;AAC/C;AACA;;ACvBO,MAAM,cAAc,CAAC;AAC5B,IAAI,OAAO,QAAQ,CAAC,KAAK,EAAE;AAC3B,QAAQ,OAAO,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;AAC3E;AACA,IAAI,OAAO,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE;AACpC,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;AACtC,QAAQ,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;AACvC,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE;AACpB,YAAY,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK;AAC9C;AACA,aAAa,IAAI,CAAC,IAAI,CAAC,EAAE;AACzB,YAAY,OAAO,MAAM,GAAG,KAAK;AACjC;AACA,aAAa;AACb,YAAY,OAAO,MAAM,GAAG,GAAG,GAAG,KAAK;AACvC;AACA;AACA,IAAI,OAAO,mBAAmB,CAAC,IAAI,EAAE;AACrC,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAY,OAAO,KAAK;AACxB;AACA,QAAQ,OAAO,IAAI,CAAC,iBAAiB,EAAE,KAAK,IAAI,CAAC,iBAAiB,EAAE;AACpE;AACA,IAAI,OAAO,kBAAkB,CAAC,IAAI,EAAE;AACpC,QAAQ,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrC;AACA,IAAI,OAAO,UAAU,CAAC,GAAG,EAAE;AAC3B,QAAQ,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D;AACA,IAAI,OAAO,YAAY,CAAC,GAAG,EAAE;AAC7B,QAAQ,OAAO,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AAClF;AACA,IAAI,OAAO,aAAa,CAAC,GAAG,EAAE;AAC9B,QAAQ,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;AACnE;AACA,IAAI,OAAO,kBAAkB,CAAC,GAAG,EAAE;AACnC,QAAQ,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;AACzC,QAAQ,MAAM,UAAU,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,MAAM;AAC/D,QAAQ,MAAM,eAAe,GAAG,UAAU,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAClF,QAAQ,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;AACpE;AACA,IAAI,OAAO,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE;AAC5C,QAAQ,OAAO,cAAc,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC;AACtD;AACA,IAAI,OAAO,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE;AAC1C,QAAQ,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACzD,YAAY,OAAO,GAAG;AACtB;AACA,aAAa;AACb,YAAY,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC;AAC3D,YAAY,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAC1C;AACA;AACA,IAAI,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE;AAC9C,QAAQ,MAAM,IAAI,GAAG,KAAK,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE;AACpB,YAAY,OAAO,CAAC;AACpB;AACA,aAAa,IAAI,CAAC,IAAI,IAAI,EAAE;AAC5B,YAAY,OAAO,CAAC,IAAI;AACxB;AACA,aAAa,IAAI,CAAC,IAAI,IAAI,EAAE;AAC5B,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;AACxC;AACA,IAAI,OAAO,0BAA0B,CAAC,GAAG,EAAE;AAC3C,QAAQ,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ;AAC1C,QAAQ,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW;AACtD,cAAc;AACd,cAAc,aAAa;AAC3B,QAAQ,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW;AACvD,cAAc;AACd,cAAc,aAAa;AAC3B,QAAQ,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE;AAC3C;AACA,IAAI,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AAChC,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE;AAClE,YAAY,OAAO,GAAG;AACtB;AACA,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE;AACnB,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B;AACA,QAAQ,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1F;AACA,IAAI,OAAO,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;AACvC,QAAQ,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;AAC7D;AACA,IAAI,OAAO,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;AAChD,QAAQ,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AAChE,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,UAAU,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;AACnD;AACA,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,UAAU,GAAG,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACnD;AACA,QAAQ,OAAO,cAAc,CAAC,aAAa,CAAC,UAAU,CAAC;AACvD;AACA,IAAI,OAAO,gBAAgB,CAAC,GAAG,EAAE;AACjC,QAAQ,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;AACzC,QAAQ,MAAM,UAAU,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,MAAM;AAC/D,QAAQ,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;AACvC;AACA;;ACpGA,IAAI,aAAa;AACjB,CAAC,UAAU,aAAa,EAAE;AAC1B,IAAI,aAAa,CAAC,KAAK,CAAC,GAAG,KAAK;AAChC,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO;AACpC,IAAI,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM;AAClC,IAAI,aAAa,CAAC,UAAU,CAAC,GAAG,UAAU;AAC1C,CAAC,EAAE,aAAa,KAAK,aAAa,GAAG,EAAE,CAAC,CAAC;AAC7B,MAAC,wBAAwB,GAAG;AACxC,IAAI,CAAC,EAAE;AACP,QAAQ,IAAI,EAAE,aAAa,CAAC,GAAG;AAC/B,QAAQ,SAAS,EAAE,CAAC;AACpB,QAAQ,SAAS,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,EAAE,EAAE;AACR,QAAQ,IAAI,EAAE,aAAa,CAAC,GAAG;AAC/B,QAAQ,SAAS,EAAE,CAAC;AACpB,QAAQ,SAAS,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,CAAC,EAAE;AACP,QAAQ,IAAI,EAAE,aAAa,CAAC,KAAK;AACjC,QAAQ,SAAS,EAAE,CAAC;AACpB,QAAQ,SAAS,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,EAAE,EAAE;AACR,QAAQ,IAAI,EAAE,aAAa,CAAC,KAAK;AACjC,QAAQ,SAAS,EAAE,CAAC;AACpB,QAAQ,SAAS,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,CAAC,EAAE;AACP,QAAQ,IAAI,EAAE,aAAa,CAAC,IAAI;AAChC,QAAQ,SAAS,EAAE,CAAC;AACpB,QAAQ,SAAS,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,EAAE,EAAE;AACR,QAAQ,IAAI,EAAE,aAAa,CAAC,IAAI;AAChC,QAAQ,SAAS,EAAE,CAAC;AACpB,QAAQ,SAAS,EAAE,CAAC;AACpB,KAAK;AACL;AACU,IAAC;AACX,CAAC,UAAU,aAAa,EAAE;AAC1B,IAAI,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW;AAC/D,IAAI,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO;AACvD,CAAC,EAAE,aAAa,KAAK,aAAa,GAAG,EAAE,CAAC,CAAC;AAC/B,IAAC;AACX,CAAC,UAAU,YAAY,EAAE;AACzB,IAAI,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS;AACzD,IAAI,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ;AACvD,CAAC,EAAE,YAAY,KAAK,YAAY,GAAG,EAAE,CAAC,CAAC;AAC7B,IAAC;AACX,CAAC,UAAU,gBAAgB,EAAE;AAC7B,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW;AACrE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU;AACnE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAC3D,CAAC,EAAE,gBAAgB,KAAK,gBAAgB,GAAG,EAAE,CAAC,CAAC;AACrC,IAAC;AACX,CAAC,UAAU,uBAAuB,EAAE;AACpC,IAAI,uBAAuB,CAAC,uBAAuB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe;AAC3F,IAAI,uBAAuB,CAAC,uBAAuB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa;AACvF,IAAI,uBAAuB,CAAC,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AACzE,CAAC,EAAE,uBAAuB,KAAK,uBAAuB,GAAG,EAAE,CAAC,CAAC;AAC7D,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACtC;AACO,MAAM,aAAa,CAAC;AAC3B,IAAI,GAAG;AACP,IAAI,MAAM;AACV,IAAI,WAAW;AACf,IAAI,aAAa;AACjB,IAAI,QAAQ;AACZ,IAAI,aAAa;AACjB,IAAI,WAAW,CAAC,GAAG,EAAE;AACrB,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;AACtB,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;AAC7B,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI;AAC1B,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAClD,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC;AAC9B;AACA,IAAI,IAAI,eAAe,CAAC,IAAI,EAAE;AAC9B,QAAQ,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI;AACvC,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AACvD;AACA,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe;AACvC;AACA,IAAI,IAAI,aAAa,CAAC,IAAI,EAAE;AAC5B,QAAQ,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI;AACrC,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AACvD;AACA,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa;AACrC;AACA,IAAI,IAAI,yBAAyB,CAAC,QAAQ,EAAE;AAC5C,QAAQ,IAAI,CAAC,GAAG,CAAC,yBAAyB,GAAG,QAAQ;AACrD,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AACvD;AACA,IAAI,IAAI,yBAAyB,GAAG;AACpC,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,yBAAyB;AACjD;AACA,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI;AAClC,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AACvD;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU;AAClC;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE;AACvB,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM;AAChC,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AACvD;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM;AAC9B;AACA,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;AACvC,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI;AAChC;AACA,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AACnC,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;AAC7E;AACA,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;AACvC,YAAY,IAAI,CAAC,QAAQ,GAAG,KAAK;AACjC;AACA;AACA,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AACnC,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;AAClC,QAAQ,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;AACvE,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC;AACpD,QAAQ,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW;AACtC,QAAQ,YAAY,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;AACxD,QAAQ,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI;AAC9B,QAAQ,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW;AAC1C,QAAQ,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,KAAK;AACtC;AACA,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,MAAM;AAC1B;AACA,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE;AACjB,QAAQ,IAAI,EAAE,CAAC,YAAY,IAAI,CAAC,EAAE;AAClC,YAAY,IAAI,CAAC,MAAM,GAAG,IAAI;AAC9B,YAAY,IAAI,CAAC,WAAW,GAAG,EAAE;AACjC,YAAY;AACZ;AACA,QAAQ,IAAI,MAAM,GAAG,EAAE;AACvB,QAAQ,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC7C,YAAY,QAAQ,IAAI,CAAC,IAAI;AAC7B,gBAAgB,KAAK,aAAa,CAAC,QAAQ;AAC3C,oBAAoB,MAAM,IAAI,IAAI,CAAC,KAAK;AACxC,oBAAoB;AACpB,gBAAgB,KAAK,aAAa,CAAC,GAAG;AACtC,oBAAoB,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;AAC5E,oBAAoB;AACpB,gBAAgB,KAAK,aAAa,CAAC,KAAK;AACxC,oBAAoB,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;AACjF,oBAAoB;AACpB,gBAAgB,KAAK,aAAa,CAAC,IAAI;AACvC,oBAAoB,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;AACvG,oBAAoB;AACpB;AACA,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC;AACvB,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM;AACjC;AACA,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE;AAC1B,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;AAChC;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW;AAC/B;AACA,IAAI,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/E,QAAQ,IAAI,IAAI,GAAG,KAAK;AACxB,QAAQ,IAAI,GAAG,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI;AACjD,QAAQ,IAAI,MAAM,GAAG,EAAE;AACvB,QAAQ,IAAI,WAAW,GAAG,aAAa;AACvC,QAAQ,IAAI,WAAW,GAAG,IAAI;AAC9B,QAAQ,IAAI,SAAS,GAAG,KAAK;AAC7B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5D,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,gBAAgB;AAChB;AACA,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AAC9C,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACjD,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ,EAAE;AACtD,gBAAgB,IAAI,WAAW,GAAG,CAAC,EAAE;AACrC,oBAAoB,MAAM,KAAK,GAAG;AAClC,0BAA0B,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;AAC7D,0BAA0B,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC;AACxD;AACA,oBAAoB,IAAI,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;AAC1D,wBAAwB,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;AAC1D,4BAA4B;AAC5B;AACA,6BAA6B;AAC7B,4BAA4B,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;AAC3E;AACA;AACA,oBAAoB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AACtD;AACA,gBAAgB,MAAM,IAAI,IAAI,CAAC,KAAK;AACpC;AACA,iBAAiB;AACjB,gBAAgB,IAAI,WAAW,GAAG,CAAC,EAAE;AACrC,oBAAoB;AACpB;AACA,gBAAgB,IAAI,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE;AACjD,oBAAoB,WAAW,GAAG,IAAI;AACtC;AACA,gBAAgB,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,EAAE;AACtD,oBAAoB,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,gBAAgB,CAAC,SAAS;AAC3E,yBAAyB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AAC/C,6BAA6B,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;AAC7F,wBAAwB,IAAI,CAAC,QAAQ;AACrC,4BAA4B,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,aAAa,CAAC,SAAS;AAC3E,4BAA4B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAChD,4BAA4B,aAAa,GAAG,IAAI,CAAC,MAAM;AACvD,4BAA4B,aAAa,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC;AAC9D,4BAA4B,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;AACpF,4BAA4B,IAAI;AAChC,gCAAgC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC;AAChE,oCAAoC,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC;AACrE;AACA,wBAAwB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;AAClD,4BAA4B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/D,4BAA4B,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;AACnD,4BAA4B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACpD,4BAA4B,MAAM,IAAI,MAAM;AAC5C,4BAA4B,IAAI,CAAC,QAAQ,EAAE;AAC3C,gCAAgC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC;AAC/H;AACA;AACA,6BAA6B,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;AACvD,4BAA4B,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1D,4BAA4B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACpD,4BAA4B,IAAI,MAAM,CAAC,MAAM,IAAI,WAAW,EAAE;AAC9D,gCAAgC,WAAW,GAAG,KAAK;AACnD;AACA;AACA,6BAA6B;AAC7B,4BAA4B,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;AACzD,4BAA4B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACpD,4BAA4B,IAAI,MAAM,CAAC,MAAM,IAAI,WAAW,EAAE;AAC9D,gCAAgC,WAAW,GAAG,KAAK;AACnD;AACA;AACA;AACA,yBAAyB,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,gBAAgB,CAAC,QAAQ;AAC/E,wBAAwB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC5C,yBAAyB,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7E,4BAA4B,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AAClE,wBAAwB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3D,wBAAwB,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;AACnD,wBAAwB,IAAI,IAAI,CAAC,GAAG,CAAC,yBAAyB,KAAK,MAAM,EAAE;AAC3E,4BAA4B,IAAI,GAAG,YAAY,CAAC,qBAAqB,CAAC,EAAE,CAAC;AACzE;AACA,6BAA6B;AAC7B,4BAA4B,IAAI,GAAG,YAAY,CAAC,uBAAuB,CAAC,EAAE,CAAC;AAC3E;AACA,wBAAwB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAChD,wBAAwB,IAAI,CAAC,QAAQ,EAAE;AACvC,4BAA4B,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC;AAC3H;AACA,wBAAwB,MAAM,IAAI,MAAM;AACxC,wBAAwB,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,gBAAgB,CAAC,SAAS;AAC/E,4BAA4B,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACjE,4BAA4B,SAAS,GAAG,IAAI;AAC5C;AACA;AACA,yBAAyB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAChD,wBAAwB,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC;AACzC,wBAAwB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAChD,wBAAwB,IAAI,MAAM,CAAC,MAAM,IAAI,WAAW,EAAE;AAC1D,4BAA4B,WAAW,GAAG,KAAK;AAC/C;AACA;AACA;AACA,qBAAqB,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,KAAK,EAAE;AAC5D,oBAAoB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC;AAC3F,oBAAoB,MAAM,GAAG,GAAG,CAAC,MAAM;AACvC,oBAAoB,IAAI,GAAG,GAAG,CAAC,IAAI;AACnC,oBAAoB,WAAW,GAAG,GAAG,CAAC,WAAW;AACjD,oBAAoB,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,EAAE;AAC5C,wBAAwB,KAAK,GAAG,GAAG,CAAC,KAAK;AACzC;AACA,wBAAwB,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvD,4BAA4B,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC;AAC3H;AACA,wBAAwB,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,IAAI,WAAW,EAAE;AAC3E,4BAA4B,WAAW,GAAG,KAAK;AAC/C;AACA;AACA;AACA,qBAAqB,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,GAAG,EAAE;AAC1D,oBAAoB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC;AAC3F,oBAAoB,MAAM,GAAG,GAAG,CAAC,MAAM;AACvC,oBAAoB,IAAI,GAAG,GAAG,CAAC,IAAI;AACnC,oBAAoB,WAAW,GAAG,GAAG,CAAC,WAAW;AACjD,oBAAoB,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,EAAE;AAC5C,wBAAwB,GAAG,GAAG,GAAG,CAAC,KAAK;AACvC;AACA,wBAAwB,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvD,4BAA4B,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC;AAC3H;AACA,wBAAwB,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,IAAI,WAAW,EAAE;AAC3E,4BAA4B,WAAW,GAAG,KAAK;AAC/C;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,IAAI,GAAG,IAAI;AACvB,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;AAC7D,YAAY,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC;AACjD,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,GAAG,CAAC,EAAE;AAC/C,gBAAgB,IAAI,GAAG,IAAI;AAC3B;AACA;AACA,QAAQ,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAY,IAAI,aAAa,KAAK,KAAK,CAAC,MAAM,EAAE;AAChD,gBAAgB,WAAW,GAAG,MAAM,CAAC,MAAM;AAC3C;AACA,iBAAiB,IAAI,WAAW,EAAE;AAClC,gBAAgB,OAAO,WAAW,GAAG,CAAC;AACtC,oBAAoB,MAAM,CAAC,MAAM,GAAG,WAAW;AAC/C,oBAAoB,CAAC,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE;AAC7E,oBAAoB,WAAW,EAAE;AACjC;AACA;AACA;AACA,aAAa,IAAI,CAAC,IAAI,EAAE;AACxB,YAAY,MAAM,GAAG,KAAK;AAC1B,YAAY,WAAW,GAAG,aAAa;AACvC;AACA,QAAQ,OAAO;AACf,YAAY,WAAW,EAAE,MAAM;AAC/B,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,QAAQ,EAAE,IAAI,KAAK,IAAI;AACnC,YAAY,KAAK,EAAE,WAAW;AAC9B,YAAY,SAAS,EAAE,SAAS,IAAI,IAAI,KAAK,IAAI;AACjD,SAAS;AACT;AACA,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE;AAC9D,QAAQ,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC;AAC5C,QAAQ,IAAI,KAAK,GAAG,IAAI;AACxB,QAAQ,IAAI,MAAM,GAAG,EAAE;AACvB,QAAQ,IAAI,QAAQ,GAAG,KAAK;AAC5B,QAAQ,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,uBAAuB,CAAC,aAAa,CAAC,EAAE;AACjF,YAAY,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1D,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACnC,gBAAgB,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC;AACrD,gBAAgB,MAAM,IAAI,MAAM;AAChC,gBAAgB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AAChD,gBAAgB,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;AACxC;AACA;AACA,aAAa;AACb,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACtD,YAAY,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,gBAAgB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;AACnD,gBAAgB,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;AACxC,gBAAgB,IAAI,KAAK,GAAG,GAAG,EAAE;AACjC,oBAAoB,KAAK,GAAG,IAAI;AAChC,oBAAoB,IAAI,KAAK,GAAG,GAAG;AACnC,oBAAoB,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS;AACxD,wBAAwB,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,EAAE;AACxD,wBAAwB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,wBAAwB,KAAK,IAAI,GAAG;AACpC;AACA;AACA,qBAAqB;AACrB,oBAAoB,OAAO,KAAK,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7D,wBAAwB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,wBAAwB,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;AAChD;AACA,oBAAoB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7C,wBAAwB,KAAK,GAAG,IAAI;AACpC;AACA;AACA,gBAAgB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;AACrC,oBAAoB,GAAG,KAAK,CAAC;AAC7B,oBAAoB,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,uBAAuB,CAAC,WAAW,CAAC,EAAE;AACvF,oBAAoB,KAAK,GAAG,IAAI;AAChC,oBAAoB,MAAM,GAAG,EAAE;AAC/B;AACA;AACA,YAAY,MAAM,IAAI,MAAM;AAC5B,YAAY,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;AAChD,YAAY,MAAM,GAAG,MAAM;AAC3B;AACA,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE;AAC5D,YAAY,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,GAAG,EAAE,GAAG,GAAG;AACtE,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC5H,YAAY,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE;AACjE;AACA,aAAa;AACb,YAAY,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE;AAC9E;AACA;AACA,IAAI,WAAW,CAAC,GAAG,EAAE;AACrB,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;AAChD,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAChD,QAAQ,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM;AAC7B,QAAQ,MAAM,MAAM,GAAG,EAAE;AACzB,QAAQ,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAChE,YAAY,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpF,YAAY,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;AAC1C,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;AACrC,YAAY,IAAI,QAAQ,GAAG,CAAC,EAAE;AAC9B,gBAAgB,MAAM,CAAC,IAAI,CAAC;AAC5B,oBAAoB,IAAI,EAAE,aAAa,CAAC,QAAQ;AAChD,oBAAoB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC;AACtD,iBAAiB,CAAC;AAClB,gBAAgB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC/C;AACA,iBAAiB,IAAI,QAAQ,GAAG,CAAC,EAAE;AACnC,gBAAgB,MAAM,CAAC,IAAI,CAAC;AAC5B,oBAAoB,IAAI,EAAE,aAAa,CAAC,QAAQ;AAChD,oBAAoB,KAAK,EAAE,IAAI;AAC/B,iBAAiB,CAAC;AAClB,gBAAgB,IAAI,GAAG,EAAE;AACzB;AACA,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACnD,gBAAgB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;AAC/D;AACA;AACA,QAAQ,OAAO,MAAM;AACrB;AACA,IAAI,8BAA8B,CAAC,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE;AAClF,QAAQ,IAAI,CAAC,GAAG,CAAC;AACjB,QAAQ,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAChF,YAAY,CAAC,EAAE;AACf;AACA,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE;AAChC,YAAY,OAAO;AACnB,gBAAgB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AACxC,gBAAgB,WAAW,EAAE,WAAW,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7D,aAAa;AACb;AACA,aAAa,IAAI,eAAe,EAAE;AAClC,YAAY,OAAO,EAAE,IAAI,EAAE,GAAG,GAAG,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE;AAClE;AACA,aAAa;AACb,YAAY,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;AAC/C;AACA;AACA,IAAI,4BAA4B,CAAC,KAAK,EAAE;AACxC,QAAQ,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACtC;AACA;;ACvcO,MAAM,WAAW,CAAC;AACzB,IAAI,OAAO,eAAe,CAAC,OAAO,EAAE;AACpC,QAAQ,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAK;AAC5C,YAAY,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAK;AACnE,gBAAgB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AACtC,aAAa,CAAC;AACd,YAAY,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC;AAC3C,YAAY,OAAO,MAAM;AACzB,gBAAgB,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC;AACjD,gBAAgB,cAAc,CAAC,UAAU,EAAE;AAC3C,aAAa;AACb,SAAS,CAAC;AACV;AACA;;ACbU,IAAC;AACX,CAAC,UAAU,iBAAiB,EAAE;AAC9B,IAAI,iBAAiB,CAAC,MAAM,CAAC,GAAG,QAAQ;AACxC,IAAI,iBAAiB,CAAC,MAAM,CAAC,GAAG,QAAQ;AACxC,CAAC,EAAE,iBAAiB,KAAK,iBAAiB,GAAG,EAAE,CAAC,CAAC;AACvC,IAAC;AACX,CAAC,UAAU,cAAc,EAAE;AAC3B,IAAI,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS;AACtC,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,UAAU;AACxC,IAAI,cAAc,CAAC,YAAY,CAAC,GAAG,eAAe;AAClD,CAAC,EAAE,cAAc,KAAK,cAAc,GAAG,EAAE,CAAC,CAAC;AAC/B,MAAC,qBAAqB,GAAG,WAAW,CAAC;AACrC,MAAC,4BAA4B,GAAG,iBAAiB,CAAC;AACpD,IAAC;AACX,CAAC,UAAU,eAAe,EAAE;AAC5B,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,GAAG;AAC9B,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI;AAChC,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI;AAChC,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI;AAChC,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI;AAChC,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI;AAChC,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI;AAChC,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI;AAChC,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI;AAChC,CAAC,EAAE,eAAe,KAAK,eAAe,GAAG,EAAE,CAAC,CAAC;AAC7C,MAAM,sBAAsB,GAAG;AAC/B,IAAI,eAAe,CAAC,CAAC;AACrB,IAAI,eAAe,CAAC,EAAE;AACtB,IAAI,eAAe,CAAC,EAAE;AACtB,IAAI,eAAe,CAAC,EAAE;AACtB,IAAI,eAAe,CAAC,EAAE;AACtB,IAAI,eAAe,CAAC,EAAE;AACtB,IAAI,eAAe,CAAC,EAAE;AACtB,IAAI,eAAe,CAAC,EAAE;AACtB,IAAI,eAAe,CAAC,EAAE;AACtB,CAAC;AACM,MAAM,YAAY,CAAC;AAC1B,IAAI,OAAO,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE;AACxC,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC;AACxF,QAAQ,IAAI,GAAG,EAAE;AACjB,YAAY,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,4BAA4B;AACxE,YAAY,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3C;AACA,aAAa;AACb,YAAY,OAAO,GAAG;AACtB;AACA;AACA,IAAI,OAAO,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE;AAC9C,QAAQ,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC9D;AACA,IAAI,OAAO,iBAAiB,CAAC,UAAU,EAAE,QAAQ,EAAE;AACnD,QAAQ,MAAM,IAAI,GAAG,YAAY,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC;AACrE,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AACnC;AACA,IAAI,OAAO,iBAAiB,CAAC,IAAI,EAAE;AACnC,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,CAAC,IAAI,EAAE;AACvB,gBAAgB,MAAM,CAAC,IAAI,CAAC;AAC5B;AACA,YAAY,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC3C,YAAY,MAAM,CAAC,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AACxD,YAAY,MAAM,CAAC,OAAO,GAAG,MAAM;AACnC,YAAY,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC1C,SAAS,CAAC;AACV;AACA,IAAI,OAAO,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE;AACtC,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,CAAC,IAAI,EAAE;AACvB,gBAAgB,MAAM,CAAC,IAAI,CAAC;AAC5B;AACA,YAAY,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC3C,YAAY,MAAM,CAAC,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AACxD,YAAY,MAAM,CAAC,OAAO,GAAG,MAAM;AACnC,YAAY,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC7C,SAAS,CAAC;AACV;AACA,IAAI,OAAO,oBAAoB,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAChE,QAAQ,QAAQ;AAChB,YAAY,QAAQ;AACpB,gBAAgB,YAAY,CAAC,uBAAuB,CAAC,QAAQ,CAAC;AAC9D,gBAAgB,YAAY,CAAC,qBAAqB,CAAC,UAAU,CAAC;AAC9D,QAAQ,MAAM,GAAG,GAAG,YAAY,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC;AACpE,QAAQ,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAC/D;AACA,IAAI,OAAO,yBAAyB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC9D,QAAQ,QAAQ,GAAG,QAAQ,IAAI,YAAY,CAAC,uBAAuB,CAAC,QAAQ,CAAC;AAC7E,QAAQ,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AAChD,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG;AACvB,QAAQ,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACpE,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB;AACA,IAAI,OAAO,qBAAqB,CAAC,UAAU,EAAE;AAC7C,QAAQ,OAAO,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACzD;AACA,IAAI,OAAO,uBAAuB,CAAC,QAAQ,EAAE;AAC7C,QAAQ,MAAM,GAAG,GAAG,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AAC9C;AACA,QAAQ,OAAO,sBAAsB,CAAC,GAAG,CAAC;AAC1C;AACA,IAAI,OAAO,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE;AAC3C,QAAQ,IAAI,QAAQ,IAAI,QAAQ,KAAK,WAAW,CAAC,OAAO,EAAE;AAC1D,YAAY,MAAM,GAAG,GAAG,sBAAsB,CAAC,QAAQ,CAAC;AACxD,YAAY,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;AAC9C,gBAAgB,OAAO,QAAQ;AAC/B;AACA,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3C;AACA;AACA,aAAa;AACb,YAAY,OAAO,QAAQ;AAC3B;AACA;AACA,IAAI,OAAO,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE;AAC/C,QAAQ,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AAC5C,YAAY,OAAO,UAAU;AAC7B;AACA,aAAa,IAAI,QAAQ,EAAE;AAC3B,YAAY,IAAI,QAAQ,KAAK,WAAW,CAAC,OAAO,EAAE;AAClD,gBAAgB,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AACrE;AACA,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC9D;AACA;AACA,aAAa;AACb,YAAY,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC;AAC/D,YAAY,OAAO,EAAE;AACrB;AACA;AACA,IAAI,OAAO,uBAAuB,CAAC,IAAI,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI;AAC9B;AACA,IAAI,OAAO,uBAAuB,CAAC,IAAI,EAAE;AACzC,QAAQ,QAAQ,IAAI,CAAC;AACrB,aAAa,GAAG,CAAC,qBAAqB;AACtC,cAAc,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;AACpC,cAAc,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACnC;AACA,IAAI,aAAa,aAAa,CAAC,IAAI,EAAE;AACrC,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,CAAC,IAAI,EAAE;AACvB,gBAAgB,MAAM,CAAC,IAAI,CAAC;AAC5B;AACA,YAAY,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC3C,YAAY,MAAM,CAAC,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AACxD,YAAY,MAAM,CAAC,OAAO,GAAG,MAAM;AACnC,YAAY,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AACtC,SAAS,CAAC;AACV;AACA,IAAI,OAAO,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE;AACjD,QAAQ,IAAI,KAAK,KAAK,CAAC,EAAE;AACzB,YAAY,OAAO,IAAI,GAAG,eAAe,CAAC,CAAC;AAC3C;AACA,QAAQ,MAAM,CAAC,GAAG,IAAI;AACtB,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3D,QAAQ,QAAQ,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AACtE,YAAY,GAAG;AACf,YAAY,sBAAsB,CAAC,CAAC,CAAC;AACrC;AACA,IAAI,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;AACxC,QAAQ,MAAM,CAAC,GAAG,IAAI;AACtB,QAAQ,MAAM,CAAC,GAAG,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC;AACtD,QAAQ,OAAO,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACtC;AACA,IAAI,OAAO,eAAe,CAAC,QAAQ,EAAE;AACrC,QAAQ,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AACxD,QAAQ,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC;AAC5C,QAAQ,MAAM,IAAI,GAAG,OAAO;AAC5B,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAC1E,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,OAAO,YAAY,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;AACxD;AACA,IAAI,OAAO,wBAAwB,CAAC,QAAQ,EAAE;AAC9C,QAAQ,QAAQ,QAAQ;AACxB,YAAY,KAAK,WAAW,CAAC,GAAG;AAChC,YAAY,KAAK,WAAW,CAAC,IAAI;AACjC,YAAY,KAAK,WAAW,CAAC,GAAG;AAChC,gBAAgB,OAAO,cAAc,CAAC,IAAI;AAC1C,YAAY,KAAK,WAAW,CAAC,GAAG;AAChC,YAAY,KAAK,WAAW,CAAC,IAAI;AACjC,YAAY,KAAK,WAAW,CAAC,GAAG;AAChC,gBAAgB,OAAO,cAAc,CAAC,KAAK;AAC3C,YAAY,KAAK,WAAW,CAAC,GAAG;AAChC,YAAY,KAAK,WAAW,CAAC,IAAI;AACjC,YAAY,KAAK,WAAW,CAAC,GAAG;AAChC,gBAAgB,OAAO,cAAc,CAAC,UAAU;AAChD,YAAY;AACZ,gBAAgB,OAAO,IAAI;AAC3B;AACA;AACA;;ACjMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,IAAI,EAAE;AAC5B,IAAI,OAAO;AACX,QAAQ,IAAI;AACZ,QAAQ,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC;AACpC,QAAQ,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC;AAC1C,QAAQ,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC;AAC1C,QAAQ,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC;AAClC,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,IAAI,OAAO,aAAa,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC7C;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,CAAC,EAAE;AAC3B,IAAI,OAAO;AACX,SAAS,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE;AACrF,SAAS,OAAO,CAAC,cAAc,EAAE,EAAE;AACnC,SAAS,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;AAClD;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,CAAC,EAAE;AAC3B,IAAI,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC;AACnE,IAAI,OAAO,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC;AACjD,SAAS,OAAO,CAAC,iBAAiB,EAAE,GAAG;AACvC,SAAS,WAAW,EAAE;AACtB;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,CAAC,EAAE;AACvB,IAAI,OAAO;AACX,SAAS,OAAO,CAAC,mBAAmB,EAAE,OAAO;AAC7C,SAAS,WAAW;AACpB,SAAS,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;AACpC;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,CAAC,EAAE;AAC1B,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD;;AC1DA,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;AACtC,MAAM,UAAU,GAAG,IAAI;AAChB,MAAM,aAAa,CAAC;AAC3B,IAAI,OAAO,iBAAiB,CAAC,UAAU,EAAE,aAAa,EAAE;AACxD;AACA,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9D,QAAQ,MAAM,OAAO,GAAG,EAAE;AAC1B,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,QAAQ,IAAI,UAAU,GAAG,CAAC;AAC1B;AACA;AACA;AACA,QAAQ,IAAI,UAAU,GAAG,EAAE;AAC3B,QAAQ,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK;AACxC,YAAY,MAAM,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AACpE,YAAY,IAAI,OAAO,GAAG,CAAC;AAC3B,YAAY,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC/D,YAAY,IAAI,OAAO,GAAG,UAAU,IAAI,IAAI,EAAE;AAC9C,gBAAgB,UAAU,GAAG,OAAO;AACpC,gBAAgB,UAAU,GAAG,GAAG;AAChC;AACA,iBAAiB,IAAI,OAAO,KAAK,UAAU,IAAI,IAAI,EAAE;AACrD,gBAAgB,IAAI,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE;AACpD,oBAAoB,UAAU,GAAG,GAAG;AACpC;AACA;AACA,SAAS,CAAC;AACV,QAAQ,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AAC7C,YAAY,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AACzE,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC/D,YAAY,OAAO;AACnB,gBAAgB,GAAG,EAAE,IAAI,CAAC,GAAG;AAC7B,gBAAgB,IAAI,EAAE,IAAI,CAAC,IAAI;AAC/B,gBAAgB,QAAQ,EAAE,IAAI;AAC9B,gBAAgB,eAAe,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,IAAI;AAC5E,gBAAgB,UAAU,EAAE,IAAI,CAAC,GAAG,KAAK,UAAU;AACnD;AACA;AACA,gBAAgB,UAAU,EAAE,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,UAAU;AAC3D;AACA;AACA,gBAAgB,eAAe,EAAE,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAChF,oBAAoB,IAAI,CAAC,IAAI,KAAK,QAAQ;AAC1C,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,OAAO,GAAG;AAClB;AACA,IAAI,OAAO,KAAK,CAAC,IAAI,EAAE;AACvB,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC;AAC1B;AACA;;ACpDO,MAAM,cAAc,CAAC;AAC5B,IAAI,OAAO,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;AAC5B,QAAQ,IAAI,CAAC,GAAG,EAAE;AAClB,YAAY,OAAO,SAAS;AAC5B;AACA,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAClE,QAAQ,IAAI,OAAO,GAAG,GAAG;AACzB,QAAQ,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AACjC,YAAY,IAAI,OAAO,IAAI,SAAS,EAAE;AACtC,gBAAgB,OAAO,SAAS;AAChC;AACA,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACnE,gBAAgB,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChD;AACA,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;AACtC;AACA;AACA,QAAQ,OAAO,OAAO;AACtB;AACA,IAAI,OAAO,YAAY,CAAC,KAAK,EAAE;AAC/B,QAAQ,OAAO,KAAK,IAAI,IAAI;AAC5B;AACA,IAAI,OAAO,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE;AACjC,QAAQ,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AACpC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,OAAO,KAAK;AACxB;AACA,QAAQ,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,QAAQ,IAAI,OAAO,GAAG,KAAK;AAC3B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,YAAY,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,YAAY,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG;AAC/C,YAAY,OAAO,GAAG,IAAI;AAC1B;AACA,QAAQ,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK;AACxC,QAAQ,OAAO,KAAK,CAAC,GAAG;AACxB;AACA,IAAI,OAAO,cAAc,CAAC,GAAG,EAAE;AAC/B,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC;AACtD,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3C;AACA;AACA,SAAS,gBAAgB,CAAC,GAAG,EAAE;AAC/B,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AAC7B,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;AACpB,QAAQ,OAAO;AACf,YAAY,GAAG,EAAE,EAAE;AACnB,YAAY,GAAG,EAAE,GAAG;AACpB,SAAS;AACT;AACA,SAAS;AACT,QAAQ,OAAO;AACf,YAAY,GAAG,EAAE,EAAE;AACnB,YAAY,GAAG,EAAE,GAAG;AACpB,SAAS;AACT;AACA;;ACzDO,MAAM,cAAc,CAAC;AAC5B,IAAI,OAAO,QAAQ,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACtD;AACA,IAAI,OAAO,SAAS,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG;AAClC;AACA;;ACNO,MAAM,UAAU,CAAC;AACxB;AACA,IAAI,OAAO,gBAAgB,CAAC,SAAS,EAAE;AACvC,QAAQ,OAAO,CAAC,MAAM,KAAK;AAC3B,YAAY,OAAO,aAAa,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;AACrG,SAAS;AACT;AACA,IAAI,OAAO,cAAc,CAAC,OAAO,EAAE;AACnC,QAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,MAAM,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtF;AACA,IAAI,OAAO,cAAc,CAAC,KAAK,EAAE;AACjC,QAAQ,OAAO,KAAK,YAAY,UAAU,GAAG,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;AAC9D;AACA;;ACbO,SAAS,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE;AACjD,IAAI,IAAI,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE;AACzC,QAAQ,wBAAwB,CAAC,eAAe,CAAC;AACjD;AACA,IAAI,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;AAC1D,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM;AACrC,YAAY,IAAI,KAAK;AACrB,YAAY,IAAI;AAChB,gBAAgB,KAAK,GAAG,MAAM,EAAE;AAChC;AACA,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,SAAS,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5C,gBAAgB;AAChB;AACA,YAAY,SAAS,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3C,SAAS,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAC7C,QAAQ,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM;AACjD,YAAY,OAAO,CAAC,OAAO,EAAE;AAC7B,SAAS,CAAC;AACV,KAAK,CAAC;AACN;AACO,SAAS,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE;AACrD,IAAI,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;AAC1D,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAQ,IAAI,OAAO,GAAG,IAAI;AAC1B,QAAQ,OAAO,GAAG,MAAM,CAAC,MAAM;AAC/B,YAAY,IAAI,KAAK;AACrB,YAAY,IAAI;AAChB,gBAAgB,KAAK,GAAG,MAAM,EAAE;AAChC;AACA,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,SAAS,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5C,gBAAgB,OAAO,EAAE,OAAO,EAAE;AAClC,gBAAgB,OAAO,GAAG,IAAI;AAC9B,gBAAgB;AAChB;AACA,YAAY,SAAS,CAAC,MAAM;AAC5B,gBAAgB,OAAO,CAAC,KAAK,CAAC;AAC9B,gBAAgB,OAAO,EAAE,OAAO,EAAE;AAClC,gBAAgB,OAAO,GAAG,IAAI;AAC9B,aAAa,CAAC;AACd,SAAS,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAC7C,QAAQ,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC;AACzD,QAAQ,UAAU,EAAE,SAAS,CAAC,MAAM;AACpC,YAAY,OAAO,EAAE,OAAO,EAAE;AAC9B,YAAY,OAAO,GAAG,IAAI;AAC1B,SAAS,CAAC;AACV,KAAK,CAAC;AACN;;AClDA;AACA;AACA;;;;"}
|