vhobjects-service 0.5.5 → 0.5.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"vhobjects-service-src-services.js","sources":["../../../projects/vhobjects-service/src/services/language.service.ts","../../../projects/vhobjects-service/src/services/json-data.service.ts","../../../projects/vhobjects-service/src/services/design-web.service.ts","../../../projects/vhobjects-service/src/services/function.service.ts","../../../projects/vhobjects-service/src/services/theme.service.ts","../../../projects/vhobjects-service/src/services/update-db-block.ts","../../../projects/vhobjects-service/src/services/update-db-object.ts","../../../projects/vhobjects-service/src/services/update-db-component.ts","../../../projects/vhobjects-service/src/services/vhobjects-service-src-services.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { en_US, vi_VN, NzI18nService } from 'ng-zorro-antd/i18n';\r\n// import languageCode from 'src/assets/data/language_code/language_code.json';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LanguageService {\r\n\r\n constructor(\r\n private translateService: TranslateService,\r\n private http: HttpClient,\r\n private i18n: NzI18nService\r\n ) { }\r\n\r\n public translate(key: string) {\r\n let value: string\r\n this.translateService.get(key).subscribe(res => value = res)\r\n return value\r\n }\r\n\r\n switchLanguage(key) {\r\n switch (key) {\r\n case \"vi\": this.i18n.setLocale(vi_VN); break;\r\n default: this.i18n.setLocale(en_US); break;\r\n }\r\n }\r\n // Phương thức lấy danh sách ngôn ngữ từ file JSON\r\n getLanguages(){\r\n\r\n const languageCodeUrl = 'assets/data/language_code/language_code.json';\r\n return this.http.get<any[]>(languageCodeUrl);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { from, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class JsonDataService {\r\n\r\n /** Mảng chứa các thiết bị cần copy từ desktop sang */\r\n private devicesNeedToCopyFromDesktop = [\r\n 'tablet_portrait', \r\n 'tablet_landscape', \r\n 'mobile_landscape', \r\n 'mobile_portrait'\r\n ];\r\n\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n /** Hàm này thực hiện lấy dữ liệu block từ json\r\n *\r\n * @param typeBlock kiểu block\r\n * @returns dữ liệu block\r\n */\r\n getEwaBlock(typeBlock: string) {\r\n const url = `assets/ewa-data/blocks/${typeBlock}.json`;\r\n return this.http.get(url);\r\n }\r\n\r\n /** Hàm này thực hiện lấy dữ liệu object từ json\r\n *\r\n * @param name tên object\r\n * @param type kiểu object\r\n * @returns\r\n */\r\n getEwaObject(name: string, type: string) {\r\n let url = `assets/ewa-data/objects/object-${type}/${name}.json`;\r\n return this.http.get(url);\r\n }\r\n\r\n /** Hàm thực hiện lấy danh sách object từ json\r\n *\r\n * @returns\r\n */\r\n getEwaObjectList(): Observable<any[]> {\r\n const url = `assets/ewa-data/menu/objects.json`;\r\n return this.http.get<any[]>(url);\r\n }\r\n\r\n /** Hàm thực hiện lấy danh sách block từ json\r\n *\r\n * @returns\r\n */\r\n getEwaBlockList(): Observable<any[]> {\r\n const url = `assets/ewa-data/menu/blocks.json`;\r\n return this.http.get<any[]>(url);\r\n }\r\n\r\n /** Hàm thực hiện lấy danh sách frame từ json\r\n *\r\n * @returns\r\n */\r\n getEwaFrameList(): Observable<any[]> {\r\n const url = `assets/ewa-data/menu/frames.json`;\r\n return this.http.get<any[]>(url);\r\n }\r\n\r\n /** Hàm này thực hiện lấy dữ liệu frame từ json\r\n *\r\n * @param nameFrame kiểu frame\r\n * @returns dữ liệu frame\r\n */\r\n getEwaFrame(nameFrame: string) {\r\n const url = `assets/ewa-data/frames/${nameFrame}.json`;\r\n return this.http.get(url);\r\n } \r\n \r\n // --------------------\r\n /** Hàm này thực hiện lấy dữ liệu block từ json\r\n *\r\n * @param typeBlock kiểu block\r\n * @returns dữ liệu block\r\n */\r\n getBlock(typeBlock: string) {\r\n const url = `assets/data/blocks/${typeBlock}.json`;\r\n return from(this.http.get(url).toPromise().then((block: any) => {\r\n // Copy dữ liệu từ desktop sang các thiết bị khác\r\n this.devicesNeedToCopyFromDesktop.forEach(device => {\r\n // Copy class\r\n if (!block[`${device}_class`] && block.desktop_class) block[`${device}_class`] = JSON.parse(JSON.stringify(block.desktop_class));\r\n // Copy config\r\n if (!block[`${device}_config`] && block.desktop_config) block[`${device}_config`] = JSON.parse(JSON.stringify(block.desktop_config));\r\n });\r\n return block;\r\n }));\r\n }\r\n\r\n /** Hàm này thực hiện lấy dữ liệu object từ json\r\n *\r\n * @param name tên object\r\n * @param type kiểu object\r\n * @returns\r\n */\r\n getObject(name: string, type: string) {\r\n const url = `assets/data/objects/object-${type}/${name}.json`;\r\n return from(this.http.get(url).toPromise().then((object: any) => {\r\n // Copy dữ liệu từ desktop sang các thiết bị khác\r\n this.devicesNeedToCopyFromDesktop.forEach(device => {\r\n // Copy class\r\n if (!object[`${device}_class`] && object.desktop_class) object[`${device}_class`] = JSON.parse(JSON.stringify(object.desktop_class));\r\n // Copy config\r\n if (!object[`${device}_config`] && object.desktop_config) object[`${device}_config`] = JSON.parse(JSON.stringify(object.desktop_config));\r\n });\r\n return object;\r\n }));\r\n }\r\n\r\n /** Hàm thực hiện lấy danh sách object từ json\r\n *\r\n * @returns\r\n */\r\n getObjectList(): Observable<any[]> {\r\n const url = `assets/data/menu/objects.json`;\r\n return this.http.get<any[]>(url);\r\n }\r\n\r\n /** Hàm thực hiện lấy danh sách block từ json\r\n *\r\n * @returns\r\n */\r\n getBlockList(): Observable<any[]> {\r\n const url = `assets/data/menu/blocks.json`;\r\n return this.http.get<any[]>(url);\r\n }\r\n\r\n /** Hàm thực hiện lấy danh sách frame từ json\r\n *\r\n * @returns\r\n */\r\n getFrameList(): Observable<any[]> {\r\n const url = `assets/data/menu/frames.json`;\r\n return this.http.get<any[]>(url);\r\n }\r\n\r\n /** Hàm này thực hiện lấy dữ liệu frame từ json\r\n *\r\n * @param nameFrame kiểu frame\r\n * @returns dữ liệu frame\r\n */\r\n getFrame(nameFrame: string) {\r\n const url = `assets/data/frames/${nameFrame}.json`;\r\n return from(this.http.get(url).toPromise().then((frame: any) => {\r\n // Copy dữ liệu từ desktop sang các thiết bị khác\r\n this.devicesNeedToCopyFromDesktop.forEach(device => {\r\n // Copy class\r\n if (!frame[`${device}_class`] && frame.desktop_class) frame[`${device}_class`] = JSON.parse(JSON.stringify(frame.desktop_class));\r\n // Copy config\r\n if (!frame[`${device}_config`] && frame.desktop_config) frame[`${device}_config`] = JSON.parse(JSON.stringify(frame.desktop_config));\r\n });\r\n return frame;\r\n }));\r\n }\r\n\r\n getFonts(): Observable<any[]> {\r\n const url = `assets/fonts/fonts.json`;\r\n return this.http.get<any[]>(url);\r\n }\r\n\r\n /**\r\n * hàm get danh sách lĩnh vực bộ công cụ thiết kế\r\n * @returns\r\n */\r\n getMainSectors(): Observable<any[]> {\r\n const url = `assets/data/group/main_sectors.json`;\r\n return this.http.get<any[]>(url);\r\n }\r\n\r\n\r\n getDesignTool(data_array) {\r\n const url = `assets/data/group/design_tools.json`;\r\n return new Promise((resolve) => {\r\n // biến này để gộp chung các dữ liệu get được thành 1 biến duy nhất để xử lý loại bỏ trùng lặp phần tử\r\n let group = {\r\n blocks: {\r\n blank: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n grid: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n\r\n header: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n footer: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n mobile_tabs: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n chatbox: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_hover: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_tabs: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_welcome: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n block_responsive: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n hover_blank: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n menu_hover: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_detail_product: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_detail_snimei: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_detail_food_drink: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_detail_recruitment: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_detail_news: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_detail_service: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_detail_website: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n },\r\n frames: {\r\n frame_dev: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_recruitment: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_recruitment_detail: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_blank: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_tab_2states: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n\r\n frame_collapse: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_mutil_blank: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_cart_products: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_cart_products_choosed: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_blogs: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_snimei_detail: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_category_detail: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_services: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_service_detail: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_service_relate: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_services_category: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_category: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_news_detail: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_news_group: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_news_category: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_news_relate: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_news: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_news_favorited: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_food_drink: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_food_drink_by_category: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_food_drink_detail: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_food_drink_relate: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_app: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_app_by_category: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_website: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_website_by_category: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_website_detail: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_website_relate: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_product: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n\r\n frame_products_favorited: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_product_viewed: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n\r\n frame_product_by_category: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_product_detail: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_product_relate: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_search_by_keyword: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_search_by_keyword_app: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_search_by_keyword_website: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_search_by_keyword_foods: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_search_by_keyword_news: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_search_by_keyword_services: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n \r\n frame_result_ecommerce: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_result_food_drink: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_result_news: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_result_webapp: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_result_service: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_result_recruitment: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_result_snimei: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_brand: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_hotel: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_banner: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_repeat: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n },\r\n };\r\n\r\n\r\n this.http.get<any[]>(url).subscribe((data) => {\r\n data_array?.forEach((element) => {\r\n if (data[element]) {\r\n group.blocks.grid.group_frames =\r\n group.blocks.grid.group_frames.concat(\r\n data[element].blocks.grid\r\n ? data[element].blocks.grid.group_frames\r\n : []\r\n );\r\n group.blocks.grid.group_objects =\r\n group.blocks.grid.group_objects.concat(\r\n data[element].blocks.grid\r\n ? data[element].blocks.grid.group_objects\r\n : []\r\n );\r\n group.blocks.blank.group_frames =\r\n group.blocks.blank.group_frames.concat(\r\n data[element].blocks.blank\r\n ? data[element].blocks.blank.group_frames\r\n : []\r\n );\r\n group.blocks.blank.group_objects =\r\n group.blocks.blank.group_objects.concat(\r\n data[element].blocks.blank\r\n ? data[element].blocks.blank.group_objects\r\n : []\r\n );\r\n group.blocks.header.group_frames =\r\n group.blocks.header.group_frames.concat(\r\n data[element].blocks.header\r\n ? data[element].blocks.header.group_frames\r\n : []\r\n );\r\n group.blocks.header.group_objects =\r\n group.blocks.header.group_objects.concat(\r\n data[element].blocks.header\r\n ? data[element].blocks.header.group_objects\r\n : []\r\n );\r\n group.blocks.footer.group_frames =\r\n group.blocks.footer.group_frames.concat(\r\n data[element].blocks.footer\r\n ? data[element].blocks.footer.group_frames\r\n : []\r\n );\r\n group.blocks.footer.group_objects =\r\n group.blocks.footer.group_objects.concat(\r\n data[element].blocks.footer\r\n ? data[element].blocks.footer.group_objects\r\n : []\r\n );\r\n\r\n group.blocks.mobile_tabs.group_frames =\r\n group.blocks.mobile_tabs.group_frames.concat(\r\n data[element].blocks.mobile_tabs\r\n ? data[element].blocks.mobile_tabs.group_frames\r\n : []\r\n );\r\n group.blocks.mobile_tabs.group_objects =\r\n group.blocks.mobile_tabs.group_objects.concat(\r\n data[element].blocks.mobile_tabs\r\n ? data[element].blocks.mobile_tabs.group_objects\r\n : []\r\n );\r\n\r\n group.blocks.chatbox.group_frames =\r\n group.blocks.chatbox.group_frames.concat(\r\n data[element].blocks.chatbox\r\n ? data[element].blocks.chatbox.group_frames\r\n : []\r\n );\r\n group.blocks.chatbox.group_objects =\r\n group.blocks.chatbox.group_objects.concat(\r\n data[element].blocks.chatbox\r\n ? data[element].blocks.chatbox.group_objects\r\n : []\r\n );\r\n group.blocks.popup_hover.group_frames =\r\n group.blocks.popup_hover.group_frames.concat(\r\n data[element].blocks.popup_hover\r\n ? data[element].blocks.popup_hover.group_frames\r\n : []\r\n );\r\n group.blocks.popup_hover.group_objects =\r\n group.blocks.popup_hover.group_objects.concat(\r\n data[element].blocks.popup_hover\r\n ? data[element].blocks.popup_hover.group_objects\r\n : []\r\n );\r\n group.blocks.popup_tabs.group_frames =\r\n group.blocks.popup_tabs.group_frames.concat(\r\n data[element].blocks.popup_tabs\r\n ? data[element].blocks.popup_tabs.group_frames\r\n : []\r\n );\r\n group.blocks.popup_tabs.group_objects =\r\n group.blocks.popup_tabs.group_objects.concat(\r\n data[element].blocks.popup_tabs\r\n ? data[element].blocks.popup_tabs.group_objects\r\n : []\r\n );\r\n\r\n group.blocks.popup_welcome.group_frames =\r\n group.blocks.popup_welcome.group_frames.concat(\r\n data[element].blocks.popup_welcome\r\n ? data[element].blocks.popup_welcome.group_frames\r\n : []\r\n );\r\n group.blocks.popup_welcome.group_objects =\r\n group.blocks.popup_welcome.group_objects.concat(\r\n data[element].blocks.popup_welcome\r\n ? data[element].blocks.popup_welcome.group_objects\r\n : []\r\n );\r\n group.blocks.popup_detail_product.group_frames =\r\n group.blocks.popup_detail_product.group_frames.concat(\r\n data[element].blocks.popup_detail_product\r\n ? data[element].blocks.popup_detail_product.group_frames\r\n : []\r\n );\r\n group.blocks.popup_detail_product.group_objects =\r\n group.blocks.popup_detail_product.group_objects.concat(\r\n data[element].blocks.popup_detail_product\r\n ? data[element].blocks.popup_detail_product.group_objects\r\n : []\r\n );\r\n\r\n group.blocks.popup_detail_snimei.group_frames =\r\n group.blocks.popup_detail_snimei.group_frames.concat(\r\n data[element].blocks.popup_detail_snimei\r\n ? data[element].blocks.popup_detail_snimei.group_frames\r\n : []\r\n );\r\n group.blocks.popup_detail_snimei.group_objects =\r\n group.blocks.popup_detail_snimei.group_objects.concat(\r\n data[element].blocks.popup_detail_snimei\r\n ? data[element].blocks.popup_detail_snimei.group_objects\r\n : []\r\n );\r\n\r\n group.blocks.hover_blank.group_frames =\r\n group.blocks.hover_blank.group_frames.concat(\r\n data[element].blocks.hover_blank\r\n ? data[element].blocks.hover_blank.group_frames\r\n : []\r\n );\r\n group.blocks.hover_blank.group_objects =\r\n group.blocks.hover_blank.group_objects.concat(\r\n data[element].blocks.hover_blank\r\n ? data[element].blocks.hover_blank.group_objects\r\n : []\r\n );\r\n group.blocks.menu_hover.group_frames =\r\n group.blocks.menu_hover.group_frames.concat(\r\n data[element].blocks.menu_hover\r\n ? data[element].blocks.menu_hover.group_frames\r\n : []\r\n );\r\n group.blocks.menu_hover.group_objects =\r\n group.blocks.menu_hover.group_objects.concat(\r\n data[element].blocks.menu_hover\r\n ? data[element].blocks.menu_hover.group_objects\r\n : []\r\n );\r\n\r\n group.blocks.popup_detail_food_drink.group_frames =\r\n group.blocks.popup_detail_food_drink.group_frames.concat(\r\n data[element].blocks.popup_detail_food_drink\r\n ? data[element].blocks.popup_detail_food_drink.group_frames\r\n : []\r\n );\r\n group.blocks.popup_detail_food_drink.group_objects =\r\n group.blocks.popup_detail_food_drink.group_objects.concat(\r\n data[element].blocks.popup_detail_food_drink\r\n ? data[element].blocks.popup_detail_food_drink.group_objects\r\n : []\r\n );\r\n group.blocks.popup_detail_recruitment.group_frames =\r\n group.blocks.popup_detail_recruitment.group_frames.concat(\r\n data[element].blocks.popup_detail_recruitment\r\n ? data[element].blocks.popup_detail_recruitment.group_frames\r\n : []\r\n );\r\n group.blocks.popup_detail_recruitment.group_objects =\r\n group.blocks.popup_detail_recruitment.group_objects.concat(\r\n data[element].blocks.popup_detail_recruitment\r\n ? data[element].blocks.popup_detail_recruitment.group_objects\r\n : []\r\n );\r\n group.blocks.popup_detail_news.group_frames =\r\n group.blocks.popup_detail_news.group_frames.concat(\r\n data[element].blocks.popup_detail_news\r\n ? data[element].blocks.popup_detail_news.group_frames\r\n : []\r\n );\r\n group.blocks.popup_detail_news.group_objects =\r\n group.blocks.popup_detail_news.group_objects.concat(\r\n data[element].blocks.popup_detail_news\r\n ? data[element].blocks.popup_detail_news.group_objects\r\n : []\r\n );\r\n\r\n group.blocks.popup_detail_service.group_frames =\r\n group.blocks.popup_detail_service.group_frames.concat(\r\n data[element].blocks.popup_detail_service\r\n ? data[element].blocks.popup_detail_service.group_frames\r\n : []\r\n );\r\n group.blocks.popup_detail_service.group_objects =\r\n group.blocks.popup_detail_service.group_objects.concat(\r\n data[element].blocks.popup_detail_service\r\n ? data[element].blocks.popup_detail_service.group_objects\r\n : []\r\n );\r\n\r\n group.blocks.popup_detail_website.group_frames =\r\n group.blocks.popup_detail_website.group_frames.concat(\r\n data[element].blocks.popup_detail_website\r\n ? data[element].blocks.popup_detail_website.group_frames\r\n : []\r\n );\r\n group.blocks.popup_detail_website.group_objects =\r\n group.blocks.popup_detail_website.group_objects.concat(\r\n data[element].blocks.popup_detail_website\r\n ? data[element].blocks.popup_detail_website.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_dev.group_frames =\r\n group.frames.frame_dev.group_frames.concat(\r\n data[element].frames.frame_dev\r\n ? data[element].frames.frame_dev.group_frames\r\n : []\r\n );\r\n group.frames.frame_dev.group_objects =\r\n group.frames.frame_dev.group_objects.concat(\r\n data[element].frames.frame_dev\r\n ? data[element].frames.frame_dev.group_objects\r\n : []\r\n );\r\n group.frames.frame_recruitment.group_frames =\r\n group.frames.frame_recruitment.group_frames.concat(\r\n data[element].frames.frame_recruitment\r\n ? data[element].frames.frame_recruitment.group_frames\r\n : []\r\n );\r\n group.frames.frame_recruitment.group_objects =\r\n group.frames.frame_recruitment.group_objects.concat(\r\n data[element].frames.frame_recruitment\r\n ? data[element].frames.frame_recruitment.group_objects\r\n : []\r\n );\r\n group.frames.frame_recruitment_detail.group_frames =\r\n group.frames.frame_recruitment_detail.group_frames.concat(\r\n data[element].frames.frame_recruitment_detail\r\n ? data[element].frames.frame_recruitment_detail.group_frames\r\n : []\r\n );\r\n group.frames.frame_recruitment_detail.group_objects =\r\n group.frames.frame_recruitment_detail.group_objects.concat(\r\n data[element].frames.frame_recruitment_detail\r\n ? data[element].frames.frame_recruitment.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_blank.group_frames =\r\n group.frames.frame_blank.group_frames.concat(\r\n data[element].frames.frame_blank\r\n ? data[element].frames.frame_blank.group_frames\r\n : []\r\n );\r\n group.frames.frame_blank.group_objects =\r\n group.frames.frame_blank.group_objects.concat(\r\n data[element].frames.frame_blank\r\n ? data[element].frames.frame_blank.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_tab_2states.group_frames =\r\n group.frames.frame_tab_2states.group_frames.concat(\r\n data[element].frames.frame_tab_2states\r\n ? data[element].frames.frame_tab_2states.group_frames\r\n : []\r\n );\r\n group.frames.frame_tab_2states.group_objects =\r\n group.frames.frame_tab_2states.group_objects.concat(\r\n data[element].frames.frame_tab_2states\r\n ? data[element].frames.frame_tab_2states.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_collapse.group_frames =\r\n group.frames.frame_collapse.group_frames.concat(\r\n data[element].frames.frame_collapse\r\n ? data[element].frames.frame_collapse.group_frames\r\n : []\r\n );\r\n group.frames.frame_collapse.group_objects =\r\n group.frames.frame_collapse.group_objects.concat(\r\n data[element].frames.frame_collapse\r\n ? data[element].frames.frame_collapse.group_objects\r\n : []\r\n );\r\n group.frames.frame_mutil_blank.group_frames =\r\n group.frames.frame_mutil_blank.group_frames.concat(\r\n data[element].frames.frame_mutil_blank\r\n ? data[element].frames.frame_mutil_blank.group_frames\r\n : []\r\n );\r\n group.frames.frame_mutil_blank.group_objects =\r\n group.frames.frame_mutil_blank.group_objects.concat(\r\n data[element].frames.frame_mutil_blank\r\n ? data[element].frames.frame_mutil_blank.group_objects\r\n : []\r\n );\r\n group.frames.frame_blogs.group_frames =\r\n group.frames.frame_blogs.group_frames.concat(\r\n data[element].frames.frame_blogs\r\n ? data[element].frames.frame_blogs.group_frames\r\n : []\r\n );\r\n group.frames.frame_blogs.group_objects =\r\n group.frames.frame_blogs.group_objects.concat(\r\n data[element].frames.frame_blogs\r\n ? data[element].frames.frame_blogs.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_snimei_detail.group_frames =\r\n group.frames.frame_snimei_detail.group_frames.concat(\r\n data[element].frames.frame_snimei_detail\r\n ? data[element].frames.frame_snimei_detail.group_frames\r\n : []\r\n );\r\n group.frames.frame_snimei_detail.group_objects =\r\n group.frames.frame_snimei_detail.group_objects.concat(\r\n data[element].frames.frame_snimei_detail\r\n ? data[element].frames.frame_snimei_detail.group_objects\r\n : []\r\n );\r\n group.frames.frame_brand.group_frames =\r\n group.frames.frame_brand.group_frames.concat(\r\n data[element].frames.frame_brand\r\n ? data[element].frames.frame_brand.group_frames\r\n : []\r\n );\r\n group.frames.frame_brand.group_objects =\r\n group.frames.frame_brand.group_objects.concat(\r\n data[element].frames.frame_brand\r\n ? data[element].frames.frame_brand.group_objects\r\n : []\r\n );\r\n group.frames.frame_cart_products.group_frames =\r\n group.frames.frame_cart_products.group_frames.concat(\r\n data[element].frames.frame_cart_products\r\n ? data[element].frames.frame_cart_products.group_frames\r\n : []\r\n );\r\n group.frames.frame_cart_products.group_objects =\r\n group.frames.frame_cart_products.group_objects.concat(\r\n data[element].frames.frame_cart_products\r\n ? data[element].frames.frame_cart_products.group_objects\r\n : []\r\n );\r\n group.frames.frame_cart_products.group_frames =\r\n group.frames.frame_cart_products_choosed.group_frames.concat(\r\n data[element].frames.frame_cart_products_choosed\r\n ? data[element].frames.frame_cart_products_choosed\r\n .group_frames\r\n : []\r\n );\r\n group.frames.frame_cart_products_choosed.group_objects =\r\n group.frames.frame_cart_products_choosed.group_objects.concat(\r\n data[element].frames.frame_cart_products_choosed\r\n ? data[element].frames.frame_cart_products_choosed\r\n .group_objects\r\n : []\r\n );\r\n group.frames.frame_category.group_frames =\r\n group.frames.frame_category.group_frames.concat(\r\n data[element].frames.frame_category\r\n ? data[element].frames.frame_category.group_frames\r\n : []\r\n );\r\n group.frames.frame_category.group_objects =\r\n group.frames.frame_category.group_objects.concat(\r\n data[element].frames.frame_category\r\n ? data[element].frames.frame_category.group_objects\r\n : []\r\n );\r\n group.frames.frame_category_detail.group_frames =\r\n group.frames.frame_category_detail.group_frames.concat(\r\n data[element].frames.frame_category_detail\r\n ? data[element].frames.frame_category_detail.group_frames\r\n : []\r\n );\r\n group.frames.frame_category_detail.group_objects =\r\n group.frames.frame_category_detail.group_objects.concat(\r\n data[element].frames.frame_category_detail\r\n ? data[element].frames.frame_category_detail.group_objects\r\n : []\r\n );\r\n group.frames.frame_news.group_frames =\r\n group.frames.frame_news.group_frames.concat(\r\n data[element].frames.frame_news\r\n ? data[element].frames.frame_news.group_frames\r\n : []\r\n );\r\n group.frames.frame_news.group_objects =\r\n group.frames.frame_news.group_objects.concat(\r\n data[element].frames.frame_news\r\n ? data[element].frames.frame_news.group_objects\r\n : []\r\n );\r\n group.frames.frame_news_favorited.group_frames =\r\n group.frames.frame_news_favorited.group_frames.concat(\r\n data[element].frames.frame_news_favorited\r\n ? data[element].frames.frame_news_favorited.group_frames\r\n : []\r\n );\r\n group.frames.frame_news_favorited.group_objects =\r\n group.frames.frame_news_favorited.group_objects.concat(\r\n data[element].frames.frame_news_favorited\r\n ? data[element].frames.frame_news_favorited.group_objects\r\n : []\r\n );\r\n group.frames.frame_news_detail.group_frames =\r\n group.frames.frame_news_detail.group_frames.concat(\r\n data[element].frames.frame_news_detail\r\n ? data[element].frames.frame_news_detail.group_frames\r\n : []\r\n );\r\n group.frames.frame_news_detail.group_objects =\r\n group.frames.frame_news_detail.group_objects.concat(\r\n data[element].frames.frame_news_detail\r\n ? data[element].frames.frame_news_detail.group_objects\r\n : []\r\n );\r\n group.frames.frame_news_group.group_frames =\r\n group.frames.frame_news_group.group_frames.concat(\r\n data[element].frames.frame_news_group\r\n ? data[element].frames.frame_news_group.group_frames\r\n : []\r\n );\r\n group.frames.frame_news_group.group_objects =\r\n group.frames.frame_news_group.group_objects.concat(\r\n data[element].frames.frame_news_group\r\n ? data[element].frames.frame_news_group.group_objects\r\n : []\r\n );\r\n group.frames.frame_news_category.group_frames =\r\n group.frames.frame_news_category.group_frames.concat(\r\n data[element].frames.frame_news_category\r\n ? data[element].frames.frame_news_category.group_frames\r\n : []\r\n );\r\n group.frames.frame_news_category.group_objects =\r\n group.frames.frame_news_category.group_objects.concat(\r\n data[element].frames.frame_news_category\r\n ? data[element].frames.frame_news_category.group_objects\r\n : []\r\n );\r\n group.frames.frame_news_relate.group_frames =\r\n group.frames.frame_news_relate.group_frames.concat(\r\n data[element].frames.frame_news_relate\r\n ? data[element].frames.frame_news_relate.group_frames\r\n : []\r\n );\r\n group.frames.frame_news_relate.group_objects =\r\n group.frames.frame_news_relate.group_objects.concat(\r\n data[element].frames.frame_news_relate\r\n ? data[element].frames.frame_news_relate.group_objects\r\n : []\r\n );\r\n group.frames.frame_product.group_frames =\r\n group.frames.frame_product.group_frames.concat(\r\n data[element].frames.frame_product\r\n ? data[element].frames.frame_product.group_frames\r\n : []\r\n );\r\n group.frames.frame_product.group_objects =\r\n group.frames.frame_product.group_objects.concat(\r\n data[element].frames.frame_product\r\n ? data[element].frames.frame_product.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_repeat.group_frames =\r\n group.frames.frame_repeat.group_frames.concat(\r\n data[element].frames.frame_repeat\r\n ? data[element].frames.frame_repeat.group_frames\r\n : []\r\n );\r\n group.frames.frame_repeat.group_objects =\r\n group.frames.frame_repeat.group_objects.concat(\r\n data[element].frames.frame_repeat\r\n ? data[element].frames.frame_repeat.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_product_viewed.group_frames =\r\n group.frames.frame_product_viewed.group_frames.concat(\r\n data[element].frames.frame_product_viewed\r\n ? data[element].frames.frame_product_viewed.group_frames\r\n : []\r\n );\r\n group.frames.frame_product_viewed.group_objects =\r\n group.frames.frame_product_viewed.group_objects.concat(\r\n data[element].frames.frame_product_viewed\r\n ? data[element].frames.frame_product_viewed.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_products_favorited.group_frames =\r\n group.frames.frame_products_favorited.group_frames.concat(\r\n data[element].frames.frame_products_favorited\r\n ? data[element].frames.frame_products_favorited.group_frames\r\n : []\r\n );\r\n group.frames.frame_products_favorited.group_objects =\r\n group.frames.frame_products_favorited.group_objects.concat(\r\n data[element].frames.frame_products_favorited\r\n ? data[element].frames.frame_products_favorited.group_objects\r\n : []\r\n );\r\n\r\n\r\n group.frames.frame_product_detail.group_frames =\r\n group.frames.frame_product_detail.group_frames.concat(\r\n data[element].frames.frame_product_detail\r\n ? data[element].frames.frame_product_detail.group_frames\r\n : []\r\n );\r\n group.frames.frame_product_detail.group_objects =\r\n group.frames.frame_product_detail.group_objects.concat(\r\n data[element].frames.frame_product_detail\r\n ? data[element].frames.frame_product_detail.group_objects\r\n : []\r\n );\r\n group.frames.frame_product_by_category.group_frames =\r\n group.frames.frame_product_by_category.group_frames.concat(\r\n data[element].frames.frame_product_by_category\r\n ? data[element].frames.frame_product_by_category.group_frames\r\n : []\r\n );\r\n group.frames.frame_product_by_category.group_objects =\r\n group.frames.frame_product_by_category.group_objects.concat(\r\n data[element].frames.frame_product_by_category\r\n ? data[element].frames.frame_product_by_category.group_objects\r\n : []\r\n );\r\n group.frames.frame_product_relate.group_frames =\r\n group.frames.frame_product_relate.group_frames.concat(\r\n data[element].frames.frame_product_relate\r\n ? data[element].frames.frame_product_relate.group_frames\r\n : []\r\n );\r\n group.frames.frame_product_relate.group_objects =\r\n group.frames.frame_product_relate.group_objects.concat(\r\n data[element].frames.frame_product_relate\r\n ? data[element].frames.frame_product_relate.group_objects\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword.group_frames =\r\n group.frames.frame_search_by_keyword.group_frames.concat(\r\n data[element].frames.frame_search_by_keyword\r\n ? data[element].frames.frame_search_by_keyword.group_frames\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword.group_objects =\r\n group.frames.frame_search_by_keyword.group_objects.concat(\r\n data[element].frames.frame_search_by_keyword\r\n ? data[element].frames.frame_search_by_keyword.group_objects\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_app.group_frames =\r\n group.frames.frame_search_by_keyword_app.group_frames.concat(\r\n data[element].frames.frame_search_by_keyword_app\r\n ? data[element].frames.frame_search_by_keyword_app.group_frames\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_app.group_objects =\r\n group.frames.frame_search_by_keyword_app.group_objects.concat(\r\n data[element].frames.frame_search_by_keyword_app\r\n ? data[element].frames.frame_search_by_keyword_app.group_objects\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_foods.group_frames =\r\n group.frames.frame_search_by_keyword_foods.group_frames.concat(\r\n data[element].frames.frame_search_by_keyword_foods\r\n ? data[element].frames.frame_search_by_keyword_foods.group_frames\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_foods.group_objects =\r\n group.frames.frame_search_by_keyword_foods.group_objects.concat(\r\n data[element].frames.frame_search_by_keyword_foods\r\n ? data[element].frames.frame_search_by_keyword_foods.group_objects\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_news.group_frames =\r\n group.frames.frame_search_by_keyword_news.group_frames.concat(\r\n data[element].frames.frame_search_by_keyword_news\r\n ? data[element].frames.frame_search_by_keyword_news.group_frames\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_news.group_objects =\r\n group.frames.frame_search_by_keyword_news.group_objects.concat(\r\n data[element].frames.frame_search_by_keyword_news\r\n ? data[element].frames.frame_search_by_keyword_news.group_objects\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_services.group_frames =\r\n group.frames.frame_search_by_keyword_services.group_frames.concat(\r\n data[element].frames.frame_search_by_keyword_services\r\n ? data[element].frames.frame_search_by_keyword_services.group_frames\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_services.group_objects =\r\n group.frames.frame_search_by_keyword_services.group_objects.concat(\r\n data[element].frames.frame_search_by_keyword_services\r\n ? data[element].frames.frame_search_by_keyword_services.group_objects\r\n : []\r\n );\r\n group.frames.frame_result_ecommerce.group_frames =\r\n group.frames.frame_result_ecommerce.group_frames.concat(\r\n data[element].frames.frame_result_ecommerce\r\n ? data[element].frames.frame_result_ecommerce.group_frames\r\n : []\r\n );\r\n group.frames.frame_result_ecommerce.group_objects =\r\n group.frames.frame_result_ecommerce.group_objects.concat(\r\n data[element].frames.frame_result_ecommerce\r\n ? data[element].frames.frame_result_ecommerce.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_result_food_drink.group_frames =\r\n group.frames.frame_result_food_drink.group_frames.concat(\r\n data[element].frames.frame_result_food_drink\r\n ? data[element].frames.frame_result_food_drink.group_frames\r\n : []\r\n );\r\n group.frames.frame_result_food_drink.group_objects =\r\n group.frames.frame_result_food_drink.group_objects.concat(\r\n data[element].frames.frame_result_food_drink\r\n ? data[element].frames.frame_result_food_drink.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_result_news.group_frames =\r\n group.frames.frame_result_news.group_frames.concat(\r\n data[element].frames.frame_result_news\r\n ? data[element].frames.frame_result_news.group_frames\r\n : []\r\n );\r\n group.frames.frame_result_news.group_objects =\r\n group.frames.frame_result_news.group_objects.concat(\r\n data[element].frames.frame_result_news\r\n ? data[element].frames.frame_result_news.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_result_webapp.group_frames =\r\n group.frames.frame_result_webapp.group_frames.concat(\r\n data[element].frames.frame_result_webapp\r\n ? data[element].frames.frame_result_webapp.group_frames\r\n : []\r\n );\r\n group.frames.frame_result_webapp.group_objects =\r\n group.frames.frame_result_webapp.group_objects.concat(\r\n data[element].frames.frame_result_webapp\r\n ? data[element].frames.frame_result_webapp.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_result_service.group_frames =\r\n group.frames.frame_result_service.group_frames.concat(\r\n data[element].frames.frame_result_service\r\n ? data[element].frames.frame_result_service.group_frames\r\n : []\r\n );\r\n group.frames.frame_result_service.group_objects =\r\n group.frames.frame_result_service.group_objects.concat(\r\n data[element].frames.frame_result_service\r\n ? data[element].frames.frame_result_service.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_result_recruitment.group_frames =\r\n group.frames.frame_result_recruitment.group_frames.concat(\r\n data[element].frames.frame_result_recruitment\r\n ? data[element].frames.frame_result_recruitment.group_frames\r\n : []\r\n );\r\n group.frames.frame_result_recruitment.group_objects =\r\n group.frames.frame_result_recruitment.group_objects.concat(\r\n data[element].frames.frame_result_recruitment\r\n ? data[element].frames.frame_result_recruitment.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_result_snimei.group_frames =\r\n group.frames.frame_result_snimei.group_frames.concat(\r\n data[element].frames.frame_result_snimei\r\n ? data[element].frames.frame_result_snimei.group_frames\r\n : []\r\n );\r\n group.frames.frame_result_snimei.group_objects =\r\n group.frames.frame_result_snimei.group_objects.concat(\r\n data[element].frames.frame_result_snimei\r\n ? data[element].frames.frame_result_snimei.group_objects\r\n : []\r\n );\r\n\r\n\r\n\r\n group.frames.frame_services.group_frames =\r\n group.frames.frame_services.group_frames.concat(\r\n data[element].frames.frame_services\r\n ? data[element].frames.frame_services.group_frames\r\n : []\r\n );\r\n group.frames.frame_services.group_objects =\r\n group.frames.frame_services.group_objects.concat(\r\n data[element].frames.frame_services\r\n ? data[element].frames.frame_services.group_objects\r\n : []\r\n );\r\n group.frames.frame_service_detail.group_frames =\r\n group.frames.frame_service_detail.group_frames.concat(\r\n data[element].frames.frame_service_detail\r\n ? data[element].frames.frame_service_detail.group_frames\r\n : []\r\n );\r\n group.frames.frame_service_detail.group_objects =\r\n group.frames.frame_service_detail.group_objects.concat(\r\n data[element].frames.frame_service_detail\r\n ? data[element].frames.frame_service_detail.group_objects\r\n : []\r\n );\r\n group.frames.frame_service_relate.group_frames =\r\n group.frames.frame_service_relate.group_frames.concat(\r\n data[element].frames.frame_service_relate\r\n ? data[element].frames.frame_service_relate.group_frames\r\n : []\r\n );\r\n group.frames.frame_service_relate.group_objects =\r\n group.frames.frame_service_relate.group_objects.concat(\r\n data[element].frames.frame_service_relate\r\n ? data[element].frames.frame_service_relate.group_objects\r\n : []\r\n );\r\n group.frames.frame_services_category.group_frames =\r\n group.frames.frame_services_category.group_frames.concat(\r\n data[element].frames.frame_services_category\r\n ? data[element].frames.frame_services_category.group_frames\r\n : []\r\n );\r\n group.frames.frame_services_category.group_objects =\r\n group.frames.frame_services_category.group_objects.concat(\r\n data[element].frames.frame_services_category\r\n ? data[element].frames.frame_services_category.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_hotel.group_frames =\r\n group.frames.frame_hotel.group_frames.concat(\r\n data[element].frames.frame_hotel\r\n ? data[element].frames.frame_hotel.group_frames\r\n : []\r\n );\r\n group.frames.frame_hotel.group_objects =\r\n group.frames.frame_hotel.group_objects.concat(\r\n data[element].frames.frame_hotel\r\n ? data[element].frames.frame_hotel.group_objects\r\n : []\r\n );\r\n group.frames.frame_banner.group_frames =\r\n group.frames.frame_banner.group_frames.concat(\r\n data[element].frames.frame_banner\r\n ? data[element].frames.frame_banner.group_frames\r\n : []\r\n );\r\n group.frames.frame_banner.group_objects =\r\n group.frames.frame_banner.group_objects.concat(\r\n data[element].frames.frame_banner\r\n ? data[element].frames.frame_banner.group_objects\r\n : []\r\n );\r\n group.frames.frame_website.group_frames =\r\n group.frames.frame_website.group_frames.concat(\r\n data[element].frames.frame_website\r\n ? data[element].frames.frame_website.group_frames\r\n : []\r\n );\r\n group.frames.frame_website.group_objects =\r\n group.frames.frame_website.group_objects.concat(\r\n data[element].frames.frame_website\r\n ? data[element].frames.frame_website.group_objects\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_website.group_frames =\r\n group.frames.frame_search_by_keyword_website.group_frames.concat(\r\n data[element].frames.frame_search_by_keyword_website\r\n ? data[element].frames.frame_search_by_keyword_website.group_frames\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_website.group_objects =\r\n group.frames.frame_search_by_keyword_website.group_objects.concat(\r\n data[element].frames.frame_search_by_keyword_website\r\n ? data[element].frames.frame_search_by_keyword_website.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_website_by_category.group_frames =\r\n group.frames.frame_website_by_category.group_frames.concat(\r\n data[element].frames.frame_website_by_category\r\n ? data[element].frames.frame_website_by_category.group_frames\r\n : []\r\n );\r\n group.frames.frame_website_by_category.group_objects =\r\n group.frames.frame_website_by_category.group_objects.concat(\r\n data[element].frames.frame_website_by_category\r\n ? data[element].frames.frame_website_by_category.group_objects\r\n : []\r\n );\r\n group.frames.frame_website_detail.group_frames =\r\n group.frames.frame_website_detail.group_frames.concat(\r\n data[element].frames.frame_website_detail\r\n ? data[element].frames.frame_website_detail.group_frames\r\n : []\r\n );\r\n group.frames.frame_website_detail.group_objects =\r\n group.frames.frame_website_detail.group_objects.concat(\r\n data[element].frames.frame_website_detail\r\n ? data[element].frames.frame_website_detail.group_objects\r\n : []\r\n );\r\n group.frames.frame_website_relate.group_frames =\r\n group.frames.frame_website_relate.group_frames.concat(\r\n data[element].frames.frame_website_relate\r\n ? data[element].frames.frame_website_relate.group_frames\r\n : []\r\n );\r\n group.frames.frame_website_relate.group_objects =\r\n group.frames.frame_website_relate.group_objects.concat(\r\n data[element].frames.frame_website_relate\r\n ? data[element].frames.frame_website_relate.group_objects\r\n : []\r\n );\r\n group.frames.frame_app.group_frames =\r\n group.frames.frame_app.group_frames.concat(\r\n data[element].frames.frame_app\r\n ? data[element].frames.frame_app.group_frames\r\n : []\r\n );\r\n group.frames.frame_app.group_objects =\r\n group.frames.frame_app.group_objects.concat(\r\n data[element].frames.frame_app\r\n ? data[element].frames.frame_app.group_objects\r\n : []\r\n );\r\n group.frames.frame_app_by_category.group_frames =\r\n group.frames.frame_app_by_category.group_frames.concat(\r\n data[element].frames.frame_app_by_category\r\n ? data[element].frames.frame_app_by_category.group_frames\r\n : []\r\n );\r\n group.frames.frame_app_by_category.group_objects =\r\n group.frames.frame_app_by_category.group_objects.concat(\r\n data[element].frames.frame_app_by_category\r\n ? data[element].frames.frame_app_by_category.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_food_drink.group_frames =\r\n group.frames.frame_food_drink.group_frames.concat(\r\n data[element].frames.frame_food_drink\r\n ? data[element].frames.frame_food_drink.group_frames\r\n : []\r\n );\r\n group.frames.frame_food_drink.group_objects =\r\n group.frames.frame_food_drink.group_objects.concat(\r\n data[element].frames.frame_food_drink\r\n ? data[element].frames.frame_food_drink.group_objects\r\n : []\r\n );\r\n group.frames.frame_food_drink_by_category.group_frames =\r\n group.frames.frame_food_drink_by_category.group_frames.concat(\r\n data[element].frames.frame_food_drink_by_category\r\n ? data[element].frames.frame_food_drink_by_category\r\n .group_frames\r\n : []\r\n );\r\n group.frames.frame_food_drink_by_category.group_objects =\r\n group.frames.frame_food_drink_by_category.group_objects.concat(\r\n data[element].frames.frame_food_drink_by_category\r\n ? data[element].frames.frame_food_drink_by_category\r\n .group_objects\r\n : []\r\n );\r\n group.frames.frame_food_drink_detail.group_frames =\r\n group.frames.frame_food_drink_detail.group_frames.concat(\r\n data[element].frames.frame_food_drink_detail\r\n ? data[element].frames.frame_food_drink_detail.group_frames\r\n : []\r\n );\r\n group.frames.frame_food_drink_detail.group_objects =\r\n group.frames.frame_food_drink_detail.group_objects.concat(\r\n data[element].frames.frame_food_drink_detail\r\n ? data[element].frames.frame_food_drink_detail.group_objects\r\n : []\r\n );\r\n group.frames.frame_food_drink_relate.group_frames =\r\n group.frames.frame_food_drink_relate.group_frames.concat(\r\n data[element].frames.frame_food_drink_relate\r\n ? data[element].frames.frame_food_drink_relate.group_frames\r\n : []\r\n );\r\n group.frames.frame_food_drink_relate.group_objects =\r\n group.frames.frame_food_drink_relate.group_objects.concat(\r\n data[element].frames.frame_food_drink_relate\r\n ? data[element].frames.frame_food_drink_relate.group_objects\r\n : []\r\n );\r\n }\r\n });\r\n // tiến hành loại bỏ phần tử trùng lặp trong mảng\r\n\r\n group.blocks.grid.group_frames = Array.from(\r\n new Set(group.blocks.grid.group_frames)\r\n );\r\n group.blocks.grid.group_objects = Array.from(\r\n new Set(group.blocks.grid.group_objects)\r\n );\r\n group.blocks.blank.group_frames = Array.from(\r\n new Set(group.blocks.blank.group_frames)\r\n );\r\n group.blocks.blank.group_objects = Array.from(\r\n new Set(group.blocks.blank.group_objects)\r\n );\r\n group.blocks.header.group_frames = Array.from(\r\n new Set(group.blocks.header.group_frames)\r\n );\r\n group.blocks.header.group_objects = Array.from(\r\n new Set(group.blocks.header.group_objects)\r\n );\r\n group.blocks.footer.group_frames = Array.from(\r\n new Set(group.blocks.footer.group_frames)\r\n );\r\n group.blocks.footer.group_objects = Array.from(\r\n new Set(group.blocks.footer.group_objects)\r\n );\r\n\r\n group.blocks.mobile_tabs.group_frames = Array.from(\r\n new Set(group.blocks.mobile_tabs.group_frames)\r\n );\r\n group.blocks.mobile_tabs.group_objects = Array.from(\r\n new Set(group.blocks.mobile_tabs.group_objects)\r\n );\r\n\r\n group.blocks.chatbox.group_frames = Array.from(\r\n new Set(group.blocks.chatbox.group_frames)\r\n );\r\n group.blocks.chatbox.group_objects = Array.from(\r\n new Set(group.blocks.chatbox.group_objects)\r\n );\r\n group.blocks.popup_hover.group_frames = Array.from(\r\n new Set(group.blocks.popup_hover.group_frames)\r\n );\r\n group.blocks.popup_hover.group_objects = Array.from(\r\n new Set(group.blocks.popup_hover.group_objects)\r\n );\r\n group.blocks.popup_tabs.group_frames = Array.from(\r\n new Set(group.blocks.popup_tabs.group_frames)\r\n );\r\n group.blocks.popup_tabs.group_objects = Array.from(\r\n new Set(group.blocks.popup_tabs.group_objects)\r\n );\r\n group.blocks.popup_welcome.group_frames = Array.from(\r\n new Set(group.blocks.popup_welcome.group_frames)\r\n );\r\n group.blocks.popup_welcome.group_objects = Array.from(\r\n new Set(group.blocks.popup_welcome.group_objects)\r\n );\r\n group.blocks.popup_detail_product.group_frames = Array.from(\r\n new Set(group.blocks.popup_detail_product.group_frames)\r\n );\r\n group.blocks.popup_detail_product.group_objects = Array.from(\r\n new Set(group.blocks.popup_detail_product.group_objects)\r\n );\r\n group.blocks.popup_detail_snimei.group_frames = Array.from(\r\n new Set(group.blocks.popup_detail_snimei.group_frames)\r\n );\r\n group.blocks.popup_detail_snimei.group_objects = Array.from(\r\n new Set(group.blocks.popup_detail_snimei.group_objects)\r\n );\r\n group.blocks.hover_blank.group_frames = Array.from(\r\n new Set(group.blocks.hover_blank.group_frames)\r\n );\r\n group.blocks.hover_blank.group_objects = Array.from(\r\n new Set(group.blocks.hover_blank.group_objects)\r\n );\r\n group.blocks.menu_hover.group_frames = Array.from(\r\n new Set(group.blocks.menu_hover.group_frames)\r\n );\r\n group.blocks.menu_hover.group_objects = Array.from(\r\n new Set(group.blocks.menu_hover.group_objects)\r\n );\r\n group.blocks.popup_detail_product.group_frames = Array.from(\r\n new Set(group.blocks.popup_detail_product.group_frames)\r\n );\r\n group.blocks.popup_detail_product.group_objects = Array.from(\r\n new Set(group.blocks.popup_detail_product.group_objects)\r\n );\r\n\r\n group.blocks.popup_detail_food_drink.group_frames = Array.from(\r\n new Set(group.blocks.popup_detail_food_drink.group_frames)\r\n );\r\n group.blocks.popup_detail_food_drink.group_objects = Array.from(\r\n new Set(group.blocks.popup_detail_food_drink.group_objects)\r\n );\r\n\r\n group.blocks.popup_detail_recruitment.group_frames = Array.from(\r\n new Set(group.blocks.popup_detail_recruitment.group_frames)\r\n );\r\n group.blocks.popup_detail_recruitment.group_objects = Array.from(\r\n new Set(group.blocks.popup_detail_recruitment.group_objects)\r\n );\r\n\r\n group.blocks.popup_detail_news.group_frames = Array.from(\r\n new Set(group.blocks.popup_detail_news.group_frames)\r\n );\r\n group.blocks.popup_detail_news.group_objects = Array.from(\r\n new Set(group.blocks.popup_detail_news.group_objects)\r\n );\r\n\r\n group.blocks.popup_detail_service.group_frames = Array.from(\r\n new Set(group.blocks.popup_detail_service.group_frames)\r\n );\r\n group.blocks.popup_detail_service.group_objects = Array.from(\r\n new Set(group.blocks.popup_detail_service.group_objects)\r\n );\r\n\r\n group.blocks.popup_detail_website.group_frames = Array.from(\r\n new Set(group.blocks.popup_detail_website.group_frames)\r\n );\r\n group.blocks.popup_detail_website.group_objects = Array.from(\r\n new Set(group.blocks.popup_detail_website.group_objects)\r\n );\r\n\r\n group.frames.frame_dev.group_frames = Array.from(\r\n new Set(group.frames.frame_dev.group_frames)\r\n );\r\n group.frames.frame_dev.group_objects = Array.from(\r\n new Set(group.frames.frame_dev.group_objects)\r\n );\r\n group.frames.frame_recruitment.group_frames = Array.from(\r\n new Set(group.frames.frame_recruitment.group_frames)\r\n );\r\n group.frames.frame_recruitment.group_objects = Array.from(\r\n new Set(group.frames.frame_recruitment.group_objects)\r\n );\r\n group.frames.frame_recruitment_detail.group_frames = Array.from(\r\n new Set(group.frames.frame_recruitment_detail.group_frames)\r\n );\r\n group.frames.frame_recruitment_detail.group_objects = Array.from(\r\n new Set(group.frames.frame_recruitment_detail.group_objects)\r\n );\r\n\r\n group.frames.frame_blank.group_frames = Array.from(\r\n new Set(group.frames.frame_blank.group_frames)\r\n );\r\n group.frames.frame_blank.group_objects = Array.from(\r\n new Set(group.frames.frame_blank.group_objects)\r\n );\r\n\r\n group.frames.frame_tab_2states.group_frames = Array.from(\r\n new Set(group.frames.frame_tab_2states.group_frames)\r\n );\r\n group.frames.frame_tab_2states.group_objects = Array.from(\r\n new Set(group.frames.frame_tab_2states.group_objects)\r\n );\r\n\r\n group.frames.frame_collapse.group_frames = Array.from(\r\n new Set(group.frames.frame_collapse.group_frames)\r\n );\r\n group.frames.frame_collapse.group_objects = Array.from(\r\n new Set(group.frames.frame_collapse.group_objects)\r\n );\r\n group.frames.frame_mutil_blank.group_frames = Array.from(\r\n new Set(group.frames.frame_mutil_blank.group_frames)\r\n );\r\n group.frames.frame_mutil_blank.group_objects = Array.from(\r\n new Set(group.frames.frame_mutil_blank.group_objects)\r\n );\r\n group.frames.frame_blogs.group_frames = Array.from(\r\n new Set(group.frames.frame_blogs.group_frames)\r\n );\r\n group.frames.frame_blogs.group_objects = Array.from(\r\n new Set(group.frames.frame_blogs.group_objects)\r\n );\r\n group.frames.frame_snimei_detail.group_frames = Array.from(\r\n new Set(group.frames.frame_snimei_detail.group_frames)\r\n );\r\n group.frames.frame_snimei_detail.group_objects = Array.from(\r\n new Set(group.frames.frame_snimei_detail.group_objects)\r\n );\r\n group.frames.frame_brand.group_frames = Array.from(\r\n new Set(group.frames.frame_brand.group_frames)\r\n );\r\n group.frames.frame_brand.group_objects = Array.from(\r\n new Set(group.frames.frame_brand.group_objects)\r\n );\r\n group.frames.frame_cart_products.group_frames = Array.from(\r\n new Set(group.frames.frame_cart_products.group_frames)\r\n );\r\n group.frames.frame_cart_products.group_objects = Array.from(\r\n new Set(group.frames.frame_cart_products.group_objects)\r\n );\r\n group.frames.frame_cart_products_choosed.group_frames = Array.from(\r\n new Set(group.frames.frame_cart_products_choosed.group_frames)\r\n );\r\n group.frames.frame_cart_products_choosed.group_objects = Array.from(\r\n new Set(group.frames.frame_cart_products_choosed.group_objects)\r\n );\r\n group.frames.frame_category.group_frames = Array.from(\r\n new Set(group.frames.frame_category.group_frames)\r\n );\r\n group.frames.frame_category.group_objects = Array.from(\r\n new Set(group.frames.frame_category.group_objects)\r\n );\r\n group.frames.frame_category_detail.group_frames = Array.from(\r\n new Set(group.frames.frame_category_detail.group_frames)\r\n );\r\n group.frames.frame_category_detail.group_objects = Array.from(\r\n new Set(group.frames.frame_category_detail.group_objects)\r\n );\r\n group.frames.frame_news.group_frames = Array.from(\r\n new Set(group.frames.frame_news.group_frames)\r\n );\r\n group.frames.frame_news.group_objects = Array.from(\r\n new Set(group.frames.frame_news.group_objects)\r\n );\r\n group.frames.frame_news_favorited.group_frames = Array.from(\r\n new Set(group.frames.frame_news_favorited.group_frames)\r\n );\r\n group.frames.frame_news_favorited.group_objects = Array.from(\r\n new Set(group.frames.frame_news_favorited.group_objects)\r\n );\r\n group.frames.frame_news_detail.group_frames = Array.from(\r\n new Set(group.frames.frame_news_detail.group_frames)\r\n );\r\n group.frames.frame_news_detail.group_objects = Array.from(\r\n new Set(group.frames.frame_news_detail.group_objects)\r\n );\r\n group.frames.frame_news_group.group_frames = Array.from(\r\n new Set(group.frames.frame_news_group.group_frames)\r\n );\r\n group.frames.frame_news_group.group_objects = Array.from(\r\n new Set(group.frames.frame_news_group.group_objects)\r\n );\r\n group.frames.frame_news_category.group_frames = Array.from(\r\n new Set(group.frames.frame_news_category.group_frames)\r\n );\r\n group.frames.frame_news_category.group_objects = Array.from(\r\n new Set(group.frames.frame_news_category.group_objects)\r\n );\r\n group.frames.frame_news_relate.group_frames = Array.from(\r\n new Set(group.frames.frame_news_relate.group_frames)\r\n );\r\n group.frames.frame_news_relate.group_objects = Array.from(\r\n new Set(group.frames.frame_news_relate.group_objects)\r\n );\r\n group.frames.frame_product.group_frames = Array.from(\r\n new Set(group.frames.frame_product.group_frames)\r\n );\r\n group.frames.frame_product.group_objects = Array.from(\r\n new Set(group.frames.frame_product.group_objects)\r\n );\r\n group.frames.frame_repeat.group_frames = Array.from(\r\n new Set(group.frames.frame_repeat.group_frames)\r\n );\r\n group.frames.frame_repeat.group_objects = Array.from(\r\n new Set(group.frames.frame_repeat.group_objects)\r\n );\r\n\r\n group.frames.frame_product_viewed.group_frames = Array.from(\r\n new Set(group.frames.frame_product_viewed.group_frames)\r\n );\r\n group.frames.frame_product_viewed.group_objects = Array.from(\r\n new Set(group.frames.frame_product_viewed.group_objects)\r\n );\r\n\r\n group.frames.frame_products_favorited.group_frames = Array.from(\r\n new Set(group.frames.frame_products_favorited.group_frames)\r\n );\r\n group.frames.frame_products_favorited.group_objects = Array.from(\r\n new Set(group.frames.frame_products_favorited.group_objects)\r\n );\r\n\r\n group.frames.frame_product_detail.group_frames = Array.from(\r\n new Set(group.frames.frame_product_detail.group_frames)\r\n );\r\n group.frames.frame_product_detail.group_objects = Array.from(\r\n new Set(group.frames.frame_product_detail.group_objects)\r\n );\r\n group.frames.frame_product_by_category.group_frames = Array.from(\r\n new Set(group.frames.frame_product_by_category.group_frames)\r\n );\r\n group.frames.frame_product_by_category.group_objects = Array.from(\r\n new Set(group.frames.frame_product_by_category.group_objects)\r\n );\r\n group.frames.frame_product_relate.group_frames = Array.from(\r\n new Set(group.frames.frame_product_relate.group_frames)\r\n );\r\n group.frames.frame_product_relate.group_objects = Array.from(\r\n new Set(group.frames.frame_product_relate.group_objects)\r\n );\r\n group.frames.frame_search_by_keyword.group_frames = Array.from(\r\n new Set(group.frames.frame_search_by_keyword.group_frames)\r\n );\r\n group.frames.frame_search_by_keyword.group_objects = Array.from(\r\n new Set(group.frames.frame_search_by_keyword.group_objects)\r\n );\r\n group.frames.frame_search_by_keyword_app.group_frames = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_app.group_frames)\r\n );\r\n group.frames.frame_search_by_keyword_app.group_objects = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_app.group_objects)\r\n );\r\n group.frames.frame_search_by_keyword_foods.group_frames = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_foods.group_frames)\r\n );\r\n group.frames.frame_search_by_keyword_foods.group_objects = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_foods.group_objects)\r\n );\r\n group.frames.frame_search_by_keyword_news.group_frames = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_news.group_frames)\r\n );\r\n group.frames.frame_search_by_keyword_news.group_objects = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_news.group_objects)\r\n );\r\n group.frames.frame_search_by_keyword_services.group_frames = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_services.group_frames)\r\n );\r\n group.frames.frame_search_by_keyword_services.group_objects = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_services.group_objects)\r\n );\r\n group.frames.frame_result_ecommerce.group_frames = Array.from(\r\n new Set(group.frames.frame_result_ecommerce.group_frames)\r\n );\r\n group.frames.frame_result_ecommerce.group_objects = Array.from(\r\n new Set(group.frames.frame_result_ecommerce.group_objects)\r\n );\r\n\r\n group.frames.frame_result_food_drink.group_frames = Array.from(\r\n new Set(group.frames.frame_result_food_drink.group_frames)\r\n );\r\n group.frames.frame_result_food_drink.group_objects = Array.from(\r\n new Set(group.frames.frame_result_food_drink.group_objects)\r\n );\r\n\r\n group.frames.frame_result_news.group_frames = Array.from(\r\n new Set(group.frames.frame_result_news.group_frames)\r\n );\r\n group.frames.frame_result_news.group_objects = Array.from(\r\n new Set(group.frames.frame_result_news.group_objects)\r\n );\r\n\r\n group.frames.frame_result_webapp.group_frames = Array.from(\r\n new Set(group.frames.frame_result_webapp.group_frames)\r\n );\r\n group.frames.frame_result_webapp.group_objects = Array.from(\r\n new Set(group.frames.frame_result_webapp.group_objects)\r\n );\r\n\r\n group.frames.frame_result_service.group_frames = Array.from(\r\n new Set(group.frames.frame_result_service.group_frames)\r\n );\r\n group.frames.frame_result_service.group_objects = Array.from(\r\n new Set(group.frames.frame_result_service.group_objects)\r\n );\r\n\r\n group.frames.frame_result_recruitment.group_frames = Array.from(\r\n new Set(group.frames.frame_result_recruitment.group_frames)\r\n );\r\n group.frames.frame_result_recruitment.group_objects = Array.from(\r\n new Set(group.frames.frame_result_recruitment.group_objects)\r\n );\r\n\r\n group.frames.frame_result_snimei.group_frames = Array.from(\r\n new Set(group.frames.frame_result_snimei.group_frames)\r\n );\r\n group.frames.frame_result_snimei.group_objects = Array.from(\r\n new Set(group.frames.frame_result_snimei.group_objects)\r\n );\r\n\r\n group.frames.frame_services.group_frames = Array.from(\r\n new Set(group.frames.frame_services.group_frames)\r\n );\r\n group.frames.frame_services.group_objects = Array.from(\r\n new Set(group.frames.frame_services.group_objects)\r\n );\r\n group.frames.frame_service_detail.group_frames = Array.from(\r\n new Set(group.frames.frame_service_detail.group_frames)\r\n );\r\n group.frames.frame_service_detail.group_objects = Array.from(\r\n new Set(group.frames.frame_service_detail.group_objects)\r\n );\r\n group.frames.frame_service_relate.group_frames = Array.from(\r\n new Set(group.frames.frame_service_relate.group_frames)\r\n );\r\n group.frames.frame_service_relate.group_objects = Array.from(\r\n new Set(group.frames.frame_service_relate.group_objects)\r\n );\r\n group.frames.frame_services_category.group_frames = Array.from(\r\n new Set(group.frames.frame_services_category.group_frames)\r\n );\r\n group.frames.frame_services_category.group_objects = Array.from(\r\n new Set(group.frames.frame_services_category.group_objects)\r\n );\r\n\r\n group.frames.frame_hotel.group_frames = Array.from(\r\n new Set(group.frames.frame_hotel.group_frames)\r\n );\r\n group.frames.frame_hotel.group_objects = Array.from(\r\n new Set(group.frames.frame_hotel.group_objects)\r\n );\r\n group.frames.frame_banner.group_frames = Array.from(\r\n new Set(group.frames.frame_banner.group_frames)\r\n );\r\n group.frames.frame_banner.group_objects = Array.from(\r\n new Set(group.frames.frame_banner.group_objects)\r\n );\r\n group.frames.frame_website.group_frames = Array.from(\r\n new Set(group.frames.frame_website.group_frames)\r\n );\r\n group.frames.frame_website.group_objects = Array.from(\r\n new Set(group.frames.frame_website.group_objects)\r\n );\r\n group.frames.frame_search_by_keyword_website.group_frames = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_website.group_frames)\r\n );\r\n group.frames.frame_search_by_keyword_website.group_objects = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_website.group_objects)\r\n );\r\n\r\n group.frames.frame_website_by_category.group_frames = Array.from(\r\n new Set(group.frames.frame_website_by_category.group_frames)\r\n );\r\n group.frames.frame_website_by_category.group_objects = Array.from(\r\n new Set(group.frames.frame_website_by_category.group_objects)\r\n );\r\n group.frames.frame_website_detail.group_frames = Array.from(\r\n new Set(group.frames.frame_website_detail.group_frames)\r\n );\r\n group.frames.frame_website_detail.group_objects = Array.from(\r\n new Set(group.frames.frame_website_detail.group_objects)\r\n );\r\n group.frames.frame_website_relate.group_frames = Array.from(\r\n new Set(group.frames.frame_website_relate.group_frames)\r\n );\r\n group.frames.frame_website_relate.group_objects = Array.from(\r\n new Set(group.frames.frame_website_relate.group_objects)\r\n );\r\n\r\n\r\n group.frames.frame_app.group_frames = Array.from(\r\n new Set(group.frames.frame_app.group_frames)\r\n );\r\n group.frames.frame_app.group_objects = Array.from(\r\n new Set(group.frames.frame_app.group_objects)\r\n );\r\n group.frames.frame_app_by_category.group_frames = Array.from(\r\n new Set(group.frames.frame_app_by_category.group_frames)\r\n );\r\n group.frames.frame_app_by_category.group_objects = Array.from(\r\n new Set(group.frames.frame_app_by_category.group_objects)\r\n );\r\n\r\n group.frames.frame_food_drink.group_frames = Array.from(\r\n new Set(group.frames.frame_food_drink.group_frames)\r\n );\r\n group.frames.frame_food_drink.group_objects = Array.from(\r\n new Set(group.frames.frame_food_drink.group_objects)\r\n );\r\n group.frames.frame_food_drink_by_category.group_frames = Array.from(\r\n new Set(group.frames.frame_food_drink_by_category.group_frames)\r\n );\r\n group.frames.frame_food_drink_by_category.group_objects = Array.from(\r\n new Set(group.frames.frame_food_drink_by_category.group_objects)\r\n );\r\n group.frames.frame_food_drink_detail.group_frames = Array.from(\r\n new Set(group.frames.frame_food_drink_detail.group_frames)\r\n );\r\n group.frames.frame_food_drink_detail.group_objects = Array.from(\r\n new Set(group.frames.frame_food_drink_detail.group_objects)\r\n );\r\n group.frames.frame_food_drink_relate.group_frames = Array.from(\r\n new Set(group.frames.frame_food_drink_relate.group_frames)\r\n );\r\n group.frames.frame_food_drink_relate.group_objects = Array.from(\r\n new Set(group.frames.frame_food_drink_relate.group_objects)\r\n );\r\n\r\n // tiến hành get dữ liệu group_objects, group_frames json từ group đã lọc\r\n Promise.all([\r\n this.handleGetDataBLock(group.blocks),\r\n this.handleGetDataFrames(group.frames),\r\n ]).then(() => {\r\n resolve(group);\r\n });\r\n });\r\n });\r\n }\r\n\r\n handleGetDataBLock(data_block) {\r\n return new Promise((resolve) => {\r\n // dữ liệu group_objects của grid\r\n let promise_group_objects_grid = [];\r\n data_block.grid.group_objects.forEach((e, index) => {\r\n promise_group_objects_grid[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_grid).then((group_frames) => {\r\n data_block.grid.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của grid\r\n let promise_group_frames_grid = [];\r\n data_block.grid.group_frames.forEach((e, index) => {\r\n promise_group_frames_grid[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_grid).then((group_frames) => {\r\n data_block.grid.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của blank\r\n let promise_group_objects_blank = [];\r\n data_block.blank.group_objects.forEach((e, index) => {\r\n promise_group_objects_blank[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_blank).then((group_frames) => {\r\n data_block.blank.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của blank\r\n let promise_group_frames_blank = [];\r\n data_block.blank.group_frames.forEach((e, index) => {\r\n promise_group_frames_blank[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_blank).then((group_frames) => {\r\n data_block.blank.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của header\r\n let promise_group_objects_header = [];\r\n data_block.header.group_objects.forEach((e, index) => {\r\n promise_group_objects_header[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_header).then((group_frames) => {\r\n data_block.header.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của header\r\n let promise_group_frames_header = [];\r\n data_block.header.group_frames.forEach((e, index) => {\r\n promise_group_frames_header[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_header).then((group_frames) => {\r\n data_block.header.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của footer\r\n let promise_group_objects_footer = [];\r\n data_block.footer.group_objects.forEach((e, index) => {\r\n promise_group_objects_footer[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_footer).then((group_frames) => {\r\n data_block.footer.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của footer\r\n let promise_group_frames_footer = [];\r\n data_block.footer.group_frames.forEach((e, index) => {\r\n promise_group_frames_footer[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_footer).then((group_frames) => {\r\n data_block.footer.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của mobile_tabs\r\n let promise_group_objects_mobile_tabs = [];\r\n data_block.mobile_tabs.group_objects.forEach((e, index) => {\r\n promise_group_objects_mobile_tabs[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_mobile_tabs).then((group_frames) => {\r\n data_block.mobile_tabs.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của mobile_tabs\r\n let promise_group_frames_mobile_tabs = [];\r\n data_block.mobile_tabs.group_frames.forEach((e, index) => {\r\n promise_group_frames_mobile_tabs[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_mobile_tabs).then((group_frames) => {\r\n data_block.mobile_tabs.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của popup_hover\r\n let promise_group_objects_popup_hover = [];\r\n data_block.popup_hover.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_hover[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_hover).then((group_frames) => {\r\n data_block.popup_hover.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của popup_hover\r\n let promise_group_frames_popup_hover = [];\r\n data_block.popup_hover.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_hover[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_hover).then((group_frames) => {\r\n data_block.popup_hover.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của popup_tabs\r\n let promise_group_objects_popup_tabs = [];\r\n data_block.popup_tabs.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_tabs[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_tabs).then((group_frames) => {\r\n data_block.popup_tabs.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của popup_tabs\r\n let promise_group_frames_popup_tabs = [];\r\n data_block.popup_tabs.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_tabs[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_tabs).then((group_frames) => {\r\n data_block.popup_tabs.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của popup_welcome\r\n let promise_group_objects_popup_welcome = [];\r\n data_block.popup_welcome.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_welcome[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_welcome).then((group_frames) => {\r\n data_block.popup_welcome.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của popup_welcome\r\n let promise_group_frames_popup_welcome = [];\r\n data_block.popup_welcome.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_welcome[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_welcome).then((group_frames) => {\r\n data_block.popup_welcome.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của block_responsive\r\n let promise_group_objects_block_responsive = [];\r\n data_block.block_responsive.group_objects.forEach((e, index) => {\r\n promise_group_objects_block_responsive[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_block_responsive).then(\r\n (group_frames) => {\r\n data_block.block_responsive.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của block_responsive\r\n let promise_group_frames_block_responsive = [];\r\n data_block.block_responsive.group_frames.forEach((e, index) => {\r\n promise_group_frames_block_responsive[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_block_responsive).then(\r\n (group_frames) => {\r\n data_block.block_responsive.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của hover_blank\r\n let promise_group_objects_hover_blank = [];\r\n data_block.hover_blank.group_objects.forEach((e, index) => {\r\n promise_group_objects_hover_blank[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_hover_blank).then((group_frames) => {\r\n data_block.hover_blank.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của hover_blank\r\n let promise_group_frames_hover_blank = [];\r\n data_block.hover_blank.group_frames.forEach((e, index) => {\r\n promise_group_frames_hover_blank[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_hover_blank).then((group_frames) => {\r\n data_block.hover_blank.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của menu_hover\r\n let promise_group_objects_menu_hover = [];\r\n data_block.menu_hover.group_objects.forEach((e, index) => {\r\n promise_group_objects_menu_hover[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_menu_hover).then((group_frames) => {\r\n data_block.menu_hover.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của menu_hover\r\n let promise_group_frames_menu_hover = [];\r\n data_block.menu_hover.group_frames.forEach((e, index) => {\r\n promise_group_frames_menu_hover[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_menu_hover).then((group_frames) => {\r\n data_block.menu_hover.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của popup_detail_product\r\n let promise_group_objects_popup_detail_product = [];\r\n data_block.popup_detail_product.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_detail_product[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_detail_product).then(\r\n (group_frames) => {\r\n data_block.popup_detail_product.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của popup_detail_product\r\n let promise_group_frames_popup_detail_product = [];\r\n data_block.popup_detail_product.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_detail_product[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_detail_product).then(\r\n (group_frames) => {\r\n data_block.popup_detail_product.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của popup_detail_snimei\r\n let promise_group_objects_popup_detail_snimei = [];\r\n data_block.popup_detail_snimei.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_detail_snimei[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_detail_snimei).then(\r\n (group_frames) => {\r\n data_block.popup_detail_snimei.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của popup_detail_snimei\r\n let promise_group_frames_popup_detail_snimei = [];\r\n data_block.popup_detail_snimei.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_detail_snimei[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_detail_snimei).then(\r\n (group_frames) => {\r\n data_block.popup_detail_snimei.group_frames = group_frames;\r\n }\r\n );\r\n \r\n\r\n // dữ liệu group_objects của popup_detail_food_drink\r\n let promise_group_objects_popup_detail_food_drink = [];\r\n data_block.popup_detail_food_drink.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_detail_food_drink[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_detail_food_drink).then(\r\n (group_frames) => {\r\n data_block.popup_detail_food_drink.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của popup_detail_food_drink\r\n let promise_group_frames_popup_detail_food_drink = [];\r\n data_block.popup_detail_food_drink.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_detail_food_drink[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_detail_food_drink).then(\r\n (group_frames) => {\r\n data_block.popup_detail_food_drink.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của popup_detail_recruitment\r\n let promise_group_objects_popup_detail_recruitment = [];\r\n data_block.popup_detail_recruitment.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_detail_recruitment[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_detail_recruitment).then(\r\n (group_frames) => {\r\n data_block.popup_detail_recruitment.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của popup_detail_recruitment\r\n let promise_group_frames_popup_detail_recruitment = [];\r\n data_block.popup_detail_recruitment.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_detail_recruitment[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_detail_recruitment).then(\r\n (group_frames) => {\r\n data_block.popup_detail_recruitment.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của popup_detail_news\r\n let promise_group_objects_popup_detail_news = [];\r\n data_block.popup_detail_news.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_detail_news[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_detail_news).then(\r\n (group_frames) => {\r\n data_block.popup_detail_news.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của popup_detail_news\r\n let promise_group_frames_popup_detail_news = [];\r\n data_block.popup_detail_news.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_detail_news[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_detail_news).then(\r\n (group_frames) => {\r\n data_block.popup_detail_news.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của popup_detail_service\r\n let promise_group_objects_popup_detail_service = [];\r\n data_block.popup_detail_service.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_detail_service[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_detail_service).then(\r\n (group_frames) => {\r\n data_block.popup_detail_service.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của popup_detail_service\r\n let promise_group_frames_popup_detail_service = [];\r\n data_block.popup_detail_service.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_detail_service[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_detail_service).then(\r\n (group_frames) => {\r\n data_block.popup_detail_service.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của popup_detail_website\r\n let promise_group_objects_popup_detail_website = [];\r\n data_block.popup_detail_website.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_detail_website[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_detail_website).then(\r\n (group_frames) => {\r\n data_block.popup_detail_website.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của popup_detail_website\r\n let promise_group_frames_popup_detail_website = [];\r\n data_block.popup_detail_website.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_detail_website[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_detail_website).then(\r\n (group_frames) => {\r\n data_block.popup_detail_website.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của chatbox\r\n let promise_group_objects_chatbox = [];\r\n data_block.chatbox.group_objects.forEach((e, index) => {\r\n promise_group_objects_chatbox[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_chatbox).then((group_frames) => {\r\n data_block.chatbox.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của chatbox\r\n let promise_group_frames_chatbox = [];\r\n data_block.chatbox.group_frames.forEach((e, index) => {\r\n promise_group_frames_chatbox[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_chatbox).then((group_frames) => {\r\n data_block.chatbox.group_frames = group_frames;\r\n });\r\n resolve(true);\r\n });\r\n }\r\n\r\n handleGetDataFrames(data_frame) {\r\n return new Promise((resolve) => {\r\n // dữ liệu group_objects của frame_dev\r\n let promise_group_objects_frame_dev = [];\r\n data_frame.frame_dev.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_dev[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_dev).then((group_frames) => {\r\n data_frame.frame_dev.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_dev\r\n let promise_group_frames_frame_dev = [];\r\n data_frame.frame_dev.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_dev[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_dev).then((group_frames) => {\r\n data_frame.frame_dev.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_recruitment\r\n let promise_group_objects_frame_recruitment = [];\r\n data_frame.frame_recruitment.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_recruitment[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_recruitment).then(\r\n (group_frames) => {\r\n data_frame.frame_recruitment.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_recruitment\r\n let promise_group_frames_frame_recruitment = [];\r\n data_frame.frame_recruitment.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_recruitment[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_recruitment).then(\r\n (group_frames) => {\r\n data_frame.frame_recruitment.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_recruitment_detail\r\n let promise_group_objects_frame_recruitment_detail = [];\r\n data_frame.frame_recruitment_detail.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_recruitment_detail[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_recruitment_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_recruitment_detail.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_recruitment_detail\r\n let promise_group_frames_frame_recruitment_detail = [];\r\n data_frame.frame_recruitment_detail.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_recruitment_detail[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_recruitment_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_recruitment_detail.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_blank\r\n let promise_group_objects_frame_blank = [];\r\n data_frame.frame_blank.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_blank[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_blank).then((group_frames) => {\r\n data_frame.frame_blank.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_blank\r\n let promise_group_frames_frame_blank = [];\r\n data_frame.frame_blank.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_blank[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_blank).then((group_frames) => {\r\n data_frame.frame_blank.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_tab_2states\r\n let promise_group_objects_frame_tab_2states = [];\r\n data_frame.frame_tab_2states.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_tab_2states[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_tab_2states).then(\r\n (group_frames) => {\r\n data_frame.frame_tab_2states.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_tab_2states\r\n let promise_group_frames_frame_tab_2states = [];\r\n data_frame.frame_tab_2states.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_tab_2states[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_tab_2states).then(\r\n (group_frames) => {\r\n data_frame.frame_tab_2states.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_collapse\r\n let promise_group_objects_frame_collapse = [];\r\n data_frame.frame_collapse.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_collapse[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_collapse).then((group_frames) => {\r\n data_frame.frame_collapse.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_collapse\r\n let promise_group_frames_frame_collapse = [];\r\n data_frame.frame_collapse.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_collapse[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_collapse).then((group_frames) => {\r\n data_frame.frame_collapse.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_mutil_blank\r\n let promise_group_objects_frame_mutil_blank = [];\r\n data_frame.frame_mutil_blank.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_mutil_blank[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_mutil_blank).then(\r\n (group_frames) => {\r\n data_frame.frame_mutil_blank.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_mutil_blank\r\n let promise_group_frames_frame_mutil_blank = [];\r\n data_frame.frame_mutil_blank.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_mutil_blank[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_mutil_blank).then(\r\n (group_frames) => {\r\n data_frame.frame_mutil_blank.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_blogs\r\n let promise_group_objects_frame_blogs = [];\r\n data_frame.frame_blogs.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_blogs[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_blogs).then((group_frames) => {\r\n data_frame.frame_blogs.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_blogs\r\n let promise_group_frames_frame_blogs = [];\r\n data_frame.frame_blogs.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_blogs[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_blogs).then((group_frames) => {\r\n data_frame.frame_blogs.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_snimei_detail\r\n let promise_group_objects_frame_snimei_detail = [];\r\n data_frame.frame_snimei_detail.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_snimei_detail[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_snimei_detail).then((group_frames) => {\r\n data_frame.frame_snimei_detail.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_snimei_detail\r\n let promise_group_frames_frame_snimei_detail = [];\r\n data_frame.frame_snimei_detail.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_snimei_detail[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_snimei_detail).then((group_frames) => {\r\n data_frame.frame_snimei_detail.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_news\r\n let promise_group_objects_frame_news = [];\r\n data_frame.frame_news.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_news[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_news).then((group_frames) => {\r\n data_frame.frame_news.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_news\r\n let promise_group_frames_frame_news = [];\r\n data_frame.frame_news.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_news[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_news).then((group_frames) => {\r\n data_frame.frame_news.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_news_favorited\r\n let promise_group_objects_frame_news_favorited = [];\r\n data_frame.frame_news_favorited.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_news_favorited[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_news_favorited).then((group_frames) => {\r\n data_frame.frame_news_favorited.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_news_favorited\r\n let promise_group_frames_frame_news_favorited = [];\r\n data_frame.frame_news_favorited.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_news_favorited[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_news_favorited).then((group_frames) => {\r\n data_frame.frame_news_favorited.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_services\r\n let promise_group_objects_frame_services = [];\r\n data_frame.frame_services.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_services[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_services).then((group_frames) => {\r\n data_frame.frame_services.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_services\r\n let promise_group_frames_frame_services = [];\r\n data_frame.frame_services.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_services[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_services).then((group_frames) => {\r\n data_frame.frame_services.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_services\r\n let promise_group_objects_frame_service_detail = [];\r\n data_frame.frame_service_detail.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_service_detail[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_service_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_service_detail.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_service_detail\r\n let promise_group_frames_frame_service_detail = [];\r\n data_frame.frame_service_detail.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_service_detail[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_service_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_service_detail.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_services\r\n let promise_group_objects_frame_service_relate = [];\r\n data_frame.frame_service_relate.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_service_relate[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_service_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_service_relate.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_service_relate\r\n let promise_group_frames_frame_service_relate = [];\r\n data_frame.frame_service_relate.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_service_relate[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_service_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_service_relate.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_services\r\n let promise_group_objects_frame_services_category = [];\r\n data_frame.frame_services_category.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_services_category[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_services_category).then(\r\n (group_frames) => {\r\n data_frame.frame_services_category.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_services_category\r\n let promise_group_frames_frame_services_category = [];\r\n data_frame.frame_services_category.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_services_category[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_services_category).then(\r\n (group_frames) => {\r\n data_frame.frame_services_category.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_category_detail\r\n let promise_group_objects_frame_category_detail = [];\r\n data_frame.frame_category_detail.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_category_detail[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_category_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_category_detail.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_category_detail\r\n let promise_group_frames_frame_category_detail = [];\r\n data_frame.frame_category_detail.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_category_detail[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_category_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_category_detail.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_category\r\n let promise_group_objects_frame_category = [];\r\n data_frame.frame_category.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_category[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_category).then((group_frames) => {\r\n data_frame.frame_category.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_category\r\n let promise_group_frames_frame_category = [];\r\n data_frame.frame_category.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_category[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_category).then((group_frames) => {\r\n data_frame.frame_category.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_news_detail\r\n let promise_group_objects_frame_news_detail = [];\r\n data_frame.frame_news_detail.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_news_detail[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_news_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_news_detail.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_news_detail\r\n let promise_group_frames_frame_news_detail = [];\r\n data_frame.frame_news_detail.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_news_detail[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_news_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_news_detail.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_news_group\r\n let promise_group_objects_frame_news_group = [];\r\n data_frame.frame_news_group.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_news_group[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_news_group).then(\r\n (group_frames) => {\r\n data_frame.frame_news_group.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_news_group\r\n let promise_group_frames_frame_news_group = [];\r\n data_frame.frame_news_group.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_news_group[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_news_group).then(\r\n (group_frames) => {\r\n data_frame.frame_news_group.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_news_category\r\n let promise_group_objects_frame_news_category = [];\r\n data_frame.frame_news_category.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_news_category[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_news_category).then(\r\n (group_frames) => {\r\n data_frame.frame_news_category.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_news_category\r\n let promise_group_frames_frame_news_category = [];\r\n data_frame.frame_news_category.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_news_category[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_news_category).then(\r\n (group_frames) => {\r\n data_frame.frame_news_category.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_news_relate\r\n let promise_group_objects_frame_news_relate = [];\r\n data_frame.frame_news_relate.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_news_relate[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_news_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_news_relate.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_news_relate\r\n let promise_group_frames_frame_news_relate = [];\r\n data_frame.frame_news_relate.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_news_relate[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_news_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_news_relate.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_product\r\n let promise_group_objects_frame_product = [];\r\n data_frame.frame_product.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_product[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_product).then((group_frames) => {\r\n data_frame.frame_product.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_product\r\n let promise_group_frames_frame_product = [];\r\n data_frame.frame_product.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_product[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_product).then((group_frames) => {\r\n data_frame.frame_product.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_product\r\n let promise_group_objects_frame_repeat = [];\r\n data_frame.frame_repeat.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_repeat[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_repeat).then((group_frames) => {\r\n data_frame.frame_repeat.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_repeat\r\n let promise_group_frames_frame_repeat = [];\r\n data_frame.frame_repeat.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_repeat[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_repeat).then((group_frames) => {\r\n data_frame.frame_repeat.group_frames = group_frames;\r\n });\r\n\r\n\r\n // dữ liệu group_objects của frame_product_viewed\r\n let promise_group_objects_frame_product_viewed = [];\r\n data_frame.frame_product_viewed.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_product_viewed[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_product_viewed).then(\r\n (group_frames) => {\r\n data_frame.frame_product_viewed.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_product_viewed\r\n let promise_group_frames_frame_product_viewed = [];\r\n data_frame.frame_product_viewed.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_product_viewed[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_product_viewed).then(\r\n (group_frames) => {\r\n data_frame.frame_product_viewed.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_products_favorited\r\n let promise_group_objects_frame_products_favorited = [];\r\n data_frame.frame_products_favorited.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_products_favorited[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_products_favorited).then(\r\n (group_frames) => {\r\n data_frame.frame_products_favorited.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_products_favorited\r\n let promise_group_frames_frame_products_favorited = [];\r\n data_frame.frame_products_favorited.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_products_favorited[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_products_favorited).then(\r\n (group_frames) => {\r\n data_frame.frame_products_favorited.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_product_by_category\r\n let promise_group_objects_frame_product_by_category = [];\r\n data_frame.frame_product_by_category.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_product_by_category[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_product_by_category).then(\r\n (group_frames) => {\r\n data_frame.frame_product_by_category.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_product_by_category\r\n let promise_group_frames_frame_product_by_category = [];\r\n data_frame.frame_product_by_category.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_product_by_category[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_product_by_category).then(\r\n (group_frames) => {\r\n data_frame.frame_product_by_category.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_product_detail\r\n let promise_group_objects_frame_product_detail = [];\r\n data_frame.frame_product_detail.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_product_detail[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_product_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_product_detail.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_product_detail\r\n let promise_group_frames_frame_product_detail = [];\r\n data_frame.frame_product_detail.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_product_detail[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_product_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_product_detail.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_product_relate\r\n let promise_group_objects_frame_product_relate = [];\r\n data_frame.frame_product_relate.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_product_relate[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_product_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_product_relate.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_product_relate\r\n let promise_group_frames_frame_product_relate = [];\r\n data_frame.frame_product_relate.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_product_relate[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_product_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_product_relate.group_frames = group_frames;\r\n }\r\n );\r\n\r\n //------\r\n // dữ liệu group_objects của frame_search_by_keyword_website\r\n let promise_group_objects_frame_search_by_keyword_website = [];\r\n data_frame.frame_search_by_keyword_website.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_search_by_keyword_website[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_search_by_keyword_website).then((group_frames) => {\r\n data_frame.frame_search_by_keyword_website.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_search_by_keyword_website\r\n let promise_group_frames_frame_search_by_keyword_website = [];\r\n data_frame.frame_search_by_keyword_website.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_search_by_keyword_website[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_search_by_keyword_website).then((group_frames) => {\r\n data_frame.frame_search_by_keyword_website.group_frames = group_frames;\r\n });\r\n //------\r\n // dữ liệu group_objects của frame_product\r\n let promise_group_objects_frame_website = [];\r\n data_frame.frame_website.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_website[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_website).then((group_frames) => {\r\n data_frame.frame_website.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_website\r\n let promise_group_frames_frame_website = [];\r\n data_frame.frame_website.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_website[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_website).then((group_frames) => {\r\n data_frame.frame_website.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_website_by_category\r\n let promise_group_objects_frame_website_by_category = [];\r\n data_frame.frame_website_by_category.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_website_by_category[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_website_by_category).then(\r\n (group_frames) => {\r\n data_frame.frame_website_by_category.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_website_by_category\r\n let promise_group_frames_frame_website_by_category = [];\r\n data_frame.frame_website_by_category.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_website_by_category[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_website_by_category).then(\r\n (group_frames) => {\r\n data_frame.frame_website_by_category.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_website_detail\r\n let promise_group_objects_frame_website_detail = [];\r\n data_frame.frame_website_detail.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_website_detail[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_website_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_website_detail.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_website_detail\r\n let promise_group_frames_frame_website_detail = [];\r\n data_frame.frame_website_detail.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_website_detail[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_website_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_website_detail.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_website_relate\r\n let promise_group_objects_frame_website_relate = [];\r\n data_frame.frame_website_relate.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_website_relate[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_website_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_website_relate.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_website_relate\r\n let promise_group_frames_frame_website_relate = [];\r\n data_frame.frame_website_relate.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_website_relate[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_website_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_website_relate.group_frames = group_frames;\r\n }\r\n );\r\n // ------\r\n\r\n //------\r\n // dữ liệu group_objects của frame_product\r\n let promise_group_objects_frame_app = [];\r\n data_frame.frame_app.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_app[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_app).then((group_frames) => {\r\n data_frame.frame_app.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_app\r\n let promise_group_frames_frame_app = [];\r\n data_frame.frame_app.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_app[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_app).then((group_frames) => {\r\n data_frame.frame_app.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_app_by_category\r\n let promise_group_objects_frame_app_by_category = [];\r\n data_frame.frame_app_by_category.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_app_by_category[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_app_by_category).then(\r\n (group_frames) => {\r\n data_frame.frame_app_by_category.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_app_by_category\r\n let promise_group_frames_frame_app_by_category = [];\r\n data_frame.frame_app_by_category.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_app_by_category[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_app_by_category).then(\r\n (group_frames) => {\r\n data_frame.frame_app_by_category.group_frames = group_frames;\r\n }\r\n );\r\n\r\n //------\r\n // dữ liệu group_objects của frame_product\r\n let promise_group_objects_frame_food_drink = [];\r\n data_frame.frame_food_drink.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_food_drink[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_food_drink).then(\r\n (group_frames) => {\r\n data_frame.frame_food_drink.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_food_drink\r\n let promise_group_frames_frame_food_drink = [];\r\n data_frame.frame_food_drink.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_food_drink[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_food_drink).then(\r\n (group_frames) => {\r\n data_frame.frame_food_drink.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_food_drink_by_category\r\n let promise_group_objects_frame_food_drink_by_category = [];\r\n data_frame.frame_food_drink_by_category.group_objects.forEach(\r\n (e, index) => {\r\n promise_group_objects_frame_food_drink_by_category[index] =\r\n this.getDataObjectGroup(e);\r\n }\r\n );\r\n Promise.all(promise_group_objects_frame_food_drink_by_category).then(\r\n (group_frames) => {\r\n data_frame.frame_food_drink_by_category.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_food_drink_by_category\r\n let promise_group_frames_frame_food_drink_by_category = [];\r\n data_frame.frame_food_drink_by_category.group_frames.forEach(\r\n (e, index) => {\r\n promise_group_frames_frame_food_drink_by_category[index] =\r\n this.getDataFrameGroup(e);\r\n }\r\n );\r\n Promise.all(promise_group_frames_frame_food_drink_by_category).then(\r\n (group_frames) => {\r\n data_frame.frame_food_drink_by_category.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_food_drink_detail\r\n let promise_group_objects_frame_food_drink_detail = [];\r\n data_frame.frame_food_drink_detail.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_food_drink_detail[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_food_drink_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_food_drink_detail.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_food_drink_detail\r\n let promise_group_frames_frame_food_drink_detail = [];\r\n data_frame.frame_food_drink_detail.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_food_drink_detail[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_food_drink_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_food_drink_detail.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_food_drink_relate\r\n let promise_group_objects_frame_food_drink_relate = [];\r\n data_frame.frame_food_drink_relate.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_food_drink_relate[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_food_drink_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_food_drink_relate.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_food_drink_relate\r\n let promise_group_frames_frame_food_drink_relate = [];\r\n data_frame.frame_food_drink_relate.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_food_drink_relate[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_food_drink_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_food_drink_relate.group_frames = group_frames;\r\n }\r\n );\r\n // ------\r\n // dữ liệu group_objects của frame_search_by_keyword\r\n let promise_group_objects_frame_search_by_keyword = [];\r\n data_frame.frame_search_by_keyword.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_search_by_keyword[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_search_by_keyword).then(\r\n (group_frames) => {\r\n data_frame.frame_search_by_keyword.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_search_by_keyword\r\n let promise_group_frames_frame_search_by_keyword = [];\r\n data_frame.frame_search_by_keyword.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_search_by_keyword[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_search_by_keyword).then(\r\n (group_frames) => {\r\n data_frame.frame_search_by_keyword.group_frames = group_frames;\r\n }\r\n );\r\n //------\r\n // dữ liệu group_objects của frame_search_by_keyword_app\r\n let promise_group_objects_frame_search_by_keyword_app = [];\r\n data_frame.frame_search_by_keyword_app.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_search_by_keyword_app[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_search_by_keyword_app).then((group_frames) => {\r\n data_frame.frame_search_by_keyword_app.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_search_by_keyword_app\r\n let promise_group_frames_frame_search_by_keyword_app = [];\r\n data_frame.frame_search_by_keyword_app.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_search_by_keyword_app[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_search_by_keyword_app).then((group_frames) => {\r\n data_frame.frame_search_by_keyword_app.group_frames = group_frames;\r\n });\r\n // dữ liệu group_objects của frame_search_by_keyword_foods\r\n let promise_group_objects_frame_search_by_keyword_foods = [];\r\n data_frame.frame_search_by_keyword_foods.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_search_by_keyword_foods[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_search_by_keyword_foods).then(\r\n (group_frames) => {\r\n data_frame.frame_search_by_keyword_foods.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_search_by_keyword_foods\r\n let promise_group_frames_frame_search_by_keyword_foods = [];\r\n data_frame.frame_search_by_keyword_foods.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_search_by_keyword_foods[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_search_by_keyword_foods).then(\r\n (group_frames) => {\r\n data_frame.frame_search_by_keyword_foods.group_frames = group_frames;\r\n }\r\n );\r\n // dữ liệu group_objects của frame_search_by_keyword_news\r\n let promise_group_objects_frame_search_by_keyword_news = [];\r\n data_frame.frame_search_by_keyword_news.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_search_by_keyword_news[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_search_by_keyword_news).then(\r\n (group_frames) => {\r\n data_frame.frame_search_by_keyword_news.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_search_by_keyword_news\r\n let promise_group_frames_frame_search_by_keyword_news = [];\r\n data_frame.frame_search_by_keyword_news.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_search_by_keyword_news[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_search_by_keyword_news).then(\r\n (group_frames) => {\r\n data_frame.frame_search_by_keyword_news.group_frames = group_frames;\r\n }\r\n );\r\n // dữ liệu group_objects của frame_search_by_keyword_services\r\n let promise_group_objects_frame_search_by_keyword_services = [];\r\n data_frame.frame_search_by_keyword_services.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_search_by_keyword_services[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_search_by_keyword_services).then(\r\n (group_frames) => {\r\n data_frame.frame_search_by_keyword_services.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_search_by_keyword_services\r\n let promise_group_frames_frame_search_by_keyword_services = [];\r\n data_frame.frame_search_by_keyword_services.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_search_by_keyword_services[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_search_by_keyword_services).then(\r\n (group_frames) => {\r\n data_frame.frame_search_by_keyword_services.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_result_ecommerce\r\n let promise_group_objects_frame_result_ecommerce = [];\r\n data_frame.frame_result_ecommerce.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_result_ecommerce[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_result_ecommerce).then((group_frames) => {\r\n data_frame.frame_result_ecommerce.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_result_ecommerce\r\n let promise_group_frames_frame_result_ecommerce = [];\r\n data_frame.frame_result_ecommerce.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_result_ecommerce[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_result_ecommerce).then((group_frames) => {\r\n data_frame.frame_result_ecommerce.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_result_food_drink\r\n let promise_group_objects_frame_result_food_drink = [];\r\n data_frame.frame_result_food_drink.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_result_food_drink[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_result_food_drink).then((group_frames) => {\r\n data_frame.frame_result_food_drink.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_result_food_drink\r\n let promise_group_frames_frame_result_food_drink = [];\r\n data_frame.frame_result_food_drink.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_result_food_drink[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_result_food_drink).then((group_frames) => {\r\n data_frame.frame_result_food_drink.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_result_news\r\n let promise_group_objects_frame_result_news = [];\r\n data_frame.frame_result_news.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_result_news[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_result_news).then((group_frames) => {\r\n data_frame.frame_result_news.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_result_news\r\n let promise_group_frames_frame_result_news = [];\r\n data_frame.frame_result_news.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_result_news[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_result_news).then((group_frames) => {\r\n data_frame.frame_result_news.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_result_webapp\r\n let promise_group_objects_frame_result_webapp = [];\r\n data_frame.frame_result_webapp.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_result_webapp[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_result_webapp).then((group_frames) => {\r\n data_frame.frame_result_webapp.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_result_webapp\r\n let promise_group_frames_frame_result_webapp = [];\r\n data_frame.frame_result_webapp.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_result_webapp[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_result_webapp).then((group_frames) => {\r\n data_frame.frame_result_webapp.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_result_service\r\n let promise_group_objects_frame_result_service = [];\r\n data_frame.frame_result_service.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_result_service[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_result_service).then((group_frames) => {\r\n data_frame.frame_result_service.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_result_service\r\n let promise_group_frames_frame_result_service = [];\r\n data_frame.frame_result_service.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_result_service[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_result_service).then((group_frames) => {\r\n data_frame.frame_result_service.group_frames = group_frames;\r\n });\r\n\r\n\r\n // dữ liệu group_objects của frame_result_recruitment\r\n let promise_group_objects_frame_result_recruitment = [];\r\n data_frame.frame_result_recruitment.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_result_recruitment[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_result_recruitment).then((group_frames) => {\r\n data_frame.frame_result_recruitment.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_result_recruitment\r\n let promise_group_frames_frame_result_recruitment = [];\r\n data_frame.frame_result_recruitment.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_result_recruitment[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_result_recruitment).then((group_frames) => {\r\n data_frame.frame_result_recruitment.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_result_snimei\r\n let promise_group_objects_frame_result_snimei = [];\r\n data_frame.frame_result_snimei.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_result_snimei[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_result_snimei).then((group_frames) => {\r\n data_frame.frame_result_snimei.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_result_snimei\r\n let promise_group_frames_frame_result_snimei = [];\r\n data_frame.frame_result_snimei.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_result_snimei[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_result_snimei).then((group_frames) => {\r\n data_frame.frame_result_snimei.group_frames = group_frames;\r\n });\r\n\r\n \r\n // dữ liệu group_objects của frame_brand\r\n let promise_group_objects_frame_brand = [];\r\n data_frame.frame_brand.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_brand[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_brand).then((group_frames) => {\r\n data_frame.frame_brand.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_brand\r\n let promise_group_frames_frame_brand = [];\r\n data_frame.frame_brand.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_brand[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_brand).then((group_frames) => {\r\n data_frame.frame_brand.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_hotel\r\n let promise_group_objects_frame_hotel = [];\r\n data_frame.frame_hotel.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_hotel[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_hotel).then((group_frames) => {\r\n data_frame.frame_hotel.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_hotel\r\n let promise_group_frames_frame_hotel = [];\r\n data_frame.frame_hotel.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_hotel[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_hotel).then((group_frames) => {\r\n data_frame.frame_hotel.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_banner\r\n let promise_group_objects_frame_banner = [];\r\n data_frame.frame_banner.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_banner[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_banner).then((group_frames) => {\r\n data_frame.frame_banner.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_banner\r\n let promise_group_frames_frame_banner = [];\r\n data_frame.frame_banner.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_banner[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_banner).then((group_frames) => {\r\n data_frame.frame_banner.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_cart_products\r\n let promise_group_objects_frame_cart_products = [];\r\n data_frame.frame_cart_products.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_cart_products[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_cart_products).then(\r\n (group_frames) => {\r\n data_frame.frame_cart_products.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_cart_products\r\n let promise_group_frames_frame_cart_products = [];\r\n data_frame.frame_cart_products.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_cart_products[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_cart_products).then(\r\n (group_frames) => {\r\n data_frame.frame_cart_products.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_cart_products_choosed\r\n let promise_group_objects_frame_cart_products_choosed = [];\r\n data_frame.frame_cart_products_choosed.group_objects.forEach(\r\n (e, index) => {\r\n promise_group_objects_frame_cart_products_choosed[index] =\r\n this.getDataObjectGroup(e);\r\n }\r\n );\r\n Promise.all(promise_group_objects_frame_cart_products_choosed).then(\r\n (group_frames) => {\r\n data_frame.frame_cart_products_choosed.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_cart_products_choosed\r\n let promise_group_frames_frame_cart_products_choosed = [];\r\n data_frame.frame_cart_products_choosed.group_frames.forEach(\r\n (e, index) => {\r\n promise_group_frames_frame_cart_products_choosed[index] =\r\n this.getDataFrameGroup(e);\r\n }\r\n );\r\n Promise.all(promise_group_frames_frame_cart_products_choosed).then(\r\n (group_frames) => {\r\n data_frame.frame_cart_products_choosed.group_frames = group_frames;\r\n }\r\n );\r\n\r\n resolve(true);\r\n });\r\n }\r\n\r\n // get dữ liệu của nhóm object\r\n getDataObjectGroup(file_name) {\r\n const url = `assets/data/group/object_group/${file_name}.json`;\r\n return new Promise((resolve) => {\r\n this.http.get<any[]>(url).subscribe((data) => {\r\n resolve(data);\r\n });\r\n });\r\n }\r\n // get dữ liệu của nhóm frame\r\n getDataFrameGroup(file_name) {\r\n const url = `assets/data/group/frame_group/${file_name}.json`;\r\n return new Promise((resolve) => {\r\n this.http.get<any[]>(url).subscribe((data) => {\r\n resolve(data);\r\n });\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { VhAlgorithm, VhQueryAutoWeb } from 'vhautowebdb';\r\nimport { JsonDataService } from '../services/json-data.service';\r\nimport { NzMessageService } from 'ng-zorro-antd/message';\r\nimport { LanguageService } from './language.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PagesService {\r\n\r\n /** Mảng chứa các thiết bị cần copy từ desktop sang */\r\n private devicesNeedToCopyFromDesktop = [\r\n 'tablet_portrait',\r\n 'tablet_landscape',\r\n 'mobile_landscape',\r\n 'mobile_portrait'\r\n ];\r\n\r\n constructor(\r\n private jsonDataService: JsonDataService,\r\n private vhAlgorithm: VhAlgorithm,\r\n private vhQueryAutoWeb: VhQueryAutoWeb,\r\n private message: NzMessageService,\r\n private languageService: LanguageService,\r\n ) { }\r\n\r\n\r\n /**\r\n * show message\r\n * @param type : 'success', 'error', 'warning'\r\n * @param content\r\n * @param duration default 1500\r\n * @example\r\n * this.alertMessageDesktop.(\"success\",HELLO WORLD )\r\n */\r\n alertMessageDesktop(type, content, duration?) {\r\n this.message.create(type, this.languageService.translate(content), duration);\r\n }\r\n \r\n\r\n \r\n \r\n /** Hàm kiểm tra và trả về những block chung không chưa id_page như popup, hover, header, footer (Tên bắt đầu bằng từ popup, hover, header, footer)\r\n *\r\n * @param blockType\r\n */\r\n isGeneraltype(blockType: string): boolean {\r\n return (\r\n /^popup_hover/.test(blockType) ||\r\n /^hover_blank/.test(blockType) ||\r\n /^popup_welcome/.test(blockType) ||\r\n /^mobile_tabs/.test(blockType) ||\r\n /^popup_detail_product/.test(blockType) ||\r\n /^popup_detail_snimei/.test(blockType) ||\r\n /^popup_detail_food_drink/.test(blockType) ||\r\n /^popup_detail_recruitment/.test(blockType) ||\r\n /^popup_detail_news/.test(blockType) ||\r\n /^popup_detail_website/.test(blockType) ||\r\n /^popup_detail_service/.test(blockType) ||\r\n /^chatbox/.test(blockType) ||\r\n /^header/.test(blockType) ||\r\n /^footer/.test(blockType)\r\n );\r\n }\r\n \r\n\r\n \r\n /** Hàm này thực hiện trả về thên object phù hợp khi tạo\r\n *\r\n * @param label tên object được chọn\r\n * @param result đây là dữ liệu được lấy từ json\r\n * @returns\r\n */\r\n generateObjectName(\r\n label: string,\r\n result: any,\r\n blockChoosing?,\r\n objectChoosing?\r\n ): string {\r\n let number = 1;\r\n if (blockChoosing?.objects?.length) {\r\n blockChoosing.objects.forEach((element: any) => {\r\n if (element.component == result.component) {\r\n number = number + 1;\r\n }\r\n });\r\n } else if (objectChoosing?.objects?.length) {\r\n objectChoosing.objects.forEach((element: any) => {\r\n if (element.component == result.component) {\r\n number = number + 1;\r\n }\r\n });\r\n }\r\n return `${label} ${number}`;\r\n }\r\n\r\n /**\r\n * tạo màu ngẫu nhiên cho frame\r\n * @returns\r\n */\r\n getRandomColor(): string {\r\n const letters: string = '0123456789ABCDEF';\r\n let color: string = '#';\r\n for (let i: number = 0; i < 6; i++) {\r\n color += letters[Math.floor(Math.random() * 16)];\r\n }\r\n return color;\r\n }\r\n \r\n /** Hàm này thực hiện trả về tên frame phù hợp khi tạo\r\n *\r\n * @param label tên frame được chọn\r\n * @param result đây là dữ liệu được lấy từ json\r\n * @returns\r\n */\r\n generateFrameName(label: string, result: any): string {\r\n return `${label}`;\r\n }\r\n\r\n /** Hàm thực hiện cập nhật frame\r\n *\r\n * @param id_frame id frame cập nhật\r\n * @param dataUpdate dữ liệu cập nhât {name: 'abc'}\r\n */\r\n updateFrameByIdFrame(id_frame: string, dataUpdate: object) {\r\n this.vhQueryAutoWeb.updateObject(id_frame, dataUpdate).then(\r\n (bool) => {\r\n if (!bool) {\r\n this.alertMessageDesktop(\r\n 'error',\r\n `Cập nhật thất bại !!!`\r\n );\r\n }\r\n },\r\n (error) => {\r\n console.log('error', error);\r\n this.alertMessageDesktop(\r\n 'error',\r\n `Đã xảy ra lỗi trong quá trình truyền dữ liệu !!!`\r\n );\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Hàm add Object (có mẫu)\r\n * @param object\r\n * @param blockChoosing\r\n * @param objectChoosing\r\n * @param main_sector chỉ dùng cho popup-detail, popup-interactive, button-show-modal-detail\r\n * @returns\r\n */\r\n addObject(\r\n object,\r\n blockChoosing,\r\n objectChoosing,\r\n main_sector?\r\n ) {\r\n\r\n return new Promise((resolve, reject) => {\r\n if (object) {\r\n const isObjectChoosing = Boolean(objectChoosing);\r\n const id = isObjectChoosing ? { id_object: objectChoosing._id } : { id_block: blockChoosing._id };\r\n let id_block_or_object = isObjectChoosing ? objectChoosing._id : blockChoosing._id;\r\n let data = {\r\n ...id,\r\n ...object,\r\n name: this.generateObjectName(object.name, object, blockChoosing, objectChoosing),\r\n type: object.type,\r\n desktop_config: {\r\n ...object['desktop_config'],\r\n cursor: {\r\n ...object['desktop_config']?.cursor,\r\n cursor_style: \"default\",\r\n cursor_image_path: \"\"\r\n },\r\n rotate: {\r\n transform_rotateX: 0,\r\n transform_rotateY: 0,\r\n transform_rotateZ: 0,\r\n transform_skewX: 0,\r\n transform_skewY: 0\r\n }\r\n },\r\n mobile_portrait_config: {\r\n ...(object['mobile_portrait_config'] || object['desktop_config']),\r\n cursor: {\r\n ...(object['mobile_portrait_config'] || object['desktop_config'])?.cursor,\r\n cursor_style: \"default\",\r\n cursor_image_path: \"\"\r\n },\r\n rotate: {\r\n transform_rotateX: 0,\r\n transform_rotateY: 0,\r\n transform_rotateZ: 0,\r\n transform_skewX: 0,\r\n transform_skewY: 0\r\n }\r\n },\r\n tablet_landscape_config: {\r\n ...(object['tablet_landscape_config'] || object['desktop_config']),\r\n cursor: {\r\n ...(object['tablet_landscape_config'] || object['desktop_config'])?.cursor,\r\n cursor_style: \"default\",\r\n cursor_image_path: \"\"\r\n },\r\n rotate: {\r\n transform_rotateX: 0,\r\n transform_rotateY: 0,\r\n transform_rotateZ: 0,\r\n transform_skewX: 0,\r\n transform_skewY: 0\r\n }\r\n },\r\n tablet_portrait_config: {\r\n ...(object['tablet_portrait_config'] || object['desktop_config']),\r\n cursor: {\r\n ...(object['tablet_portrait_config'] || object['desktop_config'])?.cursor,\r\n cursor_style: \"default\",\r\n cursor_image_path: \"\"\r\n },\r\n rotate: {\r\n transform_rotateX: 0,\r\n transform_rotateY: 0,\r\n transform_rotateZ: 0,\r\n transform_skewX: 0,\r\n transform_skewY: 0\r\n }\r\n },\r\n mobile_landscape_config: {\r\n ...(object['mobile_landscape_config'] || object['desktop_config']),\r\n cursor: {\r\n ...(object['mobile_landscape_config'] || object['desktop_config'])?.cursor,\r\n cursor_style: \"default\",\r\n cursor_image_path: \"\"\r\n },\r\n rotate: {\r\n transform_rotateX: 0,\r\n transform_rotateY: 0,\r\n transform_rotateZ: 0,\r\n transform_skewX: 0,\r\n transform_skewY: 0\r\n }\r\n },\r\n ['desktop_position_' + id_block_or_object]: {\r\n ...object['desktop_position'],\r\n },\r\n ['mobile_portrait_position_' + id_block_or_object]: {\r\n ...object[object['mobile_portrait_position'] ? 'mobile_portrait_position' : 'desktop_position'],\r\n },\r\n ['tablet_landscape_position_' + id_block_or_object]: {\r\n ...object[object['tablet_landscape_position'] ? 'tablet_landscape_position' : 'desktop_position'],\r\n },\r\n ['tablet_portrait_position_' + id_block_or_object]: {\r\n ...object[object['tablet_portrait_position'] ? 'tablet_portrait_position' : 'desktop_position'],\r\n },\r\n ['mobile_landscape_position_' + id_block_or_object]: {\r\n ...object[object['mobile_landscape_position'] ? 'mobile_landscape_position' : 'desktop_position'],\r\n },\r\n mobile_portrait_class: { ...(object['mobile_portrait_class'] || object['desktop_class']) },\r\n tablet_landscape_class: { ...(object['tablet_landscape_class'] || object['desktop_class']) },\r\n tablet_portrait_class: { ...(object['tablet_portrait_class'] || object['desktop_class']) },\r\n mobile_landscape_class: { ...(object['mobile_landscape_class'] || object['desktop_class']) },\r\n otype: 'object'\r\n }; // Gán dữ liệu\r\n\r\n if (['AtwDynamicFilter'].includes(object.component)) {\r\n data.staticdata.main_sector = main_sector;\r\n }\r\n\r\n delete data.desktop_position\r\n delete data.tablet_portrait_position\r\n delete data.tablet_landscape_position\r\n delete data.mobile_portrait_position\r\n delete data.mobile_landscape_position\r\n\r\n let add_code = null;\r\n if (['AtwSearchCustomize', 'AtwPopupDetail', 'AtwButtonShowModalDetail', 'AtwPopupInteractive', 'AtwPopup', 'AtwPopupOpenForm', \"AtwHover\", \"AtwButtonShowModal\", \"AtwButtonShowForm\", \"AtwButtonShowFormLogged\"].includes(data.component)) {\r\n add_code = this.vhAlgorithm.ObjectId(10)\r\n }\r\n\r\n this.vhQueryAutoWeb.addObject(data, add_code).then(\r\n async (object: any) => {\r\n if (object) {\r\n if (object.type == 'search-customize') {\r\n this.jsonDataService\r\n .getFrame('frame_blank')\r\n .subscribe((frame: any) => {\r\n const promises = Array.from(\r\n { length: 1 },\r\n (_, index) => {\r\n const dataFrame = {\r\n id_object: object._id,\r\n ...frame,\r\n is_child_search_customize: true,\r\n name: `Khung trống ${index + 1}`,\r\n configBlank: {},\r\n staticdata: {\r\n group_object: \"product\",\r\n content: `Khung trống ${index + 1}`,\r\n ...frame.staticdata,\r\n },\r\n desktop_config: {\r\n ...frame.desktop_config,\r\n ...object.desktop_config,\r\n },\r\n mobile_portrait_config: {\r\n ...frame.mobile_portrait_config,\r\n ...object.mobile_portrait_config,\r\n },\r\n mobile_landscape_config: {\r\n ...frame.mobile_landscape_config,\r\n ...object.mobile_landscape_config,\r\n },\r\n tablet_landscape_config: {\r\n ...frame.tablet_landscape_config,\r\n ...object.tablet_landscape_config,\r\n },\r\n tablet_portrait_config: {\r\n ...frame.tablet_portrait_config,\r\n ...object.tablet_portrait_config,\r\n },\r\n ['desktop_position_' + object._id]: {\r\n ...frame.desktop_position,\r\n ...object.desktop_config,\r\n },\r\n ['mobile_portrait_position_' + object._id]: {\r\n ...frame.mobile_portrait_position,\r\n ...object.mobile_portrait_config,\r\n },\r\n ['tablet_landscape_position_' + object._id]: {\r\n ...frame.tablet_landscape_position,\r\n ...object.tablet_landscape_config,\r\n },\r\n ['tablet_portrait_position_' + object._id]: {\r\n ...frame.tablet_portrait_position,\r\n ...object.tablet_portrait_config,\r\n },\r\n ['mobile_landscape_position_' + object._id]: {\r\n ...frame.mobile_landscape_position,\r\n ...object.mobile_landscape_config,\r\n },\r\n isResize: {\r\n top: false,\r\n right: false,\r\n bottom: true,\r\n left: false,\r\n },\r\n height: 200,\r\n width: 300,\r\n top: 0,\r\n left: 0,\r\n index: index,\r\n desktop_class: {\r\n ...frame.desktop_class,\r\n 'frame-blank': {\r\n ...frame.desktop_class['frame-blank'], // giữ lại tất cả thuộc tính của frame-blank\r\n 'background-color': this.getRandomColor(),\r\n width: '100%',\r\n height: '200px',\r\n 'min-height': '100%'\r\n },\r\n },\r\n mobile_portrait_class: {\r\n ...frame.mobile_portrait_class,\r\n 'frame-blank': {\r\n ...frame.mobile_portrait_class['frame-blank'],\r\n 'background-color': this.getRandomColor(),\r\n width: '100%',\r\n height: '200px',\r\n 'min-height': '100%'\r\n },\r\n },\r\n tablet_landscape_class: {\r\n ...frame.tablet_landscape_class,\r\n 'frame-blank': {\r\n ...frame.tablet_landscape_class['frame-blank'],\r\n 'background-color': this.getRandomColor(),\r\n width: '100%',\r\n height: '200px',\r\n 'min-height': '100%'\r\n },\r\n },\r\n tablet_portrait_class: {\r\n ...frame.tablet_portrait_class,\r\n 'frame-blank': {\r\n ...frame.tablet_portrait_class['frame-blank'],\r\n 'background-color': this.getRandomColor(),\r\n width: '100%',\r\n height: '200px',\r\n 'min-height': '100%'\r\n },\r\n },\r\n mobile_landscape_class: {\r\n ...frame.mobile_landscape_class,\r\n 'frame-blank': {\r\n ...frame.mobile_landscape_class['frame-blank'],\r\n 'background-color': this.getRandomColor(),\r\n width: '100%',\r\n height: '200px',\r\n 'min-height': '100%'\r\n },\r\n },\r\n };\r\n return this.vhQueryAutoWeb.addObject(dataFrame, add_code);\r\n }\r\n );\r\n Promise.all(promises).then((response: any) => {\r\n if (response) {\r\n object.objects = response;\r\n setTimeout(() => {\r\n resolve(object);\r\n }, 0);\r\n }\r\n });\r\n });\r\n } else if (object.type == 'popup-detail' || object.type == 'popup-interactive' || object.type == 'button-show-modal-detail') {\r\n const subName = {\r\n product: 'sản phẩm',\r\n food_drink: 'món ăn',\r\n service: 'dịch vụ',\r\n news: 'tin tức',\r\n website: 'dự án',\r\n recruitment: 'tuyển dụng',\r\n snimei: 'SN/IMEI'\r\n };\r\n\r\n this.jsonDataService\r\n .getBlock('popup_detail_product')\r\n .subscribe((block: any) => {\r\n const promises = Array.from(\r\n { length: 1 },\r\n (_, index) => {\r\n\r\n let blockName = `Khối hộp thoại nội dung chi tiết ${subName[main_sector]} (cửa số mới)`\r\n if (object.type == 'popup-interactive') {\r\n blockName = `Khối hộp thoại nội dung tương tác ${subName[main_sector]} (di chuột)`\r\n }\r\n\r\n if (object.type == 'button-show-modal-detail') {\r\n blockName = `Khối hộp thoại nội dung chi tiết ${subName[main_sector]} (nhấn chuột)`\r\n }\r\n\r\n const dataBlock = {\r\n ...block,\r\n type: `popup_detail_${main_sector}`,\r\n name: blockName,\r\n ['desktop_position_']: {\r\n ...block['desktop_position'],\r\n },\r\n ['mobile_portrait_position_']: {\r\n ...block['mobile_portrait_position'],\r\n },\r\n ['tablet_landscape_position_']: {\r\n ...block['tablet_landscape_position'],\r\n },\r\n ['tablet_portrait_position_']: {\r\n ...block['tablet_portrait_position'],\r\n },\r\n ['mobile_landscape_position_']: {\r\n ...block['mobile_landscape_position'],\r\n },\r\n };\r\n delete dataBlock.desktop_position\r\n delete dataBlock.tablet_portrait_position\r\n delete dataBlock.tablet_landscape_position\r\n delete dataBlock.mobile_portrait_position\r\n delete dataBlock.mobile_landscape_position\r\n return this.vhQueryAutoWeb.addBlock(dataBlock, add_code);\r\n }\r\n );\r\n Promise.all(promises).then((response: any) => {\r\n if (response) {\r\n object.staticdata.id_freeblock = response[0]._id;\r\n this.updateFrameByIdFrame(object._id, object);\r\n\r\n setTimeout(() => {\r\n resolve(object);\r\n }, 0);\r\n }\r\n });\r\n });\r\n } else if (['AtwPopup', 'AtwPopupOpenForm', \"AtwHover\", \"AtwButtonShowModal\", \"AtwButtonShowForm\", \"AtwButtonShowFormLogged\"].includes(object.component)) {\r\n let type_block = 'popup_hover'\r\n switch (object.component) {\r\n case 'AtwPopup':\r\n case 'AtwPopupOpenForm':\r\n type_block = 'popup_hover'\r\n break\r\n case \"AtwButtonShowFormLogged\":\r\n case 'AtwButtonShowForm':\r\n case 'AtwButtonShowModal':\r\n case 'AtwHover':\r\n type_block = 'hover_blank'\r\n break\r\n }\r\n this.jsonDataService\r\n .getBlock(type_block)\r\n .subscribe((block: any) => {\r\n const promises = Array.from(\r\n { length: 1 },\r\n (_, index) => {\r\n const dataBlock = {\r\n ...block,\r\n ['desktop_position_']: {\r\n ...block['desktop_position'],\r\n },\r\n ['mobile_portrait_position_']: {\r\n ...block['mobile_portrait_position'],\r\n },\r\n ['tablet_landscape_position_']: {\r\n ...block['tablet_landscape_position'],\r\n },\r\n ['tablet_portrait_position_']: {\r\n ...block['tablet_portrait_position'],\r\n },\r\n ['mobile_landscape_position_']: {\r\n ...block['mobile_landscape_position'],\r\n },\r\n };\r\n delete dataBlock.desktop_position\r\n delete dataBlock.tablet_portrait_position\r\n delete dataBlock.tablet_landscape_position\r\n delete dataBlock.mobile_portrait_position\r\n delete dataBlock.mobile_landscape_position\r\n\r\n return this.vhQueryAutoWeb.addBlock(dataBlock, add_code);\r\n }\r\n );\r\n Promise.all(promises).then((response: any) => {\r\n if (response) {\r\n object.staticdata.id_freeblock = response[0]._id;\r\n this.updateFrameByIdFrame(object._id, object);\r\n setTimeout(() => {\r\n resolve(object);\r\n }, 0);\r\n }\r\n });\r\n });\r\n } else {\r\n resolve(object);\r\n }\r\n } else {\r\n reject('error');\r\n }\r\n },\r\n (error) => {\r\n reject(error);\r\n console.log('error', error);\r\n }\r\n );\r\n }\r\n });\r\n }\r\n \r\n\r\n \r\n\r\n \r\n\r\n}\r\n","import { DatePipe } from '@angular/common';\r\n\r\nimport { Title, Meta } from '@angular/platform-browser';\r\nimport { NzNotificationService } from 'ng-zorro-antd/notification';\r\nimport { NzMessageService } from 'ng-zorro-antd/message';\r\nimport { Subject } from 'rxjs';\r\nimport { LoadingController } from '@ionic/angular';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { PLATFORM_ID, Inject, Injectable } from '@angular/core';\r\nimport { VhAlgorithm, VhEventMediator, VhImage, VhQueryAutoWeb } from 'vhautowebdb';\r\nimport { FormControl, Validators } from '@angular/forms';\r\nimport imgJson from './img.json';\r\nimport { LanguageService } from './language.service';\r\nimport { PagesService } from './design-web.service';\r\nimport imgRepeatJson from './image-repeat.json'\r\nimport imgProductJson from './image-product.json'\r\nimport imgCategoryJson from './image-category.json'\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FunctionService {\r\n uploadedFile: File | undefined;\r\n city: any;\r\n province: any;\r\n district: any;\r\n\r\n animationConfigChanged = new Subject<string>();\r\n /** Palette màu cho CKEDITOR */\r\n colorPalette = [\r\n { color: 'hsl(0, 100%, 95%)', label: ' ' }, { color: 'hsl(0, 100%, 90%)', label: ' ' }, { color: 'hsl(0, 100%, 85%)', label: ' ' }, { color: 'hsl(0, 100%, 80%)', label: ' ' }, { color: 'hsl(0, 100%, 75%)', label: ' ' }, { color: 'hsl(0, 100%, 70%)', label: ' ' }, { color: 'hsl(0, 100%, 65%)', label: ' ' }, { color: 'hsl(0, 100%, 60%)', label: ' ' }, { color: 'hsl(0, 100%, 55%)', label: ' ' }, { color: 'hsl(0, 100%, 50%)', label: ' ' }, { color: 'hsl(0, 100%, 45%)', label: ' ' }, { color: 'hsl(0, 100%, 40%)', label: ' ' }, { color: 'hsl(0, 100%, 35%)', label: ' ' }, { color: 'hsl(0, 100%, 30%)', label: ' ' }, { color: 'hsl(0, 100%, 25%)', label: ' ' }, { color: 'hsl(0, 100%, 20%)', label: ' ' }, { color: 'hsl(0, 100%, 15%)', label: ' ' }, { color: 'hsl(0, 100%, 10%)', label: ' ' }, { color: 'hsl(0, 100%, 5%)', label: ' ' }, { color: 'hsl(0, 100%, 2%)', label: ' ' }, { color: 'hsl(120, 100%, 95%)', label: ' ' }, { color: 'hsl(120, 100%, 90%)', label: ' ' }, { color: 'hsl(120, 100%, 85%)', label: ' ' }, { color: 'hsl(120, 100%, 80%)', label: ' ' }, { color: 'hsl(120, 100%, 75%)', label: ' ' }, { color: 'hsl(120, 100%, 70%)', label: ' ' }, { color: 'hsl(120, 100%, 65%)', label: ' ' }, { color: 'hsl(120, 100%, 60%)', label: ' ' }, { color: 'hsl(120, 100%, 55%)', label: ' ' }, { color: 'hsl(120, 100%, 50%)', label: ' ' }, { color: 'hsl(120, 100%, 45%)', label: ' ' }, { color: 'hsl(120, 100%, 40%)', label: ' ' }, { color: 'hsl(120, 100%, 35%)', label: ' ' }, { color: 'hsl(120, 100%, 30%)', label: ' ' }, { color: 'hsl(120, 100%, 25%)', label: ' ' }, { color: 'hsl(120, 100%, 20%)', label: ' ' }, { color: 'hsl(120, 100%, 15%)', label: ' ' }, { color: 'hsl(120, 100%, 10%)', label: ' ' }, { color: 'hsl(120, 100%, 5%)', label: ' ' }, { color: 'hsl(120, 100%, 2%)', label: ' ' }, { color: 'hsl(240, 100%, 95%)', label: ' ' }, { color: 'hsl(240, 100%, 90%)', label: ' ' }, { color: 'hsl(240, 100%, 85%)', label: ' ' }, { color: 'hsl(240, 100%, 80%)', label: ' ' }, { color: 'hsl(240, 100%, 75%)', label: ' ' }, { color: 'hsl(240, 100%, 70%)', label: ' ' }, { color: 'hsl(240, 100%, 65%)', label: ' ' }, { color: 'hsl(240, 100%, 60%)', label: ' ' }, { color: 'hsl(240, 100%, 55%)', label: ' ' }, { color: 'hsl(240, 100%, 50%)', label: ' ' }, { color: 'hsl(240, 100%, 45%)', label: ' ' }, { color: 'hsl(240, 100%, 40%)', label: ' ' }, { color: 'hsl(240, 100%, 35%)', label: ' ' }, { color: 'hsl(240, 100%, 30%)', label: ' ' }, { color: 'hsl(240, 100%, 25%)', label: ' ' }, { color: 'hsl(240, 100%, 20%)', label: ' ' }, { color: 'hsl(240, 100%, 15%)', label: ' ' }, { color: 'hsl(240, 100%, 10%)', label: ' ' }, { color: 'hsl(240, 100%, 5%)', label: ' ' }, { color: 'hsl(240, 100%, 2%)', label: ' ' }, { color: 'hsl(60, 100%, 95%)', label: ' ' }, { color: 'hsl(60, 100%, 90%)', label: ' ' }, { color: 'hsl(60, 100%, 85%)', label: ' ' }, { color: 'hsl(60, 100%, 80%)', label: ' ' }, { color: 'hsl(60, 100%, 75%)', label: ' ' }, { color: 'hsl(60, 100%, 70%)', label: ' ' }, { color: 'hsl(60, 100%, 65%)', label: ' ' }, { color: 'hsl(60, 100%, 60%)', label: ' ' }, { color: 'hsl(60, 100%, 55%)', label: ' ' }, { color: 'hsl(60, 100%, 50%)', label: ' ' }, { color: 'hsl(60, 100%, 45%)', label: ' ' }, { color: 'hsl(60, 100%, 40%)', label: ' ' }, { color: 'hsl(60, 100%, 35%)', label: ' ' }, { color: 'hsl(60, 100%, 30%)', label: ' ' }, { color: 'hsl(60, 100%, 25%)', label: ' ' }, { color: 'hsl(60, 100%, 20%)', label: ' ' }, { color: 'hsl(60, 100%, 15%)', label: ' ' }, { color: 'hsl(60, 100%, 10%)', label: ' ' }, { color: 'hsl(60, 100%, 5%)', label: ' ' }, { color: 'hsl(60, 100%, 2%)', label: ' ' }, { color: 'hsl(30, 100%, 95%)', label: ' ' }, { color: 'hsl(30, 100%, 90%)', label: ' ' }, { color: 'hsl(30, 100%, 85%)', label: ' ' }, { color: 'hsl(30, 100%, 80%)', label: ' ' }, { color: 'hsl(30, 100%, 75%)', label: ' ' }, { color: 'hsl(30, 100%, 70%)', label: ' ' }, { color: 'hsl(30, 100%, 65%)', label: ' ' }, { color: 'hsl(30, 100%, 60%)', label: ' ' }, { color: 'hsl(30, 100%, 55%)', label: ' ' }, { color: 'hsl(30, 100%, 50%)', label: ' ' }, { color: 'hsl(30, 100%, 45%)', label: ' ' }, { color: 'hsl(30, 100%, 40%)', label: ' ' }, { color: 'hsl(30, 100%, 35%)', label: ' ' }, { color: 'hsl(30, 100%, 30%)', label: ' ' }, { color: 'hsl(30, 100%, 25%)', label: ' ' }, { color: 'hsl(30, 100%, 20%)', label: ' ' }, { color: 'hsl(30, 100%, 15%)', label: ' ' }, { color: 'hsl(30, 100%, 10%)', label: ' ' }, { color: 'hsl(30, 100%, 5%)', label: ' ' }, { color: 'hsl(30, 100%, 2%)', label: ' ' }, { color: 'hsl(330, 100%, 95%)', label: ' ' }, { color: 'hsl(330, 100%, 90%)', label: ' ' }, { color: 'hsl(330, 100%, 85%)', label: ' ' }, { color: 'hsl(330, 100%, 80%)', label: ' ' }, { color: 'hsl(330, 100%, 75%)', label: ' ' }, { color: 'hsl(330, 100%, 70%)', label: ' ' }, { color: 'hsl(330, 100%, 65%)', label: ' ' }, { color: 'hsl(330, 100%, 60%)', label: ' ' }, { color: 'hsl(330, 100%, 55%)', label: ' ' }, { color: 'hsl(330, 100%, 50%)', label: ' ' }, { color: 'hsl(330, 100%, 45%)', label: ' ' }, { color: 'hsl(330, 100%, 40%)', label: ' ' }, { color: 'hsl(330, 100%, 35%)', label: ' ' }, { color: 'hsl(330, 100%, 30%)', label: ' ' }, { color: 'hsl(330, 100%, 25%)', label: ' ' }, { color: 'hsl(330, 100%, 20%)', label: ' ' }, { color: 'hsl(330, 100%, 15%)', label: ' ' }, { color: 'hsl(330, 100%, 10%)', label: ' ' }, { color: 'hsl(330, 100%, 5%)', label: ' ' }, { color: 'hsl(330, 100%, 2%)', label: ' ' }, { color: 'hsl(270, 100%, 95%)', label: ' ' }, { color: 'hsl(270, 100%, 90%)', label: ' ' }, { color: 'hsl(270, 100%, 85%)', label: ' ' }, { color: 'hsl(270, 100%, 80%)', label: ' ' }, { color: 'hsl(270, 100%, 75%)', label: ' ' }, { color: 'hsl(270, 100%, 70%)', label: ' ' }, { color: 'hsl(270, 100%, 65%)', label: ' ' }, { color: 'hsl(270, 100%, 60%)', label: ' ' }, { color: 'hsl(270, 100%, 55%)', label: ' ' }, { color: 'hsl(270, 100%, 50%)', label: ' ' }, { color: 'hsl(270, 100%, 45%)', label: ' ' }, { color: 'hsl(270, 100%, 40%)', label: ' ' }, { color: 'hsl(270, 100%, 35%)', label: ' ' }, { color: 'hsl(270, 100%, 30%)', label: ' ' }, { color: 'hsl(270, 100%, 25%)', label: ' ' }, { color: 'hsl(270, 100%, 20%)', label: ' ' }, { color: 'hsl(270, 100%, 15%)', label: ' ' }, { color: 'hsl(270, 100%, 10%)', label: ' ' }, { color: 'hsl(270, 100%, 5%)', label: ' ' }, { color: 'hsl(270, 100%, 2%)', label: ' ' }, { color: 'hsl(0, 0%, 0%)', label: ' ' }, { color: 'hsl(0, 0%, 10%)', label: ' ' }, { color: 'hsl(0, 0%, 20%)', label: ' ' }, { color: 'hsl(0, 0%, 30%)', label: ' ' }, { color: 'hsl(0, 0%, 40%)', label: ' ' }, { color: 'hsl(0, 0%, 50%)', label: ' ' }, { color: 'hsl(0, 0%, 60%)', label: ' ' }, { color: 'hsl(0, 0%, 70%)', label: ' ' }, { color: 'hsl(0, 0%, 80%)', label: ' ' }, { color: 'hsl(0, 0%, 90%)', label: ' ' }, { color: 'hsl(0, 0%, 95%)', label: ' ' }, { color: 'hsl(0, 0%, 92%)', label: ' ' }, { color: 'hsl(0, 0%, 85%)', label: ' ' }, { color: 'hsl(0, 0%, 78%)', label: ' ' }, { color: 'hsl(0, 0%, 71%)', label: ' ' }, { color: 'hsl(0, 0%, 64%)', label: ' ' }, { color: 'hsl(0, 0%, 57%)', label: ' ' }, { color: 'hsl(0, 0%, 50%)', label: ' ' }, { color: 'hsl(0, 0%, 43%)', label: ' ' }, { color: 'hsl(0, 0%, 36%)', label: ' ' }, { color: 'hsl(0, 0%, 100%)', label: ' ' }, { color: 'hsl(0, 0%, 95%)', label: ' ' }, { color: 'hsl(0, 0%, 90%)', label: ' ' }, { color: 'hsl(0, 0%, 85%)', label: ' ' }, { color: 'hsl(0, 0%, 80%)', label: ' ' }, { color: 'hsl(0, 0%, 75%)', label: ' ' }, { color: 'hsl(0, 0%, 70%)', label: ' ' }, { color: 'hsl(0, 0%, 65%)', label: ' ' }, { color: 'hsl(0, 0%, 60%)', label: ' ' }, { color: 'hsl(0, 0%, 55%)', label: ' ' }, { color: 'hsl(0, 0%, 50%)', label: ' ' }, { color: 'hsl(0, 0%, 45%)', label: ' ' }, { color: 'hsl(0, 0%, 40%)', label: ' ' }, { color: 'hsl(0, 0%, 35%)', label: ' ' }, { color: 'hsl(0, 0%, 30%)', label: ' ' }, { color: 'hsl(0, 0%, 25%)', label: ' ' }, { color: 'hsl(0, 0%, 20%)', label: ' ' }, { color: 'hsl(0, 0%, 15%)', label: ' ' }, { color: 'hsl(0, 0%, 10%)', label: ' ' }, { color: 'hsl(0, 0%, 5%)', label: ' ' }, { color: 'hsl(30, 100%, 95%)', label: ' ' }, { color: 'hsl(30, 100%, 90%)', label: ' ' }, { color: 'hsl(30, 100%, 85%)', label: ' ' }, { color: 'hsl(30, 100%, 80%)', label: ' ' }, { color: 'hsl(30, 100%, 75%)', label: ' ' }, { color: 'hsl(30, 100%, 70%)', label: ' ' }, { color: 'hsl(30, 100%, 65%)', label: ' ' }, { color: 'hsl(30, 100%, 60%)', label: ' ' }, { color: 'hsl(30, 100%, 55%)', label: ' ' }, { color: 'hsl(30, 100%, 50%)', label: ' ' }, { color: 'hsl(30, 100%, 45%)', label: ' ' }, { color: 'hsl(30, 100%, 40%)', label: ' ' }, { color: 'hsl(30, 100%, 35%)', label: ' ' }, { color: 'hsl(30, 100%, 30%)', label: ' ' }, { color: 'hsl(30, 100%, 25%)', label: ' ' }, { color: 'hsl(30, 100%, 20%)', label: ' ' }, { color: 'hsl(30, 100%, 15%)', label: ' ' }, { color: 'hsl(30, 100%, 10%)', label: ' ' }, { color: 'hsl(30, 100%, 5%)', label: ' ' }, { color: 'hsl(30, 100%, 2%)', label: ' ' }\r\n ];\r\n /** biến config ckeditor dùng trong file user để có thể apply mọi font-size và font-family */\r\n CKEDITORUserConfig: any = {\r\n fontSize: {\r\n options: [\r\n 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48,\r\n ],\r\n supportAllValues: true,\r\n },\r\n fontFamily: {\r\n supportAllValues: true\r\n },\r\n heading: {\r\n options: [\r\n { model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },\r\n { model: 'heading1', view: 'h1', title: 'Heading 1', class: 'ck-heading_heading1' },\r\n { model: 'heading2', view: 'h2', title: 'Heading 2', class: 'ck-heading_heading2' },\r\n { model: 'heading3', view: 'h3', title: 'Heading 3', class: 'ck-heading_heading3' },\r\n { model: 'heading4', view: 'h4', title: 'Heading 4', class: 'ck-heading_heading4' },\r\n { model: 'heading5', view: 'h5', title: 'Heading 5', class: 'ck-heading_heading5' },\r\n { model: 'heading6', view: 'h6', title: 'Heading 6', class: 'ck-heading_heading6' }\r\n ]\r\n }\r\n }\r\n /** biến config ckeditor trong quản lý admin */\r\n CKEDITORConfig: any = {\r\n toolbar: [\r\n 'heading',\r\n '|',\r\n 'alignment',\r\n '|',\r\n 'bold',\r\n 'italic',\r\n 'strikethrough',\r\n 'underline',\r\n 'subscript',\r\n 'superscript',\r\n '|',\r\n 'link',\r\n '|',\r\n 'bulletedList',\r\n 'numberedList',\r\n 'todoList',\r\n '-',\r\n 'fontfamily',\r\n 'fontsize',\r\n 'fontColor',\r\n 'fontBackgroundColor',\r\n '|',\r\n 'code',\r\n 'codeBlock',\r\n '|',\r\n 'insertTable',\r\n '|',\r\n 'outdent',\r\n 'indent',\r\n '|',\r\n 'blockQuote',\r\n '|',\r\n 'undo',\r\n 'redo',\r\n 'uploadImage',\r\n ],\r\n fontSize: {\r\n options: [...Array(94).keys()].map(i => i + 7), // tạo mảng từ 1 đến 100\r\n supportAllValues: true, // Enable support for custom inline font sizes\r\n },\r\n fontFamily: {\r\n options: [\r\n 'Amatic SC, cursive',\r\n 'Arial',\r\n 'Anton',\r\n 'Asap, serif',\r\n 'Baloo 2, sans-serif',\r\n 'Barlow',\r\n 'Be Vietnam Pro, sans-serif',\r\n 'Barlow Condensed, sans-serif',\r\n 'Bebas Neue, sans-serif',\r\n 'Bungee, sans-serif',\r\n 'Caveat, cursive',\r\n 'Charm',\r\n 'Comfortaa, serif',\r\n 'Comic Sans MS, Arial',\r\n 'Cursive',\r\n 'Dancing Script, cursive',\r\n 'Edu AU VIC WA NT Pre, serif',\r\n 'Exo 2, sans-serif',\r\n 'Fira Sans Extra Condensed',\r\n 'Georgia',\r\n 'Great Vibes, cursive',\r\n 'Inconsolata',\r\n 'Inter, serif',\r\n 'Josefin Sans, sans-serif',\r\n 'Kanit',\r\n 'Kaushan Script, cursive',\r\n 'Lato, sans-serif',\r\n 'Lavishly Yours, cursive',\r\n 'Libre Franklin, sans-serif',\r\n 'Lilita One, serif',\r\n 'Lobster, cursive',\r\n 'Lora',\r\n 'Merriweather',\r\n 'Mukta',\r\n 'Mulish',\r\n 'Montserrat',\r\n 'Noto Sans TC',\r\n 'Noto Serif',\r\n 'Open Sans, sans-serif',\r\n 'PT Sans, sans-serif',\r\n 'Pacifico, cursive',\r\n 'Playfair Display, serif',\r\n 'Poppins, sans-serif',\r\n 'Quicksand',\r\n 'Raleway',\r\n 'Roboto, sans-serif',\r\n 'Roboto Condensed, sans-serif',\r\n 'Rubik',\r\n 'serif',\r\n 'Shadows Into Light, cursive',\r\n 'Shrikhand, serif',\r\n 'Signika, sans-serif',\r\n 'Sora, serif',\r\n 'Sour Gummy, serif',\r\n 'Source Sans Pro, sans-serif',\r\n 'system-ui, -apple-system, BlinkMacSystemFont, sans-serif',\r\n 'Tajawal, serif',\r\n 'Times New Roman, Arial',\r\n 'Ubuntu',\r\n 'Urbanist, serif',\r\n 'Varela',\r\n ],\r\n supportAllValues: true\r\n },\r\n fontColor: {\r\n columns: 10,\r\n documentColors: 200,\r\n colors: this.colorPalette\r\n },\r\n fontBackgroundColor: {\r\n columns: 10,\r\n documentColors: 200,\r\n colors: this.colorPalette\r\n },\r\n heading: {\r\n options: [\r\n { model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },\r\n { model: 'heading1', view: 'h1', title: 'Heading 1', class: 'ck-heading_heading1' },\r\n { model: 'heading2', view: 'h2', title: 'Heading 2', class: 'ck-heading_heading2' },\r\n { model: 'heading3', view: 'h3', title: 'Heading 3', class: 'ck-heading_heading3' },\r\n { model: 'heading4', view: 'h4', title: 'Heading 4', class: 'ck-heading_heading4' },\r\n { model: 'heading5', view: 'h5', title: 'Heading 5', class: 'ck-heading_heading5' },\r\n { model: 'heading6', view: 'h6', title: 'Heading 6', class: 'ck-heading_heading6' }\r\n ]\r\n }\r\n };\r\n\r\n /** \r\n * mảng chứa danh sách object và block đã cập nhật dùng trong admin-config\r\n */\r\n objectsAndBlocksUpdated: any[] = [];\r\n\r\n\r\n // Danh sách thiết bị\r\n devices = [\r\n {\r\n value: 'desktop',\r\n label: 'may_tinh',\r\n width: 1366,\r\n height: 768,\r\n display: false,\r\n icon: 'desktop',\r\n },\r\n {\r\n value: 'tablet_landscape',\r\n label: 'may_tinh_bang_ngang',\r\n width: 1093, // Hoặc 1230\r\n height: 820,\r\n display: false,\r\n icon: 'tablet',\r\n },\r\n {\r\n value: 'tablet_portrait',\r\n label: 'may_tinh_bang_doc',\r\n width: 820,\r\n height: 1093, // Hoặc 1230\r\n display: false,\r\n icon: 'tablet',\r\n },\r\n {\r\n value: 'mobile_landscape',\r\n label: 'dien_thoai_ngang',\r\n width: 845,\r\n height: 390,\r\n display: false,\r\n icon: 'mobile',\r\n },\r\n {\r\n value: 'mobile_portrait',\r\n label: 'dien_thoai_doc',\r\n width: 390,\r\n height: 845,\r\n display: false,\r\n icon: 'mobile',\r\n },\r\n ];\r\n\r\n // Danh sách hướng của gradient (linear-gradient)\r\n gradientDirectionList = [\r\n {\r\n type: 'linear-gradient',\r\n direction: '',\r\n name: 'mac_dinh',\r\n deg: '180deg',\r\n },\r\n {\r\n type: 'linear-gradient',\r\n direction: 'to top,',\r\n name: 'tu_duoi_len_tren',\r\n deg: '0deg',\r\n },\r\n {\r\n type: 'linear-gradient',\r\n direction: 'to right,',\r\n name: 'Từ trái sang phải',\r\n deg: '90deg',\r\n },\r\n {\r\n type: 'linear-gradient',\r\n direction: 'to left,',\r\n name: 'Từ phải sang trái',\r\n deg: '270deg',\r\n },\r\n {\r\n type: 'linear-gradient',\r\n direction: 'to bottom right,',\r\n name: 'tu_trai_tren_sang_phai_duoi',\r\n deg: '135deg',\r\n },\r\n {\r\n type: 'linear-gradient',\r\n direction: 'to bottom left,',\r\n name: 'tu_phai_tren_sang_trai_duoi',\r\n deg: '225deg',\r\n },\r\n {\r\n type: 'linear-gradient',\r\n direction: 'to top right,',\r\n name: 'tu_trai_duoi_sang_phai_tren',\r\n deg: '45deg',\r\n },\r\n {\r\n type: 'linear-gradient',\r\n direction: 'to top left,',\r\n name: 'tu_phai_duoi_sang_trai_tren',\r\n deg: '315deg',\r\n },\r\n ];\r\n\r\n constructor(\r\n private datePipe: DatePipe,\r\n private titleService: Title,\r\n private metaTagService: Meta,\r\n private notification: NzNotificationService,\r\n private loadingCtrl: LoadingController,\r\n private message: NzMessageService,\r\n private translateService: TranslateService,\r\n private nzMessageService: NzMessageService,\r\n @Inject(PLATFORM_ID) private platformId: Object,\r\n private vhQueryAutoWeb: VhQueryAutoWeb,\r\n private vhImage: VhImage,\r\n private vhEventMediator: VhEventMediator,\r\n private languageService: LanguageService,\r\n\r\n private pagesService: PagesService,\r\n ) {\r\n this.selectedLanguageCode = this.vhQueryAutoWeb.localStorageGET('language_code')?.code || 'vn';\r\n console.log('functionService.selectedLanguageCode', this.selectedLanguageCode);\r\n this.multi_languages = this.vhQueryAutoWeb.localStorageGET('multi_languages')?.multi_languages || [];\r\n this.languageTempCode = this.selectedLanguageCode\r\n this.vhEventMediator.notifyOnConfigChanged({ status: 'update-language', code: this.selectedLanguageCode });\r\n this.endUserData = this.vhQueryAutoWeb.getlocalEndUser();\r\n }\r\n endUserData: any; // thông tin end user\r\n\r\n /**\r\n * show message\r\n * @param type : 'success', 'error', 'warning'\r\n * @param content\r\n * @param duration default 1500\r\n * @example\r\n * this.alertMessageDesktop.(\"success\",HELLO WORLD )\r\n */\r\n alertMessageDesktop(type, content, duration?) {\r\n this.message.create(type, this.languageService.translate(content), duration);\r\n }\r\n formatDate(date) {\r\n return this.datePipe.transform(date, 'dd/MM/yyyy');\r\n }\r\n /**\r\n * Active Loading\r\n * @param message\r\n * @param cssClass\r\n * @param spinner\r\n * @param duration\r\n * @param showBackdrop\r\n * @example\r\n * this.vhComponent.showLoading(\"\", \"transparent-loading\", null, 0, false).then(() => action())\r\n */\r\n private loading: any;\r\n public showLoading(\r\n message: string,\r\n cssClass?: 'current-loading' | 'transparent-loading',\r\n spinner?:\r\n | 'bubbles'\r\n | 'circles'\r\n | 'circular'\r\n | 'crescent'\r\n | 'dots'\r\n | 'lines'\r\n | 'lines-small',\r\n duration: number = 0,\r\n showBackdrop: boolean = true,\r\n hideLoading?: number,\r\n mode?: 'ios' | 'md'\r\n ) {\r\n return new Promise((resolve) => {\r\n this.loading = setTimeout(\r\n () => this.loadingCtrl.dismiss(),\r\n hideLoading || 30000\r\n );\r\n const option: any = { message, showBackdrop, duration };\r\n\r\n if (spinner) option['spinner'] = spinner;\r\n option['cssClass'] = cssClass ? cssClass : 'current-loading';\r\n if (mode) option['mode'] = mode;\r\n else option['mode'] = 'ios';\r\n this.loadingCtrl.create(option).then((loading) => {\r\n loading.present().then(() => resolve('Loading'));\r\n });\r\n });\r\n }\r\n public showLoadingNotDuration(\r\n message: string,\r\n cssClass?: 'current-loading' | 'transparent-loading',\r\n spinner?:\r\n | 'bubbles'\r\n | 'circles'\r\n | 'circular'\r\n | 'crescent'\r\n | 'dots'\r\n | 'lines'\r\n | 'lines-small',\r\n duration: number = 100000000,\r\n showBackdrop: boolean = true,\r\n\r\n mode?: 'ios' | 'md'\r\n ) {\r\n return new Promise((resolve) => {\r\n // this.loading = setTimeout(\r\n // () => this.loadingCtrl.dismiss(),\r\n // hideLoading\r\n // );\r\n const option: any = { message, showBackdrop, duration };\r\n\r\n if (spinner) option['spinner'] = spinner;\r\n option['cssClass'] = cssClass ? cssClass : 'current-loading';\r\n if (mode) option['mode'] = mode;\r\n else option['mode'] = 'ios';\r\n this.loadingCtrl.create(option).then((loading) => {\r\n loading.present().then(() => resolve('Loading'));\r\n });\r\n });\r\n }\r\n /**\r\n * Dismiss Loading\r\n * @param latency\r\n * @param data\r\n * @example\r\n * this.functionUIService.hideLoading(200)\r\n */\r\n public hideLoading(latency: number = 0, value: any = {}) {\r\n return new Promise((resolve, rejects) => {\r\n clearTimeout(this.loading);\r\n setTimeout(\r\n () =>\r\n this.loadingCtrl\r\n .dismiss(value)\r\n .then((res) => resolve(res))\r\n .catch((error) => {\r\n if (!this.loading) return;\r\n\r\n console.log(error);\r\n }),\r\n latency\r\n );\r\n }).catch(err => {\r\n console.log(err);\r\n });\r\n }\r\n\r\n\r\n /**\r\n * SEO\r\n * @param title\r\n * @param description\r\n * @param keywords\r\n */\r\n\r\n setSEO(title, description, keywords) {\r\n this.titleService.setTitle(title);\r\n this.metaTagService.addTags([\r\n { name: 'description', content: description },\r\n { name: 'keywords', content: keywords },\r\n { name: 'robots', content: 'index, follow' },\r\n { name: 'revisit - after', content: '1 days' },\r\n { name: 'content - language', content: 'vi' },\r\n { name: 'viewport', content: 'width=device-width, initial-scale=1' },\r\n { name: 'google', content: 'nositelinkssearchbox' },\r\n { charset: 'text/html; charset=utf-8' },\r\n ]);\r\n }\r\n\r\n initSEOFavicon(title, favIcon_img?, logo?, description?) {\r\n if (isPlatformBrowser(this.platformId)) {\r\n let favIcon: HTMLLinkElement = document.querySelector('#appIcon');\r\n favIcon.href = favIcon_img;\r\n if (title != '') this.titleService.setTitle(title);\r\n this.metaTagService.addTags([\r\n { property: 'og:image', itemprop: 'thumbnailUrl', content: logo },\r\n { name: 'robots', content: 'index, follow' },\r\n { name: 'revisit - after', content: '1 days' },\r\n { name: 'content - language', content: 'vi' },\r\n { name: 'description', content: description },\r\n { name: 'viewport', content: 'width=device-width, initial-scale=1' },\r\n { name: 'google', content: 'nositelinkssearchbox' },\r\n { charset: 'text/html; charset=utf-8' },\r\n ]);\r\n }\r\n }\r\n setFavicon(favIcon_img) {\r\n if (isPlatformBrowser(this.platformId)) {\r\n let favIcon: HTMLLinkElement = document.querySelector('#appIcon');\r\n favIcon.href = favIcon_img;\r\n this.metaTagService.addTags([\r\n { property: 'og:image', itemprop: 'thumbnailUrl', content: favIcon_img },\r\n ]);\r\n }\r\n }\r\n\r\n createNotification(\r\n type: string,\r\n title?: string,\r\n duration: number = 2000\r\n ): void {\r\n this.notification.create(type, title, '', {\r\n nzStyle: {\r\n top: '100px',\r\n fontWeight: 'bold',\r\n },\r\n nzCloseIcon: '',\r\n nzDuration: duration,\r\n });\r\n }\r\n /**\r\n * createNotification\r\n * @param type: 'success' || 'error' || 'warning' || 'info'\r\n * @param content: \"Có lỗi xảy ra, vui lòng thử lại\"\r\n * @example\r\n * this.createMessage('error', \"Có lỗi xảy ra, vui lòng thử lại\" , 1200);\r\n */\r\n createMessage(type: 'success' | 'error' | 'warning' | 'info', content: string, duration: number = 2000): void {\r\n // this.message.create(type, content, {\r\n // nzDuration: duration,\r\n // });\r\n\r\n this.translateService.get(content).subscribe((translatedMessage: string) => {\r\n this.nzMessageService.create(type, translatedMessage, { nzDuration: duration });\r\n });\r\n }\r\n\r\n nonAccentVietnamese(str) {\r\n if (!str) return '';\r\n str = str.toLowerCase();\r\n str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, 'a');\r\n str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, 'e');\r\n str = str.replace(/ì|í|ị|ỉ|ĩ/g, 'i');\r\n str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, 'o');\r\n str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, 'u');\r\n str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, 'y');\r\n str = str.replace(/đ/g, 'd');\r\n str = str.replace(/\\u0300|\\u0301|\\u0303|\\u0309|\\u0323/g, ''); // Huyền sắc hỏi ngã nặng\r\n str = str.replace(/\\u02C6|\\u0306|\\u031B/g, ''); // Â, Ê, Ă, Ơ, Ư\r\n str = str.replace(/,|\\+|\\//g, ''); // Remove commas, plus signs, and slashes\r\n return str.split(' ').join('-');\r\n }\r\n\r\n setUploadedFileURL(file) {\r\n this.uploadedFile = file;\r\n }\r\n\r\n getUploadedFileURL() {\r\n return this.uploadedFile;\r\n }\r\n\r\n /**\r\n * unsubscribe biến subscription và disconnect biến observer.\r\n *\r\n * @param _this đối tượng hiện tại\r\n */\r\n destroyAnimationVisible(_this) {\r\n if (_this.subscription) {\r\n _this.subscription.unsubscribe();\r\n _this.subscription = null;\r\n }\r\n if (_this.observer) {\r\n _this.observer.disconnect();\r\n _this.observer = undefined;\r\n }\r\n }\r\n\r\n /**\r\n * subscribe thay đổi của biến animationConfigChanged.\r\n * \r\n * - Cần thêm biến `observer: IntersectionObserver; // biến observer để theo dõi vị trí của element`\r\n * - Cần thêm biến `subscription: Subscription; // biến subscription để nghe biến animationConfigChanged`\r\n * - Nên đặt ở ngOnInit\r\n *\r\n * @param _this đối tượng hiện tại\r\n * @param setAnimationVisible hàm gọi setAnimationVisible()\r\n * @example\r\n * this.functionService.initAnimationVisible(this, () => { \r\n * this.functionService.setAnimationVisible(\r\n * this, \r\n * this.class[this.isItemVisible ? 'frame-products__products--item' : 'frame-products'], \r\n * `animation-${this.isItemVisible ? 1 : 0}`, \r\n * {\r\n * isRunOnce: this.config['animation-selected']?.run_once_animation_visible,\r\n * animationNumber: this.isItemVisible ? 1 : 0\r\n * }\r\n * ); \r\n * });\r\n */\r\n initAnimationVisible(_this, setAnimationVisible) {\r\n setAnimationVisible();\r\n\r\n if (_this.type != 'page') return;\r\n\r\n _this.subscription = _this.functionService.animationConfigChanged.subscribe((id: string) => {\r\n if (id == _this.data._id) {\r\n const animationType = _this.staticdata[_this.device + '_animation_type'];\r\n if (animationType == 'visible' && !_this.observer) {\r\n setAnimationVisible();\r\n }\r\n else if (_this.observer) {\r\n _this.observer.disconnect();\r\n _this.observer = undefined;\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * **Set hiệu ứng xuất hiện (visible)**\r\n *\r\n * *Lưu ý: có thể gọi ở ngOnInit và sau khi đã set this.staticdata (1 số frame/block/object có thể sẽ gọi sau khi load dữ liệu xong)*\r\n * - Các biến cần thêm\r\n * ```js\r\n * observer: IntersectionObserver; // biến observer để theo dõi vị trí của element\r\n * subscription: Subscription; // biến subscription để nghe biến animationConfigChanged\r\n * isItemVisible: boolean; // biến kiểm tra hiệu ứng khung có phải là hiệu ứng của ô hay không (Chỉ cho một số khung có ô con - Chỉ dùng cho hiệu ứng xuất hiện)\r\n * ```\r\n * - Thêm vào `constructor`:\r\n * ```js\r\n * constructor(\r\n * private element: ElementRef, // Dùng cho hàm setAnimationVisible trong functionService\r\n * private functionService: FunctionService,\r\n * ) { }\r\n * ```\r\n * - **Nên đặt ở ngOnInit** nếu không được thì **đặt sau khi load dữ liệu xong**\r\n *\r\n * @param _this đối tượng hiện tại\r\n * @param targetObject object class sẽ set các thuộc tính\r\n * @param animationConfig tên bộ animation (VD: 'animation-0') (bộ này cùng cấp với id) chứa thuộc tính ['--0-animation-delay'], ['--0-animation'],... hoặc cùng cấp với `targetObject`\r\n * @param isRunOnce :boolean chỉ cho chạy một lần là khi load trang\r\n * @param animationNumber : Nên cùng cấp với `targetObject`\r\n * @example\r\n * this.functionService.initAnimationVisible(this, () => { \r\n * this.functionService.setAnimationVisible(\r\n * this, \r\n * this.class[this.isItemVisible ? 'frame-products__products--item' : 'frame-products'], \r\n * `animation-${this.isItemVisible ? 1 : 0}`, \r\n * {\r\n * isRunOnce: this.config['animation-selected']?.id == '000075',\r\n * animationNumber: this.isItemVisible ? 1 : 0\r\n * }\r\n * ); \r\n * });\r\n */\r\n setAnimationVisible(_this, targetObject, animationConfig, options: { animationNumber?: number; isRunOnce?: boolean } = {}) {\r\n if (!_this.data || !_this.staticdata) {\r\n return;\r\n }\r\n const {\r\n animationNumber = 0,\r\n isRunOnce = false\r\n } = options;\r\n\r\n // Trường hợp không có run_once_animation_visible thì mặc định là true\r\n _this.config['animation-selected'].run_once_animation_visible ??= true;\r\n\r\n const animationType = _this.staticdata[_this.device + '_animation_type'];\r\n // Kiểm tra xem element đã render nếu render rồi thì thêm hiệu ứng animation khi xuất hiện\r\n if (animationType == 'visible') {\r\n targetObject['opacity'] = '0';\r\n targetObject['visibility'] = 'hidden';\r\n\r\n const isComponentHasItem = ['AtwFrameProducts', 'AtwFrameRepeat', 'AtwFrameProductByCategory', 'AtwFrameProductByCategoryViewMore', 'AtwFrameProductRelate', 'AtwFrameProductsViewed', 'AtwFrameProductsFavorited', 'AtwFrameFoods', 'AtwFrameFoodsByCategory', 'AtwFrameFoodByCategoryViewMore', 'AtwFrameFoodsRelate', 'AtwFrameNews', 'AtwFrameNewsCategory', 'AtwFrameNewsByCategoryViewMore', 'AtwFrameNewsRelate', 'AtwFrameWebsite', 'AtwFrameWebsiteByCategory', 'AtwFrameWebsiteByCategoryViewMore', 'AtwFrameApp', 'AtwFrameAppByCategory', 'AtwFrameAppByCategoryViewMore', 'AtwFrameServices', 'AtwFrameServicesCategory', 'AtwFrameServiceByCategoryViewMore', 'AtwFrameServiceRelate', 'AtwFrameRecruiment', 'AtwFrameHotel', 'AtwFrameHotelByCategory', 'AtwFrameHotelByCategoryViewMore', 'AtwFrameHotelRelate', 'AtwFrameRoom', 'AtwFrameRoomByCategory', 'AtwFrameRoomByCategoryViewMore', 'AtwFrameRoomRelate'].includes(_this.data.component);\r\n\r\n _this.observer = new IntersectionObserver((entries, observerInstance) => {\r\n entries.forEach((entry) => {\r\n // Kiểm tra nếu entry trong vùng có thể nhìn thấy (trong viewport)\r\n if (entry.isIntersecting) {\r\n if (isPlatformBrowser(this.platformId)) {\r\n const ele = _this.element.nativeElement;\r\n if (!ele) {\r\n console.error('Element not found for animation visible.', _this.data || {});\r\n return;\r\n }\r\n\r\n const objectElements = ele.querySelectorAll(`[id=\"${_this.data._id}\"]`);\r\n // const objectElements = document.querySelectorAll<HTMLElement>(`[id=\"${_this.data._id}\"]`);\r\n\r\n // dùng settimeout tương đương delay cho lần animation đầu tiên (đã set ẩn khi mới xuất hiện lần đầu ở ngOnInit)\r\n const animationData = _this.staticdata[_this.device + '_animation']['animation-' + animationNumber];\r\n const delay = animationData[`--${animationNumber}-animation-delay`] || '0s';\r\n if (objectElements.length > 0) {\r\n // reset animation\r\n if (objectElements.length == 1) {\r\n if (isComponentHasItem && _this.isItemVisible) {\r\n setTimeout(async () => {\r\n const objectItemElements = ele.querySelectorAll(`.animation-${animationNumber}[id^=\"cell_frame_${_this.data._id}_\"]`) as NodeListOf<HTMLElement>;\r\n // const objectItemElements = document.querySelectorAll<HTMLElement>(`.animation-${animationNumber}[id^=\"cell_frame_${_this.data._id}_\"]`);\r\n\r\n for (let [index, eItem] of Array.from(objectItemElements).entries()) {\r\n eItem.style.opacity = '0';\r\n eItem.style.visibility = 'hidden';\r\n\r\n // Chờ delayItem giây trước khi chạy\r\n await new Promise((resolve) => setTimeout(resolve, parseFloat(animationData[`--${animationNumber}-animation-delay-shared`] || '0s') * 1000));\r\n\r\n eItem.style.opacity = '1';\r\n eItem.style.visibility = 'visible';\r\n\r\n eItem.style.animation = 'none';\r\n const offsetHeight = eItem.offsetHeight;\r\n (window as any).offsetHeight = offsetHeight; // Lưu tạm để build không bị mất\r\n eItem.style.animation = animationData[`--${animationNumber}-animation`];\r\n\r\n // Sau khi animation xong, dừng observer cho phần tử này\r\n if (isRunOnce || _this.config['animation-selected']?.run_once_animation_visible) {\r\n observerInstance.unobserve(entry.target);\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n objectElements.forEach(async e => {\r\n setTimeout(() => {\r\n targetObject['opacity'] = '1';\r\n targetObject['visibility'] = 'visible';\r\n e.style.animation = 'none';\r\n const offsetHeight = e.offsetHeight;\r\n (window as any).offsetHeight = offsetHeight; // Lưu tạm để build không bị mất\r\n e.style.animation = animationData[`--${animationNumber}-animation`];\r\n\r\n // Sau khi animation xong, dừng observer cho phần tử này\r\n if (isRunOnce || _this.config['animation-selected']?.run_once_animation_visible) {\r\n observerInstance.unobserve(entry.target);\r\n }\r\n }, parseFloat(delay) * 1000);\r\n });\r\n }\r\n } else {\r\n setTimeout(() => {\r\n targetObject['opacity'] = '1';\r\n targetObject['visibility'] = 'visible';\r\n const element = entry.target.querySelector<HTMLElement>(`[id=\"${_this.data._id}\"]`);\r\n element.style.animation = 'none';\r\n const offsetHeight = element.offsetHeight;\r\n (window as any).offsetHeight = offsetHeight; // Lưu tạm để build không bị mất\r\n element.style.animation = animationData[`--${animationNumber}-animation`];\r\n\r\n // Sau khi animation xong, dừng observer cho phần tử này\r\n if (isRunOnce || _this.config['animation-selected']?.run_once_animation_visible) {\r\n observerInstance.unobserve(entry.target);\r\n }\r\n }, parseFloat(delay) * 1000);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n targetObject['opacity'] = '0';\r\n targetObject['visibility'] = 'hidden';\r\n }\r\n });\r\n });\r\n\r\n // observing phần tử objectElement\r\n if (_this.element?.nativeElement) _this.observer.observe(_this.element.nativeElement);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n setCity(item) {\r\n this.city = item;\r\n }\r\n getCity() {\r\n return this.city;\r\n }\r\n\r\n setProvince(item) {\r\n this.province = item;\r\n }\r\n\r\n getProvince() {\r\n return this.province;\r\n }\r\n\r\n setDistrict(item) {\r\n this.district = item\r\n }\r\n\r\n getDistrict() {\r\n return this.district;\r\n }\r\n\r\n /**\r\n * \r\n * hàm này để tính toán lại width height của frame khi thêm vào block để hiển thị đúng với kích thước của block\r\n * ví dụ block 1000px thì frame sẽ là 0.8 * 1000 = 800px là 80% kích thước của block sẽ đẹp hơn\r\n * \r\n * @param dimension trường cần tính toán width hoặc height\r\n * @param scale tỉ lệ sau khi thay đổi kích thước \r\n * @param device thiết bị cần tính toán\r\n * @returns \r\n */\r\n calculateDimension(dimension: 'height' | 'width', scale: number, device: string, blockChoosing: any, objectChoosing: any) {\r\n const itemParent = blockChoosing || objectChoosing;\r\n if (itemParent && itemParent[`${device}_config`]?.dimension?.[dimension]) {\r\n return Number((itemParent[`${device}_config`].dimension[dimension] * scale).toFixed());\r\n }\r\n return 100;\r\n }\r\n\r\n /**\r\n * \r\n * hàm này để tính toán lại width height của frame khi thêm vào block để hiển thị đúng với kích thước của block\r\n * ví dụ block 1000px thì frame sẽ là 0.8 * 1000 = 800px là 80% kích thước của block sẽ đẹp hơn\r\n * \r\n * @param dimension trường cần tính toán width hoặc height\r\n * @param scale tỉ lệ sau khi thay đổi kích thước \r\n * @param device thiết bị cần tính toán\r\n * @returns \r\n */\r\n calculateWidthHeightByDimension(dimension: 'height' | 'width', scale: number, device: string, blockChoosing: any, objectChoosing: any) {\r\n const itemParent = blockChoosing || objectChoosing;\r\n if (itemParent && itemParent[`${device}_config`]?.dimension?.[dimension]) {\r\n return `${(itemParent[`${device}_config`].dimension[dimension] * scale).toFixed()}px`;\r\n }\r\n return '100px';\r\n }\r\n\r\n /**\r\n * Hàm này để lấy màu ngẫu nhiên\r\n * ví dụ: #FFFFFF\r\n */\r\n getRandomColor(): string {\r\n const letters: string = '0123456789ABCDEF';\r\n let color: string = '#';\r\n for (let i: number = 0; i < 6; i++) {\r\n color += letters[Math.floor(Math.random() * 16)];\r\n }\r\n return color;\r\n }\r\n\r\n\r\n handleNextPrevFrame(_this, direction: 'next' | 'prev', classTransition: string): void {\r\n\r\n if (_this.isSliding || _this.type == 'page' || _this.type == 'admin' || !_this.type || !_this.products2D?.length || _this.listProducts.length < _this.rowNumber * _this.colNumber) return;\r\n // trường hợp frame thì xem _this.currentIndex = số group của products2D\r\n _this.isSliding = true;\r\n const lastItems = _this.products2D[_this.groupNumber - 1]?.length\r\n if (!lastItems) return;\r\n const widthCol = _this.widthOfFrame / _this.colNumber\r\n const lastCells = lastItems < _this.colNumber ? lastItems : _this.colNumber;\r\n clearInterval(_this.setinterval);\r\n switch (direction) {\r\n case 'next':\r\n if (_this.currentIndex < _this.groupNumber) {\r\n _this.currentIndex++;\r\n _this.translateX = _this.oldTranslateX -= _this.currentIndex == _this.groupNumber ? widthCol * lastCells : _this.widthOfFrame;\r\n _this.isSliding = false;\r\n _this.isLastLeft = false;\r\n if (_this.currentIndex == _this.groupNumber && !_this.isLoop) {\r\n _this.isLastRight = true;\r\n }\r\n this.autoPlay(_this, classTransition)\r\n } else {\r\n if (!_this.isLoop) {\r\n _this.isSliding = false;\r\n return;\r\n }\r\n switch (_this.loop_method) {\r\n case 'back_to_start': // back_to_start thì trượt về đầu\r\n _this.currentIndex = 1;\r\n _this.translateX = _this.oldTranslateX = 0;\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n break;\r\n case 'infinity': // infinity thì trượt tiếp\r\n _this.currentIndex++;\r\n if (_this.currentIndex == _this.groupNumber + 1) {\r\n _this.translateX = _this.oldTranslateX -= _this.widthOfFrame + ((_this.colNumber - lastCells) * widthCol)\r\n _this.isSliding = false;\r\n } else {\r\n _this.class[classTransition]['transition'] = 'none';\r\n _this.translateX = _this.oldTranslateX = 0;\r\n _this.currentIndex = 2;\r\n setTimeout(() => {\r\n _this.class[classTransition]['transition'] = _this.transition || '0.4s';\r\n _this.translateX = _this.oldTranslateX -= _this.currentIndex == _this.groupNumber ? widthCol * lastCells : _this.widthOfFrame\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n }, 0);\r\n }\r\n break;\r\n }\r\n }\r\n break;\r\n case 'prev':\r\n if (_this.currentIndex > 1) {\r\n _this.currentIndex--;\r\n if (_this.currentIndex == _this.groupNumber - 1) {\r\n _this.translateX = _this.oldTranslateX += widthCol * lastCells\r\n } else if (_this.currentIndex == _this.groupNumber) {\r\n _this.translateX = _this.oldTranslateX += _this.widthOfFrame + ((_this.colNumber - lastCells) * widthCol)\r\n } else {\r\n _this.translateX = _this.oldTranslateX += _this.widthOfFrame\r\n }\r\n\r\n if (_this.currentIndex == 1 && !_this.isLoop) {\r\n _this.isLastLeft = true;\r\n }\r\n\r\n _this.isLastRight = false;\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n } else {\r\n if (!_this.isLoop) {\r\n _this.isSliding = false;\r\n return;\r\n }\r\n switch (_this.loop_method) {\r\n case 'back_to_start': {\r\n _this.currentIndex = _this.groupNumber;\r\n _this.translateX = _this.oldTranslateX -= ((_this.groupNumber - 2) * _this.widthOfFrame) + (lastCells * widthCol)\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n break;\r\n }\r\n case 'infinity': {\r\n _this.currentIndex = _this.groupNumber;\r\n _this.class[classTransition]['transition'] = 'none';\r\n _this.translateX = _this.oldTranslateX -= _this.groupNumber * _this.widthOfFrame\r\n setTimeout(() => {\r\n _this.class[classTransition]['transition'] = _this.transition || '0.4s';\r\n _this.translateX = _this.oldTranslateX += _this.widthOfFrame + ((_this.colNumber - lastCells) * widthCol)\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n }, 0);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n break;\r\n }\r\n\r\n }\r\n\r\n handleNextPrevCol(_this, direction: \"next\" | \"prev\", classTransition: string): void {\r\n if (_this.isSliding || _this.type == 'page' || _this.type == 'admin' || !_this.type || !_this.products2D?.length || _this.listProducts.length < _this.rowNumber * _this.colNumber) return;\r\n _this.isSliding = true; // biến này để tránh người dùng click quá nhanh\r\n let colLastGroup = _this.products2D[_this.groupNumber - 1].length < _this.colNumber ? _this.products2D[_this.groupNumber - 1].length : _this.colNumber;\r\n if (isPlatformBrowser(this.platformId)) {\r\n const element: any = document.querySelector(`[id=\"cell_frame_${_this.data._id}_0\"]`);\r\n const widthCol = element.offsetWidth + Number(_this.class[classTransition]['gap'].replace('px', ''));\r\n const lastItems = _this.products2D[_this.groupNumber - 1].length;\r\n const lastCells = lastItems < _this.colNumber ? lastItems : _this.colNumber;\r\n let addClick = _this.loop_method == 'infinity' ? lastCells < _this.colNumber ? 1 : _this.colNumber : 0;\r\n let maxClickCount = (((_this.groupNumber - 2) * _this.colNumber) + colLastGroup) + 1 + addClick\r\n clearInterval(_this.setinterval);\r\n switch (direction) {\r\n case 'next': {\r\n if (_this.currentIndex < maxClickCount) {\r\n _this.currentIndex++;\r\n if (_this.currentIndex == maxClickCount && addClick == 1) {\r\n _this.translateX = _this.oldTranslateX -= _this.widthOfFrame + ((_this.colNumber - lastCells) * widthCol)\r\n } else _this.translateX = _this.oldTranslateX -= widthCol;\r\n\r\n if (_this.currentIndex == maxClickCount - addClick && !_this.isLoop) {\r\n _this.isLastRight = true;\r\n }\r\n _this.isLastLeft = false;\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n } else {\r\n if (!_this.isLoop) return; // nếu không cho loop thì dừng lại\r\n switch (_this.loop_method) {\r\n case 'back_to_start': // back_to_start thì trượt về đầu\r\n _this.currentIndex = 1;\r\n _this.translateX = _this.oldTranslateX = 0;\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n break;\r\n case 'infinity': // infinity thì trượt tiếp\r\n _this.currentIndex++;\r\n if (_this.currentIndex == maxClickCount + 1) {\r\n _this.class[classTransition]['transition'] = 'none';\r\n _this.translateX = _this.oldTranslateX = 0;\r\n _this.currentIndex = 2;\r\n setTimeout(() => {\r\n _this.class[classTransition]['transition'] = _this.transition || '0.4s';\r\n _this.translateX = _this.oldTranslateX -= widthCol;\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n }, 0);\r\n }\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n\r\n case 'prev':\r\n if (_this.currentIndex > 1) {\r\n _this.currentIndex--;\r\n _this.translateX = _this.oldTranslateX +=\r\n (_this.currentIndex == maxClickCount - 1 && lastCells != _this.colNumber && _this.loop_method == 'infinity')\r\n ?\r\n _this.widthOfFrame + ((_this.colNumber - lastCells) * widthCol)\r\n :\r\n widthCol;\r\n\r\n if (_this.currentIndex == 1 && !_this.isLoop) {\r\n _this.isLastLeft = true;\r\n }\r\n _this.isLastRight = false;\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n } else {\r\n if (!_this.isLoop) return; // nếu không cho loop thì dừng lại\r\n switch (_this.loop_method) {\r\n case 'back_to_start': {\r\n _this.currentIndex = maxClickCount;\r\n _this.translateX = _this.oldTranslateX -= (maxClickCount - 1) * widthCol\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n break;\r\n }\r\n case 'infinity': {\r\n _this.currentIndex = maxClickCount - 1;\r\n _this.class[classTransition]['transition'] = 'none';\r\n _this.translateX = _this.oldTranslateX -= _this.groupNumber * _this.widthOfFrame\r\n setTimeout(() => {\r\n _this.class[classTransition]['transition'] = _this.transition || '0.4s';\r\n _this.translateX = _this.oldTranslateX += (_this.currentIndex == maxClickCount - 1 && lastCells != _this.colNumber) ? _this.widthOfFrame + ((_this.colNumber - lastCells) * widthCol) : widthCol;\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n }, 0);\r\n break;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n onMouseDonw(_this, event, type: 'mouse' | 'touch', classTransition: string) {\r\n const { is_swipe } = _this.config[classTransition];\r\n if (_this.type == 'page' || _this.type == 'admin' || !_this.type || !is_swipe) return;\r\n _this.initialMouseX = type == 'mouse' ? event.clientX : event.touches[0].clientX;\r\n _this.onMouseDown = true;\r\n\r\n _this.class[classTransition]['transition'] = '0s';\r\n }\r\n\r\n onMouseMove(_this, event, type: 'mouse' | 'touch') {\r\n if (_this.type == 'page' || _this.type == 'admin' || !_this.type) return;\r\n if (_this.onMouseDown) {\r\n const movementX = type == 'mouse' ? event.movementX : event.touches[0].clientX - _this.currentMouseX;\r\n if (type == 'touch') {\r\n _this.currentMouseX = event.touches[0].clientX;\r\n }\r\n if (_this.isLastLeft && movementX > 0 || _this.isLastRight && movementX < 0 || _this.isSliding) {\r\n return;\r\n }\r\n _this.translateX += movementX;\r\n _this.isSwiping = true;\r\n }\r\n }\r\n\r\n onMouseUp(_this, event, type: 'mouse' | 'touch', classTransition: string) {\r\n const { is_swipe } = _this.config[classTransition];\r\n if (_this.type == 'page' || _this.type == 'admin' || !_this.type || !is_swipe || !_this.onMouseDown) return;\r\n const finalMouseX = type == 'mouse' ? event.clientX : event.changedTouches[0].clientX;\r\n const deltaX = finalMouseX - _this.initialMouseX\r\n if (deltaX > 0 && !_this.isLastLeft) {\r\n _this.handlePrev();\r\n } else if (deltaX < 0 && !_this.isLastRight) {\r\n _this.handleNext();\r\n }\r\n _this.class[classTransition]['transition'] = _this.transition || '0.4s';\r\n _this.onMouseDown = false;\r\n _this.isSwiping = false;\r\n }\r\n\r\n onMouseLeave(_this, event) {\r\n if (_this.type == 'page' || _this.type == 'admin' || !_this.type) return;\r\n if (_this.onMouseDown) {\r\n _this.onMouseUp(event, 'mouse');\r\n }\r\n }\r\n\r\n\r\n convertToMilisecond(time: string): number {\r\n // Check if time is undefined\r\n if (time === undefined) {\r\n throw new Error('Time is undefined');\r\n }\r\n\r\n // Remove 's' from the end of the string\r\n time = time.replace('s', '');\r\n\r\n // ex: time is 0.4 => 400, 1 => 1000\r\n const timeArr = time.split('.');\r\n const second = parseInt(timeArr[0]);\r\n const milisecond = timeArr[1] ? parseInt(timeArr[1]) * 100 : 0;\r\n return second * 1000 + milisecond;\r\n }\r\n\r\n\r\n /**\r\n * Hàm này để thêm set up default cho đối tượng hình ảnh\r\n * @param _this \r\n */\r\n addSetUpImg(_this) {\r\n _this.vhQueryAutoWeb.addSetup({\r\n upload_image: {\r\n compress_type: 'compress-screen',\r\n display: 'shared',\r\n source: \"device\",\r\n },\r\n type: 'single_image'\r\n }).then((res: any) => {\r\n _this.setupSingleImage = res.data;\r\n })\r\n\r\n _this.vhQueryAutoWeb.addSetup({\r\n upload_image: {\r\n compress_type: 'compress-screen',\r\n source: \"device\",\r\n },\r\n type: 'category_image'\r\n }).then((res: any) => {\r\n _this.setupCategoryImage = res.data;\r\n })\r\n\r\n _this.vhQueryAutoWeb.addSetup({\r\n upload_image: {\r\n compress_type: 'compress-screen',\r\n source: \"device\",\r\n },\r\n type: 'product_image'\r\n }).then((res: any) => {\r\n _this.setupProductImage = res.data;\r\n })\r\n\r\n _this.vhQueryAutoWeb.addSetup({\r\n upload_image: {\r\n compress_type: 'compress-screen',\r\n source: \"device\",\r\n },\r\n type: 'food_image'\r\n }).then((res: any) => {\r\n _this.setupFoodImage = res.data;\r\n })\r\n _this.vhQueryAutoWeb.addSetup({\r\n upload_image: {\r\n compress_type: 'compress-screen',\r\n source: \"device\",\r\n },\r\n type: 'news_image'\r\n }).then((res: any) => {\r\n _this.setupNewsImage = res.data;\r\n })\r\n\r\n _this.vhQueryAutoWeb.addSetup({\r\n upload_image: {\r\n compress_type: 'compress-screen',\r\n source: \"device\",\r\n },\r\n type: 'service_image'\r\n }).then((res: any) => {\r\n _this.setupServiceImage = res.data;\r\n })\r\n _this.vhQueryAutoWeb.addSetup({\r\n upload_image: {\r\n compress_type: 'compress-screen',\r\n source: \"device\",\r\n },\r\n type: 'website_image'\r\n }).then((res: any) => {\r\n _this.setupWebsiteImage = res.data;\r\n })\r\n _this.vhQueryAutoWeb.addSetup({\r\n upload_image: {\r\n compress_type: 'compress-screen',\r\n source: \"device\",\r\n },\r\n type: 'combo_image'\r\n }).then((res: any) => {\r\n _this.setupComboImage = res.data;\r\n })\r\n _this.vhQueryAutoWeb.addSetup({\r\n upload_image: {\r\n compress_type: 'compress-screen',\r\n source: \"device\",\r\n },\r\n type: 'topping_image'\r\n }).then((res: any) => {\r\n _this.setupToppingImage = res.data;\r\n })\r\n }\r\n\r\n\r\n /**\r\n * Hàm này tính chiều cao của frame\r\n * @param prevObject đối tượng cần tính\r\n * @param device thiết bị\r\n */\r\n getHeightFrame(prevObject: any, device: any) {\r\n let rows = 1; // Giá trị mặc định\r\n\r\n // Kiểm tra nếu prevObject tồn tại và có `resize_field`\r\n if (!prevObject || !prevObject.resize_field) {\r\n return rows * this.getHeight(prevObject, device); // Trả về giá trị mặc định nếu không có `resize_field`\r\n }\r\n\r\n const deviceConfig = prevObject[device + '_config'];\r\n const staticData = prevObject['staticdata'];\r\n const deviceClass = prevObject[device + '_class'];\r\n\r\n switch (prevObject.resize_field) {\r\n case 'frame-products': {\r\n // Kiểm tra nếu `deviceConfig` và cấu hình `frame-products` tồn tại\r\n if (deviceConfig && deviceConfig['frame-products__products']?.rows) {\r\n rows = deviceConfig['frame-products__products'].rows;\r\n const dimensionHeight = parseFloat(deviceConfig?.dimension?.height) || 0;\r\n const gap = parseFloat(deviceClass['frame-products__products'].gap) || 0;\r\n const paginationHeight = parseFloat(deviceConfig?.dimension_pagination?.height) || 0;\r\n const marginTopPaginationOptional = deviceConfig?.type_display == 'pagination' ? (parseFloat(deviceClass['frame-products__pagination']['margin-top']) || 0) : 0;\r\n // const marginTopPaginationOptional = parseFloat(deviceClass['frame-products__pagination']['margin-top']) || 0;\r\n const paddingTop = parseFloat(deviceClass?.['frame-products']?.['padding-top']) || 0;\r\n const paddingBottom = parseFloat(deviceClass?.['frame-products']?.['padding-bottom']) || 0;\r\n const padding = paddingTop + paddingBottom;\r\n let height = rows * dimensionHeight + (rows - 1) * gap + padding + paginationHeight + marginTopPaginationOptional;\r\n return height;\r\n }\r\n break;\r\n }\r\n case 'frame-cart-products': {\r\n // Kiểm tra nếu `deviceConfig` và cấu hình `frame-cart-products` tồn tại\r\n if (deviceConfig && deviceConfig['frame-cart-products__products']?.rows) {\r\n rows = deviceConfig['frame-cart-products__products'].rows;\r\n const dimensionHeight = parseFloat(deviceConfig?.dimension?.height) || 0;\r\n const gap = parseFloat(deviceClass['frame-cart-products__products'].gap) || 0;\r\n let height = rows * dimensionHeight + (rows - 1) * gap;\r\n return height;\r\n }\r\n break;\r\n }\r\n case 'frame-product-category': {\r\n // Kiểm tra nếu `deviceConfig` tồn tại\r\n if (deviceConfig?.rows) {\r\n rows = deviceConfig.rows;\r\n const dimensionHeight = parseFloat(deviceConfig?.dimension?.height) || 0;\r\n const gap = parseFloat(deviceClass['frame-product-category__list'].gap) || 0;\r\n const paginationHeight = parseFloat(deviceConfig?.dimension_pagination?.height) || 0;\r\n const marginTopPaginationOptional = deviceConfig?.type_display == 'pagination' ? (parseFloat(deviceClass['frame-product-category__pagination']['margin-top']) || 0) : 0;\r\n // const marginTopPaginationOptional = parseFloat(deviceClass['frame-product-category__pagination']['margin-top']) || 0;\r\n // const padding = parseFloat(deviceClass['frame-product-category__list']['padding-bottom']) + parseFloat(deviceClass['frame-product-category__list']['padding-top']) || 0;\r\n const paddingTop = parseFloat(deviceClass?.['frame-product-category__list']?.['padding-top']) || 0;\r\n const paddingBottom = parseFloat(deviceClass?.['frame-product-category__list']?.['padding-bottom']) || 0;\r\n const padding = paddingTop + paddingBottom;\r\n // Tính toán chiều cao\r\n let height = rows * dimensionHeight + (rows - 1) * gap + padding + paginationHeight + marginTopPaginationOptional;\r\n return height;\r\n }\r\n break;\r\n }\r\n case 'frame-categories': {\r\n if (deviceConfig && deviceConfig['frame-categories__products']?.rows) {\r\n rows = deviceConfig['frame-categories__products'].rows;\r\n const dimensionHeight = parseFloat(deviceConfig?.dimension?.height) || 0;\r\n const gap = parseFloat(deviceClass['frame-categories__products'].gap) || 0;\r\n let height = rows * dimensionHeight + (rows - 1) * gap;\r\n return height;\r\n }\r\n break;\r\n // // Kiểm tra nếu `deviceConfig` và cấu hình `frame-categories` tồn tại\r\n // if (deviceConfig && deviceConfig['frame-categories__products']?.rows) {\r\n // rows = deviceConfig['frame-categories__products'].rows;\r\n // }\r\n // break;\r\n }\r\n case 'frame-replied': {\r\n // Kiểm tra nếu `deviceConfig` và cấu hình `frame-categories` tồn tại\r\n // if (deviceConfig && staticData?.initquantity) {\r\n // rows = staticData?.initquantity;\r\n // }\r\n rows = 1\r\n break;\r\n }\r\n case 'frame-category-detail':\r\n case 'frame-reply-comment':\r\n case 'frame-collapse':\r\n case 'block-tabs':\r\n case 'frame-blank':\r\n case 'frame-banner':\r\n case 'frame-product-detail': {\r\n rows = 1;\r\n break;\r\n }\r\n default: {\r\n rows = 2;\r\n }\r\n }\r\n return rows * this.getHeight(prevObject, device);\r\n }\r\n\r\n // Hàm lấy vị trí của object dựa trên thiết bị và ID của dữ liệu\r\n getPos(block, device, positionId) {\r\n return block[`${device}_position_${positionId}`] || { top: 0, left: 0 };\r\n }\r\n // Hàm lấy chiều rộng của object dựa trên cấu hình thiết bị\r\n getWidth(block, device) {\r\n return block[`${device}_config`]?.dimension?.width || 0;\r\n }\r\n // Hàm lấy chiều cao của object dựa trên cấu hình thiết bị\r\n getHeight(block, device) {\r\n return block[`${device}_config`]?.dimension?.height || 0;\r\n }\r\n\r\n /**\r\n * Hàm này tính toán chuyển đổi margin và lọc các phần tử chồng lấn\r\n * \r\n * @param objects Mảng đối tượng\r\n * @param device Thiết bị\r\n * \r\n * @returns Trả về marginData: Mảng các phần tử có thuộc tính marginTop và marginLeft\r\n */\r\n calculateObjects(objects, device) {\r\n const marginData = [];\r\n // Hàm tính toán vị trí của object hiện tại dựa trên object trước đó\r\n const calculatePosition = (currentPos, prevObject) => {\r\n if (!prevObject) {\r\n // Trường hợp object đầu tiên, không có object trước đó\r\n return {\r\n top: parseFloat(currentPos.top) || 0,\r\n left: parseFloat(currentPos.left) || 0,\r\n };\r\n }\r\n\r\n const prevPosition = this.getPos(prevObject, device, (prevObject?.id_page || prevObject?.id_block || prevObject?.id_object)); // Lấy vị trí của object trước đó\r\n const prevHeight = getPrevHeight(prevObject); // Lấy chiều cao của object trước đó\r\n\r\n // Tính toán vị trí hiện tại dựa vào vị trí và chiều cao object trước đó\r\n const left = parseFloat(currentPos.left) || 0;\r\n const top = parseFloat(currentPos.top) - (prevHeight + parseFloat(prevPosition.top) || 0);\r\n return { top, left };\r\n };\r\n\r\n // Hàm lấy chiều cao của object trước đó, có kiểm tra xem nó có phải 'frame' không\r\n const getPrevHeight = (prevObject) => {\r\n if (prevObject.otype === 'frame' || prevObject.component?.toLowerCase().includes('frame')) {\r\n return this.getHeightFrame(prevObject, device)\r\n }\r\n return this.getHeight(prevObject, device);\r\n };\r\n\r\n // Duyệt qua từng object để tính toán margin và xác định chồng lấn\r\n objects.forEach((object, index) => {\r\n const currentPosition = this.getPos(object, device, (object?.id_page || object?.id_block || object?.id_object)); // Lấy vị trí hiện tại\r\n const prevObject = index > 0 ? objects[index - 1] : null; // Lấy object trước đó (nếu có)\r\n\r\n // Tính toán vị trí top và left cho object hiện tại\r\n const { top: currentTop, left: currentLeft } = calculatePosition(currentPosition, prevObject);\r\n\r\n // Lưu lại margin của object hiện tại\r\n marginData.push({\r\n _id: object._id,\r\n marginTop: currentTop,\r\n marginLeft: currentLeft,\r\n });\r\n });\r\n\r\n // Trả về dữ liệu margin và các nhóm chồng lấn\r\n return marginData;\r\n }\r\n\r\n // Hàm kiểm tra hai đối tượng có chồng lấn trực tiếp không\r\n private isOverlapping(el1: any, el2: any, device: any): boolean {\r\n const [p1, p2] = [\r\n this.getPos(el1, device, el1?.id_page || el1?.id_block || el1?.id_object),\r\n this.getPos(el2, device, el2?.id_page || el2?.id_block || el2?.id_object),\r\n ];\r\n return (\r\n Number(p1.left) < Number(p2.left) + this.getWidth(el2, device) &&\r\n Number(p2.left) < Number(p1.left) + this.getWidth(el1, device)\r\n );\r\n }\r\n\r\n // Hàm kiểm tra xem hai đối tượng có phụ thuộc qua trung gian không\r\n private isDependent(el1: any, el2: any, objects: any[], device: any): boolean {\r\n // Kiểm tra tất cả các phần tử ở giữa `el1` và `el2`\r\n return objects.some(\r\n (middleEl, idx) =>\r\n idx > objects.indexOf(el1) &&\r\n idx < objects.indexOf(el2) &&\r\n this.isOverlapping(el1, middleEl, device) &&\r\n this.isOverlapping(middleEl, el2, device)\r\n );\r\n }\r\n\r\n // Hàm tìm phần tử không phụ thuộc đầu tiên sau `index`\r\n private condition(\r\n el: any,\r\n index: number,\r\n device: any,\r\n indexDepend: number,\r\n isNegative: boolean,\r\n objects: any[],\r\n isFirstElement: boolean // Thêm tham số để kiểm tra phần tử đầu tiên\r\n ): boolean {\r\n const isDependWithElement = indexDepend !== -1 && this.isOverlapping(objects[indexDepend], el, device) //kiểm tra sự chồng lấn với object flag\r\n return (\r\n ((isFirstElement && isDependWithElement) || !this.isOverlapping(objects[index], el, device)) && // Không chồng lấn trực tiếp\r\n (!isNegative || !this.isDependent(objects[index], el, objects, device)) && // Nếu `isNegative` = true, kiểm tra không phụ thuộc gián tiếp\r\n (indexDepend === -1 || isDependWithElement || this.isDependent(objects[indexDepend], el, objects, device)) // Phải chồng lấn với `indexDepend` hoặc phụ thuộc vào `indexDepend`\r\n );\r\n }\r\n\r\n /**\r\n * Tìm kiếm phần tử chồng lấn gần nhất phía sau của một phần tử trong danh sách.\r\n * @param objects Danh sách các đối tượng.\r\n * @param index Chỉ số của phần tử trong danh sách.\r\n * @param indexDepend Chỉ số của phần cần tử phụ thuộc trong danh sách.\r\n * @param device Thiết bị.\r\n * @param isNegative Chỉ số xác định phần tử phụ thuộc vào phần tử đầu tiên trong đệ quy.\r\n * @return Phần tử chồng lấn gần nhất phía sau và vẫn phụ thuộc vào phần tử. Nếu không tìm thấy, trả về null.\r\n */\r\n findNonDependentNearest(\r\n objects: any[],\r\n index: number,\r\n device: any,\r\n indexDepend: any,\r\n isNegative: any\r\n ) {\r\n // Tìm phần tử đầu tiên thỏa mãn điều kiện\r\n const firstNonDependent = objects.slice(index + 1).find((el, idx) =>\r\n this.condition(el, index, device, indexDepend, isNegative, objects, idx === 0)\r\n );\r\n // Trả về `_id` và `index` nếu tìm thấy; nếu không, trả về `null`\r\n return firstNonDependent ? { _id: firstNonDependent._id, index: objects.indexOf(firstNonDependent) } : null;\r\n }\r\n\r\n\r\n /**\r\n * Hàm này được gọi đệ quy để điều chỉnh margin của các phần tử trong danh sách.\r\n * Nó sẽ tìm kiếm các phần tử không phụ thuộc nhau và điều chỉnh giá trị marginTop cho chúng.\r\n * Chiều cao delta của từng đối tượng trong danh sách được tính toán và được sử dụng để \r\n * điều chỉnh giá trị marginTop cho các phần tử.\r\n * @param marginData Mảng các phần tử có thuộc tính marginTop và marginLeft\r\n * @param blocks Mảng các phần tử\r\n * @param index Chỉ số của phần tử hiện tại\r\n * @param device Thiết bị\r\n * @param data Giá trị component\r\n * @param deltaHeight Chiều cao delta của từng đối tượng trong danh sách\r\n * @param indexDepend Chỉ số của phần tử phụ thuộc\r\n * @param isNegative Chỉ số xác định phần tử phụ thuộc vào phần tử đầu tiên trong đệ quy\r\n */\r\n recursiveAdjustMargin(\r\n marginData: any[],\r\n blocks: any[],\r\n index: number,\r\n device: any,\r\n deltaHeight: any,\r\n indexDepend: any = -1,\r\n isNegative: boolean = true\r\n ) {\r\n // Điều kiện dừng: Nếu index vượt quá hoặc bằng chiều dài của marginData\r\n // Hoặc nếu không tìm thấy phần tử không phụ thuộc nào tiếp theo\r\n if (index >= marginData.length - 1) return;\r\n // Tìm phần tử không phụ thuộc gần nhất\r\n const next = this.findNonDependentNearest(blocks, index, device, indexDepend, isNegative);\r\n // Nếu không tìm thấy phần tử phù hợp, dừng đệ quy\r\n if (!next) return;\r\n // Điều chỉnh marginTop với dấu thay đổi dựa trên `isNegative`\r\n const adjustment = (deltaHeight || 0) * (isNegative ? -1 : 1);\r\n marginData[next.index].marginTop += adjustment;\r\n\r\n // Gọi đệ quy với chỉ số mới tìm được\r\n this.recursiveAdjustMargin(marginData, blocks, next.index, device, deltaHeight, index, !isNegative);\r\n }\r\n\r\n // /**\r\n // * Tính toán chiều cao delta của từng đối tượng trong danh sách.\r\n // * Chiều cao delta là sự khác biệt giữa chiều cao bù trừ của phần tử và chiều cao trong cấu hình.\r\n // * Điều này được sử dụng để tính toán đỉnh lề mới của đối tượng dựa trên chiều cao delta của đối tượng trước đó.\r\n // * @param objects Danh sách các đối tượng để tính chiều cao delta.\r\n // * @param device Thiết bị.\r\n // * @returns Một mảng các đối tượng có chiều cao delta, chiều cao bù trừ và chiều cao của từng đối tượng.\r\n // */\r\n // calculateDeltaHeight(object:any, device: any) {\r\n // const element = document.getElementById(object._id);\r\n // return {\r\n // _id: object._id, // Trả về _id của đối tượng\r\n // offsetHeight: element ? element.offsetHeight : 0, // Trả về chiều cao của element, hoặc 0 nếu không tìm thấy\r\n // height: object[`${device}_config`]?.dimension?.height, // Trả về chiều cao của đối tượng trong config\r\n // deltaHeight: element?.offsetHeight - object[`${device}_config`]?.dimension?.height // Trả về delta height\r\n // };\r\n // }\r\n\r\n /**\r\n * Tính toán chiều cao lớn nhất có thể có của đối tượng cha.\r\n * @param blocks Danh sách các đối tượng để tính chiều cao delta.\r\n * @returns chiều cao của đối tượng cha\r\n */\r\n handleCalculateMaxHeight(blocks) {\r\n // Ưu tiên lấy element cha theo id_page -> id_blocks -> id_object\r\n const parentId = blocks[0]?.id_page || blocks[0]?.id_block || blocks[0]?.id_object;\r\n const parentElement = parentId ? document.getElementById(parentId) : null;\r\n let maxHeight = 0;\r\n // let maxBlock = null;\r\n if (isPlatformBrowser(this.platformId)) {\r\n blocks.forEach(block => {\r\n let element: HTMLElement | null = null;\r\n\r\n if (parentElement) {\r\n // Trong parentElement tìm phần tử có id = block._id + '_root'\r\n element = parentElement.querySelector(`[id=\"${block._id}_root\"]`)\r\n }\r\n\r\n if (element) {\r\n const height = element.offsetHeight; // Lấy chiều cao của phần tử\r\n const top = element.offsetTop; // Lấy giá trị top\r\n // Tính tổng chiều cao\r\n const totalHeight = top + height;\r\n\r\n if (totalHeight > maxHeight) {\r\n maxHeight = totalHeight; // Cập nhật maxHeight nếu lớn hơn giá trị hiện tại\r\n // maxBlock = block;\r\n }\r\n }\r\n });\r\n }\r\n // if(parentId=='67d8dd16847d6520d4c0d1fa') console.log(\"maxHeight\", maxHeight, maxBlock);\r\n return maxHeight;\r\n }\r\n\r\n /**\r\n * biến này để khi người dùng nhập trong form thì lưu vào đây ví dụ: {\r\n * 'field_custom': 'hello world'\r\n * }\r\n */\r\n listInputs: any = {};\r\n freeblocks: any = []\r\n setFreeBlocks(freeblocks) {\r\n this.freeblocks = freeblocks\r\n }\r\n\r\n getFreeBLocks(): any[] {\r\n return this.freeblocks;\r\n }\r\n\r\n\r\n /**\r\n * Theo dõi sự kiện Đăng xuất / Đăng nhập để hiển thị thông qua `VhEventMediator` với message 'change-signin-signout' và state = 'login' || 'logout'\r\n * @param _this component hiện tại\r\n * @param showOnState 'login' | 'logout' | 'both' trạng thái nào thì sẽ hiển thị. Ví dụ 'login' thì chỉ hiển thị khi đã đăng nhập, 'logout' thì chỉ hiển thị khi chưa đăng nhập, 'both' thì hiển thị cả 2 trạng thái, 'both' thì hiện cả 2 trạng thái\r\n * @param className tên class sẽ apply thuộc tính `visibility` (thường là class ngoài cùng). Sẽ sử dụng dưới dạng `class[className]['visibility']`\r\n * @param afterLoginCallback hàm callback sau khi nhận message 'change-signin-signout' với state = 'login'. *Được gọi sau khi đã cập nhật biến `isLogin`\r\n * @param afterLogoutCallback hàm callback sau khi nhận message 'change-signin-signout' với state = 'logout'. *Được gọi sau khi đã cập nhật biến `isLogin`\r\n * \r\n * *Lưu ý: \r\n * \r\n * Gọi sau khi đã checkSigninEndUser và gán giá trị cho `isLogin`\r\n * \r\n * Chỉ sử dụng cho type = 'preview-web' || 'preview-app' || 'build'\r\n * \r\n * Phải khai báo `vhEventMediator: VhEventMediator` và `vhQueryAutoWeb: VhQueryAutoWeb` ở `constructor`\r\n * \r\n * Phải khai báo biến `isLogin` và `loginLogoutStateChangedSubscription` ở component\r\n * \r\n * Phải gọi hàm {@link loginLogoutStateChangedUnsubscribe} ở ngOnDestroy\r\n * `this.functionService.loginLogoutStateChangedUnsubscribe(this);`\r\n * \r\n * @example\r\n * this.functionService.loginLogoutStateChangedSubscribe(this, 'both', 'button', \r\n () => {\r\n // Sau khi đăng nhập\r\n this.userCurrent = this.vhQueryAutoWeb.getlocalEndUser();\r\n },\r\n () => {\r\n // Sau khi đăng xuất\r\n this.userCurrent = null;\r\n }\r\n );\r\n\r\n\r\n Hoặc không cần callback\r\n\r\n this.functionService.loginLogoutStateChangedSubscribe(this, 'logout', 'btn-modal__boundary');\r\n */\r\n loginLogoutStateChangedSubscribe(\r\n _this,\r\n showOnState: 'login' | 'logout' | 'both',\r\n className: string,\r\n afterLoginCallback?: any,\r\n afterLogoutCallback?: any\r\n ) {\r\n if (_this.type === 'preview-web' || _this.type === 'preview-app' || _this.type === 'build') {\r\n const idParent = _this.data.id_block ?? _this.data.id_object ?? '';\r\n const position = _this.data[`${_this.device}_position_${idParent}`] ?? _this.data[`${_this.device}_position`];\r\n const defaultZIndex = position ? position['z_index'] : 2;\r\n // Kiểm tra xem đã đăng nhập hay chưa để set lần đầu\r\n setTimeout(() => {\r\n this.loginLogoutStateApplyStyles(_this, showOnState, className, defaultZIndex, idParent);\r\n }, 0);\r\n\r\n // Theo dõi sự kiện Đăng xuất / Đăng nhập. Nhận message 'change-signin-signout' từ vhEventMediator\r\n _this.loginLogoutStateChangedSubscription = _this.vhEventMediator.configChanged.subscribe((message: any) => {\r\n if (message && message.status === \"change-signin-signout\") {\r\n /** true là đã Đăng nhập, false là chưa */\r\n const isLoggedIn = _this.vhQueryAutoWeb.checkSigninEndUser();\r\n // Set lại biến isLogin\r\n _this.isLogin = isLoggedIn;\r\n // Nếu đã login\r\n if (isLoggedIn) {\r\n if (afterLoginCallback) afterLoginCallback();\r\n }\r\n // Nếu là logout\r\n else {\r\n if (afterLogoutCallback) afterLogoutCallback();\r\n }\r\n // Set lại visibility sau khi đăng nhập / đăng xuất\r\n this.loginLogoutStateApplyStyles(_this, showOnState, className, defaultZIndex, idParent);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Hủy theo dõi sự kiện Đăng xuất / Đăng nhập\r\n * @param _this component hiện tại\r\n */\r\n loginLogoutStateChangedUnsubscribe(_this) {\r\n _this.loginLogoutStateChangedSubscription?.unsubscribe();\r\n }\r\n\r\n /**\r\n * Apply styles cho login/logout state\r\n * @param _this \r\n * @param showOnState \r\n * @param className \r\n * @param defaultZIndex z-index mặc định để khi visible thì set z-index lại như ban đầu\r\n */\r\n loginLogoutStateApplyStyles(_this, showOnState: 'login' | 'logout' | 'both', className: string, defaultZIndex: number, idParent: string) {\r\n if (showOnState === 'both') return;\r\n\r\n // Lấy thông tin trường position để lát nữa set z-index\r\n const position = _this.data[`${_this.device}_position_${idParent}`] ?? _this.data[`${_this.device}_position`];\r\n\r\n if (showOnState === 'login') {\r\n _this.class[className]['visibility'] = _this.isLogin ? 'visible' : 'hidden';\r\n if (position) position['z_index'] = _this.isLogin ? defaultZIndex : 0;\r\n }\r\n else if (showOnState === 'logout') {\r\n _this.class[className]['visibility'] = !_this.isLogin ? 'visible' : 'hidden';\r\n if (position) position['z_index'] = _this.isLogin ? 0 : defaultZIndex;\r\n }\r\n }\r\n\r\n dataLocal: any = {};\r\n setDataLocal(id: string, data: any) {\r\n this.dataLocal[id] = data;\r\n }\r\n\r\n getDataLocal(id: string) {\r\n return this.dataLocal[id];\r\n }\r\n\r\n\r\n /**\r\n * hàm xử lý auto slide cho khung tự chọn\r\n */\r\n autoPlay(_this, classTransition: string) {\r\n if (_this.type == 'page' || _this.type == 'admin' || !_this.type) return;\r\n if (_this.config[classTransition]['is_autoplay']) {\r\n if (_this.setinterval) {\r\n clearInterval(_this.setinterval);\r\n _this.setinterval = null;\r\n }\r\n\r\n if (!_this.setinterval)\r\n _this.setinterval = setInterval(() => {\r\n _this.handleNext();\r\n }, _this.config[classTransition]['interval']);\r\n } else {\r\n clearInterval(_this.setinterval);\r\n }\r\n }\r\n\r\n\r\n\r\n /**\r\n * Cuộn đến đầu của element nếu top của element hiện tại lớn hơn 0\r\n * @param id id của element\r\n */\r\n scrollToTopOfElement(id: string) {\r\n if (isPlatformBrowser(this.platformId)) {\r\n const element = document.getElementById(id);\r\n if (element) {\r\n const rect = element.getBoundingClientRect();\r\n const isPastTop = rect?.top < 0;\r\n if (isPastTop) {\r\n element.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Kiểm tra và xử lý sự thay đổi chiều cao (resize offset).\r\n * @elementRef ElementRef cơ bản.\r\n * @param data Đối tượng để tính delta chiều cao.\r\n * @param type Loại đối tượng, nếu là 'page' hoặc 'admin' sẽ bỏ qua kiểm tra.\r\n * @param prevHeight Giá trị chiều cao trước đó của cell trong frame (nếu có).\r\n * @param device Thiết bị hiện tại, dùng để xác định cấu hình tương ứng (nếu có).\r\n * @param emitCallback Hàm callback để emit sự thay đổi nếu có (thường là EventEmitter).\r\n * @returns Giá trị `prevHeight` mới để lưu trữ cho lần kiểm tra tiếp theo.\r\n */\r\n handleResizeOffset(\r\n elementRef: any,\r\n data: any,\r\n type: any,\r\n prevHeight: any,\r\n device: any,\r\n emitCallback: (payload: { deltaHeight: number; data: any }) => void\r\n ) {\r\n if (type === 'page' || type === 'admin') return prevHeight;\r\n if (isPlatformBrowser(this.platformId)) {\r\n const element = elementRef?.nativeElement;\r\n if (!element) return prevHeight;\r\n\r\n // Kiểm tra xem element hoặc thẻ cha có animation/transition không\r\n const computedStyle = window.getComputedStyle(element);\r\n const hasAnimation = (computedStyle.animationName !== 'none' && computedStyle.animationDuration !== '0s') ||\r\n (computedStyle.transitionProperty !== 'none' && computedStyle.transitionDuration !== '0s');\r\n if (hasAnimation) {\r\n // Sử dụng ResizeObserver nếu có animation\r\n if (element.__resizeObserver__) {\r\n element.__resizeObserver__.disconnect(); // Hủy observer cũ nếu có\r\n }\r\n\r\n const observer = new ResizeObserver(() => {\r\n const currentHeight = element.offsetHeight;\r\n const deltaHeight =\r\n prevHeight === 0\r\n ? currentHeight - (data[`${device}_config`]?.dimension?.height || 0)\r\n : currentHeight - prevHeight;\r\n if (deltaHeight < -1 || deltaHeight > 1) {\r\n emitCallback({ deltaHeight, data });\r\n }\r\n prevHeight = currentHeight; // Cập nhật lại\r\n });\r\n observer.observe(element);\r\n element.__resizeObserver__ = observer; // Lưu observer để cleanup\r\n } else {\r\n // Không có animation, tính toán trực tiếp\r\n const currentHeight = element.offsetHeight;\r\n const deltaHeight =\r\n prevHeight === 0\r\n ? currentHeight - (data[`${device}_config`]?.dimension?.height || 0)\r\n : currentHeight - prevHeight;\r\n if (deltaHeight < -1 || deltaHeight > 1) {\r\n emitCallback({ deltaHeight, data });\r\n }\r\n prevHeight = currentHeight; // Cập nhật lại\r\n }\r\n\r\n return prevHeight;\r\n }\r\n return prevHeight;\r\n }\r\n\r\n\r\n /** danh sách block_of_page elementRef */\r\n blockRefs\r\n setBlockRefs(data) {\r\n this.blockRefs = data\r\n }\r\n\r\n getBlockRefs() {\r\n return this.blockRefs\r\n }\r\n\r\n\r\n\r\n\r\n /** Ngôn ngữ đang được chọn */\r\n selectedLanguageCode: string = this.vhQueryAutoWeb.localStorageGET('language_code')?.code || 'vn';\r\n defaultLanguage: string = 'vn';\r\n languageTempCode: string = 'vn';\r\n multi_languages: any = this.vhQueryAutoWeb.localStorageGET('multi_languages')?.multi_languages || [];\r\n\r\n /** \r\n * Mảng chứa các giá trị fallback cho các trường multi-language của component dựa trên trường `component`.\r\n * \r\n * @example\r\n * this.functionService.multiLanguageFallback['AtwText']['content']\r\n */\r\n multiLanguageFallback = {\r\n \"AtwText\": {\r\n \"content\": \"Tiêu đề\",\r\n },\r\n \"AtwInputAddress\": {\r\n \"input_text_placeholder\": \"Nhập địa chỉ\",\r\n \"input_text_error\": \"* Vui lòng nhập địa chỉ\",\r\n },\r\n \"AtwInputConfirmPassword\": {\r\n \"input_text_placeholder\": \"Xác nhận mật khẩu\",\r\n \"input_text_error\": \"* Xác nhận mật khẩu không khớp\",\r\n \"input_text_error_required\": \"* Vui lòng nhập xác nhận mật khẩu\",\r\n },\r\n \"AtwInputContent\": {\r\n \"input_text_placeholder\": \"Nhập nội dung\",\r\n \"input_text_error\": \"* Vui lòng nhập nội dung\",\r\n },\r\n \"AtwInputEmail\": {\r\n \"input_text_placeholder\": \"Địa chỉ email\",\r\n \"input_text_error\": \"* Email không đúng định dạng\",\r\n \"input_text_error_required\": \"* Vui lòng nhập địa chỉ email\",\r\n },\r\n \"AtwInputName\": {\r\n \"input_text_placeholder\": \"Tên người dùng\",\r\n \"input_text_error\": \"* Vui lòng nhập tên\",\r\n },\r\n \"AtwInputNewPassword\": {\r\n \"input_text_placeholder\": \"Nhập mật khẩu mới\",\r\n \"input_text_error_required\": \"* Vui lòng nhập mật khẩu mới\",\r\n },\r\n \"AtwInputPassword\": {\r\n \"input_text_placeholder\": \"Nhập mật khẩu\",\r\n \"input_text_error\": \"* Vui lòng nhập mật khẩu\",\r\n },\r\n \"AtwInputTelephone\": {\r\n \"input_text_placeholder\": \"Số điện thoại\",\r\n \"input_text_error\": \"* Vui lòng nhập đúng số điện thoại\",\r\n \"input_text_error_required\": \"* Vui lòng nhập số điện thoại\",\r\n },\r\n \"AtwButton\": {\r\n \"content\": \"Button\",\r\n },\r\n \"AtwButtonShowModal\": {\r\n \"content\": \"Gọi hộp thoại\",\r\n },\r\n \"AtwBtnLoginLogout2States\": {\r\n \"content_login\": \"Đăng nhập\",\r\n \"content_logout\": \"Đăng xuất\",\r\n },\r\n \"AtwButtonLogout\": {\r\n \"content\": \"Đăng xuất\",\r\n },\r\n \"AtwSendContact\": {\r\n \"content\": \"Gửi\",\r\n },\r\n \"AtwButtonLoggedComponent\": {\r\n \"content\": \"Button\",\r\n },\r\n \"AtwButtonConfirm\": {\r\n \"content\": \"Đổi mật khẩu\",\r\n },\r\n \"AtwButtonForgotPassword\": {\r\n \"content\": \"Quên mật khẩu\",\r\n },\r\n \"AtwButtonRegister\": {\r\n \"content\": \"Đăng ký\",\r\n },\r\n \"AtwButtonSave\": {\r\n \"content\": \"Lưu\",\r\n },\r\n \"AtwBtnLogin\": {\r\n \"content\": \"Đăng nhập\",\r\n },\r\n \"AtwButtonPayment\": {\r\n \"content\": \"Đặt hàng\",\r\n },\r\n \"AtwButtonShowFormLogged\": {\r\n \"content\": \"Gọi hộp thoại\",\r\n },\r\n \"AtwButtonShowForm\": {\r\n \"content\": \"Hiển thị biểu mẫu\",\r\n },\r\n \"AtwPopupOpenForm\": {\r\n \"content\": \"Mở biểu mẫu\",\r\n },\r\n \"AtwButtonAddToCart\": {\r\n \"content\": \"Thêm vào giỏ hàng\",\r\n },\r\n \"AtwButtonFavorite\": {\r\n \"content\": \"\",\r\n },\r\n \"AtwButtonResetFilter\": {\r\n \"content\": \"clear\",\r\n },\r\n \"AtwButtonViewDetail\": {\r\n \"content\": \"Xem chi tiết\",\r\n },\r\n \"AtwButtonBacktop\": {\r\n \"content\": \"\",\r\n },\r\n \"AtwBackPageButton\": {\r\n \"content\": \"Back\",\r\n },\r\n \"AtwButtonClosePopup\": {\r\n \"content\": \"\",\r\n },\r\n \"AtwPopup\": {\r\n \"content\": \"Nút gọi hộp thoại\",\r\n },\r\n \"AtwSearch\": {\r\n \"input_text_placeholder\": \"Tìm kiếm\",\r\n \"content\": \"\",\r\n },\r\n \"AtwPopupInteractive\": {\r\n \"content\": \"Hover để hiển thị hộp thoại\",\r\n },\r\n \"AtwPopupDetail\": {\r\n \"content\": \"Popup Detail\",\r\n },\r\n \"AtwHover\": {\r\n \"content\": \"Văn bản gọi hộp thoại\",\r\n },\r\n \"AtwSelectAddress\": {\r\n \"input_placeholder\": \"Chọn địa chỉ\",\r\n },\r\n \"AtwDateDelivery\": {\r\n \"placeholder\": \"Chọn thời gian\"\r\n },\r\n \"AtwDeleteCartProduct\": {\r\n \"content\": \"\",\r\n },\r\n \"AtwNoteBill\": {\r\n \"input_text_placeholder\": \"Ghi chú hóa đơn\",\r\n },\r\n \"AtwExportBill\": {\r\n \"content\": \"Xuất hóa đơn công ty\",\r\n },\r\n \"AtwSendCV\": {\r\n \"content\": \"Gửi\",\r\n },\r\n \"AtwButtonActive\": {\r\n \"content\": \"Kích hoạt\",\r\n },\r\n \"AtwButtonSearchSnimei\": {\r\n \"content\": \"Tìm kiếm\",\r\n },\r\n \"AtwSearchSnimei\": {\r\n \"input_text_placeholder\": \"Số series hoặc IMEI\",\r\n },\r\n \"AtwSearchWebsite\": {\r\n \"input_text_placeholder\": \"Tìm kiếm\",\r\n \"content\": \"\",\r\n },\r\n \"AtwButtonPreview\": {\r\n \"content\": \"Demo web\",\r\n },\r\n \"AtwButtonPreviewImage\": {\r\n \"content\": \"Demo image\",\r\n },\r\n \"AtwUseTemplate\": {\r\n \"content\": \"Sử dụng giao diện\",\r\n },\r\n \"AtwUploadFile\": {\r\n \"content\": \"Upload file\",\r\n },\r\n \"AtwTextCollapse\": {\r\n \"header\": \"Tiêu đề collapse\",\r\n \"content\": \"Nội dung collapse\",\r\n },\r\n \"AtwTextParagraph\": {\r\n \"content\": \"<h3 style='margin-left:0px;'><strong>Xuất viện trong giờ hành chính</strong></h3><p style='margin-left:0px;'>&nbsp;</p><p style='margin-left:0px;'>Nhằm đơn giản hóa mọi việc, bạn, người thân, hoặc bạn bè đều có thể hoàn tất thủ tục xuất viện. Thông thường, chúng tôi sẽ cung cấp cho bạn bảng kê chi tiết viện phí. Nhân viên bệnh viện sẵn sàng giải đáp mọi thắc mắc của bạn.<br><br>Bạn hoặc người thân sẽ hoàn tất thủ tục thanh toán viện phí và xuất viện tại quầy Thu ngân của Bệnh Viện. Khi đến quầy Thu ngân, vui lòng mang theo giấy tạm ứng viện phí (nếu có) và trình cho nhân viên thu ngân. Trong một số trường hợp đặc biệt, bạn có thể thanh toán viện phí và thực hiện thủ tục xuất viện ngay tại phòng bệnh.<br><br>Nếu công ty bảo hiểm đồng ý chi trả viện phí, bạn vẫn phải làm thủ tục xuất viện tại quầy Thu ngân để kiểm tra các khoản phí cần thanh toán và ký vào hóa đơn.</p><p style='margin-left:0px;'>&nbsp;</p><h3 style='margin-left:0px;'><strong>Xuất viện ngoài giờ hành chính</strong></h3><p style='margin-left:0px;'>&nbsp;</p><p style='margin-left:0px;'>Bạn sẽ được hướng dẫn đến quầy Thu ngân của khoa Cấp cứu để hoàn tất thanh toán viện phí và làm thủ tục xuất viện.<br><br>Xin lưu ý, bệnh viện không thể cung cấp thuốc điều trị cho bệnh nhân xuất viện ngoài giờ hành chính.</p>\",\r\n },\r\n \"AtwRangePrice\": {\r\n \"min_content\": \"Tối thiểu:\",\r\n \"max_content\": \"Tối đa:\",\r\n },\r\n \"AtwSortProduct\": {\r\n \"content\": \"Sắp xếp sản phẩm\",\r\n \"sort-name-up\": \"Sắp xếp theo tên tăng dần\",\r\n \"sort-name-down\": \"Sắp xếp theo tên giảm dần\",\r\n \"sort-price-up\": \"Sắp xếp theo giá tăng dần\",\r\n \"sort-price-down\": \"Sắp xếp theo giá tăng dần\",\r\n },\r\n \"AtwTextDiscountValue\": {\r\n \"text\": \"Giảm\",\r\n },\r\n \"AtwTextProductDiscountValue\": {\r\n \"text\": \"Giảm\",\r\n },\r\n \"DescriptionRecruitmentComponent\": {\r\n \"webapp_sort_description\": \"Đây là mô tả của tuyển dụng\",\r\n },\r\n \"AtwTextActive\": {\r\n \"content_active\": \"Đã kích hoạt\",\r\n \"content_inactive\": \"Chưa kích hoạt\",\r\n },\r\n \"AtwRemainingTime\": {\r\n \"format_label\": \"Ngày\",\r\n },\r\n \"AtwMenuCategory\": {\r\n \"parent_category_name\": \"Danh mục sản phẩm\",\r\n },\r\n \"AtwMenu\": {\r\n \"name\": \"Menu item\",\r\n },\r\n \"AtwDynamicFilter\": {\r\n \"value\": \"Content\",\r\n },\r\n \"AtwFrameProductByCategoryConfig\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"sản phẩm\",\r\n \"no_data\": \"Không có sản phẩm nào\",\r\n },\r\n \"AtwFrameProductByCategory\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"sản phẩm\",\r\n \"no_data\": \"Không có sản phẩm nào\",\r\n },\r\n \"AtwFrameAppByCategory\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"app\",\r\n \"no_data\": \"Không có app nào\",\r\n },\r\n \"AtwFrameFoodsByCategory\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"món ăn\",\r\n \"no_data\": \"Không có món ăn nào\",\r\n },\r\n \"AtwFrameServiceByCategory\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"dịch vụ\",\r\n \"no_data\": \"Không có dịch vụ nào\",\r\n },\r\n \"AtwFrameNewsByCategory\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"tin tức\",\r\n \"no_data\": \"Không có tin tức nào\",\r\n },\r\n \"AtwFrameWebsiteByCategory\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"website\",\r\n \"no_data\": \"Không có website nào\",\r\n },\r\n \"AtwFrameCartProducts\": {\r\n \"content\": \"Chưa có sản phẩm nào được thêm vào giỏ hàng\",\r\n },\r\n \"AtwFrameCartProductsChoosed\": {\r\n \"content\": \"Chưa có sản phẩm nào được thêm vào giỏ hàng\",\r\n },\r\n \"AtwFrameSearchByKeywordConfig\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"sản phẩm\",\r\n \"no_data\": \"Không có sản phẩm nào\",\r\n },\r\n \"AtwFrameSearchByKeyword\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"sản phẩm\",\r\n \"no_data\": \"Không có sản phẩm nào\",\r\n },\r\n \"AtwFrameSearchByKeywordApp\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"app\",\r\n \"no_data\": \"Không có app nào\",\r\n },\r\n \"AtwFrameSearchByKeywordFoods\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"món ăn\",\r\n \"no_data\": \"Không có món ăn nào\",\r\n },\r\n \"AtwFrameSearchByKeywordServices\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"dịch vụ\",\r\n \"no_data\": \"Không có dịch vụ nào\",\r\n },\r\n \"AtwFrameSearchByKeywordNews\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"tin tức\",\r\n \"no_data\": \"Không có tin tức nào\",\r\n },\r\n \"AtwFrameSearchByKeywordWebsite\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"website\",\r\n \"no_data\": \"Không có website nào\",\r\n },\r\n \"AtwFrameProductsFavorited\": {\r\n \"no_data\": \"Không có sản phẩm nào\",\r\n },\r\n \"AtwFrameProductsViewedConfig\": {\r\n \"no_data\": \"Không có sản phẩm nào\",\r\n },\r\n \"AtwFrameProductsViewed\": {\r\n \"no_data\": \"Không có sản phẩm nào\",\r\n },\r\n \"AtwFrameResultConfig\": {\r\n \"no_data_text_before\": \"Không tìm thấy\",\r\n \"no_data_text_after\": \". Vui lòng nhập nội dung khác\",\r\n },\r\n \"AtwFrameResult\": {\r\n \"no_data_text_before\": \"Không tìm thấy\",\r\n \"no_data_text_after\": \". Vui lòng nhập nội dung khác\",\r\n },\r\n \"AtwSearchCustomize\": {\r\n \"input_text_placeholder\": \"Tìm kiếm\",\r\n \"content\": \"\",\r\n },\r\n \"AtwSearchCustomizeConfig\": {\r\n \"input_text_placeholder\": \"Tìm kiếm\",\r\n \"content\": \"\",\r\n },\r\n \"AtwFrameProductByCategoryViewMore\": {\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"sản phẩm\",\r\n \"no_data\": \"Không có sản phẩm nào\",\r\n \"view_more_content\": \"Xem thêm \",\r\n \"view_more_content_after\": \" sản phẩm\",\r\n },\r\n \"AtwFrameRepeat\": {\r\n \"value\": \"Văn bản\",\r\n \"button\": \"Nút điều hướng\",\r\n },\r\n \"AtwTextRepeat\": {\r\n \"value\": \"Văn bản\",\r\n },\r\n \"AtwButtonRepeat\": {\r\n \"value\": \"Nút điều hướng\",\r\n },\r\n \"AtwFrameCollapse\": {\r\n \"name\": \"Collapse\",\r\n },\r\n \"AtwFrameTabs\": {\r\n \"name\": \"Tab\",\r\n },\r\n \"AtwUnits\": {\r\n \"unit\": \"Đơn vị\",\r\n }\r\n };\r\n\r\n /** Hàm tạo validators từ cấu hình */\r\n getValidators(validators: { required?: boolean; pattern?: string; minLength?: number }) {\r\n let validatorArr = [];\r\n\r\n if (validators.required) {\r\n validatorArr.push(Validators.required);\r\n }\r\n if (validators.pattern && validators.pattern.trim()) {\r\n validatorArr.push(Validators.pattern(validators.pattern));\r\n }\r\n if (validators.minLength !== undefined && validators.minLength > 0) {\r\n validatorArr.push(Validators.minLength(validators.minLength));\r\n }\r\n\r\n return validatorArr.length ? Validators.compose(validatorArr) : null;\r\n }\r\n\r\n /** Hàm tạo field chung */\r\n createField(\r\n fieldObj: { field: string; validators?: any },\r\n language_code: string,\r\n formGroup: any,\r\n defaultValue?: any\r\n ) {\r\n const fieldKey = `${fieldObj.field}_${language_code}`;\r\n return {\r\n field: fieldKey,\r\n value: defaultValue ?? formGroup.value[fieldKey] ?? '',\r\n validators: this.getValidators(fieldObj.validators || {}),\r\n };\r\n }\r\n\r\n /**\r\n * Xử lý `handleChangeMultiLanguage` ở file add trong trang Admin. Sẽ thêm hoặc cập nhật các trường multi-language vào `formGroup`\r\n * @param formGroup - `FormGroup` cần xử lý\r\n * @param language_code - `language_code` hiện tại\r\n * @param newFields - Danh sách `newFields` (bao gồm `newFields` và `newFieldsCKEditor`)\r\n * @param fieldNames - Danh sách tên trường đa ngôn ngữ cần tạo. Ví dụ `['content', 'title', 'description']`\r\n */\r\n adminAddHandleChangeMultiLanguage(\r\n formGroup: any,\r\n language_code: string,\r\n newFields: any[],\r\n fieldNames: any[]\r\n ) {\r\n /** Danh sách trường cần tạo */\r\n let multipleLanguageFields = fieldNames.map((fieldObj) =>\r\n this.createField(fieldObj, language_code, formGroup)\r\n );\r\n\r\n // Thêm các trường từ newFields\r\n newFields.forEach((newField) => {\r\n multipleLanguageFields.push(\r\n this.createField(\r\n { field: newField.field_custom, validators: { required: newField.field_required, pattern: '' } },\r\n language_code,\r\n formGroup\r\n )\r\n );\r\n });\r\n\r\n // Thêm hoặc cập nhật giá trị trong formGroup\r\n multipleLanguageFields.forEach((newField) => {\r\n if (!formGroup.contains(newField.field)) {\r\n formGroup.addControl(newField.field, new FormControl(newField.value, newField.validators));\r\n } else {\r\n formGroup.get(newField.field)?.setValue(newField.value);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Xử lý `handleChangeMultiLanguage` ở file edit trong trang Admin. Sẽ thêm hoặc cập nhật các trường multi-language vào `formGroup`\r\n * @param formGroup - `FormGroup` cần xử lý\r\n * @param language_code - `language_code` hiện tại\r\n * @param newFields - Danh sách `newFields` (bao gồm `newFields` và `newFieldsCKEditor`)\r\n * @param fieldNames - Danh sách tên trường đa ngôn ngữ cần tạo. Ví dụ `['content', 'title', 'description']`\r\n * @param dataEdit - Dữ liệu edit\r\n * @param getUnitsByRatio - Hàm lấy đơn vị theo ratio. Đảm bảo có phương thức `getUnitsByRatio` trong component. Nếu có phương thức `getUnitsByRatio` và `!formGroup.value.manysize` thì sẽ thêm trường `unit` vào `formGroup`. Nếu không cần check `!formGroup.value.manysize` mà vẫn muốn thêm trường unit thì thêm `unit` vào `fieldNames`\r\n */\r\n adminEditHandleChangeMultiLanguage(\r\n formGroup: any,\r\n language_code: string,\r\n newFields: any[],\r\n fieldNames: any[],\r\n dataEdit: any,\r\n getUnitsByRatio?: (units: any[], ratio: number) => any,\r\n isPage?: boolean,\r\n ) {\r\n const devices = ['desktop', 'tablet_landscape', 'tablet_portrait', 'mobile_landscape', 'mobile_portrait'];\r\n\r\n /** Danh sách trường cần tạo */\r\n let multipleLanguageFields = fieldNames.map((fieldObj) => {\r\n // Xử lý khi sửa thông tin trang (Vì có SEO)\r\n if (isPage) {\r\n return this.createField(\r\n fieldObj, language_code, formGroup,\r\n (fieldObj.field != 'name')\r\n ? dataEdit?.seo?.[`${fieldObj.field}_${language_code}`]\r\n : dataEdit?.[`${fieldObj.field}_${language_code}`]\r\n );\r\n }\r\n\r\n // Xử lý cho text-paragraph\r\n if (\r\n ['content'].some(f => fieldObj.field.endsWith(f)) &&\r\n devices.some(device => fieldObj.field.startsWith(device))\r\n ) {\r\n return this.createField(\r\n fieldObj, language_code, formGroup,\r\n dataEdit?.[`${fieldObj.field}_${language_code}`] ?? dataEdit?.[`content_${language_code}`]\r\n );\r\n }\r\n\r\n // Mặc định\r\n return this.createField(fieldObj, language_code, formGroup, dataEdit?.[`${fieldObj.field}_${language_code}`]);\r\n }\r\n );\r\n\r\n // Xử lý trường `unit` nếu `!formGroup.value.manysize`\r\n if (getUnitsByRatio && !formGroup.value.manysize) {\r\n multipleLanguageFields.push(\r\n this.createField(\r\n { field: 'unit', validators: { required: true, pattern: '' } },\r\n language_code,\r\n formGroup,\r\n getUnitsByRatio(dataEdit?.units, 1)?.[`unit_${language_code}`]\r\n )\r\n );\r\n }\r\n\r\n // Thêm các trường từ newFields\r\n newFields.forEach((newField) => {\r\n multipleLanguageFields.push(\r\n this.createField(\r\n { field: newField.field_custom, validators: { required: newField.field_required, pattern: '' } },\r\n language_code,\r\n formGroup,\r\n dataEdit?.[`${newField.field_custom}_${language_code}`]\r\n )\r\n );\r\n });\r\n\r\n // Thêm hoặc cập nhật giá trị trong formGroup\r\n multipleLanguageFields.forEach((newField) => {\r\n if (!formGroup.contains(newField.field)) {\r\n formGroup.addControl(newField.field, new FormControl(newField.value, newField.validators));\r\n } else {\r\n formGroup.get(newField.field)?.setValue(newField.value);\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n typeConfig: 'admin' | 'page' = 'page'\r\n setTypeConfig(data) {\r\n this.typeConfig = data\r\n }\r\n\r\n getTypeConfig() {\r\n return this.typeConfig\r\n }\r\n\r\n /**\r\n * hàm này để nhận sự kiện khi ở admin thay đổi animation, cần phải render lại children, gán hidden = true để render lại\r\n * @param _this \r\n */\r\n updateUIChildrenSubscribe(_this) {\r\n if (_this.type == 'admin') {\r\n return this.vhEventMediator.configChanged.subscribe((message: any) => {\r\n if (message?.status === 'update-UI' && message?.id_parent == _this.data._id) {\r\n const findObj = _this.data.objects.find(e => e._id === message.code);\r\n if (!findObj) return;\r\n findObj['hidden'] = true;\r\n setTimeout(() => {\r\n findObj['hidden'] = false;\r\n }, 100);\r\n }\r\n });\r\n }\r\n return null;\r\n }\r\n\r\n updateDimension(objectChoosing?: any) {\r\n const message: any = {\r\n update_dimention: true,\r\n };\r\n\r\n if (objectChoosing?._id) {\r\n message.code = objectChoosing._id;\r\n }\r\n\r\n this.vhEventMediator.notifyOnConfigChanged(message);\r\n }\r\n\r\n\r\n\r\n /**\r\n * Xử lý khi thả file ảnh\r\n * - Nếu thuộc các component đặc biệt thì lấy width, height của ảnh kéo vào để gán width, height cho component thêm vào. Nhưng không lấy ảnh\r\n * - Ngược lại, không thuộc các component đặc biệt thì lấy width, height của ảnh kéo vào và lấy cả ảnh đẩy lên server rồi thêm vào component\r\n * - Cả 2 ý trên đều phải đảm bảo ảnh không vượt quá phạm vi frame chứa hoặc block chứa\r\n * @param event Sự kiện thả file ảnh sau khi nắm kéo vào\r\n * @param _this \r\n * @param size Kích thước width, height của block, frame\r\n * @param size.width Nếu để trống thì mặc định sẽ lấy width của thiết bị đó\r\n * @param size.height Nếu để trống thì mặc định sẽ lý height của thiết bị đó\r\n * @example \r\n * this.functionService.onDrop(event, this, {\r\n * height: Number(this.class['block-blank']['min-height'].replace('px', '')) \r\n * });\r\n */\r\n onDrop(event: DragEvent, _this, size?: { width?: number; height?: number }): void {\r\n if (_this.type !== 'page') return;\r\n event.preventDefault(); // Ngăn chặn mặc định\r\n\r\n // Ngăn chặn tạo double object (1 cha 1 con) khi thả file vào con (vd: frame)\r\n if (_this.data?.otype) event.stopPropagation();\r\n\r\n // Không thả file vào đối tượng nhân bản\r\n if (_this.data?.isClone) {\r\n this.createMessage('error', 'khong_the_tha_vao_doi_tuong_nay');\r\n return;\r\n }\r\n\r\n // Kiểm tra 1 hoặc nhiều tệp có phải hình ảnh hay không\r\n const files = Array.from(event.dataTransfer?.files || []).filter(f => {\r\n if (!f.type.startsWith('image/')) this.createMessage('error', 'vui_long_keo_tep_hinh_anh_hop_le');\r\n return f.type.startsWith('image/');\r\n });\r\n if (!files.length) return;\r\n\r\n const componentsRepeat = ['AtwFrameRepeat']; // component repeat\r\n const componentsCategory = ['AtwFrameCategories', 'AtwFrameCategoryDetail', 'AtwFrameDisplaySubcategory']; // Các component category\r\n\r\n // Các component có cấu hình chọn main sector\r\n const componentsHasChooseMainSector = ['AtwFrameResult', 'AtwFrameSearchByKeyword'];\r\n\r\n // Các component các ngành hàng\r\n const componentsProductMainSector = {\r\n ecommerce: ['AtwFrameCartProductChoosed', 'AtwFrameCartProducts', 'AtwFrameProductDetail', 'AtwFrameProducts', 'AtwFrameProductByCategory', 'AtwFrameProductByCategoryViewMore', 'AtwFrameProductRelate', 'AtwFrameProductsViewed', 'AtwFrameProductsFavorited', 'AtwBlockPopupDetailProduct'],\r\n comment: ['AtwFrameComment', 'AtwFrameReplyComment', 'AtwFrameReplied'],\r\n food_drink: ['AtwFrameFoodsDetail', 'AtwFrameFoods', 'AtwFrameFoodsByCategory', 'AtwFrameFoodByCategoryViewMore', 'AtwFrameFoodsRelate'],\r\n news: ['AtwFrameNews', 'AtwFrameNewsCategory', 'AtwFrameNewsByCategoryViewMore', 'AtwFrameNewsRelate', 'AtwFrameNewsDetail'],\r\n web: ['AtwFrameWebsite', 'AtwFrameWebsiteByCategory', 'AtwFrameWebsiteByCategoryViewMore'],\r\n app: ['AtwFrameApp', 'AtwFrameAppByCategory', 'AtwFrameAppByCategoryViewMore'],\r\n service: ['AtwFrameServices', 'AtwFrameServicesCategory', 'AtwFrameServiceByCategoryViewMore', 'AtwFrameServiceRelate', 'AtwFrameServiceDetail'],\r\n recruitment: ['AtwFrameRecruiment', 'AtwFrameRecruitmentDetail'],\r\n hotel: ['AtwFrameHotel', 'AtwFrameHotelByCategory', 'AtwFrameHotelByCategoryViewMore', 'AtwFrameHotelDetail', 'AtwFrameHotelRelate'],\r\n room: ['AtwFrameRoom', 'AtwFrameRoomByCategory', 'AtwFrameRoomByCategoryViewMore', 'AtwFrameRoomDetail', 'AtwFrameRoomRelate'],\r\n }\r\n\r\n // Các component product\r\n const componentsProduct = [...componentsHasChooseMainSector, ...Object.values(componentsProductMainSector).flat()].join(\", \");\r\n\r\n this.showLoading(\"\", \"current-loading\", null, 0, false).then(() => {\r\n /**\r\n * Hàm đọc file và thêm ảnh vào object\r\n * @param file file ảnh\r\n * @returns Promise<void>\r\n */\r\n const readAndAddImage = (file: File) => {\r\n return new Promise<void>((resolve, reject) => {\r\n const reader = new FileReader();\r\n\r\n reader.onload = (e) => {\r\n const img = new Image();\r\n img.onload = () => {\r\n // Lấy thông tin độ phân giải của ảnh\r\n const resolutionImg = {\r\n width: img.naturalWidth,\r\n height: img.naturalHeight,\r\n ratio: img.naturalWidth / img.naturalHeight\r\n };\r\n\r\n if (componentsRepeat.includes(_this.data.component)) {\r\n // Thêm vật thể ảnh cho khung repeat\r\n this.addObjectImage_onDrop(_this, null, resolutionImg, { width: size?.width, height: size?.height }, imgRepeatJson);\r\n return resolve();\r\n }\r\n else if (componentsCategory.includes(_this.data.component)) {\r\n // Thêm vật thể ảnh cho khung category\r\n this.addObjectImage_onDrop(_this, null, resolutionImg, { width: size?.width, height: size?.height }, imgCategoryJson, 'category');\r\n return resolve();\r\n }\r\n else if (componentsProduct.includes(_this.data.component)) {\r\n // Xử lý và thêm vật thể ảnh cho khung product\r\n let mainSector = 'ecommerce';\r\n\r\n if (componentsHasChooseMainSector.includes(_this.data.component)) {\r\n // Nếu component có chọn main_sector thì lấy từ staticdata\r\n mainSector = _this.staticdata?.main_sector || 'ecommerce';\r\n }\r\n else {\r\n // Không có main_sector thì map từ componentsProductMainSector\r\n const componentToSectorMap = {};\r\n\r\n // Lặp qua từng sector và xây dựng map\r\n Object.entries(componentsProductMainSector).forEach(([sector, components]) => {\r\n components.forEach(component => {\r\n componentToSectorMap[component] = sector;\r\n });\r\n });\r\n\r\n mainSector = componentToSectorMap[_this.data.component] || 'ecommerce';\r\n }\r\n\r\n // Thêm vật thể ảnh cho product với main_sector\r\n this.addObjectImage_onDrop(_this, null, resolutionImg, { width: size?.width, height: size?.height }, imgProductJson, mainSector);\r\n return resolve();\r\n }\r\n // Không thuộc các trường hợp trên mặc định sẽ quy về object ảnh thường\r\n else {\r\n const resolutionFromSetup = {\r\n width: resolutionImg.width,\r\n height: resolutionImg.height,\r\n }\r\n const setupsImg = imgJson.setups;\r\n let compressType = setupsImg.upload_image.compress_type ?? \"compress-screen\";\r\n\r\n // Đọc ảnh và xử lý nén, upload lên server\r\n this.vhImage\r\n .getImageFromDesktop_Autoweb(file, 'images/design/objects', {\r\n compress_type: compressType,\r\n resolution: resolutionFromSetup,\r\n })\r\n .then((res: any) => {\r\n if (res.vcode != 0) {\r\n // Nếu upload ảnh thất bại thì báo lỗi\r\n this.createMessage('error', `${this.translateService.instant('tai_anh_that_bai_ly_do')}: ${res.msg}`, 2000);\r\n this.createMessage('error', 'them_vat_the_that_bai', 2000);\r\n return reject(res.msg);\r\n }\r\n // Thêm object ảnh với dữ liệu trả về từ server\r\n this.addObjectImage_onDrop(_this, res.data, resolutionImg, { width: size?.width, height: size?.height }, imgJson);\r\n this.createMessage('success', 'tai_anh_thanh_cong');\r\n return resolve();\r\n })\r\n .catch((err) => {\r\n // Lỗi khi gọi hàm upload ảnh\r\n this.createMessage('error', 'loi_khi_goi_ham_tai_anh');\r\n if (isPlatformBrowser(this.platformId))\r\n console.error('getImageFromDesktop_Autoweb error', err);\r\n reject(err);\r\n });\r\n }\r\n };\r\n\r\n img.onerror = () => {\r\n // Lỗi khi đọc kích thước ảnh\r\n this.createMessage('error', 'loi_doc_kich_thuoc_anh');\r\n reject('invalid image');\r\n };\r\n\r\n img.src = e.target?.result as string;\r\n };\r\n\r\n reader.onerror = () => {\r\n // Lỗi khi đọc file\r\n this.createMessage('error', 'loi_khi_doc_file');\r\n reject('invalid image');\r\n };\r\n\r\n reader.readAsDataURL(file);\r\n });\r\n };\r\n\r\n // Đọc và xử lý từng file ảnh\r\n const tasks = files.map((file) => readAndAddImage(file));\r\n\r\n Promise.all(tasks)\r\n .then(() => {\r\n // Ẩn loading khi xử lý xong\r\n this.hideLoading(200);\r\n })\r\n .catch(() => {\r\n // Ẩn loading khi xảy ra lỗi\r\n this.hideLoading(200); // Vẫn phải hide loading nếu lỗi\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Hàm thêm object hình ảnh (AtwImage): \r\n * - Đọc file ảnh sau khi được kéo thả ảnh vào\r\n * - Xuất ra url để truyển vào và thêm object hình ảnh mới\r\n * @param _this\r\n * @param url url ảnh được lấy ra khi đã đọc file thả vào\r\n * @param resolutionImg kích thước của ảnh gốc\r\n * @param size kích thước của cho frame ngoài hoặc block ngoài (width, height) nói cách khác của element cha chứa hình kéo vào\r\n * @param imgJson json mẫu của object ảnh tương ứng cho từng block hoặc frame (vd: frame-blank: imgJson, frame-product: imgProductJson,...)\r\n * @param mainSector ngành hàng để in ra name trong json mẫu phù hợp (vd: ecommerce, news,...) (Nếu để trống thì đã có sẵn name trong json mẫu)\r\n * @example this.addObjectImage_onDrop(_this, res.data, resolution, { width: size?.width, height: size?.height });\r\n */\r\n private addObjectImage_onDrop(_this, url: string, resolutionImg: any, size?: { width?: number; height?: number }, imgJson?: any, mainSector?: string) {\r\n if (!resolutionImg?.width || !resolutionImg?.height) {\r\n // Kiểm tra nếu không có thông tin độ phân giải ảnh thì báo lỗi và ẩn loading\r\n if (isPlatformBrowser(this.platformId))\r\n console.error('resolutionImg is invalid', resolutionImg);\r\n this.hideLoading(200);\r\n return;\r\n }\r\n\r\n // Đổi tên mainSector tương ứng nếu có mainSector\r\n if (mainSector) {\r\n const nameComponent = {\r\n category: 'danh_muc',\r\n ecommerce: 'san_pham',\r\n food_drink: 'mon_an_thuc_uong',\r\n combo: 'nhom_san_pham',\r\n news: 'tin_tuc',\r\n web: 'web',\r\n app: 'app',\r\n service: 'dich_vu',\r\n service_time: 'dich_vu_thoi_gian',\r\n recruitment: 'tuyen_dung',\r\n snimei: 'bao_hanh',\r\n travel: 'du_lich',\r\n hotel: 'khach_san',\r\n room: 'phong',\r\n comment: 'binh_luan',\r\n }\r\n\r\n // Đặt tên cho ảnh theo sector\r\n const nameSector = this.translateService.instant(nameComponent[mainSector ?? 'ecommerce']);\r\n imgJson.name = this.translateService.instant('hinh_anh') + ' ' + nameSector.toLowerCase();\r\n }\r\n\r\n // Gán url và kích thước vào 5 thiết bị khi mới add ra\r\n this.devices.forEach((device) => {\r\n // Gán url ảnh cho từng thiết bị\r\n if (url) {\r\n imgJson.staticdata.img[device.value + '_img'] = url;\r\n }\r\n\r\n // Resize ảnh sao cho không vượt quá kích thước thiết bị, đồng thời giữ đúng aspect ratio\r\n const maxWidth = isNaN(Number(size?.width)) ? device.width : size.width;\r\n const maxHeight = isNaN(Number(size?.height)) ? device.height : size.height;\r\n\r\n // Kiểm tra nếu ảnh nhỏ hơn hoặc bằng cả chiều rộng và chiều cao của thiết bị\r\n const isImageFits = resolutionImg.width <= maxWidth && resolutionImg.height <= maxHeight;\r\n\r\n let finalWidth: number;\r\n let finalHeight: number;\r\n\r\n if (isImageFits) {\r\n // Giữ nguyên ảnh nếu nó nhỏ hơn hoặc bằng thiết bị\r\n finalWidth = resolutionImg.width;\r\n finalHeight = resolutionImg.height;\r\n }\r\n else {\r\n // Tính scale để giữ đúng tỉ lệ và fit vào device\r\n const scale = Math.min(\r\n maxWidth / resolutionImg.width,\r\n maxHeight / resolutionImg.height\r\n );\r\n\r\n finalWidth = Math.round(resolutionImg.width * scale);\r\n finalHeight = Math.round(resolutionImg.height * scale);\r\n }\r\n\r\n // Gán kích thước ảnh cho từng thiết bị, giữ nguyên các thuộc tính khác\r\n imgJson[device.value + '_class'] = {\r\n ...imgJson['desktop_class'],\r\n image: {\r\n ...imgJson['desktop_class']['image'],\r\n width: `${finalWidth}px`,\r\n height: `${finalHeight}px`,\r\n }\r\n };\r\n });\r\n\r\n // Kiểm tra object có otype hay không để truyền đúng tham số cho hàm addObject\r\n const hasOType = Boolean(_this.data?.otype);\r\n\r\n this.pagesService.addObject(imgJson, hasOType ? null : _this.data, hasOType ? _this.data : null)\r\n .then((data) => {\r\n // Thêm object thành công thì báo thành công, ngược lại báo lỗi\r\n if (data) {\r\n this.createMessage('success', 'them_vat_the_thanh_cong');\r\n } else {\r\n this.createMessage('error', 'them_vat_the_that_bai');\r\n }\r\n }).catch((error) => {\r\n // Lỗi khi thêm object thì báo lỗi và ẩn loading\r\n if (isPlatformBrowser(this.platformId))\r\n console.error('addObject error', error);\r\n this.createMessage('error', 'loi_khi_goi_ham_them_vat_the_anh');\r\n this.hideLoading(200);\r\n });\r\n }\r\n\r\n\r\n\r\n /**\r\n * hàm này dùng để copy block\r\n * @param id_page _id của page chứa block\r\n * @param block block có NHÁNH(objects) cần copy\r\n */\r\n public async handleCopyBlock(id_page: string, block: any): Promise<void> {\r\n const findBlock: any = await this.vhQueryAutoWeb.getBlock(block._id);\r\n if (block.isClone && findBlock) {\r\n await this.vhQueryAutoWeb.updateBlock(block._id, {\r\n ['desktop_position_' + id_page]: block['desktop_position_' + block.id_page],\r\n ['mobile_landscape_position_' + id_page]: block['mobile_landscape_position_' + block.id_page],\r\n ['mobile_portrait_position_' + id_page]: block['mobile_portrait_position_' + block.id_page],\r\n ['tablet_landscape_position_' + id_page]: block['tablet_landscape_position_' + block.id_page],\r\n ['tablet_portrait_position_' + id_page]: block['tablet_portrait_position_' + block.id_page],\r\n })\r\n\r\n const findPage: any = await this.vhQueryAutoWeb.getPage(id_page);\r\n if (!findPage.id_clone_blocks) findPage.id_clone_blocks = [];\r\n if (findPage && !findPage.id_clone_blocks.some((id: string) => id == block._id)) {\r\n findPage.id_clone_blocks.push(block._id);\r\n await this.vhQueryAutoWeb.updatePage(id_page, {\r\n id_clone_blocks: findPage.id_clone_blocks,\r\n });\r\n }\r\n return;\r\n }\r\n\r\n\r\n let data_block: any = {\r\n ...block,\r\n };\r\n // delete data_block.id_clone_objects;\r\n delete data_block._id;\r\n delete data_block.id_page;\r\n delete data_block.isClone;\r\n\r\n data_block.objects = [];\r\n data_block.id_page = id_page;\r\n data_block.name = block.name + '- Copy';\r\n this.devices.forEach((dv) => {\r\n const device = dv.value;\r\n data_block[device + '_position_' + id_page] = {\r\n ...block[device + '_position_' + block.id_page],\r\n };\r\n });\r\n const blockRes: any = await this.vhQueryAutoWeb.addBlock(data_block);\r\n if (block.objects && block.objects.length > 0) {\r\n for (const obj of block.objects) {\r\n await this.handleCopyObject('block', blockRes._id, obj);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Hàm này dùng để copy object\r\n * @param id_parent id của block hoặc object mà object sẽ add vào\r\n * @param object object có NHÁNH(objects) cần copy\r\n */\r\n public async handleCopyObject(type_parent: string | 'block' | 'object', id_parent: string, object: any): Promise<void> {\r\n const findObject: any = await this.vhQueryAutoWeb.getObject(object._id);\r\n if (object.isClone && findObject) {\r\n await this.vhQueryAutoWeb.updateObject(object._id, {\r\n ['desktop_position_' + id_parent]: object['desktop_position_' + (object.id_block || object.id_object)],\r\n ['mobile_landscape_position_' + id_parent]: object['mobile_landscape_position_' + (object.id_block || object.id_object)],\r\n ['mobile_portrait_position_' + id_parent]: object['mobile_portrait_position_' + (object.id_block || object.id_object)],\r\n ['tablet_landscape_position_' + id_parent]: object['tablet_landscape_position_' + (object.id_block || object.id_object)],\r\n ['tablet_portrait_position_' + id_parent]: object['tablet_portrait_position_' + (object.id_block || object.id_object)],\r\n })\r\n\r\n const findParent: any = (type_parent == 'block')\r\n ? await this.vhQueryAutoWeb.getBlock(id_parent)\r\n : await this.vhQueryAutoWeb.getObject(id_parent);\r\n if (!findParent.id_clone_objects) findParent.id_clone_objects = [];\r\n if (findParent && !findParent.id_clone_objects.some((id: string) => id == object._id)) {\r\n findParent.id_clone_objects.push(object._id);\r\n if (type_parent == 'block') {\r\n await this.vhQueryAutoWeb.updateBlock(id_parent, {\r\n id_clone_objects: findParent.id_clone_objects,\r\n });\r\n }\r\n if (type_parent == 'object') {\r\n await this.vhQueryAutoWeb.updateObject(id_parent, {\r\n id_clone_objects: findParent.id_clone_objects,\r\n });\r\n }\r\n }\r\n return;\r\n }\r\n\r\n let new_data: any = {\r\n ...object,\r\n };\r\n // delete new_data.id_clone_objects;\r\n delete new_data._id;\r\n delete new_data.isClone;\r\n new_data.objects = [];\r\n if (type_parent == 'block') {\r\n new_data.id_block = id_parent;\r\n delete new_data.id_object;\r\n }\r\n if (type_parent == 'object') {\r\n new_data.id_object = id_parent;\r\n delete new_data.id_block;\r\n }\r\n new_data.name = object.name + '- Copy';\r\n this.devices.forEach((dv) => {\r\n const device = dv.value;\r\n new_data[device + '_position_' + id_parent] = {\r\n ...object[device + '_position_' + (object.id_block || object.id_object)],\r\n };\r\n });\r\n const objectRes: any = await this.vhQueryAutoWeb.addObject(new_data);\r\n if (object.objects && object.objects.length > 0) {\r\n for (const obj of object.objects) {\r\n await this.handleCopyObject('object', objectRes._id, obj);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * hàm tạo trang mới dựa vào trang truyền vào, ko trùng name, link\r\n * @param page page không cần nhánh\r\n * @returns \r\n */\r\n public async handleCopyPage(page: any) {\r\n const dataAdd = { ...page };\r\n\r\n const pages: any = await this.vhQueryAutoWeb.getPages();\r\n // Hậu tố thêm vào khi trùng lặp\r\n const COPY_SUFFIX = '-Copy';\r\n\r\n /**\r\n * Hàm này nhận một giá trị gốc, kiểm tra xem nó có tồn tại trong mảng `pages` không.\r\n * Nếu có, nó sẽ tiếp tục thêm hậu tố `-Copy` cho đến khi giá trị đó là duy nhất.\r\n * @param originalValue - Giá trị ban đầu (ví dụ: 'Trang chủ')\r\n * @param field - Tên trường cần kiểm tra (ví dụ: 'name' hoặc 'link')\r\n * @returns - Giá trị mới, đảm bảo không trùng lặp\r\n */\r\n function generateUniqueValue(originalValue: string, field: string): string {\r\n let newValue = originalValue + COPY_SUFFIX;\r\n\r\n // Lặp lại việc thêm '-Copy' cho đến khi `newValue` không còn tồn tại trong danh sách\r\n while (pages.some(p => p[field] === newValue)) {\r\n newValue += COPY_SUFFIX;\r\n }\r\n\r\n return newValue;\r\n }\r\n\r\n Object.keys(dataAdd).forEach(key => {\r\n if (key.startsWith('name_')) {\r\n dataAdd[key] = generateUniqueValue(dataAdd[key], key);\r\n }\r\n })\r\n\r\n dataAdd.link = generateUniqueValue(dataAdd.link, 'link');\r\n\r\n delete dataAdd._id;\r\n delete dataAdd.freeblocks\r\n\r\n if (pages.some((p: any) => p._id == page._id)) {\r\n // nếu trang từ dự án khác thì add mới tất cả, ko clone được\r\n delete dataAdd.id_clone_blocks\r\n }\r\n\r\n const res: any = await this.vhQueryAutoWeb.addPage(dataAdd);\r\n\r\n if (page.blocks && page.blocks.length > 0) {\r\n for (const block of page.blocks) {\r\n await this.handleCopyBlock(res._id, block);\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Lấy chiều cao gốc của ảnh\r\n * @param url Đưỡng dẫn hình ảnh\r\n * @returns Promise<{width: number, height: number}>\r\n * @example \r\n * this.getImageHeight('https://example.com/img.png')\r\n * .then(imgHeight => console.log('Chiều cao gốc của ảnh', imgHeight))\r\n * .catch(err => console.log('Lỗi tải ảnh', err)});\r\n */\r\n public getImageSize(url: string): Promise<{ width: number, height: number }> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.src = url;\r\n\r\n img.onload = () => {\r\n resolve({\r\n width: img.width,\r\n height: img.height,\r\n }); // lấy size gốc của ảnh\r\n };\r\n\r\n img.onerror = (err) => {\r\n reject(err);\r\n };\r\n });\r\n }\r\n\r\n\r\n\r\n /**\r\n * Kiểm tra nội dung script có hợp lệ không.\r\n * - Hợp lệ nếu:\r\n * + Là mã JS chạy được\r\n * + Hoặc là một đoạn <script>...</script>\r\n */\r\n checkInvalidScript(scriptContent: string): boolean {\r\n if (!scriptContent || typeof scriptContent !== 'string') return true;\r\n\r\n const trimmed = scriptContent.trim();\r\n\r\n // Nếu chuỗi chỉ là một từ đơn => chắc chắn sai\r\n if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(trimmed)) return true;\r\n\r\n // Nếu có chứa thẻ <script> thì coi là hợp lệ (sẽ xử lý riêng)\r\n if (/<script[\\s\\S]*?>[\\s\\S]*?<\\/script>/i.test(trimmed)) return false;\r\n\r\n // Nếu không có thẻ script, thử parse JS\r\n try {\r\n new Function(trimmed); // kiểm tra cú pháp\r\n return false; // hợp lệ\r\n } catch {\r\n return true; // lỗi cú pháp\r\n }\r\n }\r\n\r\n /**\r\n * Nhúng các script từ setup (có thể nhiều) dựa trên id và type vào elementRef\r\n * @param id ID của page, block hoặc object\r\n * @param type Loại data_type ('page', 'block', hoặc 'object')\r\n * @param elementRef ElementRef để nhúng script\r\n */\r\n public embeddedScriptObject(id: string, type: string, elementRef: any): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n let query: any = { data_type: { $eq: type } };\r\n\r\n // Gán field tương ứng với type\r\n switch (type) {\r\n case 'page':\r\n query.page_id = { $eq: id };\r\n break;\r\n case 'block':\r\n query.block_id = { $eq: id };\r\n break;\r\n case 'object':\r\n query.object_id = { $eq: id };\r\n break;\r\n default:\r\n return reject(new Error(`Invalid type: ${type}`));\r\n }\r\n\r\n this.vhQueryAutoWeb.getSetups_byFields(query)\r\n .then((response: any[]) => {\r\n if (!response?.length) return resolve();\r\n\r\n const targetElement: HTMLElement = elementRef?.nativeElement;\r\n if (!targetElement) {\r\n console.warn('elementRef không hợp lệ');\r\n return resolve();\r\n }\r\n\r\n response.forEach(item => {\r\n if (!item.active || !item.data) return;\r\n\r\n const scriptData = item.data.trim();\r\n\r\n if (this.checkInvalidScript(scriptData)) {\r\n console.warn('Script không hợp lệ, bỏ qua:', scriptData);\r\n return;\r\n }\r\n\r\n // Regex tách các script\r\n const srcRegex = /<script[^>]*src=[\"']([^\"']+)[\"'][^>]*><\\/script>/i;\r\n const matchSrc = scriptData.match(srcRegex);\r\n\r\n if (matchSrc && matchSrc[1]) {\r\n // Có src → nhúng script file ngoài\r\n const src = matchSrc[1];\r\n if (targetElement.querySelector(`script[src=\"${src}\"]`)) {\r\n console.log('Script đã tồn tại:', src);\r\n return;\r\n }\r\n\r\n const scriptEl = document.createElement('script');\r\n scriptEl.type = 'text/javascript';\r\n scriptEl.src = src;\r\n scriptEl.async = false;\r\n targetElement.appendChild(scriptEl);\r\n } else {\r\n // Inline script\r\n const inlineRegex = /<script[^>]*>([\\s\\S]*?)<\\/script>/gi;\r\n const matches = [...scriptData.matchAll(inlineRegex)];\r\n\r\n if (matches.length) {\r\n matches.forEach(m => {\r\n const scriptEl = document.createElement('script');\r\n scriptEl.type = 'text/javascript';\r\n scriptEl.text = m[1];\r\n targetElement.appendChild(scriptEl);\r\n });\r\n } else {\r\n // Nếu chỉ là JS code thuần (không có thẻ <script>)\r\n const scriptEl = document.createElement('script');\r\n scriptEl.type = 'text/javascript';\r\n scriptEl.text = scriptData;\r\n targetElement.appendChild(scriptEl);\r\n }\r\n }\r\n });\r\n\r\n resolve();\r\n })\r\n .catch(err => {\r\n console.error('Lỗi khi lấy script:', err);\r\n reject(err);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Mảng màu sắc theme\r\n */\r\n themeColors = [\r\n \"#008848\",\r\n \"#f5a62f\",\r\n \"#ff000a\"\r\n ];\r\n /** Số lượng màu mẫu tối đa */\r\n cpMaxPresetColorsLength: number = 30;\r\n setupThemeColor: any;\r\n\r\n /**\r\n * Lấy cấu hình màu sắc theme\r\n */\r\n initThemeColorConfig() {\r\n this.vhQueryAutoWeb.getSetups_byFields({ type: { $in: ['theme_color'] } }).then((res: any) => {\r\n this.setupThemeColor = res.find((ele) => ele.type == 'theme_color');\r\n this.themeColors = this.setupThemeColor ? this.setupThemeColor.themeColors : this.themeColors;\r\n // Nếu chưa có cấu hình màu thì thêm\r\n if (!this.setupThemeColor) {\r\n this.vhQueryAutoWeb.addSetup({\r\n type: 'theme_color',\r\n themeColors: this.themeColors\r\n }).then((res: any) => {\r\n this.setupThemeColor = res.data;\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Khi có sự thay đổi màu sắc từ color picker\r\n */\r\n presetColorsChange(colors: string[]) {\r\n this.themeColors = colors;\r\n this.vhQueryAutoWeb.updateSetup(this.setupThemeColor._id, {\r\n themeColors: this.themeColors\r\n }).then((bool: any) => {\r\n // console.log('bool', bool);\r\n }).catch((error: any) => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n\r\n /** \r\n * Hàm kiểm tra \r\n * - Ratio có bị lệch nhiều hay không hoặc \r\n * - Kích thước có lớn hơn nhiều so với kích thước hiển thị hay không?\r\n * @param imgSize Kích thước của file ảnh gốc\r\n * @param containerSize Kích thước thực tế người dùng thấy\r\n */\r\n checkRatioDesignImgSize(imgSize, containerSize) {\r\n // Ratio\r\n const imgRatio = imgSize.width / imgSize.height;\r\n const containerRatio = containerSize.width / containerSize.height;\r\n\r\n // Ratio lệch trên 10% → ảnh bị méo → return true\r\n const ratioDiff = Math.abs(imgRatio - containerRatio) / containerRatio;\r\n if (ratioDiff > 0.1) {\r\n return true;\r\n }\r\n\r\n // Tại đây: ratio giống nhau hoặc lệch ít → xét về kích thước\r\n const widthFactor = imgSize.width / containerSize.width;\r\n const heightFactor = imgSize.height / containerSize.height;\r\n\r\n // Ảnh lớn hơn container nhiều → ảnh nặng → giảm PageSpeed → return true\r\n if (\r\n widthFactor > 1.5\r\n || heightFactor > 1.5\r\n ) {\r\n return true;\r\n }\r\n\r\n // Ảnh lớn hơn chút nhưng không ảnh hưởng PageSpeed → return false\r\n return false;\r\n }\r\n\r\n\r\n /**\r\n * XỬ lý gán giá trị tương ứng vào thuộc tính width, height cho thẻ img\r\n * @param containerElement \r\n */\r\n async applyImageSizesForCkEditor(containerElement: HTMLElement): Promise<void> {\r\n const imagesWidget = Array.from(containerElement.querySelectorAll(\r\n 'span.image-inline, figure.image'\r\n ));\r\n\r\n for (const imgWidget of imagesWidget) {\r\n const img = imgWidget.querySelector('img');\r\n if (!img) continue;\r\n\r\n // Lấy kích thước thực của ảnh\r\n const imgSize = await this.getImageSize(img.src);\r\n\r\n // Lấy width/height trong style của widget (Nếu có)\r\n const styleWidget = imgWidget.getAttribute('style');\r\n const resize = this.getSizeFromStyle(styleWidget);\r\n\r\n // Nếu widget không có width thì dùng width của hình (Trường hợp chưa resize ảnh)\r\n resize.width ??= imgSize.width;\r\n\r\n // TH1: Nếu so sánh width resize == width ảnh thì dùng width của hình (Trường hợp chưa resize ảnh)\r\n // TH2: Tính height theo tỉ lệ của ảnh và width resize\r\n resize.height = resize.width == imgSize.width\r\n ? imgSize.height\r\n : Math.round((imgSize.height * resize.width) / imgSize.width);\r\n\r\n // Gán attributes\r\n img.setAttribute('width', String(resize.width));\r\n img.setAttribute('height', String(resize.height));\r\n\r\n // Thêm height:auto vào style img nếu chưa có\r\n const oldStyle = img.getAttribute('style') || '';\r\n if (!/height\\s*:\\s*auto/i.test(oldStyle)) {\r\n img.setAttribute('style', oldStyle + 'height:auto;');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Lấy kích thước resize trong ck từ style\r\n */\r\n getSizeFromStyle(style?): { width: number | null; height: number | null } {\r\n if (!style) return { width: null, height: null };\r\n const width = style.match(/width\\s*:\\s*(\\d+)px/);\r\n const height = style.match(/height\\s*:\\s*(\\d+)px/);\r\n\r\n return {\r\n width: width ? Number(width[1]) : null,\r\n height: height ? Number(height[1]) : null\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { VhQueryAutoWeb } from 'vhautowebdb';\r\n\r\n/**\r\n * Service xử lý các phương thức liên quan của THEME.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ThemeService {\r\n\r\n /**\r\n * Mảng màu sắc theme\r\n */\r\n themeColors = [\r\n \"#008848\",\r\n \"#f5a62f\",\r\n \"#ff000a\"\r\n ];\r\n /** Số lượng màu mẫu tối đa */\r\n cpMaxPresetColorsLength: number = 30;\r\n setupThemeColor: any;\r\n\r\n\r\n constructor(\r\n private vhQueryAutoWeb: VhQueryAutoWeb\r\n ) {\r\n // Lấy cấu hình màu sắc theme\r\n this.vhQueryAutoWeb.getSetups_byFields({ type: { $in: ['theme_color'] } }).then((res: any) => {\r\n this.setupThemeColor = res.find((ele) => ele.type == 'theme_color');\r\n this.themeColors = this.setupThemeColor ? this.setupThemeColor.themeColors : this.themeColors;\r\n // Nếu chưa có cấu hình màu thì thêm\r\n if(!this.setupThemeColor) {\r\n this.vhQueryAutoWeb.addSetup({\r\n type: 'theme_color',\r\n themeColors: this.themeColors\r\n }).then((res: any) => {\r\n this.setupThemeColor = res.data;\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Khi có sự thay đổi màu sắc từ color picker\r\n */\r\n presetColorsChange(colors: string[]) {\r\n this.themeColors = colors;\r\n this.vhQueryAutoWeb.updateSetup(this.setupThemeColor._id, {\r\n themeColors: this.themeColors\r\n }).then((bool: any) => {\r\n // console.log('bool', bool);\r\n }).catch((error: any) => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n}\r\n","import { VhQueryAutoWeb } from 'vhautowebdb';\r\nimport { FunctionService } from './function.service';\r\n\r\n\r\nexport abstract class AtwUpdateDbBlock {\r\n \r\n type: any;\r\n blockChoosing: any;\r\n device: any;\r\n class: any;\r\n config: any;\r\n staticdata: any;\r\n position: any;\r\n\r\n\r\n constructor(\r\n public vhQueryAutoWeb: VhQueryAutoWeb,\r\n public functionService: FunctionService\r\n ) { }\r\n\r\n\r\n /**\r\n * Hàm update object vào database.\r\n */\r\n updateObject() {\r\n if (this.type == 'admin') {\r\n if (!this.blockChoosing.hasOwnProperty('fieldUpdate')) this.blockChoosing['fieldUpdate'] = [];\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.blockChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.blockChoosing) \r\n if (!this.blockChoosing['fieldUpdate'].includes(this.device + '_class')) this.blockChoosing['fieldUpdate'].push(this.device + '_class');\r\n if (!this.blockChoosing['fieldUpdate'].includes(this.device + '_config')) this.blockChoosing['fieldUpdate'].push(this.device + '_config');\r\n if (!this.blockChoosing['fieldUpdate'].includes('staticdata')) this.blockChoosing['fieldUpdate'].push('staticdata');\r\n return;\r\n }\r\n this.vhQueryAutoWeb.updateBlock(this.blockChoosing._id, {\r\n [this.device + '_class']: this.class,\r\n [this.device + '_config']: this.config,\r\n staticdata: this.staticdata\r\n }).then((bool) => {\r\n // console.log('updateBlock', bool);\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Hàm update class vào database.\r\n */\r\n updateClass() {\r\n if (this.type == 'admin') {\r\n if (!this.blockChoosing.hasOwnProperty('fieldUpdate')) this.blockChoosing['fieldUpdate'] = [];\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.blockChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.blockChoosing)\r\n if (!this.blockChoosing['fieldUpdate'].includes(this.device + '_class')) this.blockChoosing['fieldUpdate'].push(this.device + '_class');\r\n return;\r\n }\r\n this.vhQueryAutoWeb.updateBlock(this.blockChoosing._id, {\r\n [this.device + '_class']: this.class\r\n }).then((bool) => {\r\n // console.log('updateBlock', bool);\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Hàm update config vào database.\r\n */\r\n updateConfig() {\r\n if (this.type == 'admin') {\r\n if (!this.blockChoosing.hasOwnProperty('fieldUpdate')) this.blockChoosing['fieldUpdate'] = [];\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.blockChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.blockChoosing)\r\n if (!this.blockChoosing['fieldUpdate'].includes(this.device + '_config')) this.blockChoosing['fieldUpdate'].push(this.device + '_config');\r\n return;\r\n }\r\n this.vhQueryAutoWeb.updateBlock(this.blockChoosing._id, {\r\n [this.device + '_config']: this.config\r\n }).then((bool) => {\r\n // console.log('updateBlock', bool);\r\n });\r\n }\r\n \r\n\r\n /**\r\n * Hàm update staticdata vào database.\r\n */\r\n updateStaticData() {\r\n if (this.type == 'admin') {\r\n if (!this.blockChoosing.hasOwnProperty('fieldUpdate')) this.blockChoosing['fieldUpdate'] = [];\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.blockChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.blockChoosing)\r\n if (!this.blockChoosing['fieldUpdate'].includes('staticdata')) this.blockChoosing['fieldUpdate'].push('staticdata');\r\n return;\r\n }\r\n this.vhQueryAutoWeb\r\n .updateBlock(this.blockChoosing._id, { \r\n staticdata: this.staticdata \r\n }).then((bool) => {\r\n // console.log('updateBlock', bool);\r\n });\r\n }\r\n\r\n //Hàm update position\r\n updatePosition() { \r\n if (this.type == 'admin') {\r\n if (!this.blockChoosing.hasOwnProperty('fieldUpdate')) this.blockChoosing['fieldUpdate'] = [];\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.blockChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.blockChoosing)\r\n if (!this.blockChoosing['fieldUpdate'].includes(this.device + '_position_')) this.blockChoosing['fieldUpdate'].push(this.device + '_position_');\r\n return;\r\n }\r\n this.vhQueryAutoWeb\r\n .updateBlock(this.blockChoosing._id, {\r\n [this.device + '_position_']: this.position,\r\n })\r\n .then((bool: any) => { \r\n });\r\n }\r\n}\r\n","import { VhQueryAutoWeb } from 'vhautowebdb';\r\nimport { FunctionService } from './function.service';\r\n\r\nexport abstract class AtwUpdateDbObject {\r\n type: any;\r\n objectChoosing: any;\r\n device: any;\r\n class: any;\r\n config: any;\r\n staticdata: any;\r\n\r\n constructor(\r\n public vhQueryAutoWeb: VhQueryAutoWeb,\r\n public functionService: FunctionService\r\n ) {\r\n\r\n }\r\n\r\n /**\r\n * Hàm update object vào database.\r\n */\r\n updateObject() {\r\n if (this.type == 'admin') {\r\n if (!this.objectChoosing.hasOwnProperty('fieldUpdate')) this.objectChoosing['fieldUpdate'] = []\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.objectChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.objectChoosing)\r\n if (!this.objectChoosing['fieldUpdate'].includes(this.device + '_class')) this.objectChoosing['fieldUpdate'].push(this.device + '_class')\r\n if (!this.objectChoosing['fieldUpdate'].includes(this.device + '_config')) this.objectChoosing['fieldUpdate'].push(this.device + '_config')\r\n if (!this.objectChoosing['fieldUpdate'].includes('staticdata')) this.objectChoosing['fieldUpdate'].push('staticdata')\r\n return;\r\n }\r\n this.vhQueryAutoWeb.updateObject(this.objectChoosing._id, {\r\n [this.device + '_class']: this.class,\r\n [this.device + '_config']: this.config,\r\n staticdata: this.staticdata\r\n })\r\n\r\n }\r\n /**\r\n *Hàm update class vào database.\r\n */\r\n updateClass() {\r\n if (this.type == 'admin') { \r\n if (!this.objectChoosing.hasOwnProperty('fieldUpdate')) this.objectChoosing['fieldUpdate'] = []\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.objectChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.objectChoosing)\r\n if (!this.objectChoosing['fieldUpdate'].includes(this.device + '_class')) this.objectChoosing['fieldUpdate'].push(this.device + '_class')\r\n return;\r\n }\r\n this.vhQueryAutoWeb.updateObject(this.objectChoosing._id, {\r\n [this.device + '_class']: this.class\r\n })\r\n\r\n }\r\n\r\n updateConfig() {\r\n if (this.type == 'admin') {\r\n if (!this.objectChoosing.hasOwnProperty('fieldUpdate')) this.objectChoosing['fieldUpdate'] = []\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.objectChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.objectChoosing)\r\n if (!this.objectChoosing['fieldUpdate'].includes(this.device + '_config')) this.objectChoosing['fieldUpdate'].push(this.device + '_config')\r\n return;\r\n }\r\n this.vhQueryAutoWeb.updateObject(this.objectChoosing._id, {\r\n [this.device + '_config']: this.config\r\n })\r\n }\r\n\r\n updateClassAndConfig() {\r\n if (this.type == 'admin') {\r\n if (!this.objectChoosing.hasOwnProperty('fieldUpdate')) this.objectChoosing['fieldUpdate'] = []\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.objectChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.objectChoosing)\r\n if (!this.objectChoosing['fieldUpdate'].includes(this.device + '_class')) this.objectChoosing['fieldUpdate'].push(this.device + '_class')\r\n if (!this.objectChoosing['fieldUpdate'].includes(this.device + '_config')) this.objectChoosing['fieldUpdate'].push(this.device + '_config')\r\n return;\r\n }\r\n this.vhQueryAutoWeb.updateObject(this.objectChoosing._id, {\r\n [this.device + '_config']: this.config,\r\n [this.device + '_class']: this.class,\r\n });\r\n }\r\n\r\n /**\r\n * image có setups\r\n * Cập nhật Setups vào database.\r\n */\r\n updateSetups() {\r\n if (this.type == 'admin') {\r\n if (!this.objectChoosing.hasOwnProperty('fieldUpdate')) this.objectChoosing['fieldUpdate'] = []\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.objectChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.objectChoosing)\r\n if (!this.objectChoosing['fieldUpdate'].includes('setups')) this.objectChoosing['fieldUpdate'].push('setups')\r\n return;\r\n }\r\n // Gọi hàm truy vấn cơ sở dữ liệu ở đây\r\n this.vhQueryAutoWeb\r\n .updateObject(this.objectChoosing._id, { setups: this.objectChoosing.setups })\r\n .then((bool) => {\r\n // console.log('updateObject', bool);\r\n });\r\n }\r\n\r\n updateStaticData() {\r\n if (this.type == 'admin') {\r\n if (!this.objectChoosing.hasOwnProperty('fieldUpdate')) this.objectChoosing['fieldUpdate'] = []\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.objectChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.objectChoosing)\r\n if (!this.objectChoosing['fieldUpdate'].includes('staticdata')) this.objectChoosing['fieldUpdate'].push('staticdata')\r\n return;\r\n }\r\n // Gọi hàm truy vấn cơ sở dữ liệu ở đây\r\n this.vhQueryAutoWeb\r\n .updateObject(this.objectChoosing._id, { staticdata: this.staticdata })\r\n .then((bool) => {\r\n // console.log('updateObject', bool);\r\n });\r\n }\r\n\r\n // menu có groups\r\n updateGroups() {\r\n if (this.type == 'admin') {\r\n if (!this.objectChoosing.hasOwnProperty('fieldUpdate')) this.objectChoosing['fieldUpdate'] = []\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.objectChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.objectChoosing)\r\n if (!this.objectChoosing['fieldUpdate'].includes('groups')) this.objectChoosing['fieldUpdate'].push('groups')\r\n return;\r\n }\r\n this.vhQueryAutoWeb\r\n .updateObject(this.objectChoosing._id, {\r\n groups: this.objectChoosing['groups'],\r\n })\r\n .then(\r\n (bool) => {\r\n \r\n },\r\n (error) => {\r\n console.error(error);\r\n }\r\n );\r\n }\r\n\r\n}\r\n","import { VhEventMediator, VhQueryAutoWeb } from 'vhautowebdb';\r\nimport { FunctionService } from './function.service';\r\n\r\nexport abstract class AtwUpdateDbComponent {\r\n type: any;\r\n device: any;\r\n class: any;\r\n config: any;\r\n staticdata: any;\r\n position: any;\r\n\r\n objectChoosing: any;\r\n blockChoosing: any;\r\n constructor(\r\n public vhQueryAutoWeb: VhQueryAutoWeb,\r\n public vhEventMediator: VhEventMediator,\r\n public functionService: FunctionService\r\n ) { }\r\n\r\n // Trả về object hoặc block đang được chọn\r\n protected getTargetChoosing() {\r\n return this.objectChoosing ?? this.blockChoosing;\r\n }\r\n\r\n protected getUpdateMethod() {\r\n return this.objectChoosing ? this.vhQueryAutoWeb.updateObject : this.vhQueryAutoWeb.updateBlock;\r\n }\r\n\r\n protected updateFieldUpdate(fields: string[]) {\r\n const target = this.getTargetChoosing();\r\n if (!target.hasOwnProperty('fieldUpdate')) target['fieldUpdate'] = [];\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == target._id)) {\r\n this.functionService.objectsAndBlocksUpdated.push(target);\r\n }\r\n for (const field of fields) {\r\n if (!target['fieldUpdate'].includes(field)) {\r\n target['fieldUpdate'].push(field);\r\n }\r\n }\r\n }\r\n\r\n updateObject() {\r\n const target = this.getTargetChoosing();\r\n const fields = [`${this.device}_class`, `${this.device}_config`, 'staticdata'];\r\n if (this.type === 'admin') {\r\n this.updateFieldUpdate(fields);\r\n return;\r\n }\r\n this.getUpdateMethod().call(this.vhQueryAutoWeb, target._id, {\r\n [fields[0]]: this.class,\r\n [fields[1]]: this.config,\r\n staticdata: this.staticdata\r\n });\r\n }\r\n\r\n updateClass() {\r\n const target = this.getTargetChoosing();\r\n const field = `${this.device}_class`;\r\n if (this.type === 'admin') {\r\n this.updateFieldUpdate([field]);\r\n return;\r\n }\r\n this.getUpdateMethod().call(this.vhQueryAutoWeb, target._id, {\r\n [field]: this.class\r\n });\r\n }\r\n\r\n updateConfig() {\r\n const target = this.getTargetChoosing();\r\n const field = `${this.device}_config`;\r\n if (this.type === 'admin') {\r\n this.updateFieldUpdate([field]);\r\n return;\r\n }\r\n this.getUpdateMethod().call(this.vhQueryAutoWeb, target._id, {\r\n [field]: this.config\r\n });\r\n }\r\n\r\n updateStaticData() {\r\n const target = this.getTargetChoosing();\r\n if (this.type === 'admin') {\r\n this.updateFieldUpdate(['staticdata']);\r\n return;\r\n }\r\n this.getUpdateMethod().call(this.vhQueryAutoWeb, target._id, {\r\n staticdata: this.staticdata\r\n });\r\n }\r\n\r\n updatePosition() {\r\n const target = this.getTargetChoosing();\r\n const field = `${this.device}_position_`;\r\n if (this.type === 'admin') {\r\n this.updateFieldUpdate([field]);\r\n return;\r\n }\r\n this.getUpdateMethod().call(this.vhQueryAutoWeb, target._id, {\r\n [field]: this.position\r\n });\r\n }\r\n\r\n updateSetups() {\r\n const target = this.getTargetChoosing();\r\n if (this.type === 'admin') {\r\n this.updateFieldUpdate(['setups']);\r\n return;\r\n }\r\n if (this.objectChoosing) {\r\n this.vhQueryAutoWeb\r\n .updateObject(target._id, { setups: target.setups })\r\n .then(() => {});\r\n }\r\n }\r\n\r\n updateGroups() {\r\n const target = this.getTargetChoosing();\r\n if (this.type === 'admin') {\r\n this.updateFieldUpdate(['groups']);\r\n return;\r\n }\r\n if (this.objectChoosing) {\r\n this.vhQueryAutoWeb\r\n .updateObject(target._id, { groups: target.groups })\r\n .then(() => {}, (err) => console.error(err));\r\n }\r\n }\r\n\r\n updateClassAndConfig() {\r\n const target = this.getTargetChoosing();\r\n const fields = [`${this.device}_class`, `${this.device}_config`];\r\n if (this.type === 'admin') {\r\n this.updateFieldUpdate(fields);\r\n return;\r\n }\r\n this.getUpdateMethod().call(this.vhQueryAutoWeb, target._id, {\r\n [fields[0]]: this.class,\r\n [fields[1]]: this.config\r\n });\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.JsonDataService","i2","i3","i4.LanguageService","i8.LanguageService","i9.PagesService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;MAIa,eAAe,CAAA;AAE1B,IAAA,WAAA,CACU,gBAAkC,EAClC,IAAgB,EAChB,IAAmB,EAAA;QAFnB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAChB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAe;KACxB;AAEE,IAAA,SAAS,CAAC,GAAW,EAAA;AAC1B,QAAA,IAAI,KAAa,CAAA;AACjB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,CAAA;AAC5D,QAAA,OAAO,KAAK,CAAA;KACb;AAED,IAAA,cAAc,CAAC,GAAG,EAAA;AAChB,QAAA,QAAQ,GAAG;AACT,YAAA,KAAK,IAAI;AAAE,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAM;AAC7C,YAAA;AAAS,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAM;AAC5C,SAAA;KACF;;IAED,YAAY,GAAA;QAEV,MAAM,eAAe,GAAG,8CAA8C,CAAC;QACvE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,eAAe,CAAC,CAAC;KAC9C;;6GAzBU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCAY,eAAe,CAAA;AAW1B,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;;AAR5B,QAAA,IAAA,CAAA,4BAA4B,GAAG;YACrC,iBAAiB;YACjB,kBAAkB;YAClB,kBAAkB;YAClB,iBAAiB;SAClB,CAAC;KAGuC;AAEzC;;;;AAIG;AACH,IAAA,WAAW,CAAC,SAAiB,EAAA;AAC3B,QAAA,MAAM,GAAG,GAAG,CAA0B,uBAAA,EAAA,SAAS,OAAO,CAAC;QACvD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC3B;AAED;;;;;AAKG;IACH,YAAY,CAAC,IAAY,EAAE,IAAY,EAAA;AACrC,QAAA,IAAI,GAAG,GAAG,CAAA,+BAAA,EAAkC,IAAI,CAAI,CAAA,EAAA,IAAI,OAAO,CAAC;QAChE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC3B;AAED;;;AAGG;IACH,gBAAgB,GAAA;QACd,MAAM,GAAG,GAAG,CAAA,iCAAA,CAAmC,CAAC;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,GAAG,CAAC,CAAC;KAClC;AAED;;;AAGG;IACH,eAAe,GAAA;QACb,MAAM,GAAG,GAAG,CAAA,gCAAA,CAAkC,CAAC;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,GAAG,CAAC,CAAC;KAClC;AAED;;;AAGG;IACH,eAAe,GAAA;QACb,MAAM,GAAG,GAAG,CAAA,gCAAA,CAAkC,CAAC;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,GAAG,CAAC,CAAC;KAClC;AAED;;;;AAIG;AACH,IAAA,WAAW,CAAC,SAAiB,EAAA;AAC3B,QAAA,MAAM,GAAG,GAAG,CAA0B,uBAAA,EAAA,SAAS,OAAO,CAAC;QACvD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC3B;;AAGD;;;;AAIG;AACH,IAAA,QAAQ,CAAC,SAAiB,EAAA;AACxB,QAAA,MAAM,GAAG,GAAG,CAAsB,mBAAA,EAAA,SAAS,OAAO,CAAC;AACnD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,KAAU,KAAI;;AAE7D,YAAA,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,MAAM,IAAG;;gBAEjD,IAAI,CAAC,KAAK,CAAC,CAAG,EAAA,MAAM,QAAQ,CAAC,IAAI,KAAK,CAAC,aAAa;AAAE,oBAAA,KAAK,CAAC,CAAG,EAAA,MAAM,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;;gBAEjI,IAAI,CAAC,KAAK,CAAC,CAAG,EAAA,MAAM,SAAS,CAAC,IAAI,KAAK,CAAC,cAAc;AAAE,oBAAA,KAAK,CAAC,CAAG,EAAA,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AACvI,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,KAAK,CAAC;SACd,CAAC,CAAC,CAAC;KACL;AAED;;;;;AAKG;IACH,SAAS,CAAC,IAAY,EAAE,IAAY,EAAA;AAClC,QAAA,MAAM,GAAG,GAAG,CAAA,2BAAA,EAA8B,IAAI,CAAI,CAAA,EAAA,IAAI,OAAO,CAAC;AAC9D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,MAAW,KAAI;;AAE9D,YAAA,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,MAAM,IAAG;;gBAEjD,IAAI,CAAC,MAAM,CAAC,CAAG,EAAA,MAAM,QAAQ,CAAC,IAAI,MAAM,CAAC,aAAa;AAAE,oBAAA,MAAM,CAAC,CAAG,EAAA,MAAM,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;;gBAErI,IAAI,CAAC,MAAM,CAAC,CAAG,EAAA,MAAM,SAAS,CAAC,IAAI,MAAM,CAAC,cAAc;AAAE,oBAAA,MAAM,CAAC,CAAG,EAAA,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;AAC3I,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,MAAM,CAAC;SACf,CAAC,CAAC,CAAC;KACL;AAED;;;AAGG;IACH,aAAa,GAAA;QACX,MAAM,GAAG,GAAG,CAAA,6BAAA,CAA+B,CAAC;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,GAAG,CAAC,CAAC;KAClC;AAED;;;AAGG;IACH,YAAY,GAAA;QACV,MAAM,GAAG,GAAG,CAAA,4BAAA,CAA8B,CAAC;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,GAAG,CAAC,CAAC;KAClC;AAED;;;AAGG;IACH,YAAY,GAAA;QACV,MAAM,GAAG,GAAG,CAAA,4BAAA,CAA8B,CAAC;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,GAAG,CAAC,CAAC;KAClC;AAED;;;;AAIG;AACH,IAAA,QAAQ,CAAC,SAAiB,EAAA;AACxB,QAAA,MAAM,GAAG,GAAG,CAAsB,mBAAA,EAAA,SAAS,OAAO,CAAC;AACnD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,KAAU,KAAI;;AAE7D,YAAA,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,MAAM,IAAG;;gBAEjD,IAAI,CAAC,KAAK,CAAC,CAAG,EAAA,MAAM,QAAQ,CAAC,IAAI,KAAK,CAAC,aAAa;AAAE,oBAAA,KAAK,CAAC,CAAG,EAAA,MAAM,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;;gBAEjI,IAAI,CAAC,KAAK,CAAC,CAAG,EAAA,MAAM,SAAS,CAAC,IAAI,KAAK,CAAC,cAAc;AAAE,oBAAA,KAAK,CAAC,CAAG,EAAA,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AACvI,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,KAAK,CAAC;SACd,CAAC,CAAC,CAAC;KACL;IAED,QAAQ,GAAA;QACN,MAAM,GAAG,GAAG,CAAA,uBAAA,CAAyB,CAAC;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,GAAG,CAAC,CAAC;KAClC;AAED;;;AAGG;IACH,cAAc,GAAA;QACZ,MAAM,GAAG,GAAG,CAAA,mCAAA,CAAqC,CAAC;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,GAAG,CAAC,CAAC;KAClC;AAGD,IAAA,aAAa,CAAC,UAAU,EAAA;QACtB,MAAM,GAAG,GAAG,CAAA,mCAAA,CAAqC,CAAC;AAClD,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;;AAE7B,YAAA,IAAI,KAAK,GAAG;AACV,gBAAA,MAAM,EAAE;AACN,oBAAA,KAAK,EAAE;AACL,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AAED,oBAAA,MAAM,EAAE;AACN,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,MAAM,EAAE;AACN,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,WAAW,EAAE;AACX,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;AACP,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,WAAW,EAAE;AACX,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,UAAU,EAAE;AACV,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,aAAa,EAAE;AACb,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,gBAAgB,EAAE;AAChB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,WAAW,EAAE;AACX,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,UAAU,EAAE;AACV,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,mBAAmB,EAAE;AACnB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,uBAAuB,EAAE;AACvB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,wBAAwB,EAAE;AACxB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,iBAAiB,EAAE;AACjB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACF,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,SAAS,EAAE;AACT,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,iBAAiB,EAAE;AACjB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,wBAAwB,EAAE;AACxB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,WAAW,EAAE;AACX,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,iBAAiB,EAAE;AACjB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AAED,oBAAA,cAAc,EAAE;AACd,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,iBAAiB,EAAE;AACjB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,mBAAmB,EAAE;AACnB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,2BAA2B,EAAE;AAC3B,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,WAAW,EAAE;AACX,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,mBAAmB,EAAE;AACnB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,qBAAqB,EAAE;AACrB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,cAAc,EAAE;AACd,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,uBAAuB,EAAE;AACvB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,cAAc,EAAE;AACd,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,iBAAiB,EAAE;AACjB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,gBAAgB,EAAE;AAChB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,mBAAmB,EAAE;AACnB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,iBAAiB,EAAE;AACjB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,UAAU,EAAE;AACV,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,gBAAgB,EAAE;AAChB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,4BAA4B,EAAE;AAC5B,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,uBAAuB,EAAE;AACvB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,uBAAuB,EAAE;AACvB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,qBAAqB,EAAE;AACrB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,aAAa,EAAE;AACb,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,yBAAyB,EAAE;AACzB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,aAAa,EAAE;AACb,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AAED,oBAAA,wBAAwB,EAAE;AACxB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AAED,oBAAA,yBAAyB,EAAE;AACzB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,uBAAuB,EAAE;AACvB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,2BAA2B,EAAE;AAC3B,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,+BAA+B,EAAE;AAC/B,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,6BAA6B,EAAE;AAC7B,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,4BAA4B,EAAE;AAC5B,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,gCAAgC,EAAE;AAChC,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AAED,oBAAA,sBAAsB,EAAE;AACtB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,uBAAuB,EAAE;AACvB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,iBAAiB,EAAE;AACjB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,mBAAmB,EAAE;AACnB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,wBAAwB,EAAE;AACxB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,mBAAmB,EAAE;AACnB,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,WAAW,EAAE;AACX,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,WAAW,EAAE;AACX,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,YAAY,EAAE;AACZ,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACD,oBAAA,YAAY,EAAE;AACZ,wBAAA,YAAY,EAAE,EAAE;AAChB,wBAAA,aAAa,EAAE,EAAE;AAClB,qBAAA;AACF,iBAAA;aACF,CAAC;AAGF,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;gBAC3C,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,OAAO,CAAC,CAAC,OAAO,KAAI;AAC9B,oBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE;AACjB,wBAAA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY;AAC5B,4BAAA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CACnC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI;kCACrB,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY;kCACtC,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa;AAC7B,4BAAA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CACpC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI;kCACrB,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa;kCACvC,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY;AAC7B,4BAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CACpC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK;kCACtB,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY;kCACvC,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa;AAC9B,4BAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK;kCACtB,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa;kCACxC,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY;AAC9B,4BAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM;kCACvB,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY;kCACxC,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa;AAC/B,4BAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CACtC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM;kCACvB,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa;kCACzC,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY;AAC9B,4BAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM;kCACvB,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY;kCACxC,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa;AAC/B,4BAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CACtC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM;kCACvB,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa;kCACzC,EAAE,CACP,CAAC;AAEJ,wBAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY;AACnC,4BAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW;kCAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY;kCAC7C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;AACpC,4BAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAC3C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW;kCAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;kCAC9C,EAAE,CACP,CAAC;AAEJ,wBAAA,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY;AAC/B,4BAAA,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CACtC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO;kCACxB,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY;kCACzC,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa;AAChC,4BAAA,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CACvC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO;kCACxB,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa;kCAC1C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY;AACnC,4BAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW;kCAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY;kCAC7C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;AACpC,4BAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAC3C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW;kCAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;kCAC9C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY;AAClC,4BAAA,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CACzC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU;kCAC3B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY;kCAC5C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa;AACnC,4BAAA,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU;kCAC3B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa;kCAC7C,EAAE,CACP,CAAC;AAEJ,wBAAA,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY;AACrC,4BAAA,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAC5C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa;kCAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY;kCAC/C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa;AACtC,4BAAA,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAC7C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa;kCAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa;kCAChD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;AAC5C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,CACnD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;kCACtD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;AAC7C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CACpD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;kCACvD,EAAE,CACP,CAAC;AAEF,wBAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY;AAC7C,4BAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAClD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB;kCACpC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY;kCACrD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa;AAC5C,4BAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CACnD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB;kCACpC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa;kCACtD,EAAE,CACP,CAAC;AAEJ,wBAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY;AACnC,4BAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW;kCAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY;kCAC7C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;AACpC,4BAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAC3C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW;kCAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;kCAC9C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY;AAClC,4BAAA,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CACzC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU;kCAC3B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY;kCAC5C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa;AACnC,4BAAA,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU;kCAC3B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa;kCAC7C,EAAE,CACP,CAAC;AAEJ,wBAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY;AAC/C,4BAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY,CAAC,MAAM,CACtD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB;kCACxC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY;kCACzD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa;AAChD,4BAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC,MAAM,CACvD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB;kCACxC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa;kCAC1D,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY;AAChD,4BAAA,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY,CAAC,MAAM,CACvD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,wBAAwB;kCACzC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY;kCAC1D,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa;AACjD,4BAAA,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa,CAAC,MAAM,CACxD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,wBAAwB;kCACzC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa;kCAC3D,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY;AACzC,4BAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAChD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB;kCAClC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY;kCACnD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa;AAC1C,4BAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,MAAM,CACjD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB;kCAClC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa;kCACpD,EAAE,CACP,CAAC;AAEJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;AAC5C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,CACnD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;kCACtD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;AAC7C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CACpD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;kCACvD,EAAE,CACP,CAAC;AAEJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;AAC5C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,CACnD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;kCACtD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;AAC7C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CACpD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;kCACvD,EAAE,CACP,CAAC;AAEJ,wBAAA,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY;AACjC,4BAAA,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CACxC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS;kCAC1B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY;kCAC3C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa;AAClC,4BAAA,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CACzC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS;kCAC1B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa;kCAC5C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY;AACzC,4BAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAChD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB;kCAClC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY;kCACnD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa;AAC1C,4BAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,MAAM,CACjD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB;kCAClC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa;kCACpD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY;AAChD,4BAAA,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY,CAAC,MAAM,CACvD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,wBAAwB;kCACzC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY;kCAC1D,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa;AACjD,4BAAA,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa,CAAC,MAAM,CACxD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,wBAAwB;kCACzC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa;kCACpD,EAAE,CACP,CAAC;AAEJ,wBAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY;AACnC,4BAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW;kCAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY;kCAC7C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;AACpC,4BAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAC3C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW;kCAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;kCAC9C,EAAE,CACP,CAAC;AAEJ,wBAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY;AACzC,4BAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAChD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB;kCAClC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY;kCACnD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa;AAC1C,4BAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,MAAM,CACjD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB;kCAClC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa;kCACpD,EAAE,CACP,CAAC;AAEJ,wBAAA,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY;AACtC,4BAAA,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAC7C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,cAAc;kCAC/B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY;kCAChD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa;AACvC,4BAAA,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,CAC9C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,cAAc;kCAC/B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa;kCACjD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY;AACzC,4BAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAChD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB;kCAClC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY;kCACnD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa;AAC1C,4BAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,MAAM,CACjD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB;kCAClC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa;kCACpD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY;AACnC,4BAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW;kCAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY;kCAC7C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;AACpC,4BAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAC3C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW;kCAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;kCAC9C,EAAE,CACP,CAAC;AAEF,wBAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY;AAC7C,4BAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAClD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB;kCACpC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY;kCACrD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa;AAC5C,4BAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CACnD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB;kCACpC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa;kCACtD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY;AACnC,4BAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW;kCAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY;kCAC7C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;AACpC,4BAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAC3C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW;kCAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;kCAC9C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY;AAC3C,4BAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAClD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB;kCACpC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY;kCACrD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa;AAC5C,4BAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CACnD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB;kCACpC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa;kCACtD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY;AAC3C,4BAAA,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,YAAY,CAAC,MAAM,CAC1D,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,2BAA2B;kCAC5C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,2BAA2B;qCAC/C,YAAY;kCACb,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,aAAa;AACpD,4BAAA,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,aAAa,CAAC,MAAM,CAC3D,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,2BAA2B;kCAC5C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,2BAA2B;qCAC/C,aAAa;kCACd,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY;AACtC,4BAAA,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAC7C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,cAAc;kCAC/B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY;kCAChD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa;AACvC,4BAAA,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,CAC9C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,cAAc;kCAC/B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa;kCACjD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,YAAY;AAC7C,4BAAA,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,YAAY,CAAC,MAAM,CACpD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,qBAAqB;kCACtC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,YAAY;kCACvD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,aAAa;AAC9C,4BAAA,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,aAAa,CAAC,MAAM,CACrD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,qBAAqB;kCACtC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,aAAa;kCACxD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY;AAClC,4BAAA,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CACzC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU;kCAC3B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY;kCAC5C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa;AACnC,4BAAA,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU;kCAC3B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa;kCAC7C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;AAC5C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,CACnD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;kCACtD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;AAC7C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CACpD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;kCACvD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY;AACzC,4BAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAChD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB;kCAClC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY;kCACnD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa;AAC1C,4BAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,MAAM,CACjD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB;kCAClC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa;kCACpD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY;AACxC,4BAAA,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAC/C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,gBAAgB;kCACjC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY;kCAClD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa;AACzC,4BAAA,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAChD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,gBAAgB;kCACjC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa;kCACnD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY;AAC3C,4BAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAClD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB;kCACpC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY;kCACrD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa;AAC5C,4BAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CACnD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB;kCACpC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa;kCACtD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY;AACzC,4BAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAChD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB;kCAClC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY;kCACnD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa;AAC1C,4BAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,MAAM,CACjD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB;kCAClC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa;kCACpD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY;AACrC,4BAAA,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAC5C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa;kCAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY;kCAC/C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa;AACtC,4BAAA,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAC7C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa;kCAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa;kCAChD,EAAE,CACP,CAAC;AAEJ,wBAAA,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY;AACpC,4BAAA,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAC3C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,YAAY;kCAC7B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY;kCAC9C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa;AACrC,4BAAA,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAC5C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,YAAY;kCAC7B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa;kCAC/C,EAAE,CACP,CAAC;AAEJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;AAC5C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,CACnD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;kCACtD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;AAC7C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CACpD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;kCACvD,EAAE,CACP,CAAC;AAEJ,wBAAA,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY;AAChD,4BAAA,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY,CAAC,MAAM,CACvD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,wBAAwB;kCACzC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY;kCAC1D,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa;AACjD,4BAAA,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa,CAAC,MAAM,CACxD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,wBAAwB;kCACzC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa;kCAC3D,EAAE,CACP,CAAC;AAGJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;AAC5C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,CACnD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;kCACtD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;AAC7C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CACpD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;kCACvD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,YAAY;AACjD,4BAAA,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,YAAY,CAAC,MAAM,CACxD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,yBAAyB;kCAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,YAAY;kCAC3D,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,aAAa;AAClD,4BAAA,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,aAAa,CAAC,MAAM,CACzD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,yBAAyB;kCAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,aAAa;kCAC5D,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;AAC5C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,CACnD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;kCACtD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;AAC7C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CACpD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;kCACvD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY;AAC/C,4BAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY,CAAC,MAAM,CACtD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB;kCACxC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY;kCACzD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa;AAChD,4BAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC,MAAM,CACvD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB;kCACxC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa;kCAC1D,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,YAAY;AACnD,4BAAA,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,YAAY,CAAC,MAAM,CAC1D,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,2BAA2B;kCAC5C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,2BAA2B,CAAC,YAAY;kCAC7D,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,aAAa;AACpD,4BAAA,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,aAAa,CAAC,MAAM,CAC3D,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,2BAA2B;kCAC5C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,2BAA2B,CAAC,aAAa;kCAC9D,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,YAAY;AACrD,4BAAA,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,YAAY,CAAC,MAAM,CAC5D,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,6BAA6B;kCAC9C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,6BAA6B,CAAC,YAAY;kCAC/D,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,aAAa;AACtD,4BAAA,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,aAAa,CAAC,MAAM,CAC7D,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,6BAA6B;kCAC9C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,6BAA6B,CAAC,aAAa;kCAChE,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,YAAY;AACpD,4BAAA,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,YAAY,CAAC,MAAM,CAC3D,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,4BAA4B;kCAC7C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,4BAA4B,CAAC,YAAY;kCAC9D,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,aAAa;AACrD,4BAAA,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,aAAa,CAAC,MAAM,CAC5D,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,4BAA4B;kCAC7C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,4BAA4B,CAAC,aAAa;kCAC/D,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,YAAY;AACxD,4BAAA,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,YAAY,CAAC,MAAM,CAC/D,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,gCAAgC;kCACjD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,gCAAgC,CAAC,YAAY;kCAClE,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,aAAa;AACzD,4BAAA,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,aAAa,CAAC,MAAM,CAChE,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,gCAAgC;kCACjD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,gCAAgC,CAAC,aAAa;kCACnE,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,YAAY;AAC9C,4BAAA,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,YAAY,CAAC,MAAM,CACrD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,sBAAsB;kCACvC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,YAAY;kCACxD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,aAAa;AAC/C,4BAAA,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,aAAa,CAAC,MAAM,CACtD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,sBAAsB;kCACvC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,aAAa;kCACzD,EAAE,CACP,CAAC;AAEF,wBAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY;AACjD,4BAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY,CAAC,MAAM,CACtD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB;kCACxC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY;kCACzD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa;AAChD,4BAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC,MAAM,CACvD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB;kCACxC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa;kCAC1D,EAAE,CACP,CAAC;AAEF,wBAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY;AAC3C,4BAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAChD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB;kCAClC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY;kCACnD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa;AAC1C,4BAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,MAAM,CACjD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB;kCAClC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa;kCACpD,EAAE,CACP,CAAC;AAEJ,wBAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY;AAC3C,4BAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAClD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB;kCACpC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY;kCACrD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa;AAC5C,4BAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CACnD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB;kCACpC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa;kCACtD,EAAE,CACP,CAAC;AAEF,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;AAC9C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,CACnD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;kCACtD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;AAC7C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CACpD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;kCACvD,EAAE,CACP,CAAC;AAEF,wBAAA,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY;AAClD,4BAAA,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY,CAAC,MAAM,CACvD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,wBAAwB;kCACzC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY;kCAC1D,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa;AACjD,4BAAA,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa,CAAC,MAAM,CACxD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,wBAAwB;kCACzC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa;kCAC3D,EAAE,CACP,CAAC;AAEF,wBAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY;AAC7C,4BAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAClD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB;kCACpC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY;kCACrD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa;AAC5C,4BAAA,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CACnD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB;kCACpC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa;kCACtD,EAAE,CACP,CAAC;AAIJ,wBAAA,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY;AACtC,4BAAA,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAC7C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,cAAc;kCAC/B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY;kCAChD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa;AACvC,4BAAA,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,CAC9C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,cAAc;kCAC/B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa;kCACjD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;AAC5C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,CACnD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;kCACtD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;AAC7C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CACpD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;kCACvD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;AAC5C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,CACnD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;kCACtD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;AAC7C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CACpD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;kCACvD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY;AAC/C,4BAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY,CAAC,MAAM,CACtD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB;kCACxC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY;kCACzD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa;AAChD,4BAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC,MAAM,CACvD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB;kCACxC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa;kCAC1D,EAAE,CACP,CAAC;AAEJ,wBAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY;AACnC,4BAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW;kCAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY;kCAC7C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;AACpC,4BAAA,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAC3C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW;kCAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa;kCAC9C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY;AACpC,4BAAA,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAC3C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,YAAY;kCAC7B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY;kCAC9C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa;AACrC,4BAAA,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAC5C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,YAAY;kCAC7B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa;kCAC/C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY;AACrC,4BAAA,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAC5C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa;kCAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY;kCAC/C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa;AACtC,4BAAA,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAC7C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa;kCAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa;kCAChD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,YAAY;AACvD,4BAAA,KAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,YAAY,CAAC,MAAM,CAC9D,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,+BAA+B;kCAChD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,+BAA+B,CAAC,YAAY;kCACjE,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,aAAa;AACxD,4BAAA,KAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,aAAa,CAAC,MAAM,CAC/D,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,+BAA+B;kCAChD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,+BAA+B,CAAC,aAAa;kCAClE,EAAE,CACP,CAAC;AAEJ,wBAAA,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,YAAY;AACjD,4BAAA,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,YAAY,CAAC,MAAM,CACxD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,yBAAyB;kCAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,YAAY;kCAC3D,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,aAAa;AAClD,4BAAA,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,aAAa,CAAC,MAAM,CACzD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,yBAAyB;kCAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,aAAa;kCAC5D,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;AAC5C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,CACnD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;kCACtD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;AAC7C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CACpD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;kCACvD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;AAC5C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,CACnD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY;kCACtD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;AAC7C,4BAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CACpD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB;kCACrC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa;kCACvD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY;AACjC,4BAAA,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CACxC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS;kCAC1B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY;kCAC3C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa;AAClC,4BAAA,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CACzC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS;kCAC1B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa;kCAC5C,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,YAAY;AAC7C,4BAAA,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,YAAY,CAAC,MAAM,CACpD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,qBAAqB;kCACtC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,YAAY;kCACvD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,aAAa;AAC9C,4BAAA,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,aAAa,CAAC,MAAM,CACrD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,qBAAqB;kCACtC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,aAAa;kCACxD,EAAE,CACP,CAAC;AAEJ,wBAAA,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY;AACxC,4BAAA,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAC/C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,gBAAgB;kCACjC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY;kCAClD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa;AACzC,4BAAA,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAChD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,gBAAgB;kCACjC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa;kCACnD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,YAAY;AACpD,4BAAA,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,YAAY,CAAC,MAAM,CAC3D,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,4BAA4B;kCAC7C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,4BAA4B;qCAChD,YAAY;kCACb,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,aAAa;AACrD,4BAAA,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,aAAa,CAAC,MAAM,CAC5D,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,4BAA4B;kCAC7C,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,4BAA4B;qCAChD,aAAa;kCACd,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY;AAC/C,4BAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY,CAAC,MAAM,CACtD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB;kCACxC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY;kCACzD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa;AAChD,4BAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC,MAAM,CACvD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB;kCACxC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa;kCAC1D,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY;AAC/C,4BAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY,CAAC,MAAM,CACtD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB;kCACxC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY;kCACzD,EAAE,CACP,CAAC;AACJ,wBAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa;AAChD,4BAAA,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC,MAAM,CACvD,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB;kCACxC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa;kCAC1D,EAAE,CACP,CAAC;AACL,qBAAA;AACH,iBAAC,CAAC,CAAC;;gBAGH,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACzC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CACxC,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC1C,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CACzC,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC1C,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CACzC,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC3C,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAC1C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC3C,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAC1C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC5C,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAC3C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC3C,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAC1C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC5C,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAC3C,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAChD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAC/C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACjD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAChD,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC5C,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAC3C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC7C,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAC5C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAChD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAC/C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACjD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAChD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC/C,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAC9C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAChD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAC/C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAClD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CACjD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACnD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,CAClD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CACxD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC1D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CACzD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACxD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CACvD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CACxD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAChD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAC/C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACjD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAChD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC/C,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAC9C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAChD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAC/C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CACxD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC1D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CACzD,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC5D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAC3D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC7D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAC5D,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC7D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAC5D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC9D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAC7D,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACtD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CACrD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACvD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,CACtD,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CACxD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC1D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CACzD,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CACxD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC1D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CACzD,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC9C,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAC7C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC/C,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAC9C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACtD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CACrD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACvD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,CACtD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC7D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAC5D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC9D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAC7D,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAChD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAC/C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACjD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAChD,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACtD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CACrD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACvD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,CACtD,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACnD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAClD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACpD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CACnD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACtD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CACrD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACvD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,CACtD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAChD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAC/C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACjD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAChD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACxD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CACvD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CACxD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAChD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAC/C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACjD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAChD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACxD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CACvD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CACxD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAChE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAC/D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACjE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAChE,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACnD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAClD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACpD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CACnD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC1D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,YAAY,CAAC,CACzD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC3D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAC1D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC/C,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAC9C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAChD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAC/C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CACxD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC1D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CACzD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACtD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CACrD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACvD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,CACtD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACrD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CACpD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACtD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CACrD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACxD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CACvD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CACxD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACtD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CACrD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACvD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,CACtD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAClD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CACjD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACnD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,CAClD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACjD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAChD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAClD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CACjD,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CACxD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC1D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CACzD,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC7D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAC5D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC9D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAC7D,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CACxD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC1D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CACzD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC9D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAC7D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC/D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAC9D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CACxD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC1D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CACzD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC5D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAC3D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC7D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAC5D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAChE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAC/D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACjE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAChE,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAClE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,YAAY,CAAC,CACjE,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACnE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,aAAa,CAAC,CAClE,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACjE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,YAAY,CAAC,CAChE,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAClE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,aAAa,CAAC,CACjE,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACrE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,YAAY,CAAC,CACpE,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACtE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,aAAa,CAAC,CACrE,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC3D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAC1D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC5D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAC3D,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC5D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAC3D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC7D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAC5D,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACtD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CACrD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACvD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,CACtD,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACxD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CACvD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CACxD,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CACxD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC1D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CACzD,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC7D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAC5D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC9D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAC7D,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACxD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CACvD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CACxD,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACnD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAClD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACpD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CACnD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CACxD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC1D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CACzD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CACxD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC1D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CACzD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC5D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAC3D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC7D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAC5D,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAChD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAC/C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACjD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAChD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACjD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAChD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAClD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CACjD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAClD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CACjD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACnD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,CAClD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACpE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,YAAY,CAAC,CACnE,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACrE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,aAAa,CAAC,CACpE,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC9D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAC7D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC/D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAC9D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CACxD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC1D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CACzD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACzD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CACxD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC1D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CACzD,CAAC;gBAGF,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC9C,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAC7C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC/C,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAC9C,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC1D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,YAAY,CAAC,CACzD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC3D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAC1D,CAAC;gBAEF,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACrD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CACpD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CACtD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CACrD,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CACjE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,YAAY,CAAC,CAChE,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAClE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,aAAa,CAAC,CACjE,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC5D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAC3D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC7D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAC5D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAC5D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAC3D,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAC7D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAC5D,CAAC;;gBAGF,OAAO,CAAC,GAAG,CAAC;AACV,oBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC;AACrC,oBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC;AACvC,iBAAA,CAAC,CAAC,IAAI,CAAC,MAAK;oBACX,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,kBAAkB,CAAC,UAAU,EAAA;AAC3B,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;;YAE7B,IAAI,0BAA0B,GAAG,EAAE,CAAC;AACpC,YAAA,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACjD,0BAA0B,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACjE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC5D,gBAAA,UAAU,CAAC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AAC/C,aAAC,CAAC,CAAC;;YAEH,IAAI,yBAAyB,GAAG,EAAE,CAAC;AACnC,YAAA,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChD,yBAAyB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC/D,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC3D,gBAAA,UAAU,CAAC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AAC9C,aAAC,CAAC,CAAC;;YAGH,IAAI,2BAA2B,GAAG,EAAE,CAAC;AACrC,YAAA,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAClD,2BAA2B,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAClE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC7D,gBAAA,UAAU,CAAC,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC;AAChD,aAAC,CAAC,CAAC;;YAEH,IAAI,0BAA0B,GAAG,EAAE,CAAC;AACpC,YAAA,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACjD,0BAA0B,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAChE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC5D,gBAAA,UAAU,CAAC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;AAC/C,aAAC,CAAC,CAAC;;YAGH,IAAI,4BAA4B,GAAG,EAAE,CAAC;AACtC,YAAA,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACnD,4BAA4B,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACnE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC9D,gBAAA,UAAU,CAAC,MAAM,CAAC,aAAa,GAAG,YAAY,CAAC;AACjD,aAAC,CAAC,CAAC;;YAEH,IAAI,2BAA2B,GAAG,EAAE,CAAC;AACrC,YAAA,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAClD,2BAA2B,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACjE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC7D,gBAAA,UAAU,CAAC,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;AAChD,aAAC,CAAC,CAAC;;YAGH,IAAI,4BAA4B,GAAG,EAAE,CAAC;AACtC,YAAA,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACnD,4BAA4B,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACnE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC9D,gBAAA,UAAU,CAAC,MAAM,CAAC,aAAa,GAAG,YAAY,CAAC;AACjD,aAAC,CAAC,CAAC;;YAEH,IAAI,2BAA2B,GAAG,EAAE,CAAC;AACrC,YAAA,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAClD,2BAA2B,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACjE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC7D,gBAAA,UAAU,CAAC,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;AAChD,aAAC,CAAC,CAAC;;YAGH,IAAI,iCAAiC,GAAG,EAAE,CAAC;AAC3C,YAAA,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACxD,iCAAiC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACxE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACnE,gBAAA,UAAU,CAAC,WAAW,CAAC,aAAa,GAAG,YAAY,CAAC;AACtD,aAAC,CAAC,CAAC;;YAEH,IAAI,gCAAgC,GAAG,EAAE,CAAC;AAC1C,YAAA,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACvD,gCAAgC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACtE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAClE,gBAAA,UAAU,CAAC,WAAW,CAAC,YAAY,GAAG,YAAY,CAAC;AACrD,aAAC,CAAC,CAAC;;YAGH,IAAI,iCAAiC,GAAG,EAAE,CAAC;AAC3C,YAAA,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACxD,iCAAiC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACxE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACnE,gBAAA,UAAU,CAAC,WAAW,CAAC,aAAa,GAAG,YAAY,CAAC;AACtD,aAAC,CAAC,CAAC;;YAEH,IAAI,gCAAgC,GAAG,EAAE,CAAC;AAC1C,YAAA,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACvD,gCAAgC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACtE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAClE,gBAAA,UAAU,CAAC,WAAW,CAAC,YAAY,GAAG,YAAY,CAAC;AACrD,aAAC,CAAC,CAAC;;YAGH,IAAI,gCAAgC,GAAG,EAAE,CAAC;AAC1C,YAAA,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACvD,gCAAgC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACvE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAClE,gBAAA,UAAU,CAAC,UAAU,CAAC,aAAa,GAAG,YAAY,CAAC;AACrD,aAAC,CAAC,CAAC;;YAEH,IAAI,+BAA+B,GAAG,EAAE,CAAC;AACzC,YAAA,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACtD,+BAA+B,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACrE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACjE,gBAAA,UAAU,CAAC,UAAU,CAAC,YAAY,GAAG,YAAY,CAAC;AACpD,aAAC,CAAC,CAAC;;YAGH,IAAI,mCAAmC,GAAG,EAAE,CAAC;AAC7C,YAAA,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC1D,mCAAmC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC1E,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACrE,gBAAA,UAAU,CAAC,aAAa,CAAC,aAAa,GAAG,YAAY,CAAC;AACxD,aAAC,CAAC,CAAC;;YAEH,IAAI,kCAAkC,GAAG,EAAE,CAAC;AAC5C,YAAA,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACzD,kCAAkC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACxE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACpE,gBAAA,UAAU,CAAC,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC;AACvD,aAAC,CAAC,CAAC;;YAGH,IAAI,sCAAsC,GAAG,EAAE,CAAC;AAChD,YAAA,UAAU,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC7D,sCAAsC,CAAC,KAAK,CAAC;AAC3C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,IAAI,CACtD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,gBAAgB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC3D,aAAC,CACF,CAAC;;YAEF,IAAI,qCAAqC,GAAG,EAAE,CAAC;AAC/C,YAAA,UAAU,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC5D,qCAAqC,CAAC,KAAK,CAAC;AAC1C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,IAAI,CACrD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,gBAAgB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC1D,aAAC,CACF,CAAC;;YAGF,IAAI,iCAAiC,GAAG,EAAE,CAAC;AAC3C,YAAA,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACxD,iCAAiC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACxE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACnE,gBAAA,UAAU,CAAC,WAAW,CAAC,aAAa,GAAG,YAAY,CAAC;AACtD,aAAC,CAAC,CAAC;;YAEH,IAAI,gCAAgC,GAAG,EAAE,CAAC;AAC1C,YAAA,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACvD,gCAAgC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACtE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAClE,gBAAA,UAAU,CAAC,WAAW,CAAC,YAAY,GAAG,YAAY,CAAC;AACrD,aAAC,CAAC,CAAC;;YAGH,IAAI,gCAAgC,GAAG,EAAE,CAAC;AAC1C,YAAA,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACvD,gCAAgC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACvE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAClE,gBAAA,UAAU,CAAC,UAAU,CAAC,aAAa,GAAG,YAAY,CAAC;AACrD,aAAC,CAAC,CAAC;;YAEH,IAAI,+BAA+B,GAAG,EAAE,CAAC;AACzC,YAAA,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACtD,+BAA+B,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACrE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACjE,gBAAA,UAAU,CAAC,UAAU,CAAC,YAAY,GAAG,YAAY,CAAC;AACpD,aAAC,CAAC,CAAC;;YAGH,IAAI,0CAA0C,GAAG,EAAE,CAAC;AACpD,YAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACjE,0CAA0C,CAAC,KAAK,CAAC;AAC/C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAC1D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC/D,aAAC,CACF,CAAC;;YAEF,IAAI,yCAAyC,GAAG,EAAE,CAAC;AACnD,YAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChE,yCAAyC,CAAC,KAAK,CAAC;AAC9C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CACzD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC9D,aAAC,CACF,CAAC;;YAGF,IAAI,yCAAyC,GAAG,EAAE,CAAC;AACnD,YAAA,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChE,yCAAyC,CAAC,KAAK,CAAC;AAC9C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CACzD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,mBAAmB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC9D,aAAC,CACF,CAAC;;YAEF,IAAI,wCAAwC,GAAG,EAAE,CAAC;AAClD,YAAA,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC/D,wCAAwC,CAAC,KAAK,CAAC;AAC7C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,IAAI,CACxD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,mBAAmB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC7D,aAAC,CACF,CAAC;;YAIF,IAAI,6CAA6C,GAAG,EAAE,CAAC;AACvD,YAAA,UAAU,CAAC,uBAAuB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACpE,6CAA6C,CAAC,KAAK,CAAC;AAClD,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,IAAI,CAC7D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,uBAAuB,CAAC,aAAa,GAAG,YAAY,CAAC;AAClE,aAAC,CACF,CAAC;;YAEF,IAAI,4CAA4C,GAAG,EAAE,CAAC;AACtD,YAAA,UAAU,CAAC,uBAAuB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACnE,4CAA4C,CAAC,KAAK,CAAC;AACjD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,IAAI,CAC5D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,uBAAuB,CAAC,YAAY,GAAG,YAAY,CAAC;AACjE,aAAC,CACF,CAAC;;YAGF,IAAI,8CAA8C,GAAG,EAAE,CAAC;AACxD,YAAA,UAAU,CAAC,wBAAwB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACrE,8CAA8C,CAAC,KAAK,CAAC;AACnD,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,IAAI,CAC9D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,wBAAwB,CAAC,aAAa,GAAG,YAAY,CAAC;AACnE,aAAC,CACF,CAAC;;YAEF,IAAI,6CAA6C,GAAG,EAAE,CAAC;AACvD,YAAA,UAAU,CAAC,wBAAwB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACpE,6CAA6C,CAAC,KAAK,CAAC;AAClD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,IAAI,CAC7D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,wBAAwB,CAAC,YAAY,GAAG,YAAY,CAAC;AAClE,aAAC,CACF,CAAC;;YAGF,IAAI,uCAAuC,GAAG,EAAE,CAAC;AACjD,YAAA,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC9D,uCAAuC,CAAC,KAAK,CAAC;AAC5C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,IAAI,CACvD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,iBAAiB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC5D,aAAC,CACF,CAAC;;YAEF,IAAI,sCAAsC,GAAG,EAAE,CAAC;AAChD,YAAA,UAAU,CAAC,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC7D,sCAAsC,CAAC,KAAK,CAAC;AAC3C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,IAAI,CACtD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,iBAAiB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC3D,aAAC,CACF,CAAC;;YAGF,IAAI,0CAA0C,GAAG,EAAE,CAAC;AACpD,YAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACjE,0CAA0C,CAAC,KAAK,CAAC;AAC/C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAC1D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC/D,aAAC,CACF,CAAC;;YAEF,IAAI,yCAAyC,GAAG,EAAE,CAAC;AACnD,YAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChE,yCAAyC,CAAC,KAAK,CAAC;AAC9C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CACzD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC9D,aAAC,CACF,CAAC;;YAGF,IAAI,0CAA0C,GAAG,EAAE,CAAC;AACpD,YAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACjE,0CAA0C,CAAC,KAAK,CAAC;AAC/C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAC1D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC/D,aAAC,CACF,CAAC;;YAEF,IAAI,yCAAyC,GAAG,EAAE,CAAC;AACnD,YAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChE,yCAAyC,CAAC,KAAK,CAAC;AAC9C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CACzD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC9D,aAAC,CACF,CAAC;;YAGF,IAAI,6BAA6B,GAAG,EAAE,CAAC;AACvC,YAAA,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACpD,6BAA6B,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACpE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC/D,gBAAA,UAAU,CAAC,OAAO,CAAC,aAAa,GAAG,YAAY,CAAC;AAClD,aAAC,CAAC,CAAC;;YAEH,IAAI,4BAA4B,GAAG,EAAE,CAAC;AACtC,YAAA,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACnD,4BAA4B,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAClE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC9D,gBAAA,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;AACjD,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC;AAChB,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,mBAAmB,CAAC,UAAU,EAAA;AAC5B,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;;YAE7B,IAAI,+BAA+B,GAAG,EAAE,CAAC;AACzC,YAAA,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACtD,+BAA+B,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACtE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACjE,gBAAA,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY,CAAC;AACpD,aAAC,CAAC,CAAC;;YAEH,IAAI,8BAA8B,GAAG,EAAE,CAAC;AACxC,YAAA,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACrD,8BAA8B,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACpE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAChE,gBAAA,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY,CAAC;AACnD,aAAC,CAAC,CAAC;;YAGH,IAAI,uCAAuC,GAAG,EAAE,CAAC;AACjD,YAAA,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC9D,uCAAuC,CAAC,KAAK,CAAC;AAC5C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,IAAI,CACvD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,iBAAiB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC5D,aAAC,CACF,CAAC;;YAEF,IAAI,sCAAsC,GAAG,EAAE,CAAC;AAChD,YAAA,UAAU,CAAC,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC7D,sCAAsC,CAAC,KAAK,CAAC;AAC3C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,IAAI,CACtD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,iBAAiB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC3D,aAAC,CACF,CAAC;;YAGF,IAAI,8CAA8C,GAAG,EAAE,CAAC;AACxD,YAAA,UAAU,CAAC,wBAAwB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACrE,8CAA8C,CAAC,KAAK,CAAC;AACnD,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,IAAI,CAC9D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,wBAAwB,CAAC,aAAa,GAAG,YAAY,CAAC;AACnE,aAAC,CACF,CAAC;;YAEF,IAAI,6CAA6C,GAAG,EAAE,CAAC;AACvD,YAAA,UAAU,CAAC,wBAAwB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACpE,6CAA6C,CAAC,KAAK,CAAC;AAClD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,IAAI,CAC7D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,wBAAwB,CAAC,YAAY,GAAG,YAAY,CAAC;AAClE,aAAC,CACF,CAAC;;YAGF,IAAI,iCAAiC,GAAG,EAAE,CAAC;AAC3C,YAAA,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACxD,iCAAiC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACxE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACnE,gBAAA,UAAU,CAAC,WAAW,CAAC,aAAa,GAAG,YAAY,CAAC;AACtD,aAAC,CAAC,CAAC;;YAEH,IAAI,gCAAgC,GAAG,EAAE,CAAC;AAC1C,YAAA,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACvD,gCAAgC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACtE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAClE,gBAAA,UAAU,CAAC,WAAW,CAAC,YAAY,GAAG,YAAY,CAAC;AACrD,aAAC,CAAC,CAAC;;YAGH,IAAI,uCAAuC,GAAG,EAAE,CAAC;AACjD,YAAA,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC9D,uCAAuC,CAAC,KAAK,CAAC;AAC5C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,IAAI,CACvD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,iBAAiB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC5D,aAAC,CACF,CAAC;;YAEF,IAAI,sCAAsC,GAAG,EAAE,CAAC;AAChD,YAAA,UAAU,CAAC,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC7D,sCAAsC,CAAC,KAAK,CAAC;AAC3C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,IAAI,CACtD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,iBAAiB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC3D,aAAC,CACF,CAAC;;YAGF,IAAI,oCAAoC,GAAG,EAAE,CAAC;AAC9C,YAAA,UAAU,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC3D,oCAAoC,CAAC,KAAK,CAAC;AACzC,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACtE,gBAAA,UAAU,CAAC,cAAc,CAAC,aAAa,GAAG,YAAY,CAAC;AACzD,aAAC,CAAC,CAAC;;YAEH,IAAI,mCAAmC,GAAG,EAAE,CAAC;AAC7C,YAAA,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC1D,mCAAmC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACzE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACrE,gBAAA,UAAU,CAAC,cAAc,CAAC,YAAY,GAAG,YAAY,CAAC;AACxD,aAAC,CAAC,CAAC;;YAGH,IAAI,uCAAuC,GAAG,EAAE,CAAC;AACjD,YAAA,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC9D,uCAAuC,CAAC,KAAK,CAAC;AAC5C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,IAAI,CACvD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,iBAAiB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC5D,aAAC,CACF,CAAC;;YAEF,IAAI,sCAAsC,GAAG,EAAE,CAAC;AAChD,YAAA,UAAU,CAAC,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC7D,sCAAsC,CAAC,KAAK,CAAC;AAC3C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,IAAI,CACtD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,iBAAiB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC3D,aAAC,CACF,CAAC;;YAGF,IAAI,iCAAiC,GAAG,EAAE,CAAC;AAC3C,YAAA,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACxD,iCAAiC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACxE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACnE,gBAAA,UAAU,CAAC,WAAW,CAAC,aAAa,GAAG,YAAY,CAAC;AACtD,aAAC,CAAC,CAAC;;YAEH,IAAI,gCAAgC,GAAG,EAAE,CAAC;AAC1C,YAAA,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACvD,gCAAgC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACtE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAClE,gBAAA,UAAU,CAAC,WAAW,CAAC,YAAY,GAAG,YAAY,CAAC;AACrD,aAAC,CAAC,CAAC;;YAGF,IAAI,yCAAyC,GAAG,EAAE,CAAC;AACnD,YAAA,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChE,yCAAyC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAChF,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC3E,gBAAA,UAAU,CAAC,mBAAmB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC9D,aAAC,CAAC,CAAC;;YAEH,IAAI,wCAAwC,GAAG,EAAE,CAAC;AAClD,YAAA,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC/D,wCAAwC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9E,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC1E,gBAAA,UAAU,CAAC,mBAAmB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC7D,aAAC,CAAC,CAAC;;YAGJ,IAAI,gCAAgC,GAAG,EAAE,CAAC;AAC1C,YAAA,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACvD,gCAAgC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACvE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAClE,gBAAA,UAAU,CAAC,UAAU,CAAC,aAAa,GAAG,YAAY,CAAC;AACrD,aAAC,CAAC,CAAC;;YAEH,IAAI,+BAA+B,GAAG,EAAE,CAAC;AACzC,YAAA,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACtD,+BAA+B,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACrE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACjE,gBAAA,UAAU,CAAC,UAAU,CAAC,YAAY,GAAG,YAAY,CAAC;AACpD,aAAC,CAAC,CAAC;;YAGH,IAAI,0CAA0C,GAAG,EAAE,CAAC;AACpD,YAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACjE,0CAA0C,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACjF,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC5E,gBAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC/D,aAAC,CAAC,CAAC;;YAEH,IAAI,yCAAyC,GAAG,EAAE,CAAC;AACnD,YAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChE,yCAAyC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC/E,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC3E,gBAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC9D,aAAC,CAAC,CAAC;;YAGH,IAAI,oCAAoC,GAAG,EAAE,CAAC;AAC9C,YAAA,UAAU,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC3D,oCAAoC,CAAC,KAAK,CAAC;AACzC,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACtE,gBAAA,UAAU,CAAC,cAAc,CAAC,aAAa,GAAG,YAAY,CAAC;AACzD,aAAC,CAAC,CAAC;;YAEH,IAAI,mCAAmC,GAAG,EAAE,CAAC;AAC7C,YAAA,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC1D,mCAAmC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACzE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACrE,gBAAA,UAAU,CAAC,cAAc,CAAC,YAAY,GAAG,YAAY,CAAC;AACxD,aAAC,CAAC,CAAC;;YAGH,IAAI,0CAA0C,GAAG,EAAE,CAAC;AACpD,YAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACjE,0CAA0C,CAAC,KAAK,CAAC;AAC/C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAC1D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC/D,aAAC,CACF,CAAC;;YAEF,IAAI,yCAAyC,GAAG,EAAE,CAAC;AACnD,YAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChE,yCAAyC,CAAC,KAAK,CAAC;AAC9C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CACzD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC9D,aAAC,CACF,CAAC;;YAGF,IAAI,0CAA0C,GAAG,EAAE,CAAC;AACpD,YAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACjE,0CAA0C,CAAC,KAAK,CAAC;AAC/C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAC1D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC/D,aAAC,CACF,CAAC;;YAEF,IAAI,yCAAyC,GAAG,EAAE,CAAC;AACnD,YAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChE,yCAAyC,CAAC,KAAK,CAAC;AAC9C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CACzD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC9D,aAAC,CACF,CAAC;;YAGF,IAAI,6CAA6C,GAAG,EAAE,CAAC;AACvD,YAAA,UAAU,CAAC,uBAAuB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACpE,6CAA6C,CAAC,KAAK,CAAC;AAClD,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,IAAI,CAC7D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,uBAAuB,CAAC,aAAa,GAAG,YAAY,CAAC;AAClE,aAAC,CACF,CAAC;;YAEF,IAAI,4CAA4C,GAAG,EAAE,CAAC;AACtD,YAAA,UAAU,CAAC,uBAAuB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACnE,4CAA4C,CAAC,KAAK,CAAC;AACjD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,IAAI,CAC5D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,uBAAuB,CAAC,YAAY,GAAG,YAAY,CAAC;AACjE,aAAC,CACF,CAAC;;YAGF,IAAI,2CAA2C,GAAG,EAAE,CAAC;AACrD,YAAA,UAAU,CAAC,qBAAqB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAClE,2CAA2C,CAAC,KAAK,CAAC;AAChD,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,IAAI,CAC3D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,qBAAqB,CAAC,aAAa,GAAG,YAAY,CAAC;AAChE,aAAC,CACF,CAAC;;YAEF,IAAI,0CAA0C,GAAG,EAAE,CAAC;AACpD,YAAA,UAAU,CAAC,qBAAqB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACjE,0CAA0C,CAAC,KAAK,CAAC;AAC/C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAC1D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,qBAAqB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC/D,aAAC,CACF,CAAC;;YAGF,IAAI,oCAAoC,GAAG,EAAE,CAAC;AAC9C,YAAA,UAAU,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC3D,oCAAoC,CAAC,KAAK,CAAC;AACzC,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACtE,gBAAA,UAAU,CAAC,cAAc,CAAC,aAAa,GAAG,YAAY,CAAC;AACzD,aAAC,CAAC,CAAC;;YAEH,IAAI,mCAAmC,GAAG,EAAE,CAAC;AAC7C,YAAA,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC1D,mCAAmC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACzE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACrE,gBAAA,UAAU,CAAC,cAAc,CAAC,YAAY,GAAG,YAAY,CAAC;AACxD,aAAC,CAAC,CAAC;;YAGH,IAAI,uCAAuC,GAAG,EAAE,CAAC;AACjD,YAAA,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC9D,uCAAuC,CAAC,KAAK,CAAC;AAC5C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,IAAI,CACvD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,iBAAiB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC5D,aAAC,CACF,CAAC;;YAEF,IAAI,sCAAsC,GAAG,EAAE,CAAC;AAChD,YAAA,UAAU,CAAC,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC7D,sCAAsC,CAAC,KAAK,CAAC;AAC3C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,IAAI,CACtD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,iBAAiB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC3D,aAAC,CACF,CAAC;;YAGF,IAAI,sCAAsC,GAAG,EAAE,CAAC;AAChD,YAAA,UAAU,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC7D,sCAAsC,CAAC,KAAK,CAAC;AAC3C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,IAAI,CACtD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,gBAAgB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC3D,aAAC,CACF,CAAC;;YAEF,IAAI,qCAAqC,GAAG,EAAE,CAAC;AAC/C,YAAA,UAAU,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC5D,qCAAqC,CAAC,KAAK,CAAC;AAC1C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,IAAI,CACrD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,gBAAgB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC1D,aAAC,CACF,CAAC;;YAGF,IAAI,yCAAyC,GAAG,EAAE,CAAC;AACnD,YAAA,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChE,yCAAyC,CAAC,KAAK,CAAC;AAC9C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CACzD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,mBAAmB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC9D,aAAC,CACF,CAAC;;YAEF,IAAI,wCAAwC,GAAG,EAAE,CAAC;AAClD,YAAA,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC/D,wCAAwC,CAAC,KAAK,CAAC;AAC7C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,IAAI,CACxD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,mBAAmB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC7D,aAAC,CACF,CAAC;;YAGF,IAAI,uCAAuC,GAAG,EAAE,CAAC;AACjD,YAAA,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC9D,uCAAuC,CAAC,KAAK,CAAC;AAC5C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,IAAI,CACvD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,iBAAiB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC5D,aAAC,CACF,CAAC;;YAEF,IAAI,sCAAsC,GAAG,EAAE,CAAC;AAChD,YAAA,UAAU,CAAC,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC7D,sCAAsC,CAAC,KAAK,CAAC;AAC3C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,IAAI,CACtD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,iBAAiB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC3D,aAAC,CACF,CAAC;;YAGF,IAAI,mCAAmC,GAAG,EAAE,CAAC;AAC7C,YAAA,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC1D,mCAAmC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC1E,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACrE,gBAAA,UAAU,CAAC,aAAa,CAAC,aAAa,GAAG,YAAY,CAAC;AACxD,aAAC,CAAC,CAAC;;YAEH,IAAI,kCAAkC,GAAG,EAAE,CAAC;AAC5C,YAAA,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACzD,kCAAkC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACxE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACpE,gBAAA,UAAU,CAAC,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC;AACvD,aAAC,CAAC,CAAC;;YAGH,IAAI,kCAAkC,GAAG,EAAE,CAAC;AAC5C,YAAA,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACzD,kCAAkC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACzE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACpE,gBAAA,UAAU,CAAC,YAAY,CAAC,aAAa,GAAG,YAAY,CAAC;AACvD,aAAC,CAAC,CAAC;;YAEH,IAAI,iCAAiC,GAAG,EAAE,CAAC;AAC3C,YAAA,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACxD,iCAAiC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACvE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACnE,gBAAA,UAAU,CAAC,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC;AACtD,aAAC,CAAC,CAAC;;YAIH,IAAI,0CAA0C,GAAG,EAAE,CAAC;AACpD,YAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACjE,0CAA0C,CAAC,KAAK,CAAC;AAC/C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAC1D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC/D,aAAC,CACF,CAAC;;YAEF,IAAI,yCAAyC,GAAG,EAAE,CAAC;AACnD,YAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChE,yCAAyC,CAAC,KAAK,CAAC;AAC9C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CACzD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC9D,aAAC,CACF,CAAC;;YAGF,IAAI,8CAA8C,GAAG,EAAE,CAAC;AACxD,YAAA,UAAU,CAAC,wBAAwB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACrE,8CAA8C,CAAC,KAAK,CAAC;AACnD,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,IAAI,CAC9D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,wBAAwB,CAAC,aAAa,GAAG,YAAY,CAAC;AACnE,aAAC,CACF,CAAC;;YAEF,IAAI,6CAA6C,GAAG,EAAE,CAAC;AACvD,YAAA,UAAU,CAAC,wBAAwB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACpE,6CAA6C,CAAC,KAAK,CAAC;AAClD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,IAAI,CAC7D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,wBAAwB,CAAC,YAAY,GAAG,YAAY,CAAC;AAClE,aAAC,CACF,CAAC;;YAGF,IAAI,+CAA+C,GAAG,EAAE,CAAC;AACzD,YAAA,UAAU,CAAC,yBAAyB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACtE,+CAA+C,CAAC,KAAK,CAAC;AACpD,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC,IAAI,CAC/D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,yBAAyB,CAAC,aAAa,GAAG,YAAY,CAAC;AACpE,aAAC,CACF,CAAC;;YAEF,IAAI,8CAA8C,GAAG,EAAE,CAAC;AACxD,YAAA,UAAU,CAAC,yBAAyB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACrE,8CAA8C,CAAC,KAAK,CAAC;AACnD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,IAAI,CAC9D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,yBAAyB,CAAC,YAAY,GAAG,YAAY,CAAC;AACnE,aAAC,CACF,CAAC;;YAGF,IAAI,0CAA0C,GAAG,EAAE,CAAC;AACpD,YAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACjE,0CAA0C,CAAC,KAAK,CAAC;AAC/C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAC1D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC/D,aAAC,CACF,CAAC;;YAEF,IAAI,yCAAyC,GAAG,EAAE,CAAC;AACnD,YAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChE,yCAAyC,CAAC,KAAK,CAAC;AAC9C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CACzD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC9D,aAAC,CACF,CAAC;;YAGF,IAAI,0CAA0C,GAAG,EAAE,CAAC;AACpD,YAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACjE,0CAA0C,CAAC,KAAK,CAAC;AAC/C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAC1D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC/D,aAAC,CACF,CAAC;;YAEF,IAAI,yCAAyC,GAAG,EAAE,CAAC;AACnD,YAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChE,yCAAyC,CAAC,KAAK,CAAC;AAC9C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CACzD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC9D,aAAC,CACF,CAAC;;;YAIF,IAAI,qDAAqD,GAAG,EAAE,CAAC;AAC/D,YAAA,UAAU,CAAC,+BAA+B,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC5E,qDAAqD,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC5F,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACvF,gBAAA,UAAU,CAAC,+BAA+B,CAAC,aAAa,GAAG,YAAY,CAAC;AAC1E,aAAC,CAAC,CAAC;;YAEH,IAAI,oDAAoD,GAAG,EAAE,CAAC;AAC9D,YAAA,UAAU,CAAC,+BAA+B,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC3E,oDAAoD,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC1F,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACtF,gBAAA,UAAU,CAAC,+BAA+B,CAAC,YAAY,GAAG,YAAY,CAAC;AACzE,aAAC,CAAC,CAAC;;;YAGH,IAAI,mCAAmC,GAAG,EAAE,CAAC;AAC7C,YAAA,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC1D,mCAAmC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC1E,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACrE,gBAAA,UAAU,CAAC,aAAa,CAAC,aAAa,GAAG,YAAY,CAAC;AACxD,aAAC,CAAC,CAAC;;YAEH,IAAI,kCAAkC,GAAG,EAAE,CAAC;AAC5C,YAAA,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACzD,kCAAkC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACxE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACpE,gBAAA,UAAU,CAAC,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC;AACvD,aAAC,CAAC,CAAC;;YAGH,IAAI,+CAA+C,GAAG,EAAE,CAAC;AACzD,YAAA,UAAU,CAAC,yBAAyB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACtE,+CAA+C,CAAC,KAAK,CAAC;AACpD,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC,IAAI,CAC/D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,yBAAyB,CAAC,aAAa,GAAG,YAAY,CAAC;AACpE,aAAC,CACF,CAAC;;YAEF,IAAI,8CAA8C,GAAG,EAAE,CAAC;AACxD,YAAA,UAAU,CAAC,yBAAyB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACrE,8CAA8C,CAAC,KAAK,CAAC;AACnD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,IAAI,CAC9D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,yBAAyB,CAAC,YAAY,GAAG,YAAY,CAAC;AACnE,aAAC,CACF,CAAC;;YAGF,IAAI,0CAA0C,GAAG,EAAE,CAAC;AACpD,YAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACjE,0CAA0C,CAAC,KAAK,CAAC;AAC/C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAC1D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC/D,aAAC,CACF,CAAC;;YAEF,IAAI,yCAAyC,GAAG,EAAE,CAAC;AACnD,YAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChE,yCAAyC,CAAC,KAAK,CAAC;AAC9C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CACzD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC9D,aAAC,CACF,CAAC;;YAGF,IAAI,0CAA0C,GAAG,EAAE,CAAC;AACpD,YAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACjE,0CAA0C,CAAC,KAAK,CAAC;AAC/C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAC1D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC/D,aAAC,CACF,CAAC;;YAEF,IAAI,yCAAyC,GAAG,EAAE,CAAC;AACnD,YAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChE,yCAAyC,CAAC,KAAK,CAAC;AAC9C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CACzD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC9D,aAAC,CACF,CAAC;;;;YAKF,IAAI,+BAA+B,GAAG,EAAE,CAAC;AACzC,YAAA,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACtD,+BAA+B,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACtE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACjE,gBAAA,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY,CAAC;AACpD,aAAC,CAAC,CAAC;;YAEH,IAAI,8BAA8B,GAAG,EAAE,CAAC;AACxC,YAAA,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACrD,8BAA8B,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACpE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAChE,gBAAA,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY,CAAC;AACnD,aAAC,CAAC,CAAC;;YAGH,IAAI,2CAA2C,GAAG,EAAE,CAAC;AACrD,YAAA,UAAU,CAAC,qBAAqB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAClE,2CAA2C,CAAC,KAAK,CAAC;AAChD,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,IAAI,CAC3D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,qBAAqB,CAAC,aAAa,GAAG,YAAY,CAAC;AAChE,aAAC,CACF,CAAC;;YAEF,IAAI,0CAA0C,GAAG,EAAE,CAAC;AACpD,YAAA,UAAU,CAAC,qBAAqB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACjE,0CAA0C,CAAC,KAAK,CAAC;AAC/C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAC1D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,qBAAqB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC/D,aAAC,CACF,CAAC;;;YAIF,IAAI,sCAAsC,GAAG,EAAE,CAAC;AAChD,YAAA,UAAU,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC7D,sCAAsC,CAAC,KAAK,CAAC;AAC3C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,IAAI,CACtD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,gBAAgB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC3D,aAAC,CACF,CAAC;;YAEF,IAAI,qCAAqC,GAAG,EAAE,CAAC;AAC/C,YAAA,UAAU,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC5D,qCAAqC,CAAC,KAAK,CAAC;AAC1C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,IAAI,CACrD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,gBAAgB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC1D,aAAC,CACF,CAAC;;YAGF,IAAI,kDAAkD,GAAG,EAAE,CAAC;AAC5D,YAAA,UAAU,CAAC,4BAA4B,CAAC,aAAa,CAAC,OAAO,CAC3D,CAAC,CAAC,EAAE,KAAK,KAAI;gBACX,kDAAkD,CAAC,KAAK,CAAC;AACvD,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,IAAI,CAClE,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,4BAA4B,CAAC,aAAa,GAAG,YAAY,CAAC;AACvE,aAAC,CACF,CAAC;;YAEF,IAAI,iDAAiD,GAAG,EAAE,CAAC;AAC3D,YAAA,UAAU,CAAC,4BAA4B,CAAC,YAAY,CAAC,OAAO,CAC1D,CAAC,CAAC,EAAE,KAAK,KAAI;gBACX,iDAAiD,CAAC,KAAK,CAAC;AACtD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,IAAI,CACjE,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,4BAA4B,CAAC,YAAY,GAAG,YAAY,CAAC;AACtE,aAAC,CACF,CAAC;;YAGF,IAAI,6CAA6C,GAAG,EAAE,CAAC;AACvD,YAAA,UAAU,CAAC,uBAAuB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACpE,6CAA6C,CAAC,KAAK,CAAC;AAClD,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,IAAI,CAC7D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,uBAAuB,CAAC,aAAa,GAAG,YAAY,CAAC;AAClE,aAAC,CACF,CAAC;;YAEF,IAAI,4CAA4C,GAAG,EAAE,CAAC;AACtD,YAAA,UAAU,CAAC,uBAAuB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACnE,4CAA4C,CAAC,KAAK,CAAC;AACjD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,IAAI,CAC5D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,uBAAuB,CAAC,YAAY,GAAG,YAAY,CAAC;AACjE,aAAC,CACF,CAAC;;YAGF,IAAI,6CAA6C,GAAG,EAAE,CAAC;AACvD,YAAA,UAAU,CAAC,uBAAuB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACpE,6CAA6C,CAAC,KAAK,CAAC;AAClD,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,IAAI,CAC7D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,uBAAuB,CAAC,aAAa,GAAG,YAAY,CAAC;AAClE,aAAC,CACF,CAAC;;YAEF,IAAI,4CAA4C,GAAG,EAAE,CAAC;AACtD,YAAA,UAAU,CAAC,uBAAuB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACnE,4CAA4C,CAAC,KAAK,CAAC;AACjD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,IAAI,CAC5D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,uBAAuB,CAAC,YAAY,GAAG,YAAY,CAAC;AACjE,aAAC,CACF,CAAC;;;YAGF,IAAI,6CAA6C,GAAG,EAAE,CAAC;AACvD,YAAA,UAAU,CAAC,uBAAuB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACpE,6CAA6C,CAAC,KAAK,CAAC;AAClD,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,IAAI,CAC7D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,uBAAuB,CAAC,aAAa,GAAG,YAAY,CAAC;AAClE,aAAC,CACF,CAAC;;YAEF,IAAI,4CAA4C,GAAG,EAAE,CAAC;AACtD,YAAA,UAAU,CAAC,uBAAuB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACnE,4CAA4C,CAAC,KAAK,CAAC;AACjD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,IAAI,CAC5D,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,uBAAuB,CAAC,YAAY,GAAG,YAAY,CAAC;AACjE,aAAC,CACF,CAAC;;;YAGF,IAAI,iDAAiD,GAAG,EAAE,CAAC;AAC3D,YAAA,UAAU,CAAC,2BAA2B,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACxE,iDAAiD,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACxF,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACnF,gBAAA,UAAU,CAAC,2BAA2B,CAAC,aAAa,GAAG,YAAY,CAAC;AACtE,aAAC,CAAC,CAAC;;YAEH,IAAI,gDAAgD,GAAG,EAAE,CAAC;AAC1D,YAAA,UAAU,CAAC,2BAA2B,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACvE,gDAAgD,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACtF,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAClF,gBAAA,UAAU,CAAC,2BAA2B,CAAC,YAAY,GAAG,YAAY,CAAC;AACrE,aAAC,CAAC,CAAC;;YAEH,IAAI,mDAAmD,GAAG,EAAE,CAAC;AAC7D,YAAA,UAAU,CAAC,6BAA6B,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC1E,mDAAmD,CAAC,KAAK,CAAC;AACxD,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,IAAI,CACnE,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,6BAA6B,CAAC,aAAa,GAAG,YAAY,CAAC;AACxE,aAAC,CACF,CAAC;;YAEF,IAAI,kDAAkD,GAAG,EAAE,CAAC;AAC5D,YAAA,UAAU,CAAC,6BAA6B,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACzE,kDAAkD,CAAC,KAAK,CAAC;AACvD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,IAAI,CAClE,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,6BAA6B,CAAC,YAAY,GAAG,YAAY,CAAC;AACvE,aAAC,CACF,CAAC;;YAEF,IAAI,kDAAkD,GAAG,EAAE,CAAC;AAC5D,YAAA,UAAU,CAAC,4BAA4B,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACzE,kDAAkD,CAAC,KAAK,CAAC;AACvD,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,IAAI,CAClE,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,4BAA4B,CAAC,aAAa,GAAG,YAAY,CAAC;AACvE,aAAC,CACF,CAAC;;YAEF,IAAI,iDAAiD,GAAG,EAAE,CAAC;AAC3D,YAAA,UAAU,CAAC,4BAA4B,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACxE,iDAAiD,CAAC,KAAK,CAAC;AACtD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,IAAI,CACjE,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,4BAA4B,CAAC,YAAY,GAAG,YAAY,CAAC;AACtE,aAAC,CACF,CAAC;;YAEF,IAAI,sDAAsD,GAAG,EAAE,CAAC;AAChE,YAAA,UAAU,CAAC,gCAAgC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC7E,sDAAsD,CAAC,KAAK,CAAC;AAC3D,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,IAAI,CACtE,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,gCAAgC,CAAC,aAAa,GAAG,YAAY,CAAC;AAC3E,aAAC,CACF,CAAC;;YAEF,IAAI,qDAAqD,GAAG,EAAE,CAAC;AAC/D,YAAA,UAAU,CAAC,gCAAgC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC5E,qDAAqD,CAAC,KAAK,CAAC;AAC1D,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,IAAI,CACrE,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,gCAAgC,CAAC,YAAY,GAAG,YAAY,CAAC;AAC1E,aAAC,CACF,CAAC;;YAGF,IAAI,4CAA4C,GAAG,EAAE,CAAC;AACtD,YAAA,UAAU,CAAC,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACnE,4CAA4C,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACnF,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC9E,gBAAA,UAAU,CAAC,sBAAsB,CAAC,aAAa,GAAG,YAAY,CAAC;AACjE,aAAC,CAAC,CAAC;;YAEH,IAAI,2CAA2C,GAAG,EAAE,CAAC;AACrD,YAAA,UAAU,CAAC,sBAAsB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAClE,2CAA2C,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACjF,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC7E,gBAAA,UAAU,CAAC,sBAAsB,CAAC,YAAY,GAAG,YAAY,CAAC;AAChE,aAAC,CAAC,CAAC;;YAGH,IAAI,6CAA6C,GAAG,EAAE,CAAC;AACvD,YAAA,UAAU,CAAC,uBAAuB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACpE,6CAA6C,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACpF,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC/E,gBAAA,UAAU,CAAC,uBAAuB,CAAC,aAAa,GAAG,YAAY,CAAC;AAClE,aAAC,CAAC,CAAC;;YAEH,IAAI,4CAA4C,GAAG,EAAE,CAAC;AACtD,YAAA,UAAU,CAAC,uBAAuB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACnE,4CAA4C,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAClF,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC9E,gBAAA,UAAU,CAAC,uBAAuB,CAAC,YAAY,GAAG,YAAY,CAAC;AACjE,aAAC,CAAC,CAAC;;YAGF,IAAI,uCAAuC,GAAG,EAAE,CAAC;AACjD,YAAA,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC9D,uCAAuC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC9E,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACzE,gBAAA,UAAU,CAAC,iBAAiB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC5D,aAAC,CAAC,CAAC;;YAEH,IAAI,sCAAsC,GAAG,EAAE,CAAC;AAChD,YAAA,UAAU,CAAC,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC7D,sCAAsC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC5E,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACxE,gBAAA,UAAU,CAAC,iBAAiB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC3D,aAAC,CAAC,CAAC;;YAGH,IAAI,yCAAyC,GAAG,EAAE,CAAC;AACnD,YAAA,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChE,yCAAyC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAChF,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC3E,gBAAA,UAAU,CAAC,mBAAmB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC9D,aAAC,CAAC,CAAC;;YAEH,IAAI,wCAAwC,GAAG,EAAE,CAAC;AAClD,YAAA,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC/D,wCAAwC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9E,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC1E,gBAAA,UAAU,CAAC,mBAAmB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC7D,aAAC,CAAC,CAAC;;YAGH,IAAI,0CAA0C,GAAG,EAAE,CAAC;AACpD,YAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACjE,0CAA0C,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACjF,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC5E,gBAAA,UAAU,CAAC,oBAAoB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC/D,aAAC,CAAC,CAAC;;YAEH,IAAI,yCAAyC,GAAG,EAAE,CAAC;AACnD,YAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChE,yCAAyC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC/E,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC3E,gBAAA,UAAU,CAAC,oBAAoB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC9D,aAAC,CAAC,CAAC;;YAIH,IAAI,8CAA8C,GAAG,EAAE,CAAC;AACxD,YAAA,UAAU,CAAC,wBAAwB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACrE,8CAA8C,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACrF,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAChF,gBAAA,UAAU,CAAC,wBAAwB,CAAC,aAAa,GAAG,YAAY,CAAC;AACnE,aAAC,CAAC,CAAC;;YAEH,IAAI,6CAA6C,GAAG,EAAE,CAAC;AACvD,YAAA,UAAU,CAAC,wBAAwB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACpE,6CAA6C,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACnF,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC/E,gBAAA,UAAU,CAAC,wBAAwB,CAAC,YAAY,GAAG,YAAY,CAAC;AAClE,aAAC,CAAC,CAAC;;YAGF,IAAI,yCAAyC,GAAG,EAAE,CAAC;AACnD,YAAA,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChE,yCAAyC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAChF,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC3E,gBAAA,UAAU,CAAC,mBAAmB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC9D,aAAC,CAAC,CAAC;;YAEH,IAAI,wCAAwC,GAAG,EAAE,CAAC;AAClD,YAAA,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC/D,wCAAwC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9E,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAC1E,gBAAA,UAAU,CAAC,mBAAmB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC7D,aAAC,CAAC,CAAC;;YAIL,IAAI,iCAAiC,GAAG,EAAE,CAAC;AAC3C,YAAA,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACxD,iCAAiC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACxE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACnE,gBAAA,UAAU,CAAC,WAAW,CAAC,aAAa,GAAG,YAAY,CAAC;AACtD,aAAC,CAAC,CAAC;;YAEH,IAAI,gCAAgC,GAAG,EAAE,CAAC;AAC1C,YAAA,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACvD,gCAAgC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACtE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAClE,gBAAA,UAAU,CAAC,WAAW,CAAC,YAAY,GAAG,YAAY,CAAC;AACrD,aAAC,CAAC,CAAC;;YAGH,IAAI,iCAAiC,GAAG,EAAE,CAAC;AAC3C,YAAA,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACxD,iCAAiC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACxE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACnE,gBAAA,UAAU,CAAC,WAAW,CAAC,aAAa,GAAG,YAAY,CAAC;AACtD,aAAC,CAAC,CAAC;;YAEH,IAAI,gCAAgC,GAAG,EAAE,CAAC;AAC1C,YAAA,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACvD,gCAAgC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACtE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AAClE,gBAAA,UAAU,CAAC,WAAW,CAAC,YAAY,GAAG,YAAY,CAAC;AACrD,aAAC,CAAC,CAAC;;YAGH,IAAI,kCAAkC,GAAG,EAAE,CAAC;AAC5C,YAAA,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACzD,kCAAkC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACzE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACpE,gBAAA,UAAU,CAAC,YAAY,CAAC,aAAa,GAAG,YAAY,CAAC;AACvD,aAAC,CAAC,CAAC;;YAEH,IAAI,iCAAiC,GAAG,EAAE,CAAC;AAC3C,YAAA,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACxD,iCAAiC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACvE,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;AACnE,gBAAA,UAAU,CAAC,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC;AACtD,aAAC,CAAC,CAAC;;YAGH,IAAI,yCAAyC,GAAG,EAAE,CAAC;AACnD,YAAA,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAChE,yCAAyC,CAAC,KAAK,CAAC;AAC9C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CACzD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,mBAAmB,CAAC,aAAa,GAAG,YAAY,CAAC;AAC9D,aAAC,CACF,CAAC;;YAEF,IAAI,wCAAwC,GAAG,EAAE,CAAC;AAClD,YAAA,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBAC/D,wCAAwC,CAAC,KAAK,CAAC;AAC7C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,IAAI,CACxD,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,mBAAmB,CAAC,YAAY,GAAG,YAAY,CAAC;AAC7D,aAAC,CACF,CAAC;;YAGF,IAAI,iDAAiD,GAAG,EAAE,CAAC;AAC3D,YAAA,UAAU,CAAC,2BAA2B,CAAC,aAAa,CAAC,OAAO,CAC1D,CAAC,CAAC,EAAE,KAAK,KAAI;gBACX,iDAAiD,CAAC,KAAK,CAAC;AACtD,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAC,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,IAAI,CACjE,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,2BAA2B,CAAC,aAAa,GAAG,YAAY,CAAC;AACtE,aAAC,CACF,CAAC;;YAEF,IAAI,gDAAgD,GAAG,EAAE,CAAC;AAC1D,YAAA,UAAU,CAAC,2BAA2B,CAAC,YAAY,CAAC,OAAO,CACzD,CAAC,CAAC,EAAE,KAAK,KAAI;gBACX,gDAAgD,CAAC,KAAK,CAAC;AACrD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,IAAI,CAChE,CAAC,YAAY,KAAI;AACf,gBAAA,UAAU,CAAC,2BAA2B,CAAC,YAAY,GAAG,YAAY,CAAC;AACrE,aAAC,CACF,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC,CAAC;AAChB,SAAC,CAAC,CAAC;KACJ;;AAGD,IAAA,kBAAkB,CAAC,SAAS,EAAA;AAC1B,QAAA,MAAM,GAAG,GAAG,CAAkC,+BAAA,EAAA,SAAS,OAAO,CAAC;AAC/D,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;AAC7B,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;gBAC3C,OAAO,CAAC,IAAI,CAAC,CAAC;AAChB,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;AAED,IAAA,iBAAiB,CAAC,SAAS,EAAA;AACzB,QAAA,MAAM,GAAG,GAAG,CAAiC,8BAAA,EAAA,SAAS,OAAO,CAAC;AAC9D,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;AAC7B,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;gBAC3C,OAAO,CAAC,IAAI,CAAC,CAAC;AAChB,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;6GAn4GU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCGY,YAAY,CAAA;IAUvB,WACU,CAAA,eAAgC,EAChC,WAAwB,EACxB,cAA8B,EAC9B,OAAyB,EACzB,eAAgC,EAAA;QAJhC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAkB;QACzB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;;AAZlC,QAAA,IAAA,CAAA,4BAA4B,GAAG;YACrC,iBAAiB;YACjB,kBAAkB;YAClB,kBAAkB;YAClB,iBAAiB;SAClB,CAAC;KAQG;AAGL;;;;;;;AAOG;AACH,IAAA,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAS,EAAA;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;KAC9E;AAKD;;;AAGG;AACH,IAAA,aAAa,CAAC,SAAiB,EAAA;AAC7B,QAAA,QACE,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9B,YAAA,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9B,YAAA,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;AAChC,YAAA,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9B,YAAA,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC;AACvC,YAAA,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC;AACtC,YAAA,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC;AAC1C,YAAA,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC;AAC3C,YAAA,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC;AACpC,YAAA,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC;AACvC,YAAA,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC;AACvC,YAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AAC1B,YAAA,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;AACzB,YAAA,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EACzB;KACH;AAID;;;;;AAKG;AACH,IAAA,kBAAkB,CAChB,KAAa,EACb,MAAW,EACX,aAAc,EACd,cAAe,EAAA;;QAEf,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,CAAA,EAAA,GAAA,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAb,aAAa,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE;YAClC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAY,KAAI;AAC7C,gBAAA,IAAI,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE;AACzC,oBAAA,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;AACrB,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;aAAM,IAAI,CAAA,EAAA,GAAA,cAAc,KAAA,IAAA,IAAd,cAAc,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAd,cAAc,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE;YAC1C,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAY,KAAI;AAC9C,gBAAA,IAAI,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE;AACzC,oBAAA,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;AACrB,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,OAAO,CAAG,EAAA,KAAK,CAAI,CAAA,EAAA,MAAM,EAAE,CAAC;KAC7B;AAED;;;AAGG;IACH,cAAc,GAAA;QACZ,MAAM,OAAO,GAAW,kBAAkB,CAAC;QAC3C,IAAI,KAAK,GAAW,GAAG,CAAC;QACxB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAClC,YAAA,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAClD,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;;;AAKG;IACH,iBAAiB,CAAC,KAAa,EAAE,MAAW,EAAA;QAC1C,OAAO,CAAA,EAAG,KAAK,CAAA,CAAE,CAAC;KACnB;AAED;;;;AAIG;IACH,oBAAoB,CAAC,QAAgB,EAAE,UAAkB,EAAA;AACvD,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,IAAI,CACzD,CAAC,IAAI,KAAI;YACP,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,IAAI,CAAC,mBAAmB,CACtB,OAAO,EACP,CAAA,qBAAA,CAAuB,CACxB,CAAC;AACH,aAAA;AACH,SAAC,EACD,CAAC,KAAK,KAAI;AACR,YAAA,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CACtB,OAAO,EACP,CAAA,gDAAA,CAAkD,CACnD,CAAC;AACJ,SAAC,CACF,CAAC;KACH;AAED;;;;;;;AAOG;AACH,IAAA,SAAS,CACP,MAAM,EACN,aAAa,EACb,cAAc,EACd,WAAY,EAAA;QAGZ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;;AACrC,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;gBACjD,MAAM,EAAE,GAAG,gBAAgB,GAAG,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC;AAClG,gBAAA,IAAI,kBAAkB,GAAG,gBAAgB,GAAG,cAAc,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;gBACnF,IAAI,IAAI,GACH,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAE,CACF,EAAA,MAAM,KACT,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,CAAC,EACjF,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,cAAc,EACT,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,MAAM,CAAC,gBAAgB,CAAC,CAAA,EAAA,EAC3B,MAAM,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACD,CAAA,EAAA,GAAA,MAAM,CAAC,gBAAgB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CACnC,EAAA,EAAA,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,EAAE,EAEvB,CAAA,EAAA,MAAM,EAAE;AACN,4BAAA,iBAAiB,EAAE,CAAC;AACpB,4BAAA,iBAAiB,EAAE,CAAC;AACpB,4BAAA,iBAAiB,EAAE,CAAC;AACpB,4BAAA,eAAe,EAAE,CAAC;AAClB,4BAAA,eAAe,EAAE,CAAC;AACnB,yBAAA,EAAA,CAAA,EAEH,sBAAsB,EACjB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,EAAC,EAAA,EACjE,MAAM,EACD,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAA,EAAA,IAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,0CAAE,MAAM,CAAA,EAAA,EACzE,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,EAAE,EAAA,CAAA,EAEvB,MAAM,EAAE;AACN,4BAAA,iBAAiB,EAAE,CAAC;AACpB,4BAAA,iBAAiB,EAAE,CAAC;AACpB,4BAAA,iBAAiB,EAAE,CAAC;AACpB,4BAAA,eAAe,EAAE,CAAC;AAClB,4BAAA,eAAe,EAAE,CAAC;AACnB,yBAAA,EAAA,CAAA,EAEH,uBAAuB,EAClB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAAC,MAAM,CAAC,yBAAyB,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,EAAC,EAAA,EAClE,MAAM,EACD,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAA,EAAA,IAAC,MAAM,CAAC,yBAAyB,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,0CAAE,MAAM,CAAA,EAAA,EAC1E,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,EAAE,EAAA,CAAA,EAEvB,MAAM,EAAE;AACN,4BAAA,iBAAiB,EAAE,CAAC;AACpB,4BAAA,iBAAiB,EAAE,CAAC;AACpB,4BAAA,iBAAiB,EAAE,CAAC;AACpB,4BAAA,eAAe,EAAE,CAAC;AAClB,4BAAA,eAAe,EAAE,CAAC;AACnB,yBAAA,EAAA,CAAA,EAEH,sBAAsB,EACjB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,EAAC,EAAA,EACjE,MAAM,EACD,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAA,EAAA,IAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,0CAAE,MAAM,CAAA,EAAA,EACzE,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,EAAE,EAAA,CAAA,EAEvB,MAAM,EAAE;AACN,4BAAA,iBAAiB,EAAE,CAAC;AACpB,4BAAA,iBAAiB,EAAE,CAAC;AACpB,4BAAA,iBAAiB,EAAE,CAAC;AACpB,4BAAA,eAAe,EAAE,CAAC;AAClB,4BAAA,eAAe,EAAE,CAAC;AACnB,yBAAA,EAAA,CAAA,EAEH,uBAAuB,EAClB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAAC,MAAM,CAAC,yBAAyB,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,EAAC,EAAA,EAClE,MAAM,EACD,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAA,EAAA,IAAC,MAAM,CAAC,yBAAyB,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,0CAAE,MAAM,CAAA,EAAA,EAC1E,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,EAAE,EAAA,CAAA,EAEvB,MAAM,EAAE;AACN,4BAAA,iBAAiB,EAAE,CAAC;AACpB,4BAAA,iBAAiB,EAAE,CAAC;AACpB,4BAAA,iBAAiB,EAAE,CAAC;AACpB,4BAAA,eAAe,EAAE,CAAC;AAClB,4BAAA,eAAe,EAAE,CAAC;AACnB,yBAAA,EAAA,CAAA,EAEH,CAAC,mBAAmB,GAAG,kBAAkB,qBACpC,MAAM,CAAC,kBAAkB,CAAC,GAE/B,CAAC,2BAA2B,GAAG,kBAAkB,GAC5C,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,GAAG,0BAA0B,GAAG,kBAAkB,CAAC,CAAA,EAEjG,CAAC,4BAA4B,GAAG,kBAAkB,GAAC,MAAA,CAAA,MAAA,CAAA,EAAA,EAC9C,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,GAAG,2BAA2B,GAAG,kBAAkB,CAAC,CAEnG,EAAA,CAAC,2BAA2B,GAAG,kBAAkB,GAAC,MAAA,CAAA,MAAA,CAAA,EAAA,EAC7C,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,GAAG,0BAA0B,GAAG,kBAAkB,CAAC,CAAA,EAEjG,CAAC,4BAA4B,GAAG,kBAAkB,qBAC7C,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,GAAG,2BAA2B,GAAG,kBAAkB,CAAC,CAEnG,EAAA,qBAAqB,EAAO,MAAA,CAAA,MAAA,CAAA,EAAA,GAAC,MAAM,CAAC,uBAAuB,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,IACvF,sBAAsB,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAAQ,MAAM,CAAC,wBAAwB,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,EACzF,EAAA,qBAAqB,qBAAQ,MAAM,CAAC,uBAAuB,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,EACvF,EAAA,sBAAsB,EAAO,MAAA,CAAA,MAAA,CAAA,EAAA,GAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,IACzF,KAAK,EAAE,QAAQ,EAChB,CAAA,CAAC;gBAEF,IAAI,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AACnD,oBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,WAAW,CAAC;AAC3C,iBAAA;gBAED,OAAO,IAAI,CAAC,gBAAgB,CAAA;gBAC5B,OAAO,IAAI,CAAC,wBAAwB,CAAA;gBACpC,OAAO,IAAI,CAAC,yBAAyB,CAAA;gBACrC,OAAO,IAAI,CAAC,wBAAwB,CAAA;gBACpC,OAAO,IAAI,CAAC,yBAAyB,CAAA;gBAErC,IAAI,QAAQ,GAAG,IAAI,CAAC;AACpB,gBAAA,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,yBAAyB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;oBAC1O,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;AACzC,iBAAA;AAED,gBAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,IAAI,CAChD,CAAO,MAAW,KAAI,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACpB,oBAAA,IAAI,MAAM,EAAE;AACV,wBAAA,IAAI,MAAM,CAAC,IAAI,IAAI,kBAAkB,EAAE;AACrC,4BAAA,IAAI,CAAC,eAAe;iCACjB,QAAQ,CAAC,aAAa,CAAC;AACvB,iCAAA,SAAS,CAAC,CAAC,KAAU,KAAI;AACxB,gCAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,EAAE,MAAM,EAAE,CAAC,EAAE,EACb,CAAC,CAAC,EAAE,KAAK,KAAI;AACX,oCAAA,MAAM,SAAS,GACb,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAE,MAAM,CAAC,GAAG,EAClB,EAAA,KAAK,CACR,EAAA,EAAA,yBAAyB,EAAE,IAAI,EAC/B,IAAI,EAAE,CAAA,YAAA,EAAe,KAAK,GAAG,CAAC,CAAE,CAAA,EAChC,WAAW,EAAE,EAAE,EACf,UAAU,EAAA,MAAA,CAAA,MAAA,CAAA,EACR,YAAY,EAAE,SAAS,EACvB,OAAO,EAAE,CAAe,YAAA,EAAA,KAAK,GAAG,CAAC,CAAA,CAAE,IAChC,KAAK,CAAC,UAAU,CAAA,EAErB,cAAc,EACT,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,cAAc,CAAA,EACpB,MAAM,CAAC,cAAc,CAE1B,EAAA,sBAAsB,kCACjB,KAAK,CAAC,sBAAsB,CAC5B,EAAA,MAAM,CAAC,sBAAsB,CAAA,EAElC,uBAAuB,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAClB,KAAK,CAAC,uBAAuB,GAC7B,MAAM,CAAC,uBAAuB,CAEnC,EAAA,uBAAuB,kCAClB,KAAK,CAAC,uBAAuB,CAC7B,EAAA,MAAM,CAAC,uBAAuB,CAAA,EAEnC,sBAAsB,EACjB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,sBAAsB,GAC5B,MAAM,CAAC,sBAAsB,CAElC,EAAA,CAAC,mBAAmB,GAAG,MAAM,CAAC,GAAG,GAC5B,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,gBAAgB,CAAA,EACtB,MAAM,CAAC,cAAc,CAE1B,EAAA,CAAC,2BAA2B,GAAG,MAAM,CAAC,GAAG,mCACpC,KAAK,CAAC,wBAAwB,CAC9B,EAAA,MAAM,CAAC,sBAAsB,CAAA,EAElC,CAAC,4BAA4B,GAAG,MAAM,CAAC,GAAG,GAAC,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACtC,KAAK,CAAC,yBAAyB,GAC/B,MAAM,CAAC,uBAAuB,CAEnC,EAAA,CAAC,2BAA2B,GAAG,MAAM,CAAC,GAAG,GACpC,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,wBAAwB,CAAA,EAC9B,MAAM,CAAC,sBAAsB,CAElC,EAAA,CAAC,4BAA4B,GAAG,MAAM,CAAC,GAAG,mCACrC,KAAK,CAAC,yBAAyB,CAC/B,EAAA,MAAM,CAAC,uBAAuB,CAAA,EAEnC,QAAQ,EAAE;AACR,4CAAA,GAAG,EAAE,KAAK;AACV,4CAAA,KAAK,EAAE,KAAK;AACZ,4CAAA,MAAM,EAAE,IAAI;AACZ,4CAAA,IAAI,EAAE,KAAK;yCACZ,EACD,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,GAAG,EACV,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,KAAK,EACZ,aAAa,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACR,KAAK,CAAC,aAAa,KACtB,aAAa,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACR,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,KACrC,kBAAkB,EAAE,IAAI,CAAC,cAAc,EAAE,EACzC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,MAAM,EAGxB,CAAA,EAAA,CAAA,EAAA,qBAAqB,kCAChB,KAAK,CAAC,qBAAqB,CAC9B,EAAA,EAAA,aAAa,kCACR,KAAK,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAC7C,EAAA,EAAA,kBAAkB,EAAE,IAAI,CAAC,cAAc,EAAE,EACzC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,MAAM,EAAA,CAAA,EAAA,CAAA,EAGxB,sBAAsB,EACjB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,sBAAsB,CAC/B,EAAA,EAAA,aAAa,kCACR,KAAK,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAC9C,EAAA,EAAA,kBAAkB,EAAE,IAAI,CAAC,cAAc,EAAE,EACzC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,MAAM,EAAA,CAAA,EAAA,CAAA,EAGxB,qBAAqB,EAChB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,qBAAqB,CAAA,EAAA,EAC9B,aAAa,EACR,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAA,EAAA,EAC7C,kBAAkB,EAAE,IAAI,CAAC,cAAc,EAAE,EACzC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,MAAM,QAGxB,sBAAsB,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACjB,KAAK,CAAC,sBAAsB,KAC/B,aAAa,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACR,KAAK,CAAC,sBAAsB,CAAC,aAAa,CAAC,KAC9C,kBAAkB,EAAE,IAAI,CAAC,cAAc,EAAE,EACzC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,MAAM,EAAA,CAAA,EAAA,CAAA,EAAA,CAGzB,CAAC;oCACF,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC5D,iCAAC,CACF,CAAC;gCACF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAa,KAAI;AAC3C,oCAAA,IAAI,QAAQ,EAAE;AACZ,wCAAA,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;wCAC1B,UAAU,CAAC,MAAK;4CACd,OAAO,CAAC,MAAM,CAAC,CAAC;yCACjB,EAAE,CAAC,CAAC,CAAC;AACP,qCAAA;AACH,iCAAC,CAAC,CAAC;AACL,6BAAC,CAAC,CAAC;AACN,yBAAA;AAAM,6BAAA,IAAI,MAAM,CAAC,IAAI,IAAI,cAAc,IAAI,MAAM,CAAC,IAAI,IAAI,mBAAmB,IAAI,MAAM,CAAC,IAAI,IAAI,0BAA0B,EAAE;AAC3H,4BAAA,MAAM,OAAO,GAAG;AACd,gCAAA,OAAO,EAAE,UAAU;AACnB,gCAAA,UAAU,EAAE,QAAQ;AACpB,gCAAA,OAAO,EAAE,SAAS;AAClB,gCAAA,IAAI,EAAE,SAAS;AACf,gCAAA,OAAO,EAAE,OAAO;AAChB,gCAAA,WAAW,EAAE,YAAY;AACzB,gCAAA,MAAM,EAAE,SAAS;6BAClB,CAAC;AAEF,4BAAA,IAAI,CAAC,eAAe;iCACjB,QAAQ,CAAC,sBAAsB,CAAC;AAChC,iCAAA,SAAS,CAAC,CAAC,KAAU,KAAI;AACxB,gCAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,EAAE,MAAM,EAAE,CAAC,EAAE,EACb,CAAC,CAAC,EAAE,KAAK,KAAI;oCAEX,IAAI,SAAS,GAAG,CAAoC,iCAAA,EAAA,OAAO,CAAC,WAAW,CAAC,eAAe,CAAA;AACvF,oCAAA,IAAI,MAAM,CAAC,IAAI,IAAI,mBAAmB,EAAE;AACtC,wCAAA,SAAS,GAAG,CAAqC,kCAAA,EAAA,OAAO,CAAC,WAAW,CAAC,aAAa,CAAA;AACnF,qCAAA;AAED,oCAAA,IAAI,MAAM,CAAC,IAAI,IAAI,0BAA0B,EAAE;AAC7C,wCAAA,SAAS,GAAG,CAAoC,iCAAA,EAAA,OAAO,CAAC,WAAW,CAAC,eAAe,CAAA;AACpF,qCAAA;oCAED,MAAM,SAAS,GACV,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CACR,EAAA,EAAA,IAAI,EAAE,CAAA,aAAA,EAAgB,WAAW,CAAA,CAAE,EACnC,IAAI,EAAE,SAAS,EACf,CAAC,mBAAmB,GACf,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,kBAAkB,CAAC,CAAA,EAE9B,CAAC,2BAA2B,GAAC,MAAA,CAAA,MAAA,CAAA,EAAA,EACxB,KAAK,CAAC,0BAA0B,CAAC,CAEtC,EAAA,CAAC,4BAA4B,GACxB,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,2BAA2B,CAAC,CAAA,EAEvC,CAAC,2BAA2B,GAAC,MAAA,CAAA,MAAA,CAAA,EAAA,EACxB,KAAK,CAAC,0BAA0B,CAAC,CAEtC,EAAA,CAAC,4BAA4B,GACxB,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,2BAA2B,CAAC,CAAA,EAAA,CAExC,CAAC;oCACF,OAAO,SAAS,CAAC,gBAAgB,CAAA;oCACjC,OAAO,SAAS,CAAC,wBAAwB,CAAA;oCACzC,OAAO,SAAS,CAAC,yBAAyB,CAAA;oCAC1C,OAAO,SAAS,CAAC,wBAAwB,CAAA;oCACzC,OAAO,SAAS,CAAC,yBAAyB,CAAA;oCAC1C,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC3D,iCAAC,CACF,CAAC;gCACF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAa,KAAI;AAC3C,oCAAA,IAAI,QAAQ,EAAE;wCACZ,MAAM,CAAC,UAAU,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;wCACjD,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;wCAE9C,UAAU,CAAC,MAAK;4CACd,OAAO,CAAC,MAAM,CAAC,CAAC;yCACjB,EAAE,CAAC,CAAC,CAAC;AACP,qCAAA;AACH,iCAAC,CAAC,CAAC;AACL,6BAAC,CAAC,CAAC;AACN,yBAAA;6BAAM,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,yBAAyB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;4BACxJ,IAAI,UAAU,GAAG,aAAa,CAAA;4BAC9B,QAAQ,MAAM,CAAC,SAAS;AACtB,gCAAA,KAAK,UAAU,CAAC;AAChB,gCAAA,KAAK,kBAAkB;oCACrB,UAAU,GAAG,aAAa,CAAA;oCAC1B,MAAK;AACP,gCAAA,KAAK,yBAAyB,CAAC;AAC/B,gCAAA,KAAK,mBAAmB,CAAC;AACzB,gCAAA,KAAK,oBAAoB,CAAC;AAC1B,gCAAA,KAAK,UAAU;oCACb,UAAU,GAAG,aAAa,CAAA;oCAC1B,MAAK;AACR,6BAAA;AACD,4BAAA,IAAI,CAAC,eAAe;iCACjB,QAAQ,CAAC,UAAU,CAAC;AACpB,iCAAA,SAAS,CAAC,CAAC,KAAU,KAAI;AACxB,gCAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,EAAE,MAAM,EAAE,CAAC,EAAE,EACb,CAAC,CAAC,EAAE,KAAK,KAAI;oCACX,MAAM,SAAS,mCACV,KAAK,CAAA,EAAA,EACR,CAAC,mBAAmB,GACf,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,kBAAkB,CAAC,CAE9B,EAAA,CAAC,2BAA2B,GAAC,MAAA,CAAA,MAAA,CAAA,EAAA,EACxB,KAAK,CAAC,0BAA0B,CAAC,CAAA,EAEtC,CAAC,4BAA4B,GACxB,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,2BAA2B,CAAC,GAEvC,CAAC,2BAA2B,GAAC,MAAA,CAAA,MAAA,CAAA,EAAA,EACxB,KAAK,CAAC,0BAA0B,CAAC,CAAA,EAEtC,CAAC,4BAA4B,GAAC,MAAA,CAAA,MAAA,CAAA,EAAA,EACzB,KAAK,CAAC,2BAA2B,CAAC,CAAA,EAAA,CAExC,CAAC;oCACF,OAAO,SAAS,CAAC,gBAAgB,CAAA;oCACjC,OAAO,SAAS,CAAC,wBAAwB,CAAA;oCACzC,OAAO,SAAS,CAAC,yBAAyB,CAAA;oCAC1C,OAAO,SAAS,CAAC,wBAAwB,CAAA;oCACzC,OAAO,SAAS,CAAC,yBAAyB,CAAA;oCAE1C,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC3D,iCAAC,CACF,CAAC;gCACF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAa,KAAI;AAC3C,oCAAA,IAAI,QAAQ,EAAE;wCACZ,MAAM,CAAC,UAAU,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;wCACjD,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;wCAC9C,UAAU,CAAC,MAAK;4CACd,OAAO,CAAC,MAAM,CAAC,CAAC;yCACjB,EAAE,CAAC,CAAC,CAAC;AACP,qCAAA;AACH,iCAAC,CAAC,CAAC;AACL,6BAAC,CAAC,CAAC;AACN,yBAAA;AAAM,6BAAA;4BACL,OAAO,CAAC,MAAM,CAAC,CAAC;AACjB,yBAAA;AACF,qBAAA;AAAM,yBAAA;wBACL,MAAM,CAAC,OAAO,CAAC,CAAC;AACjB,qBAAA;AACH,iBAAC,CAAA,EACD,CAAC,KAAK,KAAI;oBACR,MAAM,CAAC,KAAK,CAAC,CAAC;AACd,oBAAA,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9B,iBAAC,CACF,CAAC;AACH,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;;0GAjiBU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;4FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCgBY,eAAe,CAAA;IA4Q1B,WACU,CAAA,QAAkB,EAClB,YAAmB,EACnB,cAAoB,EACpB,YAAmC,EACnC,WAA8B,EAC9B,OAAyB,EACzB,gBAAkC,EAClC,gBAAkC,EACb,UAAkB,EACvC,cAA8B,EAC9B,OAAgB,EAChB,eAAgC,EAChC,eAAgC,EAEhC,YAA0B,EAAA;;QAd1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAO;QACnB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAM;QACpB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAuB;QACnC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAmB;QAC9B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAkB;QACzB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QACb,IAAU,CAAA,UAAA,GAAV,UAAU,CAAQ;QACvC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAChB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAEhC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AArRpC,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,OAAO,EAAU,CAAC;;AAE/C,QAAA,IAAA,CAAA,YAAY,GAAG;YACb,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EA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"}
1
+ {"version":3,"file":"vhobjects-service-src-services.js","sources":["../../../projects/vhobjects-service/src/services/language.service.ts","../../../projects/vhobjects-service/src/services/json-data.service.ts","../../../projects/vhobjects-service/src/services/design-web.service.ts","../../../projects/vhobjects-service/src/services/function.service.ts","../../../projects/vhobjects-service/src/services/theme.service.ts","../../../projects/vhobjects-service/src/services/update-db-block.ts","../../../projects/vhobjects-service/src/services/update-db-object.ts","../../../projects/vhobjects-service/src/services/update-db-component.ts","../../../projects/vhobjects-service/src/services/vhobjects-service-src-services.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { en_US, vi_VN, NzI18nService } from 'ng-zorro-antd/i18n';\r\n// import languageCode from 'src/assets/data/language_code/language_code.json';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LanguageService {\r\n\r\n constructor(\r\n private translateService: TranslateService,\r\n private http: HttpClient,\r\n private i18n: NzI18nService\r\n ) { }\r\n\r\n public translate(key: string) {\r\n let value: string\r\n this.translateService.get(key).subscribe(res => value = res)\r\n return value\r\n }\r\n\r\n switchLanguage(key) {\r\n switch (key) {\r\n case \"vi\": this.i18n.setLocale(vi_VN); break;\r\n default: this.i18n.setLocale(en_US); break;\r\n }\r\n }\r\n // Phương thức lấy danh sách ngôn ngữ từ file JSON\r\n getLanguages(){\r\n\r\n const languageCodeUrl = 'assets/data/language_code/language_code.json';\r\n return this.http.get<any[]>(languageCodeUrl);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { from, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class JsonDataService {\r\n\r\n /** Mảng chứa các thiết bị cần copy từ desktop sang */\r\n private devicesNeedToCopyFromDesktop = [\r\n 'tablet_portrait', \r\n 'tablet_landscape', \r\n 'mobile_landscape', \r\n 'mobile_portrait'\r\n ];\r\n\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n /** Hàm này thực hiện lấy dữ liệu block từ json\r\n *\r\n * @param typeBlock kiểu block\r\n * @returns dữ liệu block\r\n */\r\n getEwaBlock(typeBlock: string) {\r\n const url = `assets/ewa-data/blocks/${typeBlock}.json`;\r\n return this.http.get(url);\r\n }\r\n\r\n /** Hàm này thực hiện lấy dữ liệu object từ json\r\n *\r\n * @param name tên object\r\n * @param type kiểu object\r\n * @returns\r\n */\r\n getEwaObject(name: string, type: string) {\r\n let url = `assets/ewa-data/objects/object-${type}/${name}.json`;\r\n return this.http.get(url);\r\n }\r\n\r\n /** Hàm thực hiện lấy danh sách object từ json\r\n *\r\n * @returns\r\n */\r\n getEwaObjectList(): Observable<any[]> {\r\n const url = `assets/ewa-data/menu/objects.json`;\r\n return this.http.get<any[]>(url);\r\n }\r\n\r\n /** Hàm thực hiện lấy danh sách block từ json\r\n *\r\n * @returns\r\n */\r\n getEwaBlockList(): Observable<any[]> {\r\n const url = `assets/ewa-data/menu/blocks.json`;\r\n return this.http.get<any[]>(url);\r\n }\r\n\r\n /** Hàm thực hiện lấy danh sách frame từ json\r\n *\r\n * @returns\r\n */\r\n getEwaFrameList(): Observable<any[]> {\r\n const url = `assets/ewa-data/menu/frames.json`;\r\n return this.http.get<any[]>(url);\r\n }\r\n\r\n /** Hàm này thực hiện lấy dữ liệu frame từ json\r\n *\r\n * @param nameFrame kiểu frame\r\n * @returns dữ liệu frame\r\n */\r\n getEwaFrame(nameFrame: string) {\r\n const url = `assets/ewa-data/frames/${nameFrame}.json`;\r\n return this.http.get(url);\r\n } \r\n \r\n // --------------------\r\n /** Hàm này thực hiện lấy dữ liệu block từ json\r\n *\r\n * @param typeBlock kiểu block\r\n * @returns dữ liệu block\r\n */\r\n getBlock(typeBlock: string) {\r\n const url = `assets/data/blocks/${typeBlock}.json`;\r\n return from(this.http.get(url).toPromise().then((block: any) => {\r\n // Copy dữ liệu từ desktop sang các thiết bị khác\r\n this.devicesNeedToCopyFromDesktop.forEach(device => {\r\n // Copy class\r\n if (!block[`${device}_class`] && block.desktop_class) block[`${device}_class`] = JSON.parse(JSON.stringify(block.desktop_class));\r\n // Copy config\r\n if (!block[`${device}_config`] && block.desktop_config) block[`${device}_config`] = JSON.parse(JSON.stringify(block.desktop_config));\r\n });\r\n return block;\r\n }));\r\n }\r\n\r\n /** Hàm này thực hiện lấy dữ liệu object từ json\r\n *\r\n * @param name tên object\r\n * @param type kiểu object\r\n * @returns\r\n */\r\n getObject(name: string, type: string) {\r\n const url = `assets/data/objects/object-${type}/${name}.json`;\r\n return from(this.http.get(url).toPromise().then((object: any) => {\r\n // Copy dữ liệu từ desktop sang các thiết bị khác\r\n this.devicesNeedToCopyFromDesktop.forEach(device => {\r\n // Copy class\r\n if (!object[`${device}_class`] && object.desktop_class) object[`${device}_class`] = JSON.parse(JSON.stringify(object.desktop_class));\r\n // Copy config\r\n if (!object[`${device}_config`] && object.desktop_config) object[`${device}_config`] = JSON.parse(JSON.stringify(object.desktop_config));\r\n });\r\n return object;\r\n }));\r\n }\r\n\r\n /** Hàm thực hiện lấy danh sách object từ json\r\n *\r\n * @returns\r\n */\r\n getObjectList(): Observable<any[]> {\r\n const url = `assets/data/menu/objects.json`;\r\n return this.http.get<any[]>(url);\r\n }\r\n\r\n /** Hàm thực hiện lấy danh sách block từ json\r\n *\r\n * @returns\r\n */\r\n getBlockList(): Observable<any[]> {\r\n const url = `assets/data/menu/blocks.json`;\r\n return this.http.get<any[]>(url);\r\n }\r\n\r\n /** Hàm thực hiện lấy danh sách frame từ json\r\n *\r\n * @returns\r\n */\r\n getFrameList(): Observable<any[]> {\r\n const url = `assets/data/menu/frames.json`;\r\n return this.http.get<any[]>(url);\r\n }\r\n\r\n /** Hàm này thực hiện lấy dữ liệu frame từ json\r\n *\r\n * @param nameFrame kiểu frame\r\n * @returns dữ liệu frame\r\n */\r\n getFrame(nameFrame: string) {\r\n const url = `assets/data/frames/${nameFrame}.json`;\r\n return from(this.http.get(url).toPromise().then((frame: any) => {\r\n // Copy dữ liệu từ desktop sang các thiết bị khác\r\n this.devicesNeedToCopyFromDesktop.forEach(device => {\r\n // Copy class\r\n if (!frame[`${device}_class`] && frame.desktop_class) frame[`${device}_class`] = JSON.parse(JSON.stringify(frame.desktop_class));\r\n // Copy config\r\n if (!frame[`${device}_config`] && frame.desktop_config) frame[`${device}_config`] = JSON.parse(JSON.stringify(frame.desktop_config));\r\n });\r\n return frame;\r\n }));\r\n }\r\n\r\n getFonts(): Observable<any[]> {\r\n const url = `assets/fonts/fonts.json`;\r\n return this.http.get<any[]>(url);\r\n }\r\n\r\n /**\r\n * hàm get danh sách lĩnh vực bộ công cụ thiết kế\r\n * @returns\r\n */\r\n getMainSectors(): Observable<any[]> {\r\n const url = `assets/data/group/main_sectors.json`;\r\n return this.http.get<any[]>(url);\r\n }\r\n\r\n\r\n getDesignTool(data_array) {\r\n const url = `assets/data/group/design_tools.json`;\r\n return new Promise((resolve) => {\r\n // biến này để gộp chung các dữ liệu get được thành 1 biến duy nhất để xử lý loại bỏ trùng lặp phần tử\r\n let group = {\r\n blocks: {\r\n blank: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n grid: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n\r\n header: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n footer: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n mobile_tabs: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n chatbox: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_hover: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_tabs: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_welcome: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n block_responsive: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n hover_blank: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n menu_hover: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_detail_product: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_detail_snimei: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_detail_food_drink: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_detail_recruitment: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_detail_news: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_detail_service: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n popup_detail_website: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n },\r\n frames: {\r\n frame_dev: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_recruitment: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_recruitment_detail: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_blank: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_tab_2states: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n\r\n frame_collapse: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_mutil_blank: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_cart_products: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_cart_products_choosed: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_blogs: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_snimei_detail: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_category_detail: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_services: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_service_detail: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_service_relate: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_services_category: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_category: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_news_detail: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_news_group: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_news_category: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_news_relate: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_news: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_news_favorited: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_food_drink: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_food_drink_by_category: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_food_drink_detail: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_food_drink_relate: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_app: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_app_by_category: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_website: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_website_by_category: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_website_detail: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_website_relate: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_product: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n\r\n frame_products_favorited: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_product_viewed: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n\r\n frame_product_by_category: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_product_detail: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_product_relate: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_search_by_keyword: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_search_by_keyword_app: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_search_by_keyword_website: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_search_by_keyword_foods: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_search_by_keyword_news: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_search_by_keyword_services: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n \r\n frame_result_ecommerce: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_result_food_drink: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_result_news: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_result_webapp: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_result_service: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_result_recruitment: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_result_snimei: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_brand: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_hotel: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_banner: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n frame_repeat: {\r\n group_frames: [],\r\n group_objects: [],\r\n },\r\n },\r\n };\r\n\r\n\r\n this.http.get<any[]>(url).subscribe((data) => {\r\n data_array?.forEach((element) => {\r\n if (data[element]) {\r\n group.blocks.grid.group_frames =\r\n group.blocks.grid.group_frames.concat(\r\n data[element].blocks.grid\r\n ? data[element].blocks.grid.group_frames\r\n : []\r\n );\r\n group.blocks.grid.group_objects =\r\n group.blocks.grid.group_objects.concat(\r\n data[element].blocks.grid\r\n ? data[element].blocks.grid.group_objects\r\n : []\r\n );\r\n group.blocks.blank.group_frames =\r\n group.blocks.blank.group_frames.concat(\r\n data[element].blocks.blank\r\n ? data[element].blocks.blank.group_frames\r\n : []\r\n );\r\n group.blocks.blank.group_objects =\r\n group.blocks.blank.group_objects.concat(\r\n data[element].blocks.blank\r\n ? data[element].blocks.blank.group_objects\r\n : []\r\n );\r\n group.blocks.header.group_frames =\r\n group.blocks.header.group_frames.concat(\r\n data[element].blocks.header\r\n ? data[element].blocks.header.group_frames\r\n : []\r\n );\r\n group.blocks.header.group_objects =\r\n group.blocks.header.group_objects.concat(\r\n data[element].blocks.header\r\n ? data[element].blocks.header.group_objects\r\n : []\r\n );\r\n group.blocks.footer.group_frames =\r\n group.blocks.footer.group_frames.concat(\r\n data[element].blocks.footer\r\n ? data[element].blocks.footer.group_frames\r\n : []\r\n );\r\n group.blocks.footer.group_objects =\r\n group.blocks.footer.group_objects.concat(\r\n data[element].blocks.footer\r\n ? data[element].blocks.footer.group_objects\r\n : []\r\n );\r\n\r\n group.blocks.mobile_tabs.group_frames =\r\n group.blocks.mobile_tabs.group_frames.concat(\r\n data[element].blocks.mobile_tabs\r\n ? data[element].blocks.mobile_tabs.group_frames\r\n : []\r\n );\r\n group.blocks.mobile_tabs.group_objects =\r\n group.blocks.mobile_tabs.group_objects.concat(\r\n data[element].blocks.mobile_tabs\r\n ? data[element].blocks.mobile_tabs.group_objects\r\n : []\r\n );\r\n\r\n group.blocks.chatbox.group_frames =\r\n group.blocks.chatbox.group_frames.concat(\r\n data[element].blocks.chatbox\r\n ? data[element].blocks.chatbox.group_frames\r\n : []\r\n );\r\n group.blocks.chatbox.group_objects =\r\n group.blocks.chatbox.group_objects.concat(\r\n data[element].blocks.chatbox\r\n ? data[element].blocks.chatbox.group_objects\r\n : []\r\n );\r\n group.blocks.popup_hover.group_frames =\r\n group.blocks.popup_hover.group_frames.concat(\r\n data[element].blocks.popup_hover\r\n ? data[element].blocks.popup_hover.group_frames\r\n : []\r\n );\r\n group.blocks.popup_hover.group_objects =\r\n group.blocks.popup_hover.group_objects.concat(\r\n data[element].blocks.popup_hover\r\n ? data[element].blocks.popup_hover.group_objects\r\n : []\r\n );\r\n group.blocks.popup_tabs.group_frames =\r\n group.blocks.popup_tabs.group_frames.concat(\r\n data[element].blocks.popup_tabs\r\n ? data[element].blocks.popup_tabs.group_frames\r\n : []\r\n );\r\n group.blocks.popup_tabs.group_objects =\r\n group.blocks.popup_tabs.group_objects.concat(\r\n data[element].blocks.popup_tabs\r\n ? data[element].blocks.popup_tabs.group_objects\r\n : []\r\n );\r\n\r\n group.blocks.popup_welcome.group_frames =\r\n group.blocks.popup_welcome.group_frames.concat(\r\n data[element].blocks.popup_welcome\r\n ? data[element].blocks.popup_welcome.group_frames\r\n : []\r\n );\r\n group.blocks.popup_welcome.group_objects =\r\n group.blocks.popup_welcome.group_objects.concat(\r\n data[element].blocks.popup_welcome\r\n ? data[element].blocks.popup_welcome.group_objects\r\n : []\r\n );\r\n group.blocks.popup_detail_product.group_frames =\r\n group.blocks.popup_detail_product.group_frames.concat(\r\n data[element].blocks.popup_detail_product\r\n ? data[element].blocks.popup_detail_product.group_frames\r\n : []\r\n );\r\n group.blocks.popup_detail_product.group_objects =\r\n group.blocks.popup_detail_product.group_objects.concat(\r\n data[element].blocks.popup_detail_product\r\n ? data[element].blocks.popup_detail_product.group_objects\r\n : []\r\n );\r\n\r\n group.blocks.popup_detail_snimei.group_frames =\r\n group.blocks.popup_detail_snimei.group_frames.concat(\r\n data[element].blocks.popup_detail_snimei\r\n ? data[element].blocks.popup_detail_snimei.group_frames\r\n : []\r\n );\r\n group.blocks.popup_detail_snimei.group_objects =\r\n group.blocks.popup_detail_snimei.group_objects.concat(\r\n data[element].blocks.popup_detail_snimei\r\n ? data[element].blocks.popup_detail_snimei.group_objects\r\n : []\r\n );\r\n\r\n group.blocks.hover_blank.group_frames =\r\n group.blocks.hover_blank.group_frames.concat(\r\n data[element].blocks.hover_blank\r\n ? data[element].blocks.hover_blank.group_frames\r\n : []\r\n );\r\n group.blocks.hover_blank.group_objects =\r\n group.blocks.hover_blank.group_objects.concat(\r\n data[element].blocks.hover_blank\r\n ? data[element].blocks.hover_blank.group_objects\r\n : []\r\n );\r\n group.blocks.menu_hover.group_frames =\r\n group.blocks.menu_hover.group_frames.concat(\r\n data[element].blocks.menu_hover\r\n ? data[element].blocks.menu_hover.group_frames\r\n : []\r\n );\r\n group.blocks.menu_hover.group_objects =\r\n group.blocks.menu_hover.group_objects.concat(\r\n data[element].blocks.menu_hover\r\n ? data[element].blocks.menu_hover.group_objects\r\n : []\r\n );\r\n\r\n group.blocks.popup_detail_food_drink.group_frames =\r\n group.blocks.popup_detail_food_drink.group_frames.concat(\r\n data[element].blocks.popup_detail_food_drink\r\n ? data[element].blocks.popup_detail_food_drink.group_frames\r\n : []\r\n );\r\n group.blocks.popup_detail_food_drink.group_objects =\r\n group.blocks.popup_detail_food_drink.group_objects.concat(\r\n data[element].blocks.popup_detail_food_drink\r\n ? data[element].blocks.popup_detail_food_drink.group_objects\r\n : []\r\n );\r\n group.blocks.popup_detail_recruitment.group_frames =\r\n group.blocks.popup_detail_recruitment.group_frames.concat(\r\n data[element].blocks.popup_detail_recruitment\r\n ? data[element].blocks.popup_detail_recruitment.group_frames\r\n : []\r\n );\r\n group.blocks.popup_detail_recruitment.group_objects =\r\n group.blocks.popup_detail_recruitment.group_objects.concat(\r\n data[element].blocks.popup_detail_recruitment\r\n ? data[element].blocks.popup_detail_recruitment.group_objects\r\n : []\r\n );\r\n group.blocks.popup_detail_news.group_frames =\r\n group.blocks.popup_detail_news.group_frames.concat(\r\n data[element].blocks.popup_detail_news\r\n ? data[element].blocks.popup_detail_news.group_frames\r\n : []\r\n );\r\n group.blocks.popup_detail_news.group_objects =\r\n group.blocks.popup_detail_news.group_objects.concat(\r\n data[element].blocks.popup_detail_news\r\n ? data[element].blocks.popup_detail_news.group_objects\r\n : []\r\n );\r\n\r\n group.blocks.popup_detail_service.group_frames =\r\n group.blocks.popup_detail_service.group_frames.concat(\r\n data[element].blocks.popup_detail_service\r\n ? data[element].blocks.popup_detail_service.group_frames\r\n : []\r\n );\r\n group.blocks.popup_detail_service.group_objects =\r\n group.blocks.popup_detail_service.group_objects.concat(\r\n data[element].blocks.popup_detail_service\r\n ? data[element].blocks.popup_detail_service.group_objects\r\n : []\r\n );\r\n\r\n group.blocks.popup_detail_website.group_frames =\r\n group.blocks.popup_detail_website.group_frames.concat(\r\n data[element].blocks.popup_detail_website\r\n ? data[element].blocks.popup_detail_website.group_frames\r\n : []\r\n );\r\n group.blocks.popup_detail_website.group_objects =\r\n group.blocks.popup_detail_website.group_objects.concat(\r\n data[element].blocks.popup_detail_website\r\n ? data[element].blocks.popup_detail_website.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_dev.group_frames =\r\n group.frames.frame_dev.group_frames.concat(\r\n data[element].frames.frame_dev\r\n ? data[element].frames.frame_dev.group_frames\r\n : []\r\n );\r\n group.frames.frame_dev.group_objects =\r\n group.frames.frame_dev.group_objects.concat(\r\n data[element].frames.frame_dev\r\n ? data[element].frames.frame_dev.group_objects\r\n : []\r\n );\r\n group.frames.frame_recruitment.group_frames =\r\n group.frames.frame_recruitment.group_frames.concat(\r\n data[element].frames.frame_recruitment\r\n ? data[element].frames.frame_recruitment.group_frames\r\n : []\r\n );\r\n group.frames.frame_recruitment.group_objects =\r\n group.frames.frame_recruitment.group_objects.concat(\r\n data[element].frames.frame_recruitment\r\n ? data[element].frames.frame_recruitment.group_objects\r\n : []\r\n );\r\n group.frames.frame_recruitment_detail.group_frames =\r\n group.frames.frame_recruitment_detail.group_frames.concat(\r\n data[element].frames.frame_recruitment_detail\r\n ? data[element].frames.frame_recruitment_detail.group_frames\r\n : []\r\n );\r\n group.frames.frame_recruitment_detail.group_objects =\r\n group.frames.frame_recruitment_detail.group_objects.concat(\r\n data[element].frames.frame_recruitment_detail\r\n ? data[element].frames.frame_recruitment.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_blank.group_frames =\r\n group.frames.frame_blank.group_frames.concat(\r\n data[element].frames.frame_blank\r\n ? data[element].frames.frame_blank.group_frames\r\n : []\r\n );\r\n group.frames.frame_blank.group_objects =\r\n group.frames.frame_blank.group_objects.concat(\r\n data[element].frames.frame_blank\r\n ? data[element].frames.frame_blank.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_tab_2states.group_frames =\r\n group.frames.frame_tab_2states.group_frames.concat(\r\n data[element].frames.frame_tab_2states\r\n ? data[element].frames.frame_tab_2states.group_frames\r\n : []\r\n );\r\n group.frames.frame_tab_2states.group_objects =\r\n group.frames.frame_tab_2states.group_objects.concat(\r\n data[element].frames.frame_tab_2states\r\n ? data[element].frames.frame_tab_2states.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_collapse.group_frames =\r\n group.frames.frame_collapse.group_frames.concat(\r\n data[element].frames.frame_collapse\r\n ? data[element].frames.frame_collapse.group_frames\r\n : []\r\n );\r\n group.frames.frame_collapse.group_objects =\r\n group.frames.frame_collapse.group_objects.concat(\r\n data[element].frames.frame_collapse\r\n ? data[element].frames.frame_collapse.group_objects\r\n : []\r\n );\r\n group.frames.frame_mutil_blank.group_frames =\r\n group.frames.frame_mutil_blank.group_frames.concat(\r\n data[element].frames.frame_mutil_blank\r\n ? data[element].frames.frame_mutil_blank.group_frames\r\n : []\r\n );\r\n group.frames.frame_mutil_blank.group_objects =\r\n group.frames.frame_mutil_blank.group_objects.concat(\r\n data[element].frames.frame_mutil_blank\r\n ? data[element].frames.frame_mutil_blank.group_objects\r\n : []\r\n );\r\n group.frames.frame_blogs.group_frames =\r\n group.frames.frame_blogs.group_frames.concat(\r\n data[element].frames.frame_blogs\r\n ? data[element].frames.frame_blogs.group_frames\r\n : []\r\n );\r\n group.frames.frame_blogs.group_objects =\r\n group.frames.frame_blogs.group_objects.concat(\r\n data[element].frames.frame_blogs\r\n ? data[element].frames.frame_blogs.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_snimei_detail.group_frames =\r\n group.frames.frame_snimei_detail.group_frames.concat(\r\n data[element].frames.frame_snimei_detail\r\n ? data[element].frames.frame_snimei_detail.group_frames\r\n : []\r\n );\r\n group.frames.frame_snimei_detail.group_objects =\r\n group.frames.frame_snimei_detail.group_objects.concat(\r\n data[element].frames.frame_snimei_detail\r\n ? data[element].frames.frame_snimei_detail.group_objects\r\n : []\r\n );\r\n group.frames.frame_brand.group_frames =\r\n group.frames.frame_brand.group_frames.concat(\r\n data[element].frames.frame_brand\r\n ? data[element].frames.frame_brand.group_frames\r\n : []\r\n );\r\n group.frames.frame_brand.group_objects =\r\n group.frames.frame_brand.group_objects.concat(\r\n data[element].frames.frame_brand\r\n ? data[element].frames.frame_brand.group_objects\r\n : []\r\n );\r\n group.frames.frame_cart_products.group_frames =\r\n group.frames.frame_cart_products.group_frames.concat(\r\n data[element].frames.frame_cart_products\r\n ? data[element].frames.frame_cart_products.group_frames\r\n : []\r\n );\r\n group.frames.frame_cart_products.group_objects =\r\n group.frames.frame_cart_products.group_objects.concat(\r\n data[element].frames.frame_cart_products\r\n ? data[element].frames.frame_cart_products.group_objects\r\n : []\r\n );\r\n group.frames.frame_cart_products.group_frames =\r\n group.frames.frame_cart_products_choosed.group_frames.concat(\r\n data[element].frames.frame_cart_products_choosed\r\n ? data[element].frames.frame_cart_products_choosed\r\n .group_frames\r\n : []\r\n );\r\n group.frames.frame_cart_products_choosed.group_objects =\r\n group.frames.frame_cart_products_choosed.group_objects.concat(\r\n data[element].frames.frame_cart_products_choosed\r\n ? data[element].frames.frame_cart_products_choosed\r\n .group_objects\r\n : []\r\n );\r\n group.frames.frame_category.group_frames =\r\n group.frames.frame_category.group_frames.concat(\r\n data[element].frames.frame_category\r\n ? data[element].frames.frame_category.group_frames\r\n : []\r\n );\r\n group.frames.frame_category.group_objects =\r\n group.frames.frame_category.group_objects.concat(\r\n data[element].frames.frame_category\r\n ? data[element].frames.frame_category.group_objects\r\n : []\r\n );\r\n group.frames.frame_category_detail.group_frames =\r\n group.frames.frame_category_detail.group_frames.concat(\r\n data[element].frames.frame_category_detail\r\n ? data[element].frames.frame_category_detail.group_frames\r\n : []\r\n );\r\n group.frames.frame_category_detail.group_objects =\r\n group.frames.frame_category_detail.group_objects.concat(\r\n data[element].frames.frame_category_detail\r\n ? data[element].frames.frame_category_detail.group_objects\r\n : []\r\n );\r\n group.frames.frame_news.group_frames =\r\n group.frames.frame_news.group_frames.concat(\r\n data[element].frames.frame_news\r\n ? data[element].frames.frame_news.group_frames\r\n : []\r\n );\r\n group.frames.frame_news.group_objects =\r\n group.frames.frame_news.group_objects.concat(\r\n data[element].frames.frame_news\r\n ? data[element].frames.frame_news.group_objects\r\n : []\r\n );\r\n group.frames.frame_news_favorited.group_frames =\r\n group.frames.frame_news_favorited.group_frames.concat(\r\n data[element].frames.frame_news_favorited\r\n ? data[element].frames.frame_news_favorited.group_frames\r\n : []\r\n );\r\n group.frames.frame_news_favorited.group_objects =\r\n group.frames.frame_news_favorited.group_objects.concat(\r\n data[element].frames.frame_news_favorited\r\n ? data[element].frames.frame_news_favorited.group_objects\r\n : []\r\n );\r\n group.frames.frame_news_detail.group_frames =\r\n group.frames.frame_news_detail.group_frames.concat(\r\n data[element].frames.frame_news_detail\r\n ? data[element].frames.frame_news_detail.group_frames\r\n : []\r\n );\r\n group.frames.frame_news_detail.group_objects =\r\n group.frames.frame_news_detail.group_objects.concat(\r\n data[element].frames.frame_news_detail\r\n ? data[element].frames.frame_news_detail.group_objects\r\n : []\r\n );\r\n group.frames.frame_news_group.group_frames =\r\n group.frames.frame_news_group.group_frames.concat(\r\n data[element].frames.frame_news_group\r\n ? data[element].frames.frame_news_group.group_frames\r\n : []\r\n );\r\n group.frames.frame_news_group.group_objects =\r\n group.frames.frame_news_group.group_objects.concat(\r\n data[element].frames.frame_news_group\r\n ? data[element].frames.frame_news_group.group_objects\r\n : []\r\n );\r\n group.frames.frame_news_category.group_frames =\r\n group.frames.frame_news_category.group_frames.concat(\r\n data[element].frames.frame_news_category\r\n ? data[element].frames.frame_news_category.group_frames\r\n : []\r\n );\r\n group.frames.frame_news_category.group_objects =\r\n group.frames.frame_news_category.group_objects.concat(\r\n data[element].frames.frame_news_category\r\n ? data[element].frames.frame_news_category.group_objects\r\n : []\r\n );\r\n group.frames.frame_news_relate.group_frames =\r\n group.frames.frame_news_relate.group_frames.concat(\r\n data[element].frames.frame_news_relate\r\n ? data[element].frames.frame_news_relate.group_frames\r\n : []\r\n );\r\n group.frames.frame_news_relate.group_objects =\r\n group.frames.frame_news_relate.group_objects.concat(\r\n data[element].frames.frame_news_relate\r\n ? data[element].frames.frame_news_relate.group_objects\r\n : []\r\n );\r\n group.frames.frame_product.group_frames =\r\n group.frames.frame_product.group_frames.concat(\r\n data[element].frames.frame_product\r\n ? data[element].frames.frame_product.group_frames\r\n : []\r\n );\r\n group.frames.frame_product.group_objects =\r\n group.frames.frame_product.group_objects.concat(\r\n data[element].frames.frame_product\r\n ? data[element].frames.frame_product.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_repeat.group_frames =\r\n group.frames.frame_repeat.group_frames.concat(\r\n data[element].frames.frame_repeat\r\n ? data[element].frames.frame_repeat.group_frames\r\n : []\r\n );\r\n group.frames.frame_repeat.group_objects =\r\n group.frames.frame_repeat.group_objects.concat(\r\n data[element].frames.frame_repeat\r\n ? data[element].frames.frame_repeat.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_product_viewed.group_frames =\r\n group.frames.frame_product_viewed.group_frames.concat(\r\n data[element].frames.frame_product_viewed\r\n ? data[element].frames.frame_product_viewed.group_frames\r\n : []\r\n );\r\n group.frames.frame_product_viewed.group_objects =\r\n group.frames.frame_product_viewed.group_objects.concat(\r\n data[element].frames.frame_product_viewed\r\n ? data[element].frames.frame_product_viewed.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_products_favorited.group_frames =\r\n group.frames.frame_products_favorited.group_frames.concat(\r\n data[element].frames.frame_products_favorited\r\n ? data[element].frames.frame_products_favorited.group_frames\r\n : []\r\n );\r\n group.frames.frame_products_favorited.group_objects =\r\n group.frames.frame_products_favorited.group_objects.concat(\r\n data[element].frames.frame_products_favorited\r\n ? data[element].frames.frame_products_favorited.group_objects\r\n : []\r\n );\r\n\r\n\r\n group.frames.frame_product_detail.group_frames =\r\n group.frames.frame_product_detail.group_frames.concat(\r\n data[element].frames.frame_product_detail\r\n ? data[element].frames.frame_product_detail.group_frames\r\n : []\r\n );\r\n group.frames.frame_product_detail.group_objects =\r\n group.frames.frame_product_detail.group_objects.concat(\r\n data[element].frames.frame_product_detail\r\n ? data[element].frames.frame_product_detail.group_objects\r\n : []\r\n );\r\n group.frames.frame_product_by_category.group_frames =\r\n group.frames.frame_product_by_category.group_frames.concat(\r\n data[element].frames.frame_product_by_category\r\n ? data[element].frames.frame_product_by_category.group_frames\r\n : []\r\n );\r\n group.frames.frame_product_by_category.group_objects =\r\n group.frames.frame_product_by_category.group_objects.concat(\r\n data[element].frames.frame_product_by_category\r\n ? data[element].frames.frame_product_by_category.group_objects\r\n : []\r\n );\r\n group.frames.frame_product_relate.group_frames =\r\n group.frames.frame_product_relate.group_frames.concat(\r\n data[element].frames.frame_product_relate\r\n ? data[element].frames.frame_product_relate.group_frames\r\n : []\r\n );\r\n group.frames.frame_product_relate.group_objects =\r\n group.frames.frame_product_relate.group_objects.concat(\r\n data[element].frames.frame_product_relate\r\n ? data[element].frames.frame_product_relate.group_objects\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword.group_frames =\r\n group.frames.frame_search_by_keyword.group_frames.concat(\r\n data[element].frames.frame_search_by_keyword\r\n ? data[element].frames.frame_search_by_keyword.group_frames\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword.group_objects =\r\n group.frames.frame_search_by_keyword.group_objects.concat(\r\n data[element].frames.frame_search_by_keyword\r\n ? data[element].frames.frame_search_by_keyword.group_objects\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_app.group_frames =\r\n group.frames.frame_search_by_keyword_app.group_frames.concat(\r\n data[element].frames.frame_search_by_keyword_app\r\n ? data[element].frames.frame_search_by_keyword_app.group_frames\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_app.group_objects =\r\n group.frames.frame_search_by_keyword_app.group_objects.concat(\r\n data[element].frames.frame_search_by_keyword_app\r\n ? data[element].frames.frame_search_by_keyword_app.group_objects\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_foods.group_frames =\r\n group.frames.frame_search_by_keyword_foods.group_frames.concat(\r\n data[element].frames.frame_search_by_keyword_foods\r\n ? data[element].frames.frame_search_by_keyword_foods.group_frames\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_foods.group_objects =\r\n group.frames.frame_search_by_keyword_foods.group_objects.concat(\r\n data[element].frames.frame_search_by_keyword_foods\r\n ? data[element].frames.frame_search_by_keyword_foods.group_objects\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_news.group_frames =\r\n group.frames.frame_search_by_keyword_news.group_frames.concat(\r\n data[element].frames.frame_search_by_keyword_news\r\n ? data[element].frames.frame_search_by_keyword_news.group_frames\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_news.group_objects =\r\n group.frames.frame_search_by_keyword_news.group_objects.concat(\r\n data[element].frames.frame_search_by_keyword_news\r\n ? data[element].frames.frame_search_by_keyword_news.group_objects\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_services.group_frames =\r\n group.frames.frame_search_by_keyword_services.group_frames.concat(\r\n data[element].frames.frame_search_by_keyword_services\r\n ? data[element].frames.frame_search_by_keyword_services.group_frames\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_services.group_objects =\r\n group.frames.frame_search_by_keyword_services.group_objects.concat(\r\n data[element].frames.frame_search_by_keyword_services\r\n ? data[element].frames.frame_search_by_keyword_services.group_objects\r\n : []\r\n );\r\n group.frames.frame_result_ecommerce.group_frames =\r\n group.frames.frame_result_ecommerce.group_frames.concat(\r\n data[element].frames.frame_result_ecommerce\r\n ? data[element].frames.frame_result_ecommerce.group_frames\r\n : []\r\n );\r\n group.frames.frame_result_ecommerce.group_objects =\r\n group.frames.frame_result_ecommerce.group_objects.concat(\r\n data[element].frames.frame_result_ecommerce\r\n ? data[element].frames.frame_result_ecommerce.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_result_food_drink.group_frames =\r\n group.frames.frame_result_food_drink.group_frames.concat(\r\n data[element].frames.frame_result_food_drink\r\n ? data[element].frames.frame_result_food_drink.group_frames\r\n : []\r\n );\r\n group.frames.frame_result_food_drink.group_objects =\r\n group.frames.frame_result_food_drink.group_objects.concat(\r\n data[element].frames.frame_result_food_drink\r\n ? data[element].frames.frame_result_food_drink.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_result_news.group_frames =\r\n group.frames.frame_result_news.group_frames.concat(\r\n data[element].frames.frame_result_news\r\n ? data[element].frames.frame_result_news.group_frames\r\n : []\r\n );\r\n group.frames.frame_result_news.group_objects =\r\n group.frames.frame_result_news.group_objects.concat(\r\n data[element].frames.frame_result_news\r\n ? data[element].frames.frame_result_news.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_result_webapp.group_frames =\r\n group.frames.frame_result_webapp.group_frames.concat(\r\n data[element].frames.frame_result_webapp\r\n ? data[element].frames.frame_result_webapp.group_frames\r\n : []\r\n );\r\n group.frames.frame_result_webapp.group_objects =\r\n group.frames.frame_result_webapp.group_objects.concat(\r\n data[element].frames.frame_result_webapp\r\n ? data[element].frames.frame_result_webapp.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_result_service.group_frames =\r\n group.frames.frame_result_service.group_frames.concat(\r\n data[element].frames.frame_result_service\r\n ? data[element].frames.frame_result_service.group_frames\r\n : []\r\n );\r\n group.frames.frame_result_service.group_objects =\r\n group.frames.frame_result_service.group_objects.concat(\r\n data[element].frames.frame_result_service\r\n ? data[element].frames.frame_result_service.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_result_recruitment.group_frames =\r\n group.frames.frame_result_recruitment.group_frames.concat(\r\n data[element].frames.frame_result_recruitment\r\n ? data[element].frames.frame_result_recruitment.group_frames\r\n : []\r\n );\r\n group.frames.frame_result_recruitment.group_objects =\r\n group.frames.frame_result_recruitment.group_objects.concat(\r\n data[element].frames.frame_result_recruitment\r\n ? data[element].frames.frame_result_recruitment.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_result_snimei.group_frames =\r\n group.frames.frame_result_snimei.group_frames.concat(\r\n data[element].frames.frame_result_snimei\r\n ? data[element].frames.frame_result_snimei.group_frames\r\n : []\r\n );\r\n group.frames.frame_result_snimei.group_objects =\r\n group.frames.frame_result_snimei.group_objects.concat(\r\n data[element].frames.frame_result_snimei\r\n ? data[element].frames.frame_result_snimei.group_objects\r\n : []\r\n );\r\n\r\n\r\n\r\n group.frames.frame_services.group_frames =\r\n group.frames.frame_services.group_frames.concat(\r\n data[element].frames.frame_services\r\n ? data[element].frames.frame_services.group_frames\r\n : []\r\n );\r\n group.frames.frame_services.group_objects =\r\n group.frames.frame_services.group_objects.concat(\r\n data[element].frames.frame_services\r\n ? data[element].frames.frame_services.group_objects\r\n : []\r\n );\r\n group.frames.frame_service_detail.group_frames =\r\n group.frames.frame_service_detail.group_frames.concat(\r\n data[element].frames.frame_service_detail\r\n ? data[element].frames.frame_service_detail.group_frames\r\n : []\r\n );\r\n group.frames.frame_service_detail.group_objects =\r\n group.frames.frame_service_detail.group_objects.concat(\r\n data[element].frames.frame_service_detail\r\n ? data[element].frames.frame_service_detail.group_objects\r\n : []\r\n );\r\n group.frames.frame_service_relate.group_frames =\r\n group.frames.frame_service_relate.group_frames.concat(\r\n data[element].frames.frame_service_relate\r\n ? data[element].frames.frame_service_relate.group_frames\r\n : []\r\n );\r\n group.frames.frame_service_relate.group_objects =\r\n group.frames.frame_service_relate.group_objects.concat(\r\n data[element].frames.frame_service_relate\r\n ? data[element].frames.frame_service_relate.group_objects\r\n : []\r\n );\r\n group.frames.frame_services_category.group_frames =\r\n group.frames.frame_services_category.group_frames.concat(\r\n data[element].frames.frame_services_category\r\n ? data[element].frames.frame_services_category.group_frames\r\n : []\r\n );\r\n group.frames.frame_services_category.group_objects =\r\n group.frames.frame_services_category.group_objects.concat(\r\n data[element].frames.frame_services_category\r\n ? data[element].frames.frame_services_category.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_hotel.group_frames =\r\n group.frames.frame_hotel.group_frames.concat(\r\n data[element].frames.frame_hotel\r\n ? data[element].frames.frame_hotel.group_frames\r\n : []\r\n );\r\n group.frames.frame_hotel.group_objects =\r\n group.frames.frame_hotel.group_objects.concat(\r\n data[element].frames.frame_hotel\r\n ? data[element].frames.frame_hotel.group_objects\r\n : []\r\n );\r\n group.frames.frame_banner.group_frames =\r\n group.frames.frame_banner.group_frames.concat(\r\n data[element].frames.frame_banner\r\n ? data[element].frames.frame_banner.group_frames\r\n : []\r\n );\r\n group.frames.frame_banner.group_objects =\r\n group.frames.frame_banner.group_objects.concat(\r\n data[element].frames.frame_banner\r\n ? data[element].frames.frame_banner.group_objects\r\n : []\r\n );\r\n group.frames.frame_website.group_frames =\r\n group.frames.frame_website.group_frames.concat(\r\n data[element].frames.frame_website\r\n ? data[element].frames.frame_website.group_frames\r\n : []\r\n );\r\n group.frames.frame_website.group_objects =\r\n group.frames.frame_website.group_objects.concat(\r\n data[element].frames.frame_website\r\n ? data[element].frames.frame_website.group_objects\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_website.group_frames =\r\n group.frames.frame_search_by_keyword_website.group_frames.concat(\r\n data[element].frames.frame_search_by_keyword_website\r\n ? data[element].frames.frame_search_by_keyword_website.group_frames\r\n : []\r\n );\r\n group.frames.frame_search_by_keyword_website.group_objects =\r\n group.frames.frame_search_by_keyword_website.group_objects.concat(\r\n data[element].frames.frame_search_by_keyword_website\r\n ? data[element].frames.frame_search_by_keyword_website.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_website_by_category.group_frames =\r\n group.frames.frame_website_by_category.group_frames.concat(\r\n data[element].frames.frame_website_by_category\r\n ? data[element].frames.frame_website_by_category.group_frames\r\n : []\r\n );\r\n group.frames.frame_website_by_category.group_objects =\r\n group.frames.frame_website_by_category.group_objects.concat(\r\n data[element].frames.frame_website_by_category\r\n ? data[element].frames.frame_website_by_category.group_objects\r\n : []\r\n );\r\n group.frames.frame_website_detail.group_frames =\r\n group.frames.frame_website_detail.group_frames.concat(\r\n data[element].frames.frame_website_detail\r\n ? data[element].frames.frame_website_detail.group_frames\r\n : []\r\n );\r\n group.frames.frame_website_detail.group_objects =\r\n group.frames.frame_website_detail.group_objects.concat(\r\n data[element].frames.frame_website_detail\r\n ? data[element].frames.frame_website_detail.group_objects\r\n : []\r\n );\r\n group.frames.frame_website_relate.group_frames =\r\n group.frames.frame_website_relate.group_frames.concat(\r\n data[element].frames.frame_website_relate\r\n ? data[element].frames.frame_website_relate.group_frames\r\n : []\r\n );\r\n group.frames.frame_website_relate.group_objects =\r\n group.frames.frame_website_relate.group_objects.concat(\r\n data[element].frames.frame_website_relate\r\n ? data[element].frames.frame_website_relate.group_objects\r\n : []\r\n );\r\n group.frames.frame_app.group_frames =\r\n group.frames.frame_app.group_frames.concat(\r\n data[element].frames.frame_app\r\n ? data[element].frames.frame_app.group_frames\r\n : []\r\n );\r\n group.frames.frame_app.group_objects =\r\n group.frames.frame_app.group_objects.concat(\r\n data[element].frames.frame_app\r\n ? data[element].frames.frame_app.group_objects\r\n : []\r\n );\r\n group.frames.frame_app_by_category.group_frames =\r\n group.frames.frame_app_by_category.group_frames.concat(\r\n data[element].frames.frame_app_by_category\r\n ? data[element].frames.frame_app_by_category.group_frames\r\n : []\r\n );\r\n group.frames.frame_app_by_category.group_objects =\r\n group.frames.frame_app_by_category.group_objects.concat(\r\n data[element].frames.frame_app_by_category\r\n ? data[element].frames.frame_app_by_category.group_objects\r\n : []\r\n );\r\n\r\n group.frames.frame_food_drink.group_frames =\r\n group.frames.frame_food_drink.group_frames.concat(\r\n data[element].frames.frame_food_drink\r\n ? data[element].frames.frame_food_drink.group_frames\r\n : []\r\n );\r\n group.frames.frame_food_drink.group_objects =\r\n group.frames.frame_food_drink.group_objects.concat(\r\n data[element].frames.frame_food_drink\r\n ? data[element].frames.frame_food_drink.group_objects\r\n : []\r\n );\r\n group.frames.frame_food_drink_by_category.group_frames =\r\n group.frames.frame_food_drink_by_category.group_frames.concat(\r\n data[element].frames.frame_food_drink_by_category\r\n ? data[element].frames.frame_food_drink_by_category\r\n .group_frames\r\n : []\r\n );\r\n group.frames.frame_food_drink_by_category.group_objects =\r\n group.frames.frame_food_drink_by_category.group_objects.concat(\r\n data[element].frames.frame_food_drink_by_category\r\n ? data[element].frames.frame_food_drink_by_category\r\n .group_objects\r\n : []\r\n );\r\n group.frames.frame_food_drink_detail.group_frames =\r\n group.frames.frame_food_drink_detail.group_frames.concat(\r\n data[element].frames.frame_food_drink_detail\r\n ? data[element].frames.frame_food_drink_detail.group_frames\r\n : []\r\n );\r\n group.frames.frame_food_drink_detail.group_objects =\r\n group.frames.frame_food_drink_detail.group_objects.concat(\r\n data[element].frames.frame_food_drink_detail\r\n ? data[element].frames.frame_food_drink_detail.group_objects\r\n : []\r\n );\r\n group.frames.frame_food_drink_relate.group_frames =\r\n group.frames.frame_food_drink_relate.group_frames.concat(\r\n data[element].frames.frame_food_drink_relate\r\n ? data[element].frames.frame_food_drink_relate.group_frames\r\n : []\r\n );\r\n group.frames.frame_food_drink_relate.group_objects =\r\n group.frames.frame_food_drink_relate.group_objects.concat(\r\n data[element].frames.frame_food_drink_relate\r\n ? data[element].frames.frame_food_drink_relate.group_objects\r\n : []\r\n );\r\n }\r\n });\r\n // tiến hành loại bỏ phần tử trùng lặp trong mảng\r\n\r\n group.blocks.grid.group_frames = Array.from(\r\n new Set(group.blocks.grid.group_frames)\r\n );\r\n group.blocks.grid.group_objects = Array.from(\r\n new Set(group.blocks.grid.group_objects)\r\n );\r\n group.blocks.blank.group_frames = Array.from(\r\n new Set(group.blocks.blank.group_frames)\r\n );\r\n group.blocks.blank.group_objects = Array.from(\r\n new Set(group.blocks.blank.group_objects)\r\n );\r\n group.blocks.header.group_frames = Array.from(\r\n new Set(group.blocks.header.group_frames)\r\n );\r\n group.blocks.header.group_objects = Array.from(\r\n new Set(group.blocks.header.group_objects)\r\n );\r\n group.blocks.footer.group_frames = Array.from(\r\n new Set(group.blocks.footer.group_frames)\r\n );\r\n group.blocks.footer.group_objects = Array.from(\r\n new Set(group.blocks.footer.group_objects)\r\n );\r\n\r\n group.blocks.mobile_tabs.group_frames = Array.from(\r\n new Set(group.blocks.mobile_tabs.group_frames)\r\n );\r\n group.blocks.mobile_tabs.group_objects = Array.from(\r\n new Set(group.blocks.mobile_tabs.group_objects)\r\n );\r\n\r\n group.blocks.chatbox.group_frames = Array.from(\r\n new Set(group.blocks.chatbox.group_frames)\r\n );\r\n group.blocks.chatbox.group_objects = Array.from(\r\n new Set(group.blocks.chatbox.group_objects)\r\n );\r\n group.blocks.popup_hover.group_frames = Array.from(\r\n new Set(group.blocks.popup_hover.group_frames)\r\n );\r\n group.blocks.popup_hover.group_objects = Array.from(\r\n new Set(group.blocks.popup_hover.group_objects)\r\n );\r\n group.blocks.popup_tabs.group_frames = Array.from(\r\n new Set(group.blocks.popup_tabs.group_frames)\r\n );\r\n group.blocks.popup_tabs.group_objects = Array.from(\r\n new Set(group.blocks.popup_tabs.group_objects)\r\n );\r\n group.blocks.popup_welcome.group_frames = Array.from(\r\n new Set(group.blocks.popup_welcome.group_frames)\r\n );\r\n group.blocks.popup_welcome.group_objects = Array.from(\r\n new Set(group.blocks.popup_welcome.group_objects)\r\n );\r\n group.blocks.popup_detail_product.group_frames = Array.from(\r\n new Set(group.blocks.popup_detail_product.group_frames)\r\n );\r\n group.blocks.popup_detail_product.group_objects = Array.from(\r\n new Set(group.blocks.popup_detail_product.group_objects)\r\n );\r\n group.blocks.popup_detail_snimei.group_frames = Array.from(\r\n new Set(group.blocks.popup_detail_snimei.group_frames)\r\n );\r\n group.blocks.popup_detail_snimei.group_objects = Array.from(\r\n new Set(group.blocks.popup_detail_snimei.group_objects)\r\n );\r\n group.blocks.hover_blank.group_frames = Array.from(\r\n new Set(group.blocks.hover_blank.group_frames)\r\n );\r\n group.blocks.hover_blank.group_objects = Array.from(\r\n new Set(group.blocks.hover_blank.group_objects)\r\n );\r\n group.blocks.menu_hover.group_frames = Array.from(\r\n new Set(group.blocks.menu_hover.group_frames)\r\n );\r\n group.blocks.menu_hover.group_objects = Array.from(\r\n new Set(group.blocks.menu_hover.group_objects)\r\n );\r\n group.blocks.popup_detail_product.group_frames = Array.from(\r\n new Set(group.blocks.popup_detail_product.group_frames)\r\n );\r\n group.blocks.popup_detail_product.group_objects = Array.from(\r\n new Set(group.blocks.popup_detail_product.group_objects)\r\n );\r\n\r\n group.blocks.popup_detail_food_drink.group_frames = Array.from(\r\n new Set(group.blocks.popup_detail_food_drink.group_frames)\r\n );\r\n group.blocks.popup_detail_food_drink.group_objects = Array.from(\r\n new Set(group.blocks.popup_detail_food_drink.group_objects)\r\n );\r\n\r\n group.blocks.popup_detail_recruitment.group_frames = Array.from(\r\n new Set(group.blocks.popup_detail_recruitment.group_frames)\r\n );\r\n group.blocks.popup_detail_recruitment.group_objects = Array.from(\r\n new Set(group.blocks.popup_detail_recruitment.group_objects)\r\n );\r\n\r\n group.blocks.popup_detail_news.group_frames = Array.from(\r\n new Set(group.blocks.popup_detail_news.group_frames)\r\n );\r\n group.blocks.popup_detail_news.group_objects = Array.from(\r\n new Set(group.blocks.popup_detail_news.group_objects)\r\n );\r\n\r\n group.blocks.popup_detail_service.group_frames = Array.from(\r\n new Set(group.blocks.popup_detail_service.group_frames)\r\n );\r\n group.blocks.popup_detail_service.group_objects = Array.from(\r\n new Set(group.blocks.popup_detail_service.group_objects)\r\n );\r\n\r\n group.blocks.popup_detail_website.group_frames = Array.from(\r\n new Set(group.blocks.popup_detail_website.group_frames)\r\n );\r\n group.blocks.popup_detail_website.group_objects = Array.from(\r\n new Set(group.blocks.popup_detail_website.group_objects)\r\n );\r\n\r\n group.frames.frame_dev.group_frames = Array.from(\r\n new Set(group.frames.frame_dev.group_frames)\r\n );\r\n group.frames.frame_dev.group_objects = Array.from(\r\n new Set(group.frames.frame_dev.group_objects)\r\n );\r\n group.frames.frame_recruitment.group_frames = Array.from(\r\n new Set(group.frames.frame_recruitment.group_frames)\r\n );\r\n group.frames.frame_recruitment.group_objects = Array.from(\r\n new Set(group.frames.frame_recruitment.group_objects)\r\n );\r\n group.frames.frame_recruitment_detail.group_frames = Array.from(\r\n new Set(group.frames.frame_recruitment_detail.group_frames)\r\n );\r\n group.frames.frame_recruitment_detail.group_objects = Array.from(\r\n new Set(group.frames.frame_recruitment_detail.group_objects)\r\n );\r\n\r\n group.frames.frame_blank.group_frames = Array.from(\r\n new Set(group.frames.frame_blank.group_frames)\r\n );\r\n group.frames.frame_blank.group_objects = Array.from(\r\n new Set(group.frames.frame_blank.group_objects)\r\n );\r\n\r\n group.frames.frame_tab_2states.group_frames = Array.from(\r\n new Set(group.frames.frame_tab_2states.group_frames)\r\n );\r\n group.frames.frame_tab_2states.group_objects = Array.from(\r\n new Set(group.frames.frame_tab_2states.group_objects)\r\n );\r\n\r\n group.frames.frame_collapse.group_frames = Array.from(\r\n new Set(group.frames.frame_collapse.group_frames)\r\n );\r\n group.frames.frame_collapse.group_objects = Array.from(\r\n new Set(group.frames.frame_collapse.group_objects)\r\n );\r\n group.frames.frame_mutil_blank.group_frames = Array.from(\r\n new Set(group.frames.frame_mutil_blank.group_frames)\r\n );\r\n group.frames.frame_mutil_blank.group_objects = Array.from(\r\n new Set(group.frames.frame_mutil_blank.group_objects)\r\n );\r\n group.frames.frame_blogs.group_frames = Array.from(\r\n new Set(group.frames.frame_blogs.group_frames)\r\n );\r\n group.frames.frame_blogs.group_objects = Array.from(\r\n new Set(group.frames.frame_blogs.group_objects)\r\n );\r\n group.frames.frame_snimei_detail.group_frames = Array.from(\r\n new Set(group.frames.frame_snimei_detail.group_frames)\r\n );\r\n group.frames.frame_snimei_detail.group_objects = Array.from(\r\n new Set(group.frames.frame_snimei_detail.group_objects)\r\n );\r\n group.frames.frame_brand.group_frames = Array.from(\r\n new Set(group.frames.frame_brand.group_frames)\r\n );\r\n group.frames.frame_brand.group_objects = Array.from(\r\n new Set(group.frames.frame_brand.group_objects)\r\n );\r\n group.frames.frame_cart_products.group_frames = Array.from(\r\n new Set(group.frames.frame_cart_products.group_frames)\r\n );\r\n group.frames.frame_cart_products.group_objects = Array.from(\r\n new Set(group.frames.frame_cart_products.group_objects)\r\n );\r\n group.frames.frame_cart_products_choosed.group_frames = Array.from(\r\n new Set(group.frames.frame_cart_products_choosed.group_frames)\r\n );\r\n group.frames.frame_cart_products_choosed.group_objects = Array.from(\r\n new Set(group.frames.frame_cart_products_choosed.group_objects)\r\n );\r\n group.frames.frame_category.group_frames = Array.from(\r\n new Set(group.frames.frame_category.group_frames)\r\n );\r\n group.frames.frame_category.group_objects = Array.from(\r\n new Set(group.frames.frame_category.group_objects)\r\n );\r\n group.frames.frame_category_detail.group_frames = Array.from(\r\n new Set(group.frames.frame_category_detail.group_frames)\r\n );\r\n group.frames.frame_category_detail.group_objects = Array.from(\r\n new Set(group.frames.frame_category_detail.group_objects)\r\n );\r\n group.frames.frame_news.group_frames = Array.from(\r\n new Set(group.frames.frame_news.group_frames)\r\n );\r\n group.frames.frame_news.group_objects = Array.from(\r\n new Set(group.frames.frame_news.group_objects)\r\n );\r\n group.frames.frame_news_favorited.group_frames = Array.from(\r\n new Set(group.frames.frame_news_favorited.group_frames)\r\n );\r\n group.frames.frame_news_favorited.group_objects = Array.from(\r\n new Set(group.frames.frame_news_favorited.group_objects)\r\n );\r\n group.frames.frame_news_detail.group_frames = Array.from(\r\n new Set(group.frames.frame_news_detail.group_frames)\r\n );\r\n group.frames.frame_news_detail.group_objects = Array.from(\r\n new Set(group.frames.frame_news_detail.group_objects)\r\n );\r\n group.frames.frame_news_group.group_frames = Array.from(\r\n new Set(group.frames.frame_news_group.group_frames)\r\n );\r\n group.frames.frame_news_group.group_objects = Array.from(\r\n new Set(group.frames.frame_news_group.group_objects)\r\n );\r\n group.frames.frame_news_category.group_frames = Array.from(\r\n new Set(group.frames.frame_news_category.group_frames)\r\n );\r\n group.frames.frame_news_category.group_objects = Array.from(\r\n new Set(group.frames.frame_news_category.group_objects)\r\n );\r\n group.frames.frame_news_relate.group_frames = Array.from(\r\n new Set(group.frames.frame_news_relate.group_frames)\r\n );\r\n group.frames.frame_news_relate.group_objects = Array.from(\r\n new Set(group.frames.frame_news_relate.group_objects)\r\n );\r\n group.frames.frame_product.group_frames = Array.from(\r\n new Set(group.frames.frame_product.group_frames)\r\n );\r\n group.frames.frame_product.group_objects = Array.from(\r\n new Set(group.frames.frame_product.group_objects)\r\n );\r\n group.frames.frame_repeat.group_frames = Array.from(\r\n new Set(group.frames.frame_repeat.group_frames)\r\n );\r\n group.frames.frame_repeat.group_objects = Array.from(\r\n new Set(group.frames.frame_repeat.group_objects)\r\n );\r\n\r\n group.frames.frame_product_viewed.group_frames = Array.from(\r\n new Set(group.frames.frame_product_viewed.group_frames)\r\n );\r\n group.frames.frame_product_viewed.group_objects = Array.from(\r\n new Set(group.frames.frame_product_viewed.group_objects)\r\n );\r\n\r\n group.frames.frame_products_favorited.group_frames = Array.from(\r\n new Set(group.frames.frame_products_favorited.group_frames)\r\n );\r\n group.frames.frame_products_favorited.group_objects = Array.from(\r\n new Set(group.frames.frame_products_favorited.group_objects)\r\n );\r\n\r\n group.frames.frame_product_detail.group_frames = Array.from(\r\n new Set(group.frames.frame_product_detail.group_frames)\r\n );\r\n group.frames.frame_product_detail.group_objects = Array.from(\r\n new Set(group.frames.frame_product_detail.group_objects)\r\n );\r\n group.frames.frame_product_by_category.group_frames = Array.from(\r\n new Set(group.frames.frame_product_by_category.group_frames)\r\n );\r\n group.frames.frame_product_by_category.group_objects = Array.from(\r\n new Set(group.frames.frame_product_by_category.group_objects)\r\n );\r\n group.frames.frame_product_relate.group_frames = Array.from(\r\n new Set(group.frames.frame_product_relate.group_frames)\r\n );\r\n group.frames.frame_product_relate.group_objects = Array.from(\r\n new Set(group.frames.frame_product_relate.group_objects)\r\n );\r\n group.frames.frame_search_by_keyword.group_frames = Array.from(\r\n new Set(group.frames.frame_search_by_keyword.group_frames)\r\n );\r\n group.frames.frame_search_by_keyword.group_objects = Array.from(\r\n new Set(group.frames.frame_search_by_keyword.group_objects)\r\n );\r\n group.frames.frame_search_by_keyword_app.group_frames = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_app.group_frames)\r\n );\r\n group.frames.frame_search_by_keyword_app.group_objects = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_app.group_objects)\r\n );\r\n group.frames.frame_search_by_keyword_foods.group_frames = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_foods.group_frames)\r\n );\r\n group.frames.frame_search_by_keyword_foods.group_objects = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_foods.group_objects)\r\n );\r\n group.frames.frame_search_by_keyword_news.group_frames = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_news.group_frames)\r\n );\r\n group.frames.frame_search_by_keyword_news.group_objects = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_news.group_objects)\r\n );\r\n group.frames.frame_search_by_keyword_services.group_frames = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_services.group_frames)\r\n );\r\n group.frames.frame_search_by_keyword_services.group_objects = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_services.group_objects)\r\n );\r\n group.frames.frame_result_ecommerce.group_frames = Array.from(\r\n new Set(group.frames.frame_result_ecommerce.group_frames)\r\n );\r\n group.frames.frame_result_ecommerce.group_objects = Array.from(\r\n new Set(group.frames.frame_result_ecommerce.group_objects)\r\n );\r\n\r\n group.frames.frame_result_food_drink.group_frames = Array.from(\r\n new Set(group.frames.frame_result_food_drink.group_frames)\r\n );\r\n group.frames.frame_result_food_drink.group_objects = Array.from(\r\n new Set(group.frames.frame_result_food_drink.group_objects)\r\n );\r\n\r\n group.frames.frame_result_news.group_frames = Array.from(\r\n new Set(group.frames.frame_result_news.group_frames)\r\n );\r\n group.frames.frame_result_news.group_objects = Array.from(\r\n new Set(group.frames.frame_result_news.group_objects)\r\n );\r\n\r\n group.frames.frame_result_webapp.group_frames = Array.from(\r\n new Set(group.frames.frame_result_webapp.group_frames)\r\n );\r\n group.frames.frame_result_webapp.group_objects = Array.from(\r\n new Set(group.frames.frame_result_webapp.group_objects)\r\n );\r\n\r\n group.frames.frame_result_service.group_frames = Array.from(\r\n new Set(group.frames.frame_result_service.group_frames)\r\n );\r\n group.frames.frame_result_service.group_objects = Array.from(\r\n new Set(group.frames.frame_result_service.group_objects)\r\n );\r\n\r\n group.frames.frame_result_recruitment.group_frames = Array.from(\r\n new Set(group.frames.frame_result_recruitment.group_frames)\r\n );\r\n group.frames.frame_result_recruitment.group_objects = Array.from(\r\n new Set(group.frames.frame_result_recruitment.group_objects)\r\n );\r\n\r\n group.frames.frame_result_snimei.group_frames = Array.from(\r\n new Set(group.frames.frame_result_snimei.group_frames)\r\n );\r\n group.frames.frame_result_snimei.group_objects = Array.from(\r\n new Set(group.frames.frame_result_snimei.group_objects)\r\n );\r\n\r\n group.frames.frame_services.group_frames = Array.from(\r\n new Set(group.frames.frame_services.group_frames)\r\n );\r\n group.frames.frame_services.group_objects = Array.from(\r\n new Set(group.frames.frame_services.group_objects)\r\n );\r\n group.frames.frame_service_detail.group_frames = Array.from(\r\n new Set(group.frames.frame_service_detail.group_frames)\r\n );\r\n group.frames.frame_service_detail.group_objects = Array.from(\r\n new Set(group.frames.frame_service_detail.group_objects)\r\n );\r\n group.frames.frame_service_relate.group_frames = Array.from(\r\n new Set(group.frames.frame_service_relate.group_frames)\r\n );\r\n group.frames.frame_service_relate.group_objects = Array.from(\r\n new Set(group.frames.frame_service_relate.group_objects)\r\n );\r\n group.frames.frame_services_category.group_frames = Array.from(\r\n new Set(group.frames.frame_services_category.group_frames)\r\n );\r\n group.frames.frame_services_category.group_objects = Array.from(\r\n new Set(group.frames.frame_services_category.group_objects)\r\n );\r\n\r\n group.frames.frame_hotel.group_frames = Array.from(\r\n new Set(group.frames.frame_hotel.group_frames)\r\n );\r\n group.frames.frame_hotel.group_objects = Array.from(\r\n new Set(group.frames.frame_hotel.group_objects)\r\n );\r\n group.frames.frame_banner.group_frames = Array.from(\r\n new Set(group.frames.frame_banner.group_frames)\r\n );\r\n group.frames.frame_banner.group_objects = Array.from(\r\n new Set(group.frames.frame_banner.group_objects)\r\n );\r\n group.frames.frame_website.group_frames = Array.from(\r\n new Set(group.frames.frame_website.group_frames)\r\n );\r\n group.frames.frame_website.group_objects = Array.from(\r\n new Set(group.frames.frame_website.group_objects)\r\n );\r\n group.frames.frame_search_by_keyword_website.group_frames = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_website.group_frames)\r\n );\r\n group.frames.frame_search_by_keyword_website.group_objects = Array.from(\r\n new Set(group.frames.frame_search_by_keyword_website.group_objects)\r\n );\r\n\r\n group.frames.frame_website_by_category.group_frames = Array.from(\r\n new Set(group.frames.frame_website_by_category.group_frames)\r\n );\r\n group.frames.frame_website_by_category.group_objects = Array.from(\r\n new Set(group.frames.frame_website_by_category.group_objects)\r\n );\r\n group.frames.frame_website_detail.group_frames = Array.from(\r\n new Set(group.frames.frame_website_detail.group_frames)\r\n );\r\n group.frames.frame_website_detail.group_objects = Array.from(\r\n new Set(group.frames.frame_website_detail.group_objects)\r\n );\r\n group.frames.frame_website_relate.group_frames = Array.from(\r\n new Set(group.frames.frame_website_relate.group_frames)\r\n );\r\n group.frames.frame_website_relate.group_objects = Array.from(\r\n new Set(group.frames.frame_website_relate.group_objects)\r\n );\r\n\r\n\r\n group.frames.frame_app.group_frames = Array.from(\r\n new Set(group.frames.frame_app.group_frames)\r\n );\r\n group.frames.frame_app.group_objects = Array.from(\r\n new Set(group.frames.frame_app.group_objects)\r\n );\r\n group.frames.frame_app_by_category.group_frames = Array.from(\r\n new Set(group.frames.frame_app_by_category.group_frames)\r\n );\r\n group.frames.frame_app_by_category.group_objects = Array.from(\r\n new Set(group.frames.frame_app_by_category.group_objects)\r\n );\r\n\r\n group.frames.frame_food_drink.group_frames = Array.from(\r\n new Set(group.frames.frame_food_drink.group_frames)\r\n );\r\n group.frames.frame_food_drink.group_objects = Array.from(\r\n new Set(group.frames.frame_food_drink.group_objects)\r\n );\r\n group.frames.frame_food_drink_by_category.group_frames = Array.from(\r\n new Set(group.frames.frame_food_drink_by_category.group_frames)\r\n );\r\n group.frames.frame_food_drink_by_category.group_objects = Array.from(\r\n new Set(group.frames.frame_food_drink_by_category.group_objects)\r\n );\r\n group.frames.frame_food_drink_detail.group_frames = Array.from(\r\n new Set(group.frames.frame_food_drink_detail.group_frames)\r\n );\r\n group.frames.frame_food_drink_detail.group_objects = Array.from(\r\n new Set(group.frames.frame_food_drink_detail.group_objects)\r\n );\r\n group.frames.frame_food_drink_relate.group_frames = Array.from(\r\n new Set(group.frames.frame_food_drink_relate.group_frames)\r\n );\r\n group.frames.frame_food_drink_relate.group_objects = Array.from(\r\n new Set(group.frames.frame_food_drink_relate.group_objects)\r\n );\r\n\r\n // tiến hành get dữ liệu group_objects, group_frames json từ group đã lọc\r\n Promise.all([\r\n this.handleGetDataBLock(group.blocks),\r\n this.handleGetDataFrames(group.frames),\r\n ]).then(() => {\r\n resolve(group);\r\n });\r\n });\r\n });\r\n }\r\n\r\n handleGetDataBLock(data_block) {\r\n return new Promise((resolve) => {\r\n // dữ liệu group_objects của grid\r\n let promise_group_objects_grid = [];\r\n data_block.grid.group_objects.forEach((e, index) => {\r\n promise_group_objects_grid[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_grid).then((group_frames) => {\r\n data_block.grid.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của grid\r\n let promise_group_frames_grid = [];\r\n data_block.grid.group_frames.forEach((e, index) => {\r\n promise_group_frames_grid[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_grid).then((group_frames) => {\r\n data_block.grid.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của blank\r\n let promise_group_objects_blank = [];\r\n data_block.blank.group_objects.forEach((e, index) => {\r\n promise_group_objects_blank[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_blank).then((group_frames) => {\r\n data_block.blank.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của blank\r\n let promise_group_frames_blank = [];\r\n data_block.blank.group_frames.forEach((e, index) => {\r\n promise_group_frames_blank[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_blank).then((group_frames) => {\r\n data_block.blank.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của header\r\n let promise_group_objects_header = [];\r\n data_block.header.group_objects.forEach((e, index) => {\r\n promise_group_objects_header[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_header).then((group_frames) => {\r\n data_block.header.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của header\r\n let promise_group_frames_header = [];\r\n data_block.header.group_frames.forEach((e, index) => {\r\n promise_group_frames_header[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_header).then((group_frames) => {\r\n data_block.header.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của footer\r\n let promise_group_objects_footer = [];\r\n data_block.footer.group_objects.forEach((e, index) => {\r\n promise_group_objects_footer[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_footer).then((group_frames) => {\r\n data_block.footer.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của footer\r\n let promise_group_frames_footer = [];\r\n data_block.footer.group_frames.forEach((e, index) => {\r\n promise_group_frames_footer[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_footer).then((group_frames) => {\r\n data_block.footer.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của mobile_tabs\r\n let promise_group_objects_mobile_tabs = [];\r\n data_block.mobile_tabs.group_objects.forEach((e, index) => {\r\n promise_group_objects_mobile_tabs[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_mobile_tabs).then((group_frames) => {\r\n data_block.mobile_tabs.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của mobile_tabs\r\n let promise_group_frames_mobile_tabs = [];\r\n data_block.mobile_tabs.group_frames.forEach((e, index) => {\r\n promise_group_frames_mobile_tabs[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_mobile_tabs).then((group_frames) => {\r\n data_block.mobile_tabs.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của popup_hover\r\n let promise_group_objects_popup_hover = [];\r\n data_block.popup_hover.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_hover[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_hover).then((group_frames) => {\r\n data_block.popup_hover.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của popup_hover\r\n let promise_group_frames_popup_hover = [];\r\n data_block.popup_hover.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_hover[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_hover).then((group_frames) => {\r\n data_block.popup_hover.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của popup_tabs\r\n let promise_group_objects_popup_tabs = [];\r\n data_block.popup_tabs.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_tabs[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_tabs).then((group_frames) => {\r\n data_block.popup_tabs.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của popup_tabs\r\n let promise_group_frames_popup_tabs = [];\r\n data_block.popup_tabs.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_tabs[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_tabs).then((group_frames) => {\r\n data_block.popup_tabs.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của popup_welcome\r\n let promise_group_objects_popup_welcome = [];\r\n data_block.popup_welcome.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_welcome[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_welcome).then((group_frames) => {\r\n data_block.popup_welcome.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của popup_welcome\r\n let promise_group_frames_popup_welcome = [];\r\n data_block.popup_welcome.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_welcome[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_welcome).then((group_frames) => {\r\n data_block.popup_welcome.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của block_responsive\r\n let promise_group_objects_block_responsive = [];\r\n data_block.block_responsive.group_objects.forEach((e, index) => {\r\n promise_group_objects_block_responsive[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_block_responsive).then(\r\n (group_frames) => {\r\n data_block.block_responsive.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của block_responsive\r\n let promise_group_frames_block_responsive = [];\r\n data_block.block_responsive.group_frames.forEach((e, index) => {\r\n promise_group_frames_block_responsive[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_block_responsive).then(\r\n (group_frames) => {\r\n data_block.block_responsive.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của hover_blank\r\n let promise_group_objects_hover_blank = [];\r\n data_block.hover_blank.group_objects.forEach((e, index) => {\r\n promise_group_objects_hover_blank[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_hover_blank).then((group_frames) => {\r\n data_block.hover_blank.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của hover_blank\r\n let promise_group_frames_hover_blank = [];\r\n data_block.hover_blank.group_frames.forEach((e, index) => {\r\n promise_group_frames_hover_blank[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_hover_blank).then((group_frames) => {\r\n data_block.hover_blank.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của menu_hover\r\n let promise_group_objects_menu_hover = [];\r\n data_block.menu_hover.group_objects.forEach((e, index) => {\r\n promise_group_objects_menu_hover[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_menu_hover).then((group_frames) => {\r\n data_block.menu_hover.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của menu_hover\r\n let promise_group_frames_menu_hover = [];\r\n data_block.menu_hover.group_frames.forEach((e, index) => {\r\n promise_group_frames_menu_hover[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_menu_hover).then((group_frames) => {\r\n data_block.menu_hover.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của popup_detail_product\r\n let promise_group_objects_popup_detail_product = [];\r\n data_block.popup_detail_product.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_detail_product[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_detail_product).then(\r\n (group_frames) => {\r\n data_block.popup_detail_product.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của popup_detail_product\r\n let promise_group_frames_popup_detail_product = [];\r\n data_block.popup_detail_product.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_detail_product[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_detail_product).then(\r\n (group_frames) => {\r\n data_block.popup_detail_product.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của popup_detail_snimei\r\n let promise_group_objects_popup_detail_snimei = [];\r\n data_block.popup_detail_snimei.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_detail_snimei[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_detail_snimei).then(\r\n (group_frames) => {\r\n data_block.popup_detail_snimei.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của popup_detail_snimei\r\n let promise_group_frames_popup_detail_snimei = [];\r\n data_block.popup_detail_snimei.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_detail_snimei[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_detail_snimei).then(\r\n (group_frames) => {\r\n data_block.popup_detail_snimei.group_frames = group_frames;\r\n }\r\n );\r\n \r\n\r\n // dữ liệu group_objects của popup_detail_food_drink\r\n let promise_group_objects_popup_detail_food_drink = [];\r\n data_block.popup_detail_food_drink.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_detail_food_drink[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_detail_food_drink).then(\r\n (group_frames) => {\r\n data_block.popup_detail_food_drink.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của popup_detail_food_drink\r\n let promise_group_frames_popup_detail_food_drink = [];\r\n data_block.popup_detail_food_drink.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_detail_food_drink[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_detail_food_drink).then(\r\n (group_frames) => {\r\n data_block.popup_detail_food_drink.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của popup_detail_recruitment\r\n let promise_group_objects_popup_detail_recruitment = [];\r\n data_block.popup_detail_recruitment.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_detail_recruitment[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_detail_recruitment).then(\r\n (group_frames) => {\r\n data_block.popup_detail_recruitment.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của popup_detail_recruitment\r\n let promise_group_frames_popup_detail_recruitment = [];\r\n data_block.popup_detail_recruitment.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_detail_recruitment[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_detail_recruitment).then(\r\n (group_frames) => {\r\n data_block.popup_detail_recruitment.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của popup_detail_news\r\n let promise_group_objects_popup_detail_news = [];\r\n data_block.popup_detail_news.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_detail_news[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_detail_news).then(\r\n (group_frames) => {\r\n data_block.popup_detail_news.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của popup_detail_news\r\n let promise_group_frames_popup_detail_news = [];\r\n data_block.popup_detail_news.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_detail_news[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_detail_news).then(\r\n (group_frames) => {\r\n data_block.popup_detail_news.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của popup_detail_service\r\n let promise_group_objects_popup_detail_service = [];\r\n data_block.popup_detail_service.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_detail_service[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_detail_service).then(\r\n (group_frames) => {\r\n data_block.popup_detail_service.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của popup_detail_service\r\n let promise_group_frames_popup_detail_service = [];\r\n data_block.popup_detail_service.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_detail_service[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_detail_service).then(\r\n (group_frames) => {\r\n data_block.popup_detail_service.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của popup_detail_website\r\n let promise_group_objects_popup_detail_website = [];\r\n data_block.popup_detail_website.group_objects.forEach((e, index) => {\r\n promise_group_objects_popup_detail_website[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_popup_detail_website).then(\r\n (group_frames) => {\r\n data_block.popup_detail_website.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của popup_detail_website\r\n let promise_group_frames_popup_detail_website = [];\r\n data_block.popup_detail_website.group_frames.forEach((e, index) => {\r\n promise_group_frames_popup_detail_website[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_popup_detail_website).then(\r\n (group_frames) => {\r\n data_block.popup_detail_website.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của chatbox\r\n let promise_group_objects_chatbox = [];\r\n data_block.chatbox.group_objects.forEach((e, index) => {\r\n promise_group_objects_chatbox[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_chatbox).then((group_frames) => {\r\n data_block.chatbox.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của chatbox\r\n let promise_group_frames_chatbox = [];\r\n data_block.chatbox.group_frames.forEach((e, index) => {\r\n promise_group_frames_chatbox[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_chatbox).then((group_frames) => {\r\n data_block.chatbox.group_frames = group_frames;\r\n });\r\n resolve(true);\r\n });\r\n }\r\n\r\n handleGetDataFrames(data_frame) {\r\n return new Promise((resolve) => {\r\n // dữ liệu group_objects của frame_dev\r\n let promise_group_objects_frame_dev = [];\r\n data_frame.frame_dev.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_dev[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_dev).then((group_frames) => {\r\n data_frame.frame_dev.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_dev\r\n let promise_group_frames_frame_dev = [];\r\n data_frame.frame_dev.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_dev[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_dev).then((group_frames) => {\r\n data_frame.frame_dev.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_recruitment\r\n let promise_group_objects_frame_recruitment = [];\r\n data_frame.frame_recruitment.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_recruitment[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_recruitment).then(\r\n (group_frames) => {\r\n data_frame.frame_recruitment.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_recruitment\r\n let promise_group_frames_frame_recruitment = [];\r\n data_frame.frame_recruitment.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_recruitment[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_recruitment).then(\r\n (group_frames) => {\r\n data_frame.frame_recruitment.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_recruitment_detail\r\n let promise_group_objects_frame_recruitment_detail = [];\r\n data_frame.frame_recruitment_detail.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_recruitment_detail[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_recruitment_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_recruitment_detail.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_recruitment_detail\r\n let promise_group_frames_frame_recruitment_detail = [];\r\n data_frame.frame_recruitment_detail.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_recruitment_detail[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_recruitment_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_recruitment_detail.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_blank\r\n let promise_group_objects_frame_blank = [];\r\n data_frame.frame_blank.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_blank[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_blank).then((group_frames) => {\r\n data_frame.frame_blank.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_blank\r\n let promise_group_frames_frame_blank = [];\r\n data_frame.frame_blank.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_blank[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_blank).then((group_frames) => {\r\n data_frame.frame_blank.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_tab_2states\r\n let promise_group_objects_frame_tab_2states = [];\r\n data_frame.frame_tab_2states.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_tab_2states[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_tab_2states).then(\r\n (group_frames) => {\r\n data_frame.frame_tab_2states.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_tab_2states\r\n let promise_group_frames_frame_tab_2states = [];\r\n data_frame.frame_tab_2states.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_tab_2states[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_tab_2states).then(\r\n (group_frames) => {\r\n data_frame.frame_tab_2states.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_collapse\r\n let promise_group_objects_frame_collapse = [];\r\n data_frame.frame_collapse.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_collapse[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_collapse).then((group_frames) => {\r\n data_frame.frame_collapse.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_collapse\r\n let promise_group_frames_frame_collapse = [];\r\n data_frame.frame_collapse.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_collapse[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_collapse).then((group_frames) => {\r\n data_frame.frame_collapse.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_mutil_blank\r\n let promise_group_objects_frame_mutil_blank = [];\r\n data_frame.frame_mutil_blank.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_mutil_blank[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_mutil_blank).then(\r\n (group_frames) => {\r\n data_frame.frame_mutil_blank.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_mutil_blank\r\n let promise_group_frames_frame_mutil_blank = [];\r\n data_frame.frame_mutil_blank.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_mutil_blank[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_mutil_blank).then(\r\n (group_frames) => {\r\n data_frame.frame_mutil_blank.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_blogs\r\n let promise_group_objects_frame_blogs = [];\r\n data_frame.frame_blogs.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_blogs[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_blogs).then((group_frames) => {\r\n data_frame.frame_blogs.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_blogs\r\n let promise_group_frames_frame_blogs = [];\r\n data_frame.frame_blogs.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_blogs[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_blogs).then((group_frames) => {\r\n data_frame.frame_blogs.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_snimei_detail\r\n let promise_group_objects_frame_snimei_detail = [];\r\n data_frame.frame_snimei_detail.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_snimei_detail[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_snimei_detail).then((group_frames) => {\r\n data_frame.frame_snimei_detail.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_snimei_detail\r\n let promise_group_frames_frame_snimei_detail = [];\r\n data_frame.frame_snimei_detail.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_snimei_detail[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_snimei_detail).then((group_frames) => {\r\n data_frame.frame_snimei_detail.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_news\r\n let promise_group_objects_frame_news = [];\r\n data_frame.frame_news.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_news[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_news).then((group_frames) => {\r\n data_frame.frame_news.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_news\r\n let promise_group_frames_frame_news = [];\r\n data_frame.frame_news.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_news[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_news).then((group_frames) => {\r\n data_frame.frame_news.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_news_favorited\r\n let promise_group_objects_frame_news_favorited = [];\r\n data_frame.frame_news_favorited.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_news_favorited[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_news_favorited).then((group_frames) => {\r\n data_frame.frame_news_favorited.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_news_favorited\r\n let promise_group_frames_frame_news_favorited = [];\r\n data_frame.frame_news_favorited.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_news_favorited[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_news_favorited).then((group_frames) => {\r\n data_frame.frame_news_favorited.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_services\r\n let promise_group_objects_frame_services = [];\r\n data_frame.frame_services.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_services[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_services).then((group_frames) => {\r\n data_frame.frame_services.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_services\r\n let promise_group_frames_frame_services = [];\r\n data_frame.frame_services.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_services[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_services).then((group_frames) => {\r\n data_frame.frame_services.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_services\r\n let promise_group_objects_frame_service_detail = [];\r\n data_frame.frame_service_detail.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_service_detail[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_service_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_service_detail.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_service_detail\r\n let promise_group_frames_frame_service_detail = [];\r\n data_frame.frame_service_detail.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_service_detail[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_service_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_service_detail.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_services\r\n let promise_group_objects_frame_service_relate = [];\r\n data_frame.frame_service_relate.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_service_relate[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_service_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_service_relate.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_service_relate\r\n let promise_group_frames_frame_service_relate = [];\r\n data_frame.frame_service_relate.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_service_relate[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_service_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_service_relate.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_services\r\n let promise_group_objects_frame_services_category = [];\r\n data_frame.frame_services_category.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_services_category[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_services_category).then(\r\n (group_frames) => {\r\n data_frame.frame_services_category.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_services_category\r\n let promise_group_frames_frame_services_category = [];\r\n data_frame.frame_services_category.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_services_category[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_services_category).then(\r\n (group_frames) => {\r\n data_frame.frame_services_category.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_category_detail\r\n let promise_group_objects_frame_category_detail = [];\r\n data_frame.frame_category_detail.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_category_detail[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_category_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_category_detail.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_category_detail\r\n let promise_group_frames_frame_category_detail = [];\r\n data_frame.frame_category_detail.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_category_detail[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_category_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_category_detail.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_category\r\n let promise_group_objects_frame_category = [];\r\n data_frame.frame_category.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_category[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_category).then((group_frames) => {\r\n data_frame.frame_category.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_category\r\n let promise_group_frames_frame_category = [];\r\n data_frame.frame_category.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_category[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_category).then((group_frames) => {\r\n data_frame.frame_category.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_news_detail\r\n let promise_group_objects_frame_news_detail = [];\r\n data_frame.frame_news_detail.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_news_detail[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_news_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_news_detail.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_news_detail\r\n let promise_group_frames_frame_news_detail = [];\r\n data_frame.frame_news_detail.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_news_detail[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_news_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_news_detail.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_news_group\r\n let promise_group_objects_frame_news_group = [];\r\n data_frame.frame_news_group.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_news_group[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_news_group).then(\r\n (group_frames) => {\r\n data_frame.frame_news_group.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_news_group\r\n let promise_group_frames_frame_news_group = [];\r\n data_frame.frame_news_group.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_news_group[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_news_group).then(\r\n (group_frames) => {\r\n data_frame.frame_news_group.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_news_category\r\n let promise_group_objects_frame_news_category = [];\r\n data_frame.frame_news_category.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_news_category[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_news_category).then(\r\n (group_frames) => {\r\n data_frame.frame_news_category.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_news_category\r\n let promise_group_frames_frame_news_category = [];\r\n data_frame.frame_news_category.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_news_category[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_news_category).then(\r\n (group_frames) => {\r\n data_frame.frame_news_category.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_news_relate\r\n let promise_group_objects_frame_news_relate = [];\r\n data_frame.frame_news_relate.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_news_relate[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_news_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_news_relate.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_news_relate\r\n let promise_group_frames_frame_news_relate = [];\r\n data_frame.frame_news_relate.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_news_relate[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_news_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_news_relate.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_product\r\n let promise_group_objects_frame_product = [];\r\n data_frame.frame_product.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_product[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_product).then((group_frames) => {\r\n data_frame.frame_product.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_product\r\n let promise_group_frames_frame_product = [];\r\n data_frame.frame_product.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_product[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_product).then((group_frames) => {\r\n data_frame.frame_product.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_product\r\n let promise_group_objects_frame_repeat = [];\r\n data_frame.frame_repeat.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_repeat[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_repeat).then((group_frames) => {\r\n data_frame.frame_repeat.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_repeat\r\n let promise_group_frames_frame_repeat = [];\r\n data_frame.frame_repeat.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_repeat[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_repeat).then((group_frames) => {\r\n data_frame.frame_repeat.group_frames = group_frames;\r\n });\r\n\r\n\r\n // dữ liệu group_objects của frame_product_viewed\r\n let promise_group_objects_frame_product_viewed = [];\r\n data_frame.frame_product_viewed.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_product_viewed[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_product_viewed).then(\r\n (group_frames) => {\r\n data_frame.frame_product_viewed.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_product_viewed\r\n let promise_group_frames_frame_product_viewed = [];\r\n data_frame.frame_product_viewed.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_product_viewed[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_product_viewed).then(\r\n (group_frames) => {\r\n data_frame.frame_product_viewed.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_products_favorited\r\n let promise_group_objects_frame_products_favorited = [];\r\n data_frame.frame_products_favorited.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_products_favorited[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_products_favorited).then(\r\n (group_frames) => {\r\n data_frame.frame_products_favorited.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_products_favorited\r\n let promise_group_frames_frame_products_favorited = [];\r\n data_frame.frame_products_favorited.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_products_favorited[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_products_favorited).then(\r\n (group_frames) => {\r\n data_frame.frame_products_favorited.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_product_by_category\r\n let promise_group_objects_frame_product_by_category = [];\r\n data_frame.frame_product_by_category.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_product_by_category[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_product_by_category).then(\r\n (group_frames) => {\r\n data_frame.frame_product_by_category.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_product_by_category\r\n let promise_group_frames_frame_product_by_category = [];\r\n data_frame.frame_product_by_category.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_product_by_category[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_product_by_category).then(\r\n (group_frames) => {\r\n data_frame.frame_product_by_category.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_product_detail\r\n let promise_group_objects_frame_product_detail = [];\r\n data_frame.frame_product_detail.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_product_detail[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_product_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_product_detail.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_product_detail\r\n let promise_group_frames_frame_product_detail = [];\r\n data_frame.frame_product_detail.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_product_detail[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_product_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_product_detail.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_product_relate\r\n let promise_group_objects_frame_product_relate = [];\r\n data_frame.frame_product_relate.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_product_relate[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_product_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_product_relate.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_product_relate\r\n let promise_group_frames_frame_product_relate = [];\r\n data_frame.frame_product_relate.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_product_relate[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_product_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_product_relate.group_frames = group_frames;\r\n }\r\n );\r\n\r\n //------\r\n // dữ liệu group_objects của frame_search_by_keyword_website\r\n let promise_group_objects_frame_search_by_keyword_website = [];\r\n data_frame.frame_search_by_keyword_website.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_search_by_keyword_website[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_search_by_keyword_website).then((group_frames) => {\r\n data_frame.frame_search_by_keyword_website.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_search_by_keyword_website\r\n let promise_group_frames_frame_search_by_keyword_website = [];\r\n data_frame.frame_search_by_keyword_website.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_search_by_keyword_website[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_search_by_keyword_website).then((group_frames) => {\r\n data_frame.frame_search_by_keyword_website.group_frames = group_frames;\r\n });\r\n //------\r\n // dữ liệu group_objects của frame_product\r\n let promise_group_objects_frame_website = [];\r\n data_frame.frame_website.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_website[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_website).then((group_frames) => {\r\n data_frame.frame_website.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_website\r\n let promise_group_frames_frame_website = [];\r\n data_frame.frame_website.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_website[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_website).then((group_frames) => {\r\n data_frame.frame_website.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_website_by_category\r\n let promise_group_objects_frame_website_by_category = [];\r\n data_frame.frame_website_by_category.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_website_by_category[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_website_by_category).then(\r\n (group_frames) => {\r\n data_frame.frame_website_by_category.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_website_by_category\r\n let promise_group_frames_frame_website_by_category = [];\r\n data_frame.frame_website_by_category.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_website_by_category[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_website_by_category).then(\r\n (group_frames) => {\r\n data_frame.frame_website_by_category.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_website_detail\r\n let promise_group_objects_frame_website_detail = [];\r\n data_frame.frame_website_detail.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_website_detail[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_website_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_website_detail.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_website_detail\r\n let promise_group_frames_frame_website_detail = [];\r\n data_frame.frame_website_detail.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_website_detail[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_website_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_website_detail.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_website_relate\r\n let promise_group_objects_frame_website_relate = [];\r\n data_frame.frame_website_relate.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_website_relate[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_website_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_website_relate.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_website_relate\r\n let promise_group_frames_frame_website_relate = [];\r\n data_frame.frame_website_relate.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_website_relate[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_website_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_website_relate.group_frames = group_frames;\r\n }\r\n );\r\n // ------\r\n\r\n //------\r\n // dữ liệu group_objects của frame_product\r\n let promise_group_objects_frame_app = [];\r\n data_frame.frame_app.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_app[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_app).then((group_frames) => {\r\n data_frame.frame_app.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_app\r\n let promise_group_frames_frame_app = [];\r\n data_frame.frame_app.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_app[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_app).then((group_frames) => {\r\n data_frame.frame_app.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_app_by_category\r\n let promise_group_objects_frame_app_by_category = [];\r\n data_frame.frame_app_by_category.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_app_by_category[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_app_by_category).then(\r\n (group_frames) => {\r\n data_frame.frame_app_by_category.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_app_by_category\r\n let promise_group_frames_frame_app_by_category = [];\r\n data_frame.frame_app_by_category.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_app_by_category[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_app_by_category).then(\r\n (group_frames) => {\r\n data_frame.frame_app_by_category.group_frames = group_frames;\r\n }\r\n );\r\n\r\n //------\r\n // dữ liệu group_objects của frame_product\r\n let promise_group_objects_frame_food_drink = [];\r\n data_frame.frame_food_drink.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_food_drink[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_food_drink).then(\r\n (group_frames) => {\r\n data_frame.frame_food_drink.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_food_drink\r\n let promise_group_frames_frame_food_drink = [];\r\n data_frame.frame_food_drink.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_food_drink[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_food_drink).then(\r\n (group_frames) => {\r\n data_frame.frame_food_drink.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_food_drink_by_category\r\n let promise_group_objects_frame_food_drink_by_category = [];\r\n data_frame.frame_food_drink_by_category.group_objects.forEach(\r\n (e, index) => {\r\n promise_group_objects_frame_food_drink_by_category[index] =\r\n this.getDataObjectGroup(e);\r\n }\r\n );\r\n Promise.all(promise_group_objects_frame_food_drink_by_category).then(\r\n (group_frames) => {\r\n data_frame.frame_food_drink_by_category.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_food_drink_by_category\r\n let promise_group_frames_frame_food_drink_by_category = [];\r\n data_frame.frame_food_drink_by_category.group_frames.forEach(\r\n (e, index) => {\r\n promise_group_frames_frame_food_drink_by_category[index] =\r\n this.getDataFrameGroup(e);\r\n }\r\n );\r\n Promise.all(promise_group_frames_frame_food_drink_by_category).then(\r\n (group_frames) => {\r\n data_frame.frame_food_drink_by_category.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_food_drink_detail\r\n let promise_group_objects_frame_food_drink_detail = [];\r\n data_frame.frame_food_drink_detail.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_food_drink_detail[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_food_drink_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_food_drink_detail.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_food_drink_detail\r\n let promise_group_frames_frame_food_drink_detail = [];\r\n data_frame.frame_food_drink_detail.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_food_drink_detail[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_food_drink_detail).then(\r\n (group_frames) => {\r\n data_frame.frame_food_drink_detail.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_food_drink_relate\r\n let promise_group_objects_frame_food_drink_relate = [];\r\n data_frame.frame_food_drink_relate.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_food_drink_relate[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_food_drink_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_food_drink_relate.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_food_drink_relate\r\n let promise_group_frames_frame_food_drink_relate = [];\r\n data_frame.frame_food_drink_relate.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_food_drink_relate[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_food_drink_relate).then(\r\n (group_frames) => {\r\n data_frame.frame_food_drink_relate.group_frames = group_frames;\r\n }\r\n );\r\n // ------\r\n // dữ liệu group_objects của frame_search_by_keyword\r\n let promise_group_objects_frame_search_by_keyword = [];\r\n data_frame.frame_search_by_keyword.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_search_by_keyword[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_search_by_keyword).then(\r\n (group_frames) => {\r\n data_frame.frame_search_by_keyword.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_search_by_keyword\r\n let promise_group_frames_frame_search_by_keyword = [];\r\n data_frame.frame_search_by_keyword.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_search_by_keyword[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_search_by_keyword).then(\r\n (group_frames) => {\r\n data_frame.frame_search_by_keyword.group_frames = group_frames;\r\n }\r\n );\r\n //------\r\n // dữ liệu group_objects của frame_search_by_keyword_app\r\n let promise_group_objects_frame_search_by_keyword_app = [];\r\n data_frame.frame_search_by_keyword_app.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_search_by_keyword_app[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_search_by_keyword_app).then((group_frames) => {\r\n data_frame.frame_search_by_keyword_app.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_search_by_keyword_app\r\n let promise_group_frames_frame_search_by_keyword_app = [];\r\n data_frame.frame_search_by_keyword_app.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_search_by_keyword_app[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_search_by_keyword_app).then((group_frames) => {\r\n data_frame.frame_search_by_keyword_app.group_frames = group_frames;\r\n });\r\n // dữ liệu group_objects của frame_search_by_keyword_foods\r\n let promise_group_objects_frame_search_by_keyword_foods = [];\r\n data_frame.frame_search_by_keyword_foods.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_search_by_keyword_foods[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_search_by_keyword_foods).then(\r\n (group_frames) => {\r\n data_frame.frame_search_by_keyword_foods.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_search_by_keyword_foods\r\n let promise_group_frames_frame_search_by_keyword_foods = [];\r\n data_frame.frame_search_by_keyword_foods.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_search_by_keyword_foods[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_search_by_keyword_foods).then(\r\n (group_frames) => {\r\n data_frame.frame_search_by_keyword_foods.group_frames = group_frames;\r\n }\r\n );\r\n // dữ liệu group_objects của frame_search_by_keyword_news\r\n let promise_group_objects_frame_search_by_keyword_news = [];\r\n data_frame.frame_search_by_keyword_news.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_search_by_keyword_news[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_search_by_keyword_news).then(\r\n (group_frames) => {\r\n data_frame.frame_search_by_keyword_news.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_search_by_keyword_news\r\n let promise_group_frames_frame_search_by_keyword_news = [];\r\n data_frame.frame_search_by_keyword_news.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_search_by_keyword_news[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_search_by_keyword_news).then(\r\n (group_frames) => {\r\n data_frame.frame_search_by_keyword_news.group_frames = group_frames;\r\n }\r\n );\r\n // dữ liệu group_objects của frame_search_by_keyword_services\r\n let promise_group_objects_frame_search_by_keyword_services = [];\r\n data_frame.frame_search_by_keyword_services.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_search_by_keyword_services[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_search_by_keyword_services).then(\r\n (group_frames) => {\r\n data_frame.frame_search_by_keyword_services.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_search_by_keyword_services\r\n let promise_group_frames_frame_search_by_keyword_services = [];\r\n data_frame.frame_search_by_keyword_services.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_search_by_keyword_services[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_search_by_keyword_services).then(\r\n (group_frames) => {\r\n data_frame.frame_search_by_keyword_services.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_result_ecommerce\r\n let promise_group_objects_frame_result_ecommerce = [];\r\n data_frame.frame_result_ecommerce.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_result_ecommerce[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_result_ecommerce).then((group_frames) => {\r\n data_frame.frame_result_ecommerce.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_result_ecommerce\r\n let promise_group_frames_frame_result_ecommerce = [];\r\n data_frame.frame_result_ecommerce.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_result_ecommerce[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_result_ecommerce).then((group_frames) => {\r\n data_frame.frame_result_ecommerce.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_result_food_drink\r\n let promise_group_objects_frame_result_food_drink = [];\r\n data_frame.frame_result_food_drink.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_result_food_drink[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_result_food_drink).then((group_frames) => {\r\n data_frame.frame_result_food_drink.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_result_food_drink\r\n let promise_group_frames_frame_result_food_drink = [];\r\n data_frame.frame_result_food_drink.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_result_food_drink[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_result_food_drink).then((group_frames) => {\r\n data_frame.frame_result_food_drink.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_result_news\r\n let promise_group_objects_frame_result_news = [];\r\n data_frame.frame_result_news.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_result_news[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_result_news).then((group_frames) => {\r\n data_frame.frame_result_news.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_result_news\r\n let promise_group_frames_frame_result_news = [];\r\n data_frame.frame_result_news.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_result_news[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_result_news).then((group_frames) => {\r\n data_frame.frame_result_news.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_result_webapp\r\n let promise_group_objects_frame_result_webapp = [];\r\n data_frame.frame_result_webapp.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_result_webapp[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_result_webapp).then((group_frames) => {\r\n data_frame.frame_result_webapp.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_result_webapp\r\n let promise_group_frames_frame_result_webapp = [];\r\n data_frame.frame_result_webapp.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_result_webapp[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_result_webapp).then((group_frames) => {\r\n data_frame.frame_result_webapp.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_result_service\r\n let promise_group_objects_frame_result_service = [];\r\n data_frame.frame_result_service.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_result_service[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_result_service).then((group_frames) => {\r\n data_frame.frame_result_service.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_result_service\r\n let promise_group_frames_frame_result_service = [];\r\n data_frame.frame_result_service.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_result_service[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_result_service).then((group_frames) => {\r\n data_frame.frame_result_service.group_frames = group_frames;\r\n });\r\n\r\n\r\n // dữ liệu group_objects của frame_result_recruitment\r\n let promise_group_objects_frame_result_recruitment = [];\r\n data_frame.frame_result_recruitment.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_result_recruitment[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_result_recruitment).then((group_frames) => {\r\n data_frame.frame_result_recruitment.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_result_recruitment\r\n let promise_group_frames_frame_result_recruitment = [];\r\n data_frame.frame_result_recruitment.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_result_recruitment[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_result_recruitment).then((group_frames) => {\r\n data_frame.frame_result_recruitment.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_result_snimei\r\n let promise_group_objects_frame_result_snimei = [];\r\n data_frame.frame_result_snimei.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_result_snimei[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_result_snimei).then((group_frames) => {\r\n data_frame.frame_result_snimei.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_result_snimei\r\n let promise_group_frames_frame_result_snimei = [];\r\n data_frame.frame_result_snimei.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_result_snimei[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_result_snimei).then((group_frames) => {\r\n data_frame.frame_result_snimei.group_frames = group_frames;\r\n });\r\n\r\n \r\n // dữ liệu group_objects của frame_brand\r\n let promise_group_objects_frame_brand = [];\r\n data_frame.frame_brand.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_brand[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_brand).then((group_frames) => {\r\n data_frame.frame_brand.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_brand\r\n let promise_group_frames_frame_brand = [];\r\n data_frame.frame_brand.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_brand[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_brand).then((group_frames) => {\r\n data_frame.frame_brand.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_hotel\r\n let promise_group_objects_frame_hotel = [];\r\n data_frame.frame_hotel.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_hotel[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_hotel).then((group_frames) => {\r\n data_frame.frame_hotel.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_hotel\r\n let promise_group_frames_frame_hotel = [];\r\n data_frame.frame_hotel.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_hotel[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_hotel).then((group_frames) => {\r\n data_frame.frame_hotel.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_banner\r\n let promise_group_objects_frame_banner = [];\r\n data_frame.frame_banner.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_banner[index] = this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_banner).then((group_frames) => {\r\n data_frame.frame_banner.group_objects = group_frames;\r\n });\r\n // dữ liệu group_frames của frame_banner\r\n let promise_group_frames_frame_banner = [];\r\n data_frame.frame_banner.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_banner[index] = this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_banner).then((group_frames) => {\r\n data_frame.frame_banner.group_frames = group_frames;\r\n });\r\n\r\n // dữ liệu group_objects của frame_cart_products\r\n let promise_group_objects_frame_cart_products = [];\r\n data_frame.frame_cart_products.group_objects.forEach((e, index) => {\r\n promise_group_objects_frame_cart_products[index] =\r\n this.getDataObjectGroup(e);\r\n });\r\n Promise.all(promise_group_objects_frame_cart_products).then(\r\n (group_frames) => {\r\n data_frame.frame_cart_products.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_cart_products\r\n let promise_group_frames_frame_cart_products = [];\r\n data_frame.frame_cart_products.group_frames.forEach((e, index) => {\r\n promise_group_frames_frame_cart_products[index] =\r\n this.getDataFrameGroup(e);\r\n });\r\n Promise.all(promise_group_frames_frame_cart_products).then(\r\n (group_frames) => {\r\n data_frame.frame_cart_products.group_frames = group_frames;\r\n }\r\n );\r\n\r\n // dữ liệu group_objects của frame_cart_products_choosed\r\n let promise_group_objects_frame_cart_products_choosed = [];\r\n data_frame.frame_cart_products_choosed.group_objects.forEach(\r\n (e, index) => {\r\n promise_group_objects_frame_cart_products_choosed[index] =\r\n this.getDataObjectGroup(e);\r\n }\r\n );\r\n Promise.all(promise_group_objects_frame_cart_products_choosed).then(\r\n (group_frames) => {\r\n data_frame.frame_cart_products_choosed.group_objects = group_frames;\r\n }\r\n );\r\n // dữ liệu group_frames của frame_cart_products_choosed\r\n let promise_group_frames_frame_cart_products_choosed = [];\r\n data_frame.frame_cart_products_choosed.group_frames.forEach(\r\n (e, index) => {\r\n promise_group_frames_frame_cart_products_choosed[index] =\r\n this.getDataFrameGroup(e);\r\n }\r\n );\r\n Promise.all(promise_group_frames_frame_cart_products_choosed).then(\r\n (group_frames) => {\r\n data_frame.frame_cart_products_choosed.group_frames = group_frames;\r\n }\r\n );\r\n\r\n resolve(true);\r\n });\r\n }\r\n\r\n // get dữ liệu của nhóm object\r\n getDataObjectGroup(file_name) {\r\n const url = `assets/data/group/object_group/${file_name}.json`;\r\n return new Promise((resolve) => {\r\n this.http.get<any[]>(url).subscribe((data) => {\r\n resolve(data);\r\n });\r\n });\r\n }\r\n // get dữ liệu của nhóm frame\r\n getDataFrameGroup(file_name) {\r\n const url = `assets/data/group/frame_group/${file_name}.json`;\r\n return new Promise((resolve) => {\r\n this.http.get<any[]>(url).subscribe((data) => {\r\n resolve(data);\r\n });\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { VhAlgorithm, VhQueryAutoWeb } from 'vhautowebdb';\r\nimport { JsonDataService } from '../services/json-data.service';\r\nimport { NzMessageService } from 'ng-zorro-antd/message';\r\nimport { LanguageService } from './language.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PagesService {\r\n\r\n /** Mảng chứa các thiết bị cần copy từ desktop sang */\r\n private devicesNeedToCopyFromDesktop = [\r\n 'tablet_portrait',\r\n 'tablet_landscape',\r\n 'mobile_landscape',\r\n 'mobile_portrait'\r\n ];\r\n\r\n constructor(\r\n private jsonDataService: JsonDataService,\r\n private vhAlgorithm: VhAlgorithm,\r\n private vhQueryAutoWeb: VhQueryAutoWeb,\r\n private message: NzMessageService,\r\n private languageService: LanguageService,\r\n ) { }\r\n\r\n\r\n /**\r\n * show message\r\n * @param type : 'success', 'error', 'warning'\r\n * @param content\r\n * @param duration default 1500\r\n * @example\r\n * this.alertMessageDesktop.(\"success\",HELLO WORLD )\r\n */\r\n alertMessageDesktop(type, content, duration?) {\r\n this.message.create(type, this.languageService.translate(content), duration);\r\n }\r\n \r\n\r\n \r\n \r\n /** Hàm kiểm tra và trả về những block chung không chưa id_page như popup, hover, header, footer (Tên bắt đầu bằng từ popup, hover, header, footer)\r\n *\r\n * @param blockType\r\n */\r\n isGeneraltype(blockType: string): boolean {\r\n return (\r\n /^popup_hover/.test(blockType) ||\r\n /^hover_blank/.test(blockType) ||\r\n /^popup_welcome/.test(blockType) ||\r\n /^mobile_tabs/.test(blockType) ||\r\n /^popup_detail_product/.test(blockType) ||\r\n /^popup_detail_snimei/.test(blockType) ||\r\n /^popup_detail_food_drink/.test(blockType) ||\r\n /^popup_detail_recruitment/.test(blockType) ||\r\n /^popup_detail_news/.test(blockType) ||\r\n /^popup_detail_website/.test(blockType) ||\r\n /^popup_detail_service/.test(blockType) ||\r\n /^chatbox/.test(blockType) ||\r\n /^header/.test(blockType) ||\r\n /^footer/.test(blockType)\r\n );\r\n }\r\n \r\n\r\n \r\n /** Hàm này thực hiện trả về thên object phù hợp khi tạo\r\n *\r\n * @param label tên object được chọn\r\n * @param result đây là dữ liệu được lấy từ json\r\n * @returns\r\n */\r\n generateObjectName(\r\n label: string,\r\n result: any,\r\n blockChoosing?,\r\n objectChoosing?\r\n ): string {\r\n let number = 1;\r\n if (blockChoosing?.objects?.length) {\r\n blockChoosing.objects.forEach((element: any) => {\r\n if (element.component == result.component) {\r\n number = number + 1;\r\n }\r\n });\r\n } else if (objectChoosing?.objects?.length) {\r\n objectChoosing.objects.forEach((element: any) => {\r\n if (element.component == result.component) {\r\n number = number + 1;\r\n }\r\n });\r\n }\r\n return `${label} ${number}`;\r\n }\r\n\r\n /**\r\n * tạo màu ngẫu nhiên cho frame\r\n * @returns\r\n */\r\n getRandomColor(): string {\r\n const letters: string = '0123456789ABCDEF';\r\n let color: string = '#';\r\n for (let i: number = 0; i < 6; i++) {\r\n color += letters[Math.floor(Math.random() * 16)];\r\n }\r\n return color;\r\n }\r\n \r\n /** Hàm này thực hiện trả về tên frame phù hợp khi tạo\r\n *\r\n * @param label tên frame được chọn\r\n * @param result đây là dữ liệu được lấy từ json\r\n * @returns\r\n */\r\n generateFrameName(label: string, result: any): string {\r\n return `${label}`;\r\n }\r\n\r\n /** Hàm thực hiện cập nhật frame\r\n *\r\n * @param id_frame id frame cập nhật\r\n * @param dataUpdate dữ liệu cập nhât {name: 'abc'}\r\n */\r\n updateFrameByIdFrame(id_frame: string, dataUpdate: object) {\r\n this.vhQueryAutoWeb.updateObject(id_frame, dataUpdate).then(\r\n (bool) => {\r\n if (!bool) {\r\n this.alertMessageDesktop(\r\n 'error',\r\n `Cập nhật thất bại !!!`\r\n );\r\n }\r\n },\r\n (error) => {\r\n console.log('error', error);\r\n this.alertMessageDesktop(\r\n 'error',\r\n `Đã xảy ra lỗi trong quá trình truyền dữ liệu !!!`\r\n );\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Hàm add Object (có mẫu)\r\n * @param object\r\n * @param blockChoosing\r\n * @param objectChoosing\r\n * @param main_sector chỉ dùng cho popup-detail, popup-interactive, button-show-modal-detail\r\n * @returns\r\n */\r\n addObject(\r\n object,\r\n blockChoosing,\r\n objectChoosing,\r\n main_sector?\r\n ) {\r\n\r\n return new Promise((resolve, reject) => {\r\n if (object) {\r\n const isObjectChoosing = Boolean(objectChoosing);\r\n const id = isObjectChoosing ? { id_object: objectChoosing._id } : { id_block: blockChoosing._id };\r\n let id_block_or_object = isObjectChoosing ? objectChoosing._id : blockChoosing._id;\r\n let data = {\r\n ...id,\r\n ...object,\r\n name: this.generateObjectName(object.name, object, blockChoosing, objectChoosing),\r\n type: object.type,\r\n desktop_config: {\r\n ...object['desktop_config'],\r\n cursor: {\r\n ...object['desktop_config']?.cursor,\r\n cursor_style: \"default\",\r\n cursor_image_path: \"\"\r\n },\r\n rotate: {\r\n transform_rotateX: 0,\r\n transform_rotateY: 0,\r\n transform_rotateZ: 0,\r\n transform_skewX: 0,\r\n transform_skewY: 0\r\n }\r\n },\r\n mobile_portrait_config: {\r\n ...(object['mobile_portrait_config'] || object['desktop_config']),\r\n cursor: {\r\n ...(object['mobile_portrait_config'] || object['desktop_config'])?.cursor,\r\n cursor_style: \"default\",\r\n cursor_image_path: \"\"\r\n },\r\n rotate: {\r\n transform_rotateX: 0,\r\n transform_rotateY: 0,\r\n transform_rotateZ: 0,\r\n transform_skewX: 0,\r\n transform_skewY: 0\r\n }\r\n },\r\n tablet_landscape_config: {\r\n ...(object['tablet_landscape_config'] || object['desktop_config']),\r\n cursor: {\r\n ...(object['tablet_landscape_config'] || object['desktop_config'])?.cursor,\r\n cursor_style: \"default\",\r\n cursor_image_path: \"\"\r\n },\r\n rotate: {\r\n transform_rotateX: 0,\r\n transform_rotateY: 0,\r\n transform_rotateZ: 0,\r\n transform_skewX: 0,\r\n transform_skewY: 0\r\n }\r\n },\r\n tablet_portrait_config: {\r\n ...(object['tablet_portrait_config'] || object['desktop_config']),\r\n cursor: {\r\n ...(object['tablet_portrait_config'] || object['desktop_config'])?.cursor,\r\n cursor_style: \"default\",\r\n cursor_image_path: \"\"\r\n },\r\n rotate: {\r\n transform_rotateX: 0,\r\n transform_rotateY: 0,\r\n transform_rotateZ: 0,\r\n transform_skewX: 0,\r\n transform_skewY: 0\r\n }\r\n },\r\n mobile_landscape_config: {\r\n ...(object['mobile_landscape_config'] || object['desktop_config']),\r\n cursor: {\r\n ...(object['mobile_landscape_config'] || object['desktop_config'])?.cursor,\r\n cursor_style: \"default\",\r\n cursor_image_path: \"\"\r\n },\r\n rotate: {\r\n transform_rotateX: 0,\r\n transform_rotateY: 0,\r\n transform_rotateZ: 0,\r\n transform_skewX: 0,\r\n transform_skewY: 0\r\n }\r\n },\r\n ['desktop_position_' + id_block_or_object]: {\r\n ...object['desktop_position'],\r\n },\r\n ['mobile_portrait_position_' + id_block_or_object]: {\r\n ...object[object['mobile_portrait_position'] ? 'mobile_portrait_position' : 'desktop_position'],\r\n },\r\n ['tablet_landscape_position_' + id_block_or_object]: {\r\n ...object[object['tablet_landscape_position'] ? 'tablet_landscape_position' : 'desktop_position'],\r\n },\r\n ['tablet_portrait_position_' + id_block_or_object]: {\r\n ...object[object['tablet_portrait_position'] ? 'tablet_portrait_position' : 'desktop_position'],\r\n },\r\n ['mobile_landscape_position_' + id_block_or_object]: {\r\n ...object[object['mobile_landscape_position'] ? 'mobile_landscape_position' : 'desktop_position'],\r\n },\r\n mobile_portrait_class: { ...(object['mobile_portrait_class'] || object['desktop_class']) },\r\n tablet_landscape_class: { ...(object['tablet_landscape_class'] || object['desktop_class']) },\r\n tablet_portrait_class: { ...(object['tablet_portrait_class'] || object['desktop_class']) },\r\n mobile_landscape_class: { ...(object['mobile_landscape_class'] || object['desktop_class']) },\r\n otype: 'object'\r\n }; // Gán dữ liệu\r\n\r\n if (['AtwDynamicFilter'].includes(object.component)) {\r\n data.staticdata.main_sector = main_sector;\r\n }\r\n\r\n delete data.desktop_position\r\n delete data.tablet_portrait_position\r\n delete data.tablet_landscape_position\r\n delete data.mobile_portrait_position\r\n delete data.mobile_landscape_position\r\n\r\n let add_code = null;\r\n if (['AtwSearchCustomize', 'AtwPopupDetail', 'AtwButtonShowModalDetail', 'AtwPopupInteractive', 'AtwPopup', 'AtwPopupOpenForm', \"AtwHover\", \"AtwButtonShowModal\", \"AtwButtonShowForm\", \"AtwButtonShowFormLogged\"].includes(data.component)) {\r\n add_code = this.vhAlgorithm.ObjectId(10)\r\n }\r\n\r\n this.vhQueryAutoWeb.addObject(data, add_code).then(\r\n async (object: any) => {\r\n if (object) {\r\n if (object.type == 'search-customize') {\r\n this.jsonDataService\r\n .getFrame('frame_blank')\r\n .subscribe((frame: any) => {\r\n const promises = Array.from(\r\n { length: 1 },\r\n (_, index) => {\r\n const dataFrame = {\r\n id_object: object._id,\r\n ...frame,\r\n is_child_search_customize: true,\r\n name: `Khung trống ${index + 1}`,\r\n configBlank: {},\r\n staticdata: {\r\n group_object: \"product\",\r\n content: `Khung trống ${index + 1}`,\r\n ...frame.staticdata,\r\n },\r\n desktop_config: {\r\n ...frame.desktop_config,\r\n ...object.desktop_config,\r\n },\r\n mobile_portrait_config: {\r\n ...frame.mobile_portrait_config,\r\n ...object.mobile_portrait_config,\r\n },\r\n mobile_landscape_config: {\r\n ...frame.mobile_landscape_config,\r\n ...object.mobile_landscape_config,\r\n },\r\n tablet_landscape_config: {\r\n ...frame.tablet_landscape_config,\r\n ...object.tablet_landscape_config,\r\n },\r\n tablet_portrait_config: {\r\n ...frame.tablet_portrait_config,\r\n ...object.tablet_portrait_config,\r\n },\r\n ['desktop_position_' + object._id]: {\r\n ...frame.desktop_position,\r\n ...object.desktop_config,\r\n },\r\n ['mobile_portrait_position_' + object._id]: {\r\n ...frame.mobile_portrait_position,\r\n ...object.mobile_portrait_config,\r\n },\r\n ['tablet_landscape_position_' + object._id]: {\r\n ...frame.tablet_landscape_position,\r\n ...object.tablet_landscape_config,\r\n },\r\n ['tablet_portrait_position_' + object._id]: {\r\n ...frame.tablet_portrait_position,\r\n ...object.tablet_portrait_config,\r\n },\r\n ['mobile_landscape_position_' + object._id]: {\r\n ...frame.mobile_landscape_position,\r\n ...object.mobile_landscape_config,\r\n },\r\n isResize: {\r\n top: false,\r\n right: false,\r\n bottom: true,\r\n left: false,\r\n },\r\n height: 200,\r\n width: 300,\r\n top: 0,\r\n left: 0,\r\n index: index,\r\n desktop_class: {\r\n ...frame.desktop_class,\r\n 'frame-blank': {\r\n ...frame.desktop_class['frame-blank'], // giữ lại tất cả thuộc tính của frame-blank\r\n 'background-color': this.getRandomColor(),\r\n width: '100%',\r\n height: '200px',\r\n 'min-height': '100%'\r\n },\r\n },\r\n mobile_portrait_class: {\r\n ...frame.mobile_portrait_class,\r\n 'frame-blank': {\r\n ...frame.mobile_portrait_class['frame-blank'],\r\n 'background-color': this.getRandomColor(),\r\n width: '100%',\r\n height: '200px',\r\n 'min-height': '100%'\r\n },\r\n },\r\n tablet_landscape_class: {\r\n ...frame.tablet_landscape_class,\r\n 'frame-blank': {\r\n ...frame.tablet_landscape_class['frame-blank'],\r\n 'background-color': this.getRandomColor(),\r\n width: '100%',\r\n height: '200px',\r\n 'min-height': '100%'\r\n },\r\n },\r\n tablet_portrait_class: {\r\n ...frame.tablet_portrait_class,\r\n 'frame-blank': {\r\n ...frame.tablet_portrait_class['frame-blank'],\r\n 'background-color': this.getRandomColor(),\r\n width: '100%',\r\n height: '200px',\r\n 'min-height': '100%'\r\n },\r\n },\r\n mobile_landscape_class: {\r\n ...frame.mobile_landscape_class,\r\n 'frame-blank': {\r\n ...frame.mobile_landscape_class['frame-blank'],\r\n 'background-color': this.getRandomColor(),\r\n width: '100%',\r\n height: '200px',\r\n 'min-height': '100%'\r\n },\r\n },\r\n };\r\n return this.vhQueryAutoWeb.addObject(dataFrame, add_code);\r\n }\r\n );\r\n Promise.all(promises).then((response: any) => {\r\n if (response) {\r\n object.objects = response;\r\n setTimeout(() => {\r\n resolve(object);\r\n }, 0);\r\n }\r\n });\r\n });\r\n } else if (object.type == 'popup-detail' || object.type == 'popup-interactive' || object.type == 'button-show-modal-detail') {\r\n const subName = {\r\n product: 'sản phẩm',\r\n food_drink: 'món ăn',\r\n service: 'dịch vụ',\r\n news: 'tin tức',\r\n website: 'dự án',\r\n recruitment: 'tuyển dụng',\r\n snimei: 'SN/IMEI'\r\n };\r\n\r\n this.jsonDataService\r\n .getBlock('popup_detail_product')\r\n .subscribe((block: any) => {\r\n const promises = Array.from(\r\n { length: 1 },\r\n (_, index) => {\r\n\r\n let blockName = `Khối hộp thoại nội dung chi tiết ${subName[main_sector]} (cửa số mới)`\r\n if (object.type == 'popup-interactive') {\r\n blockName = `Khối hộp thoại nội dung tương tác ${subName[main_sector]} (di chuột)`\r\n }\r\n\r\n if (object.type == 'button-show-modal-detail') {\r\n blockName = `Khối hộp thoại nội dung chi tiết ${subName[main_sector]} (nhấn chuột)`\r\n }\r\n\r\n const dataBlock = {\r\n ...block,\r\n type: `popup_detail_${main_sector}`,\r\n name: blockName,\r\n ['desktop_position_']: {\r\n ...block['desktop_position'],\r\n },\r\n ['mobile_portrait_position_']: {\r\n ...block['mobile_portrait_position'],\r\n },\r\n ['tablet_landscape_position_']: {\r\n ...block['tablet_landscape_position'],\r\n },\r\n ['tablet_portrait_position_']: {\r\n ...block['tablet_portrait_position'],\r\n },\r\n ['mobile_landscape_position_']: {\r\n ...block['mobile_landscape_position'],\r\n },\r\n };\r\n delete dataBlock.desktop_position\r\n delete dataBlock.tablet_portrait_position\r\n delete dataBlock.tablet_landscape_position\r\n delete dataBlock.mobile_portrait_position\r\n delete dataBlock.mobile_landscape_position\r\n return this.vhQueryAutoWeb.addBlock(dataBlock, add_code);\r\n }\r\n );\r\n Promise.all(promises).then((response: any) => {\r\n if (response) {\r\n object.staticdata.id_freeblock = response[0]._id;\r\n this.updateFrameByIdFrame(object._id, object);\r\n\r\n setTimeout(() => {\r\n resolve(object);\r\n }, 0);\r\n }\r\n });\r\n });\r\n } else if (['AtwPopup', 'AtwPopupOpenForm', \"AtwHover\", \"AtwButtonShowModal\", \"AtwButtonShowForm\", \"AtwButtonShowFormLogged\"].includes(object.component)) {\r\n let type_block = 'popup_hover'\r\n switch (object.component) {\r\n case 'AtwPopup':\r\n case 'AtwPopupOpenForm':\r\n type_block = 'popup_hover'\r\n break\r\n case \"AtwButtonShowFormLogged\":\r\n case 'AtwButtonShowForm':\r\n case 'AtwButtonShowModal':\r\n case 'AtwHover':\r\n type_block = 'hover_blank'\r\n break\r\n }\r\n this.jsonDataService\r\n .getBlock(type_block)\r\n .subscribe((block: any) => {\r\n const promises = Array.from(\r\n { length: 1 },\r\n (_, index) => {\r\n const dataBlock = {\r\n ...block,\r\n ['desktop_position_']: {\r\n ...block['desktop_position'],\r\n },\r\n ['mobile_portrait_position_']: {\r\n ...block['mobile_portrait_position'],\r\n },\r\n ['tablet_landscape_position_']: {\r\n ...block['tablet_landscape_position'],\r\n },\r\n ['tablet_portrait_position_']: {\r\n ...block['tablet_portrait_position'],\r\n },\r\n ['mobile_landscape_position_']: {\r\n ...block['mobile_landscape_position'],\r\n },\r\n };\r\n delete dataBlock.desktop_position\r\n delete dataBlock.tablet_portrait_position\r\n delete dataBlock.tablet_landscape_position\r\n delete dataBlock.mobile_portrait_position\r\n delete dataBlock.mobile_landscape_position\r\n\r\n return this.vhQueryAutoWeb.addBlock(dataBlock, add_code);\r\n }\r\n );\r\n Promise.all(promises).then((response: any) => {\r\n if (response) {\r\n object.staticdata.id_freeblock = response[0]._id;\r\n this.updateFrameByIdFrame(object._id, object);\r\n setTimeout(() => {\r\n resolve(object);\r\n }, 0);\r\n }\r\n });\r\n });\r\n } else {\r\n resolve(object);\r\n }\r\n } else {\r\n reject('error');\r\n }\r\n },\r\n (error) => {\r\n reject(error);\r\n console.log('error', error);\r\n }\r\n );\r\n }\r\n });\r\n }\r\n \r\n\r\n \r\n\r\n \r\n\r\n}\r\n","import { DatePipe } from '@angular/common';\r\n\r\nimport { Title, Meta } from '@angular/platform-browser';\r\nimport { NzNotificationService } from 'ng-zorro-antd/notification';\r\nimport { NzMessageService } from 'ng-zorro-antd/message';\r\nimport { Subject } from 'rxjs';\r\nimport { LoadingController } from '@ionic/angular';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { PLATFORM_ID, Inject, Injectable } from '@angular/core';\r\nimport { VhAlgorithm, VhEventMediator, VhImage, VhQueryAutoWeb } from 'vhautowebdb';\r\nimport { FormControl, Validators } from '@angular/forms';\r\nimport imgJson from './img.json';\r\nimport { LanguageService } from './language.service';\r\nimport { PagesService } from './design-web.service';\r\nimport imgRepeatJson from './image-repeat.json'\r\nimport imgProductJson from './image-product.json'\r\nimport imgCategoryJson from './image-category.json'\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FunctionService {\r\n uploadedFile: File | undefined;\r\n city: any;\r\n province: any;\r\n district: any;\r\n\r\n animationConfigChanged = new Subject<string>();\r\n /** Palette màu cho CKEDITOR */\r\n colorPalette = [\r\n { color: 'hsl(0, 100%, 95%)', label: ' ' }, { color: 'hsl(0, 100%, 90%)', label: ' ' }, { color: 'hsl(0, 100%, 85%)', label: ' ' }, { color: 'hsl(0, 100%, 80%)', label: ' ' }, { color: 'hsl(0, 100%, 75%)', label: ' ' }, { color: 'hsl(0, 100%, 70%)', label: ' ' }, { color: 'hsl(0, 100%, 65%)', label: ' ' }, { color: 'hsl(0, 100%, 60%)', label: ' ' }, { color: 'hsl(0, 100%, 55%)', label: ' ' }, { color: 'hsl(0, 100%, 50%)', label: ' ' }, { color: 'hsl(0, 100%, 45%)', label: ' ' }, { color: 'hsl(0, 100%, 40%)', label: ' ' }, { color: 'hsl(0, 100%, 35%)', label: ' ' }, { color: 'hsl(0, 100%, 30%)', label: ' ' }, { color: 'hsl(0, 100%, 25%)', label: ' ' }, { color: 'hsl(0, 100%, 20%)', label: ' ' }, { color: 'hsl(0, 100%, 15%)', label: ' ' }, { color: 'hsl(0, 100%, 10%)', label: ' ' }, { color: 'hsl(0, 100%, 5%)', label: ' ' }, { color: 'hsl(0, 100%, 2%)', label: ' ' }, { color: 'hsl(120, 100%, 95%)', label: ' ' }, { color: 'hsl(120, 100%, 90%)', label: ' ' }, { color: 'hsl(120, 100%, 85%)', label: ' ' }, { color: 'hsl(120, 100%, 80%)', label: ' ' }, { color: 'hsl(120, 100%, 75%)', label: ' ' }, { color: 'hsl(120, 100%, 70%)', label: ' ' }, { color: 'hsl(120, 100%, 65%)', label: ' ' }, { color: 'hsl(120, 100%, 60%)', label: ' ' }, { color: 'hsl(120, 100%, 55%)', label: ' ' }, { color: 'hsl(120, 100%, 50%)', label: ' ' }, { color: 'hsl(120, 100%, 45%)', label: ' ' }, { color: 'hsl(120, 100%, 40%)', label: ' ' }, { color: 'hsl(120, 100%, 35%)', label: ' ' }, { color: 'hsl(120, 100%, 30%)', label: ' ' }, { color: 'hsl(120, 100%, 25%)', label: ' ' }, { color: 'hsl(120, 100%, 20%)', label: ' ' }, { color: 'hsl(120, 100%, 15%)', label: ' ' }, { color: 'hsl(120, 100%, 10%)', label: ' ' }, { color: 'hsl(120, 100%, 5%)', label: ' ' }, { color: 'hsl(120, 100%, 2%)', label: ' ' }, { color: 'hsl(240, 100%, 95%)', label: ' ' }, { color: 'hsl(240, 100%, 90%)', label: ' ' }, { color: 'hsl(240, 100%, 85%)', label: ' ' }, { color: 'hsl(240, 100%, 80%)', label: ' ' }, { color: 'hsl(240, 100%, 75%)', label: ' ' }, { color: 'hsl(240, 100%, 70%)', label: ' ' }, { color: 'hsl(240, 100%, 65%)', label: ' ' }, { color: 'hsl(240, 100%, 60%)', label: ' ' }, { color: 'hsl(240, 100%, 55%)', label: ' ' }, { color: 'hsl(240, 100%, 50%)', label: ' ' }, { color: 'hsl(240, 100%, 45%)', label: ' ' }, { color: 'hsl(240, 100%, 40%)', label: ' ' }, { color: 'hsl(240, 100%, 35%)', label: ' ' }, { color: 'hsl(240, 100%, 30%)', label: ' ' }, { color: 'hsl(240, 100%, 25%)', label: ' ' }, { color: 'hsl(240, 100%, 20%)', label: ' ' }, { color: 'hsl(240, 100%, 15%)', label: ' ' }, { color: 'hsl(240, 100%, 10%)', label: ' ' }, { color: 'hsl(240, 100%, 5%)', label: ' ' }, { color: 'hsl(240, 100%, 2%)', label: ' ' }, { color: 'hsl(60, 100%, 95%)', label: ' ' }, { color: 'hsl(60, 100%, 90%)', label: ' ' }, { color: 'hsl(60, 100%, 85%)', label: ' ' }, { color: 'hsl(60, 100%, 80%)', label: ' ' }, { color: 'hsl(60, 100%, 75%)', label: ' ' }, { color: 'hsl(60, 100%, 70%)', label: ' ' }, { color: 'hsl(60, 100%, 65%)', label: ' ' }, { color: 'hsl(60, 100%, 60%)', label: ' ' }, { color: 'hsl(60, 100%, 55%)', label: ' ' }, { color: 'hsl(60, 100%, 50%)', label: ' ' }, { color: 'hsl(60, 100%, 45%)', label: ' ' }, { color: 'hsl(60, 100%, 40%)', label: ' ' }, { color: 'hsl(60, 100%, 35%)', label: ' ' }, { color: 'hsl(60, 100%, 30%)', label: ' ' }, { color: 'hsl(60, 100%, 25%)', label: ' ' }, { color: 'hsl(60, 100%, 20%)', label: ' ' }, { color: 'hsl(60, 100%, 15%)', label: ' ' }, { color: 'hsl(60, 100%, 10%)', label: ' ' }, { color: 'hsl(60, 100%, 5%)', label: ' ' }, { color: 'hsl(60, 100%, 2%)', label: ' ' }, { color: 'hsl(30, 100%, 95%)', label: ' ' }, { color: 'hsl(30, 100%, 90%)', label: ' ' }, { color: 'hsl(30, 100%, 85%)', label: ' ' }, { color: 'hsl(30, 100%, 80%)', label: ' ' }, { color: 'hsl(30, 100%, 75%)', label: ' ' }, { color: 'hsl(30, 100%, 70%)', label: ' ' }, { color: 'hsl(30, 100%, 65%)', label: ' ' }, { color: 'hsl(30, 100%, 60%)', label: ' ' }, { color: 'hsl(30, 100%, 55%)', label: ' ' }, { color: 'hsl(30, 100%, 50%)', label: ' ' }, { color: 'hsl(30, 100%, 45%)', label: ' ' }, { color: 'hsl(30, 100%, 40%)', label: ' ' }, { color: 'hsl(30, 100%, 35%)', label: ' ' }, { color: 'hsl(30, 100%, 30%)', label: ' ' }, { color: 'hsl(30, 100%, 25%)', label: ' ' }, { color: 'hsl(30, 100%, 20%)', label: ' ' }, { color: 'hsl(30, 100%, 15%)', label: ' ' }, { color: 'hsl(30, 100%, 10%)', label: ' ' }, { color: 'hsl(30, 100%, 5%)', label: ' ' }, { color: 'hsl(30, 100%, 2%)', label: ' ' }, { color: 'hsl(330, 100%, 95%)', label: ' ' }, { color: 'hsl(330, 100%, 90%)', label: ' ' }, { color: 'hsl(330, 100%, 85%)', label: ' ' }, { color: 'hsl(330, 100%, 80%)', label: ' ' }, { color: 'hsl(330, 100%, 75%)', label: ' ' }, { color: 'hsl(330, 100%, 70%)', label: ' ' }, { color: 'hsl(330, 100%, 65%)', label: ' ' }, { color: 'hsl(330, 100%, 60%)', label: ' ' }, { color: 'hsl(330, 100%, 55%)', label: ' ' }, { color: 'hsl(330, 100%, 50%)', label: ' ' }, { color: 'hsl(330, 100%, 45%)', label: ' ' }, { color: 'hsl(330, 100%, 40%)', label: ' ' }, { color: 'hsl(330, 100%, 35%)', label: ' ' }, { color: 'hsl(330, 100%, 30%)', label: ' ' }, { color: 'hsl(330, 100%, 25%)', label: ' ' }, { color: 'hsl(330, 100%, 20%)', label: ' ' }, { color: 'hsl(330, 100%, 15%)', label: ' ' }, { color: 'hsl(330, 100%, 10%)', label: ' ' }, { color: 'hsl(330, 100%, 5%)', label: ' ' }, { color: 'hsl(330, 100%, 2%)', label: ' ' }, { color: 'hsl(270, 100%, 95%)', label: ' ' }, { color: 'hsl(270, 100%, 90%)', label: ' ' }, { color: 'hsl(270, 100%, 85%)', label: ' ' }, { color: 'hsl(270, 100%, 80%)', label: ' ' }, { color: 'hsl(270, 100%, 75%)', label: ' ' }, { color: 'hsl(270, 100%, 70%)', label: ' ' }, { color: 'hsl(270, 100%, 65%)', label: ' ' }, { color: 'hsl(270, 100%, 60%)', label: ' ' }, { color: 'hsl(270, 100%, 55%)', label: ' ' }, { color: 'hsl(270, 100%, 50%)', label: ' ' }, { color: 'hsl(270, 100%, 45%)', label: ' ' }, { color: 'hsl(270, 100%, 40%)', label: ' ' }, { color: 'hsl(270, 100%, 35%)', label: ' ' }, { color: 'hsl(270, 100%, 30%)', label: ' ' }, { color: 'hsl(270, 100%, 25%)', label: ' ' }, { color: 'hsl(270, 100%, 20%)', label: ' ' }, { color: 'hsl(270, 100%, 15%)', label: ' ' }, { color: 'hsl(270, 100%, 10%)', label: ' ' }, { color: 'hsl(270, 100%, 5%)', label: ' ' }, { color: 'hsl(270, 100%, 2%)', label: ' ' }, { color: 'hsl(0, 0%, 0%)', label: ' ' }, { color: 'hsl(0, 0%, 10%)', label: ' ' }, { color: 'hsl(0, 0%, 20%)', label: ' ' }, { color: 'hsl(0, 0%, 30%)', label: ' ' }, { color: 'hsl(0, 0%, 40%)', label: ' ' }, { color: 'hsl(0, 0%, 50%)', label: ' ' }, { color: 'hsl(0, 0%, 60%)', label: ' ' }, { color: 'hsl(0, 0%, 70%)', label: ' ' }, { color: 'hsl(0, 0%, 80%)', label: ' ' }, { color: 'hsl(0, 0%, 90%)', label: ' ' }, { color: 'hsl(0, 0%, 95%)', label: ' ' }, { color: 'hsl(0, 0%, 92%)', label: ' ' }, { color: 'hsl(0, 0%, 85%)', label: ' ' }, { color: 'hsl(0, 0%, 78%)', label: ' ' }, { color: 'hsl(0, 0%, 71%)', label: ' ' }, { color: 'hsl(0, 0%, 64%)', label: ' ' }, { color: 'hsl(0, 0%, 57%)', label: ' ' }, { color: 'hsl(0, 0%, 50%)', label: ' ' }, { color: 'hsl(0, 0%, 43%)', label: ' ' }, { color: 'hsl(0, 0%, 36%)', label: ' ' }, { color: 'hsl(0, 0%, 100%)', label: ' ' }, { color: 'hsl(0, 0%, 95%)', label: ' ' }, { color: 'hsl(0, 0%, 90%)', label: ' ' }, { color: 'hsl(0, 0%, 85%)', label: ' ' }, { color: 'hsl(0, 0%, 80%)', label: ' ' }, { color: 'hsl(0, 0%, 75%)', label: ' ' }, { color: 'hsl(0, 0%, 70%)', label: ' ' }, { color: 'hsl(0, 0%, 65%)', label: ' ' }, { color: 'hsl(0, 0%, 60%)', label: ' ' }, { color: 'hsl(0, 0%, 55%)', label: ' ' }, { color: 'hsl(0, 0%, 50%)', label: ' ' }, { color: 'hsl(0, 0%, 45%)', label: ' ' }, { color: 'hsl(0, 0%, 40%)', label: ' ' }, { color: 'hsl(0, 0%, 35%)', label: ' ' }, { color: 'hsl(0, 0%, 30%)', label: ' ' }, { color: 'hsl(0, 0%, 25%)', label: ' ' }, { color: 'hsl(0, 0%, 20%)', label: ' ' }, { color: 'hsl(0, 0%, 15%)', label: ' ' }, { color: 'hsl(0, 0%, 10%)', label: ' ' }, { color: 'hsl(0, 0%, 5%)', label: ' ' }, { color: 'hsl(30, 100%, 95%)', label: ' ' }, { color: 'hsl(30, 100%, 90%)', label: ' ' }, { color: 'hsl(30, 100%, 85%)', label: ' ' }, { color: 'hsl(30, 100%, 80%)', label: ' ' }, { color: 'hsl(30, 100%, 75%)', label: ' ' }, { color: 'hsl(30, 100%, 70%)', label: ' ' }, { color: 'hsl(30, 100%, 65%)', label: ' ' }, { color: 'hsl(30, 100%, 60%)', label: ' ' }, { color: 'hsl(30, 100%, 55%)', label: ' ' }, { color: 'hsl(30, 100%, 50%)', label: ' ' }, { color: 'hsl(30, 100%, 45%)', label: ' ' }, { color: 'hsl(30, 100%, 40%)', label: ' ' }, { color: 'hsl(30, 100%, 35%)', label: ' ' }, { color: 'hsl(30, 100%, 30%)', label: ' ' }, { color: 'hsl(30, 100%, 25%)', label: ' ' }, { color: 'hsl(30, 100%, 20%)', label: ' ' }, { color: 'hsl(30, 100%, 15%)', label: ' ' }, { color: 'hsl(30, 100%, 10%)', label: ' ' }, { color: 'hsl(30, 100%, 5%)', label: ' ' }, { color: 'hsl(30, 100%, 2%)', label: ' ' }\r\n ];\r\n /** biến config ckeditor dùng trong file user để có thể apply mọi font-size và font-family */\r\n CKEDITORUserConfig: any = {\r\n fontSize: {\r\n options: [\r\n 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48,\r\n ],\r\n supportAllValues: true,\r\n },\r\n fontFamily: {\r\n supportAllValues: true\r\n },\r\n heading: {\r\n options: [\r\n { model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },\r\n { model: 'heading1', view: 'h1', title: 'Heading 1', class: 'ck-heading_heading1' },\r\n { model: 'heading2', view: 'h2', title: 'Heading 2', class: 'ck-heading_heading2' },\r\n { model: 'heading3', view: 'h3', title: 'Heading 3', class: 'ck-heading_heading3' },\r\n { model: 'heading4', view: 'h4', title: 'Heading 4', class: 'ck-heading_heading4' },\r\n { model: 'heading5', view: 'h5', title: 'Heading 5', class: 'ck-heading_heading5' },\r\n { model: 'heading6', view: 'h6', title: 'Heading 6', class: 'ck-heading_heading6' }\r\n ]\r\n }\r\n }\r\n /** biến config ckeditor trong quản lý admin */\r\n CKEDITORConfig: any = {\r\n toolbar: [\r\n 'heading',\r\n '|',\r\n 'alignment',\r\n '|',\r\n 'bold',\r\n 'italic',\r\n 'strikethrough',\r\n 'underline',\r\n 'subscript',\r\n 'superscript',\r\n '|',\r\n 'link',\r\n '|',\r\n 'bulletedList',\r\n 'numberedList',\r\n 'todoList',\r\n '-',\r\n 'fontfamily',\r\n 'fontsize',\r\n 'fontColor',\r\n 'fontBackgroundColor',\r\n '|',\r\n 'code',\r\n 'codeBlock',\r\n '|',\r\n 'insertTable',\r\n '|',\r\n 'outdent',\r\n 'indent',\r\n '|',\r\n 'blockQuote',\r\n '|',\r\n 'undo',\r\n 'redo',\r\n 'uploadImage',\r\n ],\r\n fontSize: {\r\n options: [...Array(94).keys()].map(i => i + 7), // tạo mảng từ 1 đến 100\r\n supportAllValues: true, // Enable support for custom inline font sizes\r\n },\r\n fontFamily: {\r\n options: [\r\n 'Amatic SC, cursive',\r\n 'Arial',\r\n 'Anton',\r\n 'Asap, serif',\r\n 'Baloo 2, sans-serif',\r\n 'Barlow',\r\n 'Be Vietnam Pro, sans-serif',\r\n 'Barlow Condensed, sans-serif',\r\n 'Bebas Neue, sans-serif',\r\n 'Bungee, sans-serif',\r\n 'Caveat, cursive',\r\n 'Charm',\r\n 'Comfortaa, serif',\r\n 'Comic Sans MS, Arial',\r\n 'Cursive',\r\n 'Dancing Script, cursive',\r\n 'Edu AU VIC WA NT Pre, serif',\r\n 'Exo 2, sans-serif',\r\n 'Fira Sans Extra Condensed',\r\n 'Georgia',\r\n 'Great Vibes, cursive',\r\n 'Google Sans, sans-serif',\r\n 'Inconsolata',\r\n 'Inter, serif',\r\n 'Josefin Sans, sans-serif',\r\n 'Kanit',\r\n 'Kaushan Script, cursive',\r\n 'Lato, sans-serif',\r\n 'Lavishly Yours, cursive',\r\n 'Libre Franklin, sans-serif',\r\n 'Lilita One, serif',\r\n 'Lobster, cursive',\r\n 'Lora',\r\n 'Merriweather',\r\n 'Mukta',\r\n 'Mulish',\r\n 'Montserrat',\r\n 'Noto Sans TC',\r\n 'Noto Serif',\r\n 'Open Sans, sans-serif',\r\n 'PT Sans, sans-serif',\r\n 'Pacifico, cursive',\r\n 'Playfair Display, serif',\r\n 'Poppins, sans-serif',\r\n 'Quicksand',\r\n 'Raleway',\r\n 'Roboto, sans-serif',\r\n 'Roboto Condensed, sans-serif',\r\n 'Rubik',\r\n 'serif',\r\n 'Shadows Into Light, cursive',\r\n 'Shrikhand, serif',\r\n 'Signika, sans-serif',\r\n 'Sora, serif',\r\n 'Sour Gummy, serif',\r\n 'Source Sans Pro, sans-serif',\r\n 'system-ui, -apple-system, BlinkMacSystemFont, sans-serif',\r\n 'Tajawal, serif',\r\n 'Times New Roman, Arial',\r\n 'Ubuntu',\r\n 'Urbanist, serif',\r\n 'Varela',\r\n ],\r\n supportAllValues: true\r\n },\r\n fontColor: {\r\n columns: 10,\r\n documentColors: 200,\r\n colors: this.colorPalette\r\n },\r\n fontBackgroundColor: {\r\n columns: 10,\r\n documentColors: 200,\r\n colors: this.colorPalette\r\n },\r\n heading: {\r\n options: [\r\n { model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },\r\n { model: 'heading1', view: 'h1', title: 'Heading 1', class: 'ck-heading_heading1' },\r\n { model: 'heading2', view: 'h2', title: 'Heading 2', class: 'ck-heading_heading2' },\r\n { model: 'heading3', view: 'h3', title: 'Heading 3', class: 'ck-heading_heading3' },\r\n { model: 'heading4', view: 'h4', title: 'Heading 4', class: 'ck-heading_heading4' },\r\n { model: 'heading5', view: 'h5', title: 'Heading 5', class: 'ck-heading_heading5' },\r\n { model: 'heading6', view: 'h6', title: 'Heading 6', class: 'ck-heading_heading6' }\r\n ]\r\n }\r\n };\r\n\r\n /** \r\n * mảng chứa danh sách object và block đã cập nhật dùng trong admin-config\r\n */\r\n objectsAndBlocksUpdated: any[] = [];\r\n\r\n\r\n // Danh sách thiết bị\r\n devices = [\r\n {\r\n value: 'desktop',\r\n label: 'may_tinh',\r\n width: 1366,\r\n height: 768,\r\n display: false,\r\n icon: 'desktop',\r\n },\r\n {\r\n value: 'tablet_landscape',\r\n label: 'may_tinh_bang_ngang',\r\n width: 1093, // Hoặc 1230\r\n height: 820,\r\n display: false,\r\n icon: 'tablet',\r\n },\r\n {\r\n value: 'tablet_portrait',\r\n label: 'may_tinh_bang_doc',\r\n width: 820,\r\n height: 1093, // Hoặc 1230\r\n display: false,\r\n icon: 'tablet',\r\n },\r\n {\r\n value: 'mobile_landscape',\r\n label: 'dien_thoai_ngang',\r\n width: 845,\r\n height: 390,\r\n display: false,\r\n icon: 'mobile',\r\n },\r\n {\r\n value: 'mobile_portrait',\r\n label: 'dien_thoai_doc',\r\n width: 390,\r\n height: 845,\r\n display: false,\r\n icon: 'mobile',\r\n },\r\n ];\r\n\r\n // Danh sách hướng của gradient (linear-gradient)\r\n gradientDirectionList = [\r\n {\r\n type: 'linear-gradient',\r\n direction: '',\r\n name: 'mac_dinh',\r\n deg: '180deg',\r\n },\r\n {\r\n type: 'linear-gradient',\r\n direction: 'to top,',\r\n name: 'tu_duoi_len_tren',\r\n deg: '0deg',\r\n },\r\n {\r\n type: 'linear-gradient',\r\n direction: 'to right,',\r\n name: 'Từ trái sang phải',\r\n deg: '90deg',\r\n },\r\n {\r\n type: 'linear-gradient',\r\n direction: 'to left,',\r\n name: 'Từ phải sang trái',\r\n deg: '270deg',\r\n },\r\n {\r\n type: 'linear-gradient',\r\n direction: 'to bottom right,',\r\n name: 'tu_trai_tren_sang_phai_duoi',\r\n deg: '135deg',\r\n },\r\n {\r\n type: 'linear-gradient',\r\n direction: 'to bottom left,',\r\n name: 'tu_phai_tren_sang_trai_duoi',\r\n deg: '225deg',\r\n },\r\n {\r\n type: 'linear-gradient',\r\n direction: 'to top right,',\r\n name: 'tu_trai_duoi_sang_phai_tren',\r\n deg: '45deg',\r\n },\r\n {\r\n type: 'linear-gradient',\r\n direction: 'to top left,',\r\n name: 'tu_phai_duoi_sang_trai_tren',\r\n deg: '315deg',\r\n },\r\n ];\r\n\r\n constructor(\r\n private datePipe: DatePipe,\r\n private titleService: Title,\r\n private metaTagService: Meta,\r\n private notification: NzNotificationService,\r\n private loadingCtrl: LoadingController,\r\n private message: NzMessageService,\r\n private translateService: TranslateService,\r\n private nzMessageService: NzMessageService,\r\n @Inject(PLATFORM_ID) private platformId: Object,\r\n private vhQueryAutoWeb: VhQueryAutoWeb,\r\n private vhImage: VhImage,\r\n private vhEventMediator: VhEventMediator,\r\n private languageService: LanguageService,\r\n\r\n private pagesService: PagesService,\r\n ) {\r\n this.selectedLanguageCode = this.vhQueryAutoWeb.localStorageGET('language_code')?.code || 'vn';\r\n console.log('functionService.selectedLanguageCode', this.selectedLanguageCode);\r\n this.multi_languages = this.vhQueryAutoWeb.localStorageGET('multi_languages')?.multi_languages || [];\r\n this.languageTempCode = this.selectedLanguageCode\r\n this.vhEventMediator.notifyOnConfigChanged({ status: 'update-language', code: this.selectedLanguageCode });\r\n this.endUserData = this.vhQueryAutoWeb.getlocalEndUser();\r\n }\r\n endUserData: any; // thông tin end user\r\n\r\n /**\r\n * show message\r\n * @param type : 'success', 'error', 'warning'\r\n * @param content\r\n * @param duration default 1500\r\n * @example\r\n * this.alertMessageDesktop.(\"success\",HELLO WORLD )\r\n */\r\n alertMessageDesktop(type, content, duration?) {\r\n this.message.create(type, this.languageService.translate(content), duration);\r\n }\r\n formatDate(date) {\r\n return this.datePipe.transform(date, 'dd/MM/yyyy');\r\n }\r\n /**\r\n * Active Loading\r\n * @param message\r\n * @param cssClass\r\n * @param spinner\r\n * @param duration\r\n * @param showBackdrop\r\n * @example\r\n * this.vhComponent.showLoading(\"\", \"transparent-loading\", null, 0, false).then(() => action())\r\n */\r\n private loading: any;\r\n public showLoading(\r\n message: string,\r\n cssClass?: 'current-loading' | 'transparent-loading',\r\n spinner?:\r\n | 'bubbles'\r\n | 'circles'\r\n | 'circular'\r\n | 'crescent'\r\n | 'dots'\r\n | 'lines'\r\n | 'lines-small',\r\n duration: number = 0,\r\n showBackdrop: boolean = true,\r\n hideLoading?: number,\r\n mode?: 'ios' | 'md'\r\n ) {\r\n return new Promise((resolve) => {\r\n this.loading = setTimeout(\r\n () => this.loadingCtrl.dismiss(),\r\n hideLoading || 30000\r\n );\r\n const option: any = { message, showBackdrop, duration };\r\n\r\n if (spinner) option['spinner'] = spinner;\r\n option['cssClass'] = cssClass ? cssClass : 'current-loading';\r\n if (mode) option['mode'] = mode;\r\n else option['mode'] = 'ios';\r\n this.loadingCtrl.create(option).then((loading) => {\r\n loading.present().then(() => resolve('Loading'));\r\n });\r\n });\r\n }\r\n public showLoadingNotDuration(\r\n message: string,\r\n cssClass?: 'current-loading' | 'transparent-loading',\r\n spinner?:\r\n | 'bubbles'\r\n | 'circles'\r\n | 'circular'\r\n | 'crescent'\r\n | 'dots'\r\n | 'lines'\r\n | 'lines-small',\r\n duration: number = 100000000,\r\n showBackdrop: boolean = true,\r\n\r\n mode?: 'ios' | 'md'\r\n ) {\r\n return new Promise((resolve) => {\r\n // this.loading = setTimeout(\r\n // () => this.loadingCtrl.dismiss(),\r\n // hideLoading\r\n // );\r\n const option: any = { message, showBackdrop, duration };\r\n\r\n if (spinner) option['spinner'] = spinner;\r\n option['cssClass'] = cssClass ? cssClass : 'current-loading';\r\n if (mode) option['mode'] = mode;\r\n else option['mode'] = 'ios';\r\n this.loadingCtrl.create(option).then((loading) => {\r\n loading.present().then(() => resolve('Loading'));\r\n });\r\n });\r\n }\r\n /**\r\n * Dismiss Loading\r\n * @param latency\r\n * @param data\r\n * @example\r\n * this.functionUIService.hideLoading(200)\r\n */\r\n public hideLoading(latency: number = 0, value: any = {}) {\r\n return new Promise((resolve, rejects) => {\r\n clearTimeout(this.loading);\r\n setTimeout(\r\n () =>\r\n this.loadingCtrl\r\n .dismiss(value)\r\n .then((res) => resolve(res))\r\n .catch((error) => {\r\n if (!this.loading) return;\r\n\r\n console.log(error);\r\n }),\r\n latency\r\n );\r\n }).catch(err => {\r\n console.log(err);\r\n });\r\n }\r\n\r\n\r\n /**\r\n * SEO\r\n * @param title\r\n * @param description\r\n * @param keywords\r\n */\r\n\r\n setSEO(title, description, keywords) {\r\n this.titleService.setTitle(title);\r\n this.metaTagService.addTags([\r\n { name: 'description', content: description },\r\n { name: 'keywords', content: keywords },\r\n { name: 'robots', content: 'index, follow' },\r\n { name: 'revisit - after', content: '1 days' },\r\n { name: 'content - language', content: 'vi' },\r\n { name: 'viewport', content: 'width=device-width, initial-scale=1' },\r\n { name: 'google', content: 'nositelinkssearchbox' },\r\n { charset: 'text/html; charset=utf-8' },\r\n ]);\r\n }\r\n\r\n initSEOFavicon(title, favIcon_img?, logo?, description?) {\r\n if (isPlatformBrowser(this.platformId)) {\r\n let favIcon: HTMLLinkElement = document.querySelector('#appIcon');\r\n favIcon.href = favIcon_img;\r\n if (title != '') this.titleService.setTitle(title);\r\n this.metaTagService.addTags([\r\n { property: 'og:image', itemprop: 'thumbnailUrl', content: logo },\r\n { name: 'robots', content: 'index, follow' },\r\n { name: 'revisit - after', content: '1 days' },\r\n { name: 'content - language', content: 'vi' },\r\n { name: 'description', content: description },\r\n { name: 'viewport', content: 'width=device-width, initial-scale=1' },\r\n { name: 'google', content: 'nositelinkssearchbox' },\r\n { charset: 'text/html; charset=utf-8' },\r\n ]);\r\n }\r\n }\r\n setFavicon(favIcon_img) {\r\n if (isPlatformBrowser(this.platformId)) {\r\n let favIcon: HTMLLinkElement = document.querySelector('#appIcon');\r\n favIcon.href = favIcon_img;\r\n this.metaTagService.addTags([\r\n { property: 'og:image', itemprop: 'thumbnailUrl', content: favIcon_img },\r\n ]);\r\n }\r\n }\r\n\r\n createNotification(\r\n type: string,\r\n title?: string,\r\n duration: number = 2000\r\n ): void {\r\n this.notification.create(type, title, '', {\r\n nzStyle: {\r\n top: '100px',\r\n fontWeight: 'bold',\r\n },\r\n nzCloseIcon: '',\r\n nzDuration: duration,\r\n });\r\n }\r\n /**\r\n * createNotification\r\n * @param type: 'success' || 'error' || 'warning' || 'info'\r\n * @param content: \"Có lỗi xảy ra, vui lòng thử lại\"\r\n * @example\r\n * this.createMessage('error', \"Có lỗi xảy ra, vui lòng thử lại\" , 1200);\r\n */\r\n createMessage(type: 'success' | 'error' | 'warning' | 'info', content: string, duration: number = 2000): void {\r\n // this.message.create(type, content, {\r\n // nzDuration: duration,\r\n // });\r\n\r\n this.translateService.get(content).subscribe((translatedMessage: string) => {\r\n this.nzMessageService.create(type, translatedMessage, { nzDuration: duration });\r\n });\r\n }\r\n\r\n nonAccentVietnamese(str) {\r\n if (!str) return '';\r\n str = str.toLowerCase();\r\n str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, 'a');\r\n str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, 'e');\r\n str = str.replace(/ì|í|ị|ỉ|ĩ/g, 'i');\r\n str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, 'o');\r\n str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, 'u');\r\n str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, 'y');\r\n str = str.replace(/đ/g, 'd');\r\n str = str.replace(/\\u0300|\\u0301|\\u0303|\\u0309|\\u0323/g, ''); // Huyền sắc hỏi ngã nặng\r\n str = str.replace(/\\u02C6|\\u0306|\\u031B/g, ''); // Â, Ê, Ă, Ơ, Ư\r\n str = str.replace(/,|\\+|\\//g, ''); // Remove commas, plus signs, and slashes\r\n return str.split(' ').join('-');\r\n }\r\n\r\n setUploadedFileURL(file) {\r\n this.uploadedFile = file;\r\n }\r\n\r\n getUploadedFileURL() {\r\n return this.uploadedFile;\r\n }\r\n\r\n /**\r\n * unsubscribe biến subscription và disconnect biến observer.\r\n *\r\n * @param _this đối tượng hiện tại\r\n */\r\n destroyAnimationVisible(_this) {\r\n if (_this.subscription) {\r\n _this.subscription.unsubscribe();\r\n _this.subscription = null;\r\n }\r\n if (_this.observer) {\r\n _this.observer.disconnect();\r\n _this.observer = undefined;\r\n }\r\n }\r\n\r\n /**\r\n * subscribe thay đổi của biến animationConfigChanged.\r\n * \r\n * - Cần thêm biến `observer: IntersectionObserver; // biến observer để theo dõi vị trí của element`\r\n * - Cần thêm biến `subscription: Subscription; // biến subscription để nghe biến animationConfigChanged`\r\n * - Nên đặt ở ngOnInit\r\n *\r\n * @param _this đối tượng hiện tại\r\n * @param setAnimationVisible hàm gọi setAnimationVisible()\r\n * @example\r\n * this.functionService.initAnimationVisible(this, () => { \r\n * this.functionService.setAnimationVisible(\r\n * this, \r\n * this.class[this.isItemVisible ? 'frame-products__products--item' : 'frame-products'], \r\n * `animation-${this.isItemVisible ? 1 : 0}`, \r\n * {\r\n * isRunOnce: this.config['animation-selected']?.run_once_animation_visible,\r\n * animationNumber: this.isItemVisible ? 1 : 0\r\n * }\r\n * ); \r\n * });\r\n */\r\n initAnimationVisible(_this, setAnimationVisible) {\r\n setAnimationVisible();\r\n\r\n if (_this.type != 'page') return;\r\n\r\n _this.subscription = _this.functionService.animationConfigChanged.subscribe((id: string) => {\r\n if (id == _this.data._id) {\r\n const animationType = _this.staticdata[_this.device + '_animation_type'];\r\n if (animationType == 'visible' && !_this.observer) {\r\n setAnimationVisible();\r\n }\r\n else if (_this.observer) {\r\n _this.observer.disconnect();\r\n _this.observer = undefined;\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * **Set hiệu ứng xuất hiện (visible)**\r\n *\r\n * *Lưu ý: có thể gọi ở ngOnInit và sau khi đã set this.staticdata (1 số frame/block/object có thể sẽ gọi sau khi load dữ liệu xong)*\r\n * - Các biến cần thêm\r\n * ```js\r\n * observer: IntersectionObserver; // biến observer để theo dõi vị trí của element\r\n * subscription: Subscription; // biến subscription để nghe biến animationConfigChanged\r\n * isItemVisible: boolean; // biến kiểm tra hiệu ứng khung có phải là hiệu ứng của ô hay không (Chỉ cho một số khung có ô con - Chỉ dùng cho hiệu ứng xuất hiện)\r\n * ```\r\n * - Thêm vào `constructor`:\r\n * ```js\r\n * constructor(\r\n * private element: ElementRef, // Dùng cho hàm setAnimationVisible trong functionService\r\n * private functionService: FunctionService,\r\n * ) { }\r\n * ```\r\n * - **Nên đặt ở ngOnInit** nếu không được thì **đặt sau khi load dữ liệu xong**\r\n *\r\n * @param _this đối tượng hiện tại\r\n * @param targetObject object class sẽ set các thuộc tính\r\n * @param animationConfig tên bộ animation (VD: 'animation-0') (bộ này cùng cấp với id) chứa thuộc tính ['--0-animation-delay'], ['--0-animation'],... hoặc cùng cấp với `targetObject`\r\n * @param isRunOnce :boolean chỉ cho chạy một lần là khi load trang\r\n * @param animationNumber : Nên cùng cấp với `targetObject`\r\n * @example\r\n * this.functionService.initAnimationVisible(this, () => { \r\n * this.functionService.setAnimationVisible(\r\n * this, \r\n * this.class[this.isItemVisible ? 'frame-products__products--item' : 'frame-products'], \r\n * `animation-${this.isItemVisible ? 1 : 0}`, \r\n * {\r\n * isRunOnce: this.config['animation-selected']?.id == '000075',\r\n * animationNumber: this.isItemVisible ? 1 : 0\r\n * }\r\n * ); \r\n * });\r\n */\r\n setAnimationVisible(_this, targetObject, animationConfig, options: { animationNumber?: number; isRunOnce?: boolean } = {}) {\r\n if (!_this.data || !_this.staticdata) {\r\n return;\r\n }\r\n const {\r\n animationNumber = 0,\r\n isRunOnce = false\r\n } = options;\r\n\r\n // Trường hợp không có run_once_animation_visible thì mặc định là true\r\n _this.config['animation-selected'].run_once_animation_visible ??= true;\r\n\r\n const animationType = _this.staticdata[_this.device + '_animation_type'];\r\n // Kiểm tra xem element đã render nếu render rồi thì thêm hiệu ứng animation khi xuất hiện\r\n if (animationType == 'visible') {\r\n targetObject['opacity'] = '0';\r\n targetObject['visibility'] = 'hidden';\r\n\r\n const isComponentHasItem = ['AtwFrameProducts', 'AtwFrameRepeat', 'AtwFrameProductByCategory', 'AtwFrameProductByCategoryViewMore', 'AtwFrameProductRelate', 'AtwFrameProductsViewed', 'AtwFrameProductsFavorited', 'AtwFrameFoods', 'AtwFrameFoodsByCategory', 'AtwFrameFoodByCategoryViewMore', 'AtwFrameFoodsRelate', 'AtwFrameNews', 'AtwFrameNewsCategory', 'AtwFrameNewsByCategoryViewMore', 'AtwFrameNewsRelate', 'AtwFrameWebsite', 'AtwFrameWebsiteByCategory', 'AtwFrameWebsiteByCategoryViewMore', 'AtwFrameApp', 'AtwFrameAppByCategory', 'AtwFrameAppByCategoryViewMore', 'AtwFrameServices', 'AtwFrameServicesCategory', 'AtwFrameServiceByCategoryViewMore', 'AtwFrameServiceRelate', 'AtwFrameRecruiment', 'AtwFrameHotel', 'AtwFrameHotelByCategory', 'AtwFrameHotelByCategoryViewMore', 'AtwFrameHotelRelate', 'AtwFrameRoom', 'AtwFrameRoomByCategory', 'AtwFrameRoomByCategoryViewMore', 'AtwFrameRoomRelate'].includes(_this.data.component);\r\n\r\n _this.observer = new IntersectionObserver((entries, observerInstance) => {\r\n entries.forEach((entry) => {\r\n // Kiểm tra nếu entry trong vùng có thể nhìn thấy (trong viewport)\r\n if (entry.isIntersecting) {\r\n if (isPlatformBrowser(this.platformId)) {\r\n const ele = _this.element.nativeElement;\r\n if (!ele) {\r\n console.error('Element not found for animation visible.', _this.data || {});\r\n return;\r\n }\r\n\r\n const objectElements = ele.querySelectorAll(`[id=\"${_this.data._id}\"]`);\r\n // const objectElements = document.querySelectorAll<HTMLElement>(`[id=\"${_this.data._id}\"]`);\r\n\r\n // dùng settimeout tương đương delay cho lần animation đầu tiên (đã set ẩn khi mới xuất hiện lần đầu ở ngOnInit)\r\n const animationData = _this.staticdata[_this.device + '_animation']['animation-' + animationNumber];\r\n const delay = animationData[`--${animationNumber}-animation-delay`] || '0s';\r\n if (objectElements.length > 0) {\r\n // reset animation\r\n if (objectElements.length == 1) {\r\n if (isComponentHasItem && _this.isItemVisible) {\r\n setTimeout(async () => {\r\n const objectItemElements = ele.querySelectorAll(`.animation-${animationNumber}[id^=\"cell_frame_${_this.data._id}_\"]`) as NodeListOf<HTMLElement>;\r\n // const objectItemElements = document.querySelectorAll<HTMLElement>(`.animation-${animationNumber}[id^=\"cell_frame_${_this.data._id}_\"]`);\r\n\r\n for (let [index, eItem] of Array.from(objectItemElements).entries()) {\r\n eItem.style.opacity = '0';\r\n eItem.style.visibility = 'hidden';\r\n\r\n // Chờ delayItem giây trước khi chạy\r\n await new Promise((resolve) => setTimeout(resolve, parseFloat(animationData[`--${animationNumber}-animation-delay-shared`] || '0s') * 1000));\r\n\r\n eItem.style.opacity = '1';\r\n eItem.style.visibility = 'visible';\r\n\r\n eItem.style.animation = 'none';\r\n const offsetHeight = eItem.offsetHeight;\r\n (window as any).offsetHeight = offsetHeight; // Lưu tạm để build không bị mất\r\n eItem.style.animation = animationData[`--${animationNumber}-animation`];\r\n\r\n // Sau khi animation xong, dừng observer cho phần tử này\r\n if (isRunOnce || _this.config['animation-selected']?.run_once_animation_visible) {\r\n observerInstance.unobserve(entry.target);\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n objectElements.forEach(async e => {\r\n setTimeout(() => {\r\n targetObject['opacity'] = '1';\r\n targetObject['visibility'] = 'visible';\r\n e.style.animation = 'none';\r\n const offsetHeight = e.offsetHeight;\r\n (window as any).offsetHeight = offsetHeight; // Lưu tạm để build không bị mất\r\n e.style.animation = animationData[`--${animationNumber}-animation`];\r\n\r\n // Sau khi animation xong, dừng observer cho phần tử này\r\n if (isRunOnce || _this.config['animation-selected']?.run_once_animation_visible) {\r\n observerInstance.unobserve(entry.target);\r\n }\r\n }, parseFloat(delay) * 1000);\r\n });\r\n }\r\n } else {\r\n setTimeout(() => {\r\n targetObject['opacity'] = '1';\r\n targetObject['visibility'] = 'visible';\r\n const element = entry.target.querySelector<HTMLElement>(`[id=\"${_this.data._id}\"]`);\r\n element.style.animation = 'none';\r\n const offsetHeight = element.offsetHeight;\r\n (window as any).offsetHeight = offsetHeight; // Lưu tạm để build không bị mất\r\n element.style.animation = animationData[`--${animationNumber}-animation`];\r\n\r\n // Sau khi animation xong, dừng observer cho phần tử này\r\n if (isRunOnce || _this.config['animation-selected']?.run_once_animation_visible) {\r\n observerInstance.unobserve(entry.target);\r\n }\r\n }, parseFloat(delay) * 1000);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n targetObject['opacity'] = '0';\r\n targetObject['visibility'] = 'hidden';\r\n }\r\n });\r\n });\r\n\r\n // observing phần tử objectElement\r\n if (_this.element?.nativeElement) _this.observer.observe(_this.element.nativeElement);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n setCity(item) {\r\n this.city = item;\r\n }\r\n getCity() {\r\n return this.city;\r\n }\r\n\r\n setProvince(item) {\r\n this.province = item;\r\n }\r\n\r\n getProvince() {\r\n return this.province;\r\n }\r\n\r\n setDistrict(item) {\r\n this.district = item\r\n }\r\n\r\n getDistrict() {\r\n return this.district;\r\n }\r\n\r\n /**\r\n * \r\n * hàm này để tính toán lại width height của frame khi thêm vào block để hiển thị đúng với kích thước của block\r\n * ví dụ block 1000px thì frame sẽ là 0.8 * 1000 = 800px là 80% kích thước của block sẽ đẹp hơn\r\n * \r\n * @param dimension trường cần tính toán width hoặc height\r\n * @param scale tỉ lệ sau khi thay đổi kích thước \r\n * @param device thiết bị cần tính toán\r\n * @returns \r\n */\r\n calculateDimension(dimension: 'height' | 'width', scale: number, device: string, blockChoosing: any, objectChoosing: any) {\r\n const itemParent = blockChoosing || objectChoosing;\r\n if (itemParent && itemParent[`${device}_config`]?.dimension?.[dimension]) {\r\n return Number((itemParent[`${device}_config`].dimension[dimension] * scale).toFixed());\r\n }\r\n return 100;\r\n }\r\n\r\n /**\r\n * \r\n * hàm này để tính toán lại width height của frame khi thêm vào block để hiển thị đúng với kích thước của block\r\n * ví dụ block 1000px thì frame sẽ là 0.8 * 1000 = 800px là 80% kích thước của block sẽ đẹp hơn\r\n * \r\n * @param dimension trường cần tính toán width hoặc height\r\n * @param scale tỉ lệ sau khi thay đổi kích thước \r\n * @param device thiết bị cần tính toán\r\n * @returns \r\n */\r\n calculateWidthHeightByDimension(dimension: 'height' | 'width', scale: number, device: string, blockChoosing: any, objectChoosing: any) {\r\n const itemParent = blockChoosing || objectChoosing;\r\n if (itemParent && itemParent[`${device}_config`]?.dimension?.[dimension]) {\r\n return `${(itemParent[`${device}_config`].dimension[dimension] * scale).toFixed()}px`;\r\n }\r\n return '100px';\r\n }\r\n\r\n /**\r\n * Hàm này để lấy màu ngẫu nhiên\r\n * ví dụ: #FFFFFF\r\n */\r\n getRandomColor(): string {\r\n const letters: string = '0123456789ABCDEF';\r\n let color: string = '#';\r\n for (let i: number = 0; i < 6; i++) {\r\n color += letters[Math.floor(Math.random() * 16)];\r\n }\r\n return color;\r\n }\r\n\r\n\r\n handleNextPrevFrame(_this, direction: 'next' | 'prev', classTransition: string): void {\r\n\r\n if (_this.isSliding || _this.type == 'page' || _this.type == 'admin' || !_this.type || !_this.products2D?.length || _this.listProducts.length < _this.rowNumber * _this.colNumber) return;\r\n // trường hợp frame thì xem _this.currentIndex = số group của products2D\r\n _this.isSliding = true;\r\n const lastItems = _this.products2D[_this.groupNumber - 1]?.length\r\n if (!lastItems) return;\r\n const widthCol = _this.widthOfFrame / _this.colNumber\r\n const lastCells = lastItems < _this.colNumber ? lastItems : _this.colNumber;\r\n clearInterval(_this.setinterval);\r\n switch (direction) {\r\n case 'next':\r\n if (_this.currentIndex < _this.groupNumber) {\r\n _this.currentIndex++;\r\n _this.translateX = _this.oldTranslateX -= _this.currentIndex == _this.groupNumber ? widthCol * lastCells : _this.widthOfFrame;\r\n _this.isSliding = false;\r\n _this.isLastLeft = false;\r\n if (_this.currentIndex == _this.groupNumber && !_this.isLoop) {\r\n _this.isLastRight = true;\r\n }\r\n this.autoPlay(_this, classTransition)\r\n } else {\r\n if (!_this.isLoop) {\r\n _this.isSliding = false;\r\n return;\r\n }\r\n switch (_this.loop_method) {\r\n case 'back_to_start': // back_to_start thì trượt về đầu\r\n _this.currentIndex = 1;\r\n _this.translateX = _this.oldTranslateX = 0;\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n break;\r\n case 'infinity': // infinity thì trượt tiếp\r\n _this.currentIndex++;\r\n if (_this.currentIndex == _this.groupNumber + 1) {\r\n _this.translateX = _this.oldTranslateX -= _this.widthOfFrame + ((_this.colNumber - lastCells) * widthCol)\r\n _this.isSliding = false;\r\n } else {\r\n _this.class[classTransition]['transition'] = 'none';\r\n _this.translateX = _this.oldTranslateX = 0;\r\n _this.currentIndex = 2;\r\n setTimeout(() => {\r\n _this.class[classTransition]['transition'] = _this.transition || '0.4s';\r\n _this.translateX = _this.oldTranslateX -= _this.currentIndex == _this.groupNumber ? widthCol * lastCells : _this.widthOfFrame\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n }, 0);\r\n }\r\n break;\r\n }\r\n }\r\n break;\r\n case 'prev':\r\n if (_this.currentIndex > 1) {\r\n _this.currentIndex--;\r\n if (_this.currentIndex == _this.groupNumber - 1) {\r\n _this.translateX = _this.oldTranslateX += widthCol * lastCells\r\n } else if (_this.currentIndex == _this.groupNumber) {\r\n _this.translateX = _this.oldTranslateX += _this.widthOfFrame + ((_this.colNumber - lastCells) * widthCol)\r\n } else {\r\n _this.translateX = _this.oldTranslateX += _this.widthOfFrame\r\n }\r\n\r\n if (_this.currentIndex == 1 && !_this.isLoop) {\r\n _this.isLastLeft = true;\r\n }\r\n\r\n _this.isLastRight = false;\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n } else {\r\n if (!_this.isLoop) {\r\n _this.isSliding = false;\r\n return;\r\n }\r\n switch (_this.loop_method) {\r\n case 'back_to_start': {\r\n _this.currentIndex = _this.groupNumber;\r\n _this.translateX = _this.oldTranslateX -= ((_this.groupNumber - 2) * _this.widthOfFrame) + (lastCells * widthCol)\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n break;\r\n }\r\n case 'infinity': {\r\n _this.currentIndex = _this.groupNumber;\r\n _this.class[classTransition]['transition'] = 'none';\r\n _this.translateX = _this.oldTranslateX -= _this.groupNumber * _this.widthOfFrame\r\n setTimeout(() => {\r\n _this.class[classTransition]['transition'] = _this.transition || '0.4s';\r\n _this.translateX = _this.oldTranslateX += _this.widthOfFrame + ((_this.colNumber - lastCells) * widthCol)\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n }, 0);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n break;\r\n }\r\n\r\n }\r\n\r\n handleNextPrevCol(_this, direction: \"next\" | \"prev\", classTransition: string): void {\r\n if (_this.isSliding || _this.type == 'page' || _this.type == 'admin' || !_this.type || !_this.products2D?.length || _this.listProducts.length < _this.rowNumber * _this.colNumber) return;\r\n _this.isSliding = true; // biến này để tránh người dùng click quá nhanh\r\n let colLastGroup = _this.products2D[_this.groupNumber - 1].length < _this.colNumber ? _this.products2D[_this.groupNumber - 1].length : _this.colNumber;\r\n if (isPlatformBrowser(this.platformId)) {\r\n const element: any = document.querySelector(`[id=\"cell_frame_${_this.data._id}_0\"]`);\r\n const widthCol = element.offsetWidth + Number(_this.class[classTransition]['gap'].replace('px', ''));\r\n const lastItems = _this.products2D[_this.groupNumber - 1].length;\r\n const lastCells = lastItems < _this.colNumber ? lastItems : _this.colNumber;\r\n let addClick = _this.loop_method == 'infinity' ? lastCells < _this.colNumber ? 1 : _this.colNumber : 0;\r\n let maxClickCount = (((_this.groupNumber - 2) * _this.colNumber) + colLastGroup) + 1 + addClick\r\n clearInterval(_this.setinterval);\r\n switch (direction) {\r\n case 'next': {\r\n if (_this.currentIndex < maxClickCount) {\r\n _this.currentIndex++;\r\n if (_this.currentIndex == maxClickCount && addClick == 1) {\r\n _this.translateX = _this.oldTranslateX -= _this.widthOfFrame + ((_this.colNumber - lastCells) * widthCol)\r\n } else _this.translateX = _this.oldTranslateX -= widthCol;\r\n\r\n if (_this.currentIndex == maxClickCount - addClick && !_this.isLoop) {\r\n _this.isLastRight = true;\r\n }\r\n _this.isLastLeft = false;\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n } else {\r\n if (!_this.isLoop) return; // nếu không cho loop thì dừng lại\r\n switch (_this.loop_method) {\r\n case 'back_to_start': // back_to_start thì trượt về đầu\r\n _this.currentIndex = 1;\r\n _this.translateX = _this.oldTranslateX = 0;\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n break;\r\n case 'infinity': // infinity thì trượt tiếp\r\n _this.currentIndex++;\r\n if (_this.currentIndex == maxClickCount + 1) {\r\n _this.class[classTransition]['transition'] = 'none';\r\n _this.translateX = _this.oldTranslateX = 0;\r\n _this.currentIndex = 2;\r\n setTimeout(() => {\r\n _this.class[classTransition]['transition'] = _this.transition || '0.4s';\r\n _this.translateX = _this.oldTranslateX -= widthCol;\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n }, 0);\r\n }\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n\r\n case 'prev':\r\n if (_this.currentIndex > 1) {\r\n _this.currentIndex--;\r\n _this.translateX = _this.oldTranslateX +=\r\n (_this.currentIndex == maxClickCount - 1 && lastCells != _this.colNumber && _this.loop_method == 'infinity')\r\n ?\r\n _this.widthOfFrame + ((_this.colNumber - lastCells) * widthCol)\r\n :\r\n widthCol;\r\n\r\n if (_this.currentIndex == 1 && !_this.isLoop) {\r\n _this.isLastLeft = true;\r\n }\r\n _this.isLastRight = false;\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n } else {\r\n if (!_this.isLoop) return; // nếu không cho loop thì dừng lại\r\n switch (_this.loop_method) {\r\n case 'back_to_start': {\r\n _this.currentIndex = maxClickCount;\r\n _this.translateX = _this.oldTranslateX -= (maxClickCount - 1) * widthCol\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n break;\r\n }\r\n case 'infinity': {\r\n _this.currentIndex = maxClickCount - 1;\r\n _this.class[classTransition]['transition'] = 'none';\r\n _this.translateX = _this.oldTranslateX -= _this.groupNumber * _this.widthOfFrame\r\n setTimeout(() => {\r\n _this.class[classTransition]['transition'] = _this.transition || '0.4s';\r\n _this.translateX = _this.oldTranslateX += (_this.currentIndex == maxClickCount - 1 && lastCells != _this.colNumber) ? _this.widthOfFrame + ((_this.colNumber - lastCells) * widthCol) : widthCol;\r\n _this.isSliding = false;\r\n this.autoPlay(_this, classTransition)\r\n }, 0);\r\n break;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n onMouseDonw(_this, event, type: 'mouse' | 'touch', classTransition: string) {\r\n const { is_swipe } = _this.config[classTransition];\r\n if (_this.type == 'page' || _this.type == 'admin' || !_this.type || !is_swipe) return;\r\n _this.initialMouseX = type == 'mouse' ? event.clientX : event.touches[0].clientX;\r\n _this.onMouseDown = true;\r\n\r\n _this.class[classTransition]['transition'] = '0s';\r\n }\r\n\r\n onMouseMove(_this, event, type: 'mouse' | 'touch') {\r\n if (_this.type == 'page' || _this.type == 'admin' || !_this.type) return;\r\n if (_this.onMouseDown) {\r\n const movementX = type == 'mouse' ? event.movementX : event.touches[0].clientX - _this.currentMouseX;\r\n if (type == 'touch') {\r\n _this.currentMouseX = event.touches[0].clientX;\r\n }\r\n if (_this.isLastLeft && movementX > 0 || _this.isLastRight && movementX < 0 || _this.isSliding) {\r\n return;\r\n }\r\n _this.translateX += movementX;\r\n _this.isSwiping = true;\r\n }\r\n }\r\n\r\n onMouseUp(_this, event, type: 'mouse' | 'touch', classTransition: string) {\r\n const { is_swipe } = _this.config[classTransition];\r\n if (_this.type == 'page' || _this.type == 'admin' || !_this.type || !is_swipe || !_this.onMouseDown) return;\r\n const finalMouseX = type == 'mouse' ? event.clientX : event.changedTouches[0].clientX;\r\n const deltaX = finalMouseX - _this.initialMouseX\r\n if (deltaX > 0 && !_this.isLastLeft) {\r\n _this.handlePrev();\r\n } else if (deltaX < 0 && !_this.isLastRight) {\r\n _this.handleNext();\r\n }\r\n _this.class[classTransition]['transition'] = _this.transition || '0.4s';\r\n _this.onMouseDown = false;\r\n _this.isSwiping = false;\r\n }\r\n\r\n onMouseLeave(_this, event) {\r\n if (_this.type == 'page' || _this.type == 'admin' || !_this.type) return;\r\n if (_this.onMouseDown) {\r\n _this.onMouseUp(event, 'mouse');\r\n }\r\n }\r\n\r\n\r\n convertToMilisecond(time: string): number {\r\n // Check if time is undefined\r\n if (time === undefined) {\r\n throw new Error('Time is undefined');\r\n }\r\n\r\n // Remove 's' from the end of the string\r\n time = time.replace('s', '');\r\n\r\n // ex: time is 0.4 => 400, 1 => 1000\r\n const timeArr = time.split('.');\r\n const second = parseInt(timeArr[0]);\r\n const milisecond = timeArr[1] ? parseInt(timeArr[1]) * 100 : 0;\r\n return second * 1000 + milisecond;\r\n }\r\n\r\n\r\n /**\r\n * Hàm này để thêm set up default cho đối tượng hình ảnh\r\n * @param _this \r\n */\r\n addSetUpImg(_this) {\r\n _this.vhQueryAutoWeb.addSetup({\r\n upload_image: {\r\n compress_type: 'compress-screen',\r\n display: 'shared',\r\n source: \"device\",\r\n },\r\n type: 'single_image'\r\n }).then((res: any) => {\r\n _this.setupSingleImage = res.data;\r\n })\r\n\r\n _this.vhQueryAutoWeb.addSetup({\r\n upload_image: {\r\n compress_type: 'compress-screen',\r\n source: \"device\",\r\n },\r\n type: 'category_image'\r\n }).then((res: any) => {\r\n _this.setupCategoryImage = res.data;\r\n })\r\n\r\n _this.vhQueryAutoWeb.addSetup({\r\n upload_image: {\r\n compress_type: 'compress-screen',\r\n source: \"device\",\r\n },\r\n type: 'product_image'\r\n }).then((res: any) => {\r\n _this.setupProductImage = res.data;\r\n })\r\n\r\n _this.vhQueryAutoWeb.addSetup({\r\n upload_image: {\r\n compress_type: 'compress-screen',\r\n source: \"device\",\r\n },\r\n type: 'food_image'\r\n }).then((res: any) => {\r\n _this.setupFoodImage = res.data;\r\n })\r\n _this.vhQueryAutoWeb.addSetup({\r\n upload_image: {\r\n compress_type: 'compress-screen',\r\n source: \"device\",\r\n },\r\n type: 'news_image'\r\n }).then((res: any) => {\r\n _this.setupNewsImage = res.data;\r\n })\r\n\r\n _this.vhQueryAutoWeb.addSetup({\r\n upload_image: {\r\n compress_type: 'compress-screen',\r\n source: \"device\",\r\n },\r\n type: 'service_image'\r\n }).then((res: any) => {\r\n _this.setupServiceImage = res.data;\r\n })\r\n _this.vhQueryAutoWeb.addSetup({\r\n upload_image: {\r\n compress_type: 'compress-screen',\r\n source: \"device\",\r\n },\r\n type: 'website_image'\r\n }).then((res: any) => {\r\n _this.setupWebsiteImage = res.data;\r\n })\r\n _this.vhQueryAutoWeb.addSetup({\r\n upload_image: {\r\n compress_type: 'compress-screen',\r\n source: \"device\",\r\n },\r\n type: 'combo_image'\r\n }).then((res: any) => {\r\n _this.setupComboImage = res.data;\r\n })\r\n _this.vhQueryAutoWeb.addSetup({\r\n upload_image: {\r\n compress_type: 'compress-screen',\r\n source: \"device\",\r\n },\r\n type: 'topping_image'\r\n }).then((res: any) => {\r\n _this.setupToppingImage = res.data;\r\n })\r\n }\r\n\r\n\r\n /**\r\n * Hàm này tính chiều cao của frame\r\n * @param prevObject đối tượng cần tính\r\n * @param device thiết bị\r\n */\r\n getHeightFrame(prevObject: any, device: any) {\r\n let rows = 1; // Giá trị mặc định\r\n\r\n // Kiểm tra nếu prevObject tồn tại và có `resize_field`\r\n if (!prevObject || !prevObject.resize_field) {\r\n return rows * this.getHeight(prevObject, device); // Trả về giá trị mặc định nếu không có `resize_field`\r\n }\r\n\r\n const deviceConfig = prevObject[device + '_config'];\r\n const staticData = prevObject['staticdata'];\r\n const deviceClass = prevObject[device + '_class'];\r\n\r\n switch (prevObject.resize_field) {\r\n case 'frame-products': {\r\n // Kiểm tra nếu `deviceConfig` và cấu hình `frame-products` tồn tại\r\n if (deviceConfig && deviceConfig['frame-products__products']?.rows) {\r\n rows = deviceConfig['frame-products__products'].rows;\r\n const dimensionHeight = parseFloat(deviceConfig?.dimension?.height) || 0;\r\n const gap = parseFloat(deviceClass['frame-products__products'].gap) || 0;\r\n const paginationHeight = parseFloat(deviceConfig?.dimension_pagination?.height) || 0;\r\n const marginTopPaginationOptional = deviceConfig?.type_display == 'pagination' ? (parseFloat(deviceClass['frame-products__pagination']['margin-top']) || 0) : 0;\r\n // const marginTopPaginationOptional = parseFloat(deviceClass['frame-products__pagination']['margin-top']) || 0;\r\n const paddingTop = parseFloat(deviceClass?.['frame-products']?.['padding-top']) || 0;\r\n const paddingBottom = parseFloat(deviceClass?.['frame-products']?.['padding-bottom']) || 0;\r\n const padding = paddingTop + paddingBottom;\r\n let height = rows * dimensionHeight + (rows - 1) * gap + padding + paginationHeight + marginTopPaginationOptional;\r\n return height;\r\n }\r\n break;\r\n }\r\n case 'frame-cart-products': {\r\n // Kiểm tra nếu `deviceConfig` và cấu hình `frame-cart-products` tồn tại\r\n if (deviceConfig && deviceConfig['frame-cart-products__products']?.rows) {\r\n rows = deviceConfig['frame-cart-products__products'].rows;\r\n const dimensionHeight = parseFloat(deviceConfig?.dimension?.height) || 0;\r\n const gap = parseFloat(deviceClass['frame-cart-products__products'].gap) || 0;\r\n let height = rows * dimensionHeight + (rows - 1) * gap;\r\n return height;\r\n }\r\n break;\r\n }\r\n case 'frame-product-category': {\r\n // Kiểm tra nếu `deviceConfig` tồn tại\r\n if (deviceConfig?.rows) {\r\n rows = deviceConfig.rows;\r\n const dimensionHeight = parseFloat(deviceConfig?.dimension?.height) || 0;\r\n const gap = parseFloat(deviceClass['frame-product-category__list'].gap) || 0;\r\n const paginationHeight = parseFloat(deviceConfig?.dimension_pagination?.height) || 0;\r\n const marginTopPaginationOptional = deviceConfig?.type_display == 'pagination' ? (parseFloat(deviceClass['frame-product-category__pagination']['margin-top']) || 0) : 0;\r\n // const marginTopPaginationOptional = parseFloat(deviceClass['frame-product-category__pagination']['margin-top']) || 0;\r\n // const padding = parseFloat(deviceClass['frame-product-category__list']['padding-bottom']) + parseFloat(deviceClass['frame-product-category__list']['padding-top']) || 0;\r\n const paddingTop = parseFloat(deviceClass?.['frame-product-category__list']?.['padding-top']) || 0;\r\n const paddingBottom = parseFloat(deviceClass?.['frame-product-category__list']?.['padding-bottom']) || 0;\r\n const padding = paddingTop + paddingBottom;\r\n // Tính toán chiều cao\r\n let height = rows * dimensionHeight + (rows - 1) * gap + padding + paginationHeight + marginTopPaginationOptional;\r\n return height;\r\n }\r\n break;\r\n }\r\n case 'frame-categories': {\r\n if (deviceConfig && deviceConfig['frame-categories__products']?.rows) {\r\n rows = deviceConfig['frame-categories__products'].rows;\r\n const dimensionHeight = parseFloat(deviceConfig?.dimension?.height) || 0;\r\n const gap = parseFloat(deviceClass['frame-categories__products'].gap) || 0;\r\n let height = rows * dimensionHeight + (rows - 1) * gap;\r\n return height;\r\n }\r\n break;\r\n // // Kiểm tra nếu `deviceConfig` và cấu hình `frame-categories` tồn tại\r\n // if (deviceConfig && deviceConfig['frame-categories__products']?.rows) {\r\n // rows = deviceConfig['frame-categories__products'].rows;\r\n // }\r\n // break;\r\n }\r\n case 'frame-replied': {\r\n // Kiểm tra nếu `deviceConfig` và cấu hình `frame-categories` tồn tại\r\n // if (deviceConfig && staticData?.initquantity) {\r\n // rows = staticData?.initquantity;\r\n // }\r\n rows = 1\r\n break;\r\n }\r\n case 'frame-category-detail':\r\n case 'frame-reply-comment':\r\n case 'frame-collapse':\r\n case 'block-tabs':\r\n case 'frame-blank':\r\n case 'frame-banner':\r\n case 'frame-product-detail': {\r\n rows = 1;\r\n break;\r\n }\r\n default: {\r\n rows = 2;\r\n }\r\n }\r\n return rows * this.getHeight(prevObject, device);\r\n }\r\n\r\n // Hàm lấy vị trí của object dựa trên thiết bị và ID của dữ liệu\r\n getPos(block, device, positionId) {\r\n return block[`${device}_position_${positionId}`] || { top: 0, left: 0 };\r\n }\r\n // Hàm lấy chiều rộng của object dựa trên cấu hình thiết bị\r\n getWidth(block, device) {\r\n return block[`${device}_config`]?.dimension?.width || 0;\r\n }\r\n // Hàm lấy chiều cao của object dựa trên cấu hình thiết bị\r\n getHeight(block, device) {\r\n return block[`${device}_config`]?.dimension?.height || 0;\r\n }\r\n\r\n /**\r\n * Hàm này tính toán chuyển đổi margin và lọc các phần tử chồng lấn\r\n * \r\n * @param objects Mảng đối tượng\r\n * @param device Thiết bị\r\n * \r\n * @returns Trả về marginData: Mảng các phần tử có thuộc tính marginTop và marginLeft\r\n */\r\n calculateObjects(objects, device) {\r\n const marginData = [];\r\n // Hàm tính toán vị trí của object hiện tại dựa trên object trước đó\r\n const calculatePosition = (currentPos, prevObject) => {\r\n if (!prevObject) {\r\n // Trường hợp object đầu tiên, không có object trước đó\r\n return {\r\n top: parseFloat(currentPos.top) || 0,\r\n left: parseFloat(currentPos.left) || 0,\r\n };\r\n }\r\n\r\n const prevPosition = this.getPos(prevObject, device, (prevObject?.id_page || prevObject?.id_block || prevObject?.id_object)); // Lấy vị trí của object trước đó\r\n const prevHeight = getPrevHeight(prevObject); // Lấy chiều cao của object trước đó\r\n\r\n // Tính toán vị trí hiện tại dựa vào vị trí và chiều cao object trước đó\r\n const left = parseFloat(currentPos.left) || 0;\r\n const top = parseFloat(currentPos.top) - (prevHeight + parseFloat(prevPosition.top) || 0);\r\n return { top, left };\r\n };\r\n\r\n // Hàm lấy chiều cao của object trước đó, có kiểm tra xem nó có phải 'frame' không\r\n const getPrevHeight = (prevObject) => {\r\n if (prevObject.otype === 'frame' || prevObject.component?.toLowerCase().includes('frame')) {\r\n return this.getHeightFrame(prevObject, device)\r\n }\r\n return this.getHeight(prevObject, device);\r\n };\r\n\r\n // Duyệt qua từng object để tính toán margin và xác định chồng lấn\r\n objects.forEach((object, index) => {\r\n const currentPosition = this.getPos(object, device, (object?.id_page || object?.id_block || object?.id_object)); // Lấy vị trí hiện tại\r\n const prevObject = index > 0 ? objects[index - 1] : null; // Lấy object trước đó (nếu có)\r\n\r\n // Tính toán vị trí top và left cho object hiện tại\r\n const { top: currentTop, left: currentLeft } = calculatePosition(currentPosition, prevObject);\r\n\r\n // Lưu lại margin của object hiện tại\r\n marginData.push({\r\n _id: object._id,\r\n marginTop: currentTop,\r\n marginLeft: currentLeft,\r\n });\r\n });\r\n\r\n // Trả về dữ liệu margin và các nhóm chồng lấn\r\n return marginData;\r\n }\r\n\r\n // Hàm kiểm tra hai đối tượng có chồng lấn trực tiếp không\r\n private isOverlapping(el1: any, el2: any, device: any): boolean {\r\n const [p1, p2] = [\r\n this.getPos(el1, device, el1?.id_page || el1?.id_block || el1?.id_object),\r\n this.getPos(el2, device, el2?.id_page || el2?.id_block || el2?.id_object),\r\n ];\r\n return (\r\n Number(p1.left) < Number(p2.left) + this.getWidth(el2, device) &&\r\n Number(p2.left) < Number(p1.left) + this.getWidth(el1, device)\r\n );\r\n }\r\n\r\n // Hàm kiểm tra xem hai đối tượng có phụ thuộc qua trung gian không\r\n private isDependent(el1: any, el2: any, objects: any[], device: any): boolean {\r\n // Kiểm tra tất cả các phần tử ở giữa `el1` và `el2`\r\n return objects.some(\r\n (middleEl, idx) =>\r\n idx > objects.indexOf(el1) &&\r\n idx < objects.indexOf(el2) &&\r\n this.isOverlapping(el1, middleEl, device) &&\r\n this.isOverlapping(middleEl, el2, device)\r\n );\r\n }\r\n\r\n // Hàm tìm phần tử không phụ thuộc đầu tiên sau `index`\r\n private condition(\r\n el: any,\r\n index: number,\r\n device: any,\r\n indexDepend: number,\r\n isNegative: boolean,\r\n objects: any[],\r\n isFirstElement: boolean // Thêm tham số để kiểm tra phần tử đầu tiên\r\n ): boolean {\r\n const isDependWithElement = indexDepend !== -1 && this.isOverlapping(objects[indexDepend], el, device) //kiểm tra sự chồng lấn với object flag\r\n return (\r\n ((isFirstElement && isDependWithElement) || !this.isOverlapping(objects[index], el, device)) && // Không chồng lấn trực tiếp\r\n (!isNegative || !this.isDependent(objects[index], el, objects, device)) && // Nếu `isNegative` = true, kiểm tra không phụ thuộc gián tiếp\r\n (indexDepend === -1 || isDependWithElement || this.isDependent(objects[indexDepend], el, objects, device)) // Phải chồng lấn với `indexDepend` hoặc phụ thuộc vào `indexDepend`\r\n );\r\n }\r\n\r\n /**\r\n * Tìm kiếm phần tử chồng lấn gần nhất phía sau của một phần tử trong danh sách.\r\n * @param objects Danh sách các đối tượng.\r\n * @param index Chỉ số của phần tử trong danh sách.\r\n * @param indexDepend Chỉ số của phần cần tử phụ thuộc trong danh sách.\r\n * @param device Thiết bị.\r\n * @param isNegative Chỉ số xác định phần tử phụ thuộc vào phần tử đầu tiên trong đệ quy.\r\n * @return Phần tử chồng lấn gần nhất phía sau và vẫn phụ thuộc vào phần tử. Nếu không tìm thấy, trả về null.\r\n */\r\n findNonDependentNearest(\r\n objects: any[],\r\n index: number,\r\n device: any,\r\n indexDepend: any,\r\n isNegative: any\r\n ) {\r\n // Tìm phần tử đầu tiên thỏa mãn điều kiện\r\n const firstNonDependent = objects.slice(index + 1).find((el, idx) =>\r\n this.condition(el, index, device, indexDepend, isNegative, objects, idx === 0)\r\n );\r\n // Trả về `_id` và `index` nếu tìm thấy; nếu không, trả về `null`\r\n return firstNonDependent ? { _id: firstNonDependent._id, index: objects.indexOf(firstNonDependent) } : null;\r\n }\r\n\r\n\r\n /**\r\n * Hàm này được gọi đệ quy để điều chỉnh margin của các phần tử trong danh sách.\r\n * Nó sẽ tìm kiếm các phần tử không phụ thuộc nhau và điều chỉnh giá trị marginTop cho chúng.\r\n * Chiều cao delta của từng đối tượng trong danh sách được tính toán và được sử dụng để \r\n * điều chỉnh giá trị marginTop cho các phần tử.\r\n * @param marginData Mảng các phần tử có thuộc tính marginTop và marginLeft\r\n * @param blocks Mảng các phần tử\r\n * @param index Chỉ số của phần tử hiện tại\r\n * @param device Thiết bị\r\n * @param data Giá trị component\r\n * @param deltaHeight Chiều cao delta của từng đối tượng trong danh sách\r\n * @param indexDepend Chỉ số của phần tử phụ thuộc\r\n * @param isNegative Chỉ số xác định phần tử phụ thuộc vào phần tử đầu tiên trong đệ quy\r\n */\r\n recursiveAdjustMargin(\r\n marginData: any[],\r\n blocks: any[],\r\n index: number,\r\n device: any,\r\n deltaHeight: any,\r\n indexDepend: any = -1,\r\n isNegative: boolean = true\r\n ) {\r\n // Điều kiện dừng: Nếu index vượt quá hoặc bằng chiều dài của marginData\r\n // Hoặc nếu không tìm thấy phần tử không phụ thuộc nào tiếp theo\r\n if (index >= marginData.length - 1) return;\r\n // Tìm phần tử không phụ thuộc gần nhất\r\n const next = this.findNonDependentNearest(blocks, index, device, indexDepend, isNegative);\r\n // Nếu không tìm thấy phần tử phù hợp, dừng đệ quy\r\n if (!next) return;\r\n // Điều chỉnh marginTop với dấu thay đổi dựa trên `isNegative`\r\n const adjustment = (deltaHeight || 0) * (isNegative ? -1 : 1);\r\n marginData[next.index].marginTop += adjustment;\r\n\r\n // Gọi đệ quy với chỉ số mới tìm được\r\n this.recursiveAdjustMargin(marginData, blocks, next.index, device, deltaHeight, index, !isNegative);\r\n }\r\n\r\n // /**\r\n // * Tính toán chiều cao delta của từng đối tượng trong danh sách.\r\n // * Chiều cao delta là sự khác biệt giữa chiều cao bù trừ của phần tử và chiều cao trong cấu hình.\r\n // * Điều này được sử dụng để tính toán đỉnh lề mới của đối tượng dựa trên chiều cao delta của đối tượng trước đó.\r\n // * @param objects Danh sách các đối tượng để tính chiều cao delta.\r\n // * @param device Thiết bị.\r\n // * @returns Một mảng các đối tượng có chiều cao delta, chiều cao bù trừ và chiều cao của từng đối tượng.\r\n // */\r\n // calculateDeltaHeight(object:any, device: any) {\r\n // const element = document.getElementById(object._id);\r\n // return {\r\n // _id: object._id, // Trả về _id của đối tượng\r\n // offsetHeight: element ? element.offsetHeight : 0, // Trả về chiều cao của element, hoặc 0 nếu không tìm thấy\r\n // height: object[`${device}_config`]?.dimension?.height, // Trả về chiều cao của đối tượng trong config\r\n // deltaHeight: element?.offsetHeight - object[`${device}_config`]?.dimension?.height // Trả về delta height\r\n // };\r\n // }\r\n\r\n /**\r\n * Tính toán chiều cao lớn nhất có thể có của đối tượng cha.\r\n * @param blocks Danh sách các đối tượng để tính chiều cao delta.\r\n * @returns chiều cao của đối tượng cha\r\n */\r\n handleCalculateMaxHeight(blocks) {\r\n // Ưu tiên lấy element cha theo id_page -> id_blocks -> id_object\r\n const parentId = blocks[0]?.id_page || blocks[0]?.id_block || blocks[0]?.id_object;\r\n const parentElement = parentId ? document.getElementById(parentId) : null;\r\n let maxHeight = 0;\r\n // let maxBlock = null;\r\n if (isPlatformBrowser(this.platformId)) {\r\n blocks.forEach(block => {\r\n let element: HTMLElement | null = null;\r\n\r\n if (parentElement) {\r\n // Trong parentElement tìm phần tử có id = block._id + '_root'\r\n element = parentElement.querySelector(`[id=\"${block._id}_root\"]`)\r\n }\r\n\r\n if (element) {\r\n const height = element.offsetHeight; // Lấy chiều cao của phần tử\r\n const top = element.offsetTop; // Lấy giá trị top\r\n // Tính tổng chiều cao\r\n const totalHeight = top + height;\r\n\r\n if (totalHeight > maxHeight) {\r\n maxHeight = totalHeight; // Cập nhật maxHeight nếu lớn hơn giá trị hiện tại\r\n // maxBlock = block;\r\n }\r\n }\r\n });\r\n }\r\n // if(parentId=='67d8dd16847d6520d4c0d1fa') console.log(\"maxHeight\", maxHeight, maxBlock);\r\n return maxHeight;\r\n }\r\n\r\n /**\r\n * biến này để khi người dùng nhập trong form thì lưu vào đây ví dụ: {\r\n * 'field_custom': 'hello world'\r\n * }\r\n */\r\n listInputs: any = {};\r\n freeblocks: any = []\r\n setFreeBlocks(freeblocks) {\r\n this.freeblocks = freeblocks\r\n }\r\n\r\n getFreeBLocks(): any[] {\r\n return this.freeblocks;\r\n }\r\n\r\n\r\n /**\r\n * Theo dõi sự kiện Đăng xuất / Đăng nhập để hiển thị thông qua `VhEventMediator` với message 'change-signin-signout' và state = 'login' || 'logout'\r\n * @param _this component hiện tại\r\n * @param showOnState 'login' | 'logout' | 'both' trạng thái nào thì sẽ hiển thị. Ví dụ 'login' thì chỉ hiển thị khi đã đăng nhập, 'logout' thì chỉ hiển thị khi chưa đăng nhập, 'both' thì hiển thị cả 2 trạng thái, 'both' thì hiện cả 2 trạng thái\r\n * @param className tên class sẽ apply thuộc tính `visibility` (thường là class ngoài cùng). Sẽ sử dụng dưới dạng `class[className]['visibility']`\r\n * @param afterLoginCallback hàm callback sau khi nhận message 'change-signin-signout' với state = 'login'. *Được gọi sau khi đã cập nhật biến `isLogin`\r\n * @param afterLogoutCallback hàm callback sau khi nhận message 'change-signin-signout' với state = 'logout'. *Được gọi sau khi đã cập nhật biến `isLogin`\r\n * \r\n * *Lưu ý: \r\n * \r\n * Gọi sau khi đã checkSigninEndUser và gán giá trị cho `isLogin`\r\n * \r\n * Chỉ sử dụng cho type = 'preview-web' || 'preview-app' || 'build'\r\n * \r\n * Phải khai báo `vhEventMediator: VhEventMediator` và `vhQueryAutoWeb: VhQueryAutoWeb` ở `constructor`\r\n * \r\n * Phải khai báo biến `isLogin` và `loginLogoutStateChangedSubscription` ở component\r\n * \r\n * Phải gọi hàm {@link loginLogoutStateChangedUnsubscribe} ở ngOnDestroy\r\n * `this.functionService.loginLogoutStateChangedUnsubscribe(this);`\r\n * \r\n * @example\r\n * this.functionService.loginLogoutStateChangedSubscribe(this, 'both', 'button', \r\n () => {\r\n // Sau khi đăng nhập\r\n this.userCurrent = this.vhQueryAutoWeb.getlocalEndUser();\r\n },\r\n () => {\r\n // Sau khi đăng xuất\r\n this.userCurrent = null;\r\n }\r\n );\r\n\r\n\r\n Hoặc không cần callback\r\n\r\n this.functionService.loginLogoutStateChangedSubscribe(this, 'logout', 'btn-modal__boundary');\r\n */\r\n loginLogoutStateChangedSubscribe(\r\n _this,\r\n showOnState: 'login' | 'logout' | 'both',\r\n className: string,\r\n afterLoginCallback?: any,\r\n afterLogoutCallback?: any\r\n ) {\r\n if (_this.type === 'preview-web' || _this.type === 'preview-app' || _this.type === 'build') {\r\n const idParent = _this.data.id_block ?? _this.data.id_object ?? '';\r\n const position = _this.data[`${_this.device}_position_${idParent}`] ?? _this.data[`${_this.device}_position`];\r\n const defaultZIndex = position ? position['z_index'] : 2;\r\n // Kiểm tra xem đã đăng nhập hay chưa để set lần đầu\r\n setTimeout(() => {\r\n this.loginLogoutStateApplyStyles(_this, showOnState, className, defaultZIndex, idParent);\r\n }, 0);\r\n\r\n // Theo dõi sự kiện Đăng xuất / Đăng nhập. Nhận message 'change-signin-signout' từ vhEventMediator\r\n _this.loginLogoutStateChangedSubscription = _this.vhEventMediator.configChanged.subscribe((message: any) => {\r\n if (message && message.status === \"change-signin-signout\") {\r\n /** true là đã Đăng nhập, false là chưa */\r\n const isLoggedIn = _this.vhQueryAutoWeb.checkSigninEndUser();\r\n // Set lại biến isLogin\r\n _this.isLogin = isLoggedIn;\r\n // Nếu đã login\r\n if (isLoggedIn) {\r\n if (afterLoginCallback) afterLoginCallback();\r\n }\r\n // Nếu là logout\r\n else {\r\n if (afterLogoutCallback) afterLogoutCallback();\r\n }\r\n // Set lại visibility sau khi đăng nhập / đăng xuất\r\n this.loginLogoutStateApplyStyles(_this, showOnState, className, defaultZIndex, idParent);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Hủy theo dõi sự kiện Đăng xuất / Đăng nhập\r\n * @param _this component hiện tại\r\n */\r\n loginLogoutStateChangedUnsubscribe(_this) {\r\n _this.loginLogoutStateChangedSubscription?.unsubscribe();\r\n }\r\n\r\n /**\r\n * Apply styles cho login/logout state\r\n * @param _this \r\n * @param showOnState \r\n * @param className \r\n * @param defaultZIndex z-index mặc định để khi visible thì set z-index lại như ban đầu\r\n */\r\n loginLogoutStateApplyStyles(_this, showOnState: 'login' | 'logout' | 'both', className: string, defaultZIndex: number, idParent: string) {\r\n if (showOnState === 'both') return;\r\n\r\n // Lấy thông tin trường position để lát nữa set z-index\r\n const position = _this.data[`${_this.device}_position_${idParent}`] ?? _this.data[`${_this.device}_position`];\r\n\r\n if (showOnState === 'login') {\r\n _this.class[className]['visibility'] = _this.isLogin ? 'visible' : 'hidden';\r\n if (position) position['z_index'] = _this.isLogin ? defaultZIndex : 0;\r\n }\r\n else if (showOnState === 'logout') {\r\n _this.class[className]['visibility'] = !_this.isLogin ? 'visible' : 'hidden';\r\n if (position) position['z_index'] = _this.isLogin ? 0 : defaultZIndex;\r\n }\r\n }\r\n\r\n dataLocal: any = {};\r\n setDataLocal(id: string, data: any) {\r\n this.dataLocal[id] = data;\r\n }\r\n\r\n getDataLocal(id: string) {\r\n return this.dataLocal[id];\r\n }\r\n\r\n\r\n /**\r\n * hàm xử lý auto slide cho khung tự chọn\r\n */\r\n autoPlay(_this, classTransition: string) {\r\n if (_this.type == 'page' || _this.type == 'admin' || !_this.type) return;\r\n if (_this.config[classTransition]['is_autoplay']) {\r\n if (_this.setinterval) {\r\n clearInterval(_this.setinterval);\r\n _this.setinterval = null;\r\n }\r\n\r\n if (!_this.setinterval)\r\n _this.setinterval = setInterval(() => {\r\n _this.handleNext();\r\n }, _this.config[classTransition]['interval']);\r\n } else {\r\n clearInterval(_this.setinterval);\r\n }\r\n }\r\n\r\n\r\n\r\n /**\r\n * Cuộn đến đầu của element nếu top của element hiện tại lớn hơn 0\r\n * @param id id của element\r\n */\r\n scrollToTopOfElement(id: string) {\r\n if (isPlatformBrowser(this.platformId)) {\r\n const element = document.getElementById(id);\r\n if (element) {\r\n const rect = element.getBoundingClientRect();\r\n const isPastTop = rect?.top < 0;\r\n if (isPastTop) {\r\n element.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Kiểm tra và xử lý sự thay đổi chiều cao (resize offset).\r\n * @elementRef ElementRef cơ bản.\r\n * @param data Đối tượng để tính delta chiều cao.\r\n * @param type Loại đối tượng, nếu là 'page' hoặc 'admin' sẽ bỏ qua kiểm tra.\r\n * @param prevHeight Giá trị chiều cao trước đó của cell trong frame (nếu có).\r\n * @param device Thiết bị hiện tại, dùng để xác định cấu hình tương ứng (nếu có).\r\n * @param emitCallback Hàm callback để emit sự thay đổi nếu có (thường là EventEmitter).\r\n * @returns Giá trị `prevHeight` mới để lưu trữ cho lần kiểm tra tiếp theo.\r\n */\r\n handleResizeOffset(\r\n elementRef: any,\r\n data: any,\r\n type: any,\r\n prevHeight: any,\r\n device: any,\r\n emitCallback: (payload: { deltaHeight: number; data: any }) => void\r\n ) {\r\n if (type === 'page' || type === 'admin') return prevHeight;\r\n if (isPlatformBrowser(this.platformId)) {\r\n const element = elementRef?.nativeElement;\r\n if (!element) return prevHeight;\r\n\r\n // Kiểm tra xem element hoặc thẻ cha có animation/transition không\r\n const computedStyle = window.getComputedStyle(element);\r\n const hasAnimation = (computedStyle.animationName !== 'none' && computedStyle.animationDuration !== '0s') ||\r\n (computedStyle.transitionProperty !== 'none' && computedStyle.transitionDuration !== '0s');\r\n if (hasAnimation) {\r\n // Sử dụng ResizeObserver nếu có animation\r\n if (element.__resizeObserver__) {\r\n element.__resizeObserver__.disconnect(); // Hủy observer cũ nếu có\r\n }\r\n\r\n const observer = new ResizeObserver(() => {\r\n const currentHeight = element.offsetHeight;\r\n const deltaHeight =\r\n prevHeight === 0\r\n ? currentHeight - (data[`${device}_config`]?.dimension?.height || 0)\r\n : currentHeight - prevHeight;\r\n if (deltaHeight < -1 || deltaHeight > 1) {\r\n emitCallback({ deltaHeight, data });\r\n }\r\n prevHeight = currentHeight; // Cập nhật lại\r\n });\r\n observer.observe(element);\r\n element.__resizeObserver__ = observer; // Lưu observer để cleanup\r\n } else {\r\n // Không có animation, tính toán trực tiếp\r\n const currentHeight = element.offsetHeight;\r\n const deltaHeight =\r\n prevHeight === 0\r\n ? currentHeight - (data[`${device}_config`]?.dimension?.height || 0)\r\n : currentHeight - prevHeight;\r\n if (deltaHeight < -1 || deltaHeight > 1) {\r\n emitCallback({ deltaHeight, data });\r\n }\r\n prevHeight = currentHeight; // Cập nhật lại\r\n }\r\n\r\n return prevHeight;\r\n }\r\n return prevHeight;\r\n }\r\n\r\n\r\n /** danh sách block_of_page elementRef */\r\n blockRefs\r\n setBlockRefs(data) {\r\n this.blockRefs = data\r\n }\r\n\r\n getBlockRefs() {\r\n return this.blockRefs\r\n }\r\n\r\n\r\n\r\n\r\n /** Ngôn ngữ đang được chọn */\r\n selectedLanguageCode: string = this.vhQueryAutoWeb.localStorageGET('language_code')?.code || 'vn';\r\n defaultLanguage: string = 'vn';\r\n languageTempCode: string = 'vn';\r\n multi_languages: any = this.vhQueryAutoWeb.localStorageGET('multi_languages')?.multi_languages || [];\r\n\r\n /** \r\n * Mảng chứa các giá trị fallback cho các trường multi-language của component dựa trên trường `component`.\r\n * \r\n * @example\r\n * this.functionService.multiLanguageFallback['AtwText']['content']\r\n */\r\n multiLanguageFallback = {\r\n \"AtwText\": {\r\n \"content\": \"Tiêu đề\",\r\n },\r\n \"AtwInputAddress\": {\r\n \"input_text_placeholder\": \"Nhập địa chỉ\",\r\n \"input_text_error\": \"* Vui lòng nhập địa chỉ\",\r\n },\r\n \"AtwInputConfirmPassword\": {\r\n \"input_text_placeholder\": \"Xác nhận mật khẩu\",\r\n \"input_text_error\": \"* Xác nhận mật khẩu không khớp\",\r\n \"input_text_error_required\": \"* Vui lòng nhập xác nhận mật khẩu\",\r\n },\r\n \"AtwInputContent\": {\r\n \"input_text_placeholder\": \"Nhập nội dung\",\r\n \"input_text_error\": \"* Vui lòng nhập nội dung\",\r\n },\r\n \"AtwInputEmail\": {\r\n \"input_text_placeholder\": \"Địa chỉ email\",\r\n \"input_text_error\": \"* Email không đúng định dạng\",\r\n \"input_text_error_required\": \"* Vui lòng nhập địa chỉ email\",\r\n },\r\n \"AtwInputName\": {\r\n \"input_text_placeholder\": \"Tên người dùng\",\r\n \"input_text_error\": \"* Vui lòng nhập tên\",\r\n },\r\n \"AtwInputNewPassword\": {\r\n \"input_text_placeholder\": \"Nhập mật khẩu mới\",\r\n \"input_text_error_required\": \"* Vui lòng nhập mật khẩu mới\",\r\n },\r\n \"AtwInputPassword\": {\r\n \"input_text_placeholder\": \"Nhập mật khẩu\",\r\n \"input_text_error\": \"* Vui lòng nhập mật khẩu\",\r\n },\r\n \"AtwInputTelephone\": {\r\n \"input_text_placeholder\": \"Số điện thoại\",\r\n \"input_text_error\": \"* Vui lòng nhập đúng số điện thoại\",\r\n \"input_text_error_required\": \"* Vui lòng nhập số điện thoại\",\r\n },\r\n \"AtwButton\": {\r\n \"content\": \"Button\",\r\n },\r\n \"AtwButtonShowModal\": {\r\n \"content\": \"Gọi hộp thoại\",\r\n },\r\n \"AtwBtnLoginLogout2States\": {\r\n \"content_login\": \"Đăng nhập\",\r\n \"content_logout\": \"Đăng xuất\",\r\n },\r\n \"AtwButtonLogout\": {\r\n \"content\": \"Đăng xuất\",\r\n },\r\n \"AtwSendContact\": {\r\n \"content\": \"Gửi\",\r\n },\r\n \"AtwButtonLoggedComponent\": {\r\n \"content\": \"Button\",\r\n },\r\n \"AtwButtonConfirm\": {\r\n \"content\": \"Đổi mật khẩu\",\r\n },\r\n \"AtwButtonForgotPassword\": {\r\n \"content\": \"Quên mật khẩu\",\r\n },\r\n \"AtwButtonRegister\": {\r\n \"content\": \"Đăng ký\",\r\n },\r\n \"AtwButtonSave\": {\r\n \"content\": \"Lưu\",\r\n },\r\n \"AtwBtnLogin\": {\r\n \"content\": \"Đăng nhập\",\r\n },\r\n \"AtwButtonPayment\": {\r\n \"content\": \"Đặt hàng\",\r\n },\r\n \"AtwButtonShowFormLogged\": {\r\n \"content\": \"Gọi hộp thoại\",\r\n },\r\n \"AtwButtonShowForm\": {\r\n \"content\": \"Hiển thị biểu mẫu\",\r\n },\r\n \"AtwPopupOpenForm\": {\r\n \"content\": \"Mở biểu mẫu\",\r\n },\r\n \"AtwButtonAddToCart\": {\r\n \"content\": \"Thêm vào giỏ hàng\",\r\n },\r\n \"AtwButtonFavorite\": {\r\n \"content\": \"\",\r\n },\r\n \"AtwButtonResetFilter\": {\r\n \"content\": \"clear\",\r\n },\r\n \"AtwButtonViewDetail\": {\r\n \"content\": \"Xem chi tiết\",\r\n },\r\n \"AtwButtonBacktop\": {\r\n \"content\": \"\",\r\n },\r\n \"AtwBackPageButton\": {\r\n \"content\": \"Back\",\r\n },\r\n \"AtwButtonClosePopup\": {\r\n \"content\": \"\",\r\n },\r\n \"AtwPopup\": {\r\n \"content\": \"Nút gọi hộp thoại\",\r\n },\r\n \"AtwSearch\": {\r\n \"input_text_placeholder\": \"Tìm kiếm\",\r\n \"content\": \"\",\r\n },\r\n \"AtwPopupInteractive\": {\r\n \"content\": \"Hover để hiển thị hộp thoại\",\r\n },\r\n \"AtwPopupDetail\": {\r\n \"content\": \"Popup Detail\",\r\n },\r\n \"AtwHover\": {\r\n \"content\": \"Văn bản gọi hộp thoại\",\r\n },\r\n \"AtwSelectAddress\": {\r\n \"input_placeholder\": \"Chọn địa chỉ\",\r\n },\r\n \"AtwDateDelivery\": {\r\n \"placeholder\": \"Chọn thời gian\"\r\n },\r\n \"AtwDeleteCartProduct\": {\r\n \"content\": \"\",\r\n },\r\n \"AtwNoteBill\": {\r\n \"input_text_placeholder\": \"Ghi chú hóa đơn\",\r\n },\r\n \"AtwExportBill\": {\r\n \"content\": \"Xuất hóa đơn công ty\",\r\n },\r\n \"AtwSendCV\": {\r\n \"content\": \"Gửi\",\r\n },\r\n \"AtwButtonActive\": {\r\n \"content\": \"Kích hoạt\",\r\n },\r\n \"AtwButtonSearchSnimei\": {\r\n \"content\": \"Tìm kiếm\",\r\n },\r\n \"AtwSearchSnimei\": {\r\n \"input_text_placeholder\": \"Số series hoặc IMEI\",\r\n },\r\n \"AtwSearchWebsite\": {\r\n \"input_text_placeholder\": \"Tìm kiếm\",\r\n \"content\": \"\",\r\n },\r\n \"AtwButtonPreview\": {\r\n \"content\": \"Demo web\",\r\n },\r\n \"AtwButtonPreviewImage\": {\r\n \"content\": \"Demo image\",\r\n },\r\n \"AtwUseTemplate\": {\r\n \"content\": \"Sử dụng giao diện\",\r\n },\r\n \"AtwUploadFile\": {\r\n \"content\": \"Upload file\",\r\n },\r\n \"AtwTextCollapse\": {\r\n \"header\": \"Tiêu đề collapse\",\r\n \"content\": \"Nội dung collapse\",\r\n },\r\n \"AtwTextParagraph\": {\r\n \"content\": \"<h3 style='margin-left:0px;'><strong>Xuất viện trong giờ hành chính</strong></h3><p style='margin-left:0px;'>&nbsp;</p><p style='margin-left:0px;'>Nhằm đơn giản hóa mọi việc, bạn, người thân, hoặc bạn bè đều có thể hoàn tất thủ tục xuất viện. Thông thường, chúng tôi sẽ cung cấp cho bạn bảng kê chi tiết viện phí. Nhân viên bệnh viện sẵn sàng giải đáp mọi thắc mắc của bạn.<br><br>Bạn hoặc người thân sẽ hoàn tất thủ tục thanh toán viện phí và xuất viện tại quầy Thu ngân của Bệnh Viện. Khi đến quầy Thu ngân, vui lòng mang theo giấy tạm ứng viện phí (nếu có) và trình cho nhân viên thu ngân. Trong một số trường hợp đặc biệt, bạn có thể thanh toán viện phí và thực hiện thủ tục xuất viện ngay tại phòng bệnh.<br><br>Nếu công ty bảo hiểm đồng ý chi trả viện phí, bạn vẫn phải làm thủ tục xuất viện tại quầy Thu ngân để kiểm tra các khoản phí cần thanh toán và ký vào hóa đơn.</p><p style='margin-left:0px;'>&nbsp;</p><h3 style='margin-left:0px;'><strong>Xuất viện ngoài giờ hành chính</strong></h3><p style='margin-left:0px;'>&nbsp;</p><p style='margin-left:0px;'>Bạn sẽ được hướng dẫn đến quầy Thu ngân của khoa Cấp cứu để hoàn tất thanh toán viện phí và làm thủ tục xuất viện.<br><br>Xin lưu ý, bệnh viện không thể cung cấp thuốc điều trị cho bệnh nhân xuất viện ngoài giờ hành chính.</p>\",\r\n },\r\n \"AtwRangePrice\": {\r\n \"min_content\": \"Tối thiểu:\",\r\n \"max_content\": \"Tối đa:\",\r\n },\r\n \"AtwSortProduct\": {\r\n \"content\": \"Sắp xếp sản phẩm\",\r\n \"sort-name-up\": \"Sắp xếp theo tên tăng dần\",\r\n \"sort-name-down\": \"Sắp xếp theo tên giảm dần\",\r\n \"sort-price-up\": \"Sắp xếp theo giá tăng dần\",\r\n \"sort-price-down\": \"Sắp xếp theo giá tăng dần\",\r\n },\r\n \"AtwTextDiscountValue\": {\r\n \"text\": \"Giảm\",\r\n },\r\n \"AtwTextProductDiscountValue\": {\r\n \"text\": \"Giảm\",\r\n },\r\n \"DescriptionRecruitmentComponent\": {\r\n \"webapp_sort_description\": \"Đây là mô tả của tuyển dụng\",\r\n },\r\n \"AtwTextActive\": {\r\n \"content_active\": \"Đã kích hoạt\",\r\n \"content_inactive\": \"Chưa kích hoạt\",\r\n },\r\n \"AtwRemainingTime\": {\r\n \"format_label\": \"Ngày\",\r\n },\r\n \"AtwMenuCategory\": {\r\n \"parent_category_name\": \"Danh mục sản phẩm\",\r\n },\r\n \"AtwMenu\": {\r\n \"name\": \"Menu item\",\r\n },\r\n \"AtwDynamicFilter\": {\r\n \"value\": \"Content\",\r\n },\r\n \"AtwFrameProductByCategoryConfig\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"sản phẩm\",\r\n \"no_data\": \"Không có sản phẩm nào\",\r\n },\r\n \"AtwFrameProductByCategory\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"sản phẩm\",\r\n \"no_data\": \"Không có sản phẩm nào\",\r\n },\r\n \"AtwFrameAppByCategory\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"app\",\r\n \"no_data\": \"Không có app nào\",\r\n },\r\n \"AtwFrameFoodsByCategory\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"món ăn\",\r\n \"no_data\": \"Không có món ăn nào\",\r\n },\r\n \"AtwFrameServiceByCategory\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"dịch vụ\",\r\n \"no_data\": \"Không có dịch vụ nào\",\r\n },\r\n \"AtwFrameNewsByCategory\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"tin tức\",\r\n \"no_data\": \"Không có tin tức nào\",\r\n },\r\n \"AtwFrameWebsiteByCategory\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"website\",\r\n \"no_data\": \"Không có website nào\",\r\n },\r\n \"AtwFrameCartProducts\": {\r\n \"content\": \"Chưa có sản phẩm nào được thêm vào giỏ hàng\",\r\n },\r\n \"AtwFrameCartProductsChoosed\": {\r\n \"content\": \"Chưa có sản phẩm nào được thêm vào giỏ hàng\",\r\n },\r\n \"AtwFrameSearchByKeywordConfig\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"sản phẩm\",\r\n \"no_data\": \"Không có sản phẩm nào\",\r\n },\r\n \"AtwFrameSearchByKeyword\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"sản phẩm\",\r\n \"no_data\": \"Không có sản phẩm nào\",\r\n },\r\n \"AtwFrameSearchByKeywordApp\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"app\",\r\n \"no_data\": \"Không có app nào\",\r\n },\r\n \"AtwFrameSearchByKeywordFoods\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"món ăn\",\r\n \"no_data\": \"Không có món ăn nào\",\r\n },\r\n \"AtwFrameSearchByKeywordServices\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"dịch vụ\",\r\n \"no_data\": \"Không có dịch vụ nào\",\r\n },\r\n \"AtwFrameSearchByKeywordNews\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"tin tức\",\r\n \"no_data\": \"Không có tin tức nào\",\r\n },\r\n \"AtwFrameSearchByKeywordWebsite\": {\r\n \"content_left\": \"Trước\",\r\n \"content_right\": \"Sau\",\r\n \"content_goToPage\": \"Tới trang\",\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"website\",\r\n \"no_data\": \"Không có website nào\",\r\n },\r\n \"AtwFrameProductsFavorited\": {\r\n \"no_data\": \"Không có sản phẩm nào\",\r\n },\r\n \"AtwFrameProductsViewedConfig\": {\r\n \"no_data\": \"Không có sản phẩm nào\",\r\n },\r\n \"AtwFrameProductsViewed\": {\r\n \"no_data\": \"Không có sản phẩm nào\",\r\n },\r\n \"AtwFrameResultConfig\": {\r\n \"no_data_text_before\": \"Không tìm thấy\",\r\n \"no_data_text_after\": \". Vui lòng nhập nội dung khác\",\r\n },\r\n \"AtwFrameResult\": {\r\n \"no_data_text_before\": \"Không tìm thấy\",\r\n \"no_data_text_after\": \". Vui lòng nhập nội dung khác\",\r\n },\r\n \"AtwSearchCustomize\": {\r\n \"input_text_placeholder\": \"Tìm kiếm\",\r\n \"content\": \"\",\r\n },\r\n \"AtwSearchCustomizeConfig\": {\r\n \"input_text_placeholder\": \"Tìm kiếm\",\r\n \"content\": \"\",\r\n },\r\n \"AtwFrameProductByCategoryViewMore\": {\r\n \"text_before_number\": \"Có\",\r\n \"text_after_number\": \"sản phẩm\",\r\n \"no_data\": \"Không có sản phẩm nào\",\r\n \"view_more_content\": \"Xem thêm \",\r\n \"view_more_content_after\": \" sản phẩm\",\r\n },\r\n \"AtwFrameRepeat\": {\r\n \"value\": \"Văn bản\",\r\n \"button\": \"Nút điều hướng\",\r\n },\r\n \"AtwTextRepeat\": {\r\n \"value\": \"Văn bản\",\r\n },\r\n \"AtwButtonRepeat\": {\r\n \"value\": \"Nút điều hướng\",\r\n },\r\n \"AtwFrameCollapse\": {\r\n \"name\": \"Collapse\",\r\n },\r\n \"AtwFrameTabs\": {\r\n \"name\": \"Tab\",\r\n },\r\n \"AtwUnits\": {\r\n \"unit\": \"Đơn vị\",\r\n }\r\n };\r\n\r\n /** Hàm tạo validators từ cấu hình */\r\n getValidators(validators: { required?: boolean; pattern?: string; minLength?: number }) {\r\n let validatorArr = [];\r\n\r\n if (validators.required) {\r\n validatorArr.push(Validators.required);\r\n }\r\n if (validators.pattern && validators.pattern.trim()) {\r\n validatorArr.push(Validators.pattern(validators.pattern));\r\n }\r\n if (validators.minLength !== undefined && validators.minLength > 0) {\r\n validatorArr.push(Validators.minLength(validators.minLength));\r\n }\r\n\r\n return validatorArr.length ? Validators.compose(validatorArr) : null;\r\n }\r\n\r\n /** Hàm tạo field chung */\r\n createField(\r\n fieldObj: { field: string; validators?: any },\r\n language_code: string,\r\n formGroup: any,\r\n defaultValue?: any\r\n ) {\r\n const fieldKey = `${fieldObj.field}_${language_code}`;\r\n return {\r\n field: fieldKey,\r\n value: defaultValue ?? formGroup.value[fieldKey] ?? '',\r\n validators: this.getValidators(fieldObj.validators || {}),\r\n };\r\n }\r\n\r\n /**\r\n * Xử lý `handleChangeMultiLanguage` ở file add trong trang Admin. Sẽ thêm hoặc cập nhật các trường multi-language vào `formGroup`\r\n * @param formGroup - `FormGroup` cần xử lý\r\n * @param language_code - `language_code` hiện tại\r\n * @param newFields - Danh sách `newFields` (bao gồm `newFields` và `newFieldsCKEditor`)\r\n * @param fieldNames - Danh sách tên trường đa ngôn ngữ cần tạo. Ví dụ `['content', 'title', 'description']`\r\n */\r\n adminAddHandleChangeMultiLanguage(\r\n formGroup: any,\r\n language_code: string,\r\n newFields: any[],\r\n fieldNames: any[]\r\n ) {\r\n /** Danh sách trường cần tạo */\r\n let multipleLanguageFields = fieldNames.map((fieldObj) =>\r\n this.createField(fieldObj, language_code, formGroup)\r\n );\r\n\r\n // Thêm các trường từ newFields\r\n newFields.forEach((newField) => {\r\n multipleLanguageFields.push(\r\n this.createField(\r\n { field: newField.field_custom, validators: { required: newField.field_required, pattern: '' } },\r\n language_code,\r\n formGroup\r\n )\r\n );\r\n });\r\n\r\n // Thêm hoặc cập nhật giá trị trong formGroup\r\n multipleLanguageFields.forEach((newField) => {\r\n if (!formGroup.contains(newField.field)) {\r\n formGroup.addControl(newField.field, new FormControl(newField.value, newField.validators));\r\n } else {\r\n formGroup.get(newField.field)?.setValue(newField.value);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Xử lý `handleChangeMultiLanguage` ở file edit trong trang Admin. Sẽ thêm hoặc cập nhật các trường multi-language vào `formGroup`\r\n * @param formGroup - `FormGroup` cần xử lý\r\n * @param language_code - `language_code` hiện tại\r\n * @param newFields - Danh sách `newFields` (bao gồm `newFields` và `newFieldsCKEditor`)\r\n * @param fieldNames - Danh sách tên trường đa ngôn ngữ cần tạo. Ví dụ `['content', 'title', 'description']`\r\n * @param dataEdit - Dữ liệu edit\r\n * @param getUnitsByRatio - Hàm lấy đơn vị theo ratio. Đảm bảo có phương thức `getUnitsByRatio` trong component. Nếu có phương thức `getUnitsByRatio` và `!formGroup.value.manysize` thì sẽ thêm trường `unit` vào `formGroup`. Nếu không cần check `!formGroup.value.manysize` mà vẫn muốn thêm trường unit thì thêm `unit` vào `fieldNames`\r\n */\r\n adminEditHandleChangeMultiLanguage(\r\n formGroup: any,\r\n language_code: string,\r\n newFields: any[],\r\n fieldNames: any[],\r\n dataEdit: any,\r\n getUnitsByRatio?: (units: any[], ratio: number) => any,\r\n isPage?: boolean,\r\n ) {\r\n const devices = ['desktop', 'tablet_landscape', 'tablet_portrait', 'mobile_landscape', 'mobile_portrait'];\r\n\r\n /** Danh sách trường cần tạo */\r\n let multipleLanguageFields = fieldNames.map((fieldObj) => {\r\n // Xử lý khi sửa thông tin trang (Vì có SEO)\r\n if (isPage) {\r\n return this.createField(\r\n fieldObj, language_code, formGroup,\r\n (fieldObj.field != 'name')\r\n ? dataEdit?.seo?.[`${fieldObj.field}_${language_code}`]\r\n : dataEdit?.[`${fieldObj.field}_${language_code}`]\r\n );\r\n }\r\n\r\n // Xử lý cho text-paragraph\r\n if (\r\n ['content'].some(f => fieldObj.field.endsWith(f)) &&\r\n devices.some(device => fieldObj.field.startsWith(device))\r\n ) {\r\n return this.createField(\r\n fieldObj, language_code, formGroup,\r\n dataEdit?.[`${fieldObj.field}_${language_code}`] ?? dataEdit?.[`content_${language_code}`]\r\n );\r\n }\r\n\r\n // Mặc định\r\n return this.createField(fieldObj, language_code, formGroup, dataEdit?.[`${fieldObj.field}_${language_code}`]);\r\n }\r\n );\r\n\r\n // Xử lý trường `unit` nếu `!formGroup.value.manysize`\r\n if (getUnitsByRatio && !formGroup.value.manysize) {\r\n multipleLanguageFields.push(\r\n this.createField(\r\n { field: 'unit', validators: { required: true, pattern: '' } },\r\n language_code,\r\n formGroup,\r\n getUnitsByRatio(dataEdit?.units, 1)?.[`unit_${language_code}`]\r\n )\r\n );\r\n }\r\n\r\n // Thêm các trường từ newFields\r\n newFields.forEach((newField) => {\r\n multipleLanguageFields.push(\r\n this.createField(\r\n { field: newField.field_custom, validators: { required: newField.field_required, pattern: '' } },\r\n language_code,\r\n formGroup,\r\n dataEdit?.[`${newField.field_custom}_${language_code}`]\r\n )\r\n );\r\n });\r\n\r\n // Thêm hoặc cập nhật giá trị trong formGroup\r\n multipleLanguageFields.forEach((newField) => {\r\n if (!formGroup.contains(newField.field)) {\r\n formGroup.addControl(newField.field, new FormControl(newField.value, newField.validators));\r\n } else {\r\n formGroup.get(newField.field)?.setValue(newField.value);\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n typeConfig: 'admin' | 'page' = 'page'\r\n setTypeConfig(data) {\r\n this.typeConfig = data\r\n }\r\n\r\n getTypeConfig() {\r\n return this.typeConfig\r\n }\r\n\r\n /**\r\n * hàm này để nhận sự kiện khi ở admin thay đổi animation, cần phải render lại children, gán hidden = true để render lại\r\n * @param _this \r\n */\r\n updateUIChildrenSubscribe(_this) {\r\n if (_this.type == 'admin') {\r\n return this.vhEventMediator.configChanged.subscribe((message: any) => {\r\n if (message?.status === 'update-UI' && message?.id_parent == _this.data._id) {\r\n const findObj = _this.data.objects.find(e => e._id === message.code);\r\n if (!findObj) return;\r\n findObj['hidden'] = true;\r\n setTimeout(() => {\r\n findObj['hidden'] = false;\r\n }, 100);\r\n }\r\n });\r\n }\r\n return null;\r\n }\r\n\r\n updateDimension(objectChoosing?: any) {\r\n const message: any = {\r\n update_dimention: true,\r\n };\r\n\r\n if (objectChoosing?._id) {\r\n message.code = objectChoosing._id;\r\n }\r\n\r\n this.vhEventMediator.notifyOnConfigChanged(message);\r\n }\r\n\r\n\r\n\r\n /**\r\n * Xử lý khi thả file ảnh\r\n * - Nếu thuộc các component đặc biệt thì lấy width, height của ảnh kéo vào để gán width, height cho component thêm vào. Nhưng không lấy ảnh\r\n * - Ngược lại, không thuộc các component đặc biệt thì lấy width, height của ảnh kéo vào và lấy cả ảnh đẩy lên server rồi thêm vào component\r\n * - Cả 2 ý trên đều phải đảm bảo ảnh không vượt quá phạm vi frame chứa hoặc block chứa\r\n * @param event Sự kiện thả file ảnh sau khi nắm kéo vào\r\n * @param _this \r\n * @param size Kích thước width, height của block, frame\r\n * @param size.width Nếu để trống thì mặc định sẽ lấy width của thiết bị đó\r\n * @param size.height Nếu để trống thì mặc định sẽ lý height của thiết bị đó\r\n * @example \r\n * this.functionService.onDrop(event, this, {\r\n * height: Number(this.class['block-blank']['min-height'].replace('px', '')) \r\n * });\r\n */\r\n onDrop(event: DragEvent, _this, size?: { width?: number; height?: number }): void {\r\n if (_this.type !== 'page') return;\r\n event.preventDefault(); // Ngăn chặn mặc định\r\n\r\n // Ngăn chặn tạo double object (1 cha 1 con) khi thả file vào con (vd: frame)\r\n if (_this.data?.otype) event.stopPropagation();\r\n\r\n // Không thả file vào đối tượng nhân bản\r\n if (_this.data?.isClone) {\r\n this.createMessage('error', 'khong_the_tha_vao_doi_tuong_nay');\r\n return;\r\n }\r\n\r\n // Kiểm tra 1 hoặc nhiều tệp có phải hình ảnh hay không\r\n const files = Array.from(event.dataTransfer?.files || []).filter(f => {\r\n if (!f.type.startsWith('image/')) this.createMessage('error', 'vui_long_keo_tep_hinh_anh_hop_le');\r\n return f.type.startsWith('image/');\r\n });\r\n if (!files.length) return;\r\n\r\n const componentsRepeat = ['AtwFrameRepeat']; // component repeat\r\n const componentsCategory = ['AtwFrameCategories', 'AtwFrameCategoryDetail', 'AtwFrameDisplaySubcategory']; // Các component category\r\n\r\n // Các component có cấu hình chọn main sector\r\n const componentsHasChooseMainSector = ['AtwFrameResult', 'AtwFrameSearchByKeyword'];\r\n\r\n // Các component các ngành hàng\r\n const componentsProductMainSector = {\r\n ecommerce: ['AtwFrameCartProductChoosed', 'AtwFrameCartProducts', 'AtwFrameProductDetail', 'AtwFrameProducts', 'AtwFrameProductByCategory', 'AtwFrameProductByCategoryViewMore', 'AtwFrameProductRelate', 'AtwFrameProductsViewed', 'AtwFrameProductsFavorited', 'AtwBlockPopupDetailProduct'],\r\n comment: ['AtwFrameComment', 'AtwFrameReplyComment', 'AtwFrameReplied'],\r\n food_drink: ['AtwFrameFoodsDetail', 'AtwFrameFoods', 'AtwFrameFoodsByCategory', 'AtwFrameFoodByCategoryViewMore', 'AtwFrameFoodsRelate'],\r\n news: ['AtwFrameNews', 'AtwFrameNewsCategory', 'AtwFrameNewsByCategoryViewMore', 'AtwFrameNewsRelate', 'AtwFrameNewsDetail'],\r\n web: ['AtwFrameWebsite', 'AtwFrameWebsiteByCategory', 'AtwFrameWebsiteByCategoryViewMore'],\r\n app: ['AtwFrameApp', 'AtwFrameAppByCategory', 'AtwFrameAppByCategoryViewMore'],\r\n service: ['AtwFrameServices', 'AtwFrameServicesCategory', 'AtwFrameServiceByCategoryViewMore', 'AtwFrameServiceRelate', 'AtwFrameServiceDetail'],\r\n recruitment: ['AtwFrameRecruiment', 'AtwFrameRecruitmentDetail'],\r\n hotel: ['AtwFrameHotel', 'AtwFrameHotelByCategory', 'AtwFrameHotelByCategoryViewMore', 'AtwFrameHotelDetail', 'AtwFrameHotelRelate'],\r\n room: ['AtwFrameRoom', 'AtwFrameRoomByCategory', 'AtwFrameRoomByCategoryViewMore', 'AtwFrameRoomDetail', 'AtwFrameRoomRelate'],\r\n }\r\n\r\n // Các component product\r\n const componentsProduct = [...componentsHasChooseMainSector, ...Object.values(componentsProductMainSector).flat()].join(\", \");\r\n\r\n this.showLoading(\"\", \"current-loading\", null, 0, false).then(() => {\r\n /**\r\n * Hàm đọc file và thêm ảnh vào object\r\n * @param file file ảnh\r\n * @returns Promise<void>\r\n */\r\n const readAndAddImage = (file: File) => {\r\n return new Promise<void>((resolve, reject) => {\r\n const reader = new FileReader();\r\n\r\n reader.onload = (e) => {\r\n const img = new Image();\r\n img.onload = () => {\r\n // Lấy thông tin độ phân giải của ảnh\r\n const resolutionImg = {\r\n width: img.naturalWidth,\r\n height: img.naturalHeight,\r\n ratio: img.naturalWidth / img.naturalHeight\r\n };\r\n\r\n if (componentsRepeat.includes(_this.data.component)) {\r\n // Thêm vật thể ảnh cho khung repeat\r\n this.addObjectImage_onDrop(_this, null, resolutionImg, { width: size?.width, height: size?.height }, imgRepeatJson);\r\n return resolve();\r\n }\r\n else if (componentsCategory.includes(_this.data.component)) {\r\n // Thêm vật thể ảnh cho khung category\r\n this.addObjectImage_onDrop(_this, null, resolutionImg, { width: size?.width, height: size?.height }, imgCategoryJson, 'category');\r\n return resolve();\r\n }\r\n else if (componentsProduct.includes(_this.data.component)) {\r\n // Xử lý và thêm vật thể ảnh cho khung product\r\n let mainSector = 'ecommerce';\r\n\r\n if (componentsHasChooseMainSector.includes(_this.data.component)) {\r\n // Nếu component có chọn main_sector thì lấy từ staticdata\r\n mainSector = _this.staticdata?.main_sector || 'ecommerce';\r\n }\r\n else {\r\n // Không có main_sector thì map từ componentsProductMainSector\r\n const componentToSectorMap = {};\r\n\r\n // Lặp qua từng sector và xây dựng map\r\n Object.entries(componentsProductMainSector).forEach(([sector, components]) => {\r\n components.forEach(component => {\r\n componentToSectorMap[component] = sector;\r\n });\r\n });\r\n\r\n mainSector = componentToSectorMap[_this.data.component] || 'ecommerce';\r\n }\r\n\r\n // Thêm vật thể ảnh cho product với main_sector\r\n this.addObjectImage_onDrop(_this, null, resolutionImg, { width: size?.width, height: size?.height }, imgProductJson, mainSector);\r\n return resolve();\r\n }\r\n // Không thuộc các trường hợp trên mặc định sẽ quy về object ảnh thường\r\n else {\r\n const resolutionFromSetup = {\r\n width: resolutionImg.width,\r\n height: resolutionImg.height,\r\n }\r\n const setupsImg = imgJson.setups;\r\n let compressType = setupsImg.upload_image.compress_type ?? \"compress-screen\";\r\n\r\n // Đọc ảnh và xử lý nén, upload lên server\r\n this.vhImage\r\n .getImageFromDesktop_Autoweb(file, 'images/design/objects', {\r\n compress_type: compressType,\r\n resolution: resolutionFromSetup,\r\n })\r\n .then((res: any) => {\r\n if (res.vcode != 0) {\r\n // Nếu upload ảnh thất bại thì báo lỗi\r\n this.createMessage('error', `${this.translateService.instant('tai_anh_that_bai_ly_do')}: ${res.msg}`, 2000);\r\n this.createMessage('error', 'them_vat_the_that_bai', 2000);\r\n return reject(res.msg);\r\n }\r\n // Thêm object ảnh với dữ liệu trả về từ server\r\n this.addObjectImage_onDrop(_this, res.data, resolutionImg, { width: size?.width, height: size?.height }, imgJson);\r\n this.createMessage('success', 'tai_anh_thanh_cong');\r\n return resolve();\r\n })\r\n .catch((err) => {\r\n // Lỗi khi gọi hàm upload ảnh\r\n this.createMessage('error', 'loi_khi_goi_ham_tai_anh');\r\n if (isPlatformBrowser(this.platformId))\r\n console.error('getImageFromDesktop_Autoweb error', err);\r\n reject(err);\r\n });\r\n }\r\n };\r\n\r\n img.onerror = () => {\r\n // Lỗi khi đọc kích thước ảnh\r\n this.createMessage('error', 'loi_doc_kich_thuoc_anh');\r\n reject('invalid image');\r\n };\r\n\r\n img.src = e.target?.result as string;\r\n };\r\n\r\n reader.onerror = () => {\r\n // Lỗi khi đọc file\r\n this.createMessage('error', 'loi_khi_doc_file');\r\n reject('invalid image');\r\n };\r\n\r\n reader.readAsDataURL(file);\r\n });\r\n };\r\n\r\n // Đọc và xử lý từng file ảnh\r\n const tasks = files.map((file) => readAndAddImage(file));\r\n\r\n Promise.all(tasks)\r\n .then(() => {\r\n // Ẩn loading khi xử lý xong\r\n this.hideLoading(200);\r\n })\r\n .catch(() => {\r\n // Ẩn loading khi xảy ra lỗi\r\n this.hideLoading(200); // Vẫn phải hide loading nếu lỗi\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Hàm thêm object hình ảnh (AtwImage): \r\n * - Đọc file ảnh sau khi được kéo thả ảnh vào\r\n * - Xuất ra url để truyển vào và thêm object hình ảnh mới\r\n * @param _this\r\n * @param url url ảnh được lấy ra khi đã đọc file thả vào\r\n * @param resolutionImg kích thước của ảnh gốc\r\n * @param size kích thước của cho frame ngoài hoặc block ngoài (width, height) nói cách khác của element cha chứa hình kéo vào\r\n * @param imgJson json mẫu của object ảnh tương ứng cho từng block hoặc frame (vd: frame-blank: imgJson, frame-product: imgProductJson,...)\r\n * @param mainSector ngành hàng để in ra name trong json mẫu phù hợp (vd: ecommerce, news,...) (Nếu để trống thì đã có sẵn name trong json mẫu)\r\n * @example this.addObjectImage_onDrop(_this, res.data, resolution, { width: size?.width, height: size?.height });\r\n */\r\n private addObjectImage_onDrop(_this, url: string, resolutionImg: any, size?: { width?: number; height?: number }, imgJson?: any, mainSector?: string) {\r\n if (!resolutionImg?.width || !resolutionImg?.height) {\r\n // Kiểm tra nếu không có thông tin độ phân giải ảnh thì báo lỗi và ẩn loading\r\n if (isPlatformBrowser(this.platformId))\r\n console.error('resolutionImg is invalid', resolutionImg);\r\n this.hideLoading(200);\r\n return;\r\n }\r\n\r\n // Đổi tên mainSector tương ứng nếu có mainSector\r\n if (mainSector) {\r\n const nameComponent = {\r\n category: 'danh_muc',\r\n ecommerce: 'san_pham',\r\n food_drink: 'mon_an_thuc_uong',\r\n combo: 'nhom_san_pham',\r\n news: 'tin_tuc',\r\n web: 'web',\r\n app: 'app',\r\n service: 'dich_vu',\r\n service_time: 'dich_vu_thoi_gian',\r\n recruitment: 'tuyen_dung',\r\n snimei: 'bao_hanh',\r\n travel: 'du_lich',\r\n hotel: 'khach_san',\r\n room: 'phong',\r\n comment: 'binh_luan',\r\n }\r\n\r\n // Đặt tên cho ảnh theo sector\r\n const nameSector = this.translateService.instant(nameComponent[mainSector ?? 'ecommerce']);\r\n imgJson.name = this.translateService.instant('hinh_anh') + ' ' + nameSector.toLowerCase();\r\n }\r\n\r\n // Gán url và kích thước vào 5 thiết bị khi mới add ra\r\n this.devices.forEach((device) => {\r\n // Gán url ảnh cho từng thiết bị\r\n if (url) {\r\n imgJson.staticdata.img[device.value + '_img'] = url;\r\n }\r\n\r\n // Resize ảnh sao cho không vượt quá kích thước thiết bị, đồng thời giữ đúng aspect ratio\r\n const maxWidth = isNaN(Number(size?.width)) ? device.width : size.width;\r\n const maxHeight = isNaN(Number(size?.height)) ? device.height : size.height;\r\n\r\n // Kiểm tra nếu ảnh nhỏ hơn hoặc bằng cả chiều rộng và chiều cao của thiết bị\r\n const isImageFits = resolutionImg.width <= maxWidth && resolutionImg.height <= maxHeight;\r\n\r\n let finalWidth: number;\r\n let finalHeight: number;\r\n\r\n if (isImageFits) {\r\n // Giữ nguyên ảnh nếu nó nhỏ hơn hoặc bằng thiết bị\r\n finalWidth = resolutionImg.width;\r\n finalHeight = resolutionImg.height;\r\n }\r\n else {\r\n // Tính scale để giữ đúng tỉ lệ và fit vào device\r\n const scale = Math.min(\r\n maxWidth / resolutionImg.width,\r\n maxHeight / resolutionImg.height\r\n );\r\n\r\n finalWidth = Math.round(resolutionImg.width * scale);\r\n finalHeight = Math.round(resolutionImg.height * scale);\r\n }\r\n\r\n // Gán kích thước ảnh cho từng thiết bị, giữ nguyên các thuộc tính khác\r\n imgJson[device.value + '_class'] = {\r\n ...imgJson['desktop_class'],\r\n image: {\r\n ...imgJson['desktop_class']['image'],\r\n width: `${finalWidth}px`,\r\n height: `${finalHeight}px`,\r\n }\r\n };\r\n });\r\n\r\n // Kiểm tra object có otype hay không để truyền đúng tham số cho hàm addObject\r\n const hasOType = Boolean(_this.data?.otype);\r\n\r\n this.pagesService.addObject(imgJson, hasOType ? null : _this.data, hasOType ? _this.data : null)\r\n .then((data) => {\r\n // Thêm object thành công thì báo thành công, ngược lại báo lỗi\r\n if (data) {\r\n this.createMessage('success', 'them_vat_the_thanh_cong');\r\n } else {\r\n this.createMessage('error', 'them_vat_the_that_bai');\r\n }\r\n }).catch((error) => {\r\n // Lỗi khi thêm object thì báo lỗi và ẩn loading\r\n if (isPlatformBrowser(this.platformId))\r\n console.error('addObject error', error);\r\n this.createMessage('error', 'loi_khi_goi_ham_them_vat_the_anh');\r\n this.hideLoading(200);\r\n });\r\n }\r\n\r\n\r\n\r\n /**\r\n * hàm này dùng để copy block\r\n * @param id_page _id của page chứa block\r\n * @param block block có NHÁNH(objects) cần copy\r\n */\r\n public async handleCopyBlock(id_page: string, block: any): Promise<void> {\r\n const findBlock: any = await this.vhQueryAutoWeb.getBlock(block._id);\r\n if (block.isClone && findBlock) {\r\n await this.vhQueryAutoWeb.updateBlock(block._id, {\r\n ['desktop_position_' + id_page]: block['desktop_position_' + block.id_page],\r\n ['mobile_landscape_position_' + id_page]: block['mobile_landscape_position_' + block.id_page],\r\n ['mobile_portrait_position_' + id_page]: block['mobile_portrait_position_' + block.id_page],\r\n ['tablet_landscape_position_' + id_page]: block['tablet_landscape_position_' + block.id_page],\r\n ['tablet_portrait_position_' + id_page]: block['tablet_portrait_position_' + block.id_page],\r\n })\r\n\r\n const findPage: any = await this.vhQueryAutoWeb.getPage(id_page);\r\n if (!findPage.id_clone_blocks) findPage.id_clone_blocks = [];\r\n if (findPage && !findPage.id_clone_blocks.some((id: string) => id == block._id)) {\r\n findPage.id_clone_blocks.push(block._id);\r\n await this.vhQueryAutoWeb.updatePage(id_page, {\r\n id_clone_blocks: findPage.id_clone_blocks,\r\n });\r\n }\r\n return;\r\n }\r\n\r\n\r\n let data_block: any = {\r\n ...block,\r\n };\r\n // delete data_block.id_clone_objects;\r\n delete data_block._id;\r\n delete data_block.id_page;\r\n delete data_block.isClone;\r\n\r\n data_block.objects = [];\r\n data_block.id_page = id_page;\r\n data_block.name = block.name + '- Copy';\r\n this.devices.forEach((dv) => {\r\n const device = dv.value;\r\n data_block[device + '_position_' + id_page] = {\r\n ...block[device + '_position_' + block.id_page],\r\n };\r\n });\r\n const blockRes: any = await this.vhQueryAutoWeb.addBlock(data_block);\r\n if (block.objects && block.objects.length > 0) {\r\n for (const obj of block.objects) {\r\n await this.handleCopyObject('block', blockRes._id, obj);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Hàm này dùng để copy object\r\n * @param id_parent id của block hoặc object mà object sẽ add vào\r\n * @param object object có NHÁNH(objects) cần copy\r\n */\r\n public async handleCopyObject(type_parent: string | 'block' | 'object', id_parent: string, object: any): Promise<void> {\r\n const findObject: any = await this.vhQueryAutoWeb.getObject(object._id);\r\n if (object.isClone && findObject) {\r\n await this.vhQueryAutoWeb.updateObject(object._id, {\r\n ['desktop_position_' + id_parent]: object['desktop_position_' + (object.id_block || object.id_object)],\r\n ['mobile_landscape_position_' + id_parent]: object['mobile_landscape_position_' + (object.id_block || object.id_object)],\r\n ['mobile_portrait_position_' + id_parent]: object['mobile_portrait_position_' + (object.id_block || object.id_object)],\r\n ['tablet_landscape_position_' + id_parent]: object['tablet_landscape_position_' + (object.id_block || object.id_object)],\r\n ['tablet_portrait_position_' + id_parent]: object['tablet_portrait_position_' + (object.id_block || object.id_object)],\r\n })\r\n\r\n const findParent: any = (type_parent == 'block')\r\n ? await this.vhQueryAutoWeb.getBlock(id_parent)\r\n : await this.vhQueryAutoWeb.getObject(id_parent);\r\n if (!findParent.id_clone_objects) findParent.id_clone_objects = [];\r\n if (findParent && !findParent.id_clone_objects.some((id: string) => id == object._id)) {\r\n findParent.id_clone_objects.push(object._id);\r\n if (type_parent == 'block') {\r\n await this.vhQueryAutoWeb.updateBlock(id_parent, {\r\n id_clone_objects: findParent.id_clone_objects,\r\n });\r\n }\r\n if (type_parent == 'object') {\r\n await this.vhQueryAutoWeb.updateObject(id_parent, {\r\n id_clone_objects: findParent.id_clone_objects,\r\n });\r\n }\r\n }\r\n return;\r\n }\r\n\r\n let new_data: any = {\r\n ...object,\r\n };\r\n // delete new_data.id_clone_objects;\r\n delete new_data._id;\r\n delete new_data.isClone;\r\n new_data.objects = [];\r\n if (type_parent == 'block') {\r\n new_data.id_block = id_parent;\r\n delete new_data.id_object;\r\n }\r\n if (type_parent == 'object') {\r\n new_data.id_object = id_parent;\r\n delete new_data.id_block;\r\n }\r\n new_data.name = object.name + '- Copy';\r\n this.devices.forEach((dv) => {\r\n const device = dv.value;\r\n new_data[device + '_position_' + id_parent] = {\r\n ...object[device + '_position_' + (object.id_block || object.id_object)],\r\n };\r\n });\r\n const objectRes: any = await this.vhQueryAutoWeb.addObject(new_data);\r\n if (object.objects && object.objects.length > 0) {\r\n for (const obj of object.objects) {\r\n await this.handleCopyObject('object', objectRes._id, obj);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * hàm tạo trang mới dựa vào trang truyền vào, ko trùng name, link\r\n * @param page page không cần nhánh\r\n * @returns \r\n */\r\n public async handleCopyPage(page: any) {\r\n const dataAdd = { ...page };\r\n\r\n const pages: any = await this.vhQueryAutoWeb.getPages();\r\n // Hậu tố thêm vào khi trùng lặp\r\n const COPY_SUFFIX = '-Copy';\r\n\r\n /**\r\n * Hàm này nhận một giá trị gốc, kiểm tra xem nó có tồn tại trong mảng `pages` không.\r\n * Nếu có, nó sẽ tiếp tục thêm hậu tố `-Copy` cho đến khi giá trị đó là duy nhất.\r\n * @param originalValue - Giá trị ban đầu (ví dụ: 'Trang chủ')\r\n * @param field - Tên trường cần kiểm tra (ví dụ: 'name' hoặc 'link')\r\n * @returns - Giá trị mới, đảm bảo không trùng lặp\r\n */\r\n function generateUniqueValue(originalValue: string, field: string): string {\r\n let newValue = originalValue + COPY_SUFFIX;\r\n\r\n // Lặp lại việc thêm '-Copy' cho đến khi `newValue` không còn tồn tại trong danh sách\r\n while (pages.some(p => p[field] === newValue)) {\r\n newValue += COPY_SUFFIX;\r\n }\r\n\r\n return newValue;\r\n }\r\n\r\n Object.keys(dataAdd).forEach(key => {\r\n if (key.startsWith('name_')) {\r\n dataAdd[key] = generateUniqueValue(dataAdd[key], key);\r\n }\r\n })\r\n\r\n dataAdd.link = generateUniqueValue(dataAdd.link, 'link');\r\n\r\n delete dataAdd._id;\r\n delete dataAdd.freeblocks\r\n\r\n if (pages.some((p: any) => p._id == page._id)) {\r\n // nếu trang từ dự án khác thì add mới tất cả, ko clone được\r\n delete dataAdd.id_clone_blocks\r\n }\r\n\r\n const res: any = await this.vhQueryAutoWeb.addPage(dataAdd);\r\n\r\n if (page.blocks && page.blocks.length > 0) {\r\n for (const block of page.blocks) {\r\n await this.handleCopyBlock(res._id, block);\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Lấy chiều cao gốc của ảnh\r\n * @param url Đưỡng dẫn hình ảnh\r\n * @returns Promise<{width: number, height: number}>\r\n * @example \r\n * this.getImageHeight('https://example.com/img.png')\r\n * .then(imgHeight => console.log('Chiều cao gốc của ảnh', imgHeight))\r\n * .catch(err => console.log('Lỗi tải ảnh', err)});\r\n */\r\n public getImageSize(url: string): Promise<{ width: number, height: number }> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.src = url;\r\n\r\n img.onload = () => {\r\n resolve({\r\n width: img.width,\r\n height: img.height,\r\n }); // lấy size gốc của ảnh\r\n };\r\n\r\n img.onerror = (err) => {\r\n reject(err);\r\n };\r\n });\r\n }\r\n\r\n\r\n\r\n /**\r\n * Kiểm tra nội dung script có hợp lệ không.\r\n * - Hợp lệ nếu:\r\n * + Là mã JS chạy được\r\n * + Hoặc là một đoạn <script>...</script>\r\n */\r\n checkInvalidScript(scriptContent: string): boolean {\r\n if (!scriptContent || typeof scriptContent !== 'string') return true;\r\n\r\n const trimmed = scriptContent.trim();\r\n\r\n // Nếu chuỗi chỉ là một từ đơn => chắc chắn sai\r\n if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(trimmed)) return true;\r\n\r\n // Nếu có chứa thẻ <script> thì coi là hợp lệ (sẽ xử lý riêng)\r\n if (/<script[\\s\\S]*?>[\\s\\S]*?<\\/script>/i.test(trimmed)) return false;\r\n\r\n // Nếu không có thẻ script, thử parse JS\r\n try {\r\n new Function(trimmed); // kiểm tra cú pháp\r\n return false; // hợp lệ\r\n } catch {\r\n return true; // lỗi cú pháp\r\n }\r\n }\r\n\r\n /**\r\n * Nhúng các script từ setup (có thể nhiều) dựa trên id và type vào elementRef\r\n * @param id ID của page, block hoặc object\r\n * @param type Loại data_type ('page', 'block', hoặc 'object')\r\n * @param elementRef ElementRef để nhúng script\r\n */\r\n public embeddedScriptObject(id: string, type: string, elementRef: any): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n let query: any = { data_type: { $eq: type } };\r\n\r\n // Gán field tương ứng với type\r\n switch (type) {\r\n case 'page':\r\n query.page_id = { $eq: id };\r\n break;\r\n case 'block':\r\n query.block_id = { $eq: id };\r\n break;\r\n case 'object':\r\n query.object_id = { $eq: id };\r\n break;\r\n default:\r\n return reject(new Error(`Invalid type: ${type}`));\r\n }\r\n\r\n this.vhQueryAutoWeb.getSetups_byFields(query)\r\n .then((response: any[]) => {\r\n if (!response?.length) return resolve();\r\n\r\n const targetElement: HTMLElement = elementRef?.nativeElement;\r\n if (!targetElement) {\r\n console.warn('elementRef không hợp lệ');\r\n return resolve();\r\n }\r\n\r\n response.forEach(item => {\r\n if (!item.active || !item.data) return;\r\n\r\n const scriptData = item.data.trim();\r\n\r\n if (this.checkInvalidScript(scriptData)) {\r\n console.warn('Script không hợp lệ, bỏ qua:', scriptData);\r\n return;\r\n }\r\n\r\n // Regex tách các script\r\n const srcRegex = /<script[^>]*src=[\"']([^\"']+)[\"'][^>]*><\\/script>/i;\r\n const matchSrc = scriptData.match(srcRegex);\r\n\r\n if (matchSrc && matchSrc[1]) {\r\n // Có src → nhúng script file ngoài\r\n const src = matchSrc[1];\r\n if (targetElement.querySelector(`script[src=\"${src}\"]`)) {\r\n console.log('Script đã tồn tại:', src);\r\n return;\r\n }\r\n\r\n const scriptEl = document.createElement('script');\r\n scriptEl.type = 'text/javascript';\r\n scriptEl.src = src;\r\n scriptEl.async = false;\r\n targetElement.appendChild(scriptEl);\r\n } else {\r\n // Inline script\r\n const inlineRegex = /<script[^>]*>([\\s\\S]*?)<\\/script>/gi;\r\n const matches = [...scriptData.matchAll(inlineRegex)];\r\n\r\n if (matches.length) {\r\n matches.forEach(m => {\r\n const scriptEl = document.createElement('script');\r\n scriptEl.type = 'text/javascript';\r\n scriptEl.text = m[1];\r\n targetElement.appendChild(scriptEl);\r\n });\r\n } else {\r\n // Nếu chỉ là JS code thuần (không có thẻ <script>)\r\n const scriptEl = document.createElement('script');\r\n scriptEl.type = 'text/javascript';\r\n scriptEl.text = scriptData;\r\n targetElement.appendChild(scriptEl);\r\n }\r\n }\r\n });\r\n\r\n resolve();\r\n })\r\n .catch(err => {\r\n console.error('Lỗi khi lấy script:', err);\r\n reject(err);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Mảng màu sắc theme\r\n */\r\n themeColors = [\r\n \"#008848\",\r\n \"#f5a62f\",\r\n \"#ff000a\"\r\n ];\r\n /** Số lượng màu mẫu tối đa */\r\n cpMaxPresetColorsLength: number = 30;\r\n setupThemeColor: any;\r\n\r\n /**\r\n * Lấy cấu hình màu sắc theme\r\n */\r\n initThemeColorConfig() {\r\n this.vhQueryAutoWeb.getSetups_byFields({ type: { $in: ['theme_color'] } }).then((res: any) => {\r\n this.setupThemeColor = res.find((ele) => ele.type == 'theme_color');\r\n this.themeColors = this.setupThemeColor ? this.setupThemeColor.themeColors : this.themeColors;\r\n // Nếu chưa có cấu hình màu thì thêm\r\n if (!this.setupThemeColor) {\r\n this.vhQueryAutoWeb.addSetup({\r\n type: 'theme_color',\r\n themeColors: this.themeColors\r\n }).then((res: any) => {\r\n this.setupThemeColor = res.data;\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Khi có sự thay đổi màu sắc từ color picker\r\n */\r\n presetColorsChange(colors: string[]) {\r\n this.themeColors = colors;\r\n this.vhQueryAutoWeb.updateSetup(this.setupThemeColor._id, {\r\n themeColors: this.themeColors\r\n }).then((bool: any) => {\r\n // console.log('bool', bool);\r\n }).catch((error: any) => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n\r\n /** \r\n * Hàm kiểm tra \r\n * - Ratio có bị lệch nhiều hay không hoặc \r\n * - Kích thước có lớn hơn nhiều so với kích thước hiển thị hay không?\r\n * @param imgSize Kích thước của file ảnh gốc\r\n * @param containerSize Kích thước thực tế người dùng thấy\r\n */\r\n checkRatioDesignImgSize(imgSize, containerSize) {\r\n // Ratio\r\n const imgRatio = imgSize.width / imgSize.height;\r\n const containerRatio = containerSize.width / containerSize.height;\r\n\r\n // Ratio lệch trên 10% → ảnh bị méo → return true\r\n const ratioDiff = Math.abs(imgRatio - containerRatio) / containerRatio;\r\n if (ratioDiff > 0.1) {\r\n return true;\r\n }\r\n\r\n // Tại đây: ratio giống nhau hoặc lệch ít → xét về kích thước\r\n const widthFactor = imgSize.width / containerSize.width;\r\n const heightFactor = imgSize.height / containerSize.height;\r\n\r\n // Ảnh lớn hơn container nhiều → ảnh nặng → giảm PageSpeed → return true\r\n if (\r\n widthFactor > 1.5\r\n || heightFactor > 1.5\r\n ) {\r\n return true;\r\n }\r\n\r\n // Ảnh lớn hơn chút nhưng không ảnh hưởng PageSpeed → return false\r\n return false;\r\n }\r\n\r\n\r\n /**\r\n * XỬ lý gán giá trị tương ứng vào thuộc tính width, height cho thẻ img\r\n * @param containerElement \r\n */\r\n async applyImageSizesForCkEditor(containerElement: HTMLElement): Promise<void> {\r\n const imagesWidget = Array.from(containerElement.querySelectorAll(\r\n 'span.image-inline, figure.image'\r\n ));\r\n\r\n for (const imgWidget of imagesWidget) {\r\n const img = imgWidget.querySelector('img');\r\n if (!img) continue;\r\n\r\n // Lấy kích thước thực của ảnh\r\n const imgSize = await this.getImageSize(img.src);\r\n\r\n // Lấy width/height trong style của widget (Nếu có)\r\n const styleWidget = imgWidget.getAttribute('style');\r\n const resize = this.getSizeFromStyle(styleWidget);\r\n\r\n // Nếu widget không có width thì dùng width của hình (Trường hợp chưa resize ảnh)\r\n resize.width ??= imgSize.width;\r\n\r\n // TH1: Nếu so sánh width resize == width ảnh thì dùng width của hình (Trường hợp chưa resize ảnh)\r\n // TH2: Tính height theo tỉ lệ của ảnh và width resize\r\n resize.height = resize.width == imgSize.width\r\n ? imgSize.height\r\n : Math.round((imgSize.height * resize.width) / imgSize.width);\r\n\r\n // Gán attributes\r\n img.setAttribute('width', String(resize.width));\r\n img.setAttribute('height', String(resize.height));\r\n\r\n // Thêm height:auto vào style img nếu chưa có\r\n const oldStyle = img.getAttribute('style') || '';\r\n if (!/height\\s*:\\s*auto/i.test(oldStyle)) {\r\n img.setAttribute('style', oldStyle + 'height:auto;');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Lấy kích thước resize trong ck từ style\r\n */\r\n getSizeFromStyle(style?): { width: number | null; height: number | null } {\r\n if (!style) return { width: null, height: null };\r\n const width = style.match(/width\\s*:\\s*(\\d+)px/);\r\n const height = style.match(/height\\s*:\\s*(\\d+)px/);\r\n\r\n return {\r\n width: width ? Number(width[1]) : null,\r\n height: height ? Number(height[1]) : null\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { VhQueryAutoWeb } from 'vhautowebdb';\r\n\r\n/**\r\n * Service xử lý các phương thức liên quan của THEME.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ThemeService {\r\n\r\n /**\r\n * Mảng màu sắc theme\r\n */\r\n themeColors = [\r\n \"#008848\",\r\n \"#f5a62f\",\r\n \"#ff000a\"\r\n ];\r\n /** Số lượng màu mẫu tối đa */\r\n cpMaxPresetColorsLength: number = 30;\r\n setupThemeColor: any;\r\n\r\n\r\n constructor(\r\n private vhQueryAutoWeb: VhQueryAutoWeb\r\n ) {\r\n // Lấy cấu hình màu sắc theme\r\n this.vhQueryAutoWeb.getSetups_byFields({ type: { $in: ['theme_color'] } }).then((res: any) => {\r\n this.setupThemeColor = res.find((ele) => ele.type == 'theme_color');\r\n this.themeColors = this.setupThemeColor ? this.setupThemeColor.themeColors : this.themeColors;\r\n // Nếu chưa có cấu hình màu thì thêm\r\n if(!this.setupThemeColor) {\r\n this.vhQueryAutoWeb.addSetup({\r\n type: 'theme_color',\r\n themeColors: this.themeColors\r\n }).then((res: any) => {\r\n this.setupThemeColor = res.data;\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Khi có sự thay đổi màu sắc từ color picker\r\n */\r\n presetColorsChange(colors: string[]) {\r\n this.themeColors = colors;\r\n this.vhQueryAutoWeb.updateSetup(this.setupThemeColor._id, {\r\n themeColors: this.themeColors\r\n }).then((bool: any) => {\r\n // console.log('bool', bool);\r\n }).catch((error: any) => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n}\r\n","import { VhQueryAutoWeb } from 'vhautowebdb';\r\nimport { FunctionService } from './function.service';\r\n\r\n\r\nexport abstract class AtwUpdateDbBlock {\r\n \r\n type: any;\r\n blockChoosing: any;\r\n device: any;\r\n class: any;\r\n config: any;\r\n staticdata: any;\r\n position: any;\r\n\r\n\r\n constructor(\r\n public vhQueryAutoWeb: VhQueryAutoWeb,\r\n public functionService: FunctionService\r\n ) { }\r\n\r\n\r\n /**\r\n * Hàm update object vào database.\r\n */\r\n updateObject() {\r\n if (this.type == 'admin') {\r\n if (!this.blockChoosing.hasOwnProperty('fieldUpdate')) this.blockChoosing['fieldUpdate'] = [];\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.blockChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.blockChoosing) \r\n if (!this.blockChoosing['fieldUpdate'].includes(this.device + '_class')) this.blockChoosing['fieldUpdate'].push(this.device + '_class');\r\n if (!this.blockChoosing['fieldUpdate'].includes(this.device + '_config')) this.blockChoosing['fieldUpdate'].push(this.device + '_config');\r\n if (!this.blockChoosing['fieldUpdate'].includes('staticdata')) this.blockChoosing['fieldUpdate'].push('staticdata');\r\n return;\r\n }\r\n this.vhQueryAutoWeb.updateBlock(this.blockChoosing._id, {\r\n [this.device + '_class']: this.class,\r\n [this.device + '_config']: this.config,\r\n staticdata: this.staticdata\r\n }).then((bool) => {\r\n // console.log('updateBlock', bool);\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Hàm update class vào database.\r\n */\r\n updateClass() {\r\n if (this.type == 'admin') {\r\n if (!this.blockChoosing.hasOwnProperty('fieldUpdate')) this.blockChoosing['fieldUpdate'] = [];\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.blockChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.blockChoosing)\r\n if (!this.blockChoosing['fieldUpdate'].includes(this.device + '_class')) this.blockChoosing['fieldUpdate'].push(this.device + '_class');\r\n return;\r\n }\r\n this.vhQueryAutoWeb.updateBlock(this.blockChoosing._id, {\r\n [this.device + '_class']: this.class\r\n }).then((bool) => {\r\n // console.log('updateBlock', bool);\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Hàm update config vào database.\r\n */\r\n updateConfig() {\r\n if (this.type == 'admin') {\r\n if (!this.blockChoosing.hasOwnProperty('fieldUpdate')) this.blockChoosing['fieldUpdate'] = [];\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.blockChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.blockChoosing)\r\n if (!this.blockChoosing['fieldUpdate'].includes(this.device + '_config')) this.blockChoosing['fieldUpdate'].push(this.device + '_config');\r\n return;\r\n }\r\n this.vhQueryAutoWeb.updateBlock(this.blockChoosing._id, {\r\n [this.device + '_config']: this.config\r\n }).then((bool) => {\r\n // console.log('updateBlock', bool);\r\n });\r\n }\r\n \r\n\r\n /**\r\n * Hàm update staticdata vào database.\r\n */\r\n updateStaticData() {\r\n if (this.type == 'admin') {\r\n if (!this.blockChoosing.hasOwnProperty('fieldUpdate')) this.blockChoosing['fieldUpdate'] = [];\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.blockChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.blockChoosing)\r\n if (!this.blockChoosing['fieldUpdate'].includes('staticdata')) this.blockChoosing['fieldUpdate'].push('staticdata');\r\n return;\r\n }\r\n this.vhQueryAutoWeb\r\n .updateBlock(this.blockChoosing._id, { \r\n staticdata: this.staticdata \r\n }).then((bool) => {\r\n // console.log('updateBlock', bool);\r\n });\r\n }\r\n\r\n //Hàm update position\r\n updatePosition() { \r\n if (this.type == 'admin') {\r\n if (!this.blockChoosing.hasOwnProperty('fieldUpdate')) this.blockChoosing['fieldUpdate'] = [];\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.blockChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.blockChoosing)\r\n if (!this.blockChoosing['fieldUpdate'].includes(this.device + '_position_')) this.blockChoosing['fieldUpdate'].push(this.device + '_position_');\r\n return;\r\n }\r\n this.vhQueryAutoWeb\r\n .updateBlock(this.blockChoosing._id, {\r\n [this.device + '_position_']: this.position,\r\n })\r\n .then((bool: any) => { \r\n });\r\n }\r\n}\r\n","import { VhQueryAutoWeb } from 'vhautowebdb';\r\nimport { FunctionService } from './function.service';\r\n\r\nexport abstract class AtwUpdateDbObject {\r\n type: any;\r\n objectChoosing: any;\r\n device: any;\r\n class: any;\r\n config: any;\r\n staticdata: any;\r\n\r\n constructor(\r\n public vhQueryAutoWeb: VhQueryAutoWeb,\r\n public functionService: FunctionService\r\n ) {\r\n\r\n }\r\n\r\n /**\r\n * Hàm update object vào database.\r\n */\r\n updateObject() {\r\n if (this.type == 'admin') {\r\n if (!this.objectChoosing.hasOwnProperty('fieldUpdate')) this.objectChoosing['fieldUpdate'] = []\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.objectChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.objectChoosing)\r\n if (!this.objectChoosing['fieldUpdate'].includes(this.device + '_class')) this.objectChoosing['fieldUpdate'].push(this.device + '_class')\r\n if (!this.objectChoosing['fieldUpdate'].includes(this.device + '_config')) this.objectChoosing['fieldUpdate'].push(this.device + '_config')\r\n if (!this.objectChoosing['fieldUpdate'].includes('staticdata')) this.objectChoosing['fieldUpdate'].push('staticdata')\r\n return;\r\n }\r\n this.vhQueryAutoWeb.updateObject(this.objectChoosing._id, {\r\n [this.device + '_class']: this.class,\r\n [this.device + '_config']: this.config,\r\n staticdata: this.staticdata\r\n })\r\n\r\n }\r\n /**\r\n *Hàm update class vào database.\r\n */\r\n updateClass() {\r\n if (this.type == 'admin') { \r\n if (!this.objectChoosing.hasOwnProperty('fieldUpdate')) this.objectChoosing['fieldUpdate'] = []\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.objectChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.objectChoosing)\r\n if (!this.objectChoosing['fieldUpdate'].includes(this.device + '_class')) this.objectChoosing['fieldUpdate'].push(this.device + '_class')\r\n return;\r\n }\r\n this.vhQueryAutoWeb.updateObject(this.objectChoosing._id, {\r\n [this.device + '_class']: this.class\r\n })\r\n\r\n }\r\n\r\n updateConfig() {\r\n if (this.type == 'admin') {\r\n if (!this.objectChoosing.hasOwnProperty('fieldUpdate')) this.objectChoosing['fieldUpdate'] = []\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.objectChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.objectChoosing)\r\n if (!this.objectChoosing['fieldUpdate'].includes(this.device + '_config')) this.objectChoosing['fieldUpdate'].push(this.device + '_config')\r\n return;\r\n }\r\n this.vhQueryAutoWeb.updateObject(this.objectChoosing._id, {\r\n [this.device + '_config']: this.config\r\n })\r\n }\r\n\r\n updateClassAndConfig() {\r\n if (this.type == 'admin') {\r\n if (!this.objectChoosing.hasOwnProperty('fieldUpdate')) this.objectChoosing['fieldUpdate'] = []\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.objectChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.objectChoosing)\r\n if (!this.objectChoosing['fieldUpdate'].includes(this.device + '_class')) this.objectChoosing['fieldUpdate'].push(this.device + '_class')\r\n if (!this.objectChoosing['fieldUpdate'].includes(this.device + '_config')) this.objectChoosing['fieldUpdate'].push(this.device + '_config')\r\n return;\r\n }\r\n this.vhQueryAutoWeb.updateObject(this.objectChoosing._id, {\r\n [this.device + '_config']: this.config,\r\n [this.device + '_class']: this.class,\r\n });\r\n }\r\n\r\n /**\r\n * image có setups\r\n * Cập nhật Setups vào database.\r\n */\r\n updateSetups() {\r\n if (this.type == 'admin') {\r\n if (!this.objectChoosing.hasOwnProperty('fieldUpdate')) this.objectChoosing['fieldUpdate'] = []\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.objectChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.objectChoosing)\r\n if (!this.objectChoosing['fieldUpdate'].includes('setups')) this.objectChoosing['fieldUpdate'].push('setups')\r\n return;\r\n }\r\n // Gọi hàm truy vấn cơ sở dữ liệu ở đây\r\n this.vhQueryAutoWeb\r\n .updateObject(this.objectChoosing._id, { setups: this.objectChoosing.setups })\r\n .then((bool) => {\r\n // console.log('updateObject', bool);\r\n });\r\n }\r\n\r\n updateStaticData() {\r\n if (this.type == 'admin') {\r\n if (!this.objectChoosing.hasOwnProperty('fieldUpdate')) this.objectChoosing['fieldUpdate'] = []\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.objectChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.objectChoosing)\r\n if (!this.objectChoosing['fieldUpdate'].includes('staticdata')) this.objectChoosing['fieldUpdate'].push('staticdata')\r\n return;\r\n }\r\n // Gọi hàm truy vấn cơ sở dữ liệu ở đây\r\n this.vhQueryAutoWeb\r\n .updateObject(this.objectChoosing._id, { staticdata: this.staticdata })\r\n .then((bool) => {\r\n // console.log('updateObject', bool);\r\n });\r\n }\r\n\r\n // menu có groups\r\n updateGroups() {\r\n if (this.type == 'admin') {\r\n if (!this.objectChoosing.hasOwnProperty('fieldUpdate')) this.objectChoosing['fieldUpdate'] = []\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == this.objectChoosing._id)) this.functionService.objectsAndBlocksUpdated.push(this.objectChoosing)\r\n if (!this.objectChoosing['fieldUpdate'].includes('groups')) this.objectChoosing['fieldUpdate'].push('groups')\r\n return;\r\n }\r\n this.vhQueryAutoWeb\r\n .updateObject(this.objectChoosing._id, {\r\n groups: this.objectChoosing['groups'],\r\n })\r\n .then(\r\n (bool) => {\r\n \r\n },\r\n (error) => {\r\n console.error(error);\r\n }\r\n );\r\n }\r\n\r\n}\r\n","import { VhEventMediator, VhQueryAutoWeb } from 'vhautowebdb';\r\nimport { FunctionService } from './function.service';\r\n\r\nexport abstract class AtwUpdateDbComponent {\r\n type: any;\r\n device: any;\r\n class: any;\r\n config: any;\r\n staticdata: any;\r\n position: any;\r\n\r\n objectChoosing: any;\r\n blockChoosing: any;\r\n constructor(\r\n public vhQueryAutoWeb: VhQueryAutoWeb,\r\n public vhEventMediator: VhEventMediator,\r\n public functionService: FunctionService\r\n ) { }\r\n\r\n // Trả về object hoặc block đang được chọn\r\n protected getTargetChoosing() {\r\n return this.objectChoosing ?? this.blockChoosing;\r\n }\r\n\r\n protected getUpdateMethod() {\r\n return this.objectChoosing ? this.vhQueryAutoWeb.updateObject : this.vhQueryAutoWeb.updateBlock;\r\n }\r\n\r\n protected updateFieldUpdate(fields: string[]) {\r\n const target = this.getTargetChoosing();\r\n if (!target.hasOwnProperty('fieldUpdate')) target['fieldUpdate'] = [];\r\n if (!this.functionService.objectsAndBlocksUpdated.some((ele) => ele._id == target._id)) {\r\n this.functionService.objectsAndBlocksUpdated.push(target);\r\n }\r\n for (const field of fields) {\r\n if (!target['fieldUpdate'].includes(field)) {\r\n target['fieldUpdate'].push(field);\r\n }\r\n }\r\n }\r\n\r\n updateObject() {\r\n const target = this.getTargetChoosing();\r\n const fields = [`${this.device}_class`, `${this.device}_config`, 'staticdata'];\r\n if (this.type === 'admin') {\r\n this.updateFieldUpdate(fields);\r\n return;\r\n }\r\n this.getUpdateMethod().call(this.vhQueryAutoWeb, target._id, {\r\n [fields[0]]: this.class,\r\n [fields[1]]: this.config,\r\n staticdata: this.staticdata\r\n });\r\n }\r\n\r\n updateClass() {\r\n const target = this.getTargetChoosing();\r\n const field = `${this.device}_class`;\r\n if (this.type === 'admin') {\r\n this.updateFieldUpdate([field]);\r\n return;\r\n }\r\n this.getUpdateMethod().call(this.vhQueryAutoWeb, target._id, {\r\n [field]: this.class\r\n });\r\n }\r\n\r\n updateConfig() {\r\n const target = this.getTargetChoosing();\r\n const field = `${this.device}_config`;\r\n if (this.type === 'admin') {\r\n this.updateFieldUpdate([field]);\r\n return;\r\n }\r\n this.getUpdateMethod().call(this.vhQueryAutoWeb, target._id, {\r\n [field]: this.config\r\n });\r\n }\r\n\r\n updateStaticData() {\r\n const target = this.getTargetChoosing();\r\n if (this.type === 'admin') {\r\n this.updateFieldUpdate(['staticdata']);\r\n return;\r\n }\r\n this.getUpdateMethod().call(this.vhQueryAutoWeb, target._id, {\r\n staticdata: this.staticdata\r\n });\r\n }\r\n\r\n updatePosition() {\r\n const target = this.getTargetChoosing();\r\n const field = `${this.device}_position_`;\r\n if (this.type === 'admin') {\r\n this.updateFieldUpdate([field]);\r\n return;\r\n }\r\n this.getUpdateMethod().call(this.vhQueryAutoWeb, target._id, {\r\n [field]: this.position\r\n });\r\n }\r\n\r\n updateSetups() {\r\n const target = this.getTargetChoosing();\r\n if (this.type === 'admin') {\r\n this.updateFieldUpdate(['setups']);\r\n return;\r\n }\r\n if (this.objectChoosing) {\r\n this.vhQueryAutoWeb\r\n .updateObject(target._id, { setups: target.setups })\r\n .then(() => {});\r\n }\r\n }\r\n\r\n updateGroups() {\r\n const target = this.getTargetChoosing();\r\n if (this.type === 'admin') {\r\n this.updateFieldUpdate(['groups']);\r\n return;\r\n }\r\n if (this.objectChoosing) {\r\n this.vhQueryAutoWeb\r\n .updateObject(target._id, { groups: target.groups })\r\n .then(() => {}, (err) => console.error(err));\r\n }\r\n }\r\n\r\n updateClassAndConfig() {\r\n const target = this.getTargetChoosing();\r\n const fields = [`${this.device}_class`, `${this.device}_config`];\r\n if (this.type === 'admin') {\r\n this.updateFieldUpdate(fields);\r\n return;\r\n }\r\n this.getUpdateMethod().call(this.vhQueryAutoWeb, target._id, {\r\n [fields[0]]: this.class,\r\n [fields[1]]: this.config\r\n });\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.JsonDataService","i2","i3","i4.LanguageService","i8.LanguageService","i9.PagesService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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AE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE;SAC1tR,CAAC;;AAEF,QAAA,IAAA,CAAA,kBAAkB,GAAQ;AACxB,YAAA,QAAQ,EAAE;AACR,gBAAA,OAAO,EAAE;oBACP,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACzD,iBAAA;AACD,gBAAA,gBAAgB,EAAE,IAAI;AACvB,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,gBAAgB,EAAE,IAAI;AACvB,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,sBAAsB,EAAE;AACzE,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACpF,iBAAA;AACF,aAAA;SACF,CAAA;;AAED,QAAA,IAAA,CAAA,cAAc,GAAQ;AACpB,YAAA,OAAO,EAAE;gBACP,SAAS;gBACT,GAAG;gBACH,WAAW;gBACX,GAAG;gBACH,MAAM;gBACN,QAAQ;gBACR,eAAe;gBACf,WAAW;gBACX,WAAW;gBACX,aAAa;gBACb,GAAG;gBACH,MAAM;gBACN,GAAG;gBACH,cAAc;gBACd,cAAc;gBACd,UAAU;gBACV,GAAG;gBACH,YAAY;gBACZ,UAAU;gBACV,WAAW;gBACX,qBAAqB;gBACrB,GAAG;gBACH,MAAM;gBACN,WAAW;gBACX,GAAG;gBACH,aAAa;gBACb,GAAG;gBACH,SAAS;gBACT,QAAQ;gBACR,GAAG;gBACH,YAAY;gBACZ,GAAG;gBACH,MAAM;gBACN,MAAM;gBACN,aAAa;AACd,aAAA;AACD,YAAA,QAAQ,EAAE;gBACR,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC9C,gBAAgB,EAAE,IAAI;AACvB,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,OAAO,EAAE;oBACP,oBAAoB;oBACpB,OAAO;oBACP,OAAO;oBACP,aAAa;oBACb,qBAAqB;oBACrB,QAAQ;oBACR,4BAA4B;oBAC5B,8BAA8B;oBAC9B,wBAAwB;oBACxB,oBAAoB;oBACpB,iBAAiB;oBACjB,OAAO;oBACP,kBAAkB;oBAClB,sBAAsB;oBACtB,SAAS;oBACT,yBAAyB;oBACzB,6BAA6B;oBAC7B,mBAAmB;oBACnB,2BAA2B;oBAC3B,SAAS;oBACT,sBAAsB;oBACtB,yBAAyB;oBACzB,aAAa;oBACb,cAAc;oBACd,0BAA0B;oBAC1B,OAAO;oBACP,yBAAyB;oBACzB,kBAAkB;oBAClB,yBAAyB;oBACzB,4BAA4B;oBAC5B,mBAAmB;oBACnB,kBAAkB;oBAClB,MAAM;oBACN,cAAc;oBACd,OAAO;oBACP,QAAQ;oBACR,YAAY;oBACZ,cAAc;oBACd,YAAY;oBACZ,uBAAuB;oBACvB,qBAAqB;oBACrB,mBAAmB;oBACnB,yBAAyB;oBACzB,qBAAqB;oBACrB,WAAW;oBACX,SAAS;oBACT,oBAAoB;oBACpB,8BAA8B;oBAC9B,OAAO;oBACP,OAAO;oBACP,6BAA6B;oBAC7B,kBAAkB;oBAClB,qBAAqB;oBACrB,aAAa;oBACb,mBAAmB;oBACnB,6BAA6B;oBAC7B,0DAA0D;oBAC1D,gBAAgB;oBAChB,wBAAwB;oBACxB,QAAQ;oBACR,iBAAiB;oBACjB,QAAQ;AACT,iBAAA;AACD,gBAAA,gBAAgB,EAAE,IAAI;AACvB,aAAA;AACD,YAAA,SAAS,EAAE;AACT,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,cAAc,EAAE,GAAG;gBACnB,MAAM,EAAE,IAAI,CAAC,YAAY;AAC1B,aAAA;AACD,YAAA,mBAAmB,EAAE;AACnB,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,cAAc,EAAE,GAAG;gBACnB,MAAM,EAAE,IAAI,CAAC,YAAY;AAC1B,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,sBAAsB,EAAE;AACzE,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACnF,oBAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACpF,iBAAA;AACF,aAAA;SACF,CAAC;AAEF;;AAEK;QACL,IAAuB,CAAA,uBAAA,GAAU,EAAE,CAAC;;AAIpC,QAAA,IAAA,CAAA,OAAO,GAAG;AACR,YAAA;AACE,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,UAAU;AACjB,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,MAAM,EAAE,GAAG;AACX,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,IAAI,EAAE,SAAS;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,kBAAkB;AACzB,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,MAAM,EAAE,GAAG;AACX,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,iBAAiB;AACxB,gBAAA,KAAK,EAAE,mBAAmB;AAC1B,gBAAA,KAAK,EAAE,GAAG;AACV,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,kBAAkB;AACzB,gBAAA,KAAK,EAAE,kBAAkB;AACzB,gBAAA,KAAK,EAAE,GAAG;AACV,gBAAA,MAAM,EAAE,GAAG;AACX,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,iBAAiB;AACxB,gBAAA,KAAK,EAAE,gBAAgB;AACvB,gBAAA,KAAK,EAAE,GAAG;AACV,gBAAA,MAAM,EAAE,GAAG;AACX,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;SACF,CAAC;;AAGF,QAAA,IAAA,CAAA,qBAAqB,GAAG;AACtB,YAAA;AACE,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,SAAS,EAAE,EAAE;AACb,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,GAAG,EAAE,QAAQ;AACd,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,SAAS,EAAE,SAAS;AACpB,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,GAAG,EAAE,MAAM;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,GAAG,EAAE,OAAO;AACb,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,SAAS,EAAE,UAAU;AACrB,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,GAAG,EAAE,QAAQ;AACd,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,SAAS,EAAE,kBAAkB;AAC7B,gBAAA,IAAI,EAAE,6BAA6B;AACnC,gBAAA,GAAG,EAAE,QAAQ;AACd,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,SAAS,EAAE,iBAAiB;AAC5B,gBAAA,IAAI,EAAE,6BAA6B;AACnC,gBAAA,GAAG,EAAE,QAAQ;AACd,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,IAAI,EAAE,6BAA6B;AACnC,gBAAA,GAAG,EAAE,OAAO;AACb,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,SAAS,EAAE,cAAc;AACzB,gBAAA,IAAI,EAAE,6BAA6B;AACnC,gBAAA,GAAG,EAAE,QAAQ;AACd,aAAA;SACF,CAAC;AA6sCF;;;;AAIK;QACL,IAAU,CAAA,UAAA,GAAQ,EAAE,CAAC;QACrB,IAAU,CAAA,UAAA,GAAQ,EAAE,CAAA;QAqHpB,IAAS,CAAA,SAAA,GAAQ,EAAE,CAAC;;AAgIpB,QAAA,IAAA,CAAA,oBAAoB,GAAW,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,eAAe,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,KAAI,IAAI,CAAC;QAClG,IAAe,CAAA,eAAA,GAAW,IAAI,CAAC;QAC/B,IAAgB,CAAA,gBAAA,GAAW,IAAI,CAAC;AAChC,QAAA,IAAA,CAAA,eAAe,GAAQ,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,iBAAiB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,eAAe,KAAI,EAAE,CAAC;AAErG;;;;;AAKG;AACH,QAAA,IAAA,CAAA,qBAAqB,GAAG;AACtB,YAAA,SAAS,EAAE;AACT,gBAAA,SAAS,EAAE,SAAS;AACrB,aAAA;AACD,YAAA,iBAAiB,EAAE;AACjB,gBAAA,wBAAwB,EAAE,cAAc;AACxC,gBAAA,kBAAkB,EAAE,yBAAyB;AAC9C,aAAA;AACD,YAAA,yBAAyB,EAAE;AACzB,gBAAA,wBAAwB,EAAE,mBAAmB;AAC7C,gBAAA,kBAAkB,EAAE,qCAAqC;AACzD,gBAAA,2BAA2B,EAAE,yCAAyC;AACvE,aAAA;AACD,YAAA,iBAAiB,EAAE;AACjB,gBAAA,wBAAwB,EAAE,eAAe;AACzC,gBAAA,kBAAkB,EAAE,0BAA0B;AAC/C,aAAA;AACD,YAAA,eAAe,EAAE;AACf,gBAAA,wBAAwB,EAAE,eAAe;AACzC,gBAAA,kBAAkB,EAAE,8BAA8B;AAClD,gBAAA,2BAA2B,EAAE,iCAAiC;AAC/D,aAAA;AACD,YAAA,cAAc,EAAE;AACd,gBAAA,wBAAwB,EAAE,gBAAgB;AAC1C,gBAAA,kBAAkB,EAAE,uBAAuB;AAC5C,aAAA;AACD,YAAA,qBAAqB,EAAE;AACrB,gBAAA,wBAAwB,EAAE,mBAAmB;AAC7C,gBAAA,2BAA2B,EAAE,gCAAgC;AAC9D,aAAA;AACD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,wBAAwB,EAAE,eAAe;AACzC,gBAAA,kBAAkB,EAAE,0BAA0B;AAC/C,aAAA;AACD,YAAA,mBAAmB,EAAE;AACnB,gBAAA,wBAAwB,EAAE,eAAe;AACzC,gBAAA,kBAAkB,EAAE,0CAA0C;AAC9D,gBAAA,2BAA2B,EAAE,oCAAoC;AAClE,aAAA;AACD,YAAA,WAAW,EAAE;AACX,gBAAA,SAAS,EAAE,QAAQ;AACpB,aAAA;AACD,YAAA,oBAAoB,EAAE;AACpB,gBAAA,SAAS,EAAE,eAAe;AAC3B,aAAA;AACD,YAAA,0BAA0B,EAAE;AAC1B,gBAAA,eAAe,EAAE,WAAW;AAC5B,gBAAA,gBAAgB,EAAE,WAAW;AAC9B,aAAA;AACD,YAAA,iBAAiB,EAAE;AACjB,gBAAA,SAAS,EAAE,WAAW;AACvB,aAAA;AACD,YAAA,gBAAgB,EAAE;AAChB,gBAAA,SAAS,EAAE,KAAK;AACjB,aAAA;AACD,YAAA,0BAA0B,EAAE;AAC1B,gBAAA,SAAS,EAAE,QAAQ;AACpB,aAAA;AACD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,SAAS,EAAE,cAAc;AAC1B,aAAA;AACD,YAAA,yBAAyB,EAAE;AACzB,gBAAA,SAAS,EAAE,eAAe;AAC3B,aAAA;AACD,YAAA,mBAAmB,EAAE;AACnB,gBAAA,SAAS,EAAE,SAAS;AACrB,aAAA;AACD,YAAA,eAAe,EAAE;AACf,gBAAA,SAAS,EAAE,KAAK;AACjB,aAAA;AACD,YAAA,aAAa,EAAE;AACb,gBAAA,SAAS,EAAE,WAAW;AACvB,aAAA;AACD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,SAAS,EAAE,UAAU;AACtB,aAAA;AACD,YAAA,yBAAyB,EAAE;AACzB,gBAAA,SAAS,EAAE,eAAe;AAC3B,aAAA;AACD,YAAA,mBAAmB,EAAE;AACnB,gBAAA,SAAS,EAAE,mBAAmB;AAC/B,aAAA;AACD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,SAAS,EAAE,aAAa;AACzB,aAAA;AACD,YAAA,oBAAoB,EAAE;AACpB,gBAAA,SAAS,EAAE,mBAAmB;AAC/B,aAAA;AACD,YAAA,mBAAmB,EAAE;AACnB,gBAAA,SAAS,EAAE,EAAE;AACd,aAAA;AACD,YAAA,sBAAsB,EAAE;AACtB,gBAAA,SAAS,EAAE,OAAO;AACnB,aAAA;AACD,YAAA,qBAAqB,EAAE;AACrB,gBAAA,SAAS,EAAE,cAAc;AAC1B,aAAA;AACD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,SAAS,EAAE,EAAE;AACd,aAAA;AACD,YAAA,mBAAmB,EAAE;AACnB,gBAAA,SAAS,EAAE,MAAM;AAClB,aAAA;AACD,YAAA,qBAAqB,EAAE;AACrB,gBAAA,SAAS,EAAE,EAAE;AACd,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,SAAS,EAAE,mBAAmB;AAC/B,aAAA;AACD,YAAA,WAAW,EAAE;AACX,gBAAA,wBAAwB,EAAE,UAAU;AACpC,gBAAA,SAAS,EAAE,EAAE;AACd,aAAA;AACD,YAAA,qBAAqB,EAAE;AACrB,gBAAA,SAAS,EAAE,6BAA6B;AACzC,aAAA;AACD,YAAA,gBAAgB,EAAE;AAChB,gBAAA,SAAS,EAAE,cAAc;AAC1B,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,SAAS,EAAE,uBAAuB;AACnC,aAAA;AACD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,mBAAmB,EAAE,cAAc;AACpC,aAAA;AACD,YAAA,iBAAiB,EAAE;AACjB,gBAAA,aAAa,EAAE,gBAAgB;AAChC,aAAA;AACD,YAAA,sBAAsB,EAAE;AACtB,gBAAA,SAAS,EAAE,EAAE;AACd,aAAA;AACD,YAAA,aAAa,EAAE;AACb,gBAAA,wBAAwB,EAAE,iBAAiB;AAC5C,aAAA;AACD,YAAA,eAAe,EAAE;AACf,gBAAA,SAAS,EAAE,sBAAsB;AAClC,aAAA;AACD,YAAA,WAAW,EAAE;AACX,gBAAA,SAAS,EAAE,KAAK;AACjB,aAAA;AACD,YAAA,iBAAiB,EAAE;AACjB,gBAAA,SAAS,EAAE,WAAW;AACvB,aAAA;AACD,YAAA,uBAAuB,EAAE;AACvB,gBAAA,SAAS,EAAE,UAAU;AACtB,aAAA;AACD,YAAA,iBAAiB,EAAE;AACjB,gBAAA,wBAAwB,EAAE,qBAAqB;AAChD,aAAA;AACD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,wBAAwB,EAAE,UAAU;AACpC,gBAAA,SAAS,EAAE,EAAE;AACd,aAAA;AACD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,SAAS,EAAE,UAAU;AACtB,aAAA;AACD,YAAA,uBAAuB,EAAE;AACvB,gBAAA,SAAS,EAAE,YAAY;AACxB,aAAA;AACD,YAAA,gBAAgB,EAAE;AAChB,gBAAA,SAAS,EAAE,mBAAmB;AAC/B,aAAA;AACD,YAAA,eAAe,EAAE;AACf,gBAAA,SAAS,EAAE,aAAa;AACzB,aAAA;AACD,YAAA,iBAAiB,EAAE;AACjB,gBAAA,QAAQ,EAAE,kBAAkB;AAC5B,gBAAA,SAAS,EAAE,mBAAmB;AAC/B,aAAA;AACD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,SAAS,EAAE,4wCAA4wC;AACxxC,aAAA;AACD,YAAA,eAAe,EAAE;AACf,gBAAA,aAAa,EAAE,YAAY;AAC3B,gBAAA,aAAa,EAAE,SAAS;AACzB,aAAA;AACD,YAAA,gBAAgB,EAAE;AAChB,gBAAA,SAAS,EAAE,kBAAkB;AAC7B,gBAAA,cAAc,EAAE,2BAA2B;AAC3C,gBAAA,gBAAgB,EAAE,2BAA2B;AAC7C,gBAAA,eAAe,EAAE,2BAA2B;AAC5C,gBAAA,iBAAiB,EAAE,2BAA2B;AAC/C,aAAA;AACD,YAAA,sBAAsB,EAAE;AACtB,gBAAA,MAAM,EAAE,MAAM;AACf,aAAA;AACD,YAAA,6BAA6B,EAAE;AAC7B,gBAAA,MAAM,EAAE,MAAM;AACf,aAAA;AACD,YAAA,iCAAiC,EAAE;AACjC,gBAAA,yBAAyB,EAAE,6BAA6B;AACzD,aAAA;AACD,YAAA,eAAe,EAAE;AACf,gBAAA,gBAAgB,EAAE,cAAc;AAChC,gBAAA,kBAAkB,EAAE,gBAAgB;AACrC,aAAA;AACD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,cAAc,EAAE,MAAM;AACvB,aAAA;AACD,YAAA,iBAAiB,EAAE;AACjB,gBAAA,sBAAsB,EAAE,mBAAmB;AAC5C,aAAA;AACD,YAAA,SAAS,EAAE;AACT,gBAAA,MAAM,EAAE,WAAW;AACpB,aAAA;AACD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,OAAO,EAAE,SAAS;AACnB,aAAA;AACD,YAAA,iCAAiC,EAAE;AACjC,gBAAA,cAAc,EAAE,OAAO;AACvB,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,kBAAkB,EAAE,WAAW;AAC/B,gBAAA,oBAAoB,EAAE,IAAI;AAC1B,gBAAA,mBAAmB,EAAE,UAAU;AAC/B,gBAAA,SAAS,EAAE,uBAAuB;AACnC,aAAA;AACD,YAAA,2BAA2B,EAAE;AAC3B,gBAAA,cAAc,EAAE,OAAO;AACvB,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,kBAAkB,EAAE,WAAW;AAC/B,gBAAA,oBAAoB,EAAE,IAAI;AAC1B,gBAAA,mBAAmB,EAAE,UAAU;AAC/B,gBAAA,SAAS,EAAE,uBAAuB;AACnC,aAAA;AACD,YAAA,uBAAuB,EAAE;AACvB,gBAAA,cAAc,EAAE,OAAO;AACvB,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,kBAAkB,EAAE,WAAW;AAC/B,gBAAA,oBAAoB,EAAE,IAAI;AAC1B,gBAAA,mBAAmB,EAAE,KAAK;AAC1B,gBAAA,SAAS,EAAE,kBAAkB;AAC9B,aAAA;AACD,YAAA,yBAAyB,EAAE;AACzB,gBAAA,cAAc,EAAE,OAAO;AACvB,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,kBAAkB,EAAE,WAAW;AAC/B,gBAAA,oBAAoB,EAAE,IAAI;AAC1B,gBAAA,mBAAmB,EAAE,QAAQ;AAC7B,gBAAA,SAAS,EAAE,qBAAqB;AACjC,aAAA;AACD,YAAA,2BAA2B,EAAE;AAC3B,gBAAA,cAAc,EAAE,OAAO;AACvB,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,kBAAkB,EAAE,WAAW;AAC/B,gBAAA,oBAAoB,EAAE,IAAI;AAC1B,gBAAA,mBAAmB,EAAE,SAAS;AAC9B,gBAAA,SAAS,EAAE,sBAAsB;AAClC,aAAA;AACD,YAAA,wBAAwB,EAAE;AACxB,gBAAA,cAAc,EAAE,OAAO;AACvB,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,kBAAkB,EAAE,WAAW;AAC/B,gBAAA,oBAAoB,EAAE,IAAI;AAC1B,gBAAA,mBAAmB,EAAE,SAAS;AAC9B,gBAAA,SAAS,EAAE,sBAAsB;AAClC,aAAA;AACD,YAAA,2BAA2B,EAAE;AAC3B,gBAAA,cAAc,EAAE,OAAO;AACvB,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,kBAAkB,EAAE,WAAW;AAC/B,gBAAA,oBAAoB,EAAE,IAAI;AAC1B,gBAAA,mBAAmB,EAAE,SAAS;AAC9B,gBAAA,SAAS,EAAE,sBAAsB;AAClC,aAAA;AACD,YAAA,sBAAsB,EAAE;AACtB,gBAAA,SAAS,EAAE,qDAAqD;AACjE,aAAA;AACD,YAAA,6BAA6B,EAAE;AAC7B,gBAAA,SAAS,EAAE,qDAAqD;AACjE,aAAA;AACD,YAAA,+BAA+B,EAAE;AAC/B,gBAAA,cAAc,EAAE,OAAO;AACvB,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,kBAAkB,EAAE,WAAW;AAC/B,gBAAA,oBAAoB,EAAE,IAAI;AAC1B,gBAAA,mBAAmB,EAAE,UAAU;AAC/B,gBAAA,SAAS,EAAE,uBAAuB;AACnC,aAAA;AACD,YAAA,yBAAyB,EAAE;AACzB,gBAAA,cAAc,EAAE,OAAO;AACvB,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,kBAAkB,EAAE,WAAW;AAC/B,gBAAA,oBAAoB,EAAE,IAAI;AAC1B,gBAAA,mBAAmB,EAAE,UAAU;AAC/B,gBAAA,SAAS,EAAE,uBAAuB;AACnC,aAAA;AACD,YAAA,4BAA4B,EAAE;AAC5B,gBAAA,cAAc,EAAE,OAAO;AACvB,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,kBAAkB,EAAE,WAAW;AAC/B,gBAAA,oBAAoB,EAAE,IAAI;AAC1B,gBAAA,mBAAmB,EAAE,KAAK;AAC1B,gBAAA,SAAS,EAAE,kBAAkB;AAC9B,aAAA;AACD,YAAA,8BAA8B,EAAE;AAC9B,gBAAA,cAAc,EAAE,OAAO;AACvB,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,kBAAkB,EAAE,WAAW;AAC/B,gBAAA,oBAAoB,EAAE,IAAI;AAC1B,gBAAA,mBAAmB,EAAE,QAAQ;AAC7B,gBAAA,SAAS,EAAE,qBAAqB;AACjC,aAAA;AACD,YAAA,iCAAiC,EAAE;AACjC,gBAAA,cAAc,EAAE,OAAO;AACvB,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,kBAAkB,EAAE,WAAW;AAC/B,gBAAA,oBAAoB,EAAE,IAAI;AAC1B,gBAAA,mBAAmB,EAAE,SAAS;AAC9B,gBAAA,SAAS,EAAE,sBAAsB;AAClC,aAAA;AACD,YAAA,6BAA6B,EAAE;AAC7B,gBAAA,cAAc,EAAE,OAAO;AACvB,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,kBAAkB,EAAE,WAAW;AAC/B,gBAAA,oBAAoB,EAAE,IAAI;AAC1B,gBAAA,mBAAmB,EAAE,SAAS;AAC9B,gBAAA,SAAS,EAAE,sBAAsB;AAClC,aAAA;AACD,YAAA,gCAAgC,EAAE;AAChC,gBAAA,cAAc,EAAE,OAAO;AACvB,gBAAA,eAAe,EAAE,KAAK;AACtB,gBAAA,kBAAkB,EAAE,WAAW;AAC/B,gBAAA,oBAAoB,EAAE,IAAI;AAC1B,gBAAA,mBAAmB,EAAE,SAAS;AAC9B,gBAAA,SAAS,EAAE,sBAAsB;AAClC,aAAA;AACD,YAAA,2BAA2B,EAAE;AAC3B,gBAAA,SAAS,EAAE,uBAAuB;AACnC,aAAA;AACD,YAAA,8BAA8B,EAAE;AAC9B,gBAAA,SAAS,EAAE,uBAAuB;AACnC,aAAA;AACD,YAAA,wBAAwB,EAAE;AACxB,gBAAA,SAAS,EAAE,uBAAuB;AACnC,aAAA;AACD,YAAA,sBAAsB,EAAE;AACtB,gBAAA,qBAAqB,EAAE,gBAAgB;AACvC,gBAAA,oBAAoB,EAAE,+BAA+B;AACtD,aAAA;AACD,YAAA,gBAAgB,EAAE;AAChB,gBAAA,qBAAqB,EAAE,gBAAgB;AACvC,gBAAA,oBAAoB,EAAE,+BAA+B;AACtD,aAAA;AACD,YAAA,oBAAoB,EAAE;AACpB,gBAAA,wBAAwB,EAAE,UAAU;AACpC,gBAAA,SAAS,EAAE,EAAE;AACd,aAAA;AACD,YAAA,0BAA0B,EAAE;AAC1B,gBAAA,wBAAwB,EAAE,UAAU;AACpC,gBAAA,SAAS,EAAE,EAAE;AACd,aAAA;AACD,YAAA,mCAAmC,EAAE;AACnC,gBAAA,oBAAoB,EAAE,IAAI;AAC1B,gBAAA,mBAAmB,EAAE,UAAU;AAC/B,gBAAA,SAAS,EAAE,uBAAuB;AAClC,gBAAA,mBAAmB,EAAE,WAAW;AAChC,gBAAA,yBAAyB,EAAE,WAAW;AACvC,aAAA;AACD,YAAA,gBAAgB,EAAE;AAChB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,QAAQ,EAAE,gBAAgB;AAC3B,aAAA;AACD,YAAA,eAAe,EAAE;AACf,gBAAA,OAAO,EAAE,SAAS;AACnB,aAAA;AACD,YAAA,iBAAiB,EAAE;AACjB,gBAAA,OAAO,EAAE,gBAAgB;AAC1B,aAAA;AACD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,MAAM,EAAE,UAAU;AACnB,aAAA;AACD,YAAA,cAAc,EAAE;AACd,gBAAA,MAAM,EAAE,KAAK;AACd,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,MAAM,EAAE,QAAQ;AACjB,aAAA;SACF,CAAC;QA6JF,IAAU,CAAA,UAAA,GAAqB,MAAM,CAAA;AAupBrC;;AAEC;AACD,QAAA,IAAA,CAAA,WAAW,GAAG;YACZ,SAAS;YACT,SAAS;YACT,SAAS;SACV,CAAC;;QAEF,IAAuB,CAAA,uBAAA,GAAW,EAAE,CAAC;AAtnFnC,QAAA,IAAI,CAAC,oBAAoB,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,eAAe,CAAC,0CAAE,IAAI,KAAI,IAAI,CAAC;QAC/F,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,eAAe,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,iBAAiB,CAAC,0CAAE,eAAe,KAAI,EAAE,CAAC;AACrG,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAA;AACjD,QAAA,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAC3G,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;KAC1D;AAGD;;;;;;;AAOG;AACH,IAAA,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAS,EAAA;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;KAC9E;AACD,IAAA,UAAU,CAAC,IAAI,EAAA;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;KACpD;AAYM,IAAA,WAAW,CAChB,OAAe,EACf,QAAoD,EACpD,OAOiB,EACjB,QAAmB,GAAA,CAAC,EACpB,YAAwB,GAAA,IAAI,EAC5B,WAAoB,EACpB,IAAmB,EAAA;AAEnB,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;AAC7B,YAAA,IAAI,CAAC,OAAO,GAAG,UAAU,CACvB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAChC,WAAW,IAAI,KAAK,CACrB,CAAC;YACF,MAAM,MAAM,GAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;AAExD,YAAA,IAAI,OAAO;AAAE,gBAAA,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;AACzC,YAAA,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAC7D,YAAA,IAAI,IAAI;AAAE,gBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;;AAC3B,gBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAI;AAC/C,gBAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;AACM,IAAA,sBAAsB,CAC3B,OAAe,EACf,QAAoD,EACpD,OAOiB,EACjB,QAAA,GAAmB,SAAS,EAC5B,YAAwB,GAAA,IAAI,EAE5B,IAAmB,EAAA;AAEnB,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;;;;;YAK7B,MAAM,MAAM,GAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;AAExD,YAAA,IAAI,OAAO;AAAE,gBAAA,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;AACzC,YAAA,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAC7D,YAAA,IAAI,IAAI;AAAE,gBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;;AAC3B,gBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAI;AAC/C,gBAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;AACD;;;;;;AAMG;AACI,IAAA,WAAW,CAAC,OAAA,GAAkB,CAAC,EAAE,QAAa,EAAE,EAAA;QACrD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,KAAI;AACtC,YAAA,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3B,YAAA,UAAU,CACR,MACE,IAAI,CAAC,WAAW;iBACb,OAAO,CAAC,KAAK,CAAC;iBACd,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3B,iBAAA,KAAK,CAAC,CAAC,KAAK,KAAI;gBACf,IAAI,CAAC,IAAI,CAAC,OAAO;oBAAE,OAAO;AAE1B,gBAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrB,aAAC,CAAC,EACN,OAAO,CACR,CAAC;AACJ,SAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAG;AACb,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,SAAC,CAAC,CAAC;KACJ;AAGD;;;;;AAKG;AAEH,IAAA,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAA;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAC1B,YAAA,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE;AAC7C,YAAA,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE;AACvC,YAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE;AAC5C,YAAA,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC9C,YAAA,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE;AAC7C,YAAA,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,qCAAqC,EAAE;AACpE,YAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,sBAAsB,EAAE;YACnD,EAAE,OAAO,EAAE,0BAA0B,EAAE;AACxC,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,cAAc,CAAC,KAAK,EAAE,WAAY,EAAE,IAAK,EAAE,WAAY,EAAA;AACrD,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,OAAO,GAAoB,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAClE,YAAA,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC;YAC3B,IAAI,KAAK,IAAI,EAAE;AAAE,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnD,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;gBAC1B,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE;AACjE,gBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE;AAC5C,gBAAA,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC9C,gBAAA,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE;AAC7C,gBAAA,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE;AAC7C,gBAAA,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,qCAAqC,EAAE;AACpE,gBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,sBAAsB,EAAE;gBACnD,EAAE,OAAO,EAAE,0BAA0B,EAAE;AACxC,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AACD,IAAA,UAAU,CAAC,WAAW,EAAA;AACpB,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,OAAO,GAAoB,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAClE,YAAA,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC;AAC3B,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;gBAC1B,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE;AACzE,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAED,IAAA,kBAAkB,CAChB,IAAY,EACZ,KAAc,EACd,WAAmB,IAAI,EAAA;QAEvB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;AACxC,YAAA,OAAO,EAAE;AACP,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA;AACD,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,UAAU,EAAE,QAAQ;AACrB,SAAA,CAAC,CAAC;KACJ;AACD;;;;;;AAMG;AACH,IAAA,aAAa,CAAC,IAA8C,EAAE,OAAe,EAAE,WAAmB,IAAI,EAAA;;;;AAKpG,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAyB,KAAI;AACzE,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;AAClF,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,mBAAmB,CAAC,GAAG,EAAA;AACrB,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,EAAE,CAAC;AACpB,QAAA,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QACxB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;QAC7D,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QACjD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACrC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;QAC7D,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QACjD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACrC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;QAC7D,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QAC/C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAClC,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACjC;AAED,IAAA,kBAAkB,CAAC,IAAI,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;KAC1B;IAED,kBAAkB,GAAA;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAED;;;;AAIG;AACH,IAAA,uBAAuB,CAAC,KAAK,EAAA;QAC3B,IAAI,KAAK,CAAC,YAAY,EAAE;AACtB,YAAA,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AACjC,YAAA,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAC3B,SAAA;QACD,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,YAAA,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC5B,YAAA,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;AAC5B,SAAA;KACF;AAED;;;;;;;;;;;;;;;;;;;;;AAqBG;IACH,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,EAAA;AAC7C,QAAA,mBAAmB,EAAE,CAAC;AAEtB,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM;YAAE,OAAO;AAEjC,QAAA,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,EAAU,KAAI;AACzF,YAAA,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;AACxB,gBAAA,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC;gBACzE,IAAI,aAAa,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACjD,oBAAA,mBAAmB,EAAE,CAAC;AACvB,iBAAA;qBACI,IAAI,KAAK,CAAC,QAAQ,EAAE;AACvB,oBAAA,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC5B,oBAAA,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;AAC5B,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCG;IACH,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,UAA6D,EAAE,EAAA;;;QACvH,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YACpC,OAAO;AACR,SAAA;QACD,MAAM,EACJ,eAAe,GAAG,CAAC,EACnB,SAAS,GAAG,KAAK,EAClB,GAAG,OAAO,CAAC;;AAGZ,QAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAC,0BAA0B,MAA1B,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,IAAA,EAAA,CAAA,0BAA0B,GAAK,IAAI,CAAC,CAAA;AAEvE,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC;;QAEzE,IAAI,aAAa,IAAI,SAAS,EAAE;AAC9B,YAAA,YAAY,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;AAC9B,YAAA,YAAY,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;AAEtC,YAAA,MAAM,kBAAkB,GAAG,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,mCAAmC,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,eAAe,EAAE,yBAAyB,EAAE,gCAAgC,EAAE,qBAAqB,EAAE,cAAc,EAAE,sBAAsB,EAAE,gCAAgC,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,mCAAmC,EAAE,aAAa,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,mCAAmC,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,eAAe,EAAE,yBAAyB,EAAE,iCAAiC,EAAE,qBAAqB,EAAE,cAAc,EAAE,wBAAwB,EAAE,gCAAgC,EAAE,oBAAoB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEl6B,KAAK,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,EAAE,gBAAgB,KAAI;AACtE,gBAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;;oBAExB,IAAI,KAAK,CAAC,cAAc,EAAE;AACxB,wBAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,4BAAA,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;4BACxC,IAAI,CAAC,GAAG,EAAE;gCACR,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gCAC5E,OAAO;AACR,6BAAA;AAED,4BAAA,MAAM,cAAc,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAA,KAAA,EAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAA,EAAA,CAAI,CAAC,CAAC;;;AAIxE,4BAAA,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,YAAY,GAAG,eAAe,CAAC,CAAC;4BACpG,MAAM,KAAK,GAAG,aAAa,CAAC,CAAA,EAAA,EAAK,eAAe,CAAkB,gBAAA,CAAA,CAAC,IAAI,IAAI,CAAC;AAC5E,4BAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;;AAE7B,gCAAA,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,EAAE;AAC9B,oCAAA,IAAI,kBAAkB,IAAI,KAAK,CAAC,aAAa,EAAE;wCAC7C,UAAU,CAAC,MAAW,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;AACpB,4CAAA,MAAM,kBAAkB,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAc,WAAA,EAAA,eAAe,CAAoB,iBAAA,EAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAA,GAAA,CAAK,CAA4B,CAAC;;AAGjJ,4CAAA,KAAK,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,EAAE;AACnE,gDAAA,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;AAC1B,gDAAA,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;;gDAGlC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,aAAa,CAAC,CAAA,EAAA,EAAK,eAAe,CAAA,uBAAA,CAAyB,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAE7I,gDAAA,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;AAC1B,gDAAA,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;AAEnC,gDAAA,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;AAC/B,gDAAA,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;AACvC,gDAAA,MAAc,CAAC,YAAY,GAAG,YAAY,CAAC;gDAC5C,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa,CAAC,CAAK,EAAA,EAAA,eAAe,CAAY,UAAA,CAAA,CAAC,CAAC;;AAGxE,gDAAA,IAAI,SAAS,KAAI,CAAA,EAAA,GAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,0BAA0B,CAAA,EAAE;AAC/E,oDAAA,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1C,iDAAA;AACF,6CAAA;yCACF,CAAA,CAAC,CAAC;AACJ,qCAAA;AACI,yCAAA;AACH,wCAAA,cAAc,CAAC,OAAO,CAAC,CAAM,CAAC,KAAG,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;4CAC/B,UAAU,CAAC,MAAK;;AACd,gDAAA,YAAY,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;AAC9B,gDAAA,YAAY,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;AACvC,gDAAA,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;AAC3B,gDAAA,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;AACnC,gDAAA,MAAc,CAAC,YAAY,GAAG,YAAY,CAAC;gDAC5C,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa,CAAC,CAAK,EAAA,EAAA,eAAe,CAAY,UAAA,CAAA,CAAC,CAAC;;AAGpE,gDAAA,IAAI,SAAS,KAAI,CAAA,EAAA,GAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,0BAA0B,CAAA,EAAE;AAC/E,oDAAA,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1C,iDAAA;6CACF,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;yCAC9B,CAAA,CAAC,CAAC;AACJ,qCAAA;AACF,iCAAA;AAAM,qCAAA;oCACL,UAAU,CAAC,MAAK;;AACd,wCAAA,YAAY,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;AAC9B,wCAAA,YAAY,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;AACvC,wCAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAc,CAAQ,KAAA,EAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAA,EAAA,CAAI,CAAC,CAAC;AACpF,wCAAA,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;AACjC,wCAAA,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;AACzC,wCAAA,MAAc,CAAC,YAAY,GAAG,YAAY,CAAC;wCAC5C,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa,CAAC,CAAK,EAAA,EAAA,eAAe,CAAY,UAAA,CAAA,CAAC,CAAC;;AAG1E,wCAAA,IAAI,SAAS,KAAI,CAAA,EAAA,GAAA,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,0BAA0B,CAAA,EAAE;AAC/E,4CAAA,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1C,yCAAA;qCACF,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AAC9B,iCAAA;AACF,6BAAA;AACF,yBAAA;AACF,qBAAA;AACI,yBAAA;AACH,wBAAA,YAAY,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;AAC9B,wBAAA,YAAY,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;AACvC,qBAAA;AACH,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;;AAGH,YAAA,IAAI,CAAA,EAAA,GAAA,KAAK,CAAC,OAAO,0CAAE,aAAa;gBAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACvF,SAAA;KACF;AAKD,IAAA,OAAO,CAAC,IAAI,EAAA;AACV,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;IACD,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;AAED,IAAA,WAAW,CAAC,IAAI,EAAA;AACd,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACtB;IAED,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;AAED,IAAA,WAAW,CAAC,IAAI,EAAA;AACd,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;KACrB;IAED,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;AAED;;;;;;;;;AASG;IACH,kBAAkB,CAAC,SAA6B,EAAE,KAAa,EAAE,MAAc,EAAE,aAAkB,EAAE,cAAmB,EAAA;;AACtH,QAAA,MAAM,UAAU,GAAG,aAAa,IAAI,cAAc,CAAC;AACnD,QAAA,IAAI,UAAU,KAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAU,CAAC,CAAG,EAAA,MAAM,CAAS,OAAA,CAAA,CAAC,0CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,SAAS,CAAC,CAAA,EAAE;YACxE,OAAO,MAAM,CAAC,CAAC,UAAU,CAAC,CAAG,EAAA,MAAM,SAAS,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AACxF,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;AAED;;;;;;;;;AASC;IACD,+BAA+B,CAAC,SAA6B,EAAE,KAAa,EAAE,MAAc,EAAE,aAAkB,EAAE,cAAmB,EAAA;;AACnI,QAAA,MAAM,UAAU,GAAG,aAAa,IAAI,cAAc,CAAC;AACnD,QAAA,IAAI,UAAU,KAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAU,CAAC,CAAG,EAAA,MAAM,CAAS,OAAA,CAAA,CAAC,0CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,SAAS,CAAC,CAAA,EAAE;YACxE,OAAO,CAAA,EAAG,CAAC,UAAU,CAAC,GAAG,MAAM,CAAA,OAAA,CAAS,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;AACvF,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;AAED;;;AAGG;IACH,cAAc,GAAA;QACZ,MAAM,OAAO,GAAW,kBAAkB,CAAC;QAC3C,IAAI,KAAK,GAAW,GAAG,CAAC;QACxB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAClC,YAAA,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAClD,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAGD,IAAA,mBAAmB,CAAC,KAAK,EAAE,SAA0B,EAAE,eAAuB,EAAA;;AAE5E,QAAA,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAC,CAAA,EAAA,GAAA,KAAK,CAAC,UAAU,0CAAE,MAAM,CAAA,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;YAAE,OAAO;;AAE1L,QAAA,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;AACvB,QAAA,MAAM,SAAS,GAAG,CAAA,EAAA,GAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAA;AACjE,QAAA,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,CAAA;AACrD,QAAA,MAAM,SAAS,GAAG,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AAC5E,QAAA,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACjC,QAAA,QAAQ,SAAS;AACf,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,EAAE;oBAC1C,KAAK,CAAC,YAAY,EAAE,CAAC;oBACrB,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC;AAC9H,oBAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,oBAAA,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;AACzB,oBAAA,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC5D,wBAAA,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B,qBAAA;AACD,oBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;AACtC,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,wBAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;wBACxB,OAAO;AACR,qBAAA;oBACD,QAAQ,KAAK,CAAC,WAAW;wBACvB,KAAK,eAAe;AAClB,4BAAA,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;4BACvB,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;AAC3C,4BAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,4BAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;4BACrC,MAAM;wBACR,KAAK,UAAU;4BACb,KAAK,CAAC,YAAY,EAAE,CAAC;4BACrB,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE;gCAC/C,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,IAAI,QAAQ,CAAC,CAAA;AACzG,gCAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,6BAAA;AAAM,iCAAA;gCACL,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;gCACpD,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;AAC3C,gCAAA,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;gCACvB,UAAU,CAAC,MAAK;AACd,oCAAA,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,UAAU,IAAI,MAAM,CAAC;oCACxE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC,YAAY,CAAA;AAC7H,oCAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,oCAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;iCACtC,EAAE,CAAC,CAAC,CAAC;AACP,6BAAA;4BACD,MAAM;AACT,qBAAA;AACF,iBAAA;gBACD,MAAM;AACR,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE;oBAC1B,KAAK,CAAC,YAAY,EAAE,CAAC;oBACrB,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE;wBAC/C,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,IAAI,QAAQ,GAAG,SAAS,CAAA;AAC/D,qBAAA;AAAM,yBAAA,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,WAAW,EAAE;wBAClD,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,IAAI,QAAQ,CAAC,CAAA;AAC1G,qBAAA;AAAM,yBAAA;wBACL,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY,CAAA;AAC7D,qBAAA;oBAED,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC5C,wBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AACzB,qBAAA;AAED,oBAAA,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;AAC1B,oBAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,oBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;AACtC,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,wBAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;wBACxB,OAAO;AACR,qBAAA;oBACD,QAAQ,KAAK,CAAC,WAAW;wBACvB,KAAK,eAAe,EAAE;AACpB,4BAAA,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;4BACvC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,GAAG,QAAQ,CAAC,CAAA;AACjH,4BAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,4BAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;4BACrC,MAAM;AACP,yBAAA;wBACD,KAAK,UAAU,EAAE;AACf,4BAAA,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;4BACvC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;AACpD,4BAAA,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,CAAA;4BAChF,UAAU,CAAC,MAAK;AACd,gCAAA,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,UAAU,IAAI,MAAM,CAAC;gCACxE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,IAAI,QAAQ,CAAC,CAAA;AACzG,gCAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,gCAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;6BACtC,EAAE,CAAC,CAAC,CAAC;4BACN,MAAM;AACP,yBAAA;AACF,qBAAA;AACF,iBAAA;gBAED,MAAM;AACT,SAAA;KAEF;AAED,IAAA,iBAAiB,CAAC,KAAK,EAAE,SAA0B,EAAE,eAAuB,EAAA;;AAC1E,QAAA,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAC,CAAA,EAAA,GAAA,KAAK,CAAC,UAAU,0CAAE,MAAM,CAAA,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;YAAE,OAAO;AAC1L,QAAA,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;AACvJ,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,MAAM,OAAO,GAAQ,QAAQ,CAAC,aAAa,CAAC,CAAA,gBAAA,EAAmB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAA,IAAA,CAAM,CAAC,CAAC;YACrF,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AACrG,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AACjE,YAAA,MAAM,SAAS,GAAG,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AAC5E,YAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,WAAW,IAAI,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;YACvG,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,IAAI,YAAY,IAAI,CAAC,GAAG,QAAQ,CAAA;AAC/F,YAAA,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACjC,YAAA,QAAQ,SAAS;gBACf,KAAK,MAAM,EAAE;AACX,oBAAA,IAAI,KAAK,CAAC,YAAY,GAAG,aAAa,EAAE;wBACtC,KAAK,CAAC,YAAY,EAAE,CAAC;wBACrB,IAAI,KAAK,CAAC,YAAY,IAAI,aAAa,IAAI,QAAQ,IAAI,CAAC,EAAE;4BACxD,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,IAAI,QAAQ,CAAC,CAAA;AAC1G,yBAAA;;4BAAM,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,IAAI,QAAQ,CAAC;AAE1D,wBAAA,IAAI,KAAK,CAAC,YAAY,IAAI,aAAa,GAAG,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACnE,4BAAA,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B,yBAAA;AACD,wBAAA,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;AACzB,wBAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,wBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;AACtC,qBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,KAAK,CAAC,MAAM;AAAE,4BAAA,OAAO;wBAC1B,QAAQ,KAAK,CAAC,WAAW;4BACvB,KAAK,eAAe;AAClB,gCAAA,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;gCACvB,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;AAC3C,gCAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,gCAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;gCACrC,MAAM;4BACR,KAAK,UAAU;gCACb,KAAK,CAAC,YAAY,EAAE,CAAC;AACrB,gCAAA,IAAI,KAAK,CAAC,YAAY,IAAI,aAAa,GAAG,CAAC,EAAE;oCAC3C,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;oCACpD,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;AAC3C,oCAAA,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;oCACvB,UAAU,CAAC,MAAK;AACd,wCAAA,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,UAAU,IAAI,MAAM,CAAC;wCACxE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,IAAI,QAAQ,CAAC;AACnD,wCAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,wCAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;qCACtC,EAAE,CAAC,CAAC,CAAC;AACP,iCAAA;gCACD,MAAM;AACT,yBAAA;AACF,qBAAA;oBACD,MAAM;AACP,iBAAA;AAED,gBAAA,KAAK,MAAM;AACT,oBAAA,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE;wBAC1B,KAAK,CAAC,YAAY,EAAE,CAAC;AACrB,wBAAA,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa;AACpC,4BAAA,CAAC,KAAK,CAAC,YAAY,IAAI,aAAa,GAAG,CAAC,IAAI,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,WAAW,IAAI,UAAU;;AAEzG,oCAAA,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,IAAI,QAAQ,CAAC;;AAE/D,oCAAA,QAAQ,CAAC;wBAEb,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC5C,4BAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AACzB,yBAAA;AACD,wBAAA,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;AAC1B,wBAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,wBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;AACtC,qBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,KAAK,CAAC,MAAM;AAAE,4BAAA,OAAO;wBAC1B,QAAQ,KAAK,CAAC,WAAW;4BACvB,KAAK,eAAe,EAAE;AACpB,gCAAA,KAAK,CAAC,YAAY,GAAG,aAAa,CAAC;AACnC,gCAAA,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,QAAQ,CAAA;AACxE,gCAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,gCAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;gCACrC,MAAM;AACP,6BAAA;4BACD,KAAK,UAAU,EAAE;AACf,gCAAA,KAAK,CAAC,YAAY,GAAG,aAAa,GAAG,CAAC,CAAC;gCACvC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;AACpD,gCAAA,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,CAAA;gCAChF,UAAU,CAAC,MAAK;AACd,oCAAA,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,UAAU,IAAI,MAAM,CAAC;oCACxE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,aAAa,GAAG,CAAC,IAAI,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,IAAI,QAAQ,CAAC,GAAG,QAAQ,CAAC;AACjM,oCAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,oCAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;iCACtC,EAAE,CAAC,CAAC,CAAC;gCACN,MAAM;AACP,6BAAA;AACF,yBAAA;AACF,qBAAA;oBACD,MAAM;AACT,aAAA;AACF,SAAA;KACF;AAED,IAAA,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAuB,EAAE,eAAuB,EAAA;QACxE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AACnD,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtF,KAAK,CAAC,aAAa,GAAG,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACjF,QAAA,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;QAEzB,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;KACnD;AAED,IAAA,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAuB,EAAA;AAC/C,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,OAAO;QACzE,IAAI,KAAK,CAAC,WAAW,EAAE;YACrB,MAAM,SAAS,GAAG,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC;YACrG,IAAI,IAAI,IAAI,OAAO,EAAE;gBACnB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAChD,aAAA;AACD,YAAA,IAAI,KAAK,CAAC,UAAU,IAAI,SAAS,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,IAAI,SAAS,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE;gBAC9F,OAAO;AACR,aAAA;AACD,YAAA,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC;AAC9B,YAAA,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB,SAAA;KACF;AAED,IAAA,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAuB,EAAE,eAAuB,EAAA;QACtE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACnD,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,WAAW;YAAE,OAAO;QAC5G,MAAM,WAAW,GAAG,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACtF,QAAA,MAAM,MAAM,GAAG,WAAW,GAAG,KAAK,CAAC,aAAa,CAAA;QAChD,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YACnC,KAAK,CAAC,UAAU,EAAE,CAAC;AACpB,SAAA;aAAM,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAC3C,KAAK,CAAC,UAAU,EAAE,CAAC;AACpB,SAAA;AACD,QAAA,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,UAAU,IAAI,MAAM,CAAC;AACxE,QAAA,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;AAC1B,QAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;KACzB;IAED,YAAY,CAAC,KAAK,EAAE,KAAK,EAAA;AACvB,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,OAAO;QACzE,IAAI,KAAK,CAAC,WAAW,EAAE;AACrB,YAAA,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACjC,SAAA;KACF;AAGD,IAAA,mBAAmB,CAAC,IAAY,EAAA;;QAE9B,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACtC,SAAA;;QAGD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;;QAG7B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAC/D,QAAA,OAAO,MAAM,GAAG,IAAI,GAAG,UAAU,CAAC;KACnC;AAGD;;;AAGG;AACH,IAAA,WAAW,CAAC,KAAK,EAAA;AACf,QAAA,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC5B,YAAA,YAAY,EAAE;AACZ,gBAAA,aAAa,EAAE,iBAAiB;AAChC,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,MAAM,EAAE,QAAQ;AACjB,aAAA;AACD,YAAA,IAAI,EAAE,cAAc;AACrB,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AACnB,YAAA,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC;AACpC,SAAC,CAAC,CAAA;AAEF,QAAA,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC5B,YAAA,YAAY,EAAE;AACZ,gBAAA,aAAa,EAAE,iBAAiB;AAChC,gBAAA,MAAM,EAAE,QAAQ;AACjB,aAAA;AACD,YAAA,IAAI,EAAE,gBAAgB;AACvB,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AACnB,YAAA,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC,IAAI,CAAC;AACtC,SAAC,CAAC,CAAA;AAEF,QAAA,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC5B,YAAA,YAAY,EAAE;AACZ,gBAAA,aAAa,EAAE,iBAAiB;AAChC,gBAAA,MAAM,EAAE,QAAQ;AACjB,aAAA;AACD,YAAA,IAAI,EAAE,eAAe;AACtB,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AACnB,YAAA,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC;AACrC,SAAC,CAAC,CAAA;AAEF,QAAA,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC5B,YAAA,YAAY,EAAE;AACZ,gBAAA,aAAa,EAAE,iBAAiB;AAChC,gBAAA,MAAM,EAAE,QAAQ;AACjB,aAAA;AACD,YAAA,IAAI,EAAE,YAAY;AACnB,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AACnB,YAAA,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC;AAClC,SAAC,CAAC,CAAA;AACF,QAAA,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC5B,YAAA,YAAY,EAAE;AACZ,gBAAA,aAAa,EAAE,iBAAiB;AAChC,gBAAA,MAAM,EAAE,QAAQ;AACjB,aAAA;AACD,YAAA,IAAI,EAAE,YAAY;AACnB,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AACnB,YAAA,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC;AAClC,SAAC,CAAC,CAAA;AAEF,QAAA,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC5B,YAAA,YAAY,EAAE;AACZ,gBAAA,aAAa,EAAE,iBAAiB;AAChC,gBAAA,MAAM,EAAE,QAAQ;AACjB,aAAA;AACD,YAAA,IAAI,EAAE,eAAe;AACtB,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AACnB,YAAA,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC;AACrC,SAAC,CAAC,CAAA;AACF,QAAA,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC5B,YAAA,YAAY,EAAE;AACZ,gBAAA,aAAa,EAAE,iBAAiB;AAChC,gBAAA,MAAM,EAAE,QAAQ;AACjB,aAAA;AACD,YAAA,IAAI,EAAE,eAAe;AACtB,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AACnB,YAAA,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC;AACrC,SAAC,CAAC,CAAA;AACF,QAAA,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC5B,YAAA,YAAY,EAAE;AACZ,gBAAA,aAAa,EAAE,iBAAiB;AAChC,gBAAA,MAAM,EAAE,QAAQ;AACjB,aAAA;AACD,YAAA,IAAI,EAAE,aAAa;AACpB,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AACnB,YAAA,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,IAAI,CAAC;AACnC,SAAC,CAAC,CAAA;AACF,QAAA,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC5B,YAAA,YAAY,EAAE;AACZ,gBAAA,aAAa,EAAE,iBAAiB;AAChC,gBAAA,MAAM,EAAE,QAAQ;AACjB,aAAA;AACD,YAAA,IAAI,EAAE,eAAe;AACtB,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AACnB,YAAA,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC;AACrC,SAAC,CAAC,CAAA;KACH;AAGD;;;;AAIG;IACH,cAAc,CAAC,UAAe,EAAE,MAAW,EAAA;;AACzC,QAAA,IAAI,IAAI,GAAG,CAAC,CAAC;;AAGb,QAAA,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AAC3C,YAAA,OAAO,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAClD,SAAA;QAED,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AACpD,QAAA,MAAM,UAAU,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;QAElD,QAAQ,UAAU,CAAC,YAAY;YAC7B,KAAK,gBAAgB,EAAE;;gBAErB,IAAI,YAAY,KAAI,CAAA,EAAA,GAAA,YAAY,CAAC,0BAA0B,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAA,EAAE;AAClE,oBAAA,IAAI,GAAG,YAAY,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC;AACrD,oBAAA,MAAM,eAAe,GAAG,UAAU,CAAC,CAAA,EAAA,GAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAY,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACzE,oBAAA,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzE,oBAAA,MAAM,gBAAgB,GAAG,UAAU,CAAC,CAAA,EAAA,GAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAY,CAAE,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACrF,oBAAA,MAAM,2BAA2B,GAAG,CAAA,YAAY,aAAZ,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZ,YAAY,CAAE,YAAY,KAAI,YAAY,IAAI,UAAU,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAEhK,oBAAA,MAAM,UAAU,GAAG,UAAU,CAAC,CAAA,EAAA,GAAA,WAAW,aAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAG,gBAAgB,CAAC,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC;AACrF,oBAAA,MAAM,aAAa,GAAG,UAAU,CAAC,CAAA,EAAA,GAAA,WAAW,aAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAG,gBAAgB,CAAC,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3F,oBAAA,MAAM,OAAO,GAAG,UAAU,GAAG,aAAa,CAAC;AAC3C,oBAAA,IAAI,MAAM,GAAG,IAAI,GAAG,eAAe,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,OAAO,GAAG,gBAAgB,GAAG,2BAA2B,CAAC;AAClH,oBAAA,OAAO,MAAM,CAAC;AACf,iBAAA;gBACD,MAAM;AACP,aAAA;YACD,KAAK,qBAAqB,EAAE;;gBAE1B,IAAI,YAAY,KAAI,CAAA,EAAA,GAAA,YAAY,CAAC,+BAA+B,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAA,EAAE;AACvE,oBAAA,IAAI,GAAG,YAAY,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC;AAC1D,oBAAA,MAAM,eAAe,GAAG,UAAU,CAAC,CAAA,EAAA,GAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAY,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACzE,oBAAA,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9E,oBAAA,IAAI,MAAM,GAAG,IAAI,GAAG,eAAe,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;AACvD,oBAAA,OAAO,MAAM,CAAC;AACf,iBAAA;gBACD,MAAM;AACP,aAAA;YACD,KAAK,wBAAwB,EAAE;;AAE7B,gBAAA,IAAI,YAAY,KAAZ,IAAA,IAAA,YAAY,uBAAZ,YAAY,CAAE,IAAI,EAAE;AACtB,oBAAA,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;AACzB,oBAAA,MAAM,eAAe,GAAG,UAAU,CAAC,CAAA,EAAA,GAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAY,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACzE,oBAAA,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7E,oBAAA,MAAM,gBAAgB,GAAG,UAAU,CAAC,CAAA,EAAA,GAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAY,CAAE,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACrF,oBAAA,MAAM,2BAA2B,GAAG,CAAA,YAAY,aAAZ,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZ,YAAY,CAAE,YAAY,KAAI,YAAY,IAAI,UAAU,CAAC,WAAW,CAAC,oCAAoC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;AAGxK,oBAAA,MAAM,UAAU,GAAG,UAAU,CAAC,CAAA,EAAA,GAAA,WAAW,aAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAG,8BAA8B,CAAC,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC;AACnG,oBAAA,MAAM,aAAa,GAAG,UAAU,CAAC,CAAA,EAAA,GAAA,WAAW,aAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAG,8BAA8B,CAAC,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;AACzG,oBAAA,MAAM,OAAO,GAAG,UAAU,GAAG,aAAa,CAAC;;AAE3C,oBAAA,IAAI,MAAM,GAAG,IAAI,GAAG,eAAe,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,OAAO,GAAG,gBAAgB,GAAG,2BAA2B,CAAC;AAClH,oBAAA,OAAO,MAAM,CAAC;AACf,iBAAA;gBACD,MAAM;AACP,aAAA;YACD,KAAK,kBAAkB,EAAE;gBACvB,IAAI,YAAY,KAAI,CAAA,EAAA,GAAA,YAAY,CAAC,4BAA4B,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAA,EAAE;AACpE,oBAAA,IAAI,GAAG,YAAY,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC;AACvD,oBAAA,MAAM,eAAe,GAAG,UAAU,CAAC,CAAA,EAAA,GAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAY,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACzE,oBAAA,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3E,oBAAA,IAAI,MAAM,GAAG,IAAI,GAAG,eAAe,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;AACvD,oBAAA,OAAO,MAAM,CAAC;AACf,iBAAA;gBACD,MAAM;;;;;;AAMP,aAAA;YACD,KAAK,eAAe,EAAE;;;;;gBAKpB,IAAI,GAAG,CAAC,CAAA;gBACR,MAAM;AACP,aAAA;AACD,YAAA,KAAK,uBAAuB,CAAC;AAC7B,YAAA,KAAK,qBAAqB,CAAC;AAC3B,YAAA,KAAK,gBAAgB,CAAC;AACtB,YAAA,KAAK,YAAY,CAAC;AAClB,YAAA,KAAK,aAAa,CAAC;AACnB,YAAA,KAAK,cAAc,CAAC;YACpB,KAAK,sBAAsB,EAAE;gBAC3B,IAAI,GAAG,CAAC,CAAC;gBACT,MAAM;AACP,aAAA;AACD,YAAA,SAAS;gBACP,IAAI,GAAG,CAAC,CAAC;AACV,aAAA;AACF,SAAA;QACD,OAAO,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;KAClD;;AAGD,IAAA,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAA;AAC9B,QAAA,OAAO,KAAK,CAAC,CAAA,EAAG,MAAM,CAAa,UAAA,EAAA,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;KACzE;;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAA;;AACpB,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,CAAG,EAAA,MAAM,CAAS,OAAA,CAAA,CAAC,0CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,KAAI,CAAC,CAAC;KACzD;;IAED,SAAS,CAAC,KAAK,EAAE,MAAM,EAAA;;AACrB,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,CAAG,EAAA,MAAM,CAAS,OAAA,CAAA,CAAC,0CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,KAAI,CAAC,CAAC;KAC1D;AAED;;;;;;;AAOG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAA;QAC9B,MAAM,UAAU,GAAG,EAAE,CAAC;;AAEtB,QAAA,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,UAAU,KAAI;YACnD,IAAI,CAAC,UAAU,EAAE;;gBAEf,OAAO;oBACL,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;oBACpC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;iBACvC,CAAC;AACH,aAAA;AAED,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,CAAA,UAAU,KAAA,IAAA,IAAV,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,OAAO,MAAI,UAAU,KAAA,IAAA,IAAV,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,QAAQ,CAAA,KAAI,UAAU,KAAA,IAAA,IAAV,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,SAAS,CAAA,EAAE,CAAC;YAC7H,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;;YAG7C,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1F,YAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACvB,SAAC,CAAC;;AAGF,QAAA,MAAM,aAAa,GAAG,CAAC,UAAU,KAAI;;AACnC,YAAA,IAAI,UAAU,CAAC,KAAK,KAAK,OAAO,KAAI,MAAA,UAAU,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,EAAG,CAAA,QAAQ,CAAC,OAAO,CAAC,CAAA,EAAE;gBACzF,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;AAC/C,aAAA;YACD,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC5C,SAAC,CAAC;;QAGF,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;AAChC,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,OAAO,MAAI,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,QAAQ,CAAA,KAAI,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,SAAS,CAAA,EAAE,CAAC;YAChH,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;;AAGzD,YAAA,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;;YAG9F,UAAU,CAAC,IAAI,CAAC;gBACd,GAAG,EAAE,MAAM,CAAC,GAAG;AACf,gBAAA,SAAS,EAAE,UAAU;AACrB,gBAAA,UAAU,EAAE,WAAW;AACxB,aAAA,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;;AAGH,QAAA,OAAO,UAAU,CAAC;KACnB;;AAGO,IAAA,aAAa,CAAC,GAAQ,EAAE,GAAQ,EAAE,MAAW,EAAA;AACnD,QAAA,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAA,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,OAAO,MAAI,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,QAAQ,CAAA,KAAI,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,SAAS,CAAA,CAAC;AACzE,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAA,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,OAAO,MAAI,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,QAAQ,CAAA,KAAI,GAAG,KAAA,IAAA,IAAH,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,SAAS,CAAA,CAAC;SAC1E,CAAC;QACF,QACE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YAC9D,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,EAC9D;KACH;;AAGO,IAAA,WAAW,CAAC,GAAQ,EAAE,GAAQ,EAAE,OAAc,EAAE,MAAW,EAAA;;AAEjE,QAAA,OAAO,OAAO,CAAC,IAAI,CACjB,CAAC,QAAQ,EAAE,GAAG,KACZ,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;AAC1B,YAAA,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC;YACzC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,CAC5C,CAAC;KACH;;AAGO,IAAA,SAAS,CACf,EAAO,EACP,KAAa,EACb,MAAW,EACX,WAAmB,EACnB,UAAmB,EACnB,OAAc,EACd,cAAuB;;QAEvB,MAAM,mBAAmB,GAAG,WAAW,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;QACtG,QACE,CAAC,CAAC,cAAc,IAAI,mBAAmB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC;aAC1F,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;aACtE,WAAW,KAAK,CAAC,CAAC,IAAI,mBAAmB,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;UAC1G;KACH;AAED;;;;;;;;AAQG;IACH,uBAAuB,CACrB,OAAc,EACd,KAAa,EACb,MAAW,EACX,WAAgB,EAChB,UAAe,EAAA;;AAGf,QAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,GAAG,KAC9D,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,CAC/E,CAAC;;QAEF,OAAO,iBAAiB,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,GAAG,IAAI,CAAC;KAC7G;AAGD;;;;;;;;;;;;;AAaG;AACH,IAAA,qBAAqB,CACnB,UAAiB,EACjB,MAAa,EACb,KAAa,EACb,MAAW,EACX,WAAgB,EAChB,WAAmB,GAAA,CAAC,CAAC,EACrB,aAAsB,IAAI,EAAA;;;AAI1B,QAAA,IAAI,KAAK,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO;;AAE3C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;;AAE1F,QAAA,IAAI,CAAC,IAAI;YAAE,OAAO;;QAElB,MAAM,UAAU,GAAG,CAAC,WAAW,IAAI,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9D,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,UAAU,CAAC;;QAG/C,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC;KACrG;;;;;;;;;;;;;;;;;;AAoBD;;;;AAIE;AACF,IAAA,wBAAwB,CAAC,MAAM,EAAA;;;AAE7B,QAAA,MAAM,QAAQ,GAAG,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAI,CAAA,EAAA,GAAA,MAAM,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAA,KAAI,CAAA,EAAA,GAAA,MAAM,CAAC,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAA,CAAC;AACnF,QAAA,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QAC1E,IAAI,SAAS,GAAG,CAAC,CAAC;;AAElB,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;gBACrB,IAAI,OAAO,GAAuB,IAAI,CAAC;AAEvC,gBAAA,IAAI,aAAa,EAAE;;oBAEjB,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,CAAQ,KAAA,EAAA,KAAK,CAAC,GAAG,CAAS,OAAA,CAAA,CAAC,CAAA;AAClE,iBAAA;AAED,gBAAA,IAAI,OAAO,EAAE;AACX,oBAAA,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;AACpC,oBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;;AAE9B,oBAAA,MAAM,WAAW,GAAG,GAAG,GAAG,MAAM,CAAC;oBAEjC,IAAI,WAAW,GAAG,SAAS,EAAE;AAC3B,wBAAA,SAAS,GAAG,WAAW,CAAC;;AAEzB,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;;AAED,QAAA,OAAO,SAAS,CAAC;KAClB;AASD,IAAA,aAAa,CAAC,UAAU,EAAA;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;KAC7B;IAED,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AAGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCG;IACH,gCAAgC,CAC9B,KAAK,EACL,WAAwC,EACxC,SAAiB,EACjB,kBAAwB,EACxB,mBAAyB,EAAA;;AAEzB,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AAC1F,YAAA,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,KAAK,CAAC,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;YACnE,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,KAAK,CAAC,IAAI,CAAC,CAAG,EAAA,KAAK,CAAC,MAAM,CAAa,UAAA,EAAA,QAAQ,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,KAAK,CAAC,IAAI,CAAC,CAAG,EAAA,KAAK,CAAC,MAAM,CAAW,SAAA,CAAA,CAAC,CAAC;AAC9G,YAAA,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;;YAEzD,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;aAC1F,EAAE,CAAC,CAAC,CAAC;;AAGN,YAAA,KAAK,CAAC,mCAAmC,GAAG,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,OAAY,KAAI;AACzG,gBAAA,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,uBAAuB,EAAE;;oBAEzD,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;;AAE7D,oBAAA,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;;AAE3B,oBAAA,IAAI,UAAU,EAAE;AACd,wBAAA,IAAI,kBAAkB;AAAE,4BAAA,kBAAkB,EAAE,CAAC;AAC9C,qBAAA;;AAEI,yBAAA;AACH,wBAAA,IAAI,mBAAmB;AAAE,4BAAA,mBAAmB,EAAE,CAAC;AAChD,qBAAA;;AAED,oBAAA,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC1F,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED;;;AAGG;AACH,IAAA,kCAAkC,CAAC,KAAK,EAAA;;AACtC,QAAA,CAAA,EAAA,GAAA,KAAK,CAAC,mCAAmC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE,CAAC;KAC1D;AAED;;;;;;AAMG;IACH,2BAA2B,CAAC,KAAK,EAAE,WAAwC,EAAE,SAAiB,EAAE,aAAqB,EAAE,QAAgB,EAAA;;QACrI,IAAI,WAAW,KAAK,MAAM;YAAE,OAAO;;QAGnC,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,KAAK,CAAC,IAAI,CAAC,CAAG,EAAA,KAAK,CAAC,MAAM,CAAa,UAAA,EAAA,QAAQ,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,KAAK,CAAC,IAAI,CAAC,CAAG,EAAA,KAAK,CAAC,MAAM,CAAW,SAAA,CAAA,CAAC,CAAC;QAE9G,IAAI,WAAW,KAAK,OAAO,EAAE;YAC3B,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC5E,YAAA,IAAI,QAAQ;AAAE,gBAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,aAAa,GAAG,CAAC,CAAC;AACvE,SAAA;aACI,IAAI,WAAW,KAAK,QAAQ,EAAE;YACjC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC7E,YAAA,IAAI,QAAQ;AAAE,gBAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,GAAG,aAAa,CAAC;AACvE,SAAA;KACF;IAGD,YAAY,CAAC,EAAU,EAAE,IAAS,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;KAC3B;AAED,IAAA,YAAY,CAAC,EAAU,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;KAC3B;AAGD;;AAEC;IACD,QAAQ,CAAC,KAAK,EAAE,eAAuB,EAAA;AACrC,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,OAAO;QACzE,IAAI,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,EAAE;YAChD,IAAI,KAAK,CAAC,WAAW,EAAE;AACrB,gBAAA,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACjC,gBAAA,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B,aAAA;YAED,IAAI,CAAC,KAAK,CAAC,WAAW;AACpB,gBAAA,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC,MAAK;oBACnC,KAAK,CAAC,UAAU,EAAE,CAAC;iBACpB,EAAE,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACjD,SAAA;AAAM,aAAA;AACL,YAAA,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAClC,SAAA;KACF;AAID;;;AAGG;AACH,IAAA,oBAAoB,CAAC,EAAU,EAAA;AAC7B,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAC5C,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAC7C,gBAAA,MAAM,SAAS,GAAG,CAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,GAAG,IAAG,CAAC,CAAC;AAChC,gBAAA,IAAI,SAAS,EAAE;AACb,oBAAA,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAChE,iBAAA;AACF,aAAA;AACF,SAAA;KACF;AAED;;;;;;;;;AASC;IACD,kBAAkB,CAChB,UAAe,EACf,IAAS,EACT,IAAS,EACT,UAAe,EACf,MAAW,EACX,YAAmE,EAAA;;AAEnE,QAAA,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO;AAAE,YAAA,OAAO,UAAU,CAAC;AAC3D,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,MAAM,OAAO,GAAG,UAAU,KAAA,IAAA,IAAV,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,aAAa,CAAC;AAC1C,YAAA,IAAI,CAAC,OAAO;AAAE,gBAAA,OAAO,UAAU,CAAC;;YAGhC,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACvD,YAAA,MAAM,YAAY,GAAG,CAAC,aAAa,CAAC,aAAa,KAAK,MAAM,IAAI,aAAa,CAAC,iBAAiB,KAAK,IAAI;AACtG,iBAAC,aAAa,CAAC,kBAAkB,KAAK,MAAM,IAAI,aAAa,CAAC,kBAAkB,KAAK,IAAI,CAAC,CAAC;AAC7F,YAAA,IAAI,YAAY,EAAE;;gBAEhB,IAAI,OAAO,CAAC,kBAAkB,EAAE;AAC9B,oBAAA,OAAO,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC;AACzC,iBAAA;AAED,gBAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAK;;AACvC,oBAAA,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;AAC3C,oBAAA,MAAM,WAAW,GACf,UAAU,KAAK,CAAC;AACd,0BAAE,aAAa,IAAI,CAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,GAAG,MAAM,CAAA,OAAA,CAAS,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,0CAAE,MAAM,KAAI,CAAC,CAAC;AACpE,0BAAE,aAAa,GAAG,UAAU,CAAC;oBACjC,IAAI,WAAW,GAAG,CAAC,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE;AACvC,wBAAA,YAAY,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AACrC,qBAAA;AACD,oBAAA,UAAU,GAAG,aAAa,CAAC;AAC7B,iBAAC,CAAC,CAAC;AACH,gBAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1B,gBAAA,OAAO,CAAC,kBAAkB,GAAG,QAAQ,CAAC;AACvC,aAAA;AAAM,iBAAA;;AAEL,gBAAA,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;AAC3C,gBAAA,MAAM,WAAW,GACf,UAAU,KAAK,CAAC;AACd,sBAAE,aAAa,IAAI,CAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,GAAG,MAAM,CAAA,OAAA,CAAS,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,0CAAE,MAAM,KAAI,CAAC,CAAC;AACpE,sBAAE,aAAa,GAAG,UAAU,CAAC;gBACjC,IAAI,WAAW,GAAG,CAAC,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE;AACvC,oBAAA,YAAY,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AACrC,iBAAA;AACD,gBAAA,UAAU,GAAG,aAAa,CAAC;AAC5B,aAAA;AAED,YAAA,OAAO,UAAU,CAAC;AACnB,SAAA;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;AAKD,IAAA,YAAY,CAAC,IAAI,EAAA;AACf,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;KACtB;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAA;KACtB;;AA6YD,IAAA,aAAa,CAAC,UAAwE,EAAA;QACpF,IAAI,YAAY,GAAG,EAAE,CAAC;QAEtB,IAAI,UAAU,CAAC,QAAQ,EAAE;AACvB,YAAA,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACxC,SAAA;QACD,IAAI,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;AACnD,YAAA,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3D,SAAA;QACD,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,IAAI,UAAU,CAAC,SAAS,GAAG,CAAC,EAAE;AAClE,YAAA,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AAC/D,SAAA;AAED,QAAA,OAAO,YAAY,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;KACtE;;AAGD,IAAA,WAAW,CACT,QAA6C,EAC7C,aAAqB,EACrB,SAAc,EACd,YAAkB,EAAA;;QAElB,MAAM,QAAQ,GAAG,CAAG,EAAA,QAAQ,CAAC,KAAK,CAAA,CAAA,EAAI,aAAa,CAAA,CAAE,CAAC;QACtD,OAAO;AACL,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,KAAK,EAAE,CAAA,EAAA,GAAA,YAAY,KAAA,IAAA,IAAZ,YAAY,KAAZ,KAAA,CAAA,GAAA,YAAY,GAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,mCAAI,EAAE;YACtD,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;SAC1D,CAAC;KACH;AAED;;;;;;AAMG;AACH,IAAA,iCAAiC,CAC/B,SAAc,EACd,aAAqB,EACrB,SAAgB,EAChB,UAAiB,EAAA;;QAGjB,IAAI,sBAAsB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,KACnD,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC,CACrD,CAAC;;AAGF,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AAC7B,YAAA,sBAAsB,CAAC,IAAI,CACzB,IAAI,CAAC,WAAW,CACd,EAAE,KAAK,EAAE,QAAQ,CAAC,YAAY,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,cAAc,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAChG,aAAa,EACb,SAAS,CACV,CACF,CAAC;AACJ,SAAC,CAAC,CAAC;;AAGH,QAAA,sBAAsB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;;YAC1C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACvC,gBAAA,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5F,aAAA;AAAM,iBAAA;AACL,gBAAA,CAAA,EAAA,GAAA,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzD,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;;;;;;;AAQG;AACH,IAAA,kCAAkC,CAChC,SAAc,EACd,aAAqB,EACrB,SAAgB,EAChB,UAAiB,EACjB,QAAa,EACb,eAAsD,EACtD,MAAgB,EAAA;;AAEhB,QAAA,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;;QAG1G,IAAI,sBAAsB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAI;;;AAEvD,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,OAAO,IAAI,CAAC,WAAW,CACrB,QAAQ,EAAE,aAAa,EAAE,SAAS,EAClC,CAAC,QAAQ,CAAC,KAAK,IAAI,MAAM;AACvB,sBAAE,CAAA,EAAA,GAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,GAAG,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,GAAG,QAAQ,CAAC,KAAK,CAAI,CAAA,EAAA,aAAa,EAAE,CAAC;AACvD,sBAAE,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAG,CAAA,EAAG,QAAQ,CAAC,KAAK,CAAI,CAAA,EAAA,aAAa,CAAE,CAAA,CAAC,CACrD,CAAC;AACH,aAAA;;AAGD,YAAA,IACE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjD,gBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EACzD;AACA,gBAAA,OAAO,IAAI,CAAC,WAAW,CACrB,QAAQ,EAAE,aAAa,EAAE,SAAS,EAClC,MAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAG,CAAA,EAAG,QAAQ,CAAC,KAAK,CAAI,CAAA,EAAA,aAAa,CAAE,CAAA,CAAC,mCAAI,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAG,CAAA,QAAA,EAAW,aAAa,CAAE,CAAA,CAAC,CAC3F,CAAC;AACH,aAAA;;YAGD,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAG,CAAA,EAAG,QAAQ,CAAC,KAAK,CAAA,CAAA,EAAI,aAAa,CAAA,CAAE,CAAC,CAAC,CAAC;AAChH,SAAC,CACA,CAAC;;QAGF,IAAI,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE;YAChD,sBAAsB,CAAC,IAAI,CACzB,IAAI,CAAC,WAAW,CACd,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAC9D,aAAa,EACb,SAAS,EACT,CAAA,EAAA,GAAA,eAAe,CAAC,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,KAAK,EAAE,CAAC,CAAC,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAA,KAAA,EAAQ,aAAa,CAAE,CAAA,CAAC,CAC/D,CACF,CAAC;AACH,SAAA;;AAGD,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;YAC7B,sBAAsB,CAAC,IAAI,CACzB,IAAI,CAAC,WAAW,CACd,EAAE,KAAK,EAAE,QAAQ,CAAC,YAAY,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,cAAc,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAChG,aAAa,EACb,SAAS,EACT,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAG,CAAA,EAAG,QAAQ,CAAC,YAAY,CAAA,CAAA,EAAI,aAAa,CAAE,CAAA,CAAC,CACxD,CACF,CAAC;AACJ,SAAC,CAAC,CAAC;;AAGH,QAAA,sBAAsB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;;YAC1C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACvC,gBAAA,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5F,aAAA;AAAM,iBAAA;AACL,gBAAA,CAAA,EAAA,GAAA,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzD,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAKD,IAAA,aAAa,CAAC,IAAI,EAAA;AAChB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;KACvB;IAED,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAA;KACvB;AAED;;;AAGG;AACH,IAAA,yBAAyB,CAAC,KAAK,EAAA;AAC7B,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,EAAE;YACzB,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,OAAY,KAAI;gBACnE,IAAI,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,MAAM,MAAK,WAAW,IAAI,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,SAAS,KAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC3E,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AACrE,oBAAA,IAAI,CAAC,OAAO;wBAAE,OAAO;AACrB,oBAAA,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;oBACzB,UAAU,CAAC,MAAK;AACd,wBAAA,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;qBAC3B,EAAE,GAAG,CAAC,CAAC;AACT,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,eAAe,CAAC,cAAoB,EAAA;AAClC,QAAA,MAAM,OAAO,GAAQ;AACnB,YAAA,gBAAgB,EAAE,IAAI;SACvB,CAAC;AAEF,QAAA,IAAI,cAAc,KAAd,IAAA,IAAA,cAAc,uBAAd,cAAc,CAAE,GAAG,EAAE;AACvB,YAAA,OAAO,CAAC,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC;AACnC,SAAA;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;KACrD;AAID;;;;;;;;;;;;;;AAcE;AACF,IAAA,MAAM,CAAC,KAAgB,EAAE,KAAK,EAAE,IAA0C,EAAA;;AACxE,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO;AAClC,QAAA,KAAK,CAAC,cAAc,EAAE,CAAC;;AAGvB,QAAA,IAAI,CAAA,EAAA,GAAA,KAAK,CAAC,IAAI,0CAAE,KAAK;YAAE,KAAK,CAAC,eAAe,EAAE,CAAC;;AAG/C,QAAA,IAAI,MAAA,KAAK,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,iCAAiC,CAAC,CAAC;YAC/D,OAAO;AACR,SAAA;;QAGD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA,MAAA,KAAK,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,KAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAG;YACnE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AAAE,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,kCAAkC,CAAC,CAAC;YAClG,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrC,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO;AAE1B,QAAA,MAAM,gBAAgB,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC5C,MAAM,kBAAkB,GAAG,CAAC,oBAAoB,EAAE,wBAAwB,EAAE,4BAA4B,CAAC,CAAC;;AAG1G,QAAA,MAAM,6BAA6B,GAAG,CAAC,gBAAgB,EAAE,yBAAyB,CAAC,CAAC;;AAGpF,QAAA,MAAM,2BAA2B,GAAG;YAClC,SAAS,EAAE,CAAC,4BAA4B,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,mCAAmC,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,4BAA4B,CAAC;AAC9R,YAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,iBAAiB,CAAC;YACvE,UAAU,EAAE,CAAC,qBAAqB,EAAE,eAAe,EAAE,yBAAyB,EAAE,gCAAgC,EAAE,qBAAqB,CAAC;YACxI,IAAI,EAAE,CAAC,cAAc,EAAE,sBAAsB,EAAE,gCAAgC,EAAE,oBAAoB,EAAE,oBAAoB,CAAC;AAC5H,YAAA,GAAG,EAAE,CAAC,iBAAiB,EAAE,2BAA2B,EAAE,mCAAmC,CAAC;AAC1F,YAAA,GAAG,EAAE,CAAC,aAAa,EAAE,uBAAuB,EAAE,+BAA+B,CAAC;YAC9E,OAAO,EAAE,CAAC,kBAAkB,EAAE,0BAA0B,EAAE,mCAAmC,EAAE,uBAAuB,EAAE,uBAAuB,CAAC;AAChJ,YAAA,WAAW,EAAE,CAAC,oBAAoB,EAAE,2BAA2B,CAAC;YAChE,KAAK,EAAE,CAAC,eAAe,EAAE,yBAAyB,EAAE,iCAAiC,EAAE,qBAAqB,EAAE,qBAAqB,CAAC;YACpI,IAAI,EAAE,CAAC,cAAc,EAAE,wBAAwB,EAAE,gCAAgC,EAAE,oBAAoB,EAAE,oBAAoB,CAAC;SAC/H,CAAA;;QAGD,MAAM,iBAAiB,GAAG,CAAC,GAAG,6BAA6B,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE9H,QAAA,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,MAAK;AAChE;;;;AAIG;AACH,YAAA,MAAM,eAAe,GAAG,CAAC,IAAU,KAAI;gBACrC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;AAC3C,oBAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;AAEhC,oBAAA,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAI;;AACpB,wBAAA,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;AACxB,wBAAA,GAAG,CAAC,MAAM,GAAG,MAAK;;;AAEhB,4BAAA,MAAM,aAAa,GAAG;gCACpB,KAAK,EAAE,GAAG,CAAC,YAAY;gCACvB,MAAM,EAAE,GAAG,CAAC,aAAa;AACzB,gCAAA,KAAK,EAAE,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,aAAa;6BAC5C,CAAC;4BAEF,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;;AAEnD,gCAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,KAAK,EAAE,MAAM,EAAE,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC;gCACpH,OAAO,OAAO,EAAE,CAAC;AAClB,6BAAA;iCACI,IAAI,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;;AAE1D,gCAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,KAAK,EAAE,MAAM,EAAE,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,MAAM,EAAE,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;gCAClI,OAAO,OAAO,EAAE,CAAC;AAClB,6BAAA;iCACI,IAAI,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;;gCAEzD,IAAI,UAAU,GAAG,WAAW,CAAC;gCAE7B,IAAI,6BAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;;oCAEhE,UAAU,GAAG,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,KAAI,WAAW,CAAC;AAC3D,iCAAA;AACI,qCAAA;;oCAEH,MAAM,oBAAoB,GAAG,EAAE,CAAC;;AAGhC,oCAAA,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,KAAI;AAC3E,wCAAA,UAAU,CAAC,OAAO,CAAC,SAAS,IAAG;AAC7B,4CAAA,oBAAoB,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;AAC3C,yCAAC,CAAC,CAAC;AACL,qCAAC,CAAC,CAAC;oCAEH,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC;AACxE,iCAAA;;AAGD,gCAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,KAAK,EAAE,MAAM,EAAE,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,MAAM,EAAE,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;gCACjI,OAAO,OAAO,EAAE,CAAC;AAClB,6BAAA;;AAEI,iCAAA;AACH,gCAAA,MAAM,mBAAmB,GAAG;oCAC1B,KAAK,EAAE,aAAa,CAAC,KAAK;oCAC1B,MAAM,EAAE,aAAa,CAAC,MAAM;iCAC7B,CAAA;AACD,gCAAA,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;gCACjC,IAAI,YAAY,GAAG,CAAA,EAAA,GAAA,SAAS,CAAC,YAAY,CAAC,aAAa,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,iBAAiB,CAAC;;AAG7E,gCAAA,IAAI,CAAC,OAAO;AACT,qCAAA,2BAA2B,CAAC,IAAI,EAAE,uBAAuB,EAAE;AAC1D,oCAAA,aAAa,EAAE,YAAY;AAC3B,oCAAA,UAAU,EAAE,mBAAmB;iCAChC,CAAC;AACD,qCAAA,IAAI,CAAC,CAAC,GAAQ,KAAI;AACjB,oCAAA,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE;;wCAElB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAG,EAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,wBAAwB,CAAC,KAAK,GAAG,CAAC,GAAG,CAAE,CAAA,EAAE,IAAI,CAAC,CAAC;wCAC5G,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,uBAAuB,EAAE,IAAI,CAAC,CAAC;AAC3D,wCAAA,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxB,qCAAA;;AAED,oCAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,KAAK,EAAE,MAAM,EAAE,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;AAClH,oCAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;oCACpD,OAAO,OAAO,EAAE,CAAC;AACnB,iCAAC,CAAC;AACD,qCAAA,KAAK,CAAC,CAAC,GAAG,KAAI;;AAEb,oCAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;AACvD,oCAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AACpC,wCAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;oCAC1D,MAAM,CAAC,GAAG,CAAC,CAAC;AACd,iCAAC,CAAC,CAAC;AACN,6BAAA;AACH,yBAAC,CAAC;AAEF,wBAAA,GAAG,CAAC,OAAO,GAAG,MAAK;;AAEjB,4BAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;4BACtD,MAAM,CAAC,eAAe,CAAC,CAAC;AAC1B,yBAAC,CAAC;wBAEF,GAAG,CAAC,GAAG,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAgB,CAAC;AACvC,qBAAC,CAAC;AAEF,oBAAA,MAAM,CAAC,OAAO,GAAG,MAAK;;AAEpB,wBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;wBAChD,MAAM,CAAC,eAAe,CAAC,CAAC;AAC1B,qBAAC,CAAC;AAEF,oBAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7B,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC;;AAGF,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AAEzD,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;iBACf,IAAI,CAAC,MAAK;;AAET,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACxB,aAAC,CAAC;iBACD,KAAK,CAAC,MAAK;;AAEV,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACxB,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACJ;AAED;;;;;;;;;;;AAWE;IACM,qBAAqB,CAAC,KAAK,EAAE,GAAW,EAAE,aAAkB,EAAE,IAA0C,EAAE,OAAa,EAAE,UAAmB,EAAA;;QAClJ,IAAI,EAAC,aAAa,KAAA,IAAA,IAAb,aAAa,KAAb,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAa,CAAE,KAAK,CAAA,IAAI,EAAC,aAAa,KAAb,IAAA,IAAA,aAAa,uBAAb,aAAa,CAAE,MAAM,CAAA,EAAE;;AAEnD,YAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AACpC,gBAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,aAAa,CAAC,CAAC;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO;AACR,SAAA;;AAGD,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,SAAS,EAAE,UAAU;AACrB,gBAAA,UAAU,EAAE,kBAAkB;AAC9B,gBAAA,KAAK,EAAE,eAAe;AACtB,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,YAAY,EAAE,mBAAmB;AACjC,gBAAA,WAAW,EAAE,YAAY;AACzB,gBAAA,MAAM,EAAE,UAAU;AAClB,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,KAAK,EAAE,WAAW;AAClB,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,OAAO,EAAE,WAAW;aACrB,CAAA;;AAGD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,KAAA,IAAA,IAAV,UAAU,KAAV,KAAA,CAAA,GAAA,UAAU,GAAI,WAAW,CAAC,CAAC,CAAC;AAC3F,YAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;AAC3F,SAAA;;QAGD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;;AAE9B,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC;AACrD,aAAA;;YAGD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACxE,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;;AAG5E,YAAA,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,IAAI,QAAQ,IAAI,aAAa,CAAC,MAAM,IAAI,SAAS,CAAC;AAEzF,YAAA,IAAI,UAAkB,CAAC;AACvB,YAAA,IAAI,WAAmB,CAAC;AAExB,YAAA,IAAI,WAAW,EAAE;;AAEf,gBAAA,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC;AACjC,gBAAA,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;AACpC,aAAA;AACI,iBAAA;;AAEH,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,QAAQ,GAAG,aAAa,CAAC,KAAK,EAC9B,SAAS,GAAG,aAAa,CAAC,MAAM,CACjC,CAAC;gBAEF,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;gBACrD,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;AACxD,aAAA;;AAGD,YAAA,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,GAC3B,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CAAC,eAAe,CAAC,CAC3B,EAAA,EAAA,KAAK,kCACA,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CACpC,EAAA,EAAA,KAAK,EAAE,CAAG,EAAA,UAAU,CAAI,EAAA,CAAA,EACxB,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,EAAA,CAAI,MAE7B,CAAC;AACJ,SAAC,CAAC,CAAC;;QAGH,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAA,EAAA,GAAA,KAAK,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC,CAAC;AAE5C,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7F,aAAA,IAAI,CAAC,CAAC,IAAI,KAAI;;AAEb,YAAA,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;AAC1D,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;AACtD,aAAA;AACH,SAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAI;;AAEjB,YAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AACpC,gBAAA,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,kCAAkC,CAAC,CAAC;AAChE,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACxB,SAAC,CAAC,CAAC;KACN;AAID;;;;AAIG;IACU,eAAe,CAAC,OAAe,EAAE,KAAU,EAAA;;AACtD,YAAA,MAAM,SAAS,GAAQ,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACrE,YAAA,IAAI,KAAK,CAAC,OAAO,IAAI,SAAS,EAAE;gBAC9B,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE;AAC/C,oBAAA,CAAC,mBAAmB,GAAG,OAAO,GAAG,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC;AAC3E,oBAAA,CAAC,4BAA4B,GAAG,OAAO,GAAG,KAAK,CAAC,4BAA4B,GAAG,KAAK,CAAC,OAAO,CAAC;AAC7F,oBAAA,CAAC,2BAA2B,GAAG,OAAO,GAAG,KAAK,CAAC,2BAA2B,GAAG,KAAK,CAAC,OAAO,CAAC;AAC3F,oBAAA,CAAC,4BAA4B,GAAG,OAAO,GAAG,KAAK,CAAC,4BAA4B,GAAG,KAAK,CAAC,OAAO,CAAC;AAC7F,oBAAA,CAAC,2BAA2B,GAAG,OAAO,GAAG,KAAK,CAAC,2BAA2B,GAAG,KAAK,CAAC,OAAO,CAAC;AAC5F,iBAAA,CAAC,CAAA;gBAEF,MAAM,QAAQ,GAAQ,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACjE,IAAI,CAAC,QAAQ,CAAC,eAAe;AAAE,oBAAA,QAAQ,CAAC,eAAe,GAAG,EAAE,CAAC;gBAC7D,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAU,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;oBAC/E,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzC,oBAAA,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAE;wBAC5C,eAAe,EAAE,QAAQ,CAAC,eAAe;AAC1C,qBAAA,CAAC,CAAC;AACJ,iBAAA;gBACD,OAAO;AACR,aAAA;AAGD,YAAA,IAAI,UAAU,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACT,KAAK,CACT,CAAC;;YAEF,OAAO,UAAU,CAAC,GAAG,CAAC;YACtB,OAAO,UAAU,CAAC,OAAO,CAAC;YAC1B,OAAO,UAAU,CAAC,OAAO,CAAC;AAE1B,YAAA,UAAU,CAAC,OAAO,GAAG,EAAE,CAAC;AACxB,YAAA,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;YAC7B,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;AAC1B,gBAAA,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC;AACxB,gBAAA,UAAU,CAAC,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC,GACtC,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,MAAM,GAAG,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,CAChD,CAAC;AACJ,aAAC,CAAC,CAAC;YACH,MAAM,QAAQ,GAAQ,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACrE,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,gBAAA,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE;AAC/B,oBAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACzD,iBAAA;AACF,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAED;;;;AAIG;AACU,IAAA,gBAAgB,CAAC,WAAwC,EAAE,SAAiB,EAAE,MAAW,EAAA;;AACpG,YAAA,MAAM,UAAU,GAAQ,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACxE,YAAA,IAAI,MAAM,CAAC,OAAO,IAAI,UAAU,EAAE;gBAChC,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE;AACjD,oBAAA,CAAC,mBAAmB,GAAG,SAAS,GAAG,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;AACtG,oBAAA,CAAC,4BAA4B,GAAG,SAAS,GAAG,MAAM,CAAC,4BAA4B,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;AACxH,oBAAA,CAAC,2BAA2B,GAAG,SAAS,GAAG,MAAM,CAAC,2BAA2B,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;AACtH,oBAAA,CAAC,4BAA4B,GAAG,SAAS,GAAG,MAAM,CAAC,4BAA4B,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;AACxH,oBAAA,CAAC,2BAA2B,GAAG,SAAS,GAAG,MAAM,CAAC,2BAA2B,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;AACvH,iBAAA,CAAC,CAAA;AAEF,gBAAA,MAAM,UAAU,GAAQ,CAAC,WAAW,IAAI,OAAO;sBAC3C,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC;sBAC7C,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBACnD,IAAI,CAAC,UAAU,CAAC,gBAAgB;AAAE,oBAAA,UAAU,CAAC,gBAAgB,GAAG,EAAE,CAAC;gBACnE,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAU,KAAK,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;oBACrF,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC7C,IAAI,WAAW,IAAI,OAAO,EAAE;AAC1B,wBAAA,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE;4BAC/C,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;AAC9C,yBAAA,CAAC,CAAC;AACJ,qBAAA;oBACD,IAAI,WAAW,IAAI,QAAQ,EAAE;AAC3B,wBAAA,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE;4BAChD,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;AAC9C,yBAAA,CAAC,CAAC;AACJ,qBAAA;AACF,iBAAA;gBACD,OAAO;AACR,aAAA;AAED,YAAA,IAAI,QAAQ,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACP,MAAM,CACV,CAAC;;YAEF,OAAO,QAAQ,CAAC,GAAG,CAAC;YACpB,OAAO,QAAQ,CAAC,OAAO,CAAC;AACxB,YAAA,QAAQ,CAAC,OAAO,GAAG,EAAE,CAAC;YACtB,IAAI,WAAW,IAAI,OAAO,EAAE;AAC1B,gBAAA,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC;gBAC9B,OAAO,QAAQ,CAAC,SAAS,CAAC;AAC3B,aAAA;YACD,IAAI,WAAW,IAAI,QAAQ,EAAE;AAC3B,gBAAA,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC/B,OAAO,QAAQ,CAAC,QAAQ,CAAC;AAC1B,aAAA;YACD,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;AAC1B,gBAAA,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC;gBACxB,QAAQ,CAAC,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACtC,MAAM,CAAC,MAAM,GAAG,YAAY,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CACzE,CAAC;AACJ,aAAC,CAAC,CAAC;YACH,MAAM,SAAS,GAAQ,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACrE,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/C,gBAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE;AAChC,oBAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3D,iBAAA;AACF,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAED;;;;AAIG;AACU,IAAA,cAAc,CAAC,IAAS,EAAA;;AACnC,YAAA,MAAM,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,IAAI,CAAE,CAAC;YAE5B,MAAM,KAAK,GAAQ,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;;YAExD,MAAM,WAAW,GAAG,OAAO,CAAC;AAE5B;;;;;;AAMG;AACH,YAAA,SAAS,mBAAmB,CAAC,aAAqB,EAAE,KAAa,EAAA;AAC/D,gBAAA,IAAI,QAAQ,GAAG,aAAa,GAAG,WAAW,CAAC;;AAG3C,gBAAA,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,EAAE;oBAC7C,QAAQ,IAAI,WAAW,CAAC;AACzB,iBAAA;AAED,gBAAA,OAAO,QAAQ,CAAC;aACjB;YAED,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AACjC,gBAAA,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AAC3B,oBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACvD,iBAAA;AACH,aAAC,CAAC,CAAA;YAEF,OAAO,CAAC,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAEzD,OAAO,OAAO,CAAC,GAAG,CAAC;YACnB,OAAO,OAAO,CAAC,UAAU,CAAA;AAEzB,YAAA,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE;;gBAE7C,OAAO,OAAO,CAAC,eAAe,CAAA;AAC/B,aAAA;YAED,MAAM,GAAG,GAAQ,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAE5D,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,gBAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;oBAC/B,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5C,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,GAAG,CAAC;SACZ,CAAA,CAAA;AAAA,KAAA;AAED;;;;;;;;AAQG;AACI,IAAA,YAAY,CAAC,GAAW,EAAA;QAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;AACxB,YAAA,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;AAEd,YAAA,GAAG,CAAC,MAAM,GAAG,MAAK;AAChB,gBAAA,OAAO,CAAC;oBACN,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;iBACnB,CAAC,CAAC;AACL,aAAC,CAAC;AAEF,YAAA,GAAG,CAAC,OAAO,GAAG,CAAC,GAAG,KAAI;gBACpB,MAAM,CAAC,GAAG,CAAC,CAAC;AACd,aAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAID;;;;;AAKG;AACH,IAAA,kBAAkB,CAAC,aAAqB,EAAA;AACtC,QAAA,IAAI,CAAC,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ;AAAE,YAAA,OAAO,IAAI,CAAC;AAErE,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;;AAGrC,QAAA,IAAI,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;;AAG5D,QAAA,IAAI,qCAAqC,CAAC,IAAI,CAAC,OAAO,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;;QAGtE,IAAI;AACF,YAAA,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,KAAK,CAAC;AACd,SAAA;QAAC,OAAM,EAAA,EAAA;YACN,OAAO,IAAI,CAAC;AACb,SAAA;KACF;AAED;;;;;AAKG;AACI,IAAA,oBAAoB,CAAC,EAAU,EAAE,IAAY,EAAE,UAAe,EAAA;QACnE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;YACrC,IAAI,KAAK,GAAQ,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;;AAG9C,YAAA,QAAQ,IAAI;AACV,gBAAA,KAAK,MAAM;oBACT,KAAK,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;oBAC5B,MAAM;AACR,gBAAA,KAAK,OAAO;oBACV,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;oBAC7B,MAAM;AACR,gBAAA,KAAK,QAAQ;oBACX,KAAK,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;oBAC9B,MAAM;AACR,gBAAA;oBACE,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAA,CAAE,CAAC,CAAC,CAAC;AACrD,aAAA;AAED,YAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC1C,iBAAA,IAAI,CAAC,CAAC,QAAe,KAAI;gBACxB,IAAI,EAAC,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,MAAM,CAAA;oBAAE,OAAO,OAAO,EAAE,CAAC;gBAExC,MAAM,aAAa,GAAgB,UAAU,KAAA,IAAA,IAAV,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,aAAa,CAAC;gBAC7D,IAAI,CAAC,aAAa,EAAE;AAClB,oBAAA,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;oBACxC,OAAO,OAAO,EAAE,CAAC;AAClB,iBAAA;AAED,gBAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAG;oBACtB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI;wBAAE,OAAO;oBAEvC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAEpC,oBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE;AACvC,wBAAA,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,UAAU,CAAC,CAAC;wBACzD,OAAO;AACR,qBAAA;;oBAGD,MAAM,QAAQ,GAAG,mDAAmD,CAAC;oBACrE,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAE5C,oBAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;;AAE3B,wBAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;wBACxB,IAAI,aAAa,CAAC,aAAa,CAAC,eAAe,GAAG,CAAA,EAAA,CAAI,CAAC,EAAE;AACvD,4BAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;4BACvC,OAAO;AACR,yBAAA;wBAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAClD,wBAAA,QAAQ,CAAC,IAAI,GAAG,iBAAiB,CAAC;AAClC,wBAAA,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;AACnB,wBAAA,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,wBAAA,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACrC,qBAAA;AAAM,yBAAA;;wBAEL,MAAM,WAAW,GAAG,qCAAqC,CAAC;wBAC1D,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;wBAEtD,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,4BAAA,OAAO,CAAC,OAAO,CAAC,CAAC,IAAG;gCAClB,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAClD,gCAAA,QAAQ,CAAC,IAAI,GAAG,iBAAiB,CAAC;AAClC,gCAAA,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,gCAAA,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACtC,6BAAC,CAAC,CAAC;AACJ,yBAAA;AAAM,6BAAA;;4BAEL,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAClD,4BAAA,QAAQ,CAAC,IAAI,GAAG,iBAAiB,CAAC;AAClC,4BAAA,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC;AAC3B,4BAAA,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACrC,yBAAA;AACF,qBAAA;AACH,iBAAC,CAAC,CAAC;AAEH,gBAAA,OAAO,EAAE,CAAC;AACZ,aAAC,CAAC;iBACD,KAAK,CAAC,GAAG,IAAG;AACX,gBAAA,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;gBAC1C,MAAM,CAAC,GAAG,CAAC,CAAC;AACd,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACJ;AAcD;;AAEG;IACH,oBAAoB,GAAA;QAClB,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AAC3F,YAAA,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,IAAI,aAAa,CAAC,CAAC;YACpE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;;AAE9F,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,gBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC3B,oBAAA,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC9B,iBAAA,CAAC,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AACnB,oBAAA,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,IAAI,CAAC;AAClC,iBAAC,CAAC,CAAC;AACJ,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;AACH,IAAA,kBAAkB,CAAC,MAAgB,EAAA;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE;YACxD,WAAW,EAAE,IAAI,CAAC,WAAW;AAC9B,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,IAAS,KAAI;;AAEtB,SAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAU,KAAI;AACtB,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvB,SAAC,CAAC,CAAC;KACJ;AAGD;;;;;;AAMG;IACH,uBAAuB,CAAC,OAAO,EAAE,aAAa,EAAA;;QAE5C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;QAChD,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC;;AAGlE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,cAAc,CAAC,GAAG,cAAc,CAAC;QACvE,IAAI,SAAS,GAAG,GAAG,EAAE;AACnB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;;QAGD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;QACxD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;;QAG3D,IACE,WAAW,GAAG,GAAG;eACd,YAAY,GAAG,GAAG,EACrB;AACA,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;;AAGD,QAAA,OAAO,KAAK,CAAC;KACd;AAGD;;;AAGG;AACG,IAAA,0BAA0B,CAAC,gBAA6B,EAAA;;;AAC5D,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAC/D,iCAAiC,CAClC,CAAC,CAAC;AAEH,YAAA,KAAK,MAAM,SAAS,IAAI,YAAY,EAAE;gBACpC,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC3C,gBAAA,IAAI,CAAC,GAAG;oBAAE,SAAS;;gBAGnB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;gBAGjD,MAAM,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACpD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;;gBAGlD,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAZ,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,IAAA,MAAM,CAAC,KAAK,GAAK,OAAO,CAAC,KAAK,CAAC,CAAA;;;gBAI/B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK;sBACzC,OAAO,CAAC,MAAM;AAChB,sBAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;;AAGhE,gBAAA,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,gBAAA,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;;gBAGlD,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACjD,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;oBACxC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,GAAG,cAAc,CAAC,CAAC;AACtD,iBAAA;AACF,aAAA;;AACF,KAAA;AAED;;AAEG;AACH,IAAA,gBAAgB,CAAC,KAAM,EAAA;AACrB,QAAA,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAEnD,OAAO;AACL,YAAA,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;AACtC,YAAA,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;SAC1C,CAAC;KACH;;AAjhGU,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iQAsRhB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAtRV,eAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;iSAuR4C,MAAM,EAAA,UAAA,EAAA,CAAA;0BAA9C,MAAM;2BAAC,WAAW,CAAA;;;AC3SvB;;AAEG;MAIU,YAAY,CAAA;AAevB,IAAA,WAAA,CACU,cAA8B,EAAA;QAA9B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAdxC;;AAEG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG;YACZ,SAAS;YACT,SAAS;YACT,SAAS;SACV,CAAC;;QAEF,IAAuB,CAAA,uBAAA,GAAW,EAAE,CAAC;;QAQnC,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AAC3F,YAAA,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,IAAI,aAAa,CAAC,CAAC;YACpE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;;AAE9F,YAAA,IAAG,CAAC,IAAI,CAAC,eAAe,EAAE;AACxB,gBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC3B,oBAAA,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC9B,iBAAA,CAAC,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAI;AACnB,oBAAA,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,IAAI,CAAC;AAClC,iBAAC,CAAC,CAAC;AACJ,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAGD;;AAEG;AACH,IAAA,kBAAkB,CAAC,MAAgB,EAAA;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE;YACxD,WAAW,EAAE,IAAI,CAAC,WAAW;AAC9B,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,IAAS,KAAI;;AAEtB,SAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAU,KAAI;AACtB,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvB,SAAC,CAAC,CAAC;KACJ;;0GA/CU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFT,MAAM,EAAA,CAAA,CAAA;4FAET,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCJqB,gBAAgB,CAAA;IAWpC,WACS,CAAA,cAA8B,EAC9B,eAAgC,EAAA;QADhC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;KACpC;AAGL;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,aAAa,CAAC;AAAE,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;YAC9F,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;AACzK,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AAAE,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;AACxI,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAAE,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;YAC1I,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpH,OAAO;AACR,SAAA;QACD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;YACtD,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK;YACpC,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,MAAM;YACtC,UAAU,EAAE,IAAI,CAAC,UAAU;AAC5B,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;;AAEjB,SAAC,CAAC,CAAC;KACJ;AAGD;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,aAAa,CAAC;AAAE,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;YAC9F,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;AACzK,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AAAE,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;YACxI,OAAO;AACR,SAAA;QACD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;YACtD,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK;AACrC,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;;AAEjB,SAAC,CAAC,CAAC;KACJ;AAGD;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,aAAa,CAAC;AAAE,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;YAC9F,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;AACzK,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAAE,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;YAC1I,OAAO;AACR,SAAA;QACD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;YACtD,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,MAAM;AACvC,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;;AAEjB,SAAC,CAAC,CAAC;KACJ;AAGD;;AAEG;IACH,gBAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,aAAa,CAAC;AAAE,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;YAC9F,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;YACzK,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpH,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,cAAc;AAChB,aAAA,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;YACnC,UAAU,EAAE,IAAI,CAAC,UAAU;AAC5B,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;;AAEjB,SAAC,CAAC,CAAC;KACN;;IAGD,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,aAAa,CAAC;AAAE,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;YAC9F,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;AACzK,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;AAAE,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;YAChJ,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,cAAc;AAChB,aAAA,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;YACnC,CAAC,IAAI,CAAC,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC,QAAQ;SAC5C,CAAC;AACD,aAAA,IAAI,CAAC,CAAC,IAAS,KAAI;AACpB,SAAC,CAAC,CAAC;KACN;AACF;;MC7GqB,iBAAiB,CAAA;IAQrC,WACS,CAAA,cAA8B,EAC9B,eAAgC,EAAA;QADhC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;KAGxC;AAED;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,aAAa,CAAC;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,CAAA;YAC/F,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;AAC3K,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAA;AACzI,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;YAC3I,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YACrH,OAAO;AACR,SAAA;QACD,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;YACxD,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK;YACpC,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,MAAM;YACtC,UAAU,EAAE,IAAI,CAAC,UAAU;AAC5B,SAAA,CAAC,CAAA;KAEH;AACD;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,aAAa,CAAC;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,CAAA;YAC/F,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;AAC3K,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAA;YACzI,OAAO;AACR,SAAA;QACD,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;YACxD,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK;AACrC,SAAA,CAAC,CAAA;KAEH;IAED,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,aAAa,CAAC;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,CAAA;YAC/F,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;AAC3K,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;YAC3I,OAAO;AACR,SAAA;QACD,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;YACxD,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,MAAM;AACvC,SAAA,CAAC,CAAA;KACH;IAED,oBAAoB,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,aAAa,CAAC;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,CAAA;YAC/F,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;AAC3K,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAA;AACzI,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;YAC3I,OAAO;AACR,SAAA;QACD,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;YACtD,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,MAAM;YACtC,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK;AACrC,SAAA,CAAC,CAAC;KACN;AAEG;;;AAGD;IACH,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,aAAa,CAAC;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,CAAA;YAC/F,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;YAC3K,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC7G,OAAO;AACR,SAAA;;AAED,QAAA,IAAI,CAAC,cAAc;AAChB,aAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;AAC7E,aAAA,IAAI,CAAC,CAAC,IAAI,KAAI;;AAEf,SAAC,CAAC,CAAC;KACN;IAED,gBAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,aAAa,CAAC;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,CAAA;YAC/F,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;YAC3K,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YACrH,OAAO;AACR,SAAA;;AAED,QAAA,IAAI,CAAC,cAAc;AAChB,aAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACtE,aAAA,IAAI,CAAC,CAAC,IAAI,KAAI;;AAEf,SAAC,CAAC,CAAC;KACN;;IAGD,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,aAAa,CAAC;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,CAAA;YAC/F,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;YAC3K,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC7G,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,cAAc;AAChB,aAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;AACrC,YAAA,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;SACtC,CAAC;AACD,aAAA,IAAI,CACH,CAAC,IAAI,KAAI;AAET,SAAC,EACD,CAAC,KAAK,KAAI;AACR,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvB,SAAC,CACF,CAAC;KACL;AAEF;;MCpIqB,oBAAoB,CAAA;AAUxC,IAAA,WAAA,CACS,cAA8B,EAC9B,eAAgC,EAChC,eAAgC,EAAA;QAFhC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;KACpC;;IAGK,iBAAiB,GAAA;;QACzB,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,mCAAI,IAAI,CAAC,aAAa,CAAC;KAClD;IAES,eAAe,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;KACjG;AAES,IAAA,iBAAiB,CAAC,MAAgB,EAAA;AAC1C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC;AAAE,YAAA,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;QACtE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;YACtF,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3D,SAAA;AACD,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAC1C,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,aAAA;AACF,SAAA;KACF;IAED,YAAY,GAAA;AACV,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACxC,QAAA,MAAM,MAAM,GAAG,CAAC,CAAG,EAAA,IAAI,CAAC,MAAM,CAAA,MAAA,CAAQ,EAAE,CAAA,EAAG,IAAI,CAAC,MAAM,SAAS,EAAE,YAAY,CAAC,CAAC;AAC/E,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC/B,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,EAAE;YAC3D,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK;YACvB,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM;YACxB,UAAU,EAAE,IAAI,CAAC,UAAU;AAC5B,SAAA,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;AACT,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACxC,QAAA,MAAM,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,QAAQ,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAChC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,EAAE;AAC3D,YAAA,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AACpB,SAAA,CAAC,CAAC;KACJ;IAED,YAAY,GAAA;AACV,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACxC,QAAA,MAAM,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,SAAS,CAAC;AACtC,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAChC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,EAAE;AAC3D,YAAA,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM;AACrB,SAAA,CAAC,CAAC;KACJ;IAED,gBAAgB,GAAA;AACd,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACxC,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YACvC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,EAAE;YAC3D,UAAU,EAAE,IAAI,CAAC,UAAU;AAC5B,SAAA,CAAC,CAAC;KACJ;IAED,cAAc,GAAA;AACZ,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACxC,QAAA,MAAM,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,YAAY,CAAC;AACzC,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAChC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,EAAE;AAC3D,YAAA,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ;AACvB,SAAA,CAAC,CAAC;KACJ;IAED,YAAY,GAAA;AACV,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACxC,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnC,OAAO;AACR,SAAA;QACD,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc;AAChB,iBAAA,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AACnD,iBAAA,IAAI,CAAC,MAAO,GAAC,CAAC,CAAC;AACnB,SAAA;KACF;IAED,YAAY,GAAA;AACV,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACxC,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnC,OAAO;AACR,SAAA;QACD,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc;AAChB,iBAAA,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AACnD,iBAAA,IAAI,CAAC,SAAQ,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAChD,SAAA;KACF;IAED,oBAAoB,GAAA;AAClB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACxC,QAAA,MAAM,MAAM,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,MAAM,CAAQ,MAAA,CAAA,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA,OAAA,CAAS,CAAC,CAAC;AACjE,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC/B,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,EAAE;YAC3D,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK;YACvB,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM;AACzB,SAAA,CAAC,CAAC;KACJ;AACF;;AC5ID;;AAEG;;;;"}