{"version":3,"sources":["webpack://@microsites/inh0025-web/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://@microsites/inh0025-web/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://@microsites/inh0025-web/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://@microsites/inh0025-web/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://@microsites/inh0025-web/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://@microsites/inh0025-web/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://@microsites/inh0025-web/./node_modules/@babel/runtime/regenerator/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/@sanity/block-content-to-hyperscript/internals.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/@sanity/block-content-to-hyperscript/lib/blocksToNodes.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/@sanity/block-content-to-hyperscript/lib/buildMarksTree.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/@sanity/block-content-to-hyperscript/lib/generateKeys.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/@sanity/block-content-to-hyperscript/lib/getImageUrl.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/@sanity/block-content-to-hyperscript/lib/internals.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/@sanity/block-content-to-hyperscript/lib/mergeSerializers.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/@sanity/block-content-to-hyperscript/lib/nestLists.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/@sanity/block-content-to-hyperscript/lib/serializers.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/@sanity/block-content-to-react/lib/BlockContent.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/@sanity/block-content-to-react/lib/targets/dom.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/@sanity/generate-help-url/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/@sanity/image-url/lib/browser/image-url.umd.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/add_days/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/add_hours/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/add_iso_years/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/add_milliseconds/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/add_minutes/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/add_months/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/add_quarters/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/add_seconds/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/add_weeks/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/add_years/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/are_ranges_overlapping/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/closest_index_to/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/closest_to/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/compare_asc/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/compare_desc/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/difference_in_calendar_days/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/difference_in_calendar_iso_weeks/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/difference_in_calendar_iso_years/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/difference_in_calendar_months/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/difference_in_calendar_quarters/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/difference_in_calendar_weeks/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/difference_in_calendar_years/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/difference_in_days/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/difference_in_hours/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/difference_in_iso_years/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/difference_in_milliseconds/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/difference_in_minutes/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/difference_in_months/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/difference_in_quarters/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/difference_in_seconds/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/difference_in_weeks/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/difference_in_years/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/distance_in_words/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/distance_in_words_strict/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/distance_in_words_to_now/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/each_day/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/end_of_day/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/end_of_hour/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/end_of_iso_week/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/end_of_iso_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/end_of_minute/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/end_of_month/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/end_of_quarter/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/end_of_second/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/end_of_today/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/end_of_tomorrow/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/end_of_week/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/end_of_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/end_of_yesterday/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/format/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/get_date/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/get_day/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/get_day_of_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/get_days_in_month/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/get_days_in_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/get_hours/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/get_iso_day/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/get_iso_week/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/get_iso_weeks_in_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/get_iso_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/get_milliseconds/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/get_minutes/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/get_month/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/get_overlapping_days_in_ranges/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/get_quarter/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/get_seconds/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/get_time/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/get_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_after/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_before/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_date/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_equal/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_first_day_of_month/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_friday/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_future/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_last_day_of_month/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_leap_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_monday/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_past/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_same_day/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_same_hour/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_same_iso_week/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_same_iso_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_same_minute/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_same_month/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_same_quarter/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_same_second/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_same_week/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_same_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_saturday/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_sunday/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_this_hour/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_this_iso_week/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_this_iso_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_this_minute/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_this_month/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_this_quarter/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_this_second/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_this_week/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_this_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_thursday/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_today/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_tomorrow/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_tuesday/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_valid/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_wednesday/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_weekend/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_within_range/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/is_yesterday/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/last_day_of_iso_week/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/last_day_of_iso_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/last_day_of_month/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/last_day_of_quarter/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/last_day_of_week/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/last_day_of_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/locale/_lib/build_formatting_tokens_reg_exp/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/locale/en/build_distance_in_words_locale/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/locale/en/build_format_locale/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/locale/en/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/max/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/min/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/parse/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/set_date/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/set_day/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/set_day_of_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/set_hours/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/set_iso_day/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/set_iso_week/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/set_iso_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/set_milliseconds/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/set_minutes/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/set_month/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/set_quarter/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/set_seconds/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/set_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/start_of_day/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/start_of_hour/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/start_of_iso_week/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/start_of_iso_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/start_of_minute/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/start_of_month/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/start_of_quarter/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/start_of_second/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/start_of_today/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/start_of_tomorrow/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/start_of_week/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/start_of_year/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/start_of_yesterday/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/sub_days/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/sub_hours/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/sub_iso_years/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/sub_milliseconds/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/sub_minutes/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/sub_months/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/sub_quarters/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/sub_seconds/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/sub_weeks/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/date-fns/sub_years/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/decode-uri-component/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/deepmerge/dist/cjs.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/gatsby-source-sanity/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/gatsby-source-sanity/lib-es5/debug.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/gatsby-source-sanity/lib-es5/images/getGatsbyImageProps.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/gatsby-source-sanity/lib-es5/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/gatsby-source-sanity/lib-es5/util/documentIds.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/gatsby-source-sanity/lib-es5/util/resolveReferences.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/gatsby-source-sanity/lib-es5/util/unprefixDraftId.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/gatsby-source-sanity/node_modules/debug/src/browser.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/gatsby-source-sanity/node_modules/debug/src/common.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/load-script/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/memoize-one/dist/memoize-one.esm.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/ms/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/querystringify/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-fast-compare/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-instagram-embed/node_modules/query-string/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/Player.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/Preview.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/ReactPlayer.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/patterns.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/players/DailyMotion.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/players/Facebook.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/players/FilePlayer.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/players/Mixcloud.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/players/SoundCloud.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/players/Streamable.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/players/Twitch.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/players/Vidyard.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/players/Vimeo.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/players/Wistia.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/players/YouTube.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/players/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/props.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-player/lib/utils.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/requires-port/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/strict-uri-encode/index.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/url-parse/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/add_days/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/add_hours/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/add_iso_years/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/add_milliseconds/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/add_minutes/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/add_months/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/add_quarters/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/add_seconds/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/add_weeks/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/add_years/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/are_ranges_overlapping/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/closest_index_to/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/closest_to/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/compare_asc/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/compare_desc/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/difference_in_calendar_days/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/difference_in_calendar_iso_weeks/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/difference_in_calendar_iso_years/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/difference_in_calendar_months/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/difference_in_calendar_quarters/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/difference_in_calendar_weeks/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/difference_in_calendar_years/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/difference_in_days/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/difference_in_hours/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/difference_in_iso_years/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/difference_in_milliseconds/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/difference_in_minutes/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/difference_in_months/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/difference_in_quarters/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/difference_in_seconds/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/difference_in_weeks/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/difference_in_years/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/distance_in_words/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/distance_in_words_strict/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/distance_in_words_to_now/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/each_day/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/end_of_day/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/end_of_hour/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/end_of_iso_week/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/end_of_iso_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/end_of_minute/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/end_of_month/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/end_of_quarter/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/end_of_second/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/end_of_today/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/end_of_tomorrow/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/end_of_week/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/end_of_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/end_of_yesterday/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/format/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/get_date/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/get_day/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/get_day_of_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/get_days_in_month/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/get_days_in_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/get_hours/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/get_iso_day/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/get_iso_week/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/get_iso_weeks_in_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/get_iso_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/get_milliseconds/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/get_minutes/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/get_month/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/get_overlapping_days_in_ranges/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/get_quarter/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/get_seconds/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/get_time/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/get_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_after/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_before/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_date/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_equal/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_first_day_of_month/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_friday/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_future/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_last_day_of_month/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_leap_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_monday/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_past/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_same_day/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_same_hour/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_same_iso_week/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_same_iso_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_same_minute/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_same_month/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_same_quarter/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_same_second/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_same_week/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_same_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_saturday/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_sunday/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_this_hour/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_this_iso_week/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_this_iso_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_this_minute/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_this_month/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_this_quarter/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_this_second/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_this_week/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_this_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_thursday/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_today/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_tomorrow/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_tuesday/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_valid/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_wednesday/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_weekend/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_within_range/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/is_yesterday/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/last_day_of_iso_week/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/last_day_of_iso_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/last_day_of_month/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/last_day_of_quarter/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/last_day_of_week/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/last_day_of_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/locale/_lib/build_formatting_tokens_reg_exp/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/locale/en/build_distance_in_words_locale/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/locale/en/build_format_locale/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/locale/en/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/max/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/min/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/parse/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/set_date/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/set_day/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/set_day_of_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/set_hours/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/set_iso_day/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/set_iso_week/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/set_iso_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/set_milliseconds/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/set_minutes/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/set_month/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/set_quarter/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/set_seconds/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/set_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/start_of_day/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/start_of_hour/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/start_of_iso_week/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/start_of_iso_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/start_of_minute/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/start_of_month/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/start_of_quarter/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/start_of_second/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/start_of_today/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/start_of_tomorrow/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/start_of_week/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/start_of_year/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/start_of_yesterday/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/sub_days/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/sub_hours/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/sub_iso_years/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/sub_milliseconds/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/sub_minutes/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/sub_months/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/sub_quarters/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/sub_seconds/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/sub_weeks/index.js","webpack://@microsites/inh0025-web/./node_modules/date-fns/sub_years/index.js","webpack://@microsites/inh0025-web/./node_modules/exenv/index.js","webpack://@microsites/inh0025-web/./node_modules/react-fast-compare/index.js","webpack://@microsites/inh0025-web/./node_modules/react-helmet/lib/Helmet.js","webpack://@microsites/inh0025-web/./node_modules/react-helmet/lib/HelmetConstants.js","webpack://@microsites/inh0025-web/./node_modules/react-helmet/lib/HelmetUtils.js","webpack://@microsites/inh0025-web/./node_modules/react-side-effect/lib/index.js","webpack://@microsites/inh0025-web/./node_modules/shallowequal/index.js","webpack://@microsites/inh0025-web/../shared_ui/components/embeddedAudio.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/react-instagram-embed/es/index.js","webpack://@microsites/inh0025-web/../shared_ui/components/MainImage.js","webpack://@microsites/inh0025-web/../shared_ui/components/Latex.js","webpack://@microsites/inh0025-web/../shared_ui/components/link.js","webpack://@microsites/inh0025-web/../shared_ui/components/serializers.js","webpack://@microsites/inh0025-web/../shared_ui/components/portableText.js","webpack://@microsites/inh0025-web/../shared_ui/components/soundcloudEmbed.js","webpack://@microsites/inh0025-web/../shared_ui/components/twitterembed.js","webpack://@microsites/inh0025-web/../shared_ui/lib/helpers.js","webpack://@microsites/inh0025-web/../shared_ui/lib/image-url.js","webpack://@microsites/inh0025-web/./src/components/graphql-error-list.js","webpack://@microsites/inh0025-web/./src/components/seo.js","webpack://@microsites/inh0025-web/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@microsites/inh0025-web/./node_modules/url-loader/shared_ui/images/uea-logo.png","webpack://@microsites/inh0025-web/../shared_ui/components/social.js","webpack://@microsites/inh0025-web/../shared_ui/components/navItems.js","webpack://@microsites/inh0025-web/../shared_ui/components/mobileNav.js","webpack://@microsites/inh0025-web/./node_modules/babel-loader/shared_ui/node_modules/@reach/skip-nav/dist/reach-skip-nav.esm.js","webpack://@microsites/inh0025-web/../shared_ui/components/masthead.js","webpack://@microsites/inh0025-web/../shared_ui/components/banner.js","webpack://@microsites/inh0025-web/../shared_ui/components/header.js","webpack://@microsites/inh0025-web/../shared_ui/components/menu-list.js","webpack://@microsites/inh0025-web/../shared_ui/components/footerblock.js","webpack://@microsites/inh0025-web/../shared_ui/layouts/layout.js","webpack://@microsites/inh0025-web/../shared_ui/components/navbar.js","webpack://@microsites/inh0025-web/../shared_ui/components/video.js","webpack://@microsites/inh0025-web/../shared_ui/components/sidebar.js","webpack://@microsites/inh0025-web/./src/containers/layout.js","webpack://@microsites/inh0025-web/./src/lib/helpers.js","webpack://@microsites/inh0025-web/./node_modules/regenerator-runtime/runtime.js"],"names":["module","exports","arr","len","length","i","arr2","Array","__esModule","arrayLikeToArray","isArray","iter","Symbol","iterator","Object","from","TypeError","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","o","minLen","n","prototype","toString","call","slice","constructor","name","test","objectAssign","buildMarksTree","nestLists","generateKeys","mergeSerializers","optionProps","defaults","imageOptions","isListItem","block","_type","listItem","h","properties","defaultSerializers","serializeSpan","props","rawBlocks","blocks","keyedBlocks","listNestMode","serializers","options","reduce","opts","key","value","serializeNode","node","index","siblings","isInline","type","list","level","_key","children","map","serializeListItem","findListItemIndex","marks","isSpan","blockProps","concat","serializeBlock","renderContainerOnSingleChild","Boolean","nodes","containerProps","className","container","empty","defaultMarks","sortMarksByOccurences","span","spans","markOccurences","occurences","mark","siblingIndex","sibling","indexOf","sortByOccurence","sortMarks","bind","sort","markA","markB","aOccurences","bOccurences","aDefaultPos","bDefaultPos","markDefs","sortedMarks","rootNode","nodeStack","forEach","marksNeeded","pos","markKey","splice","currentNode","findLastParentNode","find","def","push","text","lines","split","line","checksum","str","hash","strlen","charCodeAt","item","JSON","stringify","replace","generateHelpUrl","urlBuilder","enc","encodeURIComponent","materializeError","projectId","dataset","asset","Error","url","query","keys","params","join","getQueryString","_ref","image","getSerializers","_blocksToNodes","getImageUrl","blocksToNodes","renderNode","_typeof","obj","userSerializers","acc","isListBlock","blockMatchesList","listFromBlock","lastChild","findListMatching","matching","filterOnType","currentList","mode","arguments","undefined","tree","newList","lastListItem","newLastChild","match","console","warn","_match","serializerOpts","serializeOptions","useDashedStyles","RawMarkSerializer","tag","types","style","img","src","strong","em","code","underline","textDecoration","link","href","blockType","serializer","_props$node","markType","markFallback","hardBreak","child","serializedNode","React","PropTypes","internals","_require","renderProps","createElement","SanityBlockContent","customSerializers","assign","propTypes","string","bool","object","shape","func","oneOfType","arrayOf","isRequired","defaultProps","_getSerializers","nestMarks","slug","_extends","target","source","hasOwnProperty","apply","this","_unsupportedIterableToArray","_arrayLikeToArray","_createForOfIteratorHelperLoose","done","next","example","parseAssetId","ref","_ref$split","id","dimensionString","format","_dimensionString$spli","width","height","isFinite","isRef","isAsset","_id","isAssetStub","parseSource","isUrl","urlToId","crop","hotspot","applyDefaults","result","left","top","bottom","right","x","y","SPEC_NAME_TO_URL_NAME_MAPPINGS","urlForImage","spec","cropLeft","Math","round","cropTop","hotSpotVerticalRadius","hotSpotHorizontalRadius","hotSpotCenterX","hotSpotCenterY","rect","focalPoint","ignoreImageParams","fit","specToImageUrl","cdnUrl","baseUrl","filename","_spec$rect","bg","flip","flipHorizontal","flipVertical","filter","mapping","specName","param","cropRect","imgWidth","imgHeight","desiredAspectRatio","_width","_height","_left","_top","max","floor","validFits","validCrops","validAutoModes","isSanityClient","client","clientConfig","rewriteSpecName","_step","_iterator","entry","_client$clientConfig","apiUrl","apiHost","ImageUrlBuilder","parent","_proto","withOptions","newOptions","_dataset","_projectId","_bg","dpr","_dpr","maxWidth","_maxWidth","minWidth","_minWidth","maxHeight","_maxHeight","minHeight","_minHeight","size","blur","_blur","sharpen","_sharpen","_format","invert","_invert","orientation","_orientation","quality","_quality","forceDownload","download","saturation","_saturation","auto","factory","dirtyDate","date","Date","getTime","baseTimezoneOffset","getTimezoneOffset","setSeconds","parse","dirtyAmount","amount","Number","setDate","getDate","addMilliseconds","getISOYear","setISOYear","timestamp","getDaysInMonth","desiredMonth","getMonth","dateWithDesiredMonth","setFullYear","getFullYear","setHours","daysInMonth","setMonth","min","addMonths","addDays","dirtyInitialRangeStartDate","dirtyInitialRangeEndDate","dirtyComparedRangeStartDate","dirtyComparedRangeEndDate","initialStartTime","initialEndTime","comparedStartTime","comparedEndTime","dirtyDateToCompare","dirtyDatesArray","minDistance","timeToCompare","currentDate","distance","abs","dirtyDateLeft","dirtyDateRight","timeLeft","timeRight","startOfDay","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","startOfISOWeek","startOfISOWeekLeft","startOfISOWeekRight","dateLeft","dateRight","getQuarter","startOfWeek","dirtyOptions","startOfWeekLeft","startOfWeekRight","differenceInCalendarDays","compareAsc","sign","difference","differenceInMilliseconds","diff","ceil","differenceInCalendarISOYears","subISOYears","differenceInCalendarMonths","differenceInMonths","differenceInDays","differenceInCalendarYears","compareDesc","differenceInSeconds","enLocale","MINUTES_IN_MONTH","comparison","locale","localize","distanceInWords","localizeOptions","addSuffix","months","seconds","offset","minutes","includeSeconds","monthsSinceStartOfYear","years","MINUTES_IN_YEAR","unit","mathPartial","partialMethod","String","now","dirtyStartDate","dirtyEndDate","dirtyStep","startDate","step","endTime","dates","setMinutes","endOfWeek","weekStartsOn","year","fourthOfJanuaryOfNextYear","setMilliseconds","getMilliseconds","month","currentMonth","endOfDay","day","getDay","getDayOfYear","getISOWeek","isValid","formatters","addLeadingZeros","substr","getHours","hours","getMinutes","getSeconds","formatTimezone","removeFormattingTokens","input","delimeter","absOffset","number","targetLength","output","dirtyFormatStr","formatStr","localeFormatters","formattingTokensRegExp","formatter","array","Function","buildFormatFn","formatFn","startOfYear","monthIndex","lastDayOfMonth","isLeapYear","startOfISOYear","addWeeks","thisYear","valueOf","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","differenceInMs","addHours","addISOYears","addMinutes","addQuarters","addSeconds","addYears","areRangesOverlapping","closestIndexTo","closestTo","differenceInCalendarISOWeeks","differenceInCalendarQuarters","differenceInCalendarWeeks","differenceInHours","differenceInISOYears","differenceInMinutes","differenceInQuarters","differenceInWeeks","differenceInYears","distanceInWordsStrict","distanceInWordsToNow","eachDay","endOfHour","endOfISOWeek","endOfISOYear","endOfMinute","endOfMonth","endOfQuarter","endOfSecond","endOfToday","endOfTomorrow","endOfYear","endOfYesterday","getDaysInYear","getISODay","getISOWeeksInYear","getOverlappingDaysInRanges","getYear","isAfter","isBefore","isDate","isEqual","isFirstDayOfMonth","isFriday","isFuture","isLastDayOfMonth","isMonday","isPast","isSameDay","isSameHour","isSameISOWeek","isSameISOYear","isSameMinute","isSameMonth","isSameQuarter","isSameSecond","isSameWeek","isSameYear","isSaturday","isSunday","isThisHour","isThisISOWeek","isThisISOYear","isThisMinute","isThisMonth","isThisQuarter","isThisSecond","isThisWeek","isThisYear","isThursday","isToday","isTomorrow","isTuesday","isWednesday","isWeekend","isWithinRange","isYesterday","lastDayOfISOWeek","lastDayOfISOYear","lastDayOfQuarter","lastDayOfWeek","lastDayOfYear","setDay","setDayOfYear","setISODay","setISOWeek","setQuarter","setYear","startOfHour","startOfMinute","startOfMonth","startOfQuarter","startOfSecond","startOfToday","startOfTomorrow","startOfYesterday","subDays","subHours","subMilliseconds","subMinutes","subMonths","subQuarters","subSeconds","subWeeks","subYears","dateToCompare","argument","dirtyLeftDate","dirtyRightDate","dateLeftStartOfDay","dateRightStartOfDay","dateLeftStartOfHour","dateRightStartOfHour","dateLeftStartOfYear","dateRightStartOfYear","dateLeftStartOfMinute","dateRightStartOfMinute","dateLeftStartOfQuarter","dateRightStartOfQuarter","dateLeftStartOfSecond","dateRightStartOfSecond","dateLeftStartOfWeek","dateRightStartOfWeek","tomorrow","isNaN","time","startTime","yesterday","fourthOfJanuary","commonFormatterKeys","formatterKeys","formattingTokens","reverse","RegExp","distanceInWordsLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","token","count","buildFormattingTokensRegExp","months3char","monthsFull","weekdays2char","weekdays3char","weekdaysFull","meridiemUppercase","meridiemLowercase","meridiemFull","formatterToken","rem100","ordinal","buildDistanceInWordsLocale","buildFormatLocale","dirtyDates","latestTimestamp","earliestTimestamp","getTimezoneOffsetInMilliseconds","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","parseTokenDateTimeDelimeter","parseTokenPlainTime","parseTokenYY","parseTokensYYY","parseTokenYYYY","parseTokensYYYYY","parseTokenMM","parseTokenDDD","parseTokenMMDD","parseTokenWww","parseTokenWwwD","parseTokenHH","parseTokenHHMM","parseTokenHHMMSS","parseTokenTimezone","parseTokenTimezoneZ","parseTokenTimezoneHH","parseTokenTimezoneHHMM","dayOfISOYear","isoYear","week","setUTCFullYear","getUTCDay","setUTCDate","getUTCDate","additionalDigits","dateStrings","dateString","timeString","exec","timezone","splitDateString","parseYearResult","parseTokenYYY","parseTokenYYYYY","yearString","parseInt","restDateString","centuryString","parseYear","dayOfYear","parseDate","parseFloat","parseTime","timezoneString","absoluteOffset","parseTimezone","fullTime","fullTimeDate","fullTimeDateNextDay","offsetDiff","dirtyDayOfMonth","dayOfMonth","dirtyDay","currentDay","dirtyDayOfYear","dirtyHours","dirtyISOWeek","isoWeek","dirtyISOYear","dirtyMilliseconds","milliseconds","dirtyMinutes","dirtyMonth","dirtyQuarter","dirtySeconds","dirtyYear","cleanDate","singleMatcher","multiMatcher","decodeComponents","components","decodeURIComponent","err","decode","tokens","encodedURI","replaceMap","entries","customDecodeURIComponent","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","clone","deepmerge","val","defaultArrayMerge","element","getKeys","getOwnPropertySymbols","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","property","_","mergeObject","destination","propertyIsUnsafe","customMerge","getMergeFunction","arrayMerge","sourceIsArray","all","prev","deepmerge_1","__importDefault","mod","defineProperty","debug_1","default","__assign","t","s","p","__rest","e","getFluidGatsbyImage","getFixedGatsbyImage","DEFAULT_FLUID_MAX_WIDTH","DEFAULT_FIXED_WIDTH","LOWEST_FLUID_BREAKPOINT_WIDTH","ImageFormat","url_parse_1","idPattern","sizeMultipliersFixed","sizeMultipliersFluid","getBasicImageProps","loc","_a","assetId","dimensions","extension","_b","num","aspectRatio","metadata","stub","base","buildImageUrl","convertToFormat","toFormat","parsed","pathname","isConvertedToTarget","fm","isOriginal","set","newQuery","isWebP","isConverted","includes","args","lqip","isOriginalSize","w","forceConvert","hasOriginalRatio","outputHeight","imgUrl","srcSets","scale","currentWidth","resolution","currentHeight","webpUrl","webp","srcWebp","base64","srcSet","srcSetWebp","specifiedMaxHeight","baseSrc","sizes","getGatsbyImageProps_1","enumerable","get","resolveReferences_1","safeId","unprefixId","prefixId","isDraftId","startsWith","makeSafe","resolveReferences","documentIds_1","unprefixDraftId_1","defaultResolveOptions","maxDepth","overlayDrafts","context","currentDepth","createNodeId","getNode","resolveOptions","targetId","unprefixDraftId","_weak","initial","targetKey","toLowerCase","remapRawFields","isRawDataField","formatArgs","useColors","namespace","humanize","c","color","lastC","save","namespaces","storage","setItem","removeItem","error","load","r","getItem","process","DEBUG","window","__nwjs","navigator","userAgent","document","documentElement","WebkitAppearance","firebug","exception","table","$1","localStorage","localstorage","colors","log","debug","j","v","message","_toConsumableArray","env","createDebug","prevTime","_len","enabled","self","curr","ms","coerce","unshift","logFn","selectColor","destroy","extend","init","instances","delimiter","newDebug","toNamespace","regexp","substring","stack","disable","names","skips","enable","instance","stdOnEnd","script","cb","onload","onerror","ieOnEnd","onreadystatechange","readyState","head","getElementsByTagName","charset","async","attrs","attr","setAttribute","setAttributes","appendChild","areInputsEqual","newInputs","lastInputs","resultFn","lastThis","lastResult","lastArgs","calledOnce","newArgs","_i","m","d","plural","msAbs","isPlural","long","fmtLong","fmtShort","has","prefix","pairs","part","parser","hasElementType","Element","hasMap","Map","hasSet","Set","hasArrayBuffer","ArrayBuffer","isView","equal","a","b","it","flags","strictUriEncode","decodeComponent","encode","strict","keysSorter","extract","queryStart","arrayFormat","accumulator","parserForArrayFormat","ret","create","trim","parts","shift","encoderForArrayFormat","val2","_react","cache","_getRequireWildcardCache","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","_interopRequireWildcard","_reactFastCompare","_props","WeakMap","_classCallCheck","Constructor","_defineProperties","descriptor","configurable","writable","_setPrototypeOf","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","getPrototypeOf","_defineProperty","Player","_Component","subClass","superClass","_inherits","protoProps","staticProps","_super","_this","_args","player","progress","isReady","playedSeconds","getCurrentTime","loadedSeconds","getSecondsLoaded","duration","getDuration","played","loaded","prevPlayed","prevLoaded","onProgress","progressTimeout","setTimeout","progressFrequency","progressInterval","mounted","isLoading","_this$props","onReady","playing","volume","muted","setVolume","loadOnReady","play","handleDurationCheck","isPlaying","_this$props2","onStart","onPlay","playbackRate","startOnPlay","setPlaybackRate","seekOnPlay","seekTo","onPause","_this$props3","activePlayer","loop","onEnded","loopOnEnded","_this$props4","onError","clearTimeout","durationCheckTimeout","onDurationCalled","onDuration","stop","disablePIP","prevProps","_this2","_this$props5","pip","forceLoad","pause","enablePIP","mute","unmute","setLoop","_this3","onMount","handlePlayerMount","handleReady","handlePlay","handlePause","handleEnded","onLoaded","handleLoaded","handleError","Component","ownKeys","enumerableOnly","symbols","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","ICON_SIZE","Preview","onClick","fetchImage","light","setState","fetch","then","response","json","data","thumbnail_url","playIcon","state","flexCenter","display","alignItems","justifyContent","styles","preview","backgroundImage","backgroundSize","backgroundPosition","cursor","shadow","background","borderRadius","borderStyle","borderWidth","borderColor","marginLeft","defaultPlayIcon","tabIndex","onKeyPress","handleKeyPress","createReactPlayer","_deepmerge","_interopRequireDefault","_memoizeOne","_utils","_Player3","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","lazy","Promise","resolve","IS_BROWSER","SUPPORTED_PROPS","UniversalSuspense","Suspense","customPlayers","players","fallback","_class","_temp","ReactPlayer","showPreview","wrapper","_wrapper","_player","getInternalPlayer","fraction","_arr","canPlay","config","omit","getActivePlayer","getConfig","references","lazyPlayer","nextProps","nextState","handleClickPreview","Wrapper","attributes","getAttributes","renderPreview","renderActivePlayer","_i2","_arr2","_i3","_arr3","_Player2","canEnablePIP","_players","_ReactPlayer","_default","FLV_EXTENSIONS","DASH_EXTENSIONS","HLS_EXTENSIONS","VIDEO_EXTENSIONS","AUDIO_EXTENSIONS","MATCH_URL_VIDYARD","MATCH_URL_MIXCLOUD","MATCH_URL_DAILYMOTION","MATCH_URL_TWITCH_CHANNEL","MATCH_URL_TWITCH_VIDEO","MATCH_URL_WISTIA","MATCH_URL_STREAMABLE","MATCH_URL_FACEBOOK","MATCH_URL_VIMEO","MATCH_URL_SOUNDCLOUD","MATCH_URL_YOUTUBE","_createForOfIteratorHelper","allowArrayLike","F","_e","f","normalCompletion","didErr","_e2","youtube","every","soundcloud","vimeo","facebook","streamable","wistia","twitch","dailymotion","mixcloud","vidyard","file","canPlayFile","isMediaStream","_patterns","_slicedToArray","_arrayWithHoles","_n","_d","_s","_iterableToArrayLimit","_nonIterableRest","DailyMotion","callPlayer","controls","start","parseStartTime","autoplay","getSDK","DM","video","origin","location","events","apiready","seeked","onSeek","currentTime","video_end","durationchange","onDurationChange","waiting","onBuffer","event","bufferedTime","SDK_URL","SDK_GLOBAL_READY","PLAYER_ID_PREFIX","Facebook","playerId","randomString","FB","XFBML","appId","xfbml","version","Event","subscribe","msg","playerID","onBufferEnd","getElementById","querySelector","visibility","IOS","MSStream","MATCH_DROPBOX_URL","MATCH_CLOUDFLARE_STREAM","FilePlayer","_this$props6","_this$props7","_this$props8","onEnablePIP","_this$props9","onDisablePIP","supportsWebKitPresentationMode","webkitPresentationMode","track","prevPlayer","addListeners","shouldUseAudio","removeListeners","hls","playsinline","addEventListener","onPresentationModeChange","removeEventListener","forceVideo","poster","forceAudio","forceHLS","forceDASH","forceFLV","_this$props$config","hlsVersion","hlsOptions","dashVersion","flvVersion","dash","reset","shouldUseHLS","Hls","on","Events","ERROR","loadSource","attachMedia","shouldUseDASH","dashjs","MediaPlayer","initialize","getDebug","setLogToBrowserConsole","updateSettings","logLevel","Debug","LOG_LEVEL_NONE","shouldUseFLV","flvjs","flv","createPlayer","attachMediaElement","srcObject","URL","createObjectURL","promise","removeAttribute","requestPictureInPicture","pictureInPictureElement","webkitSetPresentationMode","exitPictureInPicture","rate","_this$player","seekable","Infinity","end","buffered","useHLS","useDASH","useFLV","_this$props10","getSource","preload","autoPlay","renderSourceElement","tracks","renderTrack","Mixcloud","iframe","PlayerWidget","ready","ended","queryString","feed","frameBorder","SoundCloud","SC","_SC$Widget$Events","Widget","PLAY","PLAY_PROGRESS","PAUSE","FINISH","currentPosition","fractionLoaded","loadedProgress","callback","allow","Streamable","playerjs","_ref2","percent","secondsLoaded","scrolling","allowFullScreen","Twitch","isChannel","setChannel","setVideo","channel","_Twitch$Player","READY","PLAYING","ENDED","ONLINE","OFFLINE","Vidyard","api","addReadyListener","renderPlayer","uuid","getPlayerMetadata","meta","length_in_seconds","VidyardV4","destroyPlayer","Vimeo","playerOptions","refreshDuration","overflow","Wistia","_onReady","_wq","silentAutoPlay","controlsVisibleOnLoad","fullscreenButton","playbar","playbackRateControl","qualityControl","volumeControl","settingsControl","smallPlayButton","unbind","videoID","SDK_GLOBAL","MATCH_PLAYLIST","MATCH_USER_UPLOADS","MATCH_NOCOOKIE","YouTube","listType","playlist","getID","playerVars","onUnstarted","_window$SDK_GLOBAL$Pl","PlayerState","UNSTARTED","PAUSED","BUFFERING","CUED","isPlaylist","_onError","embedOptions","loadPlaylist","parsePlaylist","cueVideoById","videoId","startSeconds","endSeconds","parseEndTime","YT","onStateChange","host","body","contains","pictureInPictureEnabled","_propTypes","render","noop","visual","buying","liking","sharing","show_comments","show_playcount","showinfo","rel","iv_load_policy","modestbranding","autopause","byline","portrait","title","hide_cover","parseTimeParam","MATCH_START_QUERY","MATCH_END_QUERY","random","sdkGlobal","sdkReady","isLoaded","fetchScript","_loadScript","existingGlobal","getGlobal","reject","requests","sdk","request","previousOnReady","arrays","omitKeys","_keys","method","displayName","_len2","_key2","MediaStream","notMobile","webkitSupportsPresentationMode","MATCH_START_STAMP","MATCH_NUMERIC","pattern","stamp","_array2","period","parseTimeString","port","protocol","toUpperCase","required","qs","slashes","protocolre","trimLeft","rules","address","NaN","ignore","lolcation","g","finaldestination","Url","unescape","extractProtocol","rest","relative","extracted","instruction","instructions","charAt","path","last","up","hostname","username","password","auth","fn","pop","char","ins","canUseDOM","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","attachEvent","canUseViewport","screen","keyList","hasProp","arrA","arrB","dateA","dateB","regexpA","regexpB","_createClass","_react2","_propTypes2","_reactSideEffect2","_reactFastCompare2","_HelmetUtils","_HelmetConstants","_objectWithoutProperties","HelmetSideEffects","reducePropsToState","handleClientStateChange","mapStateOnServer","HelmetExport","_React$Component","HelmetWrapper","shouldComponentUpdate","mapNestedChildrenToProps","nestedChildren","TAG_NAMES","SCRIPT","NOSCRIPT","innerHTML","STYLE","cssText","flattenArrayTypeChildren","_extends2","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_extends3","_extends4","newProps","TITLE","titleAttributes","BODY","bodyAttributes","HTML","htmlAttributes","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_extends5","warnOnInvalidChildren","mapChildrenToProps","Children","_child$props","childProps","convertReactPropstoHtmlAttributes","LINK","META","defaultTitle","defer","encodeSpecialCharacters","noscript","onChangeClientState","titleTemplate","peek","rewind","mappedState","baseTag","linkTags","metaTags","noscriptTags","scriptTags","styleTags","renderStatic","ATTRIBUTE_NAMES","BASE","HEAD","REACT_TAG_MAP","VALID_TAG_NAMES","TAG_PROPERTIES","CHARSET","CSS_TEXT","HREF","HTTPEQUIV","INNER_HTML","ITEM_PROP","NAME","PROPERTY","REL","SRC","accesskey","class","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","DEFAULT_TITLE","DEFER","ENCODE_SPECIAL_CHARACTERS","ON_CHANGE_CLIENT_STATE","TITLE_TEMPLATE","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","requestAnimationFrame","_objectAssign2","clock","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","current","getBaseTagFromPropsList","primaryAttributes","innermostBaseTag","lowerCaseAttributeKey","getTagsFromPropsList","tagName","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","rafPolyfill","cafPolyfill","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","_helmetCallback","commitTagChanges","newState","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","elementTag","helmetAttributeString","getAttribute","helmetAttributes","attributesToRemove","attributeKeys","attribute","indexToSave","tags","headElement","tagNodes","querySelectorAll","indexToDelete","newElement","styleSheet","createTextNode","some","existingTag","isEqualNode","parentNode","removeChild","generateElementAttributesAsString","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","content","dangerouslySetInnerHTML","__html","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","initAttributes","_ref$title","_interopDefault","ex","React__default","shallowEqual","handleStateChangeOnClient","WrappedComponent","mountedInstances","emitChange","SideEffect","recordedState","componentWillMount","componentDidUpdate","componentWillUnmount","getDisplayName","objA","objB","compare","compareContext","keysA","keysB","bHasOwnProperty","idx","valueA","valueB","audioFile","captionsFile","kind","srclang","_extendStatics","mainImage","imageUrlFor","buildImageObj","fluidProps","sanity","alt","__extends","__","InstagramEmbed","cancel","handleFetchSuccess","onSuccess","html","instgrm","Embeds","onAfterRender","handleFetchFailure","timer","onFailure","createRequestPromise","catch","componentDidMount","fetchEmbed","getQueryParams","injectScript","checkAPI","hideCaption","containerTagName","Tag","omitComponentProps","queryParams","onLoading","protocolToUse","hidecaption","maxwidth","omitscript","latex","useState","setHtml","useMemo","KaTeX","displayMode","throwOnError","newTab","AuthorReference","author","authorReference","videoEmbed","instagram","math","Latex","pdfDocument","pdfLink","pdfFile","embeddedAudio","soundcloudEmbed","soundcloudEmbedCode","serializersObject","TwitterTimeline","twitterUrl","timelineTitle","data-height","cn","getBlogUrl","imageObj","pickTextColorBasedOnBgColor","bgColor","lightColor","darkColor","col","pow","percentToHex","decimalValue","internalLink","imageUrlBuilder","errors","SEO","description","lang","keywords","openGraphImage","bodyAttr","detailsQuery","metaDescription","site","siteTitle","siteAuthor","enableGtag","analytics","gtagId","enableGa","gaId","metaImage","pageTitle","asyncGeneratorStep","gen","_next","_throw","arg","info","_asyncToGenerator","FacebookLink","profileName","aria-hidden","focusable","data-prefix","data-icon","role","xmlns","viewBox","fill","TwitterLink","LinkedInLink","YouTubeLink","socials","twitter","linkedin","navbarItems","toggleMobileNav","openNav","handleLastTab","lastLink","shiftKey","keyCode","handleFocus","navItem","to","route","landingPageRoute","requiresAuthentication","externalLink","onKeyDown","onFocus","navbarList","signOut","email","_objectWithoutPropertiesLoose","excluded","sourceKeys","defaultId","SkipNavLink","forwardRef","forwardedRef","_ref$as","as","Comp","_ref$children","contentId","SkipNavContent","_ref2$as","idProp","mobileNavOpen","prevState","handleMenuTab","handleCloseButtonTab","isUserAuthenticated","awsConfig","Auth","navigate","Amplify","mastheadLogo","logoObject","marginBottom","Logo","mobileNavList","mastheadConfig","logo","mastheadLogoLink","renderMenu","aria-haspopup","aria-expanded","headerImage","siteLogo","backgroundImgUrl","siteLogoUrl","siteLogoAlt","backgroundRepeat","Header","links","footerData","toggleFooter","menuLists","menuTitle","footerLink","Layout","onHideNav","onShowNav","showNav","navMenuItems","sidebarData","recentBlogs","displaySidebar","Video","youtubeVideo","youtubeVideoTitle","webkitallowfullscreen","mozallowfullscreen","sbVideo","twitterFeed","twitterFeedTitle","setShowNav","handleShowNav","handleHideNav","textWhite","sidebar","footer","masthead","mapEdgesToNodes","edges","edge","filterOutDocsWithoutSlugs","filterOutDocsPublishedInTheFuture","publishedAt","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","awrap","skipTempReset","rootRecord","rval","handle","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode"],"mappings":";uHAUAA,EAAOC,QAVP,SAA2BC,EAAKC,IACnB,MAAPA,GAAeA,EAAMD,EAAIE,UAAQD,EAAMD,EAAIE,QAE/C,IAAK,IAAIC,EAAI,EAAGC,EAAO,IAAIC,MAAMJ,GAAME,EAAIF,EAAKE,IAC9CC,EAAKD,GAAKH,EAAIG,GAGhB,OAAOC,GAITN,EAAOC,QAAP,QAA4BD,EAAOC,QAASD,EAAOC,QAAQO,YAAa,G,sBCXxE,IAAIC,EAAmB,EAAQ,OAM/BT,EAAOC,QAJP,SAA4BC,GAC1B,GAAIK,MAAMG,QAAQR,GAAM,OAAOO,EAAiBP,IAIlDF,EAAOC,QAAP,QAA4BD,EAAOC,QAASD,EAAOC,QAAQO,YAAa,G,kBCHxER,EAAOC,QAJP,SAA0BU,GACxB,GAAsB,oBAAXC,QAA0BA,OAAOC,YAAYC,OAAOH,GAAO,OAAOJ,MAAMQ,KAAKJ,IAI1FX,EAAOC,QAAP,QAA4BD,EAAOC,QAASD,EAAOC,QAAQO,YAAa,G,kBCDxER,EAAOC,QAJP,WACE,MAAM,IAAIe,UAAU,yIAItBhB,EAAOC,QAAP,QAA4BD,EAAOC,QAASD,EAAOC,QAAQO,YAAa,G,oBCLxE,IAAIS,EAAoB,EAAQ,OAE5BC,EAAkB,EAAQ,OAE1BC,EAA6B,EAAQ,OAErCC,EAAoB,EAAQ,OAMhCpB,EAAOC,QAJP,SAA4BC,GAC1B,OAAOe,EAAkBf,IAAQgB,EAAgBhB,IAAQiB,EAA2BjB,IAAQkB,KAI9FpB,EAAOC,QAAP,QAA4BD,EAAOC,QAASD,EAAOC,QAAQO,YAAa,G,sBCbxE,IAAIC,EAAmB,EAAQ,OAW/BT,EAAOC,QATP,SAAqCoB,EAAGC,GACtC,GAAKD,EAAL,CACA,GAAiB,iBAANA,EAAgB,OAAOZ,EAAiBY,EAAGC,GACtD,IAAIC,EAAIT,OAAOU,UAAUC,SAASC,KAAKL,GAAGM,MAAM,GAAI,GAEpD,MADU,WAANJ,GAAkBF,EAAEO,cAAaL,EAAIF,EAAEO,YAAYC,MAC7C,QAANN,GAAqB,QAANA,EAAoBhB,MAAMQ,KAAKM,GACxC,cAANE,GAAqB,2CAA2CO,KAAKP,GAAWd,EAAiBY,EAAGC,QAAxG,IAIFtB,EAAOC,QAAP,QAA4BD,EAAOC,QAASD,EAAOC,QAAQO,YAAa,G,sBCZxER,EAAOC,QAAU,EAAjB,Q,sBCAAD,EAAOC,QAAU,EAAjB,Q,mCCEA,IAAI8B,EAAe,EAAQ,OAEvBC,EAAiB,EAAQ,MAEzBC,EAAY,EAAQ,OAEpBC,EAAe,EAAQ,OAEvBC,EAAmB,EAAQ,OAG3BC,EAAc,CAAC,YAAa,UAAW,gBAMvCC,EAAW,CACbC,aAAc,IAsHhB,SAASC,EAAWC,GAClB,MAAuB,UAAhBA,EAAMC,OAAqBD,EAAME,SAO1C1C,EAAOC,QA3HP,SAAuB0C,EAAGC,EAAYC,EAAoBC,GACxD,IAAIC,EAAQhB,EAAa,GAAIM,EAAUO,GACnCI,EAAYzC,MAAMG,QAAQqC,EAAME,QAAUF,EAAME,OAAS,CAACF,EAAME,QAChEC,EAAchB,EAAac,GAC3BC,EAAShB,EAAUiB,EAAaH,EAAMI,cACtCC,EAAcjB,EAAiBU,EAAoBE,EAAMK,aAAe,IACxEC,EAAUjB,EAAYkB,QAAO,SAAUC,EAAMC,GAC/C,IAAIC,EAAQV,EAAMS,GAMlB,YApBoB,IAgBNC,IACZF,EAAKC,GAAOC,GAGPF,IACN,IAEH,SAASG,EAAcC,EAAMC,EAAOC,EAAUC,GAC5C,MA+FqB,UADTtB,EA9FDmB,GA+FAlB,OAAoBD,EAAME,UA/BjCqB,GADiBC,EA9DEL,GA+DPjB,SACZuB,EAAQD,EAAKC,MACbT,EAAMQ,EAAKE,KACXC,EAAWH,EAAKG,SAASC,IAAIV,GAC1Bf,EAAES,EAAYY,KAAM,CACzBR,IAAKA,EACLS,MAAOA,EACPF,KAAMA,EACNV,QAASA,GACRc,IArEC5B,EAAWoB,GA8CjB,SAA2BnB,EAAOoB,GAChC,IAAIJ,EAAMhB,EAAM0B,KAEZC,EADOnC,EAAeQ,GACN4B,IAAIV,GACxB,OAAOf,EAAES,EAAYV,SAAU,CAC7BiB,KAAMnB,EACNY,YAAaA,EACbQ,MAAOA,EACPJ,IAAKA,EACLH,QAASA,GACRc,GAvDME,CAAkBV,EAY7B,SAA2BA,EAAME,GAG/B,IAFA,IAAID,EAAQ,EAEHvD,EAAI,EAAGA,EAAIwD,EAASzD,OAAQC,IAAK,CACxC,GAAIwD,EAASxD,KAAOsD,EAClB,OAAOC,EAGJrB,EAAWsB,EAASxD,KAIzBuD,IAGF,OAAOA,EA3B0BU,CAAkBX,EAAME,IAiG7D,SAAgBrB,GACd,MAAwB,iBAAVA,GAAsBA,EAAM+B,OAAyB,SAAhB/B,EAAMC,MA/FnD+B,CAAOb,GACFb,EAAca,EAAMP,EAAaQ,EAAO,CAC7CF,cAAeA,IAyBrB,SAAwBlB,EAAOoB,EAAOE,GACpC,IACIK,EADOnC,EAAeQ,GACN4B,KAAI,SAAUT,EAAMtD,EAAGwD,GACzC,OAAOH,EAAcC,EAAMtD,EAAGwD,GAAU,MAEtCY,EAAa,CACfjB,IAAKhB,EAAM0B,MAAQ,SAASQ,OAAOd,GACnCD,KAAMnB,EACNsB,SAAUA,EACVV,YAAaA,EACbC,QAASA,GAEX,OAAOV,EAAES,EAAYZ,MAAOiC,EAAYN,GAjCjCQ,CAAehB,EAAMC,EAAOE,GAiDrC,IAAuBE,EACjBD,EACAE,EACAT,EACAW,EA2BQ3B,EAjBd,IAAIoC,EAA+BC,QAAQ9B,EAAM6B,8BAC7CE,EAAQ7B,EAAOmB,IAAIV,GAEvB,GAAIkB,GAAgCE,EAAM1E,OAAS,EAAG,CACpD,IAAI2E,EAAiBhC,EAAMiC,UAAY,CACrCA,UAAWjC,EAAMiC,WACf,GACJ,OAAOrC,EAAES,EAAY6B,UAAWF,EAAgBD,GAGlD,OAAIA,EAAM,GACDA,EAAM,GAGqB,mBAAtB1B,EAAY8B,MAAuBvC,EAAES,EAAY8B,OAAS9B,EAAY8B,Q,8BCjItF,IAAIC,EAAe,CAAC,SAAU,KAAM,OAAQ,YAAa,kBAgFzD,SAASC,EAAsBC,EAAMhF,EAAGiF,GACtC,IAAKD,EAAKd,OAA+B,IAAtBc,EAAKd,MAAMnE,OAC5B,OAAOiF,EAAKd,OAAS,GAGvB,IAAIgB,EAAiBF,EAAKd,MAAMjB,QAAO,SAAUkC,EAAYC,GAC3DD,EAAWC,GAAQD,EAAWC,GAAQD,EAAWC,GAAQ,EAAI,EAE7D,IAAK,IAAIC,EAAerF,EAAI,EAAGqF,EAAeJ,EAAMlF,OAAQsF,IAAgB,CAC1E,IAAIC,EAAUL,EAAMI,GAEpB,IAAIC,EAAQpB,QAAShE,MAAMG,QAAQiF,EAAQpB,SAA2C,IAAjCoB,EAAQpB,MAAMqB,QAAQH,GAGzE,MAFAD,EAAWC,KAMf,OAAOD,IACN,IACCK,EAAkBC,EAAUC,KAAK,KAAMR,GAE3C,OAAOF,EAAKd,MAAM5C,QAAQqE,KAAKH,GAGjC,SAASC,EAAUN,EAAYS,EAAOC,GACpC,IAAIC,EAAcX,EAAWS,IAAU,EACnCG,EAAcZ,EAAWU,IAAU,EAEvC,GAAIC,IAAgBC,EAClB,OAAOA,EAAcD,EAGvB,IAAIE,EAAclB,EAAaS,QAAQK,GACnCK,EAAcnB,EAAaS,QAAQM,GAEvC,OAAIG,IAAgBC,EACXD,EAAcC,EAInBL,EAAQC,GACF,EACCD,EAAQC,EACV,EAGF,EAmBTlG,EAAOC,QAhJc,SAAwBuC,GAC3C,IAAI2B,EAAW3B,EAAM2B,SACjBoC,EAAW/D,EAAM+D,SAErB,IAAKpC,IAAaA,EAAS/D,OACzB,MAAO,GAGT,IAAIoG,EAAcrC,EAASC,IAAIgB,GAC3BqB,EAAW,CACbhE,MAAO,OACP0B,SAAU,IAERuC,EAAY,CAACD,GA0DjB,OAzDAtC,EAASwC,SAAQ,SAAUtB,EAAMhF,GAC/B,IAAIuG,EAAcJ,EAAYnG,GAE9B,GAAKuG,EAAL,CAMA,IAAIC,EAAM,EAEV,GAAIH,EAAUtG,OAAS,EACrB,KAAUyG,EAAMH,EAAUtG,OAAQyG,IAAO,CACvC,IAAIpB,EAAOiB,EAAUG,GAAKC,QACtBlD,EAAQgD,EAAYhB,QAAQH,GAEhC,IAAe,IAAX7B,EACF,MAGFgD,EAAYG,OAAOnD,EAAO,GAO9B,IAuFgBD,EAvFZqD,EA2FR,SAA4BlC,GAC1B,IAAK,IAAIzE,EAAIyE,EAAM1E,OAAS,EAAGC,GAAK,EAAGA,IAAK,CAC1C,IAAIsD,EAAOmB,EAAMzE,GAEjB,GAAmB,SAAfsD,EAAKlB,OAAoBkB,EAAKQ,SAChC,OAAOR,EAIX,OApGoBsD,CAFlBP,EAAYA,EAAU/E,MAAM,EAAGkF,IAoB/B,GAjBAD,EAAYD,SAAQ,SAAUlB,GAC5B,IAAI9B,EAAO,CACTlB,MAAO,OACPyB,KAAMmB,EAAKnB,KACXC,SAAU,GACVsB,KAAMc,EAASW,MAAK,SAAUC,GAC5B,OAAOA,EAAIjD,OAASuB,MAChBA,EACNqB,QAASrB,GAEXuB,EAAY7C,SAASiD,KAAKzD,GAC1B+C,EAAUU,KAAKzD,GACfqD,EAAcrD,KA2EI,UADJA,EArED0B,GAsEL5C,OAAyC,iBAAdkB,EAAK0D,OAAsB9G,MAAMG,QAAQiD,EAAKY,aAAgC,IAAfZ,EAAKY,MA7DvGyC,EAAY7C,SAAW6C,EAAY7C,SAASO,OAAOW,OAT/B,CAGpB,IAFA,IAAIiC,EAAQjC,EAAKgC,KAAKE,MAAM,MAEnBC,EAAOF,EAAMlH,OAAQoH,KAAS,GACrCF,EAAMP,OAAOS,EAAM,EAAG,MAGxBR,EAAY7C,SAAW6C,EAAY7C,SAASO,OAAO4C,QAjDrD,CACiBZ,EAAUA,EAAUtG,OAAS,GACnC+D,SAASiD,KAAK/B,OAoDpBoB,EAAStC,W,mCCzElB,IAAIpC,EAAe,EAAQ,OAoB3B,SAAS0F,EAASC,GAChB,IAAIC,EAAO,EACPC,EAASF,EAAItH,OAEjB,GAAe,IAAXwH,EACF,OAAOD,EAGT,IAAK,IAAItH,EAAI,EAAGA,EAAIuH,EAAQvH,IAC1BsH,GAAQA,GAAQ,GAAKA,EAAOD,EAAIG,WAAWxH,GAC3CsH,GAAQA,EAGV,OAAOA,EA/BT3H,EAAOC,QAAU,SAAUgD,GACzB,OAAOA,EAAOmB,KAAI,SAAU5B,GAC1B,OAAIA,EAAM0B,KACD1B,EAGFT,EAAa,CAClBmC,MAKgB4D,EALGtF,EAMhBiF,EAASM,KAAKC,UAAUF,IAAOrG,SAAS,IAAIwG,QAAQ,gBAAiB,MALvEzF,GAIP,IAAsBsF,O,mCCdtB,IAAII,EAAkB,EAAQ,OAE1BC,EAAa,EAAQ,OAErBpG,EAAe,EAAQ,OAEvBqG,EAAMC,mBACNC,EAAmB,+JAA+J5D,OAAOwD,EAAgB,sCA+C7MlI,EAAOC,QA/BQ,SAAkB8C,GAC/B,IAAIY,EAAOZ,EAAMY,KACbN,EAAUN,EAAMM,QAChBkF,EAAYlF,EAAQkF,UACpBC,EAAUnF,EAAQmF,QAClBC,EAAQ9E,EAAK8E,MAEjB,IAAKA,EACH,MAAM,IAAIC,MAAM,iDAGlB,GAAID,EAAME,IACR,OAAOF,EAAME,IA1BI,SAAwBtF,GAC3C,IAAIuF,EAAQvF,EAAQf,aAChBuG,EAAO/H,OAAO+H,KAAKD,GAEvB,IAAKC,EAAKzI,OACR,MAAO,GAGT,IAAI0I,EAASD,EAAKzE,KAAI,SAAUZ,GAC9B,MAAO,GAAGkB,OAAO0D,EAAI5E,GAAM,KAAKkB,OAAO0D,EAAIQ,EAAMpF,QAEnD,MAAO,IAAIkB,OAAOoE,EAAOC,KAAK,MAeTC,CAAe3F,GAGpC,IAAKkF,IAAcC,EACjB,MAAM,IAAIE,MAAMJ,GAKlB,IAFUG,EAAMQ,KAGd,MAAM,IAAIP,MAAM,gEAGlB,OAAOP,EAAWpG,EAAa,CAC7BwG,UAAWA,EACXC,QAASA,GACRnF,EAAQf,cAAgB,KAAK4G,MAAMvF,GAAMlC,a,mCCnD9C,IAAI0H,EAAiB,EAAQ,OAEzBC,EAAiB,EAAQ,OAEzBC,EAAc,EAAQ,OAEtBlH,EAAmB,EAAQ,OAE/BnC,EAAOC,QAAU,CACfqJ,cAAe,SAAuBC,EAAYxG,EAAOF,EAAoBC,GAC3E,GAAID,EACF,OAAOuG,EAAeG,EAAYxG,EAAOF,EAAoBC,GAI/D,IAAIM,EAAc+F,EAAeI,GACjC,OAAOH,EAAeG,EAAYxG,EAAOK,EAAYP,mBAAoBO,EAAYN,gBAEvFqG,eAAgBA,EAChBE,YAAaA,EACblH,iBAAkBA,I,mCCpBpB,SAASqH,EAAQC,GAWf,OATED,EADoB,mBAAX5I,QAAoD,iBAApBA,OAAOC,SACtC,SAAiB4I,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,mBAAX7I,QAAyB6I,EAAI7H,cAAgBhB,QAAU6I,IAAQ7I,OAAOY,UAAY,gBAAkBiI,IAI9GA,GAGjB,IAAI1H,EAAe,EAAQ,OAO3B/B,EAAOC,QAAU,SAA0B4C,EAAoB6G,GAC7D,OAAO5I,OAAO+H,KAAKhG,GAAoBS,QAAO,SAAUqG,EAAKnG,GAC3D,IAAIO,EAAOyF,EAAQ3G,EAAmBW,IAUtC,OAPEmG,EAAInG,GADO,aAATO,OARgB,IASG2F,EAAgBlG,GAAQkG,EAAgBlG,GAAOX,EAAmBW,GACrE,WAATO,EACEhC,EAAa,GAAIc,EAAmBW,GAAMkG,EAAgBlG,SAE1B,IAAzBkG,EAAgBlG,GAAuBX,EAAmBW,GAAOkG,EAAgBlG,GAG9FmG,IACN,M,mCClCL,IAAI5H,EAAe,EAAQ,OAmG3B,SAAS6H,EAAYpH,GACnB,OAAOqC,QAAQrC,EAAME,UAGvB,SAASmH,EAAiBrH,EAAOwB,GAC/B,OAAOxB,EAAMyB,QAAUD,EAAKC,OAASzB,EAAME,WAAasB,EAAKtB,SAG/D,SAASoH,EAActH,GACrB,MAAO,CACLC,MAAO,OACPyB,KAAM,GAAGQ,OAAOlC,EAAM0B,KAAM,WAC5BD,MAAOzB,EAAMyB,MACbvB,SAAUF,EAAME,SAChByB,SAAU,CAAC3B,IAIf,SAASuH,EAAUvH,GACjB,OAAOA,EAAM2B,UAAY3B,EAAM2B,SAAS3B,EAAM2B,SAAS/D,OAAS,GAGlE,SAAS4J,EAAiBvD,EAAUwD,GAClC,IAAIC,EAA4C,iBAAtBD,EAASvH,SAEnC,GAAuB,SAAnB+D,EAAShE,OAAoBgE,EAASxC,QAAUgG,EAAShG,OAASiG,GAAgBzD,EAAS/D,WAAauH,EAASvH,SACnH,OAAO+D,EAGT,IAAI9C,EAAOoG,EAAUtD,GAErB,QAAK9C,GAIEqG,EAAiBrG,EAAMsG,GAGhCjK,EAAOC,QArIP,SAAmBgD,GAKjB,IAJA,IAEIkH,EAFAC,EAAOC,UAAUjK,OAAS,QAAsBkK,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,OAC3EE,EAAO,GAGFlK,EAAI,EAAGA,EAAI4C,EAAO7C,OAAQC,IAAK,CACtC,IAAImC,EAAQS,EAAO5C,GAEnB,GAAKuJ,EAAYpH,GAOjB,GAAK2H,EAOL,GAAIN,EAAiBrH,EAAO2H,GAC1BA,EAAYhG,SAASiD,KAAK5E,QAK5B,GAAIA,EAAMyB,MAAQkG,EAAYlG,MAA9B,CACE,IAAIuG,EAAUV,EAActH,GAE5B,GAAa,SAAT4H,EAAiB,CAOnB,IAAIK,EAAeV,EAAUI,GACzBO,EAAe3I,EAAa,GAAI0I,EAAc,CAChDtG,SAAUsG,EAAatG,SAASO,OAAO8F,KAGzCL,EAAYhG,SAASgG,EAAYhG,SAAS/D,OAAS,GAAKsK,OAExDP,EAAYhG,SAASiD,KAAKoD,GAI5BL,EAAcK,OAKhB,GAAIhI,EAAMyB,MAAQkG,EAAYlG,MAA9B,CAEE,IAAI0G,EAAQX,EAAiBO,EAAKA,EAAKnK,OAAS,GAAIoC,GAEpD,GAAImI,EAAO,EACTR,EAAcQ,GACFxG,SAASiD,KAAK5E,GAC1B,SAIF2H,EAAcL,EAActH,GAC5B+H,EAAKnD,KAAK+C,QAKZ,GAAI3H,EAAME,WAAayH,EAAYzH,SAiBnCkI,QAAQC,KAAK,sCAAuCrI,GACpD+H,EAAKnD,KAAK5E,OAlBV,CACE,IAAIsI,EAASd,EAAiBO,EAAKA,EAAKnK,OAAS,GAAI,CACnD6D,MAAOzB,EAAMyB,QAGf,GAAI6G,GAAUA,EAAOpI,WAAaF,EAAME,SAAU,EAChDyH,EAAcW,GACF3G,SAASiD,KAAK5E,GAC1B,SAEA2H,EAAcL,EAActH,GAC5B+H,EAAKnD,KAAK+C,QAlEZA,EAAcL,EAActH,GAC5B+H,EAAKnD,KAAK+C,QARVI,EAAKnD,KAAK5E,GACV2H,EAAc,KAkFlB,OAAOI,I,mCChGT,IAAIxI,EAAe,EAAQ,OAEvBsH,EAAc,EAAQ,OAE1BrJ,EAAOC,QAAU,SAAU0C,EAAGoI,GAC5B,IAAIC,EAAmBD,GAAkB,CACvCE,iBAAiB,GAsEnB,SAASC,EAAkBC,EAAKpI,GAC9B,OAAOJ,EAAEwI,EAAK,KAAMpI,EAAMoB,UAqG5B,MAAO,CACLtB,mBAvBuB,CAEvBuI,MAAO,CACL5I,MA/FJ,SAA6BO,GAC3B,IAAIsI,EAAQtI,EAAMY,KAAK0H,OAAS,SAEhC,MAAI,OAAOvJ,KAAKuJ,GACP1I,EAAE0I,EAAO,KAAMtI,EAAMoB,UAGExB,EAAf,eAAV0I,EAA2B,aAAwC,IAA1B,KAAMtI,EAAMoB,WAyF1D+E,MA3DJ,SAAyBnG,GACvB,IAAKA,EAAMY,KAAK8E,MACd,OAAO,KAGT,IAAI6C,EAAM3I,EAAE,MAAO,CACjB4I,IAAKlC,EAAYtG,KAEnB,OAAOA,EAAMe,SAAWwH,EAAM3I,EAAE,SAAU,KAAM2I,KAqDhD/G,MAd2B,CAC3BiH,OAAQN,EAAkBnF,KAAK,KAAM,UACrC0F,GAAIP,EAAkBnF,KAAK,KAAM,MACjC2F,KAAMR,EAAkBnF,KAAK,KAAM,QACnC4F,UAxEF,SAA6B5I,GAC3B,IAAIsI,EAAQL,EAAiBC,gBAAkB,CAC7C,kBAAmB,aACjB,CACFW,eAAgB,aAElB,OAAOjJ,EAAE,OAAQ,CACf0I,MAAOA,GACNtI,EAAMoB,WAiET,iBA9DF,SAAiCpB,GAC/B,OAAOJ,EAAE,MAAO,KAAMI,EAAMoB,WA8D5B0H,KA3DF,SAAwB9I,GACtB,OAAOJ,EAAE,IAAK,CACZmJ,KAAM/I,EAAM0C,KAAKqG,MAChB/I,EAAMoB,YAkETH,KAlHF,SAAwBjB,GACtB,IAAIoI,EAAqB,WAAfpI,EAAMgB,KAAoB,KAAO,KAC3C,OAAOpB,EAAEwI,EAAK,KAAMpI,EAAMoB,WAiH1BzB,SA7GF,SAA4BK,GAC1B,IAAIoB,EAAYpB,EAAMY,KAAK0H,OAA8B,WAArBtI,EAAMY,KAAK0H,MAE/C1I,EAAEI,EAAMK,YAAYgI,MAAM5I,MAAOO,EAAOA,EAAMoB,UAD9CpB,EAAMoB,SAEN,OAAOxB,EAAE,KAAM,KAAMwB,IA0GrB3B,MA5JF,SAAyBO,GACvB,IAAIY,EAAOZ,EAAMY,KACbP,EAAcL,EAAMK,YACpBC,EAAUN,EAAMM,QAChBS,EAAWf,EAAMe,SACjBK,EAAWpB,EAAMoB,SACjB4H,EAAYpI,EAAKlB,MACjBuJ,EAAa5I,EAAYgI,MAAMW,GAEnC,IAAKC,EACH,MAAM,IAAItD,MAAM,uBAAwBhE,OAAOqH,EAAW,0EAG5D,OAAOpJ,EAAEqJ,EAAY,CACnBrI,KAAMA,EACNN,QAASA,EACTS,SAAUA,GACTK,IA4IHkB,KAxIF,SAAwBtC,GACtB,IAAIkJ,EAAclJ,EAAMY,KACpB8B,EAAOwG,EAAYxG,KACnBtB,EAAW8H,EAAY9H,SAEvB+H,EAD0B,iBAATzG,EACIA,EAAOA,EAAKhD,MACjCuJ,EAAajJ,EAAMK,YAAYmB,MAAM2H,GAEzC,OAAKF,EAOErJ,EAAEqJ,EAAYjJ,EAAMY,KAAMQ,IAJ/ByG,QAAQC,KAAK,sBAAuBnG,OAAOwH,EAAU,0EAC9CvJ,EAAEI,EAAMK,YAAY+I,aAAc,KAAMhI,KA6HjDiI,UAxBwB,WACxB,OAAOzJ,EAAE,OAyBTsC,UAAW,MAEXkH,aAAc,OAEd9E,UAAMiD,EAENpF,MAAO,IAIPpC,cAnEF,SAAuBuC,EAAMjC,EAAaQ,EAAOP,GAC/C,GAAa,OAATgC,GAAiBjC,EAAYgJ,UAC/B,OAAOzJ,EAAES,EAAYgJ,UAAW,CAC9B5I,IAAK,MAAMkB,OAAOd,KAItB,GAAoB,iBAATyB,EACT,OAAOjC,EAAYiE,KAAO1E,EAAES,EAAYiE,KAAM,CAC5C7D,IAAK,QAAQkB,OAAOd,IACnByB,GAAQA,EAGb,IAAIlB,EAEAkB,EAAKlB,WACPA,EAAW,CACTA,SAAUkB,EAAKlB,SAASC,KAAI,SAAUiI,EAAOhM,GAC3C,OAAOgD,EAAQK,cAAc2I,EAAOhM,EAAGgF,EAAKlB,UAAU,QAK5D,IAAImI,EAAiBvK,EAAa,GAAIsD,EAAMlB,GAC5C,OAAOxB,EAAES,EAAYiC,KAAM,CACzB7B,IAAK6B,EAAKnB,MAAQ,QAAQQ,OAAOd,GACjCD,KAAM2I,EACNlJ,YAAaA,Q,mCC5InB,IAAImJ,EAAQ,EAAQ,OAEhBC,EAAY,EAAQ,OAEpBC,EAAY,EAAQ,OAEpBC,EAAW,EAAQ,OACnBtJ,EAAcsJ,EAAStJ,YACvBN,EAAgB4J,EAAS5J,cACzB6J,EAAcD,EAASC,YAEvBtD,EAAcoD,EAAUpD,YACxBC,EAAgBmD,EAAUnD,cAC1BnH,EAAmBsK,EAAUtK,iBAC7BoH,EAAagD,EAAMK,cAEnBC,EAAqB,SAASA,EAAmB9J,GACnD,IAAI+J,EAAoB3K,EAAiB0K,EAAmBhK,mBAAoBE,EAAMK,aAClFqB,EAAa3D,OAAOiM,OAAO,GAAIJ,EAAa5J,EAAO,CACrDK,YAAa0J,EACb7J,OAAQF,EAAME,QAAU,KAE1B,OAAOqG,EAAcC,EAAY9E,EAAYrB,EAAaN,IAI5D+J,EAAmBhK,mBAAqBO,EAExCyJ,EAAmBxD,YAAcA,EACjCwD,EAAmBG,UAAY,CAC7BhI,UAAWwH,EAAUS,OACrBrI,6BAA8B4H,EAAUU,KAExC3E,UAAWiE,EAAUS,OACrBzE,QAASgE,EAAUS,OACnB3K,aAAckK,EAAUW,OACxB/J,YAAaoJ,EAAUY,MAAM,CAE3BhC,MAAOoB,EAAUW,OACjB5I,MAAOiI,EAAUW,OAEjBnJ,KAAMwI,EAAUa,KAChB3K,SAAU8J,EAAUa,KAEpB7K,MAAOgK,EAAUa,KACjBhI,KAAMmH,EAAUa,OAElBpK,OAAQuJ,EAAUc,UAAU,CAACd,EAAUe,QAAQf,EAAUY,MAAM,CAC7D3K,MAAO+J,EAAUS,OAAOO,cACrBhB,EAAUY,MAAM,CACnB3K,MAAO+J,EAAUS,OAAOO,eACrBA,YAEPX,EAAmBY,aAAe,CAChC7I,8BAA8B,EAC9BxB,YAAa,GACbd,aAAc,IAEhBtC,EAAOC,QAAU4M,G,mCC1DjB,IAAIN,EAAQ,EAAQ,OAOhBmB,GAAkBvE,EALP,EAAQ,OACOA,gBAEboD,EAAMK,eAGnB/J,EAAqB6K,EAAgB7K,mBACrCC,EAAgB4K,EAAgB5K,cAEpC9C,EAAOC,QAAU,CACf6C,cAAeA,EACfM,YAAaP,EACb8J,YAAa,CACXgB,WAAW,K,kBCff3N,EAAOC,QAAU,SAAyB2N,GACxC,MAHY,+BAGKA,I,kBCF8C5N,EAAOC,QAC/D,WACP,SAAS4N,IAeP,OAdAA,EAAW/M,OAAOiM,QAAU,SAAUe,GACpC,IAAK,IAAIzN,EAAI,EAAGA,EAAIgK,UAAUjK,OAAQC,IAAK,CACzC,IAAI0N,EAAS1D,UAAUhK,GAEvB,IAAK,IAAImD,KAAOuK,EACVjN,OAAOU,UAAUwM,eAAetM,KAAKqM,EAAQvK,KAC/CsK,EAAOtK,GAAOuK,EAAOvK,IAK3B,OAAOsK,IAGOG,MAAMC,KAAM7D,WAG9B,SAAS8D,EAA4B9M,EAAGC,GACtC,GAAKD,EAAL,CACA,GAAiB,iBAANA,EAAgB,OAAO+M,EAAkB/M,EAAGC,GACvD,IAAIC,EAAIT,OAAOU,UAAUC,SAASC,KAAKL,GAAGM,MAAM,GAAI,GAEpD,MADU,WAANJ,GAAkBF,EAAEO,cAAaL,EAAIF,EAAEO,YAAYC,MAC7C,QAANN,GAAqB,QAANA,EAAoBhB,MAAMQ,KAAKM,GACxC,cAANE,GAAqB,2CAA2CO,KAAKP,GAAW6M,EAAkB/M,EAAGC,QAAzG,GAGF,SAAS8M,EAAkBlO,EAAKC,IACnB,MAAPA,GAAeA,EAAMD,EAAIE,UAAQD,EAAMD,EAAIE,QAE/C,IAAK,IAAIC,EAAI,EAAGC,EAAO,IAAIC,MAAMJ,GAAME,EAAIF,EAAKE,IAC9CC,EAAKD,GAAKH,EAAIG,GAGhB,OAAOC,EAGT,SAAS+N,EAAgChN,GACvC,IAAIhB,EAAI,EAER,GAAsB,oBAAXO,QAAgD,MAAtBS,EAAET,OAAOC,UAAmB,CAC/D,GAAIN,MAAMG,QAAQW,KAAOA,EAAI8M,EAA4B9M,IAAK,OAAO,WACnE,OAAIhB,GAAKgB,EAAEjB,OAAe,CACxBkO,MAAM,GAED,CACLA,MAAM,EACN7K,MAAOpC,EAAEhB,OAGb,MAAM,IAAIW,UAAU,yIAItB,OADAX,EAAIgB,EAAET,OAAOC,aACJ0N,KAAKxI,KAAK1F,GAGrB,IAAImO,EAAU,+CAEd,SAASC,EAAaC,GACpB,IAAIC,EAAaD,EAAInH,MAAM,KACvBqH,EAAKD,EAAW,GAChBE,EAAkBF,EAAW,GAC7BG,EAASH,EAAW,GAExB,IAAKC,IAAOC,IAAoBC,EAC9B,MAAM,IAAIpG,MAAM,yBAA2BgG,EAAM,4BAA8BF,EAAU,MAG3F,IAAIO,EAAwBF,EAAgBtH,MAAM,KAI9CyH,GAHcD,EAAsB,GAIpCE,GAHeF,EAAsB,GAMzC,IAFqBG,SAASF,KAAUE,SAASD,GAG/C,MAAM,IAAIvG,MAAM,yBAA2BgG,EAAM,4BAA8BF,EAAU,MAG3F,MAAO,CACLI,GAAIA,EACJI,MAAOA,EACPC,OAAQA,EACRH,OAAQA,GAIZ,IAAIK,EAAQ,SAAe5D,GAEzB,QADaA,GAC0B,iBAD1BA,EACiBtC,MAG5BmG,EAAU,SAAiB7D,GAE7B,QADaA,GACyB,iBADzBA,EACiB8D,KAG5BC,EAAc,SAAqB/D,GACrC,IAAIwC,EAASxC,EACb,SAAOwC,IAAUA,EAAOtF,QAAoC,iBAArBsF,EAAOtF,MAAME,KAGtD,SAAS4G,EAAYxB,GACnB,IAAKA,EACH,OAAO,KAGT,IAAI7E,EAEJ,GAAsB,iBAAX6E,GAAuByB,EAAMzB,GACtC7E,EAAQ,CACNT,MAAO,CACLQ,KAAMwG,EAAQ1B,UAGb,GAAsB,iBAAXA,EAChB7E,EAAQ,CACNT,MAAO,CACLQ,KAAM8E,SAGL,GAAIoB,EAAMpB,GACf7E,EAAQ,CACNT,MAAOsF,QAEJ,GAAIqB,EAAQrB,GACjB7E,EAAQ,CACNT,MAAO,CACLQ,KAAM8E,EAAOsB,KAAO,UAGnB,GAAIC,EAAYvB,GACrB7E,EAAQ,CACNT,MAAO,CACLQ,KAAMwG,EAAQ1B,EAAOtF,MAAME,WAG1B,IAA4B,iBAAjBoF,EAAOtF,MAGvB,OAAO,KAFPS,EAAQ6E,EAKV,IAAIzC,EAAMyC,EAUV,OARIzC,EAAIoE,OACNxG,EAAMwG,KAAOpE,EAAIoE,MAGfpE,EAAIqE,UACNzG,EAAMyG,QAAUrE,EAAIqE,SAGfC,EAAc1G,GAGvB,SAASsG,EAAM7G,GACb,MAAO,eAAe7G,KAAK,GAAK6G,GAGlC,SAAS8G,EAAQ9G,GAEf,OAAQ,SADIA,EAAIpB,MAAM,KAAK5F,OAAO,GACT,IAAIsG,QAAQ,cAAe,OAGtD,SAAS2H,EAAc1G,GACrB,GAAIA,EAAMwG,MAAQxG,EAAMyG,QACtB,OAAOzG,EAGT,IAAI2G,EAAShC,EAAS,GAAI3E,GAoB1B,OAlBK2G,EAAOH,OACVG,EAAOH,KAAO,CACZI,KAAM,EACNC,IAAK,EACLC,OAAQ,EACRC,MAAO,IAINJ,EAAOF,UACVE,EAAOF,QAAU,CACfO,EAAG,GACHC,EAAG,GACHlB,OAAQ,EACRD,MAAO,IAIJa,EAGT,IAAIO,EAAiC,CAAC,CAAC,QAAS,KAAM,CAAC,SAAU,KAAM,CAAC,SAAU,MAAO,CAAC,WAAY,MAAO,CAAC,OAAQ,QAAS,CAAC,UAAW,SAAU,CAAC,SAAU,UAAW,CAAC,cAAe,MAAO,CAAC,YAAa,SAAU,CAAC,YAAa,SAAU,CAAC,WAAY,SAAU,CAAC,WAAY,SAAU,CAAC,UAAW,KAAM,CAAC,MAAO,OAAQ,CAAC,OAAQ,QAAS,CAAC,aAAc,OAAQ,CAAC,OAAQ,QAAS,CAAC,MAAO,QAErY,SAASC,EAAYhN,GACnB,IAAIiN,EAAOzC,EAAS,GAAIxK,GAAW,IAE/B0K,EAASuC,EAAKvC,cACXuC,EAAKvC,OACZ,IAAI7E,EAAQqG,EAAYxB,GAExB,IAAK7E,EACH,OAAO,KAGT,IACIT,EAAQgG,EADHvF,EAAMT,MAAMQ,MAAQC,EAAMT,MAAM4G,KAAO,IAE5CkB,EAAWC,KAAKC,MAAMvH,EAAMwG,KAAKI,KAAOrH,EAAMuG,OAC9C0B,EAAUF,KAAKC,MAAMvH,EAAMwG,KAAKK,IAAMtH,EAAMwG,QAC5CS,EAAO,CACTI,KAAMS,EACNR,IAAKW,EACL1B,MAAOwB,KAAKC,MAAMhI,EAAMuG,MAAQ9F,EAAMwG,KAAKO,MAAQxH,EAAMuG,MAAQuB,GACjEtB,OAAQuB,KAAKC,MAAMhI,EAAMwG,OAAS/F,EAAMwG,KAAKM,OAASvH,EAAMwG,OAASyB,IAEnEC,EAAwBzH,EAAMyG,QAAQV,OAASxG,EAAMwG,OAAS,EAC9D2B,EAA0B1H,EAAMyG,QAAQX,MAAQvG,EAAMuG,MAAQ,EAC9D6B,EAAiB3H,EAAMyG,QAAQO,EAAIzH,EAAMuG,MACzC8B,EAAiB5H,EAAMyG,QAAQQ,EAAI1H,EAAMwG,OACzCU,EAAU,CACZG,KAAMe,EAAiBD,EACvBb,IAAKe,EAAiBH,EACtBV,MAAOY,EAAiBD,EACxBZ,OAAQc,EAAiBH,GAU3B,OAPML,EAAKS,MAAQT,EAAKU,YAAcV,EAAKW,mBAAqBX,EAAKZ,OACnEY,EAAOzC,EAASA,EAAS,GAAIyC,GAAOY,EAAI,CACtCxB,KAAMA,EACNC,QAASA,GACRW,KAGEa,EAAetD,EAASA,EAAS,GAAIyC,GAAO,GAAI,CACrD7H,MAAOA,KAIX,SAAS0I,EAAeb,GACtB,IAAIc,EAASd,EAAKe,SAAW,wBACzBC,EAAWhB,EAAK7H,MAAMmG,GAAK,IAAM0B,EAAK7H,MAAMuG,MAAQ,IAAMsB,EAAK7H,MAAMwG,OAAS,IAAMqB,EAAK7H,MAAMqG,OAC/FuC,EAAUD,EAAS,WAAad,EAAK/H,UAAY,IAAM+H,EAAK9H,QAAU,IAAM8I,EAC5ExI,EAAS,GAEb,GAAIwH,EAAKS,KAAM,CACb,IAAIQ,EAAajB,EAAKS,KAClBjB,EAAOyB,EAAWzB,KAClBC,EAAMwB,EAAWxB,IACjBf,EAAQuC,EAAWvC,MACnBC,EAASsC,EAAWtC,QACO,IAATa,GAAsB,IAARC,GAAad,IAAWqB,EAAK7H,MAAMwG,QAAUD,IAAUsB,EAAK7H,MAAMuG,QAGpGlG,EAAO1B,KAAK,QAAU0I,EAAO,IAAMC,EAAM,IAAMf,EAAQ,IAAMC,GAI7DqB,EAAKkB,IACP1I,EAAO1B,KAAK,MAAQkJ,EAAKkB,IAGvBlB,EAAKU,aACPlI,EAAO1B,KAAK,QAAUkJ,EAAKU,WAAWd,GACtCpH,EAAO1B,KAAK,QAAUkJ,EAAKU,WAAWb,IAGxC,IAAIsB,EAAO,CAACnB,EAAKoB,gBAAkB,IAAKpB,EAAKqB,cAAgB,KAAKC,OAAO/M,SAASkE,KAAK,IAiBvF,OAfI0I,GACF3I,EAAO1B,KAAK,QAAUqK,GAGxBrB,EAA+BzJ,SAAQ,SAAUkL,GAC/C,IAAIC,EAAWD,EAAQ,GACnBE,EAAQF,EAAQ,QAEU,IAAnBvB,EAAKwB,GACdhJ,EAAO1B,KAAK2K,EAAQ,IAAM1J,mBAAmBiI,EAAKwB,UAClB,IAAhBxB,EAAKyB,IACrBjJ,EAAO1B,KAAK2K,EAAQ,IAAM1J,mBAAmBiI,EAAKyB,QAIhC,IAAlBjJ,EAAO1I,OACFiR,EAGFA,EAAU,IAAMvI,EAAOC,KAAK,KAGrC,SAASmI,EAAInD,EAAQuC,GACnB,IAAI0B,EACAC,EAAW3B,EAAKtB,MAChBkD,EAAY5B,EAAKrB,OAErB,IAAMgD,IAAYC,EAChB,MAAO,CACLlD,MAAOiD,EACPhD,OAAQiD,EACRnB,KAAMhD,EAAO2B,MAIjB,IAAIA,EAAO3B,EAAO2B,KACdC,EAAU5B,EAAO4B,QACjBwC,EAAqBF,EAAWC,EAGpC,GAFsBxC,EAAKV,MAAQU,EAAKT,OAElBkD,EAAoB,CACxC,IAAIlD,EAASS,EAAKT,OACdD,EAAQC,EAASkD,EACjBpC,EAAML,EAAKK,IAEXD,GADkBH,EAAQM,MAAQN,EAAQG,MAAQ,EAAIH,EAAQG,KACtCd,EAAQ,EAEhCc,EAAOJ,EAAKI,KACdA,EAAOJ,EAAKI,KACHA,EAAOd,EAAQU,EAAKI,KAAOJ,EAAKV,QACzCc,EAAOJ,EAAKI,KAAOJ,EAAKV,MAAQA,GAGlCgD,EAAW,CACTlC,KAAMU,KAAKC,MAAMX,GACjBC,IAAKS,KAAKC,MAAMV,GAChBf,MAAOwB,KAAKC,MAAMzB,GAClBC,OAAQuB,KAAKC,MAAMxB,QAEhB,CACL,IAAImD,EAAS1C,EAAKV,MAEdqD,EAAUD,EAASD,EAEnBG,EAAQ5C,EAAKI,KAGbyC,GAFkB5C,EAAQK,OAASL,EAAQI,KAAO,EAAIJ,EAAQI,IAEtCsC,EAAU,EAElCE,EAAO7C,EAAKK,IACdwC,EAAO7C,EAAKK,IACHwC,EAAOF,EAAU3C,EAAKK,IAAML,EAAKT,SAC1CsD,EAAO7C,EAAKK,IAAML,EAAKT,OAASoD,GAGlCL,EAAW,CACTlC,KAAMU,KAAKgC,IAAI,EAAGhC,KAAKiC,MAAMH,IAC7BvC,IAAKS,KAAKgC,IAAI,EAAGhC,KAAKiC,MAAMF,IAC5BvD,MAAOwB,KAAKC,MAAM2B,GAClBnD,OAAQuB,KAAKC,MAAM4B,IAIvB,MAAO,CACLrD,MAAOiD,EACPhD,OAAQiD,EACRnB,KAAMiB,GAIV,IAAIU,EAAY,CAAC,OAAQ,OAAQ,OAAQ,UAAW,MAAO,QAAS,OAChEC,EAAa,CAAC,MAAO,SAAU,OAAQ,QAAS,SAAU,aAAc,WACxEC,EAAiB,CAAC,UAEtB,SAASC,EAAeC,GACtB,QAAOA,GAAwC,iBAAxBA,EAAOC,aAGhC,SAASC,EAAgBxP,GAGvB,IAFA,IAE6DyP,EAApDC,EAAY7E,EAFT+B,KAE0D6C,EAAQC,KAAa5E,MAAO,CAChG,IAAI6E,EAAQF,EAAMxP,MACdqO,EAAWqB,EAAM,GACjBpB,EAAQoB,EAAM,GAElB,GAAI3P,IAAQsO,GAAYtO,IAAQuO,EAC9B,OAAOD,EAIX,OAAOtO,EAGT,SAAS2E,EAAW9E,GAClB,IAAIyP,EAASzP,EAEb,GAAIwP,EAAeC,GAAS,CAC1B,IAAIM,EAAuBN,EAAOC,aAC9BM,EAASD,EAAqBE,QAC9B/K,EAAY6K,EAAqB7K,UACjCC,EAAU4K,EAAqB5K,QAEnC,OAAO,IAAI+K,EAAgB,KAAM,CAC/BlC,SAFYgC,GAAU,yBAELpL,QAAQ,mBAAoB,gBAC7CM,UAAWA,EACXC,QAASA,IAIb,OAAO,IAAI+K,EAAgB,KAAMlQ,GAGnC,IAAIkQ,EAA+B,WACjC,SAASA,EAAgBC,EAAQnQ,GAC/B6K,KAAK7K,QAAmBwK,EAAT2F,EAAkB3F,EAAS,GAAI2F,EAAOnQ,SAAW,IAA+B,GAA1BA,GAAW,IAGlF,IAAIoQ,EAASF,EAAgB/R,UAyN7B,OAvNAiS,EAAOC,YAAc,SAAqBrQ,GACxC,IAAIgO,EAAUhO,EAAQgO,SAAWnD,KAAK7K,QAAQgO,QAC1CsC,EAAa,CACftC,QAASA,GAGX,IAAK,IAAI7N,KAAOH,EACVA,EAAQ2K,eAAexK,KAEzBmQ,EADcX,EAAgBxP,IACRH,EAAQG,IAIlC,OAAO,IAAI+P,EAAgBrF,KAAML,EAAS,CACxCwD,QAASA,GACRsC,KAGLF,EAAOvK,MAAQ,SAAe6E,GAC5B,OAAOG,KAAKwF,YAAY,CACtB3F,OAAQA,KAIZ0F,EAAOjL,QAAU,SAAiBoL,GAChC,OAAO1F,KAAKwF,YAAY,CACtBlL,QAASoL,KAIbH,EAAOlL,UAAY,SAAmBsL,GACpC,OAAO3F,KAAKwF,YAAY,CACtBnL,UAAWsL,KAIfJ,EAAOjC,GAAK,SAAYsC,GACtB,OAAO5F,KAAKwF,YAAY,CACtBlC,GAAIsC,KAIRL,EAAOM,IAAM,SAAaC,GACxB,OAAO9F,KAAKwF,YAAY,CACtBK,IAAKC,KAITP,EAAOzE,MAAQ,SAAeoD,GAC5B,OAAOlE,KAAKwF,YAAY,CACtB1E,MAAOoD,KAIXqB,EAAOxE,OAAS,SAAgBoD,GAC9B,OAAOnE,KAAKwF,YAAY,CACtBzE,OAAQoD,KAIZoB,EAAOzC,WAAa,SAAoBd,EAAGC,GACzC,OAAOjC,KAAKwF,YAAY,CACtB1C,WAAY,CACVd,EAAGA,EACHC,EAAGA,MAKTsD,EAAOQ,SAAW,SAAkBC,GAClC,OAAOhG,KAAKwF,YAAY,CACtBO,SAAUC,KAIdT,EAAOU,SAAW,SAAkBC,GAClC,OAAOlG,KAAKwF,YAAY,CACtBS,SAAUC,KAIdX,EAAOY,UAAY,SAAmBC,GACpC,OAAOpG,KAAKwF,YAAY,CACtBW,UAAWC,KAIfb,EAAOc,UAAY,SAAmBC,GACpC,OAAOtG,KAAKwF,YAAY,CACtBa,UAAWC,KAIff,EAAOgB,KAAO,SAAczF,EAAOC,GACjC,OAAOf,KAAKwF,YAAY,CACtB1E,MAAOA,EACPC,OAAQA,KAIZwE,EAAOiB,KAAO,SAAcC,GAC1B,OAAOzG,KAAKwF,YAAY,CACtBgB,KAAMC,KAIVlB,EAAOmB,QAAU,SAAiBC,GAChC,OAAO3G,KAAKwF,YAAY,CACtBkB,QAASC,KAIbpB,EAAO1C,KAAO,SAAcjB,EAAMC,EAAKf,EAAOC,GAC5C,OAAOf,KAAKwF,YAAY,CACtB3C,KAAM,CACJjB,KAAMA,EACNC,IAAKA,EACLf,MAAOA,EACPC,OAAQA,MAKdwE,EAAO3E,OAAS,SAAgBgG,GAC9B,OAAO5G,KAAKwF,YAAY,CACtB5E,OAAQgG,KAIZrB,EAAOsB,OAAS,SAAgBC,GAC9B,OAAO9G,KAAKwF,YAAY,CACtBqB,OAAQC,KAIZvB,EAAOwB,YAAc,SAAqBC,GACxC,OAAOhH,KAAKwF,YAAY,CACtBuB,YAAaC,KAIjBzB,EAAO0B,QAAU,SAAiBC,GAChC,OAAOlH,KAAKwF,YAAY,CACtByB,QAASC,KAIb3B,EAAO4B,cAAgB,SAAuBC,GAC5C,OAAOpH,KAAKwF,YAAY,CACtB4B,SAAUA,KAId7B,EAAO/B,eAAiB,WACtB,OAAOxD,KAAKwF,YAAY,CACtBhC,gBAAgB,KAIpB+B,EAAO9B,aAAe,WACpB,OAAOzD,KAAKwF,YAAY,CACtB/B,cAAc,KAIlB8B,EAAOxC,kBAAoB,WACzB,OAAO/C,KAAKwF,YAAY,CACtBzC,mBAAmB,KAIvBwC,EAAOvC,IAAM,SAAazN,GACxB,IAAkC,IAA9BiP,EAAU9M,QAAQnC,GACpB,MAAM,IAAIiF,MAAM,qBAAwBjF,EAAQ,KAGlD,OAAOyK,KAAKwF,YAAY,CACtBxC,IAAKzN,KAITgQ,EAAO/D,KAAO,SAAcjM,GAC1B,IAAmC,IAA/BkP,EAAW/M,QAAQnC,GACrB,MAAM,IAAIiF,MAAM,sBAAyBjF,EAAQ,KAGnD,OAAOyK,KAAKwF,YAAY,CACtBhE,KAAMjM,KAIVgQ,EAAO8B,WAAa,SAAoBC,GACtC,OAAOtH,KAAKwF,YAAY,CACtB6B,WAAYC,KAIhB/B,EAAOgC,KAAO,SAAchS,GAC1B,IAAuC,IAAnCmP,EAAehN,QAAQnC,GACzB,MAAM,IAAIiF,MAAM,sBAAyBjF,EAAQ,KAGnD,OAAOyK,KAAKwF,YAAY,CACtB+B,KAAMhS,KAIVgQ,EAAO9K,IAAM,WACX,OAAO0H,EAAYnC,KAAK7K,UAG1BoQ,EAAOhS,SAAW,WAChB,OAAOyM,KAAKvF,OAGP4K,EA9N0B,GAiOnC,OAAOpL,EAvnByEuN,I,kBCYlF1V,EAAOC,QAAU,SAAyC0V,GACxD,IAAIC,EAAO,IAAIC,KAAKF,EAAUG,WAC1BC,EAAqBH,EAAKI,oBAG9B,OAFAJ,EAAKK,WAAW,EAAG,GAhBQ,IAkBpBF,EADgCH,EAAKE,UAjBjB,M,sBCA7B,IAAII,EAAQ,EAAQ,MA0BpBlW,EAAOC,QAPP,SAAiB0V,EAAWQ,GAC1B,IAAIP,EAAOM,EAAMP,GACbS,EAASC,OAAOF,GAEpB,OADAP,EAAKU,QAAQV,EAAKW,UAAYH,GACvBR,I,qBCvBT,IAAIY,EAAkB,EAAQ,OAyB9BxW,EAAOC,QALP,SAAkB0V,EAAWQ,GAC3B,IAAIC,EAASC,OAAOF,GACpB,OAAOK,EAAgBb,EApBE,KAoBSS,K,sBCtBpC,IAAIK,EAAa,EAAQ,MAErBC,EAAa,EAAQ,OA0BzB1W,EAAOC,QALP,SAAqB0V,EAAWQ,GAC9B,IAAIC,EAASC,OAAOF,GACpB,OAAOO,EAAWf,EAAWc,EAAWd,GAAaS,K,sBCzBvD,IAAIF,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAyB0V,EAAWQ,GAClC,IAAIQ,EAAYT,EAAMP,GAAWG,UAC7BM,EAASC,OAAOF,GACpB,OAAO,IAAIN,KAAKc,EAAYP,K,sBCtB9B,IAAII,EAAkB,EAAQ,OAyB9BxW,EAAOC,QALP,SAAoB0V,EAAWQ,GAC7B,IAAIC,EAASC,OAAOF,GACpB,OAAOK,EAAgBb,EApBI,IAoBOS,K,sBCtBpC,IAAIF,EAAQ,EAAQ,MAEhBU,EAAiB,EAAQ,MAiC7B5W,EAAOC,QAdP,SAAmB0V,EAAWQ,GAC5B,IAAIP,EAAOM,EAAMP,GACbS,EAASC,OAAOF,GAChBU,EAAejB,EAAKkB,WAAaV,EACjCW,EAAuB,IAAIlB,KAAK,GACpCkB,EAAqBC,YAAYpB,EAAKqB,cAAeJ,EAAc,GACnEE,EAAqBG,SAAS,EAAG,EAAG,EAAG,GACvC,IAAIC,EAAcP,EAAeG,GAIjC,OADAnB,EAAKwB,SAASP,EAAcrG,KAAK6G,IAAIF,EAAavB,EAAKW,YAChDX,I,sBChCT,IAAI0B,EAAY,EAAQ,OAyBxBtX,EAAOC,QANP,SAAqB0V,EAAWQ,GAC9B,IAAIC,EAASC,OAAOF,GAEpB,OAAOmB,EAAU3B,EADK,EAATS,K,sBCrBf,IAAII,EAAkB,EAAQ,OAwB9BxW,EAAOC,QALP,SAAoB0V,EAAWQ,GAC7B,IAAIC,EAASC,OAAOF,GACpB,OAAOK,EAAgBb,EAAoB,IAATS,K,qBCrBpC,IAAImB,EAAU,EAAQ,OAyBtBvX,EAAOC,QANP,SAAkB0V,EAAWQ,GAC3B,IAAIC,EAASC,OAAOF,GAEpB,OAAOoB,EAAQ5B,EADK,EAATS,K,sBCrBb,IAAIkB,EAAY,EAAQ,OAwBxBtX,EAAOC,QALP,SAAkB0V,EAAWQ,GAC3B,IAAIC,EAASC,OAAOF,GACpB,OAAOmB,EAAU3B,EAAoB,GAATS,K,sBCrB9B,IAAIF,EAAQ,EAAQ,MA4CpBlW,EAAOC,QAbP,SAA8BuX,EAA4BC,EAA0BC,EAA6BC,GAC/G,IAAIC,EAAmB1B,EAAMsB,GAA4B1B,UACrD+B,EAAiB3B,EAAMuB,GAA0B3B,UACjDgC,EAAoB5B,EAAMwB,GAA6B5B,UACvDiC,EAAkB7B,EAAMyB,GAA2B7B,UAEvD,GAAI8B,EAAmBC,GAAkBC,EAAoBC,EAC3D,MAAM,IAAIrP,MAAM,+DAGlB,OAAOkP,EAAmBG,GAAmBD,EAAoBD,I,sBCzCnE,IAAI3B,EAAQ,EAAQ,MA+CpBlW,EAAOC,QArBP,SAAwB+X,EAAoBC,GAC1C,KAAMA,aAA2B1X,OAC/B,MAAM,IAAIS,UAAUS,SAASC,KAAKuW,GAAmB,gCAGvD,IAEIpI,EACAqI,EAFAC,EADgBjC,EAAM8B,GACQlC,UAYlC,OATAmC,EAAgBtR,SAAQ,SAAUgP,EAAW/R,GAC3C,IAAIwU,EAAclC,EAAMP,GACpB0C,EAAW7H,KAAK8H,IAAIH,EAAgBC,EAAYtC,iBAErCxL,IAAXuF,GAAwBwI,EAAWH,KACrCrI,EAASjM,EACTsU,EAAcG,MAGXxI,I,sBC5CT,IAAIqG,EAAQ,EAAQ,MA6CpBlW,EAAOC,QArBP,SAAmB+X,EAAoBC,GACrC,KAAMA,aAA2B1X,OAC/B,MAAM,IAAIS,UAAUS,SAASC,KAAKuW,GAAmB,gCAGvD,IAEIpI,EACAqI,EAFAC,EADgBjC,EAAM8B,GACQlC,UAYlC,OATAmC,EAAgBtR,SAAQ,SAAUgP,GAChC,IAAIyC,EAAclC,EAAMP,GACpB0C,EAAW7H,KAAK8H,IAAIH,EAAgBC,EAAYtC,iBAErCxL,IAAXuF,GAAwBwI,EAAWH,KACrCrI,EAASuI,EACTF,EAAcG,MAGXxI,I,sBC1CT,IAAIqG,EAAQ,EAAQ,MAmDpBlW,EAAOC,QAfP,SAAoBsY,EAAeC,GACjC,IACIC,EADWvC,EAAMqC,GACGzC,UAEpB4C,EADYxC,EAAMsC,GACI1C,UAE1B,OAAI2C,EAAWC,GACL,EACCD,EAAWC,EACb,EAEA,I,oBC/CX,IAAIxC,EAAQ,EAAQ,MAmDpBlW,EAAOC,QAfP,SAAqBsY,EAAeC,GAClC,IACIC,EADWvC,EAAMqC,GACGzC,UAEpB4C,EADYxC,EAAMsC,GACI1C,UAE1B,OAAI2C,EAAWC,GACL,EACCD,EAAWC,EACb,EAEA,I,sBC/CX,IAAIC,EAAa,EAAQ,MAoCzB3Y,EAAOC,QAXP,SAAkCsY,EAAeC,GAC/C,IAAII,EAAiBD,EAAWJ,GAC5BM,EAAkBF,EAAWH,GAC7BM,EAAgBF,EAAe9C,UA1BR,IA0BoB8C,EAAe5C,oBAC1D+C,EAAiBF,EAAgB/C,UA3BV,IA2BsB+C,EAAgB7C,oBAIjE,OAAOxF,KAAKC,OAAOqI,EAAgBC,GA9BX,S,sBCH1B,IAAIC,EAAiB,EAAQ,OAqC7BhZ,EAAOC,QAXP,SAAsCsY,EAAeC,GACnD,IAAIS,EAAqBD,EAAeT,GACpCW,EAAsBF,EAAeR,GACrCM,EAAgBG,EAAmBnD,UA3BZ,IA2BwBmD,EAAmBjD,oBAClE+C,EAAiBG,EAAoBpD,UA5Bd,IA4B0BoD,EAAoBlD,oBAIzE,OAAOxF,KAAKC,OAAOqI,EAAgBC,GA/BV,U,sBCH3B,IAAItC,EAAa,EAAQ,MA4BzBzW,EAAOC,QAJP,SAAsCsY,EAAeC,GACnD,OAAO/B,EAAW8B,GAAiB9B,EAAW+B,K,sBCzBhD,IAAItC,EAAQ,EAAQ,MA8BpBlW,EAAOC,QARP,SAAoCsY,EAAeC,GACjD,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GAGtB,OAAkB,IAFHW,EAASlC,cAAgBmC,EAAUnC,gBAClCkC,EAASrC,WAAasC,EAAUtC,c,sBC1BlD,IAAIuC,EAAa,EAAQ,OAErBnD,EAAQ,EAAQ,MA8BpBlW,EAAOC,QARP,SAAsCsY,EAAeC,GACnD,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GAGtB,OAAkB,GAFHW,EAASlC,cAAgBmC,EAAUnC,gBAChCoC,EAAWF,GAAYE,EAAWD,M,sBC5BtD,IAAIE,EAAc,EAAQ,OA+C1BtZ,EAAOC,QAXP,SAAmCsY,EAAeC,EAAgBe,GAChE,IAAIC,EAAkBF,EAAYf,EAAegB,GAC7CE,EAAmBH,EAAYd,EAAgBe,GAC/CT,EAAgBU,EAAgB1D,UArCT,IAqCqB0D,EAAgBxD,oBAC5D+C,EAAiBU,EAAiB3D,UAtCX,IAsCuB2D,EAAiBzD,oBAInE,OAAOxF,KAAKC,OAAOqI,EAAgBC,GAzCV,U,sBCH3B,IAAI7C,EAAQ,EAAQ,MA4BpBlW,EAAOC,QANP,SAAmCsY,EAAeC,GAChD,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GACtB,OAAOW,EAASlC,cAAgBmC,EAAUnC,gB,sBCzB5C,IAAIf,EAAQ,EAAQ,MAEhBwD,EAA2B,EAAQ,OAEnCC,EAAa,EAAQ,OAmCzB3Z,EAAOC,QAZP,SAA0BsY,EAAeC,GACvC,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GAClBoB,EAAOD,EAAWR,EAAUC,GAC5BS,EAAarJ,KAAK8H,IAAIoB,EAAyBP,EAAUC,IAK7D,OAJAD,EAAS7C,QAAQ6C,EAAS5C,UAAYqD,EAAOC,GAItCD,GAAQC,GADQF,EAAWR,EAAUC,MAAgBQ,M,sBCnC9D,IAAIE,EAA2B,EAAQ,OA4BvC9Z,EAAOC,QALP,SAA2BsY,EAAeC,GACxC,IAAIuB,EAAOD,EAAyBvB,EAAeC,GAtB1B,KAuBzB,OAAOuB,EAAO,EAAIvJ,KAAKiC,MAAMsH,GAAQvJ,KAAKwJ,KAAKD,K,sBCzBjD,IAAI7D,EAAQ,EAAQ,MAEhB+D,EAA+B,EAAQ,OAEvCN,EAAa,EAAQ,OAErBO,EAAc,EAAQ,OAqC1Bla,EAAOC,QAbP,SAA8BsY,EAAeC,GAC3C,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GAClBoB,EAAOD,EAAWR,EAAUC,GAC5BS,EAAarJ,KAAK8H,IAAI2B,EAA6Bd,EAAUC,IAMjE,OALAD,EAAWe,EAAYf,EAAUS,EAAOC,GAKjCD,GAAQC,GADYF,EAAWR,EAAUC,MAAgBQ,M,sBCvClE,IAAI1D,EAAQ,EAAQ,MA6BpBlW,EAAOC,QANP,SAAkCsY,EAAeC,GAC/C,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GACtB,OAAOW,EAASrD,UAAYsD,EAAUtD,Y,sBC1BxC,IAAIgE,EAA2B,EAAQ,OA4BvC9Z,EAAOC,QALP,SAA6BsY,EAAeC,GAC1C,IAAIuB,EAAOD,EAAyBvB,EAAeC,GAtBxB,IAuB3B,OAAOuB,EAAO,EAAIvJ,KAAKiC,MAAMsH,GAAQvJ,KAAKwJ,KAAKD,K,sBCzBjD,IAAI7D,EAAQ,EAAQ,MAEhBiE,EAA6B,EAAQ,OAErCR,EAAa,EAAQ,OAkCzB3Z,EAAOC,QAZP,SAA4BsY,EAAeC,GACzC,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GAClBoB,EAAOD,EAAWR,EAAUC,GAC5BS,EAAarJ,KAAK8H,IAAI6B,EAA2BhB,EAAUC,IAK/D,OAJAD,EAAS/B,SAAS+B,EAASrC,WAAa8C,EAAOC,GAIxCD,GAAQC,GADUF,EAAWR,EAAUC,MAAgBQ,M,sBClChE,IAAIQ,EAAqB,EAAQ,OA2BjCpa,EAAOC,QALP,SAA8BsY,EAAeC,GAC3C,IAAIuB,EAAOK,EAAmB7B,EAAeC,GAAkB,EAC/D,OAAOuB,EAAO,EAAIvJ,KAAKiC,MAAMsH,GAAQvJ,KAAKwJ,KAAKD,K,sBCxBjD,IAAID,EAA2B,EAAQ,OA4BvC9Z,EAAOC,QALP,SAA6BsY,EAAeC,GAC1C,IAAIuB,EAAOD,EAAyBvB,EAAeC,GAAkB,IACrE,OAAOuB,EAAO,EAAIvJ,KAAKiC,MAAMsH,GAAQvJ,KAAKwJ,KAAKD,K,sBCzBjD,IAAIM,EAAmB,EAAQ,OA2B/Bra,EAAOC,QALP,SAA2BsY,EAAeC,GACxC,IAAIuB,EAAOM,EAAiB9B,EAAeC,GAAkB,EAC7D,OAAOuB,EAAO,EAAIvJ,KAAKiC,MAAMsH,GAAQvJ,KAAKwJ,KAAKD,K,sBCxBjD,IAAI7D,EAAQ,EAAQ,MAEhBoE,EAA4B,EAAQ,OAEpCX,EAAa,EAAQ,OAkCzB3Z,EAAOC,QAZP,SAA2BsY,EAAeC,GACxC,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GAClBoB,EAAOD,EAAWR,EAAUC,GAC5BS,EAAarJ,KAAK8H,IAAIgC,EAA0BnB,EAAUC,IAK9D,OAJAD,EAASnC,YAAYmC,EAASlC,cAAgB2C,EAAOC,GAI9CD,GAAQC,GADSF,EAAWR,EAAUC,MAAgBQ,M,sBClC/D,IAAIW,EAAc,EAAQ,KAEtBrE,EAAQ,EAAQ,MAEhBsE,EAAsB,EAAQ,OAE9BJ,EAAqB,EAAQ,OAE7BK,EAAW,EAAQ,OAInBC,EAAmB,MA6KvB1a,EAAOC,QAxFP,SAAyB+X,EAAoBrC,EAAW4D,GACtD,IAAIlW,EAAUkW,GAAgB,GAC1BoB,EAAaJ,EAAYvC,EAAoBrC,GAC7CiF,EAASvX,EAAQuX,OACjBC,EAAWJ,EAASK,gBAAgBD,SAEpCD,GAAUA,EAAOE,iBAAmBF,EAAOE,gBAAgBD,WAC7DA,EAAWD,EAAOE,gBAAgBD,UAGpC,IAII1B,EAAUC,EAJV2B,EAAkB,CACpBC,UAAWnW,QAAQxB,EAAQ2X,WAC3BL,WAAYA,GAIVA,EAAa,GACfxB,EAAWjD,EAAM8B,GACjBoB,EAAYlD,EAAMP,KAElBwD,EAAWjD,EAAMP,GACjByD,EAAYlD,EAAM8B,IAGpB,IAGIiD,EAHAC,EAAUV,EAAoBpB,EAAWD,GACzCgC,EAAS/B,EAAUpD,oBAAsBmD,EAASnD,oBAClDoF,EAAU5K,KAAKC,MAAMyK,EAAU,IAAMC,EAGzC,GAAIC,EAAU,EACZ,OAAI/X,EAAQgY,eACNH,EAAU,EACLL,EAAS,mBAAoB,EAAGE,GAC9BG,EAAU,GACZL,EAAS,mBAAoB,GAAIE,GAC/BG,EAAU,GACZL,EAAS,mBAAoB,GAAIE,GAC/BG,EAAU,GACZL,EAAS,cAAe,KAAME,GAE9BF,EADEK,EAAU,GACH,mBAEA,WAFoB,EAAGH,GAKzB,IAAZK,EACKP,EAAS,mBAAoB,EAAGE,GAEhCF,EAAS,WAAYO,EAASL,GAIpC,GAAIK,EAAU,GACnB,OAAOP,EAAS,WAAYO,EAASL,GAChC,GAAIK,EAAU,GACnB,OAAOP,EAAS,cAAe,EAAGE,GAC7B,GAAIK,EA/IQ,KAiJjB,OAAOP,EAAS,cADJrK,KAAKC,MAAM2K,EAAU,IACKL,GACjC,GAAIK,EAjJoB,KAkJ7B,OAAOP,EAAS,QAAS,EAAGE,GACvB,GAAIK,EAAUV,EAEnB,OAAOG,EAAS,QADLrK,KAAKC,MAAM2K,EArJL,MAsJcL,GAC1B,GAAIK,EApJe,MAsJxB,OAAOP,EAAS,eADhBI,EAASzK,KAAKC,MAAM2K,EAAUV,GACUK,GAK1C,IAFAE,EAASb,EAAmBhB,EAAWD,IAE1B,GAEX,OAAO0B,EAAS,UADGrK,KAAKC,MAAM2K,EAAUV,GACCK,GAEzC,IAAIO,EAAyBL,EAAS,GAClCM,EAAQ/K,KAAKiC,MAAMwI,EAAS,IAEhC,OAAIK,EAAyB,EACpBT,EAAS,cAAeU,EAAOR,GAC7BO,EAAyB,EAC3BT,EAAS,aAAcU,EAAOR,GAE9BF,EAAS,eAAgBU,EAAQ,EAAGR,K,sBCpLjD,IAAIR,EAAc,EAAQ,KAEtBrE,EAAQ,EAAQ,MAEhBsE,EAAsB,EAAQ,OAE9BC,EAAW,EAAQ,OAInBe,EAAkB,OA6JtBxb,EAAOC,QAvEP,SAA+B+X,EAAoBrC,EAAW4D,GAC5D,IAAIlW,EAAUkW,GAAgB,GAC1BoB,EAAaJ,EAAYvC,EAAoBrC,GAC7CiF,EAASvX,EAAQuX,OACjBC,EAAWJ,EAASK,gBAAgBD,SAEpCD,GAAUA,EAAOE,iBAAmBF,EAAOE,gBAAgBD,WAC7DA,EAAWD,EAAOE,gBAAgBD,UAGpC,IAII1B,EAAUC,EAUVqC,EAdAV,EAAkB,CACpBC,UAAWnW,QAAQxB,EAAQ2X,WAC3BL,WAAYA,GAIVA,EAAa,GACfxB,EAAWjD,EAAM8B,GACjBoB,EAAYlD,EAAMP,KAElBwD,EAAWjD,EAAMP,GACjByD,EAAYlD,EAAM8B,IAIpB,IAAI0D,EAAclL,KAAKnN,EAAQsY,cAAgBC,OAAOvY,EAAQsY,eAAiB,SAC3ET,EAAUV,EAAoBpB,EAAWD,GACzCgC,EAAS/B,EAAUpD,oBAAsBmD,EAASnD,oBAClDoF,EAAUM,EAAYR,EAAU,IAAMC,EAsB1C,GAAa,OAlBXM,EADEpY,EAAQoY,KACHG,OAAOvY,EAAQoY,MAElBL,EAAU,EACL,IACEA,EAAU,GACZ,IACEA,EA9HM,KA+HR,IACEA,EA/HQ,MAgIV,IACEA,EAAUI,EACZ,IAEA,KAMT,OAAOX,EAAS,WAAYK,EAASH,GAChC,GAAa,MAATU,EACT,OAAOZ,EAAS,WAAYO,EAASL,GAChC,GAAa,MAATU,EAET,OAAOZ,EAAS,SADRa,EAAYN,EAAU,IACGL,GAC5B,GAAa,MAATU,EAET,OAAOZ,EAAS,QADTa,EAAYN,EAlJF,MAmJcL,GAC1B,GAAa,MAATU,EAET,OAAOZ,EAAS,UADPa,EAAYN,EApJF,OAqJgBL,GAC9B,GAAa,MAATU,EAET,OAAOZ,EAAS,SADRa,EAAYN,EAAUI,GACGT,GAGnC,MAAM,IAAIrS,MAAM,iBAAmB+S,K,sBCpKrC,IAAIX,EAAkB,EAAQ,OAqF9B9a,EAAOC,QAJP,SAA8B0V,EAAW4D,GACvC,OAAOuB,EAAgBjF,KAAKgG,MAAOlG,EAAW4D,K,sBClFhD,IAAIrD,EAAQ,EAAQ,MAoDpBlW,EAAOC,QAtBP,SAAiB6b,EAAgBC,EAAcC,GAC7C,IAAIC,EAAY/F,EAAM4F,GAElBI,OAAqB5R,IAAd0R,EAA0BA,EAAY,EAC7CG,EAFUjG,EAAM6F,GAEEjG,UAEtB,GAAImG,EAAUnG,UAAYqG,EACxB,MAAM,IAAIzT,MAAM,kDAGlB,IAAI0T,EAAQ,GACRhE,EAAc6D,EAGlB,IAFA7D,EAAYlB,SAAS,EAAG,EAAG,EAAG,GAEvBkB,EAAYtC,WAAaqG,GAC9BC,EAAMhV,KAAK8O,EAAMkC,IACjBA,EAAY9B,QAAQ8B,EAAY7B,UAAY2F,GAG9C,OAAOE,I,sBCjDT,IAAIlG,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAkB0V,GAChB,IAAIC,EAAOM,EAAMP,GAEjB,OADAC,EAAKsB,SAAS,GAAI,GAAI,GAAI,KACnBtB,I,sBCtBT,IAAIM,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAmB0V,GACjB,IAAIC,EAAOM,EAAMP,GAEjB,OADAC,EAAKyG,WAAW,GAAI,GAAI,KACjBzG,I,sBCtBT,IAAI0G,EAAY,EAAQ,MA2BxBtc,EAAOC,QANP,SAAsB0V,GACpB,OAAO2G,EAAU3G,EAAW,CAC1B4G,aAAc,M,sBCvBlB,IAAI9F,EAAa,EAAQ,MAErBuC,EAAiB,EAAQ,OAgC7BhZ,EAAOC,QAVP,SAAsB0V,GACpB,IAAI6G,EAAO/F,EAAWd,GAClB8G,EAA4B,IAAI5G,KAAK,GACzC4G,EAA0BzF,YAAYwF,EAAO,EAAG,EAAG,GACnDC,EAA0BvF,SAAS,EAAG,EAAG,EAAG,GAC5C,IAAItB,EAAOoD,EAAeyD,GAE1B,OADA7G,EAAK8G,gBAAgB9G,EAAK+G,kBAAoB,GACvC/G,I,sBC/BT,IAAIM,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAqB0V,GACnB,IAAIC,EAAOM,EAAMP,GAEjB,OADAC,EAAKK,WAAW,GAAI,KACbL,I,sBCtBT,IAAIM,EAAQ,EAAQ,MA2BpBlW,EAAOC,QARP,SAAoB0V,GAClB,IAAIC,EAAOM,EAAMP,GACbiH,EAAQhH,EAAKkB,WAGjB,OAFAlB,EAAKoB,YAAYpB,EAAKqB,cAAe2F,EAAQ,EAAG,GAChDhH,EAAKsB,SAAS,GAAI,GAAI,GAAI,KACnBtB,I,mBCxBT,IAAIM,EAAQ,EAAQ,MA4BpBlW,EAAOC,QATP,SAAsB0V,GACpB,IAAIC,EAAOM,EAAMP,GACbkH,EAAejH,EAAKkB,WACpB8F,EAAQC,EAAeA,EAAe,EAAI,EAG9C,OAFAjH,EAAKwB,SAASwF,EAAO,GACrBhH,EAAKsB,SAAS,GAAI,GAAI,GAAI,KACnBtB,I,sBCzBT,IAAIM,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAqB0V,GACnB,IAAIC,EAAOM,EAAMP,GAEjB,OADAC,EAAK8G,gBAAgB,KACd9G,I,sBCtBT,IAAIkH,EAAW,EAAQ,OAqBvB9c,EAAOC,QAJP,WACE,OAAO6c,EAAS,IAAIjH,Q,iBCOtB7V,EAAOC,QAXP,WACE,IAAI4b,EAAM,IAAIhG,KACV2G,EAAOX,EAAI5E,cACX2F,EAAQf,EAAI/E,WACZiG,EAAMlB,EAAItF,UACVX,EAAO,IAAIC,KAAK,GAGpB,OAFAD,EAAKoB,YAAYwF,EAAMI,EAAOG,EAAM,GACpCnH,EAAKsB,SAAS,GAAI,GAAI,GAAI,KACnBtB,I,qBCtBT,IAAIM,EAAQ,EAAQ,MAoCpBlW,EAAOC,QAVP,SAAmB0V,EAAW4D,GAC5B,IAAIgD,EAAehD,GAAelD,OAAOkD,EAAagD,eAAqB,EACvE3G,EAAOM,EAAMP,GACboH,EAAMnH,EAAKoH,SACXjD,EAAuC,GAA/BgD,EAAMR,GAAgB,EAAI,IAAUQ,EAAMR,GAGtD,OAFA3G,EAAKU,QAAQV,EAAKW,UAAYwD,GAC9BnE,EAAKsB,SAAS,GAAI,GAAI,GAAI,KACnBtB,I,sBCjCT,IAAIM,EAAQ,EAAQ,MA2BpBlW,EAAOC,QARP,SAAmB0V,GACjB,IAAIC,EAAOM,EAAMP,GACb6G,EAAO5G,EAAKqB,cAGhB,OAFArB,EAAKoB,YAAYwF,EAAO,EAAG,EAAG,GAC9B5G,EAAKsB,SAAS,GAAI,GAAI,GAAI,KACnBtB,I,kBCCT5V,EAAOC,QAXP,WACE,IAAI4b,EAAM,IAAIhG,KACV2G,EAAOX,EAAI5E,cACX2F,EAAQf,EAAI/E,WACZiG,EAAMlB,EAAItF,UACVX,EAAO,IAAIC,KAAK,GAGpB,OAFAD,EAAKoB,YAAYwF,EAAMI,EAAOG,EAAM,GACpCnH,EAAKsB,SAAS,GAAI,GAAI,GAAI,KACnBtB,I,sBCtBT,IAAIqH,EAAe,EAAQ,OAEvBC,EAAa,EAAQ,OAErBzG,EAAa,EAAQ,MAErBP,EAAQ,EAAQ,MAEhBiH,EAAU,EAAQ,OAElB1C,EAAW,EAAQ,OA+GvB,IAAI2C,EAAa,CAEf,EAAK,SAAWxH,GACd,OAAOA,EAAKkB,WAAa,GAG3B,GAAM,SAAYlB,GAChB,OAAOyH,EAAgBzH,EAAKkB,WAAa,EAAG,IAG9C,EAAK,SAAWlB,GACd,OAAOpF,KAAKwJ,MAAMpE,EAAKkB,WAAa,GAAK,IAG3C,EAAK,SAAWlB,GACd,OAAOA,EAAKW,WAGd,GAAM,SAAYX,GAChB,OAAOyH,EAAgBzH,EAAKW,UAAW,IAGzC,IAAO,SAAaX,GAClB,OAAOqH,EAAarH,IAGtB,KAAQ,SAAcA,GACpB,OAAOyH,EAAgBJ,EAAarH,GAAO,IAG7C,EAAK,SAAWA,GACd,OAAOA,EAAKoH,UAGd,EAAK,SAAWpH,GACd,OAAOA,EAAKoH,UAAY,GAG1B,EAAK,SAAWpH,GACd,OAAOsH,EAAWtH,IAGpB,GAAM,SAAYA,GAChB,OAAOyH,EAAgBH,EAAWtH,GAAO,IAG3C,GAAM,SAAYA,GAChB,OAAOyH,EAAgBzH,EAAKqB,cAAe,GAAGqG,OAAO,IAGvD,KAAQ,SAAc1H,GACpB,OAAOyH,EAAgBzH,EAAKqB,cAAe,IAG7C,GAAM,SAAYrB,GAChB,OAAOgG,OAAOnF,EAAWb,IAAO0H,OAAO,IAGzC,KAAQ,SAAc1H,GACpB,OAAOa,EAAWb,IAGpB,EAAK,SAAWA,GACd,OAAOA,EAAK2H,YAGd,GAAM,SAAY3H,GAChB,OAAOyH,EAAgBzH,EAAK2H,WAAY,IAG1C,EAAK,SAAW3H,GACd,IAAI4H,EAAQ5H,EAAK2H,WAEjB,OAAc,IAAVC,EACK,GACEA,EAAQ,GACVA,EAAQ,GAERA,GAIX,GAAM,SAAY5H,GAChB,OAAOyH,EAAgBD,EAAc,EAAExH,GAAO,IAGhD,EAAK,SAAWA,GACd,OAAOA,EAAK6H,cAGd,GAAM,SAAY7H,GAChB,OAAOyH,EAAgBzH,EAAK6H,aAAc,IAG5C,EAAK,SAAW7H,GACd,OAAOA,EAAK8H,cAGd,GAAM,SAAY9H,GAChB,OAAOyH,EAAgBzH,EAAK8H,aAAc,IAG5C,EAAK,SAAW9H,GACd,OAAOpF,KAAKiC,MAAMmD,EAAK+G,kBAAoB,MAG7C,GAAM,SAAY/G,GAChB,OAAOyH,EAAgB7M,KAAKiC,MAAMmD,EAAK+G,kBAAoB,IAAK,IAGlE,IAAO,SAAa/G,GAClB,OAAOyH,EAAgBzH,EAAK+G,kBAAmB,IAGjD,EAAK,SAAW/G,GACd,OAAO+H,EAAe/H,EAAKI,oBAAqB,MAGlD,GAAM,SAAYJ,GAChB,OAAO+H,EAAe/H,EAAKI,sBAG7B,EAAK,SAAWJ,GACd,OAAOpF,KAAKiC,MAAMmD,EAAKE,UAAY,MAGrC,EAAK,SAAWF,GACd,OAAOA,EAAKE,YAmChB,SAAS8H,EAAuBC,GAC9B,OAAIA,EAAMlT,MAAM,YACPkT,EAAM5V,QAAQ,UAAW,IAG3B4V,EAAM5V,QAAQ,MAAO,IAG9B,SAAS0V,EAAexC,EAAQ2C,GAC9BA,EAAYA,GAAa,GACzB,IAAIlE,EAAOuB,EAAS,EAAI,IAAM,IAC1B4C,EAAYvN,KAAK8H,IAAI6C,GAErBC,EAAU2C,EAAY,GAC1B,OAAOnE,EAAOyD,EAFF7M,KAAKiC,MAAMsL,EAAY,IAEE,GAAKD,EAAYT,EAAgBjC,EAAS,GAGjF,SAASiC,EAAgBW,EAAQC,GAG/B,IAFA,IAAIC,EAAS1N,KAAK8H,IAAI0F,GAAQvc,WAEvByc,EAAO9d,OAAS6d,GACrBC,EAAS,IAAMA,EAGjB,OAAOA,EAGTle,EAAOC,QAtNP,SAAgB0V,EAAWwI,EAAgB5E,GACzC,IAAI6E,EAAYD,EAAiBvC,OAAOuC,GAAkB,2BAEtDvD,GADUrB,GAAgB,IACTqB,OACjByD,EAAmB5D,EAAS3L,OAAOsO,WACnCkB,EAAyB7D,EAAS3L,OAAOwP,uBAEzC1D,GAAUA,EAAO9L,QAAU8L,EAAO9L,OAAOsO,aAC3CiB,EAAmBzD,EAAO9L,OAAOsO,WAE7BxC,EAAO9L,OAAOwP,yBAChBA,EAAyB1D,EAAO9L,OAAOwP,yBAI3C,IAAI1I,EAAOM,EAAMP,GAEjB,OAAKwH,EAAQvH,GA2If,SAAuBwI,EAAWC,EAAkBC,GAClD,IAEIje,EACAke,EAHAC,EAAQJ,EAAUzT,MAAM2T,GACxBle,EAASoe,EAAMpe,OAInB,IAAKC,EAAI,EAAGA,EAAID,EAAQC,IACtBke,EAAYF,EAAiBG,EAAMne,KAAO+c,EAAWoB,EAAMne,IAGzDme,EAAMne,GADJke,GAGSX,EAAuBY,EAAMne,IAI5C,OAAO,SAAUuV,GAGf,IAFA,IAAIsI,EAAS,GAEJ7d,EAAI,EAAGA,EAAID,EAAQC,IACtBme,EAAMne,aAAcoe,SACtBP,GAAUM,EAAMne,GAAGuV,EAAMwH,GAEzBc,GAAUM,EAAMne,GAIpB,OAAO6d,GAlKMQ,CAAcN,EAAWC,EAAkBC,EACnDK,CAAS/I,GAJP,iB,sBClHX,IAAIM,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAiB0V,GAGf,OAFWO,EAAMP,GACKY,Y,sBCpBxB,IAAIL,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAgB0V,GAGd,OAFWO,EAAMP,GACFqH,W,sBCpBjB,IAAI9G,EAAQ,EAAQ,MAEhB0I,EAAc,EAAQ,OAEtBlF,EAA2B,EAAQ,OAyBvC1Z,EAAOC,QAPP,SAAsB0V,GACpB,IAAIC,EAAOM,EAAMP,GAGjB,OAFW+D,EAAyB9D,EAAMgJ,EAAYhJ,IAC/B,I,qBCzBzB,IAAIM,EAAQ,EAAQ,MA4BpBlW,EAAOC,QAVP,SAAwB0V,GACtB,IAAIC,EAAOM,EAAMP,GACb6G,EAAO5G,EAAKqB,cACZ4H,EAAajJ,EAAKkB,WAClBgI,EAAiB,IAAIjJ,KAAK,GAG9B,OAFAiJ,EAAe9H,YAAYwF,EAAMqC,EAAa,EAAG,GACjDC,EAAe5H,SAAS,EAAG,EAAG,EAAG,GAC1B4H,EAAevI,Y,sBCzBxB,IAAIwI,EAAa,EAAQ,OAsBzB/e,EAAOC,QAJP,SAAuB0V,GACrB,OAAOoJ,EAAWpJ,GAAa,IAAM,M,sBCnBvC,IAAIO,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAkB0V,GAGhB,OAFWO,EAAMP,GACA4H,a,sBCpBnB,IAAIrH,EAAQ,EAAQ,MAgCpBlW,EAAOC,QAXP,SAAmB0V,GACjB,IACIoH,EADO7G,EAAMP,GACFqH,SAMf,OAJY,IAARD,IACFA,EAAM,GAGDA,I,sBC7BT,IAAI7G,EAAQ,EAAQ,MAEhB8C,EAAiB,EAAQ,OAEzBgG,EAAiB,EAAQ,MA8B7Bhf,EAAOC,QATP,SAAoB0V,GAClB,IAAIC,EAAOM,EAAMP,GACboE,EAAOf,EAAepD,GAAME,UAAYkJ,EAAepJ,GAAME,UAIjE,OAAOtF,KAAKC,MAAMsJ,EAzBO,QAyBwB,I,sBC/BnD,IAAIiF,EAAiB,EAAQ,MAEzBC,EAAW,EAAQ,MA+BvBjf,EAAOC,QAVP,SAA2B0V,GACzB,IAAIuJ,EAAWF,EAAerJ,GAE1BoE,EADWiF,EAAeC,EAASC,EAAU,KAC7BC,UAAYD,EAASC,UAIzC,OAAO3O,KAAKC,MAAMsJ,EA1BO,U,qBCJ3B,IAAI7D,EAAQ,EAAQ,MAEhB8C,EAAiB,EAAQ,OA0C7BhZ,EAAOC,QArBP,SAAoB0V,GAClB,IAAIC,EAAOM,EAAMP,GACb6G,EAAO5G,EAAKqB,cACZwF,EAA4B,IAAI5G,KAAK,GACzC4G,EAA0BzF,YAAYwF,EAAO,EAAG,EAAG,GACnDC,EAA0BvF,SAAS,EAAG,EAAG,EAAG,GAC5C,IAAIkI,EAAkBpG,EAAeyD,GACjC4C,EAA4B,IAAIxJ,KAAK,GACzCwJ,EAA0BrI,YAAYwF,EAAM,EAAG,GAC/C6C,EAA0BnI,SAAS,EAAG,EAAG,EAAG,GAC5C,IAAIoI,EAAkBtG,EAAeqG,GAErC,OAAIzJ,EAAKE,WAAasJ,EAAgBtJ,UAC7B0G,EAAO,EACL5G,EAAKE,WAAawJ,EAAgBxJ,UACpC0G,EAEAA,EAAO,I,sBCxClB,IAAItG,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAyB0V,GAGvB,OAFWO,EAAMP,GACOgH,oB,sBCpB1B,IAAIzG,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAoB0V,GAGlB,OAFWO,EAAMP,GACE8H,e,sBCpBrB,IAAIvH,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAkB0V,GAGhB,OAFWO,EAAMP,GACAmB,a,sBCpBnB,IAAIZ,EAAQ,EAAQ,MAsDpBlW,EAAOC,QAtBP,SAAoCuX,EAA4BC,EAA0BC,EAA6BC,GACrH,IAAIC,EAAmB1B,EAAMsB,GAA4B1B,UACrD+B,EAAiB3B,EAAMuB,GAA0B3B,UACjDgC,EAAoB5B,EAAMwB,GAA6B5B,UACvDiC,EAAkB7B,EAAMyB,GAA2B7B,UAEvD,GAAI8B,EAAmBC,GAAkBC,EAAoBC,EAC3D,MAAM,IAAIrP,MAAM,+DAKlB,KAFoBkP,EAAmBG,GAAmBD,EAAoBD,GAG5E,OAAO,EAGT,IAEI0H,GADiBxH,EAAkBF,EAAiBA,EAAiBE,IADlDD,EAAoBF,EAAmBA,EAAmBE,GAGjF,OAAOtH,KAAKwJ,KAAKuF,EAjDO,S,sBCF1B,IAAIrJ,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAoB0V,GAClB,IAAIC,EAAOM,EAAMP,GAEjB,OADcnF,KAAKiC,MAAMmD,EAAKkB,WAAa,GAAK,I,sBCpBlD,IAAIZ,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAoB0V,GAGlB,OAFWO,EAAMP,GACE+H,e,sBCpBrB,IAAIxH,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAiB0V,GAGf,OAFWO,EAAMP,GACIG,Y,sBCpBvB,IAAII,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAiB0V,GAGf,OAFWO,EAAMP,GACDsB,gB,sBCpBlBjX,EAAOC,QAAU,CACfsX,QAAS,EAAQ,OACjBiI,SAAU,EAAQ,MAClBC,YAAa,EAAQ,OACrBjJ,gBAAiB,EAAQ,OACzBkJ,WAAY,EAAQ,OACpBpI,UAAW,EAAQ,OACnBqI,YAAa,EAAQ,OACrBC,WAAY,EAAQ,OACpBX,SAAU,EAAQ,MAClBY,SAAU,EAAQ,OAClBC,qBAAsB,EAAQ,OAC9BC,eAAgB,EAAQ,OACxBC,UAAW,EAAQ,OACnBrG,WAAY,EAAQ,OACpBY,YAAa,EAAQ,KACrBb,yBAA0B,EAAQ,OAClCuG,6BAA8B,EAAQ,OACtChG,6BAA8B,EAAQ,OACtCE,2BAA4B,EAAQ,OACpC+F,6BAA8B,EAAQ,OACtCC,0BAA2B,EAAQ,OACnC7F,0BAA2B,EAAQ,OACnCD,iBAAkB,EAAQ,OAC1B+F,kBAAmB,EAAQ,OAC3BC,qBAAsB,EAAQ,OAC9BvG,yBAA0B,EAAQ,OAClCwG,oBAAqB,EAAQ,OAC7BlG,mBAAoB,EAAQ,OAC5BmG,qBAAsB,EAAQ,OAC9B/F,oBAAqB,EAAQ,OAC7BgG,kBAAmB,EAAQ,OAC3BC,kBAAmB,EAAQ,OAC3B3F,gBAAiB,EAAQ,OACzB4F,sBAAuB,EAAQ,OAC/BC,qBAAsB,EAAQ,OAC9BC,QAAS,EAAQ,OACjB9D,SAAU,EAAQ,OAClB+D,UAAW,EAAQ,OACnBC,aAAc,EAAQ,OACtBC,aAAc,EAAQ,OACtBC,YAAa,EAAQ,OACrBC,WAAY,EAAQ,OACpBC,aAAc,EAAQ,IACtBC,YAAa,EAAQ,OACrBC,WAAY,EAAQ,OACpBC,cAAe,EAAQ,MACvB/E,UAAW,EAAQ,MACnBgF,UAAW,EAAQ,OACnBC,eAAgB,EAAQ,OACxBzS,OAAQ,EAAQ,OAChByH,QAAS,EAAQ,OACjByG,OAAQ,EAAQ,OAChBC,aAAc,EAAQ,OACtBrG,eAAgB,EAAQ,MACxB4K,cAAe,EAAQ,OACvBjE,SAAU,EAAQ,OAClBkE,UAAW,EAAQ,OACnBvE,WAAY,EAAQ,OACpBwE,kBAAmB,EAAQ,OAC3BjL,WAAY,EAAQ,MACpBkG,gBAAiB,EAAQ,OACzBc,WAAY,EAAQ,OACpB3G,SAAU,EAAQ,OAClB6K,2BAA4B,EAAQ,OACpCtI,WAAY,EAAQ,OACpBqE,WAAY,EAAQ,OACpB5H,QAAS,EAAQ,OACjB8L,QAAS,EAAQ,OACjBC,QAAS,EAAQ,OACjBC,SAAU,EAAQ,OAClBC,OAAQ,EAAQ,OAChBC,QAAS,EAAQ,OACjBC,kBAAmB,EAAQ,OAC3BC,SAAU,EAAQ,OAClBC,SAAU,EAAQ,OAClBC,iBAAkB,EAAQ,OAC1BrD,WAAY,EAAQ,OACpBsD,SAAU,EAAQ,OAClBC,OAAQ,EAAQ,OAChBC,UAAW,EAAQ,OACnBC,WAAY,EAAQ,OACpBC,cAAe,EAAQ,OACvBC,cAAe,EAAQ,OACvBC,aAAc,EAAQ,OACtBC,YAAa,EAAQ,OACrBC,cAAe,EAAQ,OACvBC,aAAc,EAAQ,MACtBC,WAAY,EAAQ,OACpBC,WAAY,EAAQ,OACpBC,WAAY,EAAQ,OACpBC,SAAU,EAAQ,MAClBC,WAAY,EAAQ,OACpBC,cAAe,EAAQ,MACvBC,cAAe,EAAQ,OACvBC,aAAc,EAAQ,OACtBC,YAAa,EAAQ,OACrBC,cAAe,EAAQ,OACvBC,aAAc,EAAQ,OACtBC,WAAY,EAAQ,OACpBC,WAAY,EAAQ,OACpBC,WAAY,EAAQ,OACpBC,QAAS,EAAQ,OACjBC,WAAY,EAAQ,OACpBC,UAAW,EAAQ,OACnB5G,QAAS,EAAQ,OACjB6G,YAAa,EAAQ,OACrBC,UAAW,EAAQ,OACnBC,cAAe,EAAQ,OACvBC,YAAa,EAAQ,OACrBC,iBAAkB,EAAQ,OAC1BC,iBAAkB,EAAQ,OAC1BvF,eAAgB,EAAQ,OACxBwF,iBAAkB,EAAQ,OAC1BC,cAAe,EAAQ,OACvBC,cAAe,EAAQ,OACvBhS,IAAK,EAAQ,OACb6E,IAAK,EAAQ,OACbnB,MAAO,EAAQ,MACfI,QAAS,EAAQ,OACjBmO,OAAQ,EAAQ,OAChBC,aAAc,EAAQ,OACtBxN,SAAU,EAAQ,MAClByN,UAAW,EAAQ,OACnBC,WAAY,EAAQ,OACpBlO,WAAY,EAAQ,OACpBgG,gBAAiB,EAAQ,OACzBL,WAAY,EAAQ,OACpBjF,SAAU,EAAQ,OAClByN,WAAY,EAAQ,OACpB5O,WAAY,EAAQ,OACpB6O,QAAS,EAAQ,OACjBnM,WAAY,EAAQ,MACpBoM,YAAa,EAAQ,OACrB/L,eAAgB,EAAQ,OACxBgG,eAAgB,EAAQ,MACxBgG,cAAe,EAAQ,OACvBC,aAAc,EAAQ,OACtBC,eAAgB,EAAQ,OACxBC,cAAe,EAAQ,OACvBC,aAAc,EAAQ,OACtBC,gBAAiB,EAAQ,OACzB/L,YAAa,EAAQ,OACrBsF,YAAa,EAAQ,OACrB0G,iBAAkB,EAAQ,OAC1BC,QAAS,EAAQ,OACjBC,SAAU,EAAQ,MAClBtL,YAAa,EAAQ,OACrBuL,gBAAiB,EAAQ,OACzBC,WAAY,EAAQ,OACpBC,UAAW,EAAQ,MACnBC,YAAa,EAAQ,OACrBC,WAAY,EAAQ,OACpBC,SAAU,EAAQ,MAClBC,SAAU,EAAQ,S,sBC1JpB,IAAI7P,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAiB0V,EAAWqC,GAC1B,IAAIpC,EAAOM,EAAMP,GACbqQ,EAAgB9P,EAAM8B,GAC1B,OAAOpC,EAAKE,UAAYkQ,EAAclQ,Y,sBCtBxC,IAAII,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAkB0V,EAAWqC,GAC3B,IAAIpC,EAAOM,EAAMP,GACbqQ,EAAgB9P,EAAM8B,GAC1B,OAAOpC,EAAKE,UAAYkQ,EAAclQ,Y,kBCHxC9V,EAAOC,QAJP,SAAgBgmB,GACd,OAAOA,aAAoBpQ,O,sBChB7B,IAAIK,EAAQ,EAAQ,MA4BpBlW,EAAOC,QANP,SAAiBimB,EAAeC,GAC9B,IAAIhN,EAAWjD,EAAMgQ,GACjB9M,EAAYlD,EAAMiQ,GACtB,OAAOhN,EAASrD,YAAcsD,EAAUtD,Y,sBCzB1C,IAAII,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAA2B0V,GACzB,OAAsC,IAA/BO,EAAMP,GAAWY,Y,sBCnB1B,IAAIL,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAAkB0V,GAChB,OAAqC,IAA9BO,EAAMP,GAAWqH,W,sBCnB1B,IAAI9G,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAAkB0V,GAChB,OAAOO,EAAMP,GAAWG,WAAY,IAAID,MAAOC,Y,sBCnBjD,IAAII,EAAQ,EAAQ,MAEhB4G,EAAW,EAAQ,OAEnBmE,EAAa,EAAQ,OAuBzBjhB,EAAOC,QALP,SAA0B0V,GACxB,IAAIC,EAAOM,EAAMP,GACjB,OAAOmH,EAASlH,GAAME,YAAcmL,EAAWrL,GAAME,Y,sBCxBvD,IAAII,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAoB0V,GAClB,IACI6G,EADOtG,EAAMP,GACDsB,cAChB,OAAOuF,EAAO,KAAQ,GAAKA,EAAO,GAAM,GAAKA,EAAO,KAAQ,I,sBCrB9D,IAAItG,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAAkB0V,GAChB,OAAqC,IAA9BO,EAAMP,GAAWqH,W,sBCnB1B,IAAI9G,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAAgB0V,GACd,OAAOO,EAAMP,GAAWG,WAAY,IAAID,MAAOC,Y,sBCnBjD,IAAI6C,EAAa,EAAQ,MA4BzB3Y,EAAOC,QANP,SAAmBsY,EAAeC,GAChC,IAAI4N,EAAqBzN,EAAWJ,GAChC8N,EAAsB1N,EAAWH,GACrC,OAAO4N,EAAmBtQ,YAAcuQ,EAAoBvQ,Y,sBCzB9D,IAAIiP,EAAc,EAAQ,OA4B1B/kB,EAAOC,QANP,SAAoBsY,EAAeC,GACjC,IAAI8N,EAAsBvB,EAAYxM,GAClCgO,EAAuBxB,EAAYvM,GACvC,OAAO8N,EAAoBxQ,YAAcyQ,EAAqBzQ,Y,sBCzBhE,IAAIiN,EAAa,EAAQ,OA8BzB/iB,EAAOC,QANP,SAAuBsY,EAAeC,GACpC,OAAOuK,EAAWxK,EAAeC,EAAgB,CAC/C+D,aAAc,M,sBC1BlB,IAAIyC,EAAiB,EAAQ,MA8B7Bhf,EAAOC,QANP,SAAuBsY,EAAeC,GACpC,IAAIgO,EAAsBxH,EAAezG,GACrCkO,EAAuBzH,EAAexG,GAC1C,OAAOgO,EAAoB1Q,YAAc2Q,EAAqB3Q,Y,sBC3BhE,IAAIkP,EAAgB,EAAQ,OA6B5BhlB,EAAOC,QANP,SAAsBsY,EAAeC,GACnC,IAAIkO,EAAwB1B,EAAczM,GACtCoO,EAAyB3B,EAAcxM,GAC3C,OAAOkO,EAAsB5Q,YAAc6Q,EAAuB7Q,Y,sBC1BpE,IAAII,EAAQ,EAAQ,MA4BpBlW,EAAOC,QANP,SAAqBsY,EAAeC,GAClC,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GACtB,OAAOW,EAASlC,gBAAkBmC,EAAUnC,eAAiBkC,EAASrC,aAAesC,EAAUtC,a,sBCzBjG,IAAIoO,EAAiB,EAAQ,OA4B7BllB,EAAOC,QANP,SAAuBsY,EAAeC,GACpC,IAAIoO,EAAyB1B,EAAe3M,GACxCsO,EAA0B3B,EAAe1M,GAC7C,OAAOoO,EAAuB9Q,YAAc+Q,EAAwB/Q,Y,qBCzBtE,IAAIqP,EAAgB,EAAQ,OA6B5BnlB,EAAOC,QANP,SAAsBsY,EAAeC,GACnC,IAAIsO,EAAwB3B,EAAc5M,GACtCwO,EAAyB5B,EAAc3M,GAC3C,OAAOsO,EAAsBhR,YAAciR,EAAuBjR,Y,sBC1BpE,IAAIwD,EAAc,EAAQ,OAwC1BtZ,EAAOC,QANP,SAAoBsY,EAAeC,EAAgBe,GACjD,IAAIyN,EAAsB1N,EAAYf,EAAegB,GACjD0N,EAAuB3N,EAAYd,EAAgBe,GACvD,OAAOyN,EAAoBlR,YAAcmR,EAAqBnR,Y,sBCrChE,IAAII,EAAQ,EAAQ,MA4BpBlW,EAAOC,QANP,SAAoBsY,EAAeC,GACjC,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GACtB,OAAOW,EAASlC,gBAAkBmC,EAAUnC,gB,sBCzB9C,IAAIf,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAAoB0V,GAClB,OAAqC,IAA9BO,EAAMP,GAAWqH,W,qBCnB1B,IAAI9G,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAAkB0V,GAChB,OAAqC,IAA9BO,EAAMP,GAAWqH,W,sBCnB1B,IAAIwF,EAAa,EAAQ,OAuBzBxiB,EAAOC,QAJP,SAAoB0V,GAClB,OAAO6M,EAAW,IAAI3M,KAAQF,K,qBCpBhC,IAAI8M,EAAgB,EAAQ,OAwB5BziB,EAAOC,QAJP,SAAuB0V,GACrB,OAAO8M,EAAc,IAAI5M,KAAQF,K,sBCrBnC,IAAI+M,EAAgB,EAAQ,OAyB5B1iB,EAAOC,QAJP,SAAuB0V,GACrB,OAAO+M,EAAc,IAAI7M,KAAQF,K,sBCtBnC,IAAIgN,EAAe,EAAQ,OAuB3B3iB,EAAOC,QAJP,SAAsB0V,GACpB,OAAOgN,EAAa,IAAI9M,KAAQF,K,sBCpBlC,IAAIiN,EAAc,EAAQ,OAsB1B5iB,EAAOC,QAJP,SAAqB0V,GACnB,OAAOiN,EAAY,IAAI/M,KAAQF,K,sBCnBjC,IAAIkN,EAAgB,EAAQ,OAsB5B7iB,EAAOC,QAJP,SAAuB0V,GACrB,OAAOkN,EAAc,IAAIhN,KAAQF,K,sBCnBnC,IAAImN,EAAe,EAAQ,MAuB3B9iB,EAAOC,QAJP,SAAsB0V,GACpB,OAAOmN,EAAa,IAAIjN,KAAQF,K,sBCpBlC,IAAIoN,EAAa,EAAQ,OA8BzB/iB,EAAOC,QAJP,SAAoB0V,EAAW4D,GAC7B,OAAOwJ,EAAW,IAAIlN,KAAQF,EAAW4D,K,sBC3B3C,IAAIyJ,EAAa,EAAQ,OAsBzBhjB,EAAOC,QAJP,SAAoB0V,GAClB,OAAOqN,EAAW,IAAInN,KAAQF,K,sBCnBhC,IAAIO,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAAoB0V,GAClB,OAAqC,IAA9BO,EAAMP,GAAWqH,W,sBCnB1B,IAAIrE,EAAa,EAAQ,MAsBzB3Y,EAAOC,QAJP,SAAiB0V,GACf,OAAOgD,EAAWhD,GAAWG,YAAc6C,EAAW,IAAI9C,MAAQC,Y,sBCnBpE,IAAI6C,EAAa,EAAQ,MAwBzB3Y,EAAOC,QANP,SAAoB0V,GAClB,IAAIuR,EAAW,IAAIrR,KAEnB,OADAqR,EAAS5Q,QAAQ4Q,EAAS3Q,UAAY,GAC/BoC,EAAWhD,GAAWG,YAAc6C,EAAWuO,GAAUpR,Y,sBCrBlE,IAAII,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAAmB0V,GACjB,OAAqC,IAA9BO,EAAMP,GAAWqH,W,sBCnB1B,IAAI+E,EAAS,EAAQ,OAmCrB/hB,EAAOC,QARP,SAAiB0V,GACf,GAAIoM,EAAOpM,GACT,OAAQwR,MAAMxR,GAEd,MAAM,IAAI3U,UAAUS,SAASC,KAAKiU,GAAa,iC,sBC/BnD,IAAIO,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAAqB0V,GACnB,OAAqC,IAA9BO,EAAMP,GAAWqH,W,sBCnB1B,IAAI9G,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAmB0V,GACjB,IACIoH,EADO7G,EAAMP,GACFqH,SACf,OAAe,IAARD,GAAqB,IAARA,I,sBCrBtB,IAAI7G,EAAQ,EAAQ,MA0CpBlW,EAAOC,QAZP,SAAuB0V,EAAWmG,EAAgBC,GAChD,IAAIqL,EAAOlR,EAAMP,GAAWG,UACxBuR,EAAYnR,EAAM4F,GAAgBhG,UAClCqG,EAAUjG,EAAM6F,GAAcjG,UAElC,GAAIuR,EAAYlL,EACd,MAAM,IAAIzT,MAAM,+DAGlB,OAAO0e,GAAQC,GAAaD,GAAQjL,I,sBCvCtC,IAAIxD,EAAa,EAAQ,MAwBzB3Y,EAAOC,QANP,SAAqB0V,GACnB,IAAI2R,EAAY,IAAIzR,KAEpB,OADAyR,EAAUhR,QAAQgR,EAAU/Q,UAAY,GACjCoC,EAAWhD,GAAWG,YAAc6C,EAAW2O,GAAWxR,Y,sBCrBnE,IAAIyO,EAAgB,EAAQ,OA2B5BvkB,EAAOC,QANP,SAA0B0V,GACxB,OAAO4O,EAAc5O,EAAW,CAC9B4G,aAAc,M,sBCvBlB,IAAI9F,EAAa,EAAQ,MAErBuC,EAAiB,EAAQ,OAgC7BhZ,EAAOC,QAVP,SAA0B0V,GACxB,IAAI6G,EAAO/F,EAAWd,GAClB4R,EAAkB,IAAI1R,KAAK,GAC/B0R,EAAgBvQ,YAAYwF,EAAO,EAAG,EAAG,GACzC+K,EAAgBrQ,SAAS,EAAG,EAAG,EAAG,GAClC,IAAItB,EAAOoD,EAAeuO,GAE1B,OADA3R,EAAKU,QAAQV,EAAKW,UAAY,GACvBX,I,sBC/BT,IAAIM,EAAQ,EAAQ,MA2BpBlW,EAAOC,QARP,SAAwB0V,GACtB,IAAIC,EAAOM,EAAMP,GACbiH,EAAQhH,EAAKkB,WAGjB,OAFAlB,EAAKoB,YAAYpB,EAAKqB,cAAe2F,EAAQ,EAAG,GAChDhH,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,sBCxBT,IAAIM,EAAQ,EAAQ,MA4BpBlW,EAAOC,QATP,SAA0B0V,GACxB,IAAIC,EAAOM,EAAMP,GACbkH,EAAejH,EAAKkB,WACpB8F,EAAQC,EAAeA,EAAe,EAAI,EAG9C,OAFAjH,EAAKwB,SAASwF,EAAO,GACrBhH,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,sBCzBT,IAAIM,EAAQ,EAAQ,MAoCpBlW,EAAOC,QAVP,SAAuB0V,EAAW4D,GAChC,IAAIgD,EAAehD,GAAelD,OAAOkD,EAAagD,eAAqB,EACvE3G,EAAOM,EAAMP,GACboH,EAAMnH,EAAKoH,SACXjD,EAAuC,GAA/BgD,EAAMR,GAAgB,EAAI,IAAUQ,EAAMR,GAGtD,OAFA3G,EAAKsB,SAAS,EAAG,EAAG,EAAG,GACvBtB,EAAKU,QAAQV,EAAKW,UAAYwD,GACvBnE,I,sBCjCT,IAAIM,EAAQ,EAAQ,MA2BpBlW,EAAOC,QARP,SAAuB0V,GACrB,IAAIC,EAAOM,EAAMP,GACb6G,EAAO5G,EAAKqB,cAGhB,OAFArB,EAAKoB,YAAYwF,EAAO,EAAG,EAAG,GAC9B5G,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,kBCxBT,IAAI4R,EAAsB,CAAC,IAAK,KAAM,IAAK,IAAK,KAAM,MAAO,OAAQ,IAAK,IAAK,IAAK,KAAM,KAAM,OAAQ,KAAM,OAAQ,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,MAAO,IAAK,KAAM,IAAK,KAgBpMxnB,EAAOC,QAdP,SAAqCmd,GACnC,IAAIqK,EAAgB,GAEpB,IAAK,IAAIjkB,KAAO4Z,EACVA,EAAWpP,eAAexK,IAC5BikB,EAAcrgB,KAAK5D,GAIvB,IAAIkkB,EAAmBF,EAAoB9iB,OAAO+iB,GAAezhB,OAAO2hB,UAExE,OAD6B,IAAIC,OAAO,2BAAkCF,EAAiB3e,KAAK,KAAO,MAAO,O,kBCyEhH/I,EAAOC,QArFP,WACE,IAAI4nB,EAAwB,CAC1BC,iBAAkB,CAChBC,IAAK,qBACLC,MAAO,+BAETC,SAAU,CACRF,IAAK,WACLC,MAAO,qBAETE,YAAa,gBACbC,iBAAkB,CAChBJ,IAAK,qBACLC,MAAO,+BAETI,SAAU,CACRL,IAAK,WACLC,MAAO,qBAETK,YAAa,CACXN,IAAK,eACLC,MAAO,yBAETM,OAAQ,CACNP,IAAK,SACLC,MAAO,mBAETO,MAAO,CACLR,IAAK,QACLC,MAAO,kBAETQ,aAAc,CACZT,IAAK,gBACLC,MAAO,0BAETS,QAAS,CACPV,IAAK,UACLC,MAAO,oBAETU,YAAa,CACXX,IAAK,eACLC,MAAO,yBAETW,OAAQ,CACNZ,IAAK,SACLC,MAAO,mBAETY,WAAY,CACVb,IAAK,cACLC,MAAO,wBAETa,aAAc,CACZd,IAAK,gBACLC,MAAO,2BA2BX,MAAO,CACLnN,SAxBF,SAAkBiO,EAAOC,EAAO1lB,GAE9B,IAAIwM,EAUJ,OAXAxM,EAAUA,GAAW,GAInBwM,EAD0C,iBAAjCgY,EAAsBiB,GACtBjB,EAAsBiB,GACZ,IAAVC,EACAlB,EAAsBiB,GAAOf,IAE7BF,EAAsBiB,GAAOd,MAAM/f,QAAQ,YAAa8gB,GAG/D1lB,EAAQ2X,UACN3X,EAAQsX,WAAa,EAChB,MAAQ9K,EAERA,EAAS,OAIbA,M,qBC7EX,IAAImZ,EAA8B,EAAQ,OAiF1ChpB,EAAOC,QA/EP,WAKE,IAAIgpB,EAAc,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC5FC,EAAa,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YAC5HC,EAAgB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACrDC,EAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3DC,EAAe,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAClFC,EAAoB,CAAC,KAAM,MAC3BC,EAAoB,CAAC,KAAM,MAC3BC,EAAe,CAAC,OAAQ,QACxBpM,EAAa,CAEf,IAAO,SAAaxH,GAClB,OAAOqT,EAAYrT,EAAKkB,aAG1B,KAAQ,SAAclB,GACpB,OAAOsT,EAAWtT,EAAKkB,aAGzB,GAAM,SAAYlB,GAChB,OAAOuT,EAAcvT,EAAKoH,WAG5B,IAAO,SAAapH,GAClB,OAAOwT,EAAcxT,EAAKoH,WAG5B,KAAQ,SAAcpH,GACpB,OAAOyT,EAAazT,EAAKoH,WAG3B,EAAK,SAAWpH,GACd,OAAOA,EAAK2H,WAAa,IAAM,EAAI+L,EAAkB,GAAKA,EAAkB,IAG9E,EAAK,SAAW1T,GACd,OAAOA,EAAK2H,WAAa,IAAM,EAAIgM,EAAkB,GAAKA,EAAkB,IAG9E,GAAM,SAAY3T,GAChB,OAAOA,EAAK2H,WAAa,IAAM,EAAIiM,EAAa,GAAKA,EAAa,KAUtE,MANwB,CAAC,IAAK,IAAK,MAAO,IAAK,IAAK,KAClC7iB,SAAQ,SAAU8iB,GAClCrM,EAAWqM,EAAiB,KAAO,SAAU7T,EAAMwH,GACjD,OASN,SAAiBY,GACf,IAAI0L,EAAS1L,EAAS,IAEtB,GAAI0L,EAAS,IAAMA,EAAS,GAC1B,OAAQA,EAAS,IACf,KAAK,EACH,OAAO1L,EAAS,KAElB,KAAK,EACH,OAAOA,EAAS,KAElB,KAAK,EACH,OAAOA,EAAS,KAItB,OAAOA,EAAS,KAzBL2L,CAAQvM,EAAWqM,GAAgB7T,QAGvC,CACLwH,WAAYA,EACZkB,uBAAwB0K,EAA4B5L,M,sBC1DxD,IAAIwM,EAA6B,EAAQ,OAErCC,EAAoB,EAAQ,MAOhC7pB,EAAOC,QAAU,CACf6a,gBAAiB8O,IACjB9a,OAAQ+a,M,sBCXV,IAAI3T,EAAQ,EAAQ,MAgCpBlW,EAAOC,QATP,WACE,IAAI6pB,EAAavpB,MAAMiB,UAAUG,MAAMD,KAAK2I,WACxC+R,EAAQ0N,EAAW1lB,KAAI,SAAUuR,GACnC,OAAOO,EAAMP,MAEXoU,EAAkBvZ,KAAKgC,IAAIvE,MAAM,KAAMmO,GAC3C,OAAO,IAAIvG,KAAKkU,K,sBC7BlB,IAAI7T,EAAQ,EAAQ,MAgCpBlW,EAAOC,QATP,WACE,IAAI6pB,EAAavpB,MAAMiB,UAAUG,MAAMD,KAAK2I,WACxC+R,EAAQ0N,EAAW1lB,KAAI,SAAUuR,GACnC,OAAOO,EAAMP,MAEXqU,EAAoBxZ,KAAK6G,IAAIpJ,MAAM,KAAMmO,GAC7C,OAAO,IAAIvG,KAAKmU,K,qBC7BlB,IAAIC,EAAkC,EAAQ,OAE1ClI,EAAS,EAAQ,OAEjBmI,EAAuB,KACvBC,EAAyB,IAEzBC,EAA8B,OAC9BC,EAAsB,IAEtBC,EAAe,YACfC,EAAiB,CAAC,gBACtB,gBACA,iBAEIC,EAAiB,WACjBC,EAAmB,CAAC,eACxB,eACA,gBAGIC,EAAe,aACfC,EAAgB,cAChBC,EAAiB,uBACjBC,EAAgB,eAChBC,EAAiB,wBAEjBC,EAAe,sBACfC,EAAiB,+BACjBC,EAAmB,wCAEnBC,EAAqB,aACrBC,EAAsB,QACtBC,EAAuB,kBACvBC,EAAyB,2BAyR7B,SAASC,EAAaC,EAASC,EAAMzO,GACnCyO,EAAOA,GAAQ,EACfzO,EAAMA,GAAO,EACb,IAAInH,EAAO,IAAIC,KAAK,GACpBD,EAAK6V,eAAeF,EAAS,EAAG,GAChC,IACIxR,EAAc,EAAPyR,EAAWzO,EAAM,GADHnH,EAAK8V,aAAe,GAG7C,OADA9V,EAAK+V,WAAW/V,EAAKgW,aAAe7R,GAC7BnE,EAGT5V,EAAOC,QAjQP,SAAegmB,EAAU1M,GACvB,GAAIwI,EAAOkE,GAET,OAAO,IAAIpQ,KAAKoQ,EAASnQ,WACpB,GAAwB,iBAAbmQ,EAChB,OAAO,IAAIpQ,KAAKoQ,GAGlB,IACI4F,GADUtS,GAAgB,IACCsS,iBAG7BA,EADsB,MAApBA,EA1E0B,EA6ETxV,OAAOwV,GAG5B,IAAIC,EAqCN,SAAyBC,GACvB,IAEIC,EAFAF,EAAc,GACdtN,EAAQuN,EAAWxkB,MAAM6iB,GAGzBC,EAAoBvoB,KAAK0c,EAAM,KACjCsN,EAAYlW,KAAO,KACnBoW,EAAaxN,EAAM,KAEnBsN,EAAYlW,KAAO4I,EAAM,GACzBwN,EAAaxN,EAAM,IAGrB,GAAIwN,EAAY,CACd,IAAIlD,EAAQoC,EAAmBe,KAAKD,GAEhClD,GACFgD,EAAY1E,KAAO4E,EAAW/jB,QAAQ6gB,EAAM,GAAI,IAChDgD,EAAYI,SAAWpD,EAAM,IAE7BgD,EAAY1E,KAAO4E,EAIvB,OAAOF,EA7DWK,CAAgBlG,GAC9BmG,EA+DN,SAAmBL,EAAYF,GAC7B,IAEI/C,EAFAuD,EAAgB9B,EAAesB,GAC/BS,EAAkB7B,EAAiBoB,GAKvC,GAFA/C,EAAQ0B,EAAeyB,KAAKF,IAAeO,EAAgBL,KAAKF,GAErD,CACT,IAAIQ,EAAazD,EAAM,GACvB,MAAO,CACLtM,KAAMgQ,SAASD,EAAY,IAC3BE,eAAgBV,EAAWpqB,MAAM4qB,EAAWnsB,SAOhD,GAFA0oB,EAAQwB,EAAa2B,KAAKF,IAAeM,EAAcJ,KAAKF,GAEjD,CACT,IAAIW,EAAgB5D,EAAM,GAC1B,MAAO,CACLtM,KAAoC,IAA9BgQ,SAASE,EAAe,IAC9BD,eAAgBV,EAAWpqB,MAAM+qB,EAActsB,SAKnD,MAAO,CACLoc,KAAM,MA3FcmQ,CAAUb,EAAYlW,KAAMiW,GAC9CrP,EAAO4P,EAAgB5P,KAEvB5G,EA4FN,SAAmBmW,EAAYvP,GAE7B,GAAa,OAATA,EACF,OAAO,KAGT,IAAIsM,EACAlT,EACAgH,EAGJ,GAA0B,IAAtBmP,EAAW3rB,OAGb,OAFAwV,EAAO,IAAIC,KAAK,IACX4V,eAAejP,GACb5G,EAMT,GAFAkT,EAAQ4B,EAAauB,KAAKF,GAMxB,OAHAnW,EAAO,IAAIC,KAAK,GAChB+G,EAAQ4P,SAAS1D,EAAM,GAAI,IAAM,EACjClT,EAAK6V,eAAejP,EAAMI,GACnBhH,EAMT,GAFAkT,EAAQ6B,EAAcsB,KAAKF,GAEhB,CACTnW,EAAO,IAAIC,KAAK,GAChB,IAAI+W,EAAYJ,SAAS1D,EAAM,GAAI,IAEnC,OADAlT,EAAK6V,eAAejP,EAAM,EAAGoQ,GACtBhX,EAMT,GAFAkT,EAAQ8B,EAAeqB,KAAKF,GAEjB,CACTnW,EAAO,IAAIC,KAAK,GAChB+G,EAAQ4P,SAAS1D,EAAM,GAAI,IAAM,EACjC,IAAI/L,EAAMyP,SAAS1D,EAAM,GAAI,IAE7B,OADAlT,EAAK6V,eAAejP,EAAMI,EAAOG,GAC1BnH,EAMT,GAFAkT,EAAQ+B,EAAcoB,KAAKF,GAIzB,OAAOT,EAAa9O,EADbgQ,SAAS1D,EAAM,GAAI,IAAM,GAOlC,GAFAA,EAAQgC,EAAemB,KAAKF,GAEjB,CAGT,OAAOT,EAAa9O,EAFbgQ,SAAS1D,EAAM,GAAI,IAAM,EAChB0D,SAAS1D,EAAM,GAAI,IAAM,GAK3C,OAAO,KA9JI+D,CADUT,EAAgBK,eACAjQ,GAErC,GAAI5G,EAAM,CACR,IAEIuF,EAFAxE,EAAYf,EAAKE,UACjBsR,EAAO,EAOX,GAJI0E,EAAY1E,OACdA,EAyJN,SAAmB4E,GACjB,IAAIlD,EACAtL,EACApC,EAIJ,GAFA0N,EAAQiC,EAAakB,KAAKD,GAIxB,OADAxO,EAAQsP,WAAWhE,EAAM,GAAG7gB,QAAQ,IAAK,OAC1B,GAAKiiB,EAMtB,GAFApB,EAAQkC,EAAeiB,KAAKD,GAK1B,OAFAxO,EAAQgP,SAAS1D,EAAM,GAAI,IAC3B1N,EAAU0R,WAAWhE,EAAM,GAAG7gB,QAAQ,IAAK,MACpCuV,EAAQ,GAAK0M,EAAuB9O,EAAU+O,EAMvD,GAFArB,EAAQmC,EAAiBgB,KAAKD,GAEnB,CACTxO,EAAQgP,SAAS1D,EAAM,GAAI,IAC3B1N,EAAUoR,SAAS1D,EAAM,GAAI,IAC7B,IAAI5N,EAAU4R,WAAWhE,EAAM,GAAG7gB,QAAQ,IAAK,MAC/C,OAAOuV,EAAQ,GAAK0M,EAAuB9O,EAAU+O,EAAmC,IAAVjP,EAIhF,OAAO,KAzLI6R,CAAUjB,EAAY1E,OAG3B0E,EAAYI,SACd/Q,EAwLN,SAAuB6R,GACrB,IAAIlE,EACAmE,EAIJ,GAFAnE,EAAQqC,EAAoBc,KAAKe,GAG/B,OAAO,EAMT,GAFAlE,EAAQsC,EAAqBa,KAAKe,GAIhC,OADAC,EAA0C,GAAzBT,SAAS1D,EAAM,GAAI,IAChB,MAAbA,EAAM,IAAcmE,EAAiBA,EAM9C,GAFAnE,EAAQuC,EAAuBY,KAAKe,GAIlC,OADAC,EAA0C,GAAzBT,SAAS1D,EAAM,GAAI,IAAW0D,SAAS1D,EAAM,GAAI,IAC9C,MAAbA,EAAM,IAAcmE,EAAiBA,EAG9C,OAAO,EAlNMC,CAAcpB,EAAYI,UAAY/B,MAC1C,CACL,IAAIgD,EAAWxW,EAAYyQ,EACvBgG,EAAe,IAAIvX,KAAKsX,GAC5BhS,EAAS8O,EAAgCmD,GAEzC,IAAIC,EAAsB,IAAIxX,KAAKsX,GACnCE,EAAoB/W,QAAQ8W,EAAa7W,UAAY,GACrD,IAAI+W,EAAarD,EAAgCoD,GAAuBpD,EAAgCmD,GAEpGE,EAAa,IACfnS,GAAUmS,GAId,OAAO,IAAIzX,KAAKc,EAAYyQ,EAAOjM,GAEnC,OAAO,IAAItF,KAAKoQ,K,sBCvHpB,IAAI/P,EAAQ,EAAQ,MA0BpBlW,EAAOC,QAPP,SAAiB0V,EAAW4X,GAC1B,IAAI3X,EAAOM,EAAMP,GACb6X,EAAanX,OAAOkX,GAExB,OADA3X,EAAKU,QAAQkX,GACN5X,I,sBCvBT,IAAIM,EAAQ,EAAQ,MAEhBqB,EAAU,EAAQ,OAqCtBvX,EAAOC,QAXP,SAAgB0V,EAAW8X,EAAUlU,GACnC,IAAIgD,EAAehD,GAAelD,OAAOkD,EAAagD,eAAqB,EACvE3G,EAAOM,EAAMP,GACboH,EAAM1G,OAAOoX,GACbC,EAAa9X,EAAKoH,SAItB,OAAOzF,EAAQ3B,IAHCmH,EAAM,EACM,GAAK,EACVR,EAAe,EAAI,GAAKQ,EAAM2Q,K,sBCnCvD,IAAIxX,EAAQ,EAAQ,MA2BpBlW,EAAOC,QARP,SAAsB0V,EAAWgY,GAC/B,IAAI/X,EAAOM,EAAMP,GACbiX,EAAYvW,OAAOsX,GAGvB,OAFA/X,EAAKwB,SAAS,GACdxB,EAAKU,QAAQsW,GACNhX,I,qBCxBT,IAAIM,EAAQ,EAAQ,MA0BpBlW,EAAOC,QAPP,SAAkB0V,EAAWiY,GAC3B,IAAIhY,EAAOM,EAAMP,GACb6H,EAAQnH,OAAOuX,GAEnB,OADAhY,EAAKsB,SAASsG,GACP5H,I,sBCvBT,IAAIM,EAAQ,EAAQ,MAEhBqB,EAAU,EAAQ,OAElBkK,EAAY,EAAQ,OA6BxBzhB,EAAOC,QARP,SAAmB0V,EAAW8X,GAC5B,IAAI7X,EAAOM,EAAMP,GACboH,EAAM1G,OAAOoX,GACbC,EAAajM,EAAU7L,GAE3B,OAAO2B,EAAQ3B,EADJmH,EAAM2Q,K,sBC7BnB,IAAIxX,EAAQ,EAAQ,MAEhBgH,EAAa,EAAQ,OA6BzBld,EAAOC,QARP,SAAoB0V,EAAWkY,GAC7B,IAAIjY,EAAOM,EAAMP,GACbmY,EAAUzX,OAAOwX,GACjB9T,EAAOmD,EAAWtH,GAAQkY,EAE9B,OADAlY,EAAKU,QAAQV,EAAKW,UAAmB,EAAPwD,GACvBnE,I,sBC5BT,IAAIM,EAAQ,EAAQ,MAEhB8I,EAAiB,EAAQ,MAEzBtF,EAA2B,EAAQ,OAkCvC1Z,EAAOC,QAZP,SAAoB0V,EAAWoY,GAC7B,IAAInY,EAAOM,EAAMP,GACb4V,EAAUlV,OAAO0X,GACjBhU,EAAOL,EAAyB9D,EAAMoJ,EAAepJ,IACrD2R,EAAkB,IAAI1R,KAAK,GAK/B,OAJA0R,EAAgBvQ,YAAYuU,EAAS,EAAG,GACxChE,EAAgBrQ,SAAS,EAAG,EAAG,EAAG,IAClCtB,EAAOoJ,EAAeuI,IACjBjR,QAAQV,EAAKW,UAAYwD,GACvBnE,I,sBCnCT,IAAIM,EAAQ,EAAQ,MA0BpBlW,EAAOC,QAPP,SAAyB0V,EAAWqY,GAClC,IAAIpY,EAAOM,EAAMP,GACbsY,EAAe5X,OAAO2X,GAE1B,OADApY,EAAK8G,gBAAgBuR,GACdrY,I,sBCvBT,IAAIM,EAAQ,EAAQ,MA0BpBlW,EAAOC,QAPP,SAAoB0V,EAAWuY,GAC7B,IAAItY,EAAOM,EAAMP,GACbyF,EAAU/E,OAAO6X,GAErB,OADAtY,EAAKyG,WAAWjB,GACTxF,I,sBCvBT,IAAIM,EAAQ,EAAQ,MAEhBU,EAAiB,EAAQ,MAkC7B5W,EAAOC,QAfP,SAAkB0V,EAAWwY,GAC3B,IAAIvY,EAAOM,EAAMP,GACbiH,EAAQvG,OAAO8X,GACf3R,EAAO5G,EAAKqB,cACZ8F,EAAMnH,EAAKW,UACXQ,EAAuB,IAAIlB,KAAK,GACpCkB,EAAqBC,YAAYwF,EAAMI,EAAO,IAC9C7F,EAAqBG,SAAS,EAAG,EAAG,EAAG,GACvC,IAAIC,EAAcP,EAAeG,GAIjC,OADAnB,EAAKwB,SAASwF,EAAOpM,KAAK6G,IAAI0F,EAAK5F,IAC5BvB,I,sBCjCT,IAAIM,EAAQ,EAAQ,MAEhBkB,EAAW,EAAQ,OA2BvBpX,EAAOC,QARP,SAAoB0V,EAAWyY,GAC7B,IAAIxY,EAAOM,EAAMP,GAGboE,EAFU1D,OAAO+X,IACJ5d,KAAKiC,MAAMmD,EAAKkB,WAAa,GAAK,GAEnD,OAAOM,EAASxB,EAAMA,EAAKkB,WAAoB,EAAPiD,K,sBC1B1C,IAAI7D,EAAQ,EAAQ,MA0BpBlW,EAAOC,QAPP,SAAoB0V,EAAW0Y,GAC7B,IAAIzY,EAAOM,EAAMP,GACbuF,EAAU7E,OAAOgY,GAErB,OADAzY,EAAKK,WAAWiF,GACTtF,I,sBCvBT,IAAIM,EAAQ,EAAQ,MA0BpBlW,EAAOC,QAPP,SAAiB0V,EAAW2Y,GAC1B,IAAI1Y,EAAOM,EAAMP,GACb6G,EAAOnG,OAAOiY,GAElB,OADA1Y,EAAKoB,YAAYwF,GACV5G,I,qBCvBT,IAAIM,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAoB0V,GAClB,IAAIC,EAAOM,EAAMP,GAEjB,OADAC,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,sBCtBT,IAAIM,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAqB0V,GACnB,IAAIC,EAAOM,EAAMP,GAEjB,OADAC,EAAKyG,WAAW,EAAG,EAAG,GACfzG,I,sBCtBT,IAAI0D,EAAc,EAAQ,OA2B1BtZ,EAAOC,QANP,SAAwB0V,GACtB,OAAO2D,EAAY3D,EAAW,CAC5B4G,aAAc,M,qBCvBlB,IAAI9F,EAAa,EAAQ,MAErBuC,EAAiB,EAAQ,OA+B7BhZ,EAAOC,QATP,SAAwB0V,GACtB,IAAI6G,EAAO/F,EAAWd,GAClB4R,EAAkB,IAAI1R,KAAK,GAI/B,OAHA0R,EAAgBvQ,YAAYwF,EAAM,EAAG,GACrC+K,EAAgBrQ,SAAS,EAAG,EAAG,EAAG,GACvB8B,EAAeuO,K,sBC7B5B,IAAIrR,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAuB0V,GACrB,IAAIC,EAAOM,EAAMP,GAEjB,OADAC,EAAKK,WAAW,EAAG,GACZL,I,sBCtBT,IAAIM,EAAQ,EAAQ,MA0BpBlW,EAAOC,QAPP,SAAsB0V,GACpB,IAAIC,EAAOM,EAAMP,GAGjB,OAFAC,EAAKU,QAAQ,GACbV,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,sBCvBT,IAAIM,EAAQ,EAAQ,MA4BpBlW,EAAOC,QATP,SAAwB0V,GACtB,IAAIC,EAAOM,EAAMP,GACbkH,EAAejH,EAAKkB,WACpB8F,EAAQC,EAAeA,EAAe,EAG1C,OAFAjH,EAAKwB,SAASwF,EAAO,GACrBhH,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,sBCzBT,IAAIM,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAuB0V,GACrB,IAAIC,EAAOM,EAAMP,GAEjB,OADAC,EAAK8G,gBAAgB,GACd9G,I,sBCtBT,IAAI+C,EAAa,EAAQ,MAqBzB3Y,EAAOC,QAJP,WACE,OAAO0Y,EAAW,IAAI9C,Q,kBCOxB7V,EAAOC,QAXP,WACE,IAAI4b,EAAM,IAAIhG,KACV2G,EAAOX,EAAI5E,cACX2F,EAAQf,EAAI/E,WACZiG,EAAMlB,EAAItF,UACVX,EAAO,IAAIC,KAAK,GAGpB,OAFAD,EAAKoB,YAAYwF,EAAMI,EAAOG,EAAM,GACpCnH,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,sBCtBT,IAAIM,EAAQ,EAAQ,MAoCpBlW,EAAOC,QAVP,SAAqB0V,EAAW4D,GAC9B,IAAIgD,EAAehD,GAAelD,OAAOkD,EAAagD,eAAqB,EACvE3G,EAAOM,EAAMP,GACboH,EAAMnH,EAAKoH,SACXjD,GAAQgD,EAAMR,EAAe,EAAI,GAAKQ,EAAMR,EAGhD,OAFA3G,EAAKU,QAAQV,EAAKW,UAAYwD,GAC9BnE,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,sBCjCT,IAAIM,EAAQ,EAAQ,MA2BpBlW,EAAOC,QARP,SAAqB0V,GACnB,IAAI4Y,EAAYrY,EAAMP,GAClBC,EAAO,IAAIC,KAAK,GAGpB,OAFAD,EAAKoB,YAAYuX,EAAUtX,cAAe,EAAG,GAC7CrB,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,kBCCT5V,EAAOC,QAXP,WACE,IAAI4b,EAAM,IAAIhG,KACV2G,EAAOX,EAAI5E,cACX2F,EAAQf,EAAI/E,WACZiG,EAAMlB,EAAItF,UACVX,EAAO,IAAIC,KAAK,GAGpB,OAFAD,EAAKoB,YAAYwF,EAAMI,EAAOG,EAAM,GACpCnH,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,sBCtBT,IAAI2B,EAAU,EAAQ,OAwBtBvX,EAAOC,QALP,SAAiB0V,EAAWQ,GAC1B,IAAIC,EAASC,OAAOF,GACpB,OAAOoB,EAAQ5B,GAAYS,K,qBCrB7B,IAAIoJ,EAAW,EAAQ,MAwBvBxf,EAAOC,QALP,SAAkB0V,EAAWQ,GAC3B,IAAIC,EAASC,OAAOF,GACpB,OAAOqJ,EAAS7J,GAAYS,K,sBCrB9B,IAAIqJ,EAAc,EAAQ,OA0B1Bzf,EAAOC,QALP,SAAqB0V,EAAWQ,GAC9B,IAAIC,EAASC,OAAOF,GACpB,OAAOsJ,EAAY9J,GAAYS,K,sBCvBjC,IAAII,EAAkB,EAAQ,OAwB9BxW,EAAOC,QALP,SAAyB0V,EAAWQ,GAClC,IAAIC,EAASC,OAAOF,GACpB,OAAOK,EAAgBb,GAAYS,K,sBCrBrC,IAAIsJ,EAAa,EAAQ,OAwBzB1f,EAAOC,QALP,SAAoB0V,EAAWQ,GAC7B,IAAIC,EAASC,OAAOF,GACpB,OAAOuJ,EAAW/J,GAAYS,K,qBCrBhC,IAAIkB,EAAY,EAAQ,OAwBxBtX,EAAOC,QALP,SAAmB0V,EAAWQ,GAC5B,IAAIC,EAASC,OAAOF,GACpB,OAAOmB,EAAU3B,GAAYS,K,sBCrB/B,IAAIuJ,EAAc,EAAQ,OAwB1B3f,EAAOC,QALP,SAAqB0V,EAAWQ,GAC9B,IAAIC,EAASC,OAAOF,GACpB,OAAOwJ,EAAYhK,GAAYS,K,sBCrBjC,IAAIwJ,EAAa,EAAQ,OAwBzB5f,EAAOC,QALP,SAAoB0V,EAAWQ,GAC7B,IAAIC,EAASC,OAAOF,GACpB,OAAOyJ,EAAWjK,GAAYS,K,qBCrBhC,IAAI6I,EAAW,EAAQ,MAwBvBjf,EAAOC,QALP,SAAkB0V,EAAWQ,GAC3B,IAAIC,EAASC,OAAOF,GACpB,OAAO8I,EAAStJ,GAAYS,K,sBCrB9B,IAAIyJ,EAAW,EAAQ,OAwBvB7f,EAAOC,QALP,SAAkB0V,EAAWQ,GAC3B,IAAIC,EAASC,OAAOF,GACpB,OAAO0J,EAASlK,GAAYS,K,8BCnB9B,IAAI0S,EAAQ,eACR0F,EAAgB,IAAI5G,OAAOkB,EAAO,MAClC2F,EAAe,IAAI7G,OAAO,IAAMkB,EAAQ,KAAM,MAElD,SAAS4F,EAAiBC,EAAYpnB,GACpC,IAEE,OAAOqnB,mBAAmBD,EAAW5lB,KAAK,KAC1C,MAAO8lB,IAGT,GAA0B,IAAtBF,EAAWvuB,OACb,OAAOuuB,EAGTpnB,EAAQA,GAAS,EAEjB,IAAIuI,EAAO6e,EAAWhtB,MAAM,EAAG4F,GAC3B0I,EAAQ0e,EAAWhtB,MAAM4F,GAC7B,OAAOhH,MAAMiB,UAAUkD,OAAOhD,KAAK,GAAIgtB,EAAiB5e,GAAO4e,EAAiBze,IAGlF,SAAS6e,EAAOjR,GACd,IACE,OAAO+Q,mBAAmB/Q,GAC1B,MAAOgR,GAGP,IAFA,IAAIE,EAASlR,EAAMlT,MAAM6jB,GAEhBnuB,EAAI,EAAGA,EAAI0uB,EAAO3uB,OAAQC,IAEjC0uB,GADAlR,EAAQ6Q,EAAiBK,EAAQ1uB,GAAG0I,KAAK,KAC1B4B,MAAM6jB,GAGvB,OAAO3Q,GAwCX7d,EAAOC,QAAU,SAAU+uB,GACzB,GAA0B,iBAAfA,EACT,MAAM,IAAIhuB,UAAU,6DAA+DguB,EAAa,KAGlG,IAGE,OAFAA,EAAaA,EAAW/mB,QAAQ,MAAO,KAEhC2mB,mBAAmBI,GAC1B,MAAOH,GAEP,OA/CJ,SAAkChR,GAQhC,IANA,IAAIoR,EAAa,CACf,SAAU,KACV,SAAU,MAERtkB,EAAQ8jB,EAAaxC,KAAKpO,GAEvBlT,GAAO,CACZ,IAEEskB,EAAWtkB,EAAM,IAAMikB,mBAAmBjkB,EAAM,IAChD,MAAOkkB,GACP,IAAIhf,EAASif,EAAOnkB,EAAM,IAEtBkF,IAAWlF,EAAM,KACnBskB,EAAWtkB,EAAM,IAAMkF,GAI3BlF,EAAQ8jB,EAAaxC,KAAKpO,GAI5BoR,EAAW,OAAS,IAGpB,IAFA,IAAIC,EAAUpuB,OAAO+H,KAAKomB,GAEjB5uB,EAAI,EAAGA,EAAI6uB,EAAQ9uB,OAAQC,IAAK,CAEvC,IAAImD,EAAM0rB,EAAQ7uB,GAClBwd,EAAQA,EAAM5V,QAAQ,IAAI2f,OAAOpkB,EAAK,KAAMyrB,EAAWzrB,IAGzD,OAAOqa,EAcEsR,CAAyBH,M,+BCpFpC,IAAII,EAAoB,SAA2B3rB,GACjD,OAGF,SAAyBA,GACvB,QAASA,GAA0B,iBAAVA,EAJlB4rB,CAAgB5rB,KAOzB,SAAmBA,GACjB,IAAI6rB,EAAcxuB,OAAOU,UAAUC,SAASC,KAAK+B,GACjD,MAAuB,oBAAhB6rB,GAAqD,kBAAhBA,GAO9C,SAAwB7rB,GACtB,OAAOA,EAAM8rB,WAAaC,EARqDC,CAAehsB,GAT5DisB,CAAUjsB,IAa9C,IACI+rB,EADiC,mBAAX5uB,QAAyBA,OAAO+uB,IAClB/uB,OAAO+uB,IAAI,iBAAmB,MAUtE,SAASC,EAA8BnsB,EAAOJ,GAC5C,OAAyB,IAAlBA,EAAQwsB,OAAmBxsB,EAAQ+rB,kBAAkB3rB,GAASqsB,GALlDC,EAKwEtsB,EAJpFlD,MAAMG,QAAQqvB,GAAO,GAAK,IAIkEtsB,EAAOJ,GAAWI,EALvH,IAAqBssB,EAQrB,SAASC,EAAkBliB,EAAQC,EAAQ1K,GACzC,OAAOyK,EAAOpJ,OAAOqJ,GAAQ3J,KAAI,SAAU6rB,GACzC,OAAOL,EAA8BK,EAAS5sB,MAmBlD,SAAS6sB,EAAQpiB,GACf,OAAOhN,OAAO+H,KAAKiF,GAAQpJ,OAP7B,SAAyCoJ,GACvC,OAAOhN,OAAOqvB,sBAAwBrvB,OAAOqvB,sBAAsBriB,GAAQ8D,QAAO,SAAUwe,GAC1F,OAAOtiB,EAAOuiB,qBAAqBD,MAChC,GAI6BE,CAAgCxiB,IAGpE,SAASyiB,EAAmBpjB,EAAQqjB,GAClC,IACE,OAAOA,KAAYrjB,EACnB,MAAOsjB,GACP,OAAO,GAWX,SAASC,EAAY5iB,EAAQC,EAAQ1K,GACnC,IAAIstB,EAAc,GAmBlB,OAjBIttB,EAAQ+rB,kBAAkBthB,IAC5BoiB,EAAQpiB,GAAQnH,SAAQ,SAAUnD,GAChCmtB,EAAYntB,GAAOosB,EAA8B9hB,EAAOtK,GAAMH,MAIlE6sB,EAAQniB,GAAQpH,SAAQ,SAAUnD,IAfpC,SAA0BsK,EAAQtK,GAChC,OAAO+sB,EAAmBziB,EAAQtK,MAC7B1C,OAAOkN,eAAetM,KAAKoM,EAAQtK,IACrC1C,OAAOuvB,qBAAqB3uB,KAAKoM,EAAQtK,KAatCotB,CAAiB9iB,EAAQtK,KAIzB+sB,EAAmBziB,EAAQtK,IAAQH,EAAQ+rB,kBAAkBrhB,EAAOvK,IACtEmtB,EAAYntB,GAjDlB,SAA0BA,EAAKH,GAC7B,IAAKA,EAAQwtB,YACX,OAAOf,EAGT,IAAIe,EAAcxtB,EAAQwtB,YAAYrtB,GACtC,MAA8B,mBAAhBqtB,EAA6BA,EAAcf,EA2ClCgB,CAAiBttB,EAAKH,EAAtBytB,CAA+BhjB,EAAOtK,GAAMuK,EAAOvK,GAAMH,GAE5EstB,EAAYntB,GAAOosB,EAA8B7hB,EAAOvK,GAAMH,OAG3DstB,EAGT,SAASb,EAAUhiB,EAAQC,EAAQ1K,IACjCA,EAAUA,GAAW,IACb0tB,WAAa1tB,EAAQ0tB,YAAcf,EAC3C3sB,EAAQ+rB,kBAAoB/rB,EAAQ+rB,mBAAqBA,EAGzD/rB,EAAQusB,8BAAgCA,EACxC,IAAIoB,EAAgBzwB,MAAMG,QAAQqN,GAIlC,OAFgCijB,IADZzwB,MAAMG,QAAQoN,GAKvBkjB,EACF3tB,EAAQ0tB,WAAWjjB,EAAQC,EAAQ1K,GAEnCqtB,EAAY5iB,EAAQC,EAAQ1K,GAJ5BusB,EAA8B7hB,EAAQ1K,GAQjDysB,EAAUmB,IAAM,SAAsBzS,EAAOnb,GAC3C,IAAK9C,MAAMG,QAAQ8d,GACjB,MAAM,IAAI9V,MAAM,qCAGlB,OAAO8V,EAAMlb,QAAO,SAAU4tB,EAAM3iB,GAClC,OAAOuhB,EAAUoB,EAAM3iB,EAAMlL,KAC5B,KAGL,IAAI8tB,EAAcrB,EAClB9vB,EAAOC,QAAUkxB,G,qBC5HjBnxB,EAAOC,QAAU,EAAjB,Q,mCCCA,IAAImxB,EAAkBljB,MAAQA,KAAKkjB,iBAAmB,SAAUC,GAC9D,OAAOA,GAAOA,EAAI7wB,WAAa6wB,EAAM,CACnC,QAAWA,IAIfvwB,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAGT,IAAI8tB,EAAUH,EAAgB,EAAQ,QAEtCnxB,EAAQuxB,QAAUD,EAAQC,QAAQ,W,mCCZlC,IAAIC,EAAWvjB,MAAQA,KAAKujB,UAAY,WAatC,OAZAA,EAAW3wB,OAAOiM,QAAU,SAAU2kB,GACpC,IAAK,IAAIC,EAAGtxB,EAAI,EAAGkB,EAAI8I,UAAUjK,OAAQC,EAAIkB,EAAGlB,IAG9C,IAAK,IAAIuxB,KAFTD,EAAItnB,UAAUhK,GAGRS,OAAOU,UAAUwM,eAAetM,KAAKiwB,EAAGC,KAAIF,EAAEE,GAAKD,EAAEC,IAI7D,OAAOF,IAGOzjB,MAAMC,KAAM7D,YAG1BwnB,EAAS3jB,MAAQA,KAAK2jB,QAAU,SAAUF,EAAGG,GAC/C,IAAIJ,EAAI,GAER,IAAK,IAAIE,KAAKD,EACR7wB,OAAOU,UAAUwM,eAAetM,KAAKiwB,EAAGC,IAAME,EAAElsB,QAAQgsB,GAAK,IAAGF,EAAEE,GAAKD,EAAEC,IAG/E,GAAS,MAALD,GAAqD,mBAAjC7wB,OAAOqvB,sBAA2C,KAAI9vB,EAAI,EAAb,IAAgBuxB,EAAI9wB,OAAOqvB,sBAAsBwB,GAAItxB,EAAIuxB,EAAExxB,OAAQC,IAClIyxB,EAAElsB,QAAQgsB,EAAEvxB,IAAM,GAAKS,OAAOU,UAAU6uB,qBAAqB3uB,KAAKiwB,EAAGC,EAAEvxB,MAAKqxB,EAAEE,EAAEvxB,IAAMsxB,EAAEC,EAAEvxB,KAEhG,OAAOqxB,GAGLN,EAAkBljB,MAAQA,KAAKkjB,iBAAmB,SAAUC,GAC9D,OAAOA,GAAOA,EAAI7wB,WAAa6wB,EAAM,CACnC,QAAWA,IAIfvwB,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAQ8xB,oBAAsB9xB,EAAQ+xB,oBAAsB/xB,EAAQgyB,wBAA0BhyB,EAAQiyB,oBAAsBjyB,EAAQkyB,mCAAgC,EAEpK,IAKIC,EALAC,EAAcjB,EAAgB,EAAQ,QAE1CnxB,EAAQkyB,8BAAgC,IACxClyB,EAAQiyB,oBAAsB,IAC9BjyB,EAAQgyB,wBAA0B,IAGlC,SAAWG,GACTA,EAAuB,UAAI,GAC3BA,EAAkB,KAAI,OACtBA,EAAiB,IAAI,MACrBA,EAAiB,IAAI,MAJvB,CAKGA,IAAgBA,EAAc,KAEjC,IAAIE,EAAY,sCACZC,EAAuB,CAAC,EAAG,IAAK,EAAG,GACnCC,EAAuB,CAAC,IAAM,GAAK,EAAG,IAAK,EAAG,GAelD,SAASC,EAAmB9uB,EAAM+uB,GAChC,IAAK/uB,EACH,OAAO,EAGT,IAAI8F,EAAM9F,EACN+K,EAAM/K,EACN2H,EAAM3H,EACNiL,EAAK,GAYT,OATEA,EADkB,iBAATjL,EACJA,EACI8F,EAAIhB,MACRgB,EAAIhB,MAAMQ,MAAQQ,EAAIhB,MAAM4G,IAE5BX,EAAIzF,MAAQqC,EAAI+D,MAGJijB,EAAUxwB,KAAK8M,IAGhC,OAAO,EAGT,IAAI+jB,EAAK/jB,EAAGrH,MAAM,KACdqrB,EAAUD,EAAG,GACbE,EAAaF,EAAG,GAChBG,EAAYH,EAAG,GAEfI,EAAKF,EAAWtrB,MAAM,KAAKnD,KAAI,SAAU4uB,GAC3C,OAAOxG,SAASwG,EAAK,OAEnBhkB,EAAQ+jB,EAAG,GACX9jB,EAAS8jB,EAAG,GAEZE,EAAcjkB,EAAQC,EACtBikB,EAAW5nB,EAAI4nB,UAAY,CAC7BL,WAAY,CACV7jB,MAAOA,EACPC,OAAQA,EACRgkB,YAAaA,IASjB,MAAO,CACLtqB,IAPQ2C,EAAI3C,KAxDhB,SAAuB+pB,EAAKS,GAC1B,IAAI5qB,EAAYmqB,EAAInqB,UAChBC,EAAUkqB,EAAIlqB,QACdoqB,EAAUO,EAAKP,QACfE,EAAYK,EAAKL,UAEjBH,EADWQ,EAAKD,SACFL,WAIlB,MAAOO,gCAAa7qB,EAAY,IAAMC,EAAU,IAAMoqB,EAAU,IAHpDD,EAAG3jB,MAG+D,IAFjE2jB,EAAG1jB,OAE6E,IAAM6jB,EA8C9EO,CAAcX,EAAK,CACtC/pB,IAAK,GACLiqB,QAASA,EACTE,UAAWA,EACXI,SAAUA,IAIVN,QAASA,EACTE,UAAWA,EACXI,SAAUA,GAId,SAASI,EAAgB3qB,EAAK4qB,GAC5B,IAAIC,EAASnB,EAAYb,QAAQ7oB,GAAK,GAElCmqB,EADWU,EAAOC,SAASxrB,QAAQ,OAAQ,IACtBA,QAAQ,OAAQ,IACrCyrB,EAAsBF,EAAO5qB,MAAM+qB,KAAOJ,EAC1CK,EAAad,IAAcS,EAE/B,GAAIG,GAAuBE,EAAY,CACrC,IAAIjB,EAAKa,EAAO5qB,MAEZE,GADK6pB,EAAGgB,GACC9B,EAAOc,EAAI,CAAC,QAGzB,OADAa,EAAOK,IAAI,QAAS/qB,GACb0qB,EAAO/xB,WAGhB,GAAIiyB,GAAuBE,EACzB,OAAOjrB,EAGT,IAAImrB,EAAWrC,EAASA,EAAS,GAAI+B,EAAO5qB,OAAQ,CAClD+qB,GAAIJ,IAIN,OADAC,EAAOK,IAAI,QAASC,GACbN,EAAO/xB,WAGhB,SAASsyB,EAAOprB,GACd,IAAIqrB,EAAcrrB,EAAIsrB,SAAS,WAC3BL,EAAa,0BAA0B9xB,KAAK6G,GAChD,OAAOqrB,GAAeJ,EAuExB3zB,EAAQ+xB,oBApER,SAA6B9oB,EAAOgrB,EAAMxB,GACxC,IAAI3vB,EAAQ0vB,EAAmBvpB,EAAOwpB,GAEtC,IAAK3vB,EACH,OAAO,KAGT,IAAIiM,EAAQklB,EAAKllB,OAAS/O,EAAQiyB,oBAC9BjjB,EAASilB,EAAKjlB,OACdtG,EAAM5F,EAAM4F,IACZuqB,EAAWnwB,EAAMmwB,SACjBJ,EAAY/vB,EAAM+vB,UAClBD,EAAaK,EAASL,WACtBsB,EAAOjB,EAASiB,KAEhBC,EAAiB,SAAwBC,EAAG1xB,GAC9C,OAAO0xB,IAAMxB,EAAW7jB,OAASrM,IAAMkwB,EAAW5jB,QAGhDkD,EAAqB0gB,EAAWI,YAEhCiB,EAAKjlB,SACPkD,EAAqBnD,EAAQklB,EAAKjlB,QAGpC,IAAIqlB,EAAe,KAEfJ,EAAKX,SACPe,EAAeJ,EAAKX,SACXQ,EAAOhxB,EAAM4F,OACtB2rB,EAAe,OAGjB,IAAIC,EAAmBpiB,IAAuB0gB,EAAWI,YACrDuB,EAAehkB,KAAKC,MAAMxB,GAAkBD,EAAQmD,GACpDsiB,EAASL,EAAeplB,EAAOwlB,IAAiBD,GAAoBvlB,EAAQ6jB,EAAW7jB,OAASwlB,EAAe3B,EAAW5jB,OAAStG,EAAMA,EAAM,MAAQqG,EAAQ,MAAQwlB,EAAe,YAQtLE,EAPSnC,EAAqBnuB,KAAI,SAAUuwB,GAC9C,OAAOnkB,KAAKC,MAAMzB,EAAQ2lB,MAMP/iB,QAAO,SAAUgjB,GACpC,OAAOA,GAAgB/B,EAAW7jB,SACjC1L,QAAO,SAAUqG,EAAKirB,EAAcv0B,GACrC,IAAIw0B,EAAatC,EAAqBlyB,GAAK,IACvCy0B,EAAgBtkB,KAAKC,MAAMmkB,EAAeziB,GAC1CsiB,EAASL,EAAeQ,EAAcE,GAAiBnsB,EAAMA,EAAM,MAAQisB,EAAe,MAAQE,EAAgB,YAClHC,EAAUzB,EAAgBmB,EAAQ,QAClCpjB,EAAUiiB,EAAgBmB,EAAQH,GAAgBvxB,EAAM+vB,WAG5D,OAFAnpB,EAAIqrB,KAAK5tB,KAAK2tB,EAAU,IAAMF,GAC9BlrB,EAAIypB,KAAKhsB,KAAKiK,EAAU,IAAMwjB,GACvBlrB,IAdK,CACZqrB,KAAM,GACN5B,KAAM,KAcJ7nB,EAAM+nB,EAAgBmB,EAAQH,GAAgBxB,GAC9CmC,EAAU3B,EAAgBmB,EAAQ,QACtC,MAAO,CACLS,OAAQf,QAAQ7pB,EAChB0E,MAAOwB,KAAKC,MAAMzB,GAClBC,OAAQulB,EACRjpB,IAAKA,EACL0pB,QAASA,EACTE,OAAQT,EAAQtB,KAAKrqB,KAAK,QAAUwC,EAAM,MAC1C6pB,WAAYV,EAAQM,KAAKjsB,KAAK,QAAUksB,EAAU,QA2EtDh1B,EAAQ8xB,oBArER,SAA6B7oB,EAAOgrB,EAAMxB,GACxC,IAAI3vB,EAAQ0vB,EAAmBvpB,EAAOwpB,GAEtC,IAAK3vB,EACH,OAAO,KAGT,IAAI4F,EAAM5F,EAAM4F,IACZuqB,EAAWnwB,EAAMmwB,SACjBJ,EAAY/vB,EAAM+vB,UAClBD,EAAaK,EAASL,WACtBsB,EAAOjB,EAASiB,KAEhBC,EAAiB,SAAwBC,EAAG1xB,GAC9C,OAAO0xB,IAAMxB,EAAW7jB,OAASrM,IAAMkwB,EAAW5jB,QAGhDgF,EAAWzD,KAAK6G,IAAI6c,EAAKjgB,UAAYhU,EAAQgyB,wBAAyBY,EAAW7jB,OACjFqmB,EAAqBnB,EAAK7f,UAAY7D,KAAK6G,IAAI6c,EAAK7f,UAAWwe,EAAW5jB,aAAU3E,EACpF6H,EAAqB0gB,EAAWI,YAEhCoC,IACFljB,EAAqB8B,EAAWohB,GAGlC,IAAIhhB,EAAYghB,GAAsB7kB,KAAKC,MAAMwD,EAAW4e,EAAWI,aACnEqB,EAAe,KAEfJ,EAAKX,SACPe,EAAeJ,EAAKX,SACXQ,EAAOhxB,EAAM4F,OACtB2rB,EAAe,OAGjB,IAAIgB,EAAUlB,EAAengB,EAAUI,IAAcJ,GAAY4e,EAAW7jB,OAASqF,GAAawe,EAAW5jB,OAAStG,EAAMA,EAAM,MAAQsL,EAAW,MAAQI,EAAY,YACrK9I,EAAM+nB,EAAgBgC,EAAShB,GAAgBxB,GAC/CmC,EAAU3B,EAAgBgC,EAAS,QACnCC,EAAQrB,EAAKqB,OAAS,eAAiBthB,EAAW,cAAgBA,EAAW,KAU7EygB,EATSlC,EAAqBpuB,KAAI,SAAUuwB,GAC9C,OAAOnkB,KAAKC,MAAMwD,EAAW0gB,MAC5B/iB,QAAO,SAAU5C,GAClB,OAAOA,EAAQ6jB,EAAW7jB,OAASA,EAAQ/O,EAAQkyB,iCAClDztB,OAAOmuB,EAAW7jB,OAKA4C,QAAO,SAAUgjB,GACpC,OAAOA,GAAgB/B,EAAW7jB,SACjC1L,QAAO,SAAUqG,EAAKirB,GACvB,IAAIE,EAAgBtkB,KAAKC,MAAMmkB,EAAeziB,GAC1CsiB,EAASL,EAAeQ,EAAcE,GAAiBnsB,EAAMA,EAAM,MAAQisB,EAAe,MAAQE,EAAgB,YAClHC,EAAUzB,EAAgBmB,EAAQ,QAClCpjB,EAAUiiB,EAAgBmB,EAAQH,GAAgBvxB,EAAM+vB,WAG5D,OAFAnpB,EAAIqrB,KAAK5tB,KAAK2tB,EAAU,IAAMH,EAAe,KAC7CjrB,EAAIypB,KAAKhsB,KAAKiK,EAAU,IAAMujB,EAAe,KACtCjrB,IAbK,CACZqrB,KAAM,GACN5B,KAAM,KAaR,MAAO,CACL8B,OAAQf,QAAQ7pB,EAChB2oB,YAAa9gB,EACb5G,IAAKA,EACL0pB,QAASA,EACTE,OAAQT,EAAQtB,KAAKrqB,KAAK,OAC1BqsB,WAAYV,EAAQM,KAAKjsB,KAAK,OAC9BwsB,MAAOA,K,mCCnSX,IAAIC,EAAwB,EAAQ,OAEpC10B,OAAOwwB,eAAerxB,EAAS,sBAAuB,CACpDw1B,YAAY,EACZC,IAAK,WACH,OAAOF,EAAsBzD,uBAUjC,IAAI4D,EAAsB,EAAQ,Q,gCCrBlC70B,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAQ21B,OAAS31B,EAAQ41B,WAAa51B,EAAQ61B,SAAW71B,EAAQ81B,eAAY,EAM7E91B,EAAQ81B,UAJR,SAAmBnnB,GACjB,OAAOA,EAAGonB,WAAW,YAKvB/1B,EAAQ61B,SAAW,SAAUlnB,GAC3B,OAAOA,EAAGonB,WAAW,WAAapnB,EAAK,UAAYA,GAGrD3O,EAAQ41B,WAAa,SAAUjnB,GAC7B,OAAOA,EAAG3G,QAAQ,YAAa,KAGjChI,EAAQ21B,OAAS,SAAUhnB,EAAIqnB,GAC7B,MAAO,+BAA+Bn0B,KAAK8M,GAC3CA,EAEA,IAAMqnB,EAASrnB,K,mCCvBjB,IAAI6iB,EAAWvjB,MAAQA,KAAKujB,UAAY,WAatC,OAZAA,EAAW3wB,OAAOiM,QAAU,SAAU2kB,GACpC,IAAK,IAAIC,EAAGtxB,EAAI,EAAGkB,EAAI8I,UAAUjK,OAAQC,EAAIkB,EAAGlB,IAG9C,IAAK,IAAIuxB,KAFTD,EAAItnB,UAAUhK,GAGRS,OAAOU,UAAUwM,eAAetM,KAAKiwB,EAAGC,KAAIF,EAAEE,GAAKD,EAAEC,IAI7D,OAAOF,IAGOzjB,MAAMC,KAAM7D,YAG1B+mB,EAAkBljB,MAAQA,KAAKkjB,iBAAmB,SAAUC,GAC9D,OAAOA,GAAOA,EAAI7wB,WAAa6wB,EAAM,CACnC,QAAWA,IAIfvwB,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAQi2B,uBAAoB,EAE5B,IAAI3E,EAAUH,EAAgB,EAAQ,QAElC+E,EAAgB,EAAQ,MAExBC,EAAoB,EAAQ,KAE5BC,EAAwB,CAC1BC,SAAU,EACVC,eAAe,GAyDjBt2B,EAAQi2B,kBAtDR,SAASA,EAAkBzsB,EAAK+sB,EAASnzB,EAASozB,QAChC,IAAZpzB,IACFA,EAAU,SAGS,IAAjBozB,IACFA,EAAe,GAGjB,IAAIC,EAAeF,EAAQE,aACvBC,EAAUH,EAAQG,QAElBC,EAAiBnF,EAASA,EAAS,GAAI4E,GAAwBhzB,GAE/DkzB,EAAgBK,EAAeL,cAC/BD,EAAWM,EAAeN,SAE9B,GAAI/1B,MAAMG,QAAQ+I,GAChB,OAAOgtB,GAAgBH,EAAW7sB,EAAIrF,KAAI,SAAU0D,GAClD,OAAOouB,EAAkBpuB,EAAM0uB,EAASI,EAAgBH,EAAe,MACpEhtB,EAGP,GAAY,OAARA,GAA+B,iBAARA,EACzB,OAAOA,EAGT,GAAwB,iBAAbA,EAAIR,KAAmB,CAChC,IAAI4tB,EAEJptB,EAAIR,KAAK+sB,WAAW,KAAOvsB,EAAIR,KAAOktB,EAAcP,OAAOW,EAAgBH,EAAkBU,gBAAgBrtB,EAAIR,MAAQQ,EAAIR,KAAMytB,GACnInF,EAAQC,QAAQ,4BAA6BqF,EAAUptB,EAAIR,MAC3D,IAAItF,EAAOgzB,EAAQE,GAEnB,OAAKlzB,GAAQ8F,EAAIstB,MACR,KACGpzB,EAKLA,GAAQ8yB,GAAgBH,EAAWJ,EAuB9C,SAAwBzsB,GACtB,IAAIutB,EAAU,GACd,OAAOl2B,OAAO+H,KAAKY,GAAKnG,QAAO,SAAUqG,EAAKnG,GAC5C,GAAIA,EAAIwyB,WAAW,YAAa,CAC9B,IAAIiB,EAAYzzB,EAAI7B,MAAM,GAG1BgI,EADAstB,OAAsC,IAAnBxtB,EAAIwtB,GAA6BA,EAAU,GAAGC,cAAgBD,EAAUt1B,MAAM,GAAKs1B,GACrFxtB,EAAIjG,QACXmG,EAAInG,KACdmG,EAAInG,GAAOiG,EAAIjG,IAGjB,OAAOmG,IACNqtB,GApC2DG,CAAexzB,GAAO6yB,EAASI,EAAgBH,EAAe,GAAKhtB,GAJ7H8nB,EAAQC,QAAQ,sCAAyCqF,EAAW,KAC7D,MAOX,OAAO/1B,OAAO+H,KAAKY,GAAKnG,QAAO,SAAUqG,EAAKnG,GAC5C,IAAI4zB,EAAiB5zB,EAAIwyB,WAAW,YAChCvyB,EAAQyyB,EAAkBzsB,EAAIjG,GAAMgzB,EAASI,EAAgBH,EAAe,GAGhF,OADA9sB,EADgBytB,EAAiB,OAAS5zB,EAAI7B,MAAM,GAAK6B,GACxCC,EACVkG,IANK,M,+BClFhB7I,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAQ62B,qBAAkB,EAM1B72B,EAAQ62B,gBAJR,SAAyBloB,GACvB,OAAOA,EAAG3G,QAAQ,YAAa,M,sBCHjChI,EAAQo3B,WA+CR,SAAoBnD,GAGlB,GAFAA,EAAK,IAAMhmB,KAAKopB,UAAY,KAAO,IAAMppB,KAAKqpB,WAAarpB,KAAKopB,UAAY,MAAQ,KAAOpD,EAAK,IAAMhmB,KAAKopB,UAAY,MAAQ,KAAO,IAAMt3B,EAAOC,QAAQu3B,SAAStpB,KAAK6L,OAEpK7L,KAAKopB,UACR,OAGF,IAAIG,EAAI,UAAYvpB,KAAKwpB,MACzBxD,EAAKntB,OAAO,EAAG,EAAG0wB,EAAG,kBAIrB,IAAI7zB,EAAQ,EACR+zB,EAAQ,EACZzD,EAAK,GAAGjsB,QAAQ,eAAe,SAAU0C,GACzB,OAAVA,IAIJ/G,IAEc,OAAV+G,IAGFgtB,EAAQ/zB,OAGZswB,EAAKntB,OAAO4wB,EAAO,EAAGF,IAzExBx3B,EAAQ23B,KA8FR,SAAcC,GACZ,IACMA,EACF53B,EAAQ63B,QAAQC,QAAQ,QAASF,GAEjC53B,EAAQ63B,QAAQE,WAAW,SAE7B,MAAOC,MApGXh4B,EAAQi4B,KAgHR,WACE,IAAIC,EAEJ,IACEA,EAAIl4B,EAAQ63B,QAAQM,QAAQ,SAC5B,MAAOH,KAKJE,GAAwB,oBAAZE,SAA2B,QAASA,UACnDF,EAAI,GAAYG,OAGlB,OAAOH,GA7HTl4B,EAAQq3B,UAgBR,WAIE,GAAsB,oBAAXiB,QAA0BA,OAAOF,UAAoC,aAAxBE,OAAOF,QAAQt0B,MAAuBw0B,OAAOF,QAAQG,QAC3G,OAAO,EAIT,GAAyB,oBAAdC,WAA6BA,UAAUC,WAAaD,UAAUC,UAAUxB,cAAcvsB,MAAM,yBACrG,OAAO,EAKT,MAA2B,oBAAbguB,UAA4BA,SAASC,iBAAmBD,SAASC,gBAAgBvtB,OAASstB,SAASC,gBAAgBvtB,MAAMwtB,kBACrH,oBAAXN,QAA0BA,OAAO3tB,UAAY2tB,OAAO3tB,QAAQkuB,SAAWP,OAAO3tB,QAAQmuB,WAAaR,OAAO3tB,QAAQouB,QAEpG,oBAAdP,WAA6BA,UAAUC,WAAaD,UAAUC,UAAUxB,cAAcvsB,MAAM,mBAAqB6hB,SAAS5E,OAAOqR,GAAI,KAAO,IAC9H,oBAAdR,WAA6BA,UAAUC,WAAaD,UAAUC,UAAUxB,cAAcvsB,MAAM,uBAlCrG1K,EAAQ63B,QA0IR,WACE,IAGE,OAAOoB,aACP,MAAOjB,KA/IOkB,GAKlBl5B,EAAQm5B,OAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WA6E30Bn5B,EAAQo5B,IAAMzuB,QAAQ0uB,OAAS1uB,QAAQyuB,KAAO,aAkE9Cr5B,EAAOC,QAAU,EAAQ,MAAR,CAAoBA,GACpBD,EAAOC,QAAQmd,WAKrBmc,EAAI,SAAUC,GACvB,IACE,OAAOzxB,KAAKC,UAAUwxB,GACtB,MAAOvB,GACP,MAAO,+BAAiCA,EAAMwB,W,sBCvKlD,IAAIC,EAAqB,EAAQ,KAwQjC15B,EAAOC,QAlQP,SAAe05B,GAwDb,SAASC,EAAYrC,GACnB,IAAIsC,EAEJ,SAASP,IACP,IAAK,IAAIQ,EAAOzvB,UAAUjK,OAAQ8zB,EAAO,IAAI3zB,MAAMu5B,GAAO51B,EAAO,EAAGA,EAAO41B,EAAM51B,IAC/EgwB,EAAKhwB,GAAQmG,UAAUnG,GAIzB,GAAKo1B,EAAMS,QAAX,CAIA,IAAIC,EAAOV,EAEPW,EAAO5jB,OAAO,IAAIR,MAClBqkB,EAAKD,GAAQJ,GAAYI,GAC7BD,EAAKjgB,KAAOmgB,EACZF,EAAK9I,KAAO2I,EACZG,EAAKC,KAAOA,EACZJ,EAAWI,EACX/F,EAAK,GAAK0F,EAAYO,OAAOjG,EAAK,IAEX,iBAAZA,EAAK,IAEdA,EAAKkG,QAAQ,MAIf,IAAIx2B,EAAQ,EACZswB,EAAK,GAAKA,EAAK,GAAGjsB,QAAQ,iBAAiB,SAAU0C,EAAOmE,GAE1D,GAAc,OAAVnE,EACF,OAAOA,EAGT/G,IACA,IAAI2a,EAAYqb,EAAYxc,WAAWtO,GAEvC,GAAyB,mBAAdyP,EAA0B,CACnC,IAAIwR,EAAMmE,EAAKtwB,GACf+G,EAAQ4T,EAAU7c,KAAKs4B,EAAMjK,GAE7BmE,EAAKntB,OAAOnD,EAAO,GACnBA,IAGF,OAAO+G,KAGTivB,EAAYvC,WAAW31B,KAAKs4B,EAAM9F,GAClC,IAAImG,EAAQL,EAAKX,KAAOO,EAAYP,IACpCgB,EAAMpsB,MAAM+rB,EAAM9F,IAepB,OAZAoF,EAAM/B,UAAYA,EAClB+B,EAAMS,QAAUH,EAAYG,QAAQxC,GACpC+B,EAAMhC,UAAYsC,EAAYtC,YAC9BgC,EAAM5B,MAAQkC,EAAYU,YAAY/C,GACtC+B,EAAMiB,QAAUA,EAChBjB,EAAMkB,OAASA,EAEiB,mBAArBZ,EAAYa,MACrBb,EAAYa,KAAKnB,GAGnBM,EAAYc,UAAUtzB,KAAKkyB,GACpBA,EAGT,SAASiB,IACP,IAAI32B,EAAQg2B,EAAYc,UAAU90B,QAAQsI,MAE1C,OAAe,IAAXtK,IACFg2B,EAAYc,UAAU3zB,OAAOnD,EAAO,IAC7B,GAMX,SAAS42B,EAAOjD,EAAWoD,GACzB,IAAIC,EAAWhB,EAAY1rB,KAAKqpB,gBAAkC,IAAdoD,EAA4B,IAAMA,GAAapD,GAEnG,OADAqD,EAASvB,IAAMnrB,KAAKmrB,IACbuB,EA8FT,SAASC,EAAYC,GACnB,OAAOA,EAAOr5B,WAAWs5B,UAAU,EAAGD,EAAOr5B,WAAWrB,OAAS,GAAG6H,QAAQ,UAAW,KAoBzF,OA9PA2xB,EAAYN,MAAQM,EACpBA,EAAYpI,QAAUoI,EACtBA,EAAYO,OAmPZ,SAAgBpK,GACd,GAAIA,aAAernB,MACjB,OAAOqnB,EAAIiL,OAASjL,EAAI0J,QAG1B,OAAO1J,GAvPT6J,EAAYqB,QAuLZ,WACE,IAAIpD,EAAa,GAAGnzB,OAAOg1B,EAAmBE,EAAYsB,MAAM92B,IAAIy2B,IAAenB,EAAmBE,EAAYuB,MAAM/2B,IAAIy2B,GAAaz2B,KAAI,SAAUmzB,GACrJ,MAAO,IAAMA,OACVxuB,KAAK,KAEV,OADA6wB,EAAYwB,OAAO,IACZvD,GA3LT+B,EAAYwB,OAkJZ,SAAgBvD,GAId,IAAIx3B,EAHJu5B,EAAYhC,KAAKC,GACjB+B,EAAYsB,MAAQ,GACpBtB,EAAYuB,MAAQ,GAEpB,IAAI5zB,GAA+B,iBAAfswB,EAA0BA,EAAa,IAAItwB,MAAM,UACjEpH,EAAMoH,EAAMnH,OAEhB,IAAKC,EAAI,EAAGA,EAAIF,EAAKE,IACdkH,EAAMlH,KAOW,OAFtBw3B,EAAatwB,EAAMlH,GAAG4H,QAAQ,MAAO,QAEtB,GACb2xB,EAAYuB,MAAM/zB,KAAK,IAAIwgB,OAAO,IAAMiQ,EAAWva,OAAO,GAAK,MAE/Dsc,EAAYsB,MAAM9zB,KAAK,IAAIwgB,OAAO,IAAMiQ,EAAa,OAIzD,IAAKx3B,EAAI,EAAGA,EAAIu5B,EAAYc,UAAUt6B,OAAQC,IAAK,CACjD,IAAIg7B,EAAWzB,EAAYc,UAAUr6B,GACrCg7B,EAAStB,QAAUH,EAAYG,QAAQsB,EAAS9D,aA1KpDqC,EAAYG,QAqMZ,SAAiBl4B,GACf,GAA8B,MAA1BA,EAAKA,EAAKzB,OAAS,GACrB,OAAO,EAGT,IAAIC,EACAF,EAEJ,IAAKE,EAAI,EAAGF,EAAMy5B,EAAYuB,MAAM/6B,OAAQC,EAAIF,EAAKE,IACnD,GAAIu5B,EAAYuB,MAAM96B,GAAGyB,KAAKD,GAC5B,OAAO,EAIX,IAAKxB,EAAI,EAAGF,EAAMy5B,EAAYsB,MAAM96B,OAAQC,EAAIF,EAAKE,IACnD,GAAIu5B,EAAYsB,MAAM76B,GAAGyB,KAAKD,GAC5B,OAAO,EAIX,OAAO,GAxNT+3B,EAAYpC,SAAW,EAAQ,OAC/B12B,OAAO+H,KAAK8wB,GAAKhzB,SAAQ,SAAUnD,GACjCo2B,EAAYp2B,GAAOm2B,EAAIn2B,MAMzBo2B,EAAYc,UAAY,GAKxBd,EAAYsB,MAAQ,GACpBtB,EAAYuB,MAAQ,GAOpBvB,EAAYxc,WAAa,GAmBzBwc,EAAYU,YAXZ,SAAqB/C,GAGnB,IAFA,IAAI5vB,EAAO,EAEFtH,EAAI,EAAGA,EAAIk3B,EAAUn3B,OAAQC,IACpCsH,GAAQA,GAAQ,GAAKA,EAAO4vB,EAAU1vB,WAAWxH,GACjDsH,GAAQ,EAGV,OAAOiyB,EAAYR,OAAO5oB,KAAK8H,IAAI3Q,GAAQiyB,EAAYR,OAAOh5B,SAkNhEw5B,EAAYwB,OAAOxB,EAAY1B,QACxB0B,I,kBCzNT,SAAS0B,EAASC,EAAQC,GACxBD,EAAOE,OAAS,WACdvtB,KAAKwtB,QAAUxtB,KAAKutB,OAAS,KAC7BD,EAAG,KAAMD,IAGXA,EAAOG,QAAU,WAGfxtB,KAAKwtB,QAAUxtB,KAAKutB,OAAS,KAC7BD,EAAG,IAAI9yB,MAAM,kBAAoBwF,KAAK3C,KAAMgwB,IAIhD,SAASI,EAAQJ,EAAQC,GACvBD,EAAOK,mBAAqB,WACH,YAAnB1tB,KAAK2tB,YAA+C,UAAnB3tB,KAAK2tB,aAC1C3tB,KAAK0tB,mBAAqB,KAC1BJ,EAAG,KAAMD,KA9Dbv7B,EAAOC,QAAU,SAAcsL,EAAKhI,EAAMi4B,GACxC,IAAIM,EAAOnD,SAASmD,MAAQnD,SAASoD,qBAAqB,QAAQ,GAC9DR,EAAS5C,SAAS/rB,cAAc,UAEhB,mBAATrJ,IACTi4B,EAAKj4B,EACLA,EAAO,IAGTA,EAAOA,GAAQ,GAEfi4B,EAAKA,GAAM,aAEXD,EAAOx3B,KAAOR,EAAKQ,MAAQ,kBAC3Bw3B,EAAOS,QAAUz4B,EAAKy4B,SAAW,OACjCT,EAAOU,QAAQ,UAAW14B,MAASA,EAAK04B,MACxCV,EAAOhwB,IAAMA,EAEThI,EAAK24B,OAoBX,SAAuBX,EAAQW,GAC7B,IAAK,IAAIC,KAAQD,EACfX,EAAOa,aAAaD,EAAMD,EAAMC,IArBhCE,CAAcd,EAAQh4B,EAAK24B,OAGzB34B,EAAK8D,OACPk0B,EAAOl0B,KAAO,GAAK9D,EAAK8D,OAGd,WAAYk0B,EAASD,EAAWK,GACtCJ,EAAQC,GAITD,EAAOE,QACVH,EAASC,EAAQC,GAGnBM,EAAKQ,YAAYf,K,mCCnCnB,SAASgB,EAAeC,EAAWC,GACjC,GAAID,EAAUp8B,SAAWq8B,EAAWr8B,OAClC,OAAO,EAGT,IAAK,IAAIC,EAAI,EAAGA,EAAIm8B,EAAUp8B,OAAQC,IACpC,GAAIm8B,EAAUn8B,KAAOo8B,EAAWp8B,GAC9B,OAAO,EAIX,OAAO,E,OAkCT,UA/BA,SAAoBq8B,EAAU1a,GAK5B,IAAI2a,OAJY,IAAZ3a,IACFA,EAAUua,GAIZ,IACIK,EADAC,EAAW,GAEXC,GAAa,EAoBjB,OAlBA,WAGE,IAFA,IAAIC,EAAU,GAELC,EAAK,EAAGA,EAAK3yB,UAAUjK,OAAQ48B,IACtCD,EAAQC,GAAM3yB,UAAU2yB,GAG1B,OAAIF,GAAcH,IAAazuB,MAAQ8T,EAAQ+a,EAASF,KAIxDD,EAAaF,EAASzuB,MAAMC,KAAM6uB,GAClCD,GAAa,EACbH,EAAWzuB,KACX2uB,EAAWE,GANFH,K,kBC7Bb,IAAIjL,EAAI,IACJsL,EAAQ,GAAJtL,EACJhvB,EAAQ,GAAJs6B,EACJC,EAAQ,GAAJv6B,EACJ0xB,EAAQ,EAAJ6I,EACJ/sB,EAAQ,OAAJ+sB,EAuKR,SAASC,EAAOjD,EAAIkD,EAAO77B,EAAGM,GAC5B,IAAIw7B,EAAWD,GAAa,IAAJ77B,EACxB,OAAOiP,KAAKC,MAAMypB,EAAK34B,GAAK,IAAMM,GAAQw7B,EAAW,IAAM,IA1J7Dr9B,EAAOC,QAAU,SAAU8vB,EAAK1sB,GAC9BA,EAAUA,GAAW,GACrB,IAAIU,SAAcgsB,EAElB,GAAa,WAAThsB,GAAqBgsB,EAAI3vB,OAAS,EACpC,OAgBJ,SAAesH,GAGb,IAFAA,EAAMkU,OAAOlU,IAELtH,OAAS,IACf,OAGF,IAAIuK,EAAQ,mIAAmIshB,KAAKvkB,GAEpJ,IAAKiD,EACH,OAGF,IAAIpJ,EAAIurB,WAAWniB,EAAM,IAGzB,QAFYA,EAAM,IAAM,MAAMusB,eAG5B,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAAO31B,EAAI4O,EAEb,IAAK,QACL,IAAK,OACL,IAAK,IACH,OAAO5O,EAAI8yB,EAEb,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAO9yB,EAAI27B,EAEb,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAAO37B,EAAIoB,EAEb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOpB,EAAI07B,EAEb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAO17B,EAAIowB,EAEb,IAAK,eACL,IAAK,cACL,IAAK,QACL,IAAK,OACL,IAAK,KACH,OAAOpwB,EAET,QACE,QA/EK2U,CAAM6Z,GACR,GAAa,WAAThsB,GAAqBmL,SAAS6gB,GACvC,OAAO1sB,EAAQi6B,KAuHnB,SAAiBpD,GACf,IAAIkD,EAAQ5sB,KAAK8H,IAAI4hB,GAErB,GAAIkD,GAASF,EACX,OAAOC,EAAOjD,EAAIkD,EAAOF,EAAG,OAG9B,GAAIE,GAASz6B,EACX,OAAOw6B,EAAOjD,EAAIkD,EAAOz6B,EAAG,QAG9B,GAAIy6B,GAASH,EACX,OAAOE,EAAOjD,EAAIkD,EAAOH,EAAG,UAG9B,GAAIG,GAASzL,EACX,OAAOwL,EAAOjD,EAAIkD,EAAOzL,EAAG,UAG9B,OAAOuI,EAAK,MA1IYqD,CAAQxN,GAyFlC,SAAkBmK,GAChB,IAAIkD,EAAQ5sB,KAAK8H,IAAI4hB,GAErB,GAAIkD,GAASF,EACX,OAAO1sB,KAAKC,MAAMypB,EAAKgD,GAAK,IAG9B,GAAIE,GAASz6B,EACX,OAAO6N,KAAKC,MAAMypB,EAAKv3B,GAAK,IAG9B,GAAIy6B,GAASH,EACX,OAAOzsB,KAAKC,MAAMypB,EAAK+C,GAAK,IAG9B,GAAIG,GAASzL,EACX,OAAOnhB,KAAKC,MAAMypB,EAAKvI,GAAK,IAG9B,OAAOuI,EAAK,KA5G2BsD,CAASzN,GAGhD,MAAM,IAAIrnB,MAAM,wDAA0DX,KAAKC,UAAU+nB,M,iCC/B3F,IAAI0N,EAAM38B,OAAOU,UAAUwM,eAU3B,SAAS8gB,EAAOjR,GACd,IACE,OAAO+Q,mBAAmB/Q,EAAM5V,QAAQ,MAAO,MAC/C,MAAO6pB,GACP,OAAO,MAkGX7xB,EAAQ+H,UAtCR,SAAwByB,EAAKi0B,GAC3BA,EAASA,GAAU,GACnB,IACIj6B,EACAD,EAFAm6B,EAAQ,GAQZ,IAAKn6B,IAFD,iBAAoBk6B,IAAQA,EAAS,KAE7Bj0B,EACV,GAAIg0B,EAAI/7B,KAAK+H,EAAKjG,GAAM,CAgBtB,IAfAC,EAAQgG,EAAIjG,KAKGC,UAAqC0jB,MAAM1jB,KACxDA,EAAQ,IAGVD,EAAM6E,mBAAmB7E,GACzBC,EAAQ4E,mBAAmB5E,GAKf,OAARD,GAA0B,OAAVC,EAAgB,SACpCk6B,EAAMv2B,KAAK5D,EAAM,IAAMC,GAI3B,OAAOk6B,EAAMv9B,OAASs9B,EAASC,EAAM50B,KAAK,KAAO,IAOnD9I,EAAQiW,MAvER,SAAqBtN,GAKnB,IAJA,IAEIg1B,EAFAC,EAAS,sBACThuB,EAAS,GAGN+tB,EAAOC,EAAO5R,KAAKrjB,IAAQ,CAChC,IAAIpF,EAAMsrB,EAAO8O,EAAK,IAClBn6B,EAAQqrB,EAAO8O,EAAK,IASZ,OAARp6B,GAA0B,OAAVC,GAAkBD,KAAOqM,IAC7CA,EAAOrM,GAAOC,GAGhB,OAAOoM,I,kBC/DT,IAAIiuB,EAAoC,oBAAZC,QACxBC,EAAwB,mBAARC,IAChBC,EAAwB,mBAARC,IAChBC,EAAwC,mBAAhBC,eAAgCA,YAAYC,OAExE,SAASC,EAAMC,EAAGC,GAEhB,GAAID,IAAMC,EAAG,OAAO,EAEpB,GAAID,GAAKC,GAAiB,iBAALD,GAA6B,iBAALC,EAAe,CAC1D,GAAID,EAAE58B,cAAgB68B,EAAE78B,YAAa,OAAO,EAC5C,IAAIxB,EAAQC,EAAGwI,EAiCX61B,EA/BJ,GAAIn+B,MAAMG,QAAQ89B,GAAI,CAEpB,IADAp+B,EAASo+B,EAAEp+B,SACGq+B,EAAEr+B,OAAQ,OAAO,EAE/B,IAAKC,EAAID,EAAgB,GAARC,KACf,IAAKk+B,EAAMC,EAAEn+B,GAAIo+B,EAAEp+B,IAAK,OAAO,EAGjC,OAAO,EAyBT,GAAI29B,GAAUQ,aAAaP,KAAOQ,aAAaR,IAAK,CAClD,GAAIO,EAAE/pB,OAASgqB,EAAEhqB,KAAM,OAAO,EAG9B,IAFAiqB,EAAKF,EAAEtP,YAEE7uB,EAAIq+B,EAAGnwB,QAAQD,MACtB,IAAKmwB,EAAEhB,IAAIp9B,EAAEoD,MAAM,IAAK,OAAO,EAKjC,IAFAi7B,EAAKF,EAAEtP,YAEE7uB,EAAIq+B,EAAGnwB,QAAQD,MACtB,IAAKiwB,EAAMl+B,EAAEoD,MAAM,GAAIg7B,EAAE/I,IAAIr1B,EAAEoD,MAAM,KAAM,OAAO,EAGpD,OAAO,EAGT,GAAIy6B,GAAUM,aAAaL,KAAOM,aAAaN,IAAK,CAClD,GAAIK,EAAE/pB,OAASgqB,EAAEhqB,KAAM,OAAO,EAG9B,IAFAiqB,EAAKF,EAAEtP,YAEE7uB,EAAIq+B,EAAGnwB,QAAQD,MACtB,IAAKmwB,EAAEhB,IAAIp9B,EAAEoD,MAAM,IAAK,OAAO,EAGjC,OAAO,EAIT,GAAI26B,GAAkBC,YAAYC,OAAOE,IAAMH,YAAYC,OAAOG,GAAI,CAEpE,IADAr+B,EAASo+B,EAAEp+B,SACGq+B,EAAEr+B,OAAQ,OAAO,EAE/B,IAAKC,EAAID,EAAgB,GAARC,KACf,GAAIm+B,EAAEn+B,KAAOo+B,EAAEp+B,GAAI,OAAO,EAG5B,OAAO,EAGT,GAAIm+B,EAAE58B,cAAgBgmB,OAAQ,OAAO4W,EAAEzwB,SAAW0wB,EAAE1wB,QAAUywB,EAAEG,QAAUF,EAAEE,MAC5E,GAAIH,EAAErf,UAAYre,OAAOU,UAAU2d,QAAS,OAAOqf,EAAErf,YAAcsf,EAAEtf,UACrE,GAAIqf,EAAE/8B,WAAaX,OAAOU,UAAUC,SAAU,OAAO+8B,EAAE/8B,aAAeg9B,EAAEh9B,WAGxE,IADArB,GADAyI,EAAO/H,OAAO+H,KAAK21B,IACLp+B,UACCU,OAAO+H,KAAK41B,GAAGr+B,OAAQ,OAAO,EAE7C,IAAKC,EAAID,EAAgB,GAARC,KACf,IAAKS,OAAOU,UAAUwM,eAAetM,KAAK+8B,EAAG51B,EAAKxI,IAAK,OAAO,EAMhE,GAAIy9B,GAAkBU,aAAaT,QAAS,OAAO,EAEnD,IAAK19B,EAAID,EAAgB,GAARC,KACf,IAAiB,WAAZwI,EAAKxI,IAA+B,QAAZwI,EAAKxI,IAA4B,QAAZwI,EAAKxI,KAAiBm+B,EAAEjP,YAYrEgP,EAAMC,EAAE31B,EAAKxI,IAAKo+B,EAAE51B,EAAKxI,KAAM,OAAO,EAK7C,OAAO,EAGT,OAAOm+B,GAAMA,GAAKC,GAAMA,EAI1Bz+B,EAAOC,QAAU,SAAiBu+B,EAAGC,GACnC,IACE,OAAOF,EAAMC,EAAGC,GAChB,MAAOxG,GACP,IAAKA,EAAMwB,SAAW,IAAI9uB,MAAM,oBAO9B,OADAC,QAAQC,KAAK,mDACN,EAIT,MAAMotB,K,uCC7IN2G,EAAkB,EAAQ,OAE1B78B,EAAe,EAAQ,OAEvB88B,EAAkB,EAAQ,MAsE9B,SAASC,EAAOr7B,EAAOF,GACrB,OAAIA,EAAKu7B,OACAv7B,EAAKw7B,OAASH,EAAgBn7B,GAAS4E,mBAAmB5E,GAG5DA,EAGT,SAASu7B,EAAWnhB,GAClB,OAAItd,MAAMG,QAAQmd,GACTA,EAAM7X,OACa,iBAAV6X,EACTmhB,EAAWl+B,OAAO+H,KAAKgV,IAAQ7X,MAAK,SAAUw4B,EAAGC,GACtD,OAAOpoB,OAAOmoB,GAAKnoB,OAAOooB,MACzBr6B,KAAI,SAAUZ,GACf,OAAOqa,EAAMra,MAIVqa,EAGT,SAASohB,EAAQv3B,GACf,IAAIw3B,EAAax3B,EAAI9B,QAAQ,KAE7B,OAAoB,IAAhBs5B,EACK,GAGFx3B,EAAI/F,MAAMu9B,EAAa,GAGhC,SAAShpB,EAAMxO,EAAKnE,GAIlB,IAAIgb,EArFN,SAA8Bhb,GAC5B,IAAIsM,EAEJ,OAAQtM,EAAK47B,aACX,IAAK,QACH,OAAO,SAAU37B,EAAKC,EAAO27B,GAC3BvvB,EAAS,aAAaoc,KAAKzoB,GAC3BA,EAAMA,EAAIyE,QAAQ,WAAY,IAEzB4H,QAKoBvF,IAArB80B,EAAY57B,KACd47B,EAAY57B,GAAO,IAGrB47B,EAAY57B,GAAKqM,EAAO,IAAMpM,GAR5B27B,EAAY57B,GAAOC,GAWzB,IAAK,UACH,OAAO,SAAUD,EAAKC,EAAO27B,GAC3BvvB,EAAS,UAAUoc,KAAKzoB,GACxBA,EAAMA,EAAIyE,QAAQ,QAAS,IAEtB4H,OAG2BvF,IAArB80B,EAAY57B,GAKvB47B,EAAY57B,GAAO,GAAGkB,OAAO06B,EAAY57B,GAAMC,GAJ7C27B,EAAY57B,GAAO,CAACC,GAHpB27B,EAAY57B,GAAOC,GAUzB,QACE,OAAO,SAAUD,EAAKC,EAAO27B,QACF90B,IAArB80B,EAAY57B,GAKhB47B,EAAY57B,GAAO,GAAGkB,OAAO06B,EAAY57B,GAAMC,GAJ7C27B,EAAY57B,GAAOC,IA6CX47B,CAHhB97B,EAAOxB,EAAa,CAClBo9B,YAAa,QACZ57B,IAIC+7B,EAAMx+B,OAAOy+B,OAAO,MAExB,MAAmB,iBAAR73B,EACF43B,GAGT53B,EAAMA,EAAI83B,OAAOv3B,QAAQ,SAAU,MAMnCP,EAAIH,MAAM,KAAKZ,SAAQ,SAAUoL,GAC/B,IAAI0tB,EAAQ1tB,EAAM9J,QAAQ,MAAO,KAAKV,MAAM,KAGxC/D,EAAMi8B,EAAMC,QACZ3P,EAAM0P,EAAMr/B,OAAS,EAAIq/B,EAAM12B,KAAK,UAAOuB,EAG/CylB,OAAczlB,IAARylB,EAAoB,KAAO8O,EAAgB9O,GACjDxR,EAAUsgB,EAAgBr7B,GAAMusB,EAAKuP,MAEhCx+B,OAAO+H,KAAKy2B,GAAKt5B,OAAO1C,QAAO,SAAUuM,EAAQrM,GACtD,IAAIusB,EAAMuP,EAAI97B,GASd,OAPIqB,QAAQkrB,IAAuB,iBAARA,IAAqBxvB,MAAMG,QAAQqvB,GAE5DlgB,EAAOrM,GAAOw7B,EAAWjP,GAEzBlgB,EAAOrM,GAAOusB,EAGTlgB,IACN/O,OAAOy+B,OAAO,QAzBRD,EA+BXr/B,EAAQ,GAAY,SAAUwJ,EAAKlG,IAQf,KAFlBA,EAAOxB,EALQ,CACb+8B,QAAQ,EACRC,QAAQ,EACRI,YAAa,QAEe57B,IAErByC,OACPzC,EAAKyC,KAAO,cAGd,IAAIuY,EA/JN,SAA+Bhb,GAC7B,OAAQA,EAAK47B,aACX,IAAK,QACH,OAAO,SAAU37B,EAAKC,EAAOG,GAC3B,OAAiB,OAAVH,EAAiB,CAACq7B,EAAOt7B,EAAKD,GAAO,IAAKK,EAAO,KAAKmF,KAAK,IAAM,CAAC+1B,EAAOt7B,EAAKD,GAAO,IAAKu7B,EAAOl7B,EAAOL,GAAO,KAAMu7B,EAAOr7B,EAAOF,IAAOwF,KAAK,KAG1J,IAAK,UACH,OAAO,SAAUvF,EAAKC,GACpB,OAAiB,OAAVA,EAAiBq7B,EAAOt7B,EAAKD,GAAQ,CAACu7B,EAAOt7B,EAAKD,GAAO,MAAOu7B,EAAOr7B,EAAOF,IAAOwF,KAAK,KAGrG,QACE,OAAO,SAAUvF,EAAKC,GACpB,OAAiB,OAAVA,EAAiBq7B,EAAOt7B,EAAKD,GAAQ,CAACu7B,EAAOt7B,EAAKD,GAAO,IAAKu7B,EAAOr7B,EAAOF,IAAOwF,KAAK,MAiJrF42B,CAAsBp8B,GACtC,OAAOkG,EAAM3I,OAAO+H,KAAKY,GAAKzD,KAAKzC,EAAKyC,MAAM5B,KAAI,SAAUZ,GAC1D,IAAIusB,EAAMtmB,EAAIjG,GAEd,QAAY8G,IAARylB,EACF,MAAO,GAGT,GAAY,OAARA,EACF,OAAO+O,EAAOt7B,EAAKD,GAGrB,GAAIhD,MAAMG,QAAQqvB,GAAM,CACtB,IAAIlgB,EAAS,GAQb,OAPAkgB,EAAIpuB,QAAQgF,SAAQ,SAAUi5B,QACft1B,IAATs1B,GAIJ/vB,EAAOzI,KAAKmX,EAAU/a,EAAKo8B,EAAM/vB,EAAOzP,YAEnCyP,EAAO9G,KAAK,KAGrB,OAAO+1B,EAAOt7B,EAAKD,GAAQ,IAAMu7B,EAAO/O,EAAKxsB,MAC5CqO,QAAO,SAAU1B,GAClB,OAAOA,EAAE9P,OAAS,KACjB2I,KAAK,KAAO,K,mCChMjBjI,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAA,aAAqB,EAErB,IAMgCwJ,EAN5Bo2B,EAuBJ,SAAiCp2B,GAC/B,GAAIA,GAAOA,EAAIjJ,WACb,OAAOiJ,EAGT,GAAY,OAARA,GAAiC,WAAjBD,EAAQC,IAAoC,mBAARA,EACtD,MAAO,CACL,QAAWA,GAIf,IAAIq2B,EAAQC,IAEZ,GAAID,GAASA,EAAMrC,IAAIh0B,GACrB,OAAOq2B,EAAMpK,IAAIjsB,GAGnB,IAAIu2B,EAAS,GACTC,EAAwBn/B,OAAOwwB,gBAAkBxwB,OAAOo/B,yBAE5D,IAAK,IAAI18B,KAAOiG,EACd,GAAI3I,OAAOU,UAAUwM,eAAetM,KAAK+H,EAAKjG,GAAM,CAClD,IAAI28B,EAAOF,EAAwBn/B,OAAOo/B,yBAAyBz2B,EAAKjG,GAAO,KAE3E28B,IAASA,EAAKzK,KAAOyK,EAAKtM,KAC5B/yB,OAAOwwB,eAAe0O,EAAQx8B,EAAK28B,GAEnCH,EAAOx8B,GAAOiG,EAAIjG,GAKxBw8B,EAAgB,QAAIv2B,EAEhBq2B,GACFA,EAAMjM,IAAIpqB,EAAKu2B,GAGjB,OAAOA,EA7DII,CAAwB,EAAQ,QAEzCC,GAI4B52B,EAJe,EAAQ,SAKvCA,EAAIjJ,WAAaiJ,EAAM,CACnC,QAAWA,GAJX62B,EAAS,EAAQ,OAQrB,SAASP,IACP,GAAuB,mBAAZQ,QAAwB,OAAO,KAC1C,IAAIT,EAAQ,IAAIS,QAMhB,OAJAR,EAA2B,WACzB,OAAOD,GAGFA,EA4CT,SAASt2B,EAAQC,GAaf,OATED,EADoB,mBAAX5I,QAAoD,iBAApBA,OAAOC,SACtC,SAAiB4I,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,mBAAX7I,QAAyB6I,EAAI7H,cAAgBhB,QAAU6I,IAAQ7I,OAAOY,UAAY,gBAAkBiI,IAI9GA,GAGjB,SAASoE,IAeP,OAdAA,EAAW/M,OAAOiM,QAAU,SAAUe,GACpC,IAAK,IAAIzN,EAAI,EAAGA,EAAIgK,UAAUjK,OAAQC,IAAK,CACzC,IAAI0N,EAAS1D,UAAUhK,GAEvB,IAAK,IAAImD,KAAOuK,EACVjN,OAAOU,UAAUwM,eAAetM,KAAKqM,EAAQvK,KAC/CsK,EAAOtK,GAAOuK,EAAOvK,IAK3B,OAAOsK,IAGOG,MAAMC,KAAM7D,WAG9B,SAASm2B,EAAgBnF,EAAUoF,GACjC,KAAMpF,aAAoBoF,GACxB,MAAM,IAAIz/B,UAAU,qCAIxB,SAAS0/B,EAAkB5yB,EAAQ/K,GACjC,IAAK,IAAI1C,EAAI,EAAGA,EAAI0C,EAAM3C,OAAQC,IAAK,CACrC,IAAIsgC,EAAa59B,EAAM1C,GACvBsgC,EAAWlL,WAAakL,EAAWlL,aAAc,EACjDkL,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD//B,OAAOwwB,eAAexjB,EAAQ6yB,EAAWn9B,IAAKm9B,IAyBlD,SAASG,EAAgBz/B,EAAGuwB,GAM1B,OALAkP,EAAkBhgC,OAAOigC,gBAAkB,SAAyB1/B,EAAGuwB,GAErE,OADAvwB,EAAE2/B,UAAYpP,EACPvwB,IAGcA,EAAGuwB,GAG5B,SAASqP,EAAaC,GACpB,IAAIC,EAkCN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA1rB,KAAKrU,UAAUC,SAASC,KAAK0/B,QAAQC,UAAUxrB,KAAM,IAAI,iBAClD,EACP,MAAOic,GACP,OAAO,GA3CuB0P,GAEhC,OAAO,WACL,IACI3xB,EADA4xB,EAAQC,EAAgBR,GAG5B,GAAIC,EAA2B,CAC7B,IAAIQ,EAAYD,EAAgBxzB,MAAMtM,YAEtCiO,EAASuxB,QAAQC,UAAUI,EAAOp3B,UAAWs3B,QAE7C9xB,EAAS4xB,EAAMxzB,MAAMC,KAAM7D,WAG7B,OAAOu3B,EAA2B1zB,KAAM2B,IAI5C,SAAS+xB,EAA2B5H,EAAMt4B,GACxC,OAAIA,GAA2B,WAAlB8H,EAAQ9H,IAAsC,mBAATA,EAI3CmgC,EAAuB7H,GAHrBt4B,EAMX,SAASmgC,EAAuB7H,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI8H,eAAe,6DAG3B,OAAO9H,EAgBT,SAAS0H,EAAgBrgC,GAIvB,OAHAqgC,EAAkB5gC,OAAOigC,eAAiBjgC,OAAOihC,eAAiB,SAAyB1gC,GACzF,OAAOA,EAAE2/B,WAAalgC,OAAOihC,eAAe1gC,KAEvBA,GAGzB,SAAS2gC,EAAgBv4B,EAAKjG,EAAKC,GAYjC,OAXID,KAAOiG,EACT3I,OAAOwwB,eAAe7nB,EAAKjG,EAAK,CAC9BC,MAAOA,EACPgyB,YAAY,EACZmL,cAAc,EACdC,UAAU,IAGZp3B,EAAIjG,GAAOC,EAGNgG,EAGT,IAEIw4B,EAAsB,SAAUC,IAhGpC,SAAmBC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIphC,UAAU,sDAGtBmhC,EAAS3gC,UAAYV,OAAOy+B,OAAO6C,GAAcA,EAAW5gC,UAAW,CACrEI,YAAa,CACX6B,MAAO0+B,EACPtB,UAAU,EACVD,cAAc,KAGdwB,GAAYtB,EAAgBqB,EAAUC,GAqF1CC,CAAUJ,EAAQC,GAElB,IAzGoBzB,EAAa6B,EAAYC,EAyGzCC,EAASvB,EAAagB,GAE1B,SAASA,IACP,IAAIQ,EAEJjC,EAAgBtyB,KAAM+zB,GAEtB,IAAK,IAAInI,EAAOzvB,UAAUjK,OAAQsiC,EAAQ,IAAIniC,MAAMu5B,GAAO51B,EAAO,EAAGA,EAAO41B,EAAM51B,IAChFw+B,EAAMx+B,GAAQmG,UAAUnG,GA8K1B,OAzKA89B,EAAgBH,EAFhBY,EAAQD,EAAO9gC,KAAKuM,MAAMu0B,EAAQ,CAACt0B,MAAMxJ,OAAOg+B,KAED,WAAW,GAE1DV,EAAgBH,EAAuBY,GAAQ,WAAW,GAE1DT,EAAgBH,EAAuBY,GAAQ,aAAa,GAE5DT,EAAgBH,EAAuBY,GAAQ,aAAa,GAE5DT,EAAgBH,EAAuBY,GAAQ,cAAe,MAE9DT,EAAgBH,EAAuBY,GAAQ,eAAe,GAE9DT,EAAgBH,EAAuBY,GAAQ,aAAc,MAE7DT,EAAgBH,EAAuBY,GAAQ,oBAAoB,GAEnET,EAAgBH,EAAuBY,GAAQ,qBAAqB,SAAUE,GAC5EF,EAAME,OAASA,EAEfF,EAAME,OAAOzK,KAAKuK,EAAM1/B,MAAM4F,KAE9B85B,EAAMG,cAGRZ,EAAgBH,EAAuBY,GAAQ,qBAAqB,SAAUj/B,GAC5E,OAAKi/B,EAAME,OACJF,EAAME,OAAOn/B,GADM,QAI5Bw+B,EAAgBH,EAAuBY,GAAQ,YAAY,WACzD,GAAIA,EAAM1/B,MAAM4F,KAAO85B,EAAME,QAAUF,EAAMI,QAAS,CACpD,IAAIC,EAAgBL,EAAMM,kBAAoB,EAE1CC,EAAgBP,EAAMQ,mBAEtBC,EAAWT,EAAMU,cAErB,GAAID,EAAU,CACZ,IAAIN,EAAW,CACbE,cAAeA,EACfM,OAAQN,EAAgBI,GAGJ,OAAlBF,IACFJ,EAASI,cAAgBA,EACzBJ,EAASS,OAASL,EAAgBE,GAIhCN,EAASE,gBAAkBL,EAAMa,YAAcV,EAASI,gBAAkBP,EAAMc,YAClFd,EAAM1/B,MAAMygC,WAAWZ,GAGzBH,EAAMa,WAAaV,EAASE,cAC5BL,EAAMc,WAAaX,EAASI,eAIhCP,EAAMgB,gBAAkBC,WAAWjB,EAAMG,SAAUH,EAAM1/B,MAAM4gC,mBAAqBlB,EAAM1/B,MAAM6gC,qBAGlG5B,EAAgBH,EAAuBY,GAAQ,eAAe,WAC5D,GAAKA,EAAMoB,QAAX,CACApB,EAAMI,SAAU,EAChBJ,EAAMqB,WAAY,EAClB,IAAIC,EAActB,EAAM1/B,MACpBihC,EAAUD,EAAYC,QACtBC,EAAUF,EAAYE,QACtBC,EAASH,EAAYG,OACrBC,EAAQJ,EAAYI,MACxBH,IAEKG,GAAoB,OAAXD,GACZzB,EAAME,OAAOyB,UAAUF,GAGrBzB,EAAM4B,aACR5B,EAAME,OAAOzK,KAAKuK,EAAM4B,aAAa,GAErC5B,EAAM4B,YAAc,MACXJ,GACTxB,EAAME,OAAO2B,OAGf7B,EAAM8B,0BAGRvC,EAAgBH,EAAuBY,GAAQ,cAAc,WAC3DA,EAAM+B,WAAY,EAClB/B,EAAMqB,WAAY,EAClB,IAAIW,EAAehC,EAAM1/B,MACrB2hC,EAAUD,EAAaC,QACvBC,EAASF,EAAaE,OACtBC,EAAeH,EAAaG,aAE5BnC,EAAMoC,cACJpC,EAAME,OAAOmC,iBAAoC,IAAjBF,GAClCnC,EAAME,OAAOmC,gBAAgBF,GAG/BF,IACAjC,EAAMoC,aAAc,GAGtBF,IAEIlC,EAAMsC,aACRtC,EAAMuC,OAAOvC,EAAMsC,YAEnBtC,EAAMsC,WAAa,MAGrBtC,EAAM8B,yBAGRvC,EAAgBH,EAAuBY,GAAQ,eAAe,SAAU3Q,GACtE2Q,EAAM+B,WAAY,EAEb/B,EAAMqB,WACTrB,EAAM1/B,MAAMkiC,QAAQnT,MAIxBkQ,EAAgBH,EAAuBY,GAAQ,eAAe,WAC5D,IAAIyC,EAAezC,EAAM1/B,MACrBoiC,EAAeD,EAAaC,aAC5BC,EAAOF,EAAaE,KACpBC,EAAUH,EAAaG,QAEvBF,EAAaG,aAAeF,GAC9B3C,EAAMuC,OAAO,GAGVI,IACH3C,EAAM+B,WAAY,EAClBa,QAIJrD,EAAgBH,EAAuBY,GAAQ,eAAe,WAC5D,IAAI8C,EAEJ9C,EAAMqB,WAAY,GAEjByB,EAAe9C,EAAM1/B,OAAOyiC,QAAQv3B,MAAMs3B,EAAcl7B,cAG3D23B,EAAgBH,EAAuBY,GAAQ,uBAAuB,WACpEgD,aAAahD,EAAMiD,sBAEnB,IAAIxC,EAAWT,EAAMU,cAEjBD,EACGT,EAAMkD,mBACTlD,EAAM1/B,MAAM6iC,WAAW1C,GAEvBT,EAAMkD,kBAAmB,GAG3BlD,EAAMiD,qBAAuBhC,WAAWjB,EAAM8B,oBAAqB,QAIvEvC,EAAgBH,EAAuBY,GAAQ,gBAAgB,WAG7DA,EAAMqB,WAAY,KAGbrB,EAsKT,OArcoBhC,EAkSPwB,GAlSoBK,EAkSZ,CAAC,CACpB9+B,IAAK,oBACLC,MAAO,WACLyK,KAAK21B,SAAU,IAEhB,CACDrgC,IAAK,uBACLC,MAAO,WACLgiC,aAAav3B,KAAKu1B,iBAClBgC,aAAav3B,KAAKw3B,sBAEdx3B,KAAK20B,UACP30B,KAAKy0B,OAAOkD,OAER33B,KAAKy0B,OAAOmD,YACd53B,KAAKy0B,OAAOmD,cAIhB53B,KAAK21B,SAAU,IAEhB,CACDrgC,IAAK,qBACLC,MAAO,SAA4BsiC,GACjC,IAAIC,EAAS93B,KAGT+3B,EAAe/3B,KAAKnL,MACpB4F,EAAMs9B,EAAat9B,IACnBs7B,EAAUgC,EAAahC,QACvBC,EAAS+B,EAAa/B,OACtBC,EAAQ8B,EAAa9B,MACrBS,EAAeqB,EAAarB,aAC5BsB,EAAMD,EAAaC,IACnBd,EAAOa,EAAab,KACpBD,EAAec,EAAad,aAEhC,KAAK,EAAI9E,EAA2B,SAAG0F,EAAUp9B,IAAKA,GAAM,CAC1D,GAAIuF,KAAK41B,YAAcqB,EAAagB,UAGlC,OAFAv7B,QAAQC,KAAK,oCAAoCnG,OAAOiE,EAAK,wDAC7DuF,KAAKm2B,YAAc17B,GAIrBuF,KAAK41B,WAAY,EACjB51B,KAAK22B,aAAc,EACnB32B,KAAKy3B,kBAAmB,EACxBz3B,KAAKy0B,OAAOzK,KAAKvvB,EAAKuF,KAAK20B,SAGxBkD,EAAU9B,UAAWA,GAAY/1B,KAAKs2B,WACzCt2B,KAAKy0B,OAAO2B,OAGVyB,EAAU9B,UAAYA,GAAW/1B,KAAKs2B,WACxCt2B,KAAKy0B,OAAOyD,SAGTL,EAAUG,KAAOA,GAAOh4B,KAAKy0B,OAAO0D,WACvCn4B,KAAKy0B,OAAO0D,YAGVN,EAAUG,MAAQA,GAAOh4B,KAAKy0B,OAAOmD,YACvC53B,KAAKy0B,OAAOmD,aAGVC,EAAU7B,SAAWA,GAAqB,OAAXA,GACjCh2B,KAAKy0B,OAAOyB,UAAUF,GAGpB6B,EAAU5B,QAAUA,IAClBA,EACFj2B,KAAKy0B,OAAO2D,QAEZp4B,KAAKy0B,OAAO4D,SAEG,OAAXrC,GAEFR,YAAW,WACT,OAAOsC,EAAOrD,OAAOyB,UAAUF,QAMnC6B,EAAUnB,eAAiBA,GAAgB12B,KAAKy0B,OAAOmC,iBACzD52B,KAAKy0B,OAAOmC,gBAAgBF,GAG1BmB,EAAUX,OAASA,GAAQl3B,KAAKy0B,OAAO6D,SACzCt4B,KAAKy0B,OAAO6D,QAAQpB,KAGvB,CACD5hC,IAAK,cACLC,MAAO,WACL,OAAKyK,KAAK20B,QACH30B,KAAKy0B,OAAOQ,cADO,OAG3B,CACD3/B,IAAK,iBACLC,MAAO,WACL,OAAKyK,KAAK20B,QACH30B,KAAKy0B,OAAOI,iBADO,OAG3B,CACDv/B,IAAK,mBACLC,MAAO,WACL,OAAKyK,KAAK20B,QACH30B,KAAKy0B,OAAOM,mBADO,OAG3B,CACDz/B,IAAK,SACLC,MAAO,SAAgB2S,EAAQrS,GAC7B,IAAI0iC,EAASv4B,KAGb,IAAKA,KAAK20B,SAAsB,IAAXzsB,EAKnB,OAJAlI,KAAK62B,WAAa3uB,OAClBstB,YAAW,WACT+C,EAAO1B,WAAa,OAtTJ,KA6TpB,GAFkBhhC,EAA2C,aAATA,EAA3BqS,EAAS,GAAKA,EAAS,EAEhC,CAEd,IAAI8sB,EAAWh1B,KAAKy0B,OAAOQ,cAE3B,OAAKD,OAKLh1B,KAAKy0B,OAAOqC,OAAO9B,EAAW9sB,QAJ5BxL,QAAQC,KAAK,2EAQjBqD,KAAKy0B,OAAOqC,OAAO5uB,KAEpB,CACD5S,IAAK,SACLC,MAAO,WACL,IAAIw+B,EAAS/zB,KAAKnL,MAAMoiC,aAExB,OAAKlD,EAIepC,EAAgB,QAAEjzB,cAAcq1B,EAAQp0B,EAAS,GAAIK,KAAKnL,MAAO,CACnF2jC,QAASx4B,KAAKy4B,kBACd3C,QAAS91B,KAAK04B,YACdjC,OAAQz2B,KAAK24B,WACb5B,QAAS/2B,KAAK44B,YACdzB,QAASn3B,KAAK64B,YACdC,SAAU94B,KAAK+4B,aACfzB,QAASt3B,KAAKg5B,eAVP,UArbGxG,EAAkBD,EAAYj/B,UAAW8gC,GACrDC,GAAa7B,EAAkBD,EAAa8B,GAmczCN,EA/ViB,CAgWxBpC,EAAOsH,WAETlnC,EAAA,QAAqBgiC,EAErBD,EAAgBC,EAAQ,cAAe,UAEvCD,EAAgBC,EAAQ,YAAa3B,EAAOtzB,WAE5Cg1B,EAAgBC,EAAQ,eAAgB3B,EAAO7yB,e,mCCrkB/C3M,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAA,aAAqB,EAErB,IAAI4/B,EAaJ,SAAiCp2B,GAC/B,GAAIA,GAAOA,EAAIjJ,WACb,OAAOiJ,EAGT,GAAY,OAARA,GAAiC,WAAjBD,EAAQC,IAAoC,mBAARA,EACtD,MAAO,CACL,QAAWA,GAIf,IAAIq2B,EAAQC,IAEZ,GAAID,GAASA,EAAMrC,IAAIh0B,GACrB,OAAOq2B,EAAMpK,IAAIjsB,GAGnB,IAAIu2B,EAAS,GACTC,EAAwBn/B,OAAOwwB,gBAAkBxwB,OAAOo/B,yBAE5D,IAAK,IAAI18B,KAAOiG,EACd,GAAI3I,OAAOU,UAAUwM,eAAetM,KAAK+H,EAAKjG,GAAM,CAClD,IAAI28B,EAAOF,EAAwBn/B,OAAOo/B,yBAAyBz2B,EAAKjG,GAAO,KAE3E28B,IAASA,EAAKzK,KAAOyK,EAAKtM,KAC5B/yB,OAAOwwB,eAAe0O,EAAQx8B,EAAK28B,GAEnCH,EAAOx8B,GAAOiG,EAAIjG,GAKxBw8B,EAAgB,QAAIv2B,EAEhBq2B,GACFA,EAAMjM,IAAIpqB,EAAKu2B,GAGjB,OAAOA,EAnDII,CAAwB,EAAQ,QAE7C,SAASL,IACP,GAAuB,mBAAZQ,QAAwB,OAAO,KAC1C,IAAIT,EAAQ,IAAIS,QAMhB,OAJAR,EAA2B,WACzB,OAAOD,GAGFA,EA4CT,SAASt2B,EAAQC,GAaf,OATED,EADoB,mBAAX5I,QAAoD,iBAApBA,OAAOC,SACtC,SAAiB4I,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,mBAAX7I,QAAyB6I,EAAI7H,cAAgBhB,QAAU6I,IAAQ7I,OAAOY,UAAY,gBAAkBiI,IAI9GA,GAGjB,SAAS29B,EAAQj6B,EAAQk6B,GACvB,IAAIx+B,EAAO/H,OAAO+H,KAAKsE,GAEvB,GAAIrM,OAAOqvB,sBAAuB,CAChC,IAAImX,EAAUxmC,OAAOqvB,sBAAsBhjB,GACvCk6B,IAAgBC,EAAUA,EAAQ11B,QAAO,SAAU21B,GACrD,OAAOzmC,OAAOo/B,yBAAyB/yB,EAAQo6B,GAAK9R,eAEtD5sB,EAAKzB,KAAK6G,MAAMpF,EAAMy+B,GAGxB,OAAOz+B,EAGT,SAAS2+B,EAAc15B,GACrB,IAAK,IAAIzN,EAAI,EAAGA,EAAIgK,UAAUjK,OAAQC,IAAK,CACzC,IAAI0N,EAAyB,MAAhB1D,UAAUhK,GAAagK,UAAUhK,GAAK,GAE/CA,EAAI,EACN+mC,EAAQtmC,OAAOiN,IAAS,GAAMpH,SAAQ,SAAUnD,GAC9Cw+B,EAAgBl0B,EAAQtK,EAAKuK,EAAOvK,OAE7B1C,OAAO2mC,0BAChB3mC,OAAO4mC,iBAAiB55B,EAAQhN,OAAO2mC,0BAA0B15B,IAEjEq5B,EAAQtmC,OAAOiN,IAASpH,SAAQ,SAAUnD,GACxC1C,OAAOwwB,eAAexjB,EAAQtK,EAAK1C,OAAOo/B,yBAAyBnyB,EAAQvK,OAKjF,OAAOsK,EAGT,SAAS0yB,EAAgBnF,EAAUoF,GACjC,KAAMpF,aAAoBoF,GACxB,MAAM,IAAIz/B,UAAU,qCAIxB,SAAS0/B,EAAkB5yB,EAAQ/K,GACjC,IAAK,IAAI1C,EAAI,EAAGA,EAAI0C,EAAM3C,OAAQC,IAAK,CACrC,IAAIsgC,EAAa59B,EAAM1C,GACvBsgC,EAAWlL,WAAakL,EAAWlL,aAAc,EACjDkL,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD//B,OAAOwwB,eAAexjB,EAAQ6yB,EAAWn9B,IAAKm9B,IAyBlD,SAASG,EAAgBz/B,EAAGuwB,GAM1B,OALAkP,EAAkBhgC,OAAOigC,gBAAkB,SAAyB1/B,EAAGuwB,GAErE,OADAvwB,EAAE2/B,UAAYpP,EACPvwB,IAGcA,EAAGuwB,GAG5B,SAASqP,EAAaC,GACpB,IAAIC,EAkCN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA1rB,KAAKrU,UAAUC,SAASC,KAAK0/B,QAAQC,UAAUxrB,KAAM,IAAI,iBAClD,EACP,MAAOic,GACP,OAAO,GA3CuB0P,GAEhC,OAAO,WACL,IACI3xB,EADA4xB,EAAQC,EAAgBR,GAG5B,GAAIC,EAA2B,CAC7B,IAAIQ,EAAYD,EAAgBxzB,MAAMtM,YAEtCiO,EAASuxB,QAAQC,UAAUI,EAAOp3B,UAAWs3B,QAE7C9xB,EAAS4xB,EAAMxzB,MAAMC,KAAM7D,WAG7B,OAAOu3B,EAA2B1zB,KAAM2B,IAI5C,SAAS+xB,EAA2B5H,EAAMt4B,GACxC,OAAIA,GAA2B,WAAlB8H,EAAQ9H,IAAsC,mBAATA,EAI3CmgC,EAAuB7H,GAHrBt4B,EAMX,SAASmgC,EAAuB7H,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI8H,eAAe,6DAG3B,OAAO9H,EAgBT,SAAS0H,EAAgBrgC,GAIvB,OAHAqgC,EAAkB5gC,OAAOigC,eAAiBjgC,OAAOihC,eAAiB,SAAyB1gC,GACzF,OAAOA,EAAE2/B,WAAalgC,OAAOihC,eAAe1gC,KAEvBA,GAGzB,SAAS2gC,EAAgBv4B,EAAKjG,EAAKC,GAYjC,OAXID,KAAOiG,EACT3I,OAAOwwB,eAAe7nB,EAAKjG,EAAK,CAC9BC,MAAOA,EACPgyB,YAAY,EACZmL,cAAc,EACdC,UAAU,IAGZp3B,EAAIjG,GAAOC,EAGNgG,EAGT,IAAIk+B,EAAY,OACZ7H,EAAQ,GAER8H,EAAuB,SAAU1F,IAjGrC,SAAmBC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIphC,UAAU,sDAGtBmhC,EAAS3gC,UAAYV,OAAOy+B,OAAO6C,GAAcA,EAAW5gC,UAAW,CACrEI,YAAa,CACX6B,MAAO0+B,EACPtB,UAAU,EACVD,cAAc,KAGdwB,GAAYtB,EAAgBqB,EAAUC,GAsF1CC,CAAUuF,EAAS1F,GAEnB,IA1GoBzB,EAAa6B,EAAYC,EA0GzCC,EAASvB,EAAa2G,GAE1B,SAASA,IACP,IAAInF,EAEJjC,EAAgBtyB,KAAM05B,GAEtB,IAAK,IAAI9N,EAAOzvB,UAAUjK,OAAQ8zB,EAAO,IAAI3zB,MAAMu5B,GAAO51B,EAAO,EAAGA,EAAO41B,EAAM51B,IAC/EgwB,EAAKhwB,GAAQmG,UAAUnG,GAiBzB,OAZA89B,EAAgBH,EAFhBY,EAAQD,EAAO9gC,KAAKuM,MAAMu0B,EAAQ,CAACt0B,MAAMxJ,OAAOwvB,KAED,WAAW,GAE1D8N,EAAgBH,EAAuBY,GAAQ,QAAS,CACtDv5B,MAAO,OAGT84B,EAAgBH,EAAuBY,GAAQ,kBAAkB,SAAU3Q,GAC3D,UAAVA,EAAEtuB,KAA6B,MAAVsuB,EAAEtuB,KACzBi/B,EAAM1/B,MAAM8kC,aAITpF,EAqHT,OAxPoBhC,EAsIPmH,GAtIoBtF,EAsIX,CAAC,CACrB9+B,IAAK,oBACLC,MAAO,WACLyK,KAAK21B,SAAU,EACf31B,KAAK45B,WAAW55B,KAAKnL,SAEtB,CACDS,IAAK,qBACLC,MAAO,SAA4BsiC,GACjC,IAAIhC,EAAc71B,KAAKnL,MACnB4F,EAAMo7B,EAAYp7B,IAClBo/B,EAAQhE,EAAYgE,MAEpBhC,EAAUp9B,MAAQA,GAAOo9B,EAAUgC,QAAUA,GAC/C75B,KAAK45B,WAAW55B,KAAKnL,SAGxB,CACDS,IAAK,uBACLC,MAAO,WACLyK,KAAK21B,SAAU,IAEhB,CACDrgC,IAAK,aACLC,MAAO,SAAoBwF,GACzB,IAAI+8B,EAAS93B,KAETvF,EAAMM,EAAKN,IACXo/B,EAAQ9+B,EAAK8+B,MAEjB,GAAqB,iBAAVA,EAAX,CAOA,IAAIjI,EAAMn3B,GAUV,OAHAuF,KAAK85B,SAAS,CACZ9+B,MAAO,OAEFqvB,OAAO0P,MAAM,iCAAiCvjC,OAAOiE,IAAMu/B,MAAK,SAAUC,GAC/E,OAAOA,EAASC,UACfF,MAAK,SAAUG,GAChB,GAAIA,EAAKC,eAAiBtC,EAAOnC,QAAS,CACxC,IAAI36B,EAAQm/B,EAAKC,cAAcrgC,QAAQ,aAAc,cAErD+9B,EAAOgC,SAAS,CACd9+B,MAAOA,IAGT42B,EAAMn3B,GAAOO,MAnBfgF,KAAK85B,SAAS,CACZ9+B,MAAO42B,EAAMn3B,UARfuF,KAAK85B,SAAS,CACZ9+B,MAAO6+B,MA6BZ,CACDvkC,IAAK,SACLC,MAAO,WACL,IAAIghC,EAAev2B,KAAKnL,MACpB8kC,EAAUpD,EAAaoD,QACvBU,EAAW9D,EAAa8D,SACxBr/B,EAAQgF,KAAKs6B,MAAMt/B,MACnBu/B,EAAa,CACfC,QAAS,OACTC,WAAY,SACZC,eAAgB,UAEdC,EAAS,CACXC,QAAStB,EAAc,CACrBx4B,MAAO,OACPC,OAAQ,OACR85B,gBAAiB7/B,EAAQ,OAAOxE,OAAOwE,EAAO,UAAOoB,EACrD0+B,eAAgB,QAChBC,mBAAoB,SACpBC,OAAQ,WACPT,GACHU,OAAQ3B,EAAc,CACpB4B,WAAY,2DACZC,aAAc1B,EACd34B,MAAO24B,EACP14B,OAAQ04B,GACPc,GACHF,SAAU,CACRe,YAAa,QACbC,YAAa,mBACbC,YAAa,4CACbC,WAAY,QAIZC,EAA+B7J,EAAgB,QAAEjzB,cAAc,MAAO,CACxEvB,MAAOw9B,EAAOM,OACdnkC,UAAW,wBACG66B,EAAgB,QAAEjzB,cAAc,MAAO,CACrDvB,MAAOw9B,EAAON,SACdvjC,UAAW,6BAGb,OAAoB66B,EAAgB,QAAEjzB,cAAc,MAAO,CACzDvB,MAAOw9B,EAAOC,QACd9jC,UAAW,wBACX6iC,QAASA,EACT8B,SAAU,EACVC,WAAY17B,KAAK27B,gBAChBtB,GAAYmB,QAnPHhJ,EAAkBD,EAAYj/B,UAAW8gC,GACrDC,GAAa7B,EAAkBD,EAAa8B,GAsPzCqF,EAjJkB,CAkJzB/H,EAAOsH,WAETlnC,EAAA,QAAqB2nC,G,kCCxXrB9mC,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAQ6pC,uBAAoB,EAE5B,IAAIjK,EAASO,EAAwB,EAAQ,QAEzC2J,EAAaC,EAAuB,EAAQ,QAE5CC,EAAcD,EAAuB,EAAQ,QAE7C3J,EAAoB2J,EAAuB,EAAQ,QAEnD1J,EAAS,EAAQ,OAEjB4J,EAAS,EAAQ,OAEjBC,EAAWH,EAAuB,EAAQ,QAE9C,SAASA,EAAuBvgC,GAC9B,OAAOA,GAAOA,EAAIjJ,WAAaiJ,EAAM,CACnC,QAAWA,GAIf,SAASD,EAAQC,GAaf,OATED,EADoB,mBAAX5I,QAAoD,iBAApBA,OAAOC,SACtC,SAAiB4I,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,mBAAX7I,QAAyB6I,EAAI7H,cAAgBhB,QAAU6I,IAAQ7I,OAAOY,UAAY,gBAAkBiI,IAI9GA,GAGjB,SAAS29B,EAAQj6B,EAAQk6B,GACvB,IAAIx+B,EAAO/H,OAAO+H,KAAKsE,GAEvB,GAAIrM,OAAOqvB,sBAAuB,CAChC,IAAImX,EAAUxmC,OAAOqvB,sBAAsBhjB,GACvCk6B,IAAgBC,EAAUA,EAAQ11B,QAAO,SAAU21B,GACrD,OAAOzmC,OAAOo/B,yBAAyB/yB,EAAQo6B,GAAK9R,eAEtD5sB,EAAKzB,KAAK6G,MAAMpF,EAAMy+B,GAGxB,OAAOz+B,EAGT,SAAS2+B,EAAc15B,GACrB,IAAK,IAAIzN,EAAI,EAAGA,EAAIgK,UAAUjK,OAAQC,IAAK,CACzC,IAAI0N,EAAyB,MAAhB1D,UAAUhK,GAAagK,UAAUhK,GAAK,GAE/CA,EAAI,EACN+mC,EAAQtmC,OAAOiN,IAAS,GAAMpH,SAAQ,SAAUnD,GAC9Cw+B,EAAgBl0B,EAAQtK,EAAKuK,EAAOvK,OAE7B1C,OAAO2mC,0BAChB3mC,OAAO4mC,iBAAiB55B,EAAQhN,OAAO2mC,0BAA0B15B,IAEjEq5B,EAAQtmC,OAAOiN,IAASpH,SAAQ,SAAUnD,GACxC1C,OAAOwwB,eAAexjB,EAAQtK,EAAK1C,OAAOo/B,yBAAyBnyB,EAAQvK,OAKjF,OAAOsK,EAGT,SAASD,IAeP,OAdAA,EAAW/M,OAAOiM,QAAU,SAAUe,GACpC,IAAK,IAAIzN,EAAI,EAAGA,EAAIgK,UAAUjK,OAAQC,IAAK,CACzC,IAAI0N,EAAS1D,UAAUhK,GAEvB,IAAK,IAAImD,KAAOuK,EACVjN,OAAOU,UAAUwM,eAAetM,KAAKqM,EAAQvK,KAC/CsK,EAAOtK,GAAOuK,EAAOvK,IAK3B,OAAOsK,IAGOG,MAAMC,KAAM7D,WAG9B,SAASqvB,EAAmBx5B,GAC1B,OAoBF,SAA4BA,GAC1B,GAAIK,MAAMG,QAAQR,GAAM,OAAOkO,EAAkBlO,GArB1CkqC,CAAmBlqC,IAgB5B,SAA0BS,GACxB,GAAsB,oBAAXC,QAA0BA,OAAOC,YAAYC,OAAOH,GAAO,OAAOJ,MAAMQ,KAAKJ,GAjBtD0pC,CAAiBnqC,IAOrD,SAAqCmB,EAAGC,GACtC,IAAKD,EAAG,OACR,GAAiB,iBAANA,EAAgB,OAAO+M,EAAkB/M,EAAGC,GACvD,IAAIC,EAAIT,OAAOU,UAAUC,SAASC,KAAKL,GAAGM,MAAM,GAAI,GAC1C,WAANJ,GAAkBF,EAAEO,cAAaL,EAAIF,EAAEO,YAAYC,MACvD,GAAU,QAANN,GAAqB,QAANA,EAAa,OAAOhB,MAAMQ,KAAKM,GAClD,GAAU,cAANE,GAAqB,2CAA2CO,KAAKP,GAAI,OAAO6M,EAAkB/M,EAAGC,GAb9C6M,CAA4BjO,IAGzF,WACE,MAAM,IAAIc,UAAU,wIAJ2EspC,GAwBjG,SAASl8B,EAAkBlO,EAAKC,IACnB,MAAPA,GAAeA,EAAMD,EAAIE,UAAQD,EAAMD,EAAIE,QAE/C,IAAK,IAAIC,EAAI,EAAGC,EAAO,IAAIC,MAAMJ,GAAME,EAAIF,EAAKE,IAC9CC,EAAKD,GAAKH,EAAIG,GAGhB,OAAOC,EAGT,SAASkgC,EAAgBnF,EAAUoF,GACjC,KAAMpF,aAAoBoF,GACxB,MAAM,IAAIz/B,UAAU,qCAIxB,SAAS0/B,EAAkB5yB,EAAQ/K,GACjC,IAAK,IAAI1C,EAAI,EAAGA,EAAI0C,EAAM3C,OAAQC,IAAK,CACrC,IAAIsgC,EAAa59B,EAAM1C,GACvBsgC,EAAWlL,WAAakL,EAAWlL,aAAc,EACjDkL,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD//B,OAAOwwB,eAAexjB,EAAQ6yB,EAAWn9B,IAAKm9B,IAyBlD,SAASG,EAAgBz/B,EAAGuwB,GAM1B,OALAkP,EAAkBhgC,OAAOigC,gBAAkB,SAAyB1/B,EAAGuwB,GAErE,OADAvwB,EAAE2/B,UAAYpP,EACPvwB,IAGcA,EAAGuwB,GAG5B,SAASqP,EAAaC,GACpB,IAAIC,EAkCN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA1rB,KAAKrU,UAAUC,SAASC,KAAK0/B,QAAQC,UAAUxrB,KAAM,IAAI,iBAClD,EACP,MAAOic,GACP,OAAO,GA3CuB0P,GAEhC,OAAO,WACL,IACI3xB,EADA4xB,EAAQC,EAAgBR,GAG5B,GAAIC,EAA2B,CAC7B,IAAIQ,EAAYD,EAAgBxzB,MAAMtM,YAEtCiO,EAASuxB,QAAQC,UAAUI,EAAOp3B,UAAWs3B,QAE7C9xB,EAAS4xB,EAAMxzB,MAAMC,KAAM7D,WAG7B,OAAOu3B,EAA2B1zB,KAAM2B,IAI5C,SAAS+xB,EAA2B5H,EAAMt4B,GACxC,OAAIA,GAA2B,WAAlB8H,EAAQ9H,IAAsC,mBAATA,EAI3CmgC,EAAuB7H,GAHrBt4B,EAMX,SAASmgC,EAAuB7H,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI8H,eAAe,6DAG3B,OAAO9H,EAgBT,SAAS0H,EAAgBrgC,GAIvB,OAHAqgC,EAAkB5gC,OAAOigC,eAAiBjgC,OAAOihC,eAAiB,SAAyB1gC,GACzF,OAAOA,EAAE2/B,WAAalgC,OAAOihC,eAAe1gC,KAEvBA,GAGzB,SAAS2gC,EAAgBv4B,EAAKjG,EAAKC,GAYjC,OAXID,KAAOiG,EACT3I,OAAOwwB,eAAe7nB,EAAKjG,EAAK,CAC9BC,MAAOA,EACPgyB,YAAY,EACZmL,cAAc,EACdC,UAAU,IAGZp3B,EAAIjG,GAAOC,EAGNgG,EAGT,SAASs2B,IACP,GAAuB,mBAAZQ,QAAwB,OAAO,KAC1C,IAAIT,EAAQ,IAAIS,QAMhB,OAJAR,EAA2B,WACzB,OAAOD,GAGFA,EAGT,SAASM,EAAwB32B,GAC/B,GAAIA,GAAOA,EAAIjJ,WACb,OAAOiJ,EAGT,GAAY,OAARA,GAAiC,WAAjBD,EAAQC,IAAoC,mBAARA,EACtD,MAAO,CACL,QAAWA,GAIf,IAAIq2B,EAAQC,IAEZ,GAAID,GAASA,EAAMrC,IAAIh0B,GACrB,OAAOq2B,EAAMpK,IAAIjsB,GAGnB,IAAIu2B,EAAS,GACTC,EAAwBn/B,OAAOwwB,gBAAkBxwB,OAAOo/B,yBAE5D,IAAK,IAAI18B,KAAOiG,EACd,GAAI3I,OAAOU,UAAUwM,eAAetM,KAAK+H,EAAKjG,GAAM,CAClD,IAAI28B,EAAOF,EAAwBn/B,OAAOo/B,yBAAyBz2B,EAAKjG,GAAO,KAE3E28B,IAASA,EAAKzK,KAAOyK,EAAKtM,KAC5B/yB,OAAOwwB,eAAe0O,EAAQx8B,EAAK28B,GAEnCH,EAAOx8B,GAAOiG,EAAIjG,GAWxB,OANAw8B,EAAgB,QAAIv2B,EAEhBq2B,GACFA,EAAMjM,IAAIpqB,EAAKu2B,GAGVA,EAGT,IAAI4H,GAAuB,EAAI/H,EAAO0K,OAAM,WAC1C,OAAOC,QAAQC,UAAUvC,MAAK,WAC5B,OAAO9H,EAAwB,EAAQ,cAGvCsK,EAA+B,oBAAXnS,QAA0BA,OAAOI,SACrDgS,EAAkB7pC,OAAO+H,KAAKy3B,EAAOtzB,WAGrC49B,EAAoBF,EAAa7K,EAAOgL,SAAW,WACrD,OAAO,MAELC,EAAgB,GAkNpB7qC,EAAQ6pC,kBAhNgB,SAA2BiB,EAASC,GAC1D,IAAIC,EAAQC,EAEZ,OAAOA,EAAQD,EAAsB,SAAU/I,IAnKjD,SAAmBC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIphC,UAAU,sDAGtBmhC,EAAS3gC,UAAYV,OAAOy+B,OAAO6C,GAAcA,EAAW5gC,UAAW,CACrEI,YAAa,CACX6B,MAAO0+B,EACPtB,UAAU,EACVD,cAAc,KAGdwB,GAAYtB,EAAgBqB,EAAUC,GAwJxCC,CAAU8I,EAAajJ,GAEvB,IA5KkBzB,EAAa6B,EAAYC,EA4KvCC,EAASvB,EAAakK,GAE1B,SAASA,IACP,IAAI1I,EAEJjC,EAAgBtyB,KAAMi9B,GAEtB,IAAK,IAAIrR,EAAOzvB,UAAUjK,OAAQ8zB,EAAO,IAAI3zB,MAAMu5B,GAAO51B,EAAO,EAAGA,EAAO41B,EAAM51B,IAC/EgwB,EAAKhwB,GAAQmG,UAAUnG,GAwGzB,OAnGA89B,EAAgBH,EAFhBY,EAAQD,EAAO9gC,KAAKuM,MAAMu0B,EAAQ,CAACt0B,MAAMxJ,OAAOwvB,KAED,QAAS,CACtDkX,cAAe3I,EAAM1/B,MAAMglC,QAG7B/F,EAAgBH,EAAuBY,GAAQ,aAAc,CAC3D4I,QAAS,SAAiBC,GACxB7I,EAAM4I,QAAUC,GAElB3I,OAAQ,SAAgB4I,GACtB9I,EAAME,OAAS4I,KAInBvJ,EAAgBH,EAAuBY,GAAQ,sBAAsB,WACnEA,EAAMuF,SAAS,CACboD,aAAa,OAIjBpJ,EAAgBH,EAAuBY,GAAQ,eAAe,WAC5DA,EAAMuF,SAAS,CACboD,aAAa,OAIjBpJ,EAAgBH,EAAuBY,GAAQ,eAAe,WAC5D,OAAKA,EAAME,OACJF,EAAME,OAAOQ,cADM,QAI5BnB,EAAgBH,EAAuBY,GAAQ,kBAAkB,WAC/D,OAAKA,EAAME,OACJF,EAAME,OAAOI,iBADM,QAI5Bf,EAAgBH,EAAuBY,GAAQ,oBAAoB,WACjE,OAAKA,EAAME,OACJF,EAAME,OAAOM,mBADM,QAI5BjB,EAAgBH,EAAuBY,GAAQ,qBAAqB,WAClE,IAAIj/B,EAAM6G,UAAUjK,OAAS,QAAsBkK,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,SAC9E,OAAKo4B,EAAME,OACJF,EAAME,OAAO6I,kBAAkBhoC,GADZ,QAI5Bw+B,EAAgBH,EAAuBY,GAAQ,UAAU,SAAUgJ,EAAU1nC,GAC3E,IAAK0+B,EAAME,OAAQ,OAAO,KAE1BF,EAAME,OAAOqC,OAAOyG,EAAU1nC,MAGhCi+B,EAAgBH,EAAuBY,GAAQ,eAAe,WAC5DA,EAAM1/B,MAAMihC,QAAQnC,EAAuBY,OAG7CT,EAAgBH,EAAuBY,GAAQ,mBAAmB,EAAIwH,EAAqB,UAAG,SAAUthC,GACtG,IAAK,IAAIq0B,EAAK,EAAG0O,EAAO,GAAGhnC,OAAOomC,EAAepR,EAAmBqR,IAAW/N,EAAK0O,EAAKtrC,OAAQ48B,IAAM,CACrG,IAAI2F,EAAS+I,EAAK1O,GAElB,GAAI2F,EAAOgJ,QAAQhjC,GACjB,OAAOg6B,EAIX,OAAIqI,GAIG,SAGThJ,EAAgBH,EAAuBY,GAAQ,aAAa,EAAIwH,EAAqB,UAAG,SAAUthC,EAAKnF,GACrG,IAAIooC,EAASnJ,EAAM1/B,MAAM6oC,OACzB,OAAO7B,EAAoB,QAAE9Y,IAAI,CAACqP,EAAO7yB,aAAam+B,OAAQtL,EAAO7yB,aAAam+B,OAAOpoC,IAAQ,GAAIooC,EAAQA,EAAOpoC,IAAQ,SAG9Hw+B,EAAgBH,EAAuBY,GAAQ,iBAAiB,EAAIwH,EAAqB,UAAG,SAAUthC,GACpG,OAAO,EAAIuhC,EAAO2B,MAAMpJ,EAAM1/B,MAAO4nC,OAGvC3I,EAAgBH,EAAuBY,GAAQ,sBAAsB,SAAU95B,GAC7E,IAAKA,EAAK,OAAO,KAEjB,IAAIg6B,EAASF,EAAMqJ,gBAAgBnjC,GAEnC,IAAKg6B,EAAQ,OAAO,KAEpB,IAAIiJ,EAASnJ,EAAMsJ,UAAUpjC,EAAKg6B,EAAOn/B,KAEzC,OAAoBq8B,EAAgB,QAAEjzB,cAAcu9B,EAAkB,QAAGt8B,EAAS,GAAI40B,EAAM1/B,MAAO,CACjGS,IAAKm/B,EAAOn/B,IACZkL,IAAK+zB,EAAMuJ,WAAWrJ,OACtBiJ,OAAQA,EACRzG,aAAcxC,EAAOsJ,YAActJ,EACnCqB,QAASvB,EAAMmE,kBAIZnE,EA8DT,OA1VkBhC,EA+RL0K,GA/RkB7I,EA+RL,CAAC,CACzB9+B,IAAK,wBACLC,MAAO,SAA+ByoC,EAAWC,GAC/C,QAAQ,EAAI9L,EAA2B,SAAGnyB,KAAKnL,MAAOmpC,MAAe,EAAI7L,EAA2B,SAAGnyB,KAAKs6B,MAAO2D,KAEpH,CACD3oC,IAAK,qBACLC,MAAO,SAA4BsiC,GACjC,IAAIgC,EAAQ75B,KAAKnL,MAAMglC,OAElBhC,EAAUgC,OAASA,GACtB75B,KAAK85B,SAAS,CACZoD,aAAa,IAIbrF,EAAUgC,QAAUA,GACtB75B,KAAK85B,SAAS,CACZoD,aAAa,MAIlB,CACD5nC,IAAK,gBACLC,MAAO,SAAuBkF,GAC5B,IAAKA,EAAK,OAAO,KACjB,IAAIo7B,EAAc71B,KAAKnL,MACnBglC,EAAQhE,EAAYgE,MACpBQ,EAAWxE,EAAYwE,SAC3B,OAAoB1I,EAAgB,QAAEjzB,cAAcg7B,EAAS,CAC3Dj/B,IAAKA,EACLo/B,MAAOA,EACPQ,SAAUA,EACVV,QAAS35B,KAAKk+B,uBAGjB,CACD5oC,IAAK,SACLC,MAAO,WACL,IAAIghC,EAAev2B,KAAKnL,MACpB4F,EAAM87B,EAAa97B,IACnB0C,EAAQo5B,EAAap5B,MACrB2D,EAAQy1B,EAAaz1B,MACrBC,EAASw1B,EAAax1B,OACtBo9B,EAAU5H,EAAa4G,QACvBD,EAAcl9B,KAAKs6B,MAAM4C,YACzBkB,EAAap+B,KAAKq+B,cAAc5jC,GACpC,OAAoBk3B,EAAgB,QAAEjzB,cAAcy/B,EAASx+B,EAAS,CACpEa,IAAKR,KAAK89B,WAAWX,QACrBhgC,MAAOm8B,EAAcA,EAAc,GAAIn8B,GAAQ,GAAI,CACjD2D,MAAOA,EACPC,OAAQA,KAETq9B,GAA0BzM,EAAgB,QAAEjzB,cAAcg+B,EAAmB,CAC9EI,SAAU,MACTI,EAAcl9B,KAAKs+B,cAAc7jC,GAAOuF,KAAKu+B,mBAAmB9jC,UArVzD+3B,EAAkBD,EAAYj/B,UAAW8gC,GACrDC,GAAa7B,EAAkBD,EAAa8B,GAwVvC4I,EAjL4B,CAkLnCtL,EAAOsH,WAAYnF,EAAgBiJ,EAAQ,cAAe,eAAgBjJ,EAAgBiJ,EAAQ,YAAa3K,EAAOtzB,WAAYg1B,EAAgBiJ,EAAQ,eAAgB3K,EAAO7yB,cAAeu0B,EAAgBiJ,EAAQ,mBAAmB,SAAUtI,GACrPmI,EAAc1jC,KAAKu7B,MACjBX,EAAgBiJ,EAAQ,uBAAuB,WACjDH,EAAc1qC,OAAS,KACrB4hC,EAAgBiJ,EAAQ,WAAW,SAAUtiC,GAC/C,IAAK,IAAI+jC,EAAM,EAAGC,EAAQ,GAAGjoC,OAAOomC,EAAepR,EAAmBqR,IAAW2B,EAAMC,EAAMvsC,OAAQssC,IAAO,CAG1G,GAFcC,EAAMD,GAERf,QAAQhjC,GAClB,OAAO,EAIX,OAAO,KACLq5B,EAAgBiJ,EAAQ,gBAAgB,SAAUtiC,GACpD,IAAK,IAAIikC,EAAM,EAAGC,EAAQ,GAAGnoC,OAAOomC,EAAepR,EAAmBqR,IAAW6B,EAAMC,EAAMzsC,OAAQwsC,IAAO,CAC1G,IAAIE,EAAWD,EAAMD,GAErB,GAAIE,EAASC,cAAgBD,EAASC,aAAapkC,GACjD,OAAO,EAIX,OAAO,KACLuiC,I,mCChgBNjrC,EAAA,OAAqB,EAErB,IAIgCwJ,EAJ5BujC,GAI4BvjC,EAJM,EAAQ,SAK9BA,EAAIjJ,WAAaiJ,EAAM,CACnC,QAAWA,GAJXwjC,EAAe,EAAQ,MAS3B,IAAIjC,EAAWgC,EAAkB,QAAEA,EAAkB,QAAE5sC,OAAS,GAE5D8sC,GAAW,EAAID,EAAanD,mBAAmBkD,EAAkB,QAAGhC,GAExE/qC,EAAA,EAAqBitC,G,mCCpBrBpsC,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAQ0rC,QAAU1rC,EAAQktC,eAAiBltC,EAAQmtC,gBAAkBntC,EAAQotC,eAAiBptC,EAAQqtC,iBAAmBrtC,EAAQstC,iBAAmBttC,EAAQutC,kBAAoBvtC,EAAQwtC,mBAAqBxtC,EAAQytC,sBAAwBztC,EAAQ0tC,yBAA2B1tC,EAAQ2tC,uBAAyB3tC,EAAQ4tC,iBAAmB5tC,EAAQ6tC,qBAAuB7tC,EAAQ8tC,mBAAqB9tC,EAAQ+tC,gBAAkB/tC,EAAQguC,qBAAuBhuC,EAAQiuC,uBAAoB,EAE7d,IAAIhE,EAAS,EAAQ,OAErB,SAASiE,EAA2B9sC,EAAG+sC,GACrC,IAAI1P,EAEJ,GAAsB,oBAAX99B,QAAgD,MAAtBS,EAAET,OAAOC,UAAmB,CAC/D,GAAIN,MAAMG,QAAQW,KAAOq9B,EAqD7B,SAAqCr9B,EAAGC,GACtC,IAAKD,EAAG,OACR,GAAiB,iBAANA,EAAgB,OAAO+M,EAAkB/M,EAAGC,GACvD,IAAIC,EAAIT,OAAOU,UAAUC,SAASC,KAAKL,GAAGM,MAAM,GAAI,GAC1C,WAANJ,GAAkBF,EAAEO,cAAaL,EAAIF,EAAEO,YAAYC,MACvD,GAAU,QAANN,GAAqB,QAANA,EAAa,OAAOhB,MAAMQ,KAAKM,GAClD,GAAU,cAANE,GAAqB,2CAA2CO,KAAKP,GAAI,OAAO6M,EAAkB/M,EAAGC,GA3DzE6M,CAA4B9M,KAAO+sC,GAAkB/sC,GAAyB,iBAAbA,EAAEjB,OAAqB,CAChHs+B,IAAIr9B,EAAIq9B,GACZ,IAAIr+B,EAAI,EAEJguC,EAAI,aAER,MAAO,CACL1c,EAAG0c,EACH9sC,EAAG,WACD,OAAIlB,GAAKgB,EAAEjB,OAAe,CACxBkO,MAAM,GAED,CACLA,MAAM,EACN7K,MAAOpC,EAAEhB,OAGbyxB,EAAG,SAAWwc,GACZ,MAAMA,GAERC,EAAGF,GAIP,MAAM,IAAIrtC,UAAU,yIAGtB,IAEI6tB,EAFA2f,GAAmB,EACnBC,GAAS,EAEb,MAAO,CACL9c,EAAG,WACD+M,EAAKr9B,EAAET,OAAOC,aAEhBU,EAAG,WACD,IAAI2a,EAAOwiB,EAAGnwB,OAEd,OADAigC,EAAmBtyB,EAAK5N,KACjB4N,GAET4V,EAAG,SAAW4c,GACZD,GAAS,EACT5f,EAAM6f,GAERH,EAAG,WACD,IACOC,GAAoC,MAAhB9P,EAAW,QAAWA,EAAW,SAC1D,QACA,GAAI+P,EAAQ,MAAM5f,KAe1B,SAASzgB,EAAkBlO,EAAKC,IACnB,MAAPA,GAAeA,EAAMD,EAAIE,UAAQD,EAAMD,EAAIE,QAE/C,IAAK,IAAIC,EAAI,EAAGC,EAAO,IAAIC,MAAMJ,GAAME,EAAIF,EAAKE,IAC9CC,EAAKD,GAAKH,EAAIG,GAGhB,OAAOC,EAGT,IAAI4tC,EAAoB,oJACxBjuC,EAAQiuC,kBAAoBA,EAC5B,IAAID,EAAuB,sCAC3BhuC,EAAQguC,qBAAuBA,EAC/B,IAAID,EAAkB,iBACtB/tC,EAAQ+tC,gBAAkBA,EAC1B,IAAID,EAAqB,6EACzB9tC,EAAQ8tC,mBAAqBA,EAC7B,IAAID,EAAuB,gCAC3B7tC,EAAQ6tC,qBAAuBA,EAC/B,IAAID,EAAmB,kDACvB5tC,EAAQ4tC,iBAAmBA,EAC3B,IAAID,EAAyB,iDAC7B3tC,EAAQ2tC,uBAAyBA,EACjC,IAAID,EAA2B,mDAC/B1tC,EAAQ0tC,yBAA2BA,EACnC,IAAID,EAAwB,wHAC5BztC,EAAQytC,sBAAwBA,EAChC,IAAID,EAAqB,gCACzBxtC,EAAQwtC,mBAAqBA,EAC7B,IAAID,EAAoB,2CACxBvtC,EAAQutC,kBAAoBA,EAC5B,IAAID,EAAmB,qEACvBttC,EAAQstC,iBAAmBA,EAC3B,IAAID,EAAmB,qCACvBrtC,EAAQqtC,iBAAmBA,EAC3B,IAAID,EAAiB,kBACrBptC,EAAQotC,eAAiBA,EACzB,IAAID,EAAkB,iBACtBntC,EAAQmtC,gBAAkBA,EAC1B,IAAID,EAAiB,iBACrBltC,EAAQktC,eAAiBA,EAEzB,IAiCIxB,EAAU,CACZgD,QAAS,SAAiBhmC,GACxB,OAAIA,aAAepI,MACVoI,EAAIimC,OAAM,SAAU9mC,GACzB,OAAOomC,EAAkBpsC,KAAKgG,MAI3BomC,EAAkBpsC,KAAK6G,IAEhCkmC,WAAY,SAAoBlmC,GAC9B,OAAOslC,EAAqBnsC,KAAK6G,KAAS4kC,EAAiBzrC,KAAK6G,IAElEmmC,MAAO,SAAenmC,GACpB,OAAOqlC,EAAgBlsC,KAAK6G,KAAS2kC,EAAiBxrC,KAAK6G,KAAS0kC,EAAevrC,KAAK6G,IAE1FomC,SAAU,SAAkBpmC,GAC1B,OAAOolC,EAAmBjsC,KAAK6G,IAEjCqmC,WAAY,SAAoBrmC,GAC9B,OAAOmlC,EAAqBhsC,KAAK6G,IAEnCsmC,OAAQ,SAAgBtmC,GACtB,OAAOklC,EAAiB/rC,KAAK6G,IAE/BumC,OAAQ,SAAgBvmC,GACtB,OAAOilC,EAAuB9rC,KAAK6G,IAAQglC,EAAyB7rC,KAAK6G,IAE3EwmC,YAAa,SAAqBxmC,GAChC,OAAO+kC,EAAsB5rC,KAAK6G,IAEpCymC,SAAU,SAAkBzmC,GAC1B,OAAO8kC,EAAmB3rC,KAAK6G,IAEjC0mC,QAAS,SAAiB1mC,GACxB,OAAO6kC,EAAkB1rC,KAAK6G,IAEhC2mC,KAtEgB,SAASC,EAAY5mC,GACrC,GAAIA,aAAepI,MAAO,CACxB,IACI0S,EADAC,EAAYi7B,EAA2BxlC,GAG3C,IACE,IAAKuK,EAAUye,MAAO1e,EAAQC,EAAU3R,KAAK+M,MAAO,CAClD,IAAIxG,EAAOmL,EAAMxP,MAEjB,GAAoB,iBAATqE,GAAqBynC,EAAYznC,GAC1C,OAAO,EAGT,GAAIynC,EAAYznC,EAAKyD,KACnB,OAAO,GAGX,MAAOsjB,GACP3b,EAAU4e,EAAEjD,GACZ,QACA3b,EAAUq7B,IAGZ,OAAO,EAGT,SAAI,EAAIrE,EAAOsF,eAAe7mC,KAIvB4kC,EAAiBzrC,KAAK6G,IAAQ2kC,EAAiBxrC,KAAK6G,IAAQ0kC,EAAevrC,KAAK6G,IAAQykC,EAAgBtrC,KAAK6G,IAAQwkC,EAAerrC,KAAK6G,MA0ClJ1I,EAAQ0rC,QAAUA,G,kCC5LlB7qC,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAA,aAAqB,EAErB,IAAI4/B,EAiBJ,SAAiCp2B,GAC/B,GAAIA,GAAOA,EAAIjJ,WACb,OAAOiJ,EAGT,GAAY,OAARA,GAAiC,WAAjBD,EAAQC,IAAoC,mBAARA,EACtD,MAAO,CACL,QAAWA,GAIf,IAAIq2B,EAAQC,IAEZ,GAAID,GAASA,EAAMrC,IAAIh0B,GACrB,OAAOq2B,EAAMpK,IAAIjsB,GAGnB,IAAIu2B,EAAS,GACTC,EAAwBn/B,OAAOwwB,gBAAkBxwB,OAAOo/B,yBAE5D,IAAK,IAAI18B,KAAOiG,EACd,GAAI3I,OAAOU,UAAUwM,eAAetM,KAAK+H,EAAKjG,GAAM,CAClD,IAAI28B,EAAOF,EAAwBn/B,OAAOo/B,yBAAyBz2B,EAAKjG,GAAO,KAE3E28B,IAASA,EAAKzK,KAAOyK,EAAKtM,KAC5B/yB,OAAOwwB,eAAe0O,EAAQx8B,EAAK28B,GAEnCH,EAAOx8B,GAAOiG,EAAIjG,GAKxBw8B,EAAgB,QAAIv2B,EAEhBq2B,GACFA,EAAMjM,IAAIpqB,EAAKu2B,GAGjB,OAAOA,EAvDII,CAAwB,EAAQ,QAEzC8J,EAAS,EAAQ,OAEjBuF,EAAY,EAAQ,OAExB,SAAS1P,IACP,GAAuB,mBAAZQ,QAAwB,OAAO,KAC1C,IAAIT,EAAQ,IAAIS,QAMhB,OAJAR,EAA2B,WACzB,OAAOD,GAGFA,EA4CT,SAASt2B,EAAQC,GAaf,OATED,EADoB,mBAAX5I,QAAoD,iBAApBA,OAAOC,SACtC,SAAiB4I,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,mBAAX7I,QAAyB6I,EAAI7H,cAAgBhB,QAAU6I,IAAQ7I,OAAOY,UAAY,gBAAkBiI,IAI9GA,GAGjB,SAAS29B,EAAQj6B,EAAQk6B,GACvB,IAAIx+B,EAAO/H,OAAO+H,KAAKsE,GAEvB,GAAIrM,OAAOqvB,sBAAuB,CAChC,IAAImX,EAAUxmC,OAAOqvB,sBAAsBhjB,GACvCk6B,IAAgBC,EAAUA,EAAQ11B,QAAO,SAAU21B,GACrD,OAAOzmC,OAAOo/B,yBAAyB/yB,EAAQo6B,GAAK9R,eAEtD5sB,EAAKzB,KAAK6G,MAAMpF,EAAMy+B,GAGxB,OAAOz+B,EAGT,SAAS2+B,EAAc15B,GACrB,IAAK,IAAIzN,EAAI,EAAGA,EAAIgK,UAAUjK,OAAQC,IAAK,CACzC,IAAI0N,EAAyB,MAAhB1D,UAAUhK,GAAagK,UAAUhK,GAAK,GAE/CA,EAAI,EACN+mC,EAAQtmC,OAAOiN,IAAS,GAAMpH,SAAQ,SAAUnD,GAC9Cw+B,EAAgBl0B,EAAQtK,EAAKuK,EAAOvK,OAE7B1C,OAAO2mC,0BAChB3mC,OAAO4mC,iBAAiB55B,EAAQhN,OAAO2mC,0BAA0B15B,IAEjEq5B,EAAQtmC,OAAOiN,IAASpH,SAAQ,SAAUnD,GACxC1C,OAAOwwB,eAAexjB,EAAQtK,EAAK1C,OAAOo/B,yBAAyBnyB,EAAQvK,OAKjF,OAAOsK,EAGT,SAAS4hC,EAAexvC,EAAKG,GAC3B,OAqDF,SAAyBH,GACvB,GAAIK,MAAMG,QAAQR,GAAM,OAAOA,EAtDxByvC,CAAgBzvC,IA0BzB,SAA+BA,EAAKG,GAClC,GAAsB,oBAAXO,UAA4BA,OAAOC,YAAYC,OAAOZ,IAAO,OACxE,IAAIwrC,EAAO,GACPkE,GAAK,EACLC,GAAK,EACLvB,OAAKhkC,EAET,IACE,IAAK,IAAiCwlC,EAA7B9S,EAAK98B,EAAIU,OAAOC,cAAmB+uC,GAAME,EAAK9S,EAAGzuB,QAAQD,QAChEo9B,EAAKtkC,KAAK0oC,EAAGrsC,QAETpD,GAAKqrC,EAAKtrC,SAAWC,GAH8CuvC,GAAK,IAK9E,MAAO/gB,GACPghB,GAAK,EACLvB,EAAKzf,EACL,QACA,IACO+gB,GAAsB,MAAhB5S,EAAW,QAAWA,EAAW,SAC5C,QACA,GAAI6S,EAAI,MAAMvB,GAIlB,OAAO5C,EAlDwBqE,CAAsB7vC,EAAKG,IAO5D,SAAqCgB,EAAGC,GACtC,IAAKD,EAAG,OACR,GAAiB,iBAANA,EAAgB,OAAO+M,EAAkB/M,EAAGC,GACvD,IAAIC,EAAIT,OAAOU,UAAUC,SAASC,KAAKL,GAAGM,MAAM,GAAI,GAC1C,WAANJ,GAAkBF,EAAEO,cAAaL,EAAIF,EAAEO,YAAYC,MACvD,GAAU,QAANN,GAAqB,QAANA,EAAa,OAAOhB,MAAMQ,KAAKM,GAClD,GAAU,cAANE,GAAqB,2CAA2CO,KAAKP,GAAI,OAAO6M,EAAkB/M,EAAGC,GAbzC6M,CAA4BjO,EAAKG,IAGnG,WACE,MAAM,IAAIW,UAAU,6IAJmFgvC,GAgBzG,SAAS5hC,EAAkBlO,EAAKC,IACnB,MAAPA,GAAeA,EAAMD,EAAIE,UAAQD,EAAMD,EAAIE,QAE/C,IAAK,IAAIC,EAAI,EAAGC,EAAO,IAAIC,MAAMJ,GAAME,EAAIF,EAAKE,IAC9CC,EAAKD,GAAKH,EAAIG,GAGhB,OAAOC,EAkCT,SAASkgC,EAAgBnF,EAAUoF,GACjC,KAAMpF,aAAoBoF,GACxB,MAAM,IAAIz/B,UAAU,qCAIxB,SAAS0/B,EAAkB5yB,EAAQ/K,GACjC,IAAK,IAAI1C,EAAI,EAAGA,EAAI0C,EAAM3C,OAAQC,IAAK,CACrC,IAAIsgC,EAAa59B,EAAM1C,GACvBsgC,EAAWlL,WAAakL,EAAWlL,aAAc,EACjDkL,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD//B,OAAOwwB,eAAexjB,EAAQ6yB,EAAWn9B,IAAKm9B,IAyBlD,SAASG,EAAgBz/B,EAAGuwB,GAM1B,OALAkP,EAAkBhgC,OAAOigC,gBAAkB,SAAyB1/B,EAAGuwB,GAErE,OADAvwB,EAAE2/B,UAAYpP,EACPvwB,IAGcA,EAAGuwB,GAG5B,SAASqP,EAAaC,GACpB,IAAIC,EAkCN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA1rB,KAAKrU,UAAUC,SAASC,KAAK0/B,QAAQC,UAAUxrB,KAAM,IAAI,iBAClD,EACP,MAAOic,GACP,OAAO,GA3CuB0P,GAEhC,OAAO,WACL,IACI3xB,EADA4xB,EAAQC,EAAgBR,GAG5B,GAAIC,EAA2B,CAC7B,IAAIQ,EAAYD,EAAgBxzB,MAAMtM,YAEtCiO,EAASuxB,QAAQC,UAAUI,EAAOp3B,UAAWs3B,QAE7C9xB,EAAS4xB,EAAMxzB,MAAMC,KAAM7D,WAG7B,OAAOu3B,EAA2B1zB,KAAM2B,IAI5C,SAAS+xB,EAA2B5H,EAAMt4B,GACxC,OAAIA,GAA2B,WAAlB8H,EAAQ9H,IAAsC,mBAATA,EAI3CmgC,EAAuB7H,GAHrBt4B,EAMX,SAASmgC,EAAuB7H,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI8H,eAAe,6DAG3B,OAAO9H,EAgBT,SAAS0H,EAAgBrgC,GAIvB,OAHAqgC,EAAkB5gC,OAAOigC,eAAiBjgC,OAAOihC,eAAiB,SAAyB1gC,GACzF,OAAOA,EAAE2/B,WAAalgC,OAAOihC,eAAe1gC,KAEvBA,GAGzB,SAAS2gC,EAAgBv4B,EAAKjG,EAAKC,GAYjC,OAXID,KAAOiG,EACT3I,OAAOwwB,eAAe7nB,EAAKjG,EAAK,CAC9BC,MAAOA,EACPgyB,YAAY,EACZmL,cAAc,EACdC,UAAU,IAGZp3B,EAAIjG,GAAOC,EAGNgG,EAGT,IAIIwmC,EAA2B,SAAU/N,IAlGzC,SAAmBC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIphC,UAAU,sDAGtBmhC,EAAS3gC,UAAYV,OAAOy+B,OAAO6C,GAAcA,EAAW5gC,UAAW,CACrEI,YAAa,CACX6B,MAAO0+B,EACPtB,UAAU,EACVD,cAAc,KAGdwB,GAAYtB,EAAgBqB,EAAUC,GAuF1CC,CAAU4N,EAAa/N,GAEvB,IA3GoBzB,EAAa6B,EAAYC,EA2GzCC,EAASvB,EAAagP,GAE1B,SAASA,IACP,IAAIxN,EAEJjC,EAAgBtyB,KAAM+hC,GAEtB,IAAK,IAAInW,EAAOzvB,UAAUjK,OAAQ8zB,EAAO,IAAI3zB,MAAMu5B,GAAO51B,EAAO,EAAGA,EAAO41B,EAAM51B,IAC/EgwB,EAAKhwB,GAAQmG,UAAUnG,GAyBzB,OApBA89B,EAAgBH,EAFhBY,EAAQD,EAAO9gC,KAAKuM,MAAMu0B,EAAQ,CAACt0B,MAAMxJ,OAAOwvB,KAED,aAAcgW,EAAOgG,YAEpElO,EAAgBH,EAAuBY,GAAQ,oBAAoB,WACjE,IAAIS,EAAWT,EAAMU,cAErBV,EAAM1/B,MAAM6iC,WAAW1C,MAGzBlB,EAAgBH,EAAuBY,GAAQ,QAAQ,WACrDA,EAAMyN,WAAW,YAAY,MAG/BlO,EAAgBH,EAAuBY,GAAQ,UAAU,WACvDA,EAAMyN,WAAW,YAAY,MAG/BlO,EAAgBH,EAAuBY,GAAQ,OAAO,SAAUx9B,GAC9Dw9B,EAAMx9B,UAAYA,KAGbw9B,EAwHT,OApQoBhC,EA+IPwP,GA/IoB3N,EA+IP,CAAC,CACzB9+B,IAAK,oBACLC,MAAO,WACLyK,KAAKnL,MAAM2jC,SAAWx4B,KAAKnL,MAAM2jC,QAAQx4B,QAE1C,CACD1K,IAAK,OACLC,MAAO,SAAckF,GACnB,IAAIq9B,EAAS93B,KAET61B,EAAc71B,KAAKnL,MACnBotC,EAAWpM,EAAYoM,SACvBvE,EAAS7H,EAAY6H,OACrBpG,EAAUzB,EAAYyB,QACtBvB,EAAUF,EAAYE,QAItBr1B,EADc8gC,EADD/mC,EAAIgC,MAAM8kC,EAAU/B,uBACQ,GACxB,GAEjBx/B,KAAKy0B,OACPz0B,KAAKy0B,OAAOzK,KAAKtpB,EAAI,CACnBwhC,OAAO,EAAIlG,EAAOmG,gBAAgB1nC,GAClC2nC,SAAUrM,KAKd,EAAIiG,EAAOqG,QAvEH,+BACG,KACM,eAqEyC,SAAUC,GAClE,OAAOA,EAAG7N,UACTuF,MAAK,SAAUsI,GAChB,GAAKxK,EAAO/gC,UAAZ,CACA,IAAIg9B,EAASuO,EAAG7N,OAChBqD,EAAOrD,OAAS,IAAIV,EAAO+D,EAAO/gC,UAAW,CAC3C+J,MAAO,OACPC,OAAQ,OACRwhC,MAAO7hC,EACP9F,OAAQ0+B,EAAc,CACpB2I,SAAUA,EACVG,SAAUtK,EAAOjjC,MAAMkhC,QACvBqC,KAAMN,EAAOjjC,MAAMohC,MACnBiM,OAAO,EAAIlG,EAAOmG,gBAAgB1nC,GAClC+nC,OAAQnY,OAAOoY,SAASD,QACvB9E,EAAO9iC,QACV8nC,OAAQ,CACNC,SAAU7K,EAAOjjC,MAAMihC,QACvB8M,OAAQ,WACN,OAAO9K,EAAOjjC,MAAMguC,OAAO/K,EAAOrD,OAAOqO,cAE3CC,UAAWjL,EAAOjjC,MAAMsiC,QACxB6L,eAAgBlL,EAAOmL,iBACvB/K,MAAOJ,EAAOjjC,MAAMkiC,QACpBhB,QAAS+B,EAAOjjC,MAAM4hC,OACtByM,QAASpL,EAAOjjC,MAAMsuC,SACtBpZ,MAAO,SAAeqZ,GACpB,OAAO9L,EAAQ8L,UAIpB9L,KAEJ,CACDhiC,IAAK,OACLC,MAAO,WACLyK,KAAKgiC,WAAW,UAEjB,CACD1sC,IAAK,QACLC,MAAO,WACLyK,KAAKgiC,WAAW,WAEjB,CACD1sC,IAAK,OACLC,MAAO,cAEN,CACDD,IAAK,SACLC,MAAO,SAAgByX,GACrBhN,KAAKgiC,WAAW,OAAQh1B,KAEzB,CACD1X,IAAK,YACLC,MAAO,SAAmBgoC,GACxBv9B,KAAKgiC,WAAW,YAAazE,KAE9B,CACDjoC,IAAK,cACLC,MAAO,WACL,OAAOyK,KAAKy0B,OAAOO,UAAY,OAEhC,CACD1/B,IAAK,iBACLC,MAAO,WACL,OAAOyK,KAAKy0B,OAAOqO,cAEpB,CACDxtC,IAAK,mBACLC,MAAO,WACL,OAAOyK,KAAKy0B,OAAO4O,eAEpB,CACD/tC,IAAK,SACLC,MAAO,WACL,IACI4H,EAAQ,CACV2D,MAAO,OACPC,OAAQ,OACRy5B,QAJYx6B,KAAKnL,MAAM2lC,SAMzB,OAAoB7I,EAAgB,QAAEjzB,cAAc,MAAO,CACzDvB,MAAOA,GACOw0B,EAAgB,QAAEjzB,cAAc,MAAO,CACrD8B,IAAKR,KAAKQ,YA9PAgyB,EAAkBD,EAAYj/B,UAAW8gC,GACrDC,GAAa7B,EAAkBD,EAAa8B,GAkQzC0N,EA5JsB,CA6J7BpQ,EAAOsH,WAETlnC,EAAA,QAAqBgwC,EAErBjO,EAAgBiO,EAAa,cAAe,eAE5CjO,EAAgBiO,EAAa,UAAWR,EAAU9D,QAAQwD,aAE1DnN,EAAgBiO,EAAa,eAAe,I,mCCxc5CnvC,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAA,aAAqB,EAErB,IAAI4/B,EAiBJ,SAAiCp2B,GAC/B,GAAIA,GAAOA,EAAIjJ,WACb,OAAOiJ,EAGT,GAAY,OAARA,GAAiC,WAAjBD,EAAQC,IAAoC,mBAARA,EACtD,MAAO,CACL,QAAWA,GAIf,IAAIq2B,EAAQC,IAEZ,GAAID,GAASA,EAAMrC,IAAIh0B,GACrB,OAAOq2B,EAAMpK,IAAIjsB,GAGnB,IAAIu2B,EAAS,GACTC,EAAwBn/B,OAAOwwB,gBAAkBxwB,OAAOo/B,yBAE5D,IAAK,IAAI18B,KAAOiG,EACd,GAAI3I,OAAOU,UAAUwM,eAAetM,KAAK+H,EAAKjG,GAAM,CAClD,IAAI28B,EAAOF,EAAwBn/B,OAAOo/B,yBAAyBz2B,EAAKjG,GAAO,KAE3E28B,IAASA,EAAKzK,KAAOyK,EAAKtM,KAC5B/yB,OAAOwwB,eAAe0O,EAAQx8B,EAAK28B,GAEnCH,EAAOx8B,GAAOiG,EAAIjG,GAKxBw8B,EAAgB,QAAIv2B,EAEhBq2B,GACFA,EAAMjM,IAAIpqB,EAAKu2B,GAGjB,OAAOA,EAvDII,CAAwB,EAAQ,QAEzC8J,EAAS,EAAQ,OAEjBuF,EAAY,EAAQ,OAExB,SAAS1P,IACP,GAAuB,mBAAZQ,QAAwB,OAAO,KAC1C,IAAIT,EAAQ,IAAIS,QAMhB,OAJAR,EAA2B,WACzB,OAAOD,GAGFA,EA4CT,SAASt2B,EAAQC,GAaf,OATED,EADoB,mBAAX5I,QAAoD,iBAApBA,OAAOC,SACtC,SAAiB4I,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,mBAAX7I,QAAyB6I,EAAI7H,cAAgBhB,QAAU6I,IAAQ7I,OAAOY,UAAY,gBAAkBiI,IAI9GA,GAGjB,SAAS+2B,EAAgBnF,EAAUoF,GACjC,KAAMpF,aAAoBoF,GACxB,MAAM,IAAIz/B,UAAU,qCAIxB,SAAS0/B,EAAkB5yB,EAAQ/K,GACjC,IAAK,IAAI1C,EAAI,EAAGA,EAAI0C,EAAM3C,OAAQC,IAAK,CACrC,IAAIsgC,EAAa59B,EAAM1C,GACvBsgC,EAAWlL,WAAakL,EAAWlL,aAAc,EACjDkL,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD//B,OAAOwwB,eAAexjB,EAAQ6yB,EAAWn9B,IAAKm9B,IAyBlD,SAASG,EAAgBz/B,EAAGuwB,GAM1B,OALAkP,EAAkBhgC,OAAOigC,gBAAkB,SAAyB1/B,EAAGuwB,GAErE,OADAvwB,EAAE2/B,UAAYpP,EACPvwB,IAGcA,EAAGuwB,GAG5B,SAASqP,EAAaC,GACpB,IAAIC,EAkCN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA1rB,KAAKrU,UAAUC,SAASC,KAAK0/B,QAAQC,UAAUxrB,KAAM,IAAI,iBAClD,EACP,MAAOic,GACP,OAAO,GA3CuB0P,GAEhC,OAAO,WACL,IACI3xB,EADA4xB,EAAQC,EAAgBR,GAG5B,GAAIC,EAA2B,CAC7B,IAAIQ,EAAYD,EAAgBxzB,MAAMtM,YAEtCiO,EAASuxB,QAAQC,UAAUI,EAAOp3B,UAAWs3B,QAE7C9xB,EAAS4xB,EAAMxzB,MAAMC,KAAM7D,WAG7B,OAAOu3B,EAA2B1zB,KAAM2B,IAI5C,SAAS+xB,EAA2B5H,EAAMt4B,GACxC,OAAIA,GAA2B,WAAlB8H,EAAQ9H,IAAsC,mBAATA,EAI3CmgC,EAAuB7H,GAHrBt4B,EAMX,SAASmgC,EAAuB7H,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI8H,eAAe,6DAG3B,OAAO9H,EAgBT,SAAS0H,EAAgBrgC,GAIvB,OAHAqgC,EAAkB5gC,OAAOigC,eAAiBjgC,OAAOihC,eAAiB,SAAyB1gC,GACzF,OAAOA,EAAE2/B,WAAalgC,OAAOihC,eAAe1gC,KAEvBA,GAGzB,SAAS2gC,EAAgBv4B,EAAKjG,EAAKC,GAYjC,OAXID,KAAOiG,EACT3I,OAAOwwB,eAAe7nB,EAAKjG,EAAK,CAC9BC,MAAOA,EACPgyB,YAAY,EACZmL,cAAc,EACdC,UAAU,IAGZp3B,EAAIjG,GAAOC,EAGNgG,EAGT,IAAI+nC,EAAU,4CAEVC,EAAmB,cACnBC,EAAmB,mBAEnBC,EAAwB,SAAUzP,IAnGtC,SAAmBC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIphC,UAAU,sDAGtBmhC,EAAS3gC,UAAYV,OAAOy+B,OAAO6C,GAAcA,EAAW5gC,UAAW,CACrEI,YAAa,CACX6B,MAAO0+B,EACPtB,UAAU,EACVD,cAAc,KAGdwB,GAAYtB,EAAgBqB,EAAUC,GAwF1CC,CAAUsP,EAAUzP,GAEpB,IA5GoBzB,EAAa6B,EAAYC,EA4GzCC,EAASvB,EAAa0Q,GAE1B,SAASA,IACP,IAAIlP,EAEJjC,EAAgBtyB,KAAMyjC,GAEtB,IAAK,IAAI7X,EAAOzvB,UAAUjK,OAAQ8zB,EAAO,IAAI3zB,MAAMu5B,GAAO51B,EAAO,EAAGA,EAAO41B,EAAM51B,IAC/EgwB,EAAKhwB,GAAQmG,UAAUnG,GAiBzB,OAZA89B,EAAgBH,EAFhBY,EAAQD,EAAO9gC,KAAKuM,MAAMu0B,EAAQ,CAACt0B,MAAMxJ,OAAOwvB,KAED,aAAcgW,EAAOgG,YAEpElO,EAAgBH,EAAuBY,GAAQ,WAAYA,EAAM1/B,MAAM6oC,OAAOgG,UAAY,GAAGltC,OAAOgtC,GAAkBhtC,QAAO,EAAIwlC,EAAO2H,kBAExI7P,EAAgBH,EAAuBY,GAAQ,QAAQ,WACrDA,EAAMyN,WAAW,WAGnBlO,EAAgBH,EAAuBY,GAAQ,UAAU,WACvDA,EAAMyN,WAAW,aAGZzN,EAuHT,OA5PoBhC,EAwIPkR,GAxIoBrP,EAwIV,CAAC,CACtB9+B,IAAK,oBACLC,MAAO,WACLyK,KAAKnL,MAAM2jC,SAAWx4B,KAAKnL,MAAM2jC,QAAQx4B,QAE1C,CACD1K,IAAK,OACLC,MAAO,SAAckF,EAAKk6B,GACxB,IAAImD,EAAS93B,KAET20B,GACF,EAAIqH,EAAOqG,QAAQiB,EA9CV,KA8C+BC,GAAkBvJ,MAAK,SAAU4J,GACvE,OAAOA,EAAGC,MAAM77B,YAKpB,EAAIg0B,EAAOqG,QAAQiB,EApDR,KAoD6BC,GAAkBvJ,MAAK,SAAU4J,GACvEA,EAAGrX,KAAK,CACNuX,MAAOhM,EAAOjjC,MAAM6oC,OAAOoG,MAC3BC,OAAO,EACPC,QAASlM,EAAOjjC,MAAM6oC,OAAOsG,UAE/BJ,EAAGK,MAAMC,UAAU,gBAAgB,SAAUC,GAG3CrM,EAAOjjC,MAAMikC,cAEf8K,EAAGK,MAAMC,UAAU,eAAe,SAAUC,GACzB,UAAbA,EAAItuC,MAAoBsuC,EAAIzjC,KAAOo3B,EAAOsM,WAC5CtM,EAAOrD,OAAS0P,EAAIhX,SAEpB2K,EAAOrD,OAAOyP,UAAU,iBAAkBpM,EAAOjjC,MAAM4hC,QAEvDqB,EAAOrD,OAAOyP,UAAU,SAAUpM,EAAOjjC,MAAMkiC,SAE/Ce,EAAOrD,OAAOyP,UAAU,kBAAmBpM,EAAOjjC,MAAMsiC,SAExDW,EAAOrD,OAAOyP,UAAU,mBAAoBpM,EAAOjjC,MAAMsuC,UAEzDrL,EAAOrD,OAAOyP,UAAU,oBAAqBpM,EAAOjjC,MAAMwvC,aAE1DvM,EAAOrD,OAAOyP,UAAU,QAASpM,EAAOjjC,MAAMyiC,SAEzCQ,EAAOjjC,MAAMohC,OAEhB6B,EAAOkK,WAAW,UAGpBlK,EAAOjjC,MAAMihC,UAIbrL,SAAS6Z,eAAexM,EAAOsM,UAAUG,cAAc,UAAUpnC,MAAMqnC,WAAa,mBAK3F,CACDlvC,IAAK,OACLC,MAAO,WACLyK,KAAKgiC,WAAW,UAEjB,CACD1sC,IAAK,QACLC,MAAO,WACLyK,KAAKgiC,WAAW,WAEjB,CACD1sC,IAAK,OACLC,MAAO,cAEN,CACDD,IAAK,SACLC,MAAO,SAAgByX,GACrBhN,KAAKgiC,WAAW,OAAQh1B,KAEzB,CACD1X,IAAK,YACLC,MAAO,SAAmBgoC,GACxBv9B,KAAKgiC,WAAW,YAAazE,KAE9B,CACDjoC,IAAK,cACLC,MAAO,WACL,OAAOyK,KAAKgiC,WAAW,iBAExB,CACD1sC,IAAK,iBACLC,MAAO,WACL,OAAOyK,KAAKgiC,WAAW,wBAExB,CACD1sC,IAAK,mBACLC,MAAO,WACL,OAAO,OAER,CACDD,IAAK,SACLC,MAAO,WAKL,OAAoBo8B,EAAgB,QAAEjzB,cAAc,MAAO,CACzDvB,MALU,CACV2D,MAAO,OACPC,OAAQ,QAIRL,GAAIV,KAAKokC,SACTttC,UAAW,WACX,YAAakJ,KAAKnL,MAAM4F,IACxB,gBAAiBuF,KAAKnL,MAAMkhC,QAAU,OAAS,QAC/C,uBAAwB,OACxB,gBAAiB/1B,KAAKnL,MAAMotC,SAAW,OAAS,eAtPtCzP,EAAkBD,EAAYj/B,UAAW8gC,GACrDC,GAAa7B,EAAkBD,EAAa8B,GA0PzCoP,EAnJmB,CAoJ1B9R,EAAOsH,WAETlnC,EAAA,QAAqB0xC,EAErB3P,EAAgB2P,EAAU,cAAe,YAEzC3P,EAAgB2P,EAAU,UAAWlC,EAAU9D,QAAQoD,UAEvD/M,EAAgB2P,EAAU,eAAe,I,mCCpWzC7wC,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAA,aAAqB,EAErB,IAAI4/B,EAiBJ,SAAiCp2B,GAC/B,GAAIA,GAAOA,EAAIjJ,WACb,OAAOiJ,EAGT,GAAY,OAARA,GAAiC,WAAjBD,EAAQC,IAAoC,mBAARA,EACtD,MAAO,CACL,QAAWA,GAIf,IAAIq2B,EAAQC,IAEZ,GAAID,GAASA,EAAMrC,IAAIh0B,GACrB,OAAOq2B,EAAMpK,IAAIjsB,GAGnB,IAAIu2B,EAAS,GACTC,EAAwBn/B,OAAOwwB,gBAAkBxwB,OAAOo/B,yBAE5D,IAAK,IAAI18B,KAAOiG,EACd,GAAI3I,OAAOU,UAAUwM,eAAetM,KAAK+H,EAAKjG,GAAM,CAClD,IAAI28B,EAAOF,EAAwBn/B,OAAOo/B,yBAAyBz2B,EAAKjG,GAAO,KAE3E28B,IAASA,EAAKzK,KAAOyK,EAAKtM,KAC5B/yB,OAAOwwB,eAAe0O,EAAQx8B,EAAK28B,GAEnCH,EAAOx8B,GAAOiG,EAAIjG,GAKxBw8B,EAAgB,QAAIv2B,EAEhBq2B,GACFA,EAAMjM,IAAIpqB,EAAKu2B,GAGjB,OAAOA,EAvDII,CAAwB,EAAQ,QAEzC8J,EAAS,EAAQ,OAEjBuF,EAAY,EAAQ,OAExB,SAAS1P,IACP,GAAuB,mBAAZQ,QAAwB,OAAO,KAC1C,IAAIT,EAAQ,IAAIS,QAMhB,OAJAR,EAA2B,WACzB,OAAOD,GAGFA,EA4CT,SAASt2B,EAAQC,GAaf,OATED,EADoB,mBAAX5I,QAAoD,iBAApBA,OAAOC,SACtC,SAAiB4I,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,mBAAX7I,QAAyB6I,EAAI7H,cAAgBhB,QAAU6I,IAAQ7I,OAAOY,UAAY,gBAAkBiI,IAI9GA,GAGjB,SAASoE,IAeP,OAdAA,EAAW/M,OAAOiM,QAAU,SAAUe,GACpC,IAAK,IAAIzN,EAAI,EAAGA,EAAIgK,UAAUjK,OAAQC,IAAK,CACzC,IAAI0N,EAAS1D,UAAUhK,GAEvB,IAAK,IAAImD,KAAOuK,EACVjN,OAAOU,UAAUwM,eAAetM,KAAKqM,EAAQvK,KAC/CsK,EAAOtK,GAAOuK,EAAOvK,IAK3B,OAAOsK,IAGOG,MAAMC,KAAM7D,WAG9B,SAASm2B,EAAgBnF,EAAUoF,GACjC,KAAMpF,aAAoBoF,GACxB,MAAM,IAAIz/B,UAAU,qCAIxB,SAAS0/B,EAAkB5yB,EAAQ/K,GACjC,IAAK,IAAI1C,EAAI,EAAGA,EAAI0C,EAAM3C,OAAQC,IAAK,CACrC,IAAIsgC,EAAa59B,EAAM1C,GACvBsgC,EAAWlL,WAAakL,EAAWlL,aAAc,EACjDkL,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD//B,OAAOwwB,eAAexjB,EAAQ6yB,EAAWn9B,IAAKm9B,IAyBlD,SAASG,EAAgBz/B,EAAGuwB,GAM1B,OALAkP,EAAkBhgC,OAAOigC,gBAAkB,SAAyB1/B,EAAGuwB,GAErE,OADAvwB,EAAE2/B,UAAYpP,EACPvwB,IAGcA,EAAGuwB,GAG5B,SAASqP,EAAaC,GACpB,IAAIC,EAkCN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA1rB,KAAKrU,UAAUC,SAASC,KAAK0/B,QAAQC,UAAUxrB,KAAM,IAAI,iBAClD,EACP,MAAOic,GACP,OAAO,GA3CuB0P,GAEhC,OAAO,WACL,IACI3xB,EADA4xB,EAAQC,EAAgBR,GAG5B,GAAIC,EAA2B,CAC7B,IAAIQ,EAAYD,EAAgBxzB,MAAMtM,YAEtCiO,EAASuxB,QAAQC,UAAUI,EAAOp3B,UAAWs3B,QAE7C9xB,EAAS4xB,EAAMxzB,MAAMC,KAAM7D,WAG7B,OAAOu3B,EAA2B1zB,KAAM2B,IAI5C,SAAS+xB,EAA2B5H,EAAMt4B,GACxC,OAAIA,GAA2B,WAAlB8H,EAAQ9H,IAAsC,mBAATA,EAI3CmgC,EAAuB7H,GAHrBt4B,EAMX,SAASmgC,EAAuB7H,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI8H,eAAe,6DAG3B,OAAO9H,EAgBT,SAAS0H,EAAgBrgC,GAIvB,OAHAqgC,EAAkB5gC,OAAOigC,eAAiBjgC,OAAOihC,eAAiB,SAAyB1gC,GACzF,OAAOA,EAAE2/B,WAAalgC,OAAOihC,eAAe1gC,KAEvBA,GAGzB,SAAS2gC,EAAgBv4B,EAAKjG,EAAKC,GAYjC,OAXID,KAAOiG,EACT3I,OAAOwwB,eAAe7nB,EAAKjG,EAAK,CAC9BC,MAAOA,EACPgyB,YAAY,EACZmL,cAAc,EACdC,UAAU,IAGZp3B,EAAIjG,GAAOC,EAGNgG,EAGT,IAAIkpC,EAA2B,oBAAdla,WAA6B,mBAAmB32B,KAAK22B,UAAUC,aAAeH,OAAOqa,SAOlGC,EAAoB,wBACpBC,EAA0B,sDAG1BC,EAA0B,SAAU7Q,IAzGxC,SAAmBC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIphC,UAAU,sDAGtBmhC,EAAS3gC,UAAYV,OAAOy+B,OAAO6C,GAAcA,EAAW5gC,UAAW,CACrEI,YAAa,CACX6B,MAAO0+B,EACPtB,UAAU,EACVD,cAAc,KAGdwB,GAAYtB,EAAgBqB,EAAUC,GA8F1CC,CAAU0Q,EAAY7Q,GAEtB,IAlHoBzB,EAAa6B,EAAYC,EAkHzCC,EAASvB,EAAa8R,GAE1B,SAASA,IACP,IAAItQ,EAEJjC,EAAgBtyB,KAAM6kC,GAEtB,IAAK,IAAIjZ,EAAOzvB,UAAUjK,OAAQsiC,EAAQ,IAAIniC,MAAMu5B,GAAO51B,EAAO,EAAGA,EAAO41B,EAAM51B,IAChFw+B,EAAMx+B,GAAQmG,UAAUnG,GAoH1B,OA/GA89B,EAAgBH,EAFhBY,EAAQD,EAAO9gC,KAAKuM,MAAMu0B,EAAQ,CAACt0B,MAAMxJ,OAAOg+B,KAED,WAAW,WACxD,IAAIqB,EAEJ,OAAQA,EAActB,EAAM1/B,OAAOihC,QAAQ/1B,MAAM81B,EAAa15B,cAGhE23B,EAAgBH,EAAuBY,GAAQ,UAAU,WACvD,IAAIgC,EAEJ,OAAQA,EAAehC,EAAM1/B,OAAO4hC,OAAO12B,MAAMw2B,EAAcp6B,cAGjE23B,EAAgBH,EAAuBY,GAAQ,YAAY,WACzD,IAAIyC,EAEJ,OAAQA,EAAezC,EAAM1/B,OAAOsuC,SAASpjC,MAAMi3B,EAAc76B,cAGnE23B,EAAgBH,EAAuBY,GAAQ,eAAe,WAC5D,IAAI8C,EAEJ,OAAQA,EAAe9C,EAAM1/B,OAAOwvC,YAAYtkC,MAAMs3B,EAAcl7B,cAGtE23B,EAAgBH,EAAuBY,GAAQ,WAAW,WACxD,IAAIwD,EAEJ,OAAQA,EAAexD,EAAM1/B,OAAOkiC,QAAQh3B,MAAMg4B,EAAc57B,cAGlE23B,EAAgBH,EAAuBY,GAAQ,WAAW,WACxD,IAAIuQ,EAEJ,OAAQA,EAAevQ,EAAM1/B,OAAOsiC,QAAQp3B,MAAM+kC,EAAc3oC,cAGlE23B,EAAgBH,EAAuBY,GAAQ,WAAW,WACxD,IAAIwQ,EAEJ,OAAQA,EAAexQ,EAAM1/B,OAAOyiC,QAAQv3B,MAAMglC,EAAc5oC,cAGlE23B,EAAgBH,EAAuBY,GAAQ,eAAe,WAC5D,IAAIyQ,EAEJ,OAAQA,EAAezQ,EAAM1/B,OAAOowC,YAAYllC,MAAMilC,EAAc7oC,cAGtE23B,EAAgBH,EAAuBY,GAAQ,gBAAgB,SAAU3Q,GACvE,IAAIshB,EAAe3Q,EAAM1/B,MACrBswC,EAAeD,EAAaC,aAC5BpP,EAAUmP,EAAanP,QAC3BoP,EAAavhB,GAETmS,GACFxB,EAAM6B,UAIVtC,EAAgBH,EAAuBY,GAAQ,4BAA4B,SAAU3Q,GACnF,GAAI2Q,EAAME,SAAU,EAAIuH,EAAOoJ,gCAAgC7Q,EAAME,QAAS,CAC5E,IAAI4Q,EAAyB9Q,EAAME,OAAO4Q,uBAEX,uBAA3BA,EACF9Q,EAAM0Q,YAAYrhB,GACkB,WAA3ByhB,GACT9Q,EAAM4Q,aAAavhB,OAKzBkQ,EAAgBH,EAAuBY,GAAQ,UAAU,SAAU3Q,GACjE2Q,EAAM1/B,MAAMguC,OAAOjf,EAAEhkB,OAAOkjC,gBAG9BhP,EAAgBH,EAAuBY,GAAQ,QAAQ,WACrDA,EAAME,OAAOwB,OAAQ,KAGvBnC,EAAgBH,EAAuBY,GAAQ,UAAU,WACvDA,EAAME,OAAOwB,OAAQ,KAGvBnC,EAAgBH,EAAuBY,GAAQ,uBAAuB,SAAU10B,EAAQnK,GACtF,MAAsB,iBAAXmK,EACW8xB,EAAgB,QAAEjzB,cAAc,SAAU,CAC5DpJ,IAAKI,EACL2H,IAAKwC,IAIW8xB,EAAgB,QAAEjzB,cAAc,SAAUiB,EAAS,CACrErK,IAAKI,GACJmK,OAGLi0B,EAAgBH,EAAuBY,GAAQ,eAAe,SAAU+Q,EAAO5vC,GAC7E,OAAoBi8B,EAAgB,QAAEjzB,cAAc,QAASiB,EAAS,CACpErK,IAAKI,GACJ4vC,OAGLxR,EAAgBH,EAAuBY,GAAQ,OAAO,SAAUE,GAC1DF,EAAME,SAERF,EAAMgR,WAAahR,EAAME,QAG3BF,EAAME,OAASA,KAGVF,EA8UT,OA5jBoBhC,EAiPPsS,GAjPoBzQ,EAiPR,CAAC,CACxB9+B,IAAK,oBACLC,MAAO,WACLyK,KAAKnL,MAAM2jC,SAAWx4B,KAAKnL,MAAM2jC,QAAQx4B,MACzCA,KAAKwlC,aAAaxlC,KAAKy0B,QAEnBgQ,GACFzkC,KAAKy0B,OAAOzK,SAGf,CACD10B,IAAK,qBACLC,MAAO,SAA4BsiC,GAC7B73B,KAAKylC,eAAezlC,KAAKnL,SAAWmL,KAAKylC,eAAe5N,KAC1D73B,KAAK0lC,gBAAgB1lC,KAAKulC,YAC1BvlC,KAAKwlC,aAAaxlC,KAAKy0B,WAG1B,CACDn/B,IAAK,uBACLC,MAAO,WACLyK,KAAK0lC,gBAAgB1lC,KAAKy0B,QAEtBz0B,KAAK2lC,KACP3lC,KAAK2lC,IAAItZ,YAGZ,CACD/2B,IAAK,eACLC,MAAO,SAAsBk/B,GAC3B,IAAImR,EAAc5lC,KAAKnL,MAAM+wC,YAC7BnR,EAAOoR,iBAAiB,UAAW7lC,KAAK81B,SACxCrB,EAAOoR,iBAAiB,OAAQ7lC,KAAKy2B,QACrChC,EAAOoR,iBAAiB,UAAW7lC,KAAKmjC,UACxC1O,EAAOoR,iBAAiB,UAAW7lC,KAAKqkC,aACxC5P,EAAOoR,iBAAiB,QAAS7lC,KAAK+2B,SACtCtC,EAAOoR,iBAAiB,SAAU7lC,KAAK6iC,QACvCpO,EAAOoR,iBAAiB,QAAS7lC,KAAKm3B,SACtC1C,EAAOoR,iBAAiB,QAAS7lC,KAAKs3B,SACtC7C,EAAOoR,iBAAiB,wBAAyB7lC,KAAKilC,aACtDxQ,EAAOoR,iBAAiB,wBAAyB7lC,KAAKmlC,cACtD1Q,EAAOoR,iBAAiB,gCAAiC7lC,KAAK8lC,0BAE1DF,IACFnR,EAAOvG,aAAa,cAAe,IACnCuG,EAAOvG,aAAa,qBAAsB,IAC1CuG,EAAOvG,aAAa,iBAAkB,OAGzC,CACD54B,IAAK,kBACLC,MAAO,SAAyBk/B,GAC9BA,EAAOsR,oBAAoB,UAAW/lC,KAAK81B,SAC3CrB,EAAOsR,oBAAoB,OAAQ/lC,KAAKy2B,QACxChC,EAAOsR,oBAAoB,UAAW/lC,KAAKmjC,UAC3C1O,EAAOsR,oBAAoB,UAAW/lC,KAAKqkC,aAC3C5P,EAAOsR,oBAAoB,QAAS/lC,KAAK+2B,SACzCtC,EAAOsR,oBAAoB,SAAU/lC,KAAK6iC,QAC1CpO,EAAOsR,oBAAoB,QAAS/lC,KAAKm3B,SACzC1C,EAAOsR,oBAAoB,QAAS/lC,KAAKs3B,SACzC7C,EAAOsR,oBAAoB,wBAAyB/lC,KAAKilC,aACzDxQ,EAAOsR,oBAAoB,wBAAyB/lC,KAAKmlC,cACzD1Q,EAAOsR,oBAAoB,gCAAiC/lC,KAAK8lC,4BAGlE,CACDxwC,IAAK,iBACLC,MAAO,SAAwBV,GAC7B,OAAIA,EAAM6oC,OAAOsI,aAIbnxC,EAAM6oC,OAAOU,WAAW6H,SAIrB1E,EAAUlC,iBAAiBzrC,KAAKiB,EAAM4F,MAAQ5F,EAAM6oC,OAAOwI,cAEnE,CACD5wC,IAAK,eACLC,MAAO,SAAsBkF,GAC3B,QAAIuF,KAAKnL,MAAM6oC,OAAOyI,WAIlB1B,IAIGlD,EAAUpC,eAAevrC,KAAK6G,IAAQmqC,EAAwBhxC,KAAK6G,MAE3E,CACDnF,IAAK,gBACLC,MAAO,SAAuBkF,GAC5B,OAAO8mC,EAAUrC,gBAAgBtrC,KAAK6G,IAAQuF,KAAKnL,MAAM6oC,OAAO0I,YAEjE,CACD9wC,IAAK,eACLC,MAAO,SAAsBkF,GAC3B,OAAO8mC,EAAUtC,eAAerrC,KAAK6G,IAAQuF,KAAKnL,MAAM6oC,OAAO2I,WAEhE,CACD/wC,IAAK,OACLC,MAAO,SAAckF,GACnB,IAAIq9B,EAAS93B,KAETsmC,EAAqBtmC,KAAKnL,MAAM6oC,OAChC6I,EAAaD,EAAmBC,WAChCC,EAAaF,EAAmBE,WAChCC,EAAcH,EAAmBG,YACjCC,EAAaJ,EAAmBI,WA+DpC,GA7DI1mC,KAAK2lC,KACP3lC,KAAK2lC,IAAItZ,UAGPrsB,KAAK2mC,MACP3mC,KAAK2mC,KAAKC,QAGR5mC,KAAK6mC,aAAapsC,KACpB,EAAIuhC,EAAOqG,QArQD,8DAqQqBtoC,QAAQ,UAAWwsC,GApQzC,OAoQkEvM,MAAK,SAAU8M,GAOxF,GANAhP,EAAO6N,IAAM,IAAImB,EAAIN,GAErB1O,EAAO6N,IAAIoB,GAAGD,EAAIE,OAAOC,OAAO,SAAUrjB,EAAGuW,GAC3CrC,EAAOjjC,MAAMyiC,QAAQ1T,EAAGuW,EAAMrC,EAAO6N,IAAKmB,MAGxClC,EAAwBhxC,KAAK6G,GAAM,CACrC,IAAIiG,EAAKjG,EAAIgC,MAAMmoC,GAAyB,GAE5C9M,EAAO6N,IAAIuB,WAvQS,qDAuQ4BntC,QAAQ,OAAQ2G,SAEhEo3B,EAAO6N,IAAIuB,WAAWzsC,GAGxBq9B,EAAO6N,IAAIwB,YAAYrP,EAAOrD,WAI9Bz0B,KAAKonC,cAAc3sC,KACrB,EAAIuhC,EAAOqG,QAvRA,wEAuRqBtoC,QAAQ,UAAW0sC,GAtRzC,UAsRoEzM,MAAK,SAAUqN,GAC3FvP,EAAO6O,KAAOU,EAAOC,cAAcjW,SAEnCyG,EAAO6O,KAAKY,WAAWzP,EAAOrD,OAAQh6B,EAAKq9B,EAAOjjC,MAAMkhC,SAExD+B,EAAO6O,KAAKI,GAAG,QAASjP,EAAOjjC,MAAMyiC,SAEjChZ,SAASmoB,GAAe,EAC1B3O,EAAO6O,KAAKa,WAAWC,wBAAuB,GAE9C3P,EAAO6O,KAAKe,eAAe,CACzBtc,MAAO,CACLuc,SAAUN,EAAOO,MAAMC,qBAO7B7nC,KAAK8nC,aAAartC,KACpB,EAAIuhC,EAAOqG,QAzSD,8DAySqBtoC,QAAQ,UAAW2sC,GAxSzC,SAwSkE1M,MAAK,SAAU+N,GACxFjQ,EAAOkQ,IAAMD,EAAME,aAAa,CAC9BpyC,KAAM,MACN4E,IAAKA,IAGPq9B,EAAOkQ,IAAIE,mBAAmBpQ,EAAOrD,QAErCqD,EAAOkQ,IAAIhe,UAIXvvB,aAAepI,MAKjB2N,KAAKy0B,OAAOzK,YACP,IAAI,EAAIgS,EAAOsF,eAAe7mC,GACnC,IACEuF,KAAKy0B,OAAO0T,UAAY1tC,EACxB,MAAOmpB,GACP5jB,KAAKy0B,OAAOp3B,IAAMgtB,OAAO+d,IAAIC,gBAAgB5tC,MAIlD,CACDnF,IAAK,OACLC,MAAO,WACL,IAAI+yC,EAAUtoC,KAAKy0B,OAAO2B,OAEtBkS,GACFA,EAAe,MAAEtoC,KAAKnL,MAAMyiC,WAG/B,CACDhiC,IAAK,QACLC,MAAO,WACLyK,KAAKy0B,OAAOyD,UAEb,CACD5iC,IAAK,OACLC,MAAO,WACLyK,KAAKy0B,OAAO8T,gBAAgB,OAExBvoC,KAAK2mC,MACP3mC,KAAK2mC,KAAKC,UAGb,CACDtxC,IAAK,SACLC,MAAO,SAAgByX,GACrBhN,KAAKy0B,OAAOqO,YAAc91B,IAE3B,CACD1X,IAAK,YACLC,MAAO,SAAmBgoC,GACxBv9B,KAAKy0B,OAAOuB,OAASuH,IAEtB,CACDjoC,IAAK,YACLC,MAAO,WACDyK,KAAKy0B,OAAO+T,yBAA2B/d,SAASge,0BAA4BzoC,KAAKy0B,OACnFz0B,KAAKy0B,OAAO+T,2BACH,EAAIxM,EAAOoJ,gCAAgCplC,KAAKy0B,SAAkD,uBAAvCz0B,KAAKy0B,OAAO4Q,wBAChFrlC,KAAKy0B,OAAOiU,0BAA0B,wBAGzC,CACDpzC,IAAK,aACLC,MAAO,WACDk1B,SAASke,sBAAwBle,SAASge,0BAA4BzoC,KAAKy0B,OAC7EhK,SAASke,wBACA,EAAI3M,EAAOoJ,gCAAgCplC,KAAKy0B,SAAkD,WAAvCz0B,KAAKy0B,OAAO4Q,wBAChFrlC,KAAKy0B,OAAOiU,0BAA0B,YAGzC,CACDpzC,IAAK,kBACLC,MAAO,SAAyBqzC,GAC9B5oC,KAAKy0B,OAAOiC,aAAekS,IAE5B,CACDtzC,IAAK,cACLC,MAAO,WACL,IAAKyK,KAAKy0B,OAAQ,OAAO,KACzB,IAAIoU,EAAe7oC,KAAKy0B,OACpBO,EAAW6T,EAAa7T,SACxB8T,EAAWD,EAAaC,SAG5B,OAAI9T,IAAa+T,KAAYD,EAAS52C,OAAS,EACtC42C,EAASE,IAAIF,EAAS52C,OAAS,GAGjC8iC,IAER,CACD1/B,IAAK,iBACLC,MAAO,WACL,OAAKyK,KAAKy0B,OACHz0B,KAAKy0B,OAAOqO,YADM,OAG1B,CACDxtC,IAAK,mBACLC,MAAO,WACL,IAAKyK,KAAKy0B,OAAQ,OAAO,KACzB,IAAIwU,EAAWjpC,KAAKy0B,OAAOwU,SAE3B,GAAwB,IAApBA,EAAS/2C,OACX,OAAO,EAGT,IAAI82C,EAAMC,EAASD,IAAIC,EAAS/2C,OAAS,GACrC8iC,EAAWh1B,KAAKi1B,cAEpB,OAAI+T,EAAMhU,EACDA,EAGFgU,IAER,CACD1zC,IAAK,YACLC,MAAO,SAAmBkF,GACxB,IAAIyuC,EAASlpC,KAAK6mC,aAAapsC,GAC3B0uC,EAAUnpC,KAAKonC,cAAc3sC,GAC7B2uC,EAASppC,KAAK8nC,aAAartC,GAE/B,KAAIA,aAAepI,QAAS,EAAI2pC,EAAOsF,eAAe7mC,IAAQyuC,GAAUC,GAAWC,GAInF,OAAIzE,EAAkB/wC,KAAK6G,GAClBA,EAAIV,QAAQ,kBAAmB,6BAGjCU,IAER,CACDnF,IAAK,SACLC,MAAO,WACL,IAAI8zC,EAAgBrpC,KAAKnL,MACrB4F,EAAM4uC,EAAc5uC,IACpBs7B,EAAUsT,EAActT,QACxBmB,EAAOmS,EAAcnS,KACrB+K,EAAWoH,EAAcpH,SACzBhM,EAAQoT,EAAcpT,MACtByH,EAAS2L,EAAc3L,OACvB58B,EAAQuoC,EAAcvoC,MACtBC,EAASsoC,EAActoC,OAEvB8uB,EADW7vB,KAAKylC,eAAezlC,KAAKnL,OACf,QAAU,QAC/BsI,EAAQ,CACV2D,MAAiB,SAAVA,EAAmBA,EAAQ,OAClCC,OAAmB,SAAXA,EAAoBA,EAAS,QAEvC,OAAoB4wB,EAAgB,QAAEjzB,cAAcmxB,EAASlwB,EAAS,CACpEa,IAAKR,KAAKQ,IACVnD,IAAK2C,KAAKspC,UAAU7uC,GACpB0C,MAAOA,EACPosC,QAAS,OACTC,SAAUzT,QAAW35B,EACrB6lC,SAAUA,EACVhM,MAAOA,EACPiB,KAAMA,GACLwG,EAAOU,YAAa3jC,aAAepI,OAASoI,EAAIvE,IAAI8J,KAAKypC,qBAAsB/L,EAAOgM,OAAOxzC,IAAI8J,KAAK2pC,mBAvjB7FnX,EAAkBD,EAAYj/B,UAAW8gC,GACrDC,GAAa7B,EAAkBD,EAAa8B,GA0jBzCwQ,EA7cqB,CA8c5BlT,EAAOsH,WAETlnC,EAAA,QAAqB8yC,EAErB/Q,EAAgB+Q,EAAY,cAAe,cAE3C/Q,EAAgB+Q,EAAY,UAAWtD,EAAU9D,QAAQ2D,O,mCCprBzDxuC,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAA,aAAqB,EAErB,IAAI4/B,EAiBJ,SAAiCp2B,GAC/B,GAAIA,GAAOA,EAAIjJ,WACb,OAAOiJ,EAGT,GAAY,OAARA,GAAiC,WAAjBD,EAAQC,IAAoC,mBAARA,EACtD,MAAO,CACL,QAAWA,GAIf,IAAIq2B,EAAQC,IAEZ,GAAID,GAASA,EAAMrC,IAAIh0B,GACrB,OAAOq2B,EAAMpK,IAAIjsB,GAGnB,IAAIu2B,EAAS,GACTC,EAAwBn/B,OAAOwwB,gBAAkBxwB,OAAOo/B,yBAE5D,IAAK,IAAI18B,KAAOiG,EACd,GAAI3I,OAAOU,UAAUwM,eAAetM,KAAK+H,EAAKjG,GAAM,CAClD,IAAI28B,EAAOF,EAAwBn/B,OAAOo/B,yBAAyBz2B,EAAKjG,GAAO,KAE3E28B,IAASA,EAAKzK,KAAOyK,EAAKtM,KAC5B/yB,OAAOwwB,eAAe0O,EAAQx8B,EAAK28B,GAEnCH,EAAOx8B,GAAOiG,EAAIjG,GAKxBw8B,EAAgB,QAAIv2B,EAEhBq2B,GACFA,EAAMjM,IAAIpqB,EAAKu2B,GAGjB,OAAOA,EAvDII,CAAwB,EAAQ,QAEzC8J,EAAS,EAAQ,OAEjBuF,EAAY,EAAQ,OAExB,SAAS1P,IACP,GAAuB,mBAAZQ,QAAwB,OAAO,KAC1C,IAAIT,EAAQ,IAAIS,QAMhB,OAJAR,EAA2B,WACzB,OAAOD,GAGFA,EA4CT,SAASt2B,EAAQC,GAaf,OATED,EADoB,mBAAX5I,QAAoD,iBAApBA,OAAOC,SACtC,SAAiB4I,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,mBAAX7I,QAAyB6I,EAAI7H,cAAgBhB,QAAU6I,IAAQ7I,OAAOY,UAAY,gBAAkBiI,IAI9GA,GAGjB,SAAS29B,EAAQj6B,EAAQk6B,GACvB,IAAIx+B,EAAO/H,OAAO+H,KAAKsE,GAEvB,GAAIrM,OAAOqvB,sBAAuB,CAChC,IAAImX,EAAUxmC,OAAOqvB,sBAAsBhjB,GACvCk6B,IAAgBC,EAAUA,EAAQ11B,QAAO,SAAU21B,GACrD,OAAOzmC,OAAOo/B,yBAAyB/yB,EAAQo6B,GAAK9R,eAEtD5sB,EAAKzB,KAAK6G,MAAMpF,EAAMy+B,GAGxB,OAAOz+B,EAGT,SAAS2+B,EAAc15B,GACrB,IAAK,IAAIzN,EAAI,EAAGA,EAAIgK,UAAUjK,OAAQC,IAAK,CACzC,IAAI0N,EAAyB,MAAhB1D,UAAUhK,GAAagK,UAAUhK,GAAK,GAE/CA,EAAI,EACN+mC,EAAQtmC,OAAOiN,IAAS,GAAMpH,SAAQ,SAAUnD,GAC9Cw+B,EAAgBl0B,EAAQtK,EAAKuK,EAAOvK,OAE7B1C,OAAO2mC,0BAChB3mC,OAAO4mC,iBAAiB55B,EAAQhN,OAAO2mC,0BAA0B15B,IAEjEq5B,EAAQtmC,OAAOiN,IAASpH,SAAQ,SAAUnD,GACxC1C,OAAOwwB,eAAexjB,EAAQtK,EAAK1C,OAAOo/B,yBAAyBnyB,EAAQvK,OAKjF,OAAOsK,EAGT,SAAS0yB,EAAgBnF,EAAUoF,GACjC,KAAMpF,aAAoBoF,GACxB,MAAM,IAAIz/B,UAAU,qCAIxB,SAAS0/B,EAAkB5yB,EAAQ/K,GACjC,IAAK,IAAI1C,EAAI,EAAGA,EAAI0C,EAAM3C,OAAQC,IAAK,CACrC,IAAIsgC,EAAa59B,EAAM1C,GACvBsgC,EAAWlL,WAAakL,EAAWlL,aAAc,EACjDkL,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD//B,OAAOwwB,eAAexjB,EAAQ6yB,EAAWn9B,IAAKm9B,IAyBlD,SAASG,EAAgBz/B,EAAGuwB,GAM1B,OALAkP,EAAkBhgC,OAAOigC,gBAAkB,SAAyB1/B,EAAGuwB,GAErE,OADAvwB,EAAE2/B,UAAYpP,EACPvwB,IAGcA,EAAGuwB,GAG5B,SAASqP,EAAaC,GACpB,IAAIC,EAkCN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA1rB,KAAKrU,UAAUC,SAASC,KAAK0/B,QAAQC,UAAUxrB,KAAM,IAAI,iBAClD,EACP,MAAOic,GACP,OAAO,GA3CuB0P,GAEhC,OAAO,WACL,IACI3xB,EADA4xB,EAAQC,EAAgBR,GAG5B,GAAIC,EAA2B,CAC7B,IAAIQ,EAAYD,EAAgBxzB,MAAMtM,YAEtCiO,EAASuxB,QAAQC,UAAUI,EAAOp3B,UAAWs3B,QAE7C9xB,EAAS4xB,EAAMxzB,MAAMC,KAAM7D,WAG7B,OAAOu3B,EAA2B1zB,KAAM2B,IAI5C,SAAS+xB,EAA2B5H,EAAMt4B,GACxC,OAAIA,GAA2B,WAAlB8H,EAAQ9H,IAAsC,mBAATA,EAI3CmgC,EAAuB7H,GAHrBt4B,EAMX,SAASmgC,EAAuB7H,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI8H,eAAe,6DAG3B,OAAO9H,EAgBT,SAAS0H,EAAgBrgC,GAIvB,OAHAqgC,EAAkB5gC,OAAOigC,eAAiBjgC,OAAOihC,eAAiB,SAAyB1gC,GACzF,OAAOA,EAAE2/B,WAAalgC,OAAOihC,eAAe1gC,KAEvBA,GAGzB,SAAS2gC,EAAgBv4B,EAAKjG,EAAKC,GAYjC,OAXID,KAAOiG,EACT3I,OAAOwwB,eAAe7nB,EAAKjG,EAAK,CAC9BC,MAAOA,EACPgyB,YAAY,EACZmL,cAAc,EACdC,UAAU,IAGZp3B,EAAIjG,GAAOC,EAGNgG,EAGT,IAGIquC,EAAwB,SAAU5V,IAjGtC,SAAmBC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIphC,UAAU,sDAGtBmhC,EAAS3gC,UAAYV,OAAOy+B,OAAO6C,GAAcA,EAAW5gC,UAAW,CACrEI,YAAa,CACX6B,MAAO0+B,EACPtB,UAAU,EACVD,cAAc,KAGdwB,GAAYtB,EAAgBqB,EAAUC,GAsF1CC,CAAUyV,EAAU5V,GAEpB,IA1GoBzB,EAAa6B,EAAYC,EA0GzCC,EAASvB,EAAa6W,GAE1B,SAASA,IACP,IAAIrV,EAEJjC,EAAgBtyB,KAAM4pC,GAEtB,IAAK,IAAIhe,EAAOzvB,UAAUjK,OAAQ8zB,EAAO,IAAI3zB,MAAMu5B,GAAO51B,EAAO,EAAGA,EAAO41B,EAAM51B,IAC/EgwB,EAAKhwB,GAAQmG,UAAUnG,GAuBzB,OAlBA89B,EAAgBH,EAFhBY,EAAQD,EAAO9gC,KAAKuM,MAAMu0B,EAAQ,CAACt0B,MAAMxJ,OAAOwvB,KAED,aAAcgW,EAAOgG,YAEpElO,EAAgBH,EAAuBY,GAAQ,WAAY,MAE3DT,EAAgBH,EAAuBY,GAAQ,cAAe,MAE9DT,EAAgBH,EAAuBY,GAAQ,gBAAiB,MAEhET,EAAgBH,EAAuBY,GAAQ,QAAQ,eAGvDT,EAAgBH,EAAuBY,GAAQ,UAAU,eAGzDT,EAAgBH,EAAuBY,GAAQ,OAAO,SAAUsV,GAC9DtV,EAAMsV,OAASA,KAGVtV,EAkGT,OA3OoBhC,EA4IPqX,GA5IoBxV,EA4IV,CAAC,CACtB9+B,IAAK,oBACLC,MAAO,WACLyK,KAAKnL,MAAM2jC,SAAWx4B,KAAKnL,MAAM2jC,QAAQx4B,QAE1C,CACD1K,IAAK,OACLC,MAAO,SAAckF,GACnB,IAAIq9B,EAAS93B,MAEb,EAAIg8B,EAAOqG,QAlDH,oDACG,YAiD6BrI,MAAK,SAAU4P,GACrD9R,EAAOrD,OAASmV,EAASE,aAAahS,EAAO+R,QAE7C/R,EAAOrD,OAAOsV,MAAM/P,MAAK,WACvBlC,EAAOrD,OAAOiO,OAAOtM,KAAK2Q,GAAGjP,EAAOjjC,MAAM4hC,QAE1CqB,EAAOrD,OAAOiO,OAAOxK,MAAM6O,GAAGjP,EAAOjjC,MAAMkiC,SAE3Ce,EAAOrD,OAAOiO,OAAOsH,MAAMjD,GAAGjP,EAAOjjC,MAAMsiC,SAE3CW,EAAOrD,OAAOiO,OAAO3Y,MAAMgd,GAAGjP,EAAOjjC,MAAMk1B,OAE3C+N,EAAOrD,OAAOiO,OAAOhO,SAASqS,IAAG,SAAU/5B,EAASgoB,GAClD8C,EAAOgL,YAAc91B,EACrB8qB,EAAO9C,SAAWA,KAGpB8C,EAAOjjC,MAAMihC,eAEd91B,KAAKnL,MAAMyiC,WAEf,CACDhiC,IAAK,OACLC,MAAO,WACLyK,KAAKgiC,WAAW,UAEjB,CACD1sC,IAAK,QACLC,MAAO,WACLyK,KAAKgiC,WAAW,WAEjB,CACD1sC,IAAK,OACLC,MAAO,cAEN,CACDD,IAAK,SACLC,MAAO,SAAgByX,GACrBhN,KAAKgiC,WAAW,OAAQh1B,KAEzB,CACD1X,IAAK,YACLC,MAAO,SAAmBgoC,MAEzB,CACDjoC,IAAK,cACLC,MAAO,WACL,OAAOyK,KAAKg1B,WAEb,CACD1/B,IAAK,iBACLC,MAAO,WACL,OAAOyK,KAAK8iC,cAEb,CACDxtC,IAAK,mBACLC,MAAO,WACL,OAAO,OAER,CACDD,IAAK,SACLC,MAAO,WACL,IAAIsgC,EAAc71B,KAAKnL,MACnB4F,EAAMo7B,EAAYp7B,IAClBijC,EAAS7H,EAAY6H,OACrBh9B,EAAKjG,EAAIgC,MAAM8kC,EAAUhC,oBAAoB,GAK7C7kC,GAAQ,EAAIshC,EAAOiO,aAAa3Q,EAAcA,EAAc,GAAIoE,EAAOvoC,SAAU,GAAI,CACvF+0C,KAAM,IAAI1zC,OAAOkK,EAAI,QAIvB,OAAoBixB,EAAgB,QAAEjzB,cAAc,SAAU,CAC5DpJ,IAAKoL,EACLF,IAAKR,KAAKQ,IACVrD,MAZU,CACV2D,MAAO,OACPC,OAAQ,QAWR1D,IAAK,2CAA2C7G,OAAOkE,GACvDyvC,YAAa,WArOH3X,EAAkBD,EAAYj/B,UAAW8gC,GACrDC,GAAa7B,EAAkBD,EAAa8B,GAyOzCuV,EApImB,CAqI1BjY,EAAOsH,WAETlnC,EAAA,QAAqB63C,EAErB9V,EAAgB8V,EAAU,cAAe,YAEzC9V,EAAgB8V,EAAU,UAAWrI,EAAU9D,QAAQyD,UAEvDpN,EAAgB8V,EAAU,eAAe,I,mCCrXzCh3C,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAA,aAAqB,EAErB,IAAI4/B,EAiBJ,SAAiCp2B,GAC/B,GAAIA,GAAOA,EAAIjJ,WACb,OAAOiJ,EAGT,GAAY,OAARA,GAAiC,WAAjBD,EAAQC,IAAoC,mBAARA,EACtD,MAAO,CACL,QAAWA,GAIf,IAAIq2B,EAAQC,IAEZ,GAAID,GAASA,EAAMrC,IAAIh0B,GACrB,OAAOq2B,EAAMpK,IAAIjsB,GAGnB,IAAIu2B,EAAS,GACTC,EAAwBn/B,OAAOwwB,gBAAkBxwB,OAAOo/B,yBAE5D,IAAK,IAAI18B,KAAOiG,EACd,GAAI3I,OAAOU,UAAUwM,eAAetM,KAAK+H,EAAKjG,GAAM,CAClD,IAAI28B,EAAOF,EAAwBn/B,OAAOo/B,yBAAyBz2B,EAAKjG,GAAO,KAE3E28B,IAASA,EAAKzK,KAAOyK,EAAKtM,KAC5B/yB,OAAOwwB,eAAe0O,EAAQx8B,EAAK28B,GAEnCH,EAAOx8B,GAAOiG,EAAIjG,GAKxBw8B,EAAgB,QAAIv2B,EAEhBq2B,GACFA,EAAMjM,IAAIpqB,EAAKu2B,GAGjB,OAAOA,EAvDII,CAAwB,EAAQ,QAEzC8J,EAAS,EAAQ,OAEjBuF,EAAY,EAAQ,OAExB,SAAS1P,IACP,GAAuB,mBAAZQ,QAAwB,OAAO,KAC1C,IAAIT,EAAQ,IAAIS,QAMhB,OAJAR,EAA2B,WACzB,OAAOD,GAGFA,EA4CT,SAASt2B,EAAQC,GAaf,OATED,EADoB,mBAAX5I,QAAoD,iBAApBA,OAAOC,SACtC,SAAiB4I,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,mBAAX7I,QAAyB6I,EAAI7H,cAAgBhB,QAAU6I,IAAQ7I,OAAOY,UAAY,gBAAkBiI,IAI9GA,GAGjB,SAAS29B,EAAQj6B,EAAQk6B,GACvB,IAAIx+B,EAAO/H,OAAO+H,KAAKsE,GAEvB,GAAIrM,OAAOqvB,sBAAuB,CAChC,IAAImX,EAAUxmC,OAAOqvB,sBAAsBhjB,GACvCk6B,IAAgBC,EAAUA,EAAQ11B,QAAO,SAAU21B,GACrD,OAAOzmC,OAAOo/B,yBAAyB/yB,EAAQo6B,GAAK9R,eAEtD5sB,EAAKzB,KAAK6G,MAAMpF,EAAMy+B,GAGxB,OAAOz+B,EAGT,SAAS2+B,EAAc15B,GACrB,IAAK,IAAIzN,EAAI,EAAGA,EAAIgK,UAAUjK,OAAQC,IAAK,CACzC,IAAI0N,EAAyB,MAAhB1D,UAAUhK,GAAagK,UAAUhK,GAAK,GAE/CA,EAAI,EACN+mC,EAAQtmC,OAAOiN,IAAS,GAAMpH,SAAQ,SAAUnD,GAC9Cw+B,EAAgBl0B,EAAQtK,EAAKuK,EAAOvK,OAE7B1C,OAAO2mC,0BAChB3mC,OAAO4mC,iBAAiB55B,EAAQhN,OAAO2mC,0BAA0B15B,IAEjEq5B,EAAQtmC,OAAOiN,IAASpH,SAAQ,SAAUnD,GACxC1C,OAAOwwB,eAAexjB,EAAQtK,EAAK1C,OAAOo/B,yBAAyBnyB,EAAQvK,OAKjF,OAAOsK,EAGT,SAAS0yB,EAAgBnF,EAAUoF,GACjC,KAAMpF,aAAoBoF,GACxB,MAAM,IAAIz/B,UAAU,qCAIxB,SAAS0/B,EAAkB5yB,EAAQ/K,GACjC,IAAK,IAAI1C,EAAI,EAAGA,EAAI0C,EAAM3C,OAAQC,IAAK,CACrC,IAAIsgC,EAAa59B,EAAM1C,GACvBsgC,EAAWlL,WAAakL,EAAWlL,aAAc,EACjDkL,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD//B,OAAOwwB,eAAexjB,EAAQ6yB,EAAWn9B,IAAKm9B,IAyBlD,SAASG,EAAgBz/B,EAAGuwB,GAM1B,OALAkP,EAAkBhgC,OAAOigC,gBAAkB,SAAyB1/B,EAAGuwB,GAErE,OADAvwB,EAAE2/B,UAAYpP,EACPvwB,IAGcA,EAAGuwB,GAG5B,SAASqP,EAAaC,GACpB,IAAIC,EAkCN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA1rB,KAAKrU,UAAUC,SAASC,KAAK0/B,QAAQC,UAAUxrB,KAAM,IAAI,iBAClD,EACP,MAAOic,GACP,OAAO,GA3CuB0P,GAEhC,OAAO,WACL,IACI3xB,EADA4xB,EAAQC,EAAgBR,GAG5B,GAAIC,EAA2B,CAC7B,IAAIQ,EAAYD,EAAgBxzB,MAAMtM,YAEtCiO,EAASuxB,QAAQC,UAAUI,EAAOp3B,UAAWs3B,QAE7C9xB,EAAS4xB,EAAMxzB,MAAMC,KAAM7D,WAG7B,OAAOu3B,EAA2B1zB,KAAM2B,IAI5C,SAAS+xB,EAA2B5H,EAAMt4B,GACxC,OAAIA,GAA2B,WAAlB8H,EAAQ9H,IAAsC,mBAATA,EAI3CmgC,EAAuB7H,GAHrBt4B,EAMX,SAASmgC,EAAuB7H,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI8H,eAAe,6DAG3B,OAAO9H,EAgBT,SAAS0H,EAAgBrgC,GAIvB,OAHAqgC,EAAkB5gC,OAAOigC,eAAiBjgC,OAAOihC,eAAiB,SAAyB1gC,GACzF,OAAOA,EAAE2/B,WAAalgC,OAAOihC,eAAe1gC,KAEvBA,GAGzB,SAAS2gC,EAAgBv4B,EAAKjG,EAAKC,GAYjC,OAXID,KAAOiG,EACT3I,OAAOwwB,eAAe7nB,EAAKjG,EAAK,CAC9BC,MAAOA,EACPgyB,YAAY,EACZmL,cAAc,EACdC,UAAU,IAGZp3B,EAAIjG,GAAOC,EAGNgG,EAGT,IAGI6uC,EAA0B,SAAUpW,IAjGxC,SAAmBC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIphC,UAAU,sDAGtBmhC,EAAS3gC,UAAYV,OAAOy+B,OAAO6C,GAAcA,EAAW5gC,UAAW,CACrEI,YAAa,CACX6B,MAAO0+B,EACPtB,UAAU,EACVD,cAAc,KAGdwB,GAAYtB,EAAgBqB,EAAUC,GAsF1CC,CAAUiW,EAAYpW,GAEtB,IA1GoBzB,EAAa6B,EAAYC,EA0GzCC,EAASvB,EAAaqX,GAE1B,SAASA,IACP,IAAI7V,EAEJjC,EAAgBtyB,KAAMoqC,GAEtB,IAAK,IAAIxe,EAAOzvB,UAAUjK,OAAQ8zB,EAAO,IAAI3zB,MAAMu5B,GAAO51B,EAAO,EAAGA,EAAO41B,EAAM51B,IAC/EgwB,EAAKhwB,GAAQmG,UAAUnG,GA2BzB,OAtBA89B,EAAgBH,EAFhBY,EAAQD,EAAO9gC,KAAKuM,MAAMu0B,EAAQ,CAACt0B,MAAMxJ,OAAOwvB,KAED,aAAcgW,EAAOgG,YAEpElO,EAAgBH,EAAuBY,GAAQ,WAAY,MAE3DT,EAAgBH,EAAuBY,GAAQ,cAAe,MAE9DT,EAAgBH,EAAuBY,GAAQ,iBAAkB,MAEjET,EAAgBH,EAAuBY,GAAQ,QAAQ,WACrDA,EAAM2B,UAAU,MAGlBpC,EAAgBH,EAAuBY,GAAQ,UAAU,WAC5B,OAAvBA,EAAM1/B,MAAMmhC,QACdzB,EAAM2B,UAAU3B,EAAM1/B,MAAMmhC,WAIhClC,EAAgBH,EAAuBY,GAAQ,OAAO,SAAUsV,GAC9DtV,EAAMsV,OAASA,KAGVtV,EAyHT,OAtQoBhC,EAgJP6X,GAhJoBhW,EAgJR,CAAC,CACxB9+B,IAAK,oBACLC,MAAO,WACLyK,KAAKnL,MAAM2jC,SAAWx4B,KAAKnL,MAAM2jC,QAAQx4B,QAE1C,CACD1K,IAAK,OACLC,MAAO,SAAckF,EAAKk6B,GACxB,IAAImD,EAAS93B,MAEb,EAAIg8B,EAAOqG,QAtDH,yCACG,MAqD6BrI,MAAK,SAAUqQ,GACrD,GAAKvS,EAAO+R,OAAZ,CACA,IAAIS,EAAoBD,EAAGE,OAAOvD,OAC9BwD,EAAOF,EAAkBE,KACzBC,EAAgBH,EAAkBG,cAClCC,EAAQJ,EAAkBI,MAC1BC,EAASL,EAAkBK,OAC3B1D,EAAQqD,EAAkBrD,MAEzBtS,IACHmD,EAAOrD,OAAS4V,EAAGE,OAAOzS,EAAO+R,QAEjC/R,EAAOrD,OAAO58B,KAAK2yC,EAAM1S,EAAOjjC,MAAM4hC,QAEtCqB,EAAOrD,OAAO58B,KAAK6yC,GAAO,WACR5S,EAAO9C,SAAW8C,EAAOgL,YAEzB,KAKhBhL,EAAOjjC,MAAMkiC,aAGfe,EAAOrD,OAAO58B,KAAK4yC,GAAe,SAAU7mB,GAC1CkU,EAAOgL,YAAclf,EAAEgnB,gBAAkB,IACzC9S,EAAO+S,eAAiBjnB,EAAEknB,kBAG5BhT,EAAOrD,OAAO58B,KAAK8yC,GAAQ,WACzB,OAAO7S,EAAOjjC,MAAMsiC,aAGtBW,EAAOrD,OAAO58B,KAAKovC,GAAO,SAAUrjB,GAClC,OAAOkU,EAAOjjC,MAAMyiC,QAAQ1T,OAIhCkU,EAAOrD,OAAOzK,KAAKvvB,EAAK6+B,EAAcA,EAAc,GAAIxB,EAAOjjC,MAAM6oC,OAAOvoC,SAAU,GAAI,CACxF41C,SAAU,WACRjT,EAAOrD,OAAOQ,aAAY,SAAUD,GAClC8C,EAAO9C,SAAWA,EAAW,IAE7B8C,EAAOjjC,MAAMihC,uBAMtB,CACDxgC,IAAK,OACLC,MAAO,WACLyK,KAAKgiC,WAAW,UAEjB,CACD1sC,IAAK,QACLC,MAAO,WACLyK,KAAKgiC,WAAW,WAEjB,CACD1sC,IAAK,OACLC,MAAO,cAEN,CACDD,IAAK,SACLC,MAAO,SAAgByX,GACrBhN,KAAKgiC,WAAW,SAAoB,IAAVh1B,KAE3B,CACD1X,IAAK,YACLC,MAAO,SAAmBgoC,GACxBv9B,KAAKgiC,WAAW,YAAwB,IAAXzE,KAE9B,CACDjoC,IAAK,cACLC,MAAO,WACL,OAAOyK,KAAKg1B,WAEb,CACD1/B,IAAK,iBACLC,MAAO,WACL,OAAOyK,KAAK8iC,cAEb,CACDxtC,IAAK,mBACLC,MAAO,WACL,OAAOyK,KAAK6qC,eAAiB7qC,KAAKg1B,WAEnC,CACD1/B,IAAK,SACLC,MAAO,WACL,IACI4H,EAAQ,CACV2D,MAAO,OACPC,OAAQ,OACRy5B,QAJYx6B,KAAKnL,MAAM2lC,SAMzB,OAAoB7I,EAAgB,QAAEjzB,cAAc,SAAU,CAC5D8B,IAAKR,KAAKQ,IACVnD,IAAK,wCAAwC7G,OAAO2D,mBAAmB6F,KAAKnL,MAAM4F,MAClF0C,MAAOA,EACPgtC,YAAa,EACba,MAAO,kBAhQGxY,EAAkBD,EAAYj/B,UAAW8gC,GACrDC,GAAa7B,EAAkBD,EAAa8B,GAoQzC+V,EA/JqB,CAgK5BzY,EAAOsH,WAETlnC,EAAA,QAAqBq4C,EAErBtW,EAAgBsW,EAAY,cAAe,cAE3CtW,EAAgBsW,EAAY,UAAW7I,EAAU9D,QAAQkD,YAEzD7M,EAAgBsW,EAAY,eAAe,I,mCChZ3Cx3C,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAA,aAAqB,EAErB,IAAI4/B,EAiBJ,SAAiCp2B,GAC/B,GAAIA,GAAOA,EAAIjJ,WACb,OAAOiJ,EAGT,GAAY,OAARA,GAAiC,WAAjBD,EAAQC,IAAoC,mBAARA,EACtD,MAAO,CACL,QAAWA,GAIf,IAAIq2B,EAAQC,IAEZ,GAAID,GAASA,EAAMrC,IAAIh0B,GACrB,OAAOq2B,EAAMpK,IAAIjsB,GAGnB,IAAIu2B,EAAS,GACTC,EAAwBn/B,OAAOwwB,gBAAkBxwB,OAAOo/B,yBAE5D,IAAK,IAAI18B,KAAOiG,EACd,GAAI3I,OAAOU,UAAUwM,eAAetM,KAAK+H,EAAKjG,GAAM,CAClD,IAAI28B,EAAOF,EAAwBn/B,OAAOo/B,yBAAyBz2B,EAAKjG,GAAO,KAE3E28B,IAASA,EAAKzK,KAAOyK,EAAKtM,KAC5B/yB,OAAOwwB,eAAe0O,EAAQx8B,EAAK28B,GAEnCH,EAAOx8B,GAAOiG,EAAIjG,GAKxBw8B,EAAgB,QAAIv2B,EAEhBq2B,GACFA,EAAMjM,IAAIpqB,EAAKu2B,GAGjB,OAAOA,EAvDII,CAAwB,EAAQ,QAEzC8J,EAAS,EAAQ,OAEjBuF,EAAY,EAAQ,OAExB,SAAS1P,IACP,GAAuB,mBAAZQ,QAAwB,OAAO,KAC1C,IAAIT,EAAQ,IAAIS,QAMhB,OAJAR,EAA2B,WACzB,OAAOD,GAGFA,EA4CT,SAASt2B,EAAQC,GAaf,OATED,EADoB,mBAAX5I,QAAoD,iBAApBA,OAAOC,SACtC,SAAiB4I,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,mBAAX7I,QAAyB6I,EAAI7H,cAAgBhB,QAAU6I,IAAQ7I,OAAOY,UAAY,gBAAkBiI,IAI9GA,GAGjB,SAAS+2B,EAAgBnF,EAAUoF,GACjC,KAAMpF,aAAoBoF,GACxB,MAAM,IAAIz/B,UAAU,qCAIxB,SAAS0/B,EAAkB5yB,EAAQ/K,GACjC,IAAK,IAAI1C,EAAI,EAAGA,EAAI0C,EAAM3C,OAAQC,IAAK,CACrC,IAAIsgC,EAAa59B,EAAM1C,GACvBsgC,EAAWlL,WAAakL,EAAWlL,aAAc,EACjDkL,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD//B,OAAOwwB,eAAexjB,EAAQ6yB,EAAWn9B,IAAKm9B,IAyBlD,SAASG,EAAgBz/B,EAAGuwB,GAM1B,OALAkP,EAAkBhgC,OAAOigC,gBAAkB,SAAyB1/B,EAAGuwB,GAErE,OADAvwB,EAAE2/B,UAAYpP,EACPvwB,IAGcA,EAAGuwB,GAG5B,SAASqP,EAAaC,GACpB,IAAIC,EAkCN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA1rB,KAAKrU,UAAUC,SAASC,KAAK0/B,QAAQC,UAAUxrB,KAAM,IAAI,iBAClD,EACP,MAAOic,GACP,OAAO,GA3CuB0P,GAEhC,OAAO,WACL,IACI3xB,EADA4xB,EAAQC,EAAgBR,GAG5B,GAAIC,EAA2B,CAC7B,IAAIQ,EAAYD,EAAgBxzB,MAAMtM,YAEtCiO,EAASuxB,QAAQC,UAAUI,EAAOp3B,UAAWs3B,QAE7C9xB,EAAS4xB,EAAMxzB,MAAMC,KAAM7D,WAG7B,OAAOu3B,EAA2B1zB,KAAM2B,IAI5C,SAAS+xB,EAA2B5H,EAAMt4B,GACxC,OAAIA,GAA2B,WAAlB8H,EAAQ9H,IAAsC,mBAATA,EAI3CmgC,EAAuB7H,GAHrBt4B,EAMX,SAASmgC,EAAuB7H,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI8H,eAAe,6DAG3B,OAAO9H,EAgBT,SAAS0H,EAAgBrgC,GAIvB,OAHAqgC,EAAkB5gC,OAAOigC,eAAiBjgC,OAAOihC,eAAiB,SAAyB1gC,GACzF,OAAOA,EAAE2/B,WAAalgC,OAAOihC,eAAe1gC,KAEvBA,GAGzB,SAAS2gC,EAAgBv4B,EAAKjG,EAAKC,GAYjC,OAXID,KAAOiG,EACT3I,OAAOwwB,eAAe7nB,EAAKjG,EAAK,CAC9BC,MAAOA,EACPgyB,YAAY,EACZmL,cAAc,EACdC,UAAU,IAGZp3B,EAAIjG,GAAOC,EAGNgG,EAGT,IAGI0vC,EAA0B,SAAUjX,IAjGxC,SAAmBC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIphC,UAAU,sDAGtBmhC,EAAS3gC,UAAYV,OAAOy+B,OAAO6C,GAAcA,EAAW5gC,UAAW,CACrEI,YAAa,CACX6B,MAAO0+B,EACPtB,UAAU,EACVD,cAAc,KAGdwB,GAAYtB,EAAgBqB,EAAUC,GAsF1CC,CAAU8W,EAAYjX,GAEtB,IA1GoBzB,EAAa6B,EAAYC,EA0GzCC,EAASvB,EAAakY,GAE1B,SAASA,IACP,IAAI1W,EAEJjC,EAAgBtyB,KAAMirC,GAEtB,IAAK,IAAIrf,EAAOzvB,UAAUjK,OAAQ8zB,EAAO,IAAI3zB,MAAMu5B,GAAO51B,EAAO,EAAGA,EAAO41B,EAAM51B,IAC/EgwB,EAAKhwB,GAAQmG,UAAUnG,GAyBzB,OApBA89B,EAAgBH,EAFhBY,EAAQD,EAAO9gC,KAAKuM,MAAMu0B,EAAQ,CAACt0B,MAAMxJ,OAAOwvB,KAED,aAAcgW,EAAOgG,YAEpElO,EAAgBH,EAAuBY,GAAQ,WAAY,MAE3DT,EAAgBH,EAAuBY,GAAQ,cAAe,MAE9DT,EAAgBH,EAAuBY,GAAQ,gBAAiB,MAEhET,EAAgBH,EAAuBY,GAAQ,QAAQ,WACrDA,EAAMyN,WAAW,WAGnBlO,EAAgBH,EAAuBY,GAAQ,UAAU,WACvDA,EAAMyN,WAAW,aAGnBlO,EAAgBH,EAAuBY,GAAQ,OAAO,SAAUsV,GAC9DtV,EAAMsV,OAASA,KAGVtV,EAkHT,OA7PoBhC,EA8IP0Y,GA9IoB7W,EA8IR,CAAC,CACxB9+B,IAAK,oBACLC,MAAO,WACLyK,KAAKnL,MAAM2jC,SAAWx4B,KAAKnL,MAAM2jC,QAAQx4B,QAE1C,CACD1K,IAAK,OACLC,MAAO,SAAckF,GACnB,IAAIq9B,EAAS93B,MAEb,EAAIg8B,EAAOqG,QApDH,2CACG,YAmD6BrI,MAAK,SAAUkR,GAChDpT,EAAO+R,SACZ/R,EAAOrD,OAAS,IAAIyW,EAASnX,OAAO+D,EAAO+R,QAE3C/R,EAAOrD,OAAO6D,QAAQR,EAAOjjC,MAAMqiC,MAEnCY,EAAOrD,OAAOsS,GAAG,QAASjP,EAAOjjC,MAAMihC,SAEvCgC,EAAOrD,OAAOsS,GAAG,OAAQjP,EAAOjjC,MAAM4hC,QAEtCqB,EAAOrD,OAAOsS,GAAG,QAASjP,EAAOjjC,MAAMkiC,SAEvCe,EAAOrD,OAAOsS,GAAG,SAAUjP,EAAOjjC,MAAMguC,QAExC/K,EAAOrD,OAAOsS,GAAG,QAASjP,EAAOjjC,MAAMsiC,SAEvCW,EAAOrD,OAAOsS,GAAG,QAASjP,EAAOjjC,MAAMyiC,SAEvCQ,EAAOrD,OAAOsS,GAAG,cAAc,SAAUhsC,GACvC,IAAIi6B,EAAWj6B,EAAKi6B,SAChBhoB,EAAUjS,EAAKiS,QACnB8qB,EAAO9C,SAAWA,EAClB8C,EAAOgL,YAAc91B,KAGvB8qB,EAAOrD,OAAOsS,GAAG,YAAY,SAAUoE,GACrC,IAAIC,EAAUD,EAAMC,QAEhBtT,EAAO9C,WACT8C,EAAOuT,cAAgBvT,EAAO9C,SAAWoW,MAIzCtT,EAAOjjC,MAAMohC,OACf6B,EAAOrD,OAAO2D,UAEfp4B,KAAKnL,MAAMyiC,WAEf,CACDhiC,IAAK,OACLC,MAAO,WACLyK,KAAKgiC,WAAW,UAEjB,CACD1sC,IAAK,QACLC,MAAO,WACLyK,KAAKgiC,WAAW,WAEjB,CACD1sC,IAAK,OACLC,MAAO,cAEN,CACDD,IAAK,SACLC,MAAO,SAAgByX,GACrBhN,KAAKgiC,WAAW,iBAAkBh1B,KAEnC,CACD1X,IAAK,YACLC,MAAO,SAAmBgoC,GACxBv9B,KAAKgiC,WAAW,YAAwB,IAAXzE,KAE9B,CACDjoC,IAAK,UACLC,MAAO,SAAiB2hC,GACtBl3B,KAAKgiC,WAAW,UAAW9K,KAE5B,CACD5hC,IAAK,cACLC,MAAO,WACL,OAAOyK,KAAKg1B,WAEb,CACD1/B,IAAK,iBACLC,MAAO,WACL,OAAOyK,KAAK8iC,cAEb,CACDxtC,IAAK,mBACLC,MAAO,WACL,OAAOyK,KAAKqrC,gBAEb,CACD/1C,IAAK,SACLC,MAAO,WACL,IAAImL,EAAKV,KAAKnL,MAAM4F,IAAIgC,MAAM8kC,EAAU3B,sBAAsB,GAK9D,OAAoBjO,EAAgB,QAAEjzB,cAAc,SAAU,CAC5D8B,IAAKR,KAAKQ,IACVnD,IAAK,4BAA4B7G,OAAOkK,GACxCypC,YAAa,IACbmB,UAAW,KACXnuC,MATU,CACV2D,MAAO,OACPC,OAAQ,QAQRwqC,iBAAiB,SAvPP/Y,EAAkBD,EAAYj/B,UAAW8gC,GACrDC,GAAa7B,EAAkBD,EAAa8B,GA2PzC4W,EAtJqB,CAuJ5BtZ,EAAOsH,WAETlnC,EAAA,QAAqBk5C,EAErBnX,EAAgBmX,EAAY,cAAe,cAE3CnX,EAAgBmX,EAAY,UAAW1J,EAAU9D,QAAQqD,a,mCCnWzDluC,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAA,aAAqB,EAErB,IAAI4/B,EAiBJ,SAAiCp2B,GAC/B,GAAIA,GAAOA,EAAIjJ,WACb,OAAOiJ,EAGT,GAAY,OAARA,GAAiC,WAAjBD,EAAQC,IAAoC,mBAARA,EACtD,MAAO,CACL,QAAWA,GAIf,IAAIq2B,EAAQC,IAEZ,GAAID,GAASA,EAAMrC,IAAIh0B,GACrB,OAAOq2B,EAAMpK,IAAIjsB,GAGnB,IAAIu2B,EAAS,GACTC,EAAwBn/B,OAAOwwB,gBAAkBxwB,OAAOo/B,yBAE5D,IAAK,IAAI18B,KAAOiG,EACd,GAAI3I,OAAOU,UAAUwM,eAAetM,KAAK+H,EAAKjG,GAAM,CAClD,IAAI28B,EAAOF,EAAwBn/B,OAAOo/B,yBAAyBz2B,EAAKjG,GAAO,KAE3E28B,IAASA,EAAKzK,KAAOyK,EAAKtM,KAC5B/yB,OAAOwwB,eAAe0O,EAAQx8B,EAAK28B,GAEnCH,EAAOx8B,GAAOiG,EAAIjG,GAKxBw8B,EAAgB,QAAIv2B,EAEhBq2B,GACFA,EAAMjM,IAAIpqB,EAAKu2B,GAGjB,OAAOA,EAvDII,CAAwB,EAAQ,QAEzC8J,EAAS,EAAQ,OAEjBuF,EAAY,EAAQ,OAExB,SAAS1P,IACP,GAAuB,mBAAZQ,QAAwB,OAAO,KAC1C,IAAIT,EAAQ,IAAIS,QAMhB,OAJAR,EAA2B,WACzB,OAAOD,GAGFA,EA4CT,SAASt2B,EAAQC,GAaf,OATED,EADoB,mBAAX5I,QAAoD,iBAApBA,OAAOC,SACtC,SAAiB4I,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,mBAAX7I,QAAyB6I,EAAI7H,cAAgBhB,QAAU6I,IAAQ7I,OAAOY,UAAY,gBAAkBiI,IAI9GA,GAGjB,SAAS29B,EAAQj6B,EAAQk6B,GACvB,IAAIx+B,EAAO/H,OAAO+H,KAAKsE,GAEvB,GAAIrM,OAAOqvB,sBAAuB,CAChC,IAAImX,EAAUxmC,OAAOqvB,sBAAsBhjB,GACvCk6B,IAAgBC,EAAUA,EAAQ11B,QAAO,SAAU21B,GACrD,OAAOzmC,OAAOo/B,yBAAyB/yB,EAAQo6B,GAAK9R,eAEtD5sB,EAAKzB,KAAK6G,MAAMpF,EAAMy+B,GAGxB,OAAOz+B,EAuBT,SAAS23B,EAAgBnF,EAAUoF,GACjC,KAAMpF,aAAoBoF,GACxB,MAAM,IAAIz/B,UAAU,qCAIxB,SAAS0/B,EAAkB5yB,EAAQ/K,GACjC,IAAK,IAAI1C,EAAI,EAAGA,EAAI0C,EAAM3C,OAAQC,IAAK,CACrC,IAAIsgC,EAAa59B,EAAM1C,GACvBsgC,EAAWlL,WAAakL,EAAWlL,aAAc,EACjDkL,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD//B,OAAOwwB,eAAexjB,EAAQ6yB,EAAWn9B,IAAKm9B,IAyBlD,SAASG,EAAgBz/B,EAAGuwB,GAM1B,OALAkP,EAAkBhgC,OAAOigC,gBAAkB,SAAyB1/B,EAAGuwB,GAErE,OADAvwB,EAAE2/B,UAAYpP,EACPvwB,IAGcA,EAAGuwB,GAG5B,SAASqP,EAAaC,GACpB,IAAIC,EAkCN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA1rB,KAAKrU,UAAUC,SAASC,KAAK0/B,QAAQC,UAAUxrB,KAAM,IAAI,iBAClD,EACP,MAAOic,GACP,OAAO,GA3CuB0P,GAEhC,OAAO,WACL,IACI3xB,EADA4xB,EAAQC,EAAgBR,GAG5B,GAAIC,EAA2B,CAC7B,IAAIQ,EAAYD,EAAgBxzB,MAAMtM,YAEtCiO,EAASuxB,QAAQC,UAAUI,EAAOp3B,UAAWs3B,QAE7C9xB,EAAS4xB,EAAMxzB,MAAMC,KAAM7D,WAG7B,OAAOu3B,EAA2B1zB,KAAM2B,IAI5C,SAAS+xB,EAA2B5H,EAAMt4B,GACxC,OAAIA,GAA2B,WAAlB8H,EAAQ9H,IAAsC,mBAATA,EAI3CmgC,EAAuB7H,GAHrBt4B,EAMX,SAASmgC,EAAuB7H,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI8H,eAAe,6DAG3B,OAAO9H,EAgBT,SAAS0H,EAAgBrgC,GAIvB,OAHAqgC,EAAkB5gC,OAAOigC,eAAiBjgC,OAAOihC,eAAiB,SAAyB1gC,GACzF,OAAOA,EAAE2/B,WAAalgC,OAAOihC,eAAe1gC,KAEvBA,GAGzB,SAAS2gC,EAAgBv4B,EAAKjG,EAAKC,GAYjC,OAXID,KAAOiG,EACT3I,OAAOwwB,eAAe7nB,EAAKjG,EAAK,CAC9BC,MAAOA,EACPgyB,YAAY,EACZmL,cAAc,EACdC,UAAU,IAGZp3B,EAAIjG,GAAOC,EAGNgG,EAGT,IAEIioC,EAAmB,iBAEnBgI,EAAsB,SAAUxX,IAlGpC,SAAmBC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIphC,UAAU,sDAGtBmhC,EAAS3gC,UAAYV,OAAOy+B,OAAO6C,GAAcA,EAAW5gC,UAAW,CACrEI,YAAa,CACX6B,MAAO0+B,EACPtB,UAAU,EACVD,cAAc,KAGdwB,GAAYtB,EAAgBqB,EAAUC,GAuF1CC,CAAUqX,EAAQxX,GAElB,IA3GoBzB,EAAa6B,EAAYC,EA2GzCC,EAASvB,EAAayY,GAE1B,SAASA,IACP,IAAIjX,EAEJjC,EAAgBtyB,KAAMwrC,GAEtB,IAAK,IAAI5f,EAAOzvB,UAAUjK,OAAQ8zB,EAAO,IAAI3zB,MAAMu5B,GAAO51B,EAAO,EAAGA,EAAO41B,EAAM51B,IAC/EgwB,EAAKhwB,GAAQmG,UAAUnG,GAiBzB,OAZA89B,EAAgBH,EAFhBY,EAAQD,EAAO9gC,KAAKuM,MAAMu0B,EAAQ,CAACt0B,MAAMxJ,OAAOwvB,KAED,aAAcgW,EAAOgG,YAEpElO,EAAgBH,EAAuBY,GAAQ,WAAYA,EAAM1/B,MAAM6oC,OAAOgG,UAAY,GAAGltC,OAAOgtC,GAAkBhtC,QAAO,EAAIwlC,EAAO2H,kBAExI7P,EAAgBH,EAAuBY,GAAQ,QAAQ,WACrDA,EAAMyN,WAAW,YAAY,MAG/BlO,EAAgBH,EAAuBY,GAAQ,UAAU,WACvDA,EAAMyN,WAAW,YAAY,MAGxBzN,EAyHT,OA7PoBhC,EAuIPiZ,GAvIoBpX,EAuIZ,CAAC,CACpB9+B,IAAK,oBACLC,MAAO,WACLyK,KAAKnL,MAAM2jC,SAAWx4B,KAAKnL,MAAM2jC,QAAQx4B,QAE1C,CACD1K,IAAK,OACLC,MAAO,SAAckF,EAAKk6B,GACxB,IAAImD,EAAS93B,KAET61B,EAAc71B,KAAKnL,MACnB+wC,EAAc/P,EAAY+P,YAC1BtO,EAAUzB,EAAYyB,QACtBoG,EAAS7H,EAAY6H,OACrBuE,EAAWpM,EAAYoM,SAEvBwJ,EAAYlK,EAAU9B,yBAAyB7rC,KAAK6G,GAEpDiG,EAAK+qC,EAAYhxC,EAAIgC,MAAM8kC,EAAU9B,0BAA0B,GAAKhlC,EAAIgC,MAAM8kC,EAAU7B,wBAAwB,GAEhH/K,EACE8W,EACFzrC,KAAKy0B,OAAOiX,WAAWhrC,GAEvBV,KAAKy0B,OAAOkX,SAAS,IAAMjrC,IAM/B,EAAIs7B,EAAOqG,QAjEH,0CACG,UAgE6BrI,MAAK,SAAUwR,GACrD1T,EAAOrD,OAAS,IAAI+W,EAAOzX,OAAO+D,EAAOsM,SA1MjD,SAAuBxkC,GACrB,IAAK,IAAIzN,EAAI,EAAGA,EAAIgK,UAAUjK,OAAQC,IAAK,CACzC,IAAI0N,EAAyB,MAAhB1D,UAAUhK,GAAagK,UAAUhK,GAAK,GAE/CA,EAAI,EACN+mC,EAAQtmC,OAAOiN,IAAS,GAAMpH,SAAQ,SAAUnD,GAC9Cw+B,EAAgBl0B,EAAQtK,EAAKuK,EAAOvK,OAE7B1C,OAAO2mC,0BAChB3mC,OAAO4mC,iBAAiB55B,EAAQhN,OAAO2mC,0BAA0B15B,IAEjEq5B,EAAQtmC,OAAOiN,IAASpH,SAAQ,SAAUnD,GACxC1C,OAAOwwB,eAAexjB,EAAQtK,EAAK1C,OAAOo/B,yBAAyBnyB,EAAQvK,OAKjF,OAAOsK,EAyLkD05B,CAAc,CAC/DiJ,MAAOkJ,EAAY,GAAK/qC,EACxBkrC,QAASH,EAAY/qC,EAAK,GAC1BK,OAAQ,OACRD,MAAO,OACP8kC,YAAaA,EACbxD,SAAUtK,EAAOjjC,MAAMkhC,QACvBE,MAAO6B,EAAOjjC,MAAMohC,MAEpBgM,WAAUwJ,GAAmBxJ,GAC5BvE,EAAOvoC,UACV,IAAI02C,EAAiBL,EAAOzX,OACxB+X,EAAQD,EAAeC,MACvBC,EAAUF,EAAeE,QACzBrB,EAAQmB,EAAenB,MACvBsB,EAAQH,EAAeG,MACvBC,EAASJ,EAAeI,OACxBC,EAAUL,EAAeK,QAE7BpU,EAAOrD,OAAOoR,iBAAiBiG,EAAOhU,EAAOjjC,MAAMihC,SAEnDgC,EAAOrD,OAAOoR,iBAAiBkG,EAASjU,EAAOjjC,MAAM4hC,QAErDqB,EAAOrD,OAAOoR,iBAAiB6E,EAAO5S,EAAOjjC,MAAMkiC,SAEnDe,EAAOrD,OAAOoR,iBAAiBmG,EAAOlU,EAAOjjC,MAAMsiC,SAGnDW,EAAOrD,OAAOoR,iBAAiBoG,EAAQnU,EAAOjjC,MAAMikC,UAEpDhB,EAAOrD,OAAOoR,iBAAiBqG,EAASpU,EAAOjjC,MAAMikC,YACpDxB,KAEJ,CACDhiC,IAAK,OACLC,MAAO,WACLyK,KAAKgiC,WAAW,UAEjB,CACD1sC,IAAK,QACLC,MAAO,WACLyK,KAAKgiC,WAAW,WAEjB,CACD1sC,IAAK,OACLC,MAAO,WACLyK,KAAKgiC,WAAW,WAEjB,CACD1sC,IAAK,SACLC,MAAO,SAAgByX,GACrBhN,KAAKgiC,WAAW,OAAQh1B,KAEzB,CACD1X,IAAK,YACLC,MAAO,SAAmBgoC,GACxBv9B,KAAKgiC,WAAW,YAAazE,KAE9B,CACDjoC,IAAK,cACLC,MAAO,WACL,OAAOyK,KAAKgiC,WAAW,iBAExB,CACD1sC,IAAK,iBACLC,MAAO,WACL,OAAOyK,KAAKgiC,WAAW,oBAExB,CACD1sC,IAAK,mBACLC,MAAO,WACL,OAAO,OAER,CACDD,IAAK,SACLC,MAAO,WAKL,OAAoBo8B,EAAgB,QAAEjzB,cAAc,MAAO,CACzDvB,MALU,CACV2D,MAAO,OACPC,OAAQ,QAIRL,GAAIV,KAAKokC,gBAvPC5R,EAAkBD,EAAYj/B,UAAW8gC,GACrDC,GAAa7B,EAAkBD,EAAa8B,GA2PzCmX,EArJiB,CAsJxB7Z,EAAOsH,WAETlnC,EAAA,QAAqBy5C,EAErB1X,EAAgB0X,EAAQ,cAAe,UAEvC1X,EAAgB0X,EAAQ,UAAWjK,EAAU9D,QAAQuD,QAErDlN,EAAgB0X,EAAQ,eAAe,I,mCCvYvC54C,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAA,aAAqB,EAErB,IAAI4/B,EAiBJ,SAAiCp2B,GAC/B,GAAIA,GAAOA,EAAIjJ,WACb,OAAOiJ,EAGT,GAAY,OAARA,GAAiC,WAAjBD,EAAQC,IAAoC,mBAARA,EACtD,MAAO,CACL,QAAWA,GAIf,IAAIq2B,EAAQC,IAEZ,GAAID,GAASA,EAAMrC,IAAIh0B,GACrB,OAAOq2B,EAAMpK,IAAIjsB,GAGnB,IAAIu2B,EAAS,GACTC,EAAwBn/B,OAAOwwB,gBAAkBxwB,OAAOo/B,yBAE5D,IAAK,IAAI18B,KAAOiG,EACd,GAAI3I,OAAOU,UAAUwM,eAAetM,KAAK+H,EAAKjG,GAAM,CAClD,IAAI28B,EAAOF,EAAwBn/B,OAAOo/B,yBAAyBz2B,EAAKjG,GAAO,KAE3E28B,IAASA,EAAKzK,KAAOyK,EAAKtM,KAC5B/yB,OAAOwwB,eAAe0O,EAAQx8B,EAAK28B,GAEnCH,EAAOx8B,GAAOiG,EAAIjG,GAKxBw8B,EAAgB,QAAIv2B,EAEhBq2B,GACFA,EAAMjM,IAAIpqB,EAAKu2B,GAGjB,OAAOA,EAvDII,CAAwB,EAAQ,QAEzC8J,EAAS,EAAQ,OAEjBuF,EAAY,EAAQ,OAExB,SAAS1P,IACP,GAAuB,mBAAZQ,QAAwB,OAAO,KAC1C,IAAIT,EAAQ,IAAIS,QAMhB,OAJAR,EAA2B,WACzB,OAAOD,GAGFA,EA4CT,SAASt2B,EAAQC,GAaf,OATED,EADoB,mBAAX5I,QAAoD,iBAApBA,OAAOC,SACtC,SAAiB4I,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,mBAAX7I,QAAyB6I,EAAI7H,cAAgBhB,QAAU6I,IAAQ7I,OAAOY,UAAY,gBAAkBiI,IAI9GA,GAGjB,SAAS29B,EAAQj6B,EAAQk6B,GACvB,IAAIx+B,EAAO/H,OAAO+H,KAAKsE,GAEvB,GAAIrM,OAAOqvB,sBAAuB,CAChC,IAAImX,EAAUxmC,OAAOqvB,sBAAsBhjB,GACvCk6B,IAAgBC,EAAUA,EAAQ11B,QAAO,SAAU21B,GACrD,OAAOzmC,OAAOo/B,yBAAyB/yB,EAAQo6B,GAAK9R,eAEtD5sB,EAAKzB,KAAK6G,MAAMpF,EAAMy+B,GAGxB,OAAOz+B,EAuBT,SAAS23B,EAAgBnF,EAAUoF,GACjC,KAAMpF,aAAoBoF,GACxB,MAAM,IAAIz/B,UAAU,qCAIxB,SAAS0/B,EAAkB5yB,EAAQ/K,GACjC,IAAK,IAAI1C,EAAI,EAAGA,EAAI0C,EAAM3C,OAAQC,IAAK,CACrC,IAAIsgC,EAAa59B,EAAM1C,GACvBsgC,EAAWlL,WAAakL,EAAWlL,aAAc,EACjDkL,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD//B,OAAOwwB,eAAexjB,EAAQ6yB,EAAWn9B,IAAKm9B,IAyBlD,SAASG,EAAgBz/B,EAAGuwB,GAM1B,OALAkP,EAAkBhgC,OAAOigC,gBAAkB,SAAyB1/B,EAAGuwB,GAErE,OADAvwB,EAAE2/B,UAAYpP,EACPvwB,IAGcA,EAAGuwB,GAG5B,SAASqP,EAAaC,GACpB,IAAIC,EAkCN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA1rB,KAAKrU,UAAUC,SAASC,KAAK0/B,QAAQC,UAAUxrB,KAAM,IAAI,iBAClD,EACP,MAAOic,GACP,OAAO,GA3CuB0P,GAEhC,OAAO,WACL,IACI3xB,EADA4xB,EAAQC,EAAgBR,GAG5B,GAAIC,EAA2B,CAC7B,IAAIQ,EAAYD,EAAgBxzB,MAAMtM,YAEtCiO,EAASuxB,QAAQC,UAAUI,EAAOp3B,UAAWs3B,QAE7C9xB,EAAS4xB,EAAMxzB,MAAMC,KAAM7D,WAG7B,OAAOu3B,EAA2B1zB,KAAM2B,IAI5C,SAAS+xB,EAA2B5H,EAAMt4B,GACxC,OAAIA,GAA2B,WAAlB8H,EAAQ9H,IAAsC,mBAATA,EAI3CmgC,EAAuB7H,GAHrBt4B,EAMX,SAASmgC,EAAuB7H,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI8H,eAAe,6DAG3B,OAAO9H,EAgBT,SAAS0H,EAAgBrgC,GAIvB,OAHAqgC,EAAkB5gC,OAAOigC,eAAiBjgC,OAAOihC,eAAiB,SAAyB1gC,GACzF,OAAOA,EAAE2/B,WAAalgC,OAAOihC,eAAe1gC,KAEvBA,GAGzB,SAAS2gC,EAAgBv4B,EAAKjG,EAAKC,GAYjC,OAXID,KAAOiG,EACT3I,OAAOwwB,eAAe7nB,EAAKjG,EAAK,CAC9BC,MAAOA,EACPgyB,YAAY,EACZmL,cAAc,EACdC,UAAU,IAGZp3B,EAAIjG,GAAOC,EAGNgG,EAGT,IAII4wC,EAAuB,SAAUnY,IAlGrC,SAAmBC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIphC,UAAU,sDAGtBmhC,EAAS3gC,UAAYV,OAAOy+B,OAAO6C,GAAcA,EAAW5gC,UAAW,CACrEI,YAAa,CACX6B,MAAO0+B,EACPtB,UAAU,EACVD,cAAc,KAGdwB,GAAYtB,EAAgBqB,EAAUC,GAuF1CC,CAAUgY,EAASnY,GAEnB,IA3GoBzB,EAAa6B,EAAYC,EA2GzCC,EAASvB,EAAaoZ,GAE1B,SAASA,IACP,IAAI5X,EAEJjC,EAAgBtyB,KAAMmsC,GAEtB,IAAK,IAAIvgB,EAAOzvB,UAAUjK,OAAQ8zB,EAAO,IAAI3zB,MAAMu5B,GAAO51B,EAAO,EAAGA,EAAO41B,EAAM51B,IAC/EgwB,EAAKhwB,GAAQmG,UAAUnG,GAqBzB,OAhBA89B,EAAgBH,EAFhBY,EAAQD,EAAO9gC,KAAKuM,MAAMu0B,EAAQ,CAACt0B,MAAMxJ,OAAOwvB,KAED,aAAcgW,EAAOgG,YAEpElO,EAAgBH,EAAuBY,GAAQ,QAAQ,WACrDA,EAAM2B,UAAU,MAGlBpC,EAAgBH,EAAuBY,GAAQ,UAAU,WAC5B,OAAvBA,EAAM1/B,MAAMmhC,QACdzB,EAAM2B,UAAU3B,EAAM1/B,MAAMmhC,WAIhClC,EAAgBH,EAAuBY,GAAQ,OAAO,SAAUx9B,GAC9Dw9B,EAAMx9B,UAAYA,KAGbw9B,EAgHT,OAxPoBhC,EA2IP4Z,GA3IoB/X,EA2IX,CAAC,CACrB9+B,IAAK,oBACLC,MAAO,WACLyK,KAAKnL,MAAM2jC,SAAWx4B,KAAKnL,MAAM2jC,QAAQx4B,QAE1C,CACD1K,IAAK,OACLC,MAAO,SAAckF,GACnB,IAAIq9B,EAAS93B,KAET61B,EAAc71B,KAAKnL,MACnBkhC,EAAUF,EAAYE,QACtB2H,EAAS7H,EAAY6H,OACrBpG,EAAUzB,EAAYyB,QACtBI,EAAa7B,EAAY6B,WACzBh3B,EAAKjG,GAAOA,EAAIgC,MAAM8kC,EAAUjC,mBAAmB,GAEnDt/B,KAAKy0B,QACPz0B,KAAK23B,QAGP,EAAIqE,EAAOqG,QA5DH,uCACG,YACM,gBA0DyCrI,MAAK,SAAUmS,GAClErU,EAAO/gC,YACZo1C,EAAQC,IAAIC,kBAAiB,SAAUlS,EAAM1F,GAC3CqD,EAAOrD,OAASA,EAEhBqD,EAAOrD,OAAOsS,GAAG,QAASjP,EAAOjjC,MAAMihC,SAEvCgC,EAAOrD,OAAOsS,GAAG,OAAQjP,EAAOjjC,MAAM4hC,QAEtCqB,EAAOrD,OAAOsS,GAAG,QAASjP,EAAOjjC,MAAMkiC,SAEvCe,EAAOrD,OAAOsS,GAAG,OAAQjP,EAAOjjC,MAAMguC,QAEtC/K,EAAOrD,OAAOsS,GAAG,iBAAkBjP,EAAOjjC,MAAMsiC,WAC/Cz2B,GACHyrC,EAAQC,IAAIE,aAnNpB,SAAuB1sC,GACrB,IAAK,IAAIzN,EAAI,EAAGA,EAAIgK,UAAUjK,OAAQC,IAAK,CACzC,IAAI0N,EAAyB,MAAhB1D,UAAUhK,GAAagK,UAAUhK,GAAK,GAE/CA,EAAI,EACN+mC,EAAQtmC,OAAOiN,IAAS,GAAMpH,SAAQ,SAAUnD,GAC9Cw+B,EAAgBl0B,EAAQtK,EAAKuK,EAAOvK,OAE7B1C,OAAO2mC,0BAChB3mC,OAAO4mC,iBAAiB55B,EAAQhN,OAAO2mC,0BAA0B15B,IAEjEq5B,EAAQtmC,OAAOiN,IAASpH,SAAQ,SAAUnD,GACxC1C,OAAOwwB,eAAexjB,EAAQtK,EAAK1C,OAAOo/B,yBAAyBnyB,EAAQvK,OAKjF,OAAOsK,EAkMwB05B,CAAc,CACrCiT,KAAM7rC,EACN3J,UAAW+gC,EAAO/gC,UAClBqrC,SAAUrM,EAAU,EAAI,GACvB2H,EAAOvoC,UACVg3C,EAAQC,IAAII,kBAAkB9rC,GAAIs5B,MAAK,SAAUyS,GAC/C3U,EAAO9C,SAAWyX,EAAKC,kBACvBhV,EAAW+U,EAAKC,yBAEjBpV,KAEJ,CACDhiC,IAAK,OACLC,MAAO,WACLyK,KAAKgiC,WAAW,UAEjB,CACD1sC,IAAK,QACLC,MAAO,WACLyK,KAAKgiC,WAAW,WAEjB,CACD1sC,IAAK,OACLC,MAAO,WACL80B,OAAOsiB,UAAUP,IAAIQ,cAAc5sC,KAAKy0B,UAEzC,CACDn/B,IAAK,SACLC,MAAO,SAAgB2S,GACrBlI,KAAKgiC,WAAW,OAAQ95B,KAEzB,CACD5S,IAAK,YACLC,MAAO,SAAmBgoC,GACxBv9B,KAAKgiC,WAAW,YAAazE,KAE9B,CACDjoC,IAAK,kBACLC,MAAO,SAAyBqzC,GAC9B5oC,KAAKgiC,WAAW,mBAAoB4G,KAErC,CACDtzC,IAAK,cACLC,MAAO,WACL,OAAOyK,KAAKg1B,WAEb,CACD1/B,IAAK,iBACLC,MAAO,WACL,OAAOyK,KAAKgiC,WAAW,iBAExB,CACD1sC,IAAK,mBACLC,MAAO,WACL,OAAO,OAER,CACDD,IAAK,SACLC,MAAO,WACL,IACI4H,EAAQ,CACV2D,MAAO,OACPC,OAAQ,OACRy5B,QAJYx6B,KAAKnL,MAAM2lC,SAMzB,OAAoB7I,EAAgB,QAAEjzB,cAAc,MAAO,CACzDvB,MAAOA,GACOw0B,EAAgB,QAAEjzB,cAAc,MAAO,CACrD8B,IAAKR,KAAKQ,YAlPAgyB,EAAkBD,EAAYj/B,UAAW8gC,GACrDC,GAAa7B,EAAkBD,EAAa8B,GAsPzC8X,EAhJkB,CAiJzBxa,EAAOsH,WAETlnC,EAAA,QAAqBo6C,EAErBrY,EAAgBqY,EAAS,cAAe,WAExCrY,EAAgBqY,EAAS,UAAW5K,EAAU9D,QAAQ0D,U,mCChYtDvuC,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAA,aAAqB,EAErB,IAAI4/B,EAiBJ,SAAiCp2B,GAC/B,GAAIA,GAAOA,EAAIjJ,WACb,OAAOiJ,EAGT,GAAY,OAARA,GAAiC,WAAjBD,EAAQC,IAAoC,mBAARA,EACtD,MAAO,CACL,QAAWA,GAIf,IAAIq2B,EAAQC,IAEZ,GAAID,GAASA,EAAMrC,IAAIh0B,GACrB,OAAOq2B,EAAMpK,IAAIjsB,GAGnB,IAAIu2B,EAAS,GACTC,EAAwBn/B,OAAOwwB,gBAAkBxwB,OAAOo/B,yBAE5D,IAAK,IAAI18B,KAAOiG,EACd,GAAI3I,OAAOU,UAAUwM,eAAetM,KAAK+H,EAAKjG,GAAM,CAClD,IAAI28B,EAAOF,EAAwBn/B,OAAOo/B,yBAAyBz2B,EAAKjG,GAAO,KAE3E28B,IAASA,EAAKzK,KAAOyK,EAAKtM,KAC5B/yB,OAAOwwB,eAAe0O,EAAQx8B,EAAK28B,GAEnCH,EAAOx8B,GAAOiG,EAAIjG,GAKxBw8B,EAAgB,QAAIv2B,EAEhBq2B,GACFA,EAAMjM,IAAIpqB,EAAKu2B,GAGjB,OAAOA,EAvDII,CAAwB,EAAQ,QAEzC8J,EAAS,EAAQ,OAEjBuF,EAAY,EAAQ,OAExB,SAAS1P,IACP,GAAuB,mBAAZQ,QAAwB,OAAO,KAC1C,IAAIT,EAAQ,IAAIS,QAMhB,OAJAR,EAA2B,WACzB,OAAOD,GAGFA,EA4CT,SAASt2B,EAAQC,GAaf,OATED,EADoB,mBAAX5I,QAAoD,iBAApBA,OAAOC,SACtC,SAAiB4I,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,mBAAX7I,QAAyB6I,EAAI7H,cAAgBhB,QAAU6I,IAAQ7I,OAAOY,UAAY,gBAAkBiI,IAI9GA,GAGjB,SAAS29B,EAAQj6B,EAAQk6B,GACvB,IAAIx+B,EAAO/H,OAAO+H,KAAKsE,GAEvB,GAAIrM,OAAOqvB,sBAAuB,CAChC,IAAImX,EAAUxmC,OAAOqvB,sBAAsBhjB,GACvCk6B,IAAgBC,EAAUA,EAAQ11B,QAAO,SAAU21B,GACrD,OAAOzmC,OAAOo/B,yBAAyB/yB,EAAQo6B,GAAK9R,eAEtD5sB,EAAKzB,KAAK6G,MAAMpF,EAAMy+B,GAGxB,OAAOz+B,EAuBT,SAAS23B,EAAgBnF,EAAUoF,GACjC,KAAMpF,aAAoBoF,GACxB,MAAM,IAAIz/B,UAAU,qCAIxB,SAAS0/B,EAAkB5yB,EAAQ/K,GACjC,IAAK,IAAI1C,EAAI,EAAGA,EAAI0C,EAAM3C,OAAQC,IAAK,CACrC,IAAIsgC,EAAa59B,EAAM1C,GACvBsgC,EAAWlL,WAAakL,EAAWlL,aAAc,EACjDkL,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD//B,OAAOwwB,eAAexjB,EAAQ6yB,EAAWn9B,IAAKm9B,IAyBlD,SAASG,EAAgBz/B,EAAGuwB,GAM1B,OALAkP,EAAkBhgC,OAAOigC,gBAAkB,SAAyB1/B,EAAGuwB,GAErE,OADAvwB,EAAE2/B,UAAYpP,EACPvwB,IAGcA,EAAGuwB,GAG5B,SAASqP,EAAaC,GACpB,IAAIC,EAkCN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA1rB,KAAKrU,UAAUC,SAASC,KAAK0/B,QAAQC,UAAUxrB,KAAM,IAAI,iBAClD,EACP,MAAOic,GACP,OAAO,GA3CuB0P,GAEhC,OAAO,WACL,IACI3xB,EADA4xB,EAAQC,EAAgBR,GAG5B,GAAIC,EAA2B,CAC7B,IAAIQ,EAAYD,EAAgBxzB,MAAMtM,YAEtCiO,EAASuxB,QAAQC,UAAUI,EAAOp3B,UAAWs3B,QAE7C9xB,EAAS4xB,EAAMxzB,MAAMC,KAAM7D,WAG7B,OAAOu3B,EAA2B1zB,KAAM2B,IAI5C,SAAS+xB,EAA2B5H,EAAMt4B,GACxC,OAAIA,GAA2B,WAAlB8H,EAAQ9H,IAAsC,mBAATA,EAI3CmgC,EAAuB7H,GAHrBt4B,EAMX,SAASmgC,EAAuB7H,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI8H,eAAe,6DAG3B,OAAO9H,EAgBT,SAAS0H,EAAgBrgC,GAIvB,OAHAqgC,EAAkB5gC,OAAOigC,eAAiBjgC,OAAOihC,eAAiB,SAAyB1gC,GACzF,OAAOA,EAAE2/B,WAAalgC,OAAOihC,eAAe1gC,KAEvBA,GAGzB,SAAS2gC,EAAgBv4B,EAAKjG,EAAKC,GAYjC,OAXID,KAAOiG,EACT3I,OAAOwwB,eAAe7nB,EAAKjG,EAAK,CAC9BC,MAAOA,EACPgyB,YAAY,EACZmL,cAAc,EACdC,UAAU,IAGZp3B,EAAIjG,GAAOC,EAGNgG,EAGT,IAGIsxC,EAAqB,SAAU7Y,IAjGnC,SAAmBC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIphC,UAAU,sDAGtBmhC,EAAS3gC,UAAYV,OAAOy+B,OAAO6C,GAAcA,EAAW5gC,UAAW,CACrEI,YAAa,CACX6B,MAAO0+B,EACPtB,UAAU,EACVD,cAAc,KAGdwB,GAAYtB,EAAgBqB,EAAUC,GAsF1CC,CAAU0Y,EAAO7Y,GAEjB,IA1GoBzB,EAAa6B,EAAYC,EA0GzCC,EAASvB,EAAa8Z,GAE1B,SAASA,IACP,IAAItY,EAEJjC,EAAgBtyB,KAAM6sC,GAEtB,IAAK,IAAIjhB,EAAOzvB,UAAUjK,OAAQ8zB,EAAO,IAAI3zB,MAAMu5B,GAAO51B,EAAO,EAAGA,EAAO41B,EAAM51B,IAC/EgwB,EAAKhwB,GAAQmG,UAAUnG,GA2BzB,OAtBA89B,EAAgBH,EAFhBY,EAAQD,EAAO9gC,KAAKuM,MAAMu0B,EAAQ,CAACt0B,MAAMxJ,OAAOwvB,KAED,aAAcgW,EAAOgG,YAEpElO,EAAgBH,EAAuBY,GAAQ,WAAY,MAE3DT,EAAgBH,EAAuBY,GAAQ,cAAe,MAE9DT,EAAgBH,EAAuBY,GAAQ,gBAAiB,MAEhET,EAAgBH,EAAuBY,GAAQ,QAAQ,WACrDA,EAAM2B,UAAU,MAGlBpC,EAAgBH,EAAuBY,GAAQ,UAAU,WAC5B,OAAvBA,EAAM1/B,MAAMmhC,QACdzB,EAAM2B,UAAU3B,EAAM1/B,MAAMmhC,WAIhClC,EAAgBH,EAAuBY,GAAQ,OAAO,SAAUx9B,GAC9Dw9B,EAAMx9B,UAAYA,KAGbw9B,EAkJT,OA/RoBhC,EAgJPsa,GAhJoBzY,EAgJb,CAAC,CACnB9+B,IAAK,oBACLC,MAAO,WACLyK,KAAKnL,MAAM2jC,SAAWx4B,KAAKnL,MAAM2jC,QAAQx4B,QAE1C,CACD1K,IAAK,OACLC,MAAO,SAAckF,GACnB,IAAIq9B,EAAS93B,KAEbA,KAAKg1B,SAAW,MAChB,EAAIgH,EAAOqG,QAvDH,yCACG,SAsD6BrI,MAAK,SAAU6S,GAChD/U,EAAO/gC,YACZ+gC,EAAOrD,OAAS,IAAIoY,EAAM9Y,OAAO+D,EAAO/gC,UAjMhD,SAAuB6I,GACrB,IAAK,IAAIzN,EAAI,EAAGA,EAAIgK,UAAUjK,OAAQC,IAAK,CACzC,IAAI0N,EAAyB,MAAhB1D,UAAUhK,GAAagK,UAAUhK,GAAK,GAE/CA,EAAI,EACN+mC,EAAQtmC,OAAOiN,IAAS,GAAMpH,SAAQ,SAAUnD,GAC9Cw+B,EAAgBl0B,EAAQtK,EAAKuK,EAAOvK,OAE7B1C,OAAO2mC,0BAChB3mC,OAAO4mC,iBAAiB55B,EAAQhN,OAAO2mC,0BAA0B15B,IAEjEq5B,EAAQtmC,OAAOiN,IAASpH,SAAQ,SAAUnD,GACxC1C,OAAOwwB,eAAexjB,EAAQtK,EAAK1C,OAAOo/B,yBAAyBnyB,EAAQvK,OAKjF,OAAOsK,EAgLkD05B,CAAc,CAC/D7+B,IAAKA,EACL2nC,SAAUtK,EAAOjjC,MAAMkhC,QACvBE,MAAO6B,EAAOjjC,MAAMohC,MACpBiB,KAAMY,EAAOjjC,MAAMqiC,KACnB0O,YAAa9N,EAAOjjC,MAAM+wC,YAC1B3D,SAAUnK,EAAOjjC,MAAMotC,UACtBnK,EAAOjjC,MAAM6oC,OAAOoP,gBAEvBhV,EAAOrD,OAAOsV,QAAQ/P,MAAK,WACzB,IAAI6P,EAAS/R,EAAO/gC,UAAUwtC,cAAc,UAE5CsF,EAAO1sC,MAAM2D,MAAQ,OACrB+oC,EAAO1sC,MAAM4D,OAAS,UACd,MAAE+2B,EAAOjjC,MAAMyiC,SAEzBQ,EAAOrD,OAAOsS,GAAG,UAAU,WACzBjP,EAAOjjC,MAAMihC,UAEbgC,EAAOiV,qBAGTjV,EAAOrD,OAAOsS,GAAG,QAAQ,WACvBjP,EAAOjjC,MAAM4hC,SAEbqB,EAAOiV,qBAGTjV,EAAOrD,OAAOsS,GAAG,QAASjP,EAAOjjC,MAAMkiC,SAEvCe,EAAOrD,OAAOsS,GAAG,UAAU,SAAUnjB,GACnC,OAAOkU,EAAOjjC,MAAMguC,OAAOjf,EAAE5W,YAG/B8qB,EAAOrD,OAAOsS,GAAG,QAASjP,EAAOjjC,MAAMsiC,SAEvCW,EAAOrD,OAAOsS,GAAG,QAASjP,EAAOjjC,MAAMyiC,SAEvCQ,EAAOrD,OAAOsS,GAAG,cAAc,SAAUhsC,GACvC,IAAIiS,EAAUjS,EAAKiS,QACnB8qB,EAAOgL,YAAc91B,KAGvB8qB,EAAOrD,OAAOsS,GAAG,YAAY,SAAUoE,GACrC,IAAIn+B,EAAUm+B,EAAMn+B,QACpB8qB,EAAOuT,cAAgBr+B,QAExBhN,KAAKnL,MAAMyiC,WAEf,CACDhiC,IAAK,kBACLC,MAAO,WACL,IAAIgjC,EAASv4B,KAEbA,KAAKy0B,OAAOQ,cAAc+E,MAAK,SAAUhF,GACvCuD,EAAOvD,SAAWA,OAGrB,CACD1/B,IAAK,OACLC,MAAO,WACL,IAAI+yC,EAAUtoC,KAAKgiC,WAAW,QAE1BsG,GACFA,EAAe,MAAEtoC,KAAKnL,MAAMyiC,WAG/B,CACDhiC,IAAK,QACLC,MAAO,WACLyK,KAAKgiC,WAAW,WAEjB,CACD1sC,IAAK,OACLC,MAAO,WACLyK,KAAKgiC,WAAW,YAEjB,CACD1sC,IAAK,SACLC,MAAO,SAAgByX,GACrBhN,KAAKgiC,WAAW,iBAAkBh1B,KAEnC,CACD1X,IAAK,YACLC,MAAO,SAAmBgoC,GACxBv9B,KAAKgiC,WAAW,YAAazE,KAE9B,CACDjoC,IAAK,UACLC,MAAO,SAAiB2hC,GACtBl3B,KAAKgiC,WAAW,UAAW9K,KAE5B,CACD5hC,IAAK,kBACLC,MAAO,SAAyBqzC,GAC9B5oC,KAAKgiC,WAAW,kBAAmB4G,KAEpC,CACDtzC,IAAK,cACLC,MAAO,WACL,OAAOyK,KAAKg1B,WAEb,CACD1/B,IAAK,iBACLC,MAAO,WACL,OAAOyK,KAAK8iC,cAEb,CACDxtC,IAAK,mBACLC,MAAO,WACL,OAAOyK,KAAKqrC,gBAEb,CACD/1C,IAAK,SACLC,MAAO,WACL,IACI4H,EAAQ,CACV2D,MAAO,OACPC,OAAQ,OACRisC,SAAU,SACVxS,QALYx6B,KAAKnL,MAAM2lC,SAOzB,OAAoB7I,EAAgB,QAAEjzB,cAAc,MAAO,CACzDpJ,IAAK0K,KAAKnL,MAAM4F,IAChB+F,IAAKR,KAAKQ,IACVrD,MAAOA,SAzRGq1B,EAAkBD,EAAYj/B,UAAW8gC,GACrDC,GAAa7B,EAAkBD,EAAa8B,GA6RzCwY,EAxLgB,CAyLvBlb,EAAOsH,WAETlnC,EAAA,QAAqB86C,EAErB/Y,EAAgB+Y,EAAO,cAAe,SAEtC/Y,EAAgB+Y,EAAO,UAAWtL,EAAU9D,QAAQmD,OAEpD9M,EAAgB+Y,EAAO,aAAa,I,mCCzapCj6C,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAA,aAAqB,EAErB,IAAI4/B,EAiBJ,SAAiCp2B,GAC/B,GAAIA,GAAOA,EAAIjJ,WACb,OAAOiJ,EAGT,GAAY,OAARA,GAAiC,WAAjBD,EAAQC,IAAoC,mBAARA,EACtD,MAAO,CACL,QAAWA,GAIf,IAAIq2B,EAAQC,IAEZ,GAAID,GAASA,EAAMrC,IAAIh0B,GACrB,OAAOq2B,EAAMpK,IAAIjsB,GAGnB,IAAIu2B,EAAS,GACTC,EAAwBn/B,OAAOwwB,gBAAkBxwB,OAAOo/B,yBAE5D,IAAK,IAAI18B,KAAOiG,EACd,GAAI3I,OAAOU,UAAUwM,eAAetM,KAAK+H,EAAKjG,GAAM,CAClD,IAAI28B,EAAOF,EAAwBn/B,OAAOo/B,yBAAyBz2B,EAAKjG,GAAO,KAE3E28B,IAASA,EAAKzK,KAAOyK,EAAKtM,KAC5B/yB,OAAOwwB,eAAe0O,EAAQx8B,EAAK28B,GAEnCH,EAAOx8B,GAAOiG,EAAIjG,GAKxBw8B,EAAgB,QAAIv2B,EAEhBq2B,GACFA,EAAMjM,IAAIpqB,EAAKu2B,GAGjB,OAAOA,EAvDII,CAAwB,EAAQ,QAEzC8J,EAAS,EAAQ,OAEjBuF,EAAY,EAAQ,OAExB,SAAS1P,IACP,GAAuB,mBAAZQ,QAAwB,OAAO,KAC1C,IAAIT,EAAQ,IAAIS,QAMhB,OAJAR,EAA2B,WACzB,OAAOD,GAGFA,EA4CT,SAASt2B,EAAQC,GAaf,OATED,EADoB,mBAAX5I,QAAoD,iBAApBA,OAAOC,SACtC,SAAiB4I,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,mBAAX7I,QAAyB6I,EAAI7H,cAAgBhB,QAAU6I,IAAQ7I,OAAOY,UAAY,gBAAkBiI,IAI9GA,GAGjB,SAAS29B,EAAQj6B,EAAQk6B,GACvB,IAAIx+B,EAAO/H,OAAO+H,KAAKsE,GAEvB,GAAIrM,OAAOqvB,sBAAuB,CAChC,IAAImX,EAAUxmC,OAAOqvB,sBAAsBhjB,GACvCk6B,IAAgBC,EAAUA,EAAQ11B,QAAO,SAAU21B,GACrD,OAAOzmC,OAAOo/B,yBAAyB/yB,EAAQo6B,GAAK9R,eAEtD5sB,EAAKzB,KAAK6G,MAAMpF,EAAMy+B,GAGxB,OAAOz+B,EAGT,SAAS2+B,EAAc15B,GACrB,IAAK,IAAIzN,EAAI,EAAGA,EAAIgK,UAAUjK,OAAQC,IAAK,CACzC,IAAI0N,EAAyB,MAAhB1D,UAAUhK,GAAagK,UAAUhK,GAAK,GAE/CA,EAAI,EACN+mC,EAAQtmC,OAAOiN,IAAS,GAAMpH,SAAQ,SAAUnD,GAC9Cw+B,EAAgBl0B,EAAQtK,EAAKuK,EAAOvK,OAE7B1C,OAAO2mC,0BAChB3mC,OAAO4mC,iBAAiB55B,EAAQhN,OAAO2mC,0BAA0B15B,IAEjEq5B,EAAQtmC,OAAOiN,IAASpH,SAAQ,SAAUnD,GACxC1C,OAAOwwB,eAAexjB,EAAQtK,EAAK1C,OAAOo/B,yBAAyBnyB,EAAQvK,OAKjF,OAAOsK,EAGT,SAAS0yB,EAAgBnF,EAAUoF,GACjC,KAAMpF,aAAoBoF,GACxB,MAAM,IAAIz/B,UAAU,qCAIxB,SAAS0/B,EAAkB5yB,EAAQ/K,GACjC,IAAK,IAAI1C,EAAI,EAAGA,EAAI0C,EAAM3C,OAAQC,IAAK,CACrC,IAAIsgC,EAAa59B,EAAM1C,GACvBsgC,EAAWlL,WAAakL,EAAWlL,aAAc,EACjDkL,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD//B,OAAOwwB,eAAexjB,EAAQ6yB,EAAWn9B,IAAKm9B,IAyBlD,SAASG,EAAgBz/B,EAAGuwB,GAM1B,OALAkP,EAAkBhgC,OAAOigC,gBAAkB,SAAyB1/B,EAAGuwB,GAErE,OADAvwB,EAAE2/B,UAAYpP,EACPvwB,IAGcA,EAAGuwB,GAG5B,SAASqP,EAAaC,GACpB,IAAIC,EAkCN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA1rB,KAAKrU,UAAUC,SAASC,KAAK0/B,QAAQC,UAAUxrB,KAAM,IAAI,iBAClD,EACP,MAAOic,GACP,OAAO,GA3CuB0P,GAEhC,OAAO,WACL,IACI3xB,EADA4xB,EAAQC,EAAgBR,GAG5B,GAAIC,EAA2B,CAC7B,IAAIQ,EAAYD,EAAgBxzB,MAAMtM,YAEtCiO,EAASuxB,QAAQC,UAAUI,EAAOp3B,UAAWs3B,QAE7C9xB,EAAS4xB,EAAMxzB,MAAMC,KAAM7D,WAG7B,OAAOu3B,EAA2B1zB,KAAM2B,IAI5C,SAAS+xB,EAA2B5H,EAAMt4B,GACxC,OAAIA,GAA2B,WAAlB8H,EAAQ9H,IAAsC,mBAATA,EAI3CmgC,EAAuB7H,GAHrBt4B,EAMX,SAASmgC,EAAuB7H,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI8H,eAAe,6DAG3B,OAAO9H,EAgBT,SAAS0H,EAAgBrgC,GAIvB,OAHAqgC,EAAkB5gC,OAAOigC,eAAiBjgC,OAAOihC,eAAiB,SAAyB1gC,GACzF,OAAOA,EAAE2/B,WAAalgC,OAAOihC,eAAe1gC,KAEvBA,GAGzB,SAAS2gC,EAAgBv4B,EAAKjG,EAAKC,GAYjC,OAXID,KAAOiG,EACT3I,OAAOwwB,eAAe7nB,EAAKjG,EAAK,CAC9BC,MAAOA,EACPgyB,YAAY,EACZmL,cAAc,EACdC,UAAU,IAGZp3B,EAAIjG,GAAOC,EAGNgG,EAGT,IAEIioC,EAAmB,iBAEnByJ,EAAsB,SAAUjZ,IAlGpC,SAAmBC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIphC,UAAU,sDAGtBmhC,EAAS3gC,UAAYV,OAAOy+B,OAAO6C,GAAcA,EAAW5gC,UAAW,CACrEI,YAAa,CACX6B,MAAO0+B,EACPtB,UAAU,EACVD,cAAc,KAGdwB,GAAYtB,EAAgBqB,EAAUC,GAuF1CC,CAAU8Y,EAAQjZ,GAElB,IA3GoBzB,EAAa6B,EAAYC,EA2GzCC,EAASvB,EAAaka,GAE1B,SAASA,IACP,IAAI1Y,EAEJjC,EAAgBtyB,KAAMitC,GAEtB,IAAK,IAAIrhB,EAAOzvB,UAAUjK,OAAQsiC,EAAQ,IAAIniC,MAAMu5B,GAAO51B,EAAO,EAAGA,EAAO41B,EAAM51B,IAChFw+B,EAAMx+B,GAAQmG,UAAUnG,GAyC1B,OApCA89B,EAAgBH,EAFhBY,EAAQD,EAAO9gC,KAAKuM,MAAMu0B,EAAQ,CAACt0B,MAAMxJ,OAAOg+B,KAED,aAAcwH,EAAOgG,YAEpElO,EAAgBH,EAAuBY,GAAQ,WAAYA,EAAM1/B,MAAM6oC,OAAOgG,UAAY,GAAGltC,OAAOgtC,GAAkBhtC,QAAO,EAAIwlC,EAAO2H,kBAExI7P,EAAgBH,EAAuBY,GAAQ,UAAU,WACvD,IAAIsB,EAEJ,OAAQA,EAActB,EAAM1/B,OAAO4hC,OAAO12B,MAAM81B,EAAa15B,cAG/D23B,EAAgBH,EAAuBY,GAAQ,WAAW,WACxD,IAAIgC,EAEJ,OAAQA,EAAehC,EAAM1/B,OAAOkiC,QAAQh3B,MAAMw2B,EAAcp6B,cAGlE23B,EAAgBH,EAAuBY,GAAQ,UAAU,WACvD,IAAIyC,EAEJ,OAAQA,EAAezC,EAAM1/B,OAAOguC,OAAO9iC,MAAMi3B,EAAc76B,cAGjE23B,EAAgBH,EAAuBY,GAAQ,WAAW,WACxD,IAAI8C,EAEJ,OAAQA,EAAe9C,EAAM1/B,OAAOsiC,QAAQp3B,MAAMs3B,EAAcl7B,cAGlE23B,EAAgBH,EAAuBY,GAAQ,QAAQ,WACrDA,EAAMyN,WAAW,WAGnBlO,EAAgBH,EAAuBY,GAAQ,UAAU,WACvDA,EAAMyN,WAAW,aAGZzN,EAkIT,OA9RoBhC,EA+JP0a,GA/JoB7Y,EA+JZ,CAAC,CACpB9+B,IAAK,oBACLC,MAAO,WACLyK,KAAKnL,MAAM2jC,SAAWx4B,KAAKnL,MAAM2jC,QAAQx4B,QAE1C,CACD1K,IAAK,OACLC,MAAO,SAAckF,GACnB,IAAIq9B,EAAS93B,KAET+3B,EAAe/3B,KAAKnL,MACpBkhC,EAAUgC,EAAahC,QACvBE,EAAQ8B,EAAa9B,MACrBgM,EAAWlK,EAAakK,SACxBiL,EAAWnV,EAAajC,QACxB4H,EAAS3F,EAAa2F,OACtBpG,EAAUS,EAAaT,SAC3B,EAAI0E,EAAOqG,QA5EH,kDACG,UA2E6BrI,MAAK,WAC3C3P,OAAO8iB,IAAM9iB,OAAO8iB,KAAO,GAE3B9iB,OAAO8iB,IAAIj0C,KAAK,CACdwH,GAAIo3B,EAAOsM,SACXjvC,QAASmkC,EAAc,CACrBkQ,SAAUzT,EACVqX,eAAgB,QAChBnX,MAAOA,EACPoX,sBAAuBpL,EACvBqL,iBAAkBrL,EAClBsL,QAAStL,EACTuL,oBAAqBvL,EACrBwL,eAAgBxL,EAChByL,cAAezL,EACf0L,gBAAiB1L,EACjB2L,gBAAiB3L,GAChBvE,EAAOvoC,SACV2gC,QAAS,SAAiBrB,GACxBqD,EAAOrD,OAASA,EAEhBqD,EAAO+V,SAEP/V,EAAOrD,OAAO58B,KAAK,OAAQigC,EAAOrB,QAElCqB,EAAOrD,OAAO58B,KAAK,QAASigC,EAAOf,SAEnCe,EAAOrD,OAAO58B,KAAK,OAAQigC,EAAO+K,QAElC/K,EAAOrD,OAAO58B,KAAK,MAAOigC,EAAOX,SAEjC+V,SAGH5V,KAEJ,CACDhiC,IAAK,SACLC,MAAO,WACLyK,KAAKy0B,OAAOoZ,OAAO,OAAQ7tC,KAAKy2B,QAChCz2B,KAAKy0B,OAAOoZ,OAAO,QAAS7tC,KAAK+2B,SACjC/2B,KAAKy0B,OAAOoZ,OAAO,OAAQ7tC,KAAK6iC,QAChC7iC,KAAKy0B,OAAOoZ,OAAO,MAAO7tC,KAAKm3B,WAGhC,CACD7hC,IAAK,OACLC,MAAO,WACLyK,KAAKgiC,WAAW,UAEjB,CACD1sC,IAAK,QACLC,MAAO,WACLyK,KAAKgiC,WAAW,WAEjB,CACD1sC,IAAK,OACLC,MAAO,WACLyK,KAAK6tC,SACL7tC,KAAKgiC,WAAW,YAEjB,CACD1sC,IAAK,SACLC,MAAO,SAAgByX,GACrBhN,KAAKgiC,WAAW,OAAQh1B,KAEzB,CACD1X,IAAK,YACLC,MAAO,SAAmBgoC,GACxBv9B,KAAKgiC,WAAW,SAAUzE,KAE3B,CACDjoC,IAAK,kBACLC,MAAO,SAAyBqzC,GAC9B5oC,KAAKgiC,WAAW,eAAgB4G,KAEjC,CACDtzC,IAAK,cACLC,MAAO,WACL,OAAOyK,KAAKgiC,WAAW,cAExB,CACD1sC,IAAK,iBACLC,MAAO,WACL,OAAOyK,KAAKgiC,WAAW,UAExB,CACD1sC,IAAK,mBACLC,MAAO,WACL,OAAO,OAER,CACDD,IAAK,SACLC,MAAO,WACL,IAAIkF,EAAMuF,KAAKnL,MAAM4F,IACjBqzC,EAAUrzC,GAAOA,EAAIgC,MAAM8kC,EAAU5B,kBAAkB,GACvD7oC,EAAY,6BAA6BN,OAAOs3C,GAKpD,OAAoBnc,EAAgB,QAAEjzB,cAAc,MAAO,CACzDgC,GAAIV,KAAKokC,SACT9uC,IAAKw4C,EACLh3C,UAAWA,EACXqG,MARU,CACV2D,MAAO,OACPC,OAAQ,eAlREyxB,EAAkBD,EAAYj/B,UAAW8gC,GACrDC,GAAa7B,EAAkBD,EAAa8B,GA4RzC4Y,EAtLiB,CAuLxBtb,EAAOsH,WAETlnC,EAAA,QAAqBk7C,EAErBnZ,EAAgBmZ,EAAQ,cAAe,UAEvCnZ,EAAgBmZ,EAAQ,UAAW1L,EAAU9D,QAAQsD,QAErDjN,EAAgBmZ,EAAQ,eAAe,I,mCCxavCr6C,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAA,aAAqB,EAErB,IAAI4/B,EAiBJ,SAAiCp2B,GAC/B,GAAIA,GAAOA,EAAIjJ,WACb,OAAOiJ,EAGT,GAAY,OAARA,GAAiC,WAAjBD,EAAQC,IAAoC,mBAARA,EACtD,MAAO,CACL,QAAWA,GAIf,IAAIq2B,EAAQC,IAEZ,GAAID,GAASA,EAAMrC,IAAIh0B,GACrB,OAAOq2B,EAAMpK,IAAIjsB,GAGnB,IAAIu2B,EAAS,GACTC,EAAwBn/B,OAAOwwB,gBAAkBxwB,OAAOo/B,yBAE5D,IAAK,IAAI18B,KAAOiG,EACd,GAAI3I,OAAOU,UAAUwM,eAAetM,KAAK+H,EAAKjG,GAAM,CAClD,IAAI28B,EAAOF,EAAwBn/B,OAAOo/B,yBAAyBz2B,EAAKjG,GAAO,KAE3E28B,IAASA,EAAKzK,KAAOyK,EAAKtM,KAC5B/yB,OAAOwwB,eAAe0O,EAAQx8B,EAAK28B,GAEnCH,EAAOx8B,GAAOiG,EAAIjG,GAKxBw8B,EAAgB,QAAIv2B,EAEhBq2B,GACFA,EAAMjM,IAAIpqB,EAAKu2B,GAGjB,OAAOA,EAvDII,CAAwB,EAAQ,QAEzC8J,EAAS,EAAQ,OAEjBuF,EAAY,EAAQ,OAExB,SAAS1P,IACP,GAAuB,mBAAZQ,QAAwB,OAAO,KAC1C,IAAIT,EAAQ,IAAIS,QAMhB,OAJAR,EAA2B,WACzB,OAAOD,GAGFA,EA4CT,SAASt2B,EAAQC,GAaf,OATED,EADoB,mBAAX5I,QAAoD,iBAApBA,OAAOC,SACtC,SAAiB4I,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,mBAAX7I,QAAyB6I,EAAI7H,cAAgBhB,QAAU6I,IAAQ7I,OAAOY,UAAY,gBAAkBiI,IAI9GA,GAGjB,SAAS29B,EAAQj6B,EAAQk6B,GACvB,IAAIx+B,EAAO/H,OAAO+H,KAAKsE,GAEvB,GAAIrM,OAAOqvB,sBAAuB,CAChC,IAAImX,EAAUxmC,OAAOqvB,sBAAsBhjB,GACvCk6B,IAAgBC,EAAUA,EAAQ11B,QAAO,SAAU21B,GACrD,OAAOzmC,OAAOo/B,yBAAyB/yB,EAAQo6B,GAAK9R,eAEtD5sB,EAAKzB,KAAK6G,MAAMpF,EAAMy+B,GAGxB,OAAOz+B,EAGT,SAAS2+B,EAAc15B,GACrB,IAAK,IAAIzN,EAAI,EAAGA,EAAIgK,UAAUjK,OAAQC,IAAK,CACzC,IAAI0N,EAAyB,MAAhB1D,UAAUhK,GAAagK,UAAUhK,GAAK,GAE/CA,EAAI,EACN+mC,EAAQtmC,OAAOiN,IAAS,GAAMpH,SAAQ,SAAUnD,GAC9Cw+B,EAAgBl0B,EAAQtK,EAAKuK,EAAOvK,OAE7B1C,OAAO2mC,0BAChB3mC,OAAO4mC,iBAAiB55B,EAAQhN,OAAO2mC,0BAA0B15B,IAEjEq5B,EAAQtmC,OAAOiN,IAASpH,SAAQ,SAAUnD,GACxC1C,OAAOwwB,eAAexjB,EAAQtK,EAAK1C,OAAOo/B,yBAAyBnyB,EAAQvK,OAKjF,OAAOsK,EAGT,SAAS4hC,EAAexvC,EAAKG,GAC3B,OAqDF,SAAyBH,GACvB,GAAIK,MAAMG,QAAQR,GAAM,OAAOA,EAtDxByvC,CAAgBzvC,IA0BzB,SAA+BA,EAAKG,GAClC,GAAsB,oBAAXO,UAA4BA,OAAOC,YAAYC,OAAOZ,IAAO,OACxE,IAAIwrC,EAAO,GACPkE,GAAK,EACLC,GAAK,EACLvB,OAAKhkC,EAET,IACE,IAAK,IAAiCwlC,EAA7B9S,EAAK98B,EAAIU,OAAOC,cAAmB+uC,GAAME,EAAK9S,EAAGzuB,QAAQD,QAChEo9B,EAAKtkC,KAAK0oC,EAAGrsC,QAETpD,GAAKqrC,EAAKtrC,SAAWC,GAH8CuvC,GAAK,IAK9E,MAAO/gB,GACPghB,GAAK,EACLvB,EAAKzf,EACL,QACA,IACO+gB,GAAsB,MAAhB5S,EAAW,QAAWA,EAAW,SAC5C,QACA,GAAI6S,EAAI,MAAMvB,GAIlB,OAAO5C,EAlDwBqE,CAAsB7vC,EAAKG,IAO5D,SAAqCgB,EAAGC,GACtC,IAAKD,EAAG,OACR,GAAiB,iBAANA,EAAgB,OAAO+M,EAAkB/M,EAAGC,GACvD,IAAIC,EAAIT,OAAOU,UAAUC,SAASC,KAAKL,GAAGM,MAAM,GAAI,GAC1C,WAANJ,GAAkBF,EAAEO,cAAaL,EAAIF,EAAEO,YAAYC,MACvD,GAAU,QAANN,GAAqB,QAANA,EAAa,OAAOhB,MAAMQ,KAAKM,GAClD,GAAU,cAANE,GAAqB,2CAA2CO,KAAKP,GAAI,OAAO6M,EAAkB/M,EAAGC,GAbzC6M,CAA4BjO,EAAKG,IAGnG,WACE,MAAM,IAAIW,UAAU,6IAJmFgvC,GAgBzG,SAAS5hC,EAAkBlO,EAAKC,IACnB,MAAPA,GAAeA,EAAMD,EAAIE,UAAQD,EAAMD,EAAIE,QAE/C,IAAK,IAAIC,EAAI,EAAGC,EAAO,IAAIC,MAAMJ,GAAME,EAAIF,EAAKE,IAC9CC,EAAKD,GAAKH,EAAIG,GAGhB,OAAOC,EAkCT,SAASkgC,EAAgBnF,EAAUoF,GACjC,KAAMpF,aAAoBoF,GACxB,MAAM,IAAIz/B,UAAU,qCAIxB,SAAS0/B,EAAkB5yB,EAAQ/K,GACjC,IAAK,IAAI1C,EAAI,EAAGA,EAAI0C,EAAM3C,OAAQC,IAAK,CACrC,IAAIsgC,EAAa59B,EAAM1C,GACvBsgC,EAAWlL,WAAakL,EAAWlL,aAAc,EACjDkL,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD//B,OAAOwwB,eAAexjB,EAAQ6yB,EAAWn9B,IAAKm9B,IAyBlD,SAASG,EAAgBz/B,EAAGuwB,GAM1B,OALAkP,EAAkBhgC,OAAOigC,gBAAkB,SAAyB1/B,EAAGuwB,GAErE,OADAvwB,EAAE2/B,UAAYpP,EACPvwB,IAGcA,EAAGuwB,GAG5B,SAASqP,EAAaC,GACpB,IAAIC,EAkCN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA1rB,KAAKrU,UAAUC,SAASC,KAAK0/B,QAAQC,UAAUxrB,KAAM,IAAI,iBAClD,EACP,MAAOic,GACP,OAAO,GA3CuB0P,GAEhC,OAAO,WACL,IACI3xB,EADA4xB,EAAQC,EAAgBR,GAG5B,GAAIC,EAA2B,CAC7B,IAAIQ,EAAYD,EAAgBxzB,MAAMtM,YAEtCiO,EAASuxB,QAAQC,UAAUI,EAAOp3B,UAAWs3B,QAE7C9xB,EAAS4xB,EAAMxzB,MAAMC,KAAM7D,WAG7B,OAAOu3B,EAA2B1zB,KAAM2B,IAI5C,SAAS+xB,EAA2B5H,EAAMt4B,GACxC,OAAIA,GAA2B,WAAlB8H,EAAQ9H,IAAsC,mBAATA,EAI3CmgC,EAAuB7H,GAHrBt4B,EAMX,SAASmgC,EAAuB7H,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI8H,eAAe,6DAG3B,OAAO9H,EAgBT,SAAS0H,EAAgBrgC,GAIvB,OAHAqgC,EAAkB5gC,OAAOigC,eAAiBjgC,OAAOihC,eAAiB,SAAyB1gC,GACzF,OAAOA,EAAE2/B,WAAalgC,OAAOihC,eAAe1gC,KAEvBA,GAGzB,SAAS2gC,EAAgBv4B,EAAKjG,EAAKC,GAYjC,OAXID,KAAOiG,EACT3I,OAAOwwB,eAAe7nB,EAAKjG,EAAK,CAC9BC,MAAOA,EACPgyB,YAAY,EACZmL,cAAc,EACdC,UAAU,IAGZp3B,EAAIjG,GAAOC,EAGNgG,EAGT,IACIwyC,EAAa,KAEbC,EAAiB,wBACjBC,EAAqB,4BACrBC,EAAiB,wBAGjBC,EAAuB,SAAUna,IAtGrC,SAAmBC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIphC,UAAU,sDAGtBmhC,EAAS3gC,UAAYV,OAAOy+B,OAAO6C,GAAcA,EAAW5gC,UAAW,CACrEI,YAAa,CACX6B,MAAO0+B,EACPtB,UAAU,EACVD,cAAc,KAGdwB,GAAYtB,EAAgBqB,EAAUC,GA2F1CC,CAAUga,EAASna,GAEnB,IA/GoBzB,EAAa6B,EAAYC,EA+GzCC,EAASvB,EAAaob,GAE1B,SAASA,IACP,IAAI5Z,EAEJjC,EAAgBtyB,KAAMmuC,GAEtB,IAAK,IAAIviB,EAAOzvB,UAAUjK,OAAQ8zB,EAAO,IAAI3zB,MAAMu5B,GAAO51B,EAAO,EAAGA,EAAO41B,EAAM51B,IAC/EgwB,EAAKhwB,GAAQmG,UAAUnG,GAiGzB,OA5FA89B,EAAgBH,EAFhBY,EAAQD,EAAO9gC,KAAKuM,MAAMu0B,EAAQ,CAACt0B,MAAMxJ,OAAOwvB,KAED,aAAcgW,EAAOgG,YAEpElO,EAAgBH,EAAuBY,GAAQ,iBAAiB,SAAU95B,GACxE,OAAIA,aAAepI,MACV,CACL+7C,SAAU,WACVC,SAAU5zC,EAAIvE,IAAIq+B,EAAM+Z,OAAOzzC,KAAK,MAIpCmzC,EAAep6C,KAAK6G,GAKf,CACL2zC,SAAU,WACVt4C,KALgB0rC,EADD/mC,EAAIgC,MAAMuxC,GACkB,GAChB,IAMpBC,EAAmBr6C,KAAK6G,GAK1B,CACL2zC,SAAU,eACVt4C,KALgB0rC,EADA/mC,EAAIgC,MAAMwxC,GACkB,GACnB,IAQtB,MAGTna,EAAgBH,EAAuBY,GAAQ,iBAAiB,SAAU6O,GACxE,IAAIjJ,EAAOiJ,EAAMjJ,KACbtE,EAActB,EAAM1/B,MACpB4hC,EAASZ,EAAYY,OACrBM,EAAUlB,EAAYkB,QACtBoM,EAAWtN,EAAYsN,SACvBkB,EAAcxO,EAAYwO,YAC1BlN,EAAUtB,EAAYsB,QACtBrB,EAAUD,EAAYC,QACtBoB,EAAOrB,EAAYqB,KACnBoP,EAAqBzQ,EAAY6H,OACjC6Q,EAAajI,EAAmBiI,WAChCC,EAAclI,EAAmBkI,YACjCC,EAAwBpkB,OAAiB,GAAEqkB,YAC3CC,EAAYF,EAAsBE,UAClC5C,EAAU0C,EAAsB1C,QAChC6C,EAASH,EAAsBG,OAC/BC,EAAYJ,EAAsBI,UAClC7C,EAAQyC,EAAsBzC,MAC9B8C,EAAOL,EAAsBK,KAWjC,GAVI3U,IAASwU,GAAWH,IAEpBrU,IAAS4R,IACXtV,IACA4N,KAGElK,IAASyU,GAAQ7X,IACjBoD,IAAS0U,GAAW1L,IAEpBhJ,IAAS6R,EAAO,CAClB,IAAI+C,IAAexa,EAAMyN,WAAW,eAEhC9K,IAAS6X,IACPR,EAAWrM,MACb3N,EAAMuC,OAAOyX,EAAWrM,OAExB3N,EAAM6B,QAIVe,IAGEgD,IAAS2U,GAAMhZ,OAGrBhC,EAAgBH,EAAuBY,GAAQ,QAAQ,WACrDA,EAAMyN,WAAW,WAGnBlO,EAAgBH,EAAuBY,GAAQ,UAAU,WACvDA,EAAMyN,WAAW,aAGnBlO,EAAgBH,EAAuBY,GAAQ,OAAO,SAAUx9B,GAC9Dw9B,EAAMx9B,UAAYA,KAGbw9B,EA2JT,OAnXoBhC,EA2NP4b,GA3NoB/Z,EA2NX,CAAC,CACrB9+B,IAAK,oBACLC,MAAO,WACLyK,KAAKnL,MAAM2jC,SAAWx4B,KAAKnL,MAAM2jC,QAAQx4B,QAE1C,CACD1K,IAAK,QACLC,MAAO,SAAekF,GACpB,OAAKA,GAAOA,aAAepI,MAClB,KAGFoI,EAAIgC,MAAM8kC,EAAUvB,mBAAmB,KAE/C,CACD1qC,IAAK,OACLC,MAAO,SAAckF,EAAKk6B,GACxB,IAAImD,EAAS93B,KAETu2B,EAAev2B,KAAKnL,MACpBkhC,EAAUQ,EAAaR,QACvBE,EAAQM,EAAaN,MACrB2P,EAAcrP,EAAaqP,YAC3B3D,EAAW1L,EAAa0L,SACxB/K,EAAOX,EAAaW,KACpBwG,EAASnH,EAAamH,OACtBsR,EAAWzY,EAAae,QACxBiX,EAAa7Q,EAAO6Q,WACpBU,EAAevR,EAAOuR,aACtBvuC,EAAKV,KAAKsuC,MAAM7zC,GAEpB,GAAIk6B,EACF,OAAIqZ,EAAep6C,KAAK6G,IAAQwzC,EAAmBr6C,KAAK6G,IAAQA,aAAepI,WAC7E2N,KAAKy0B,OAAOya,aAAalvC,KAAKmvC,cAAc10C,SAI9CuF,KAAKy0B,OAAO2a,aAAa,CACvBC,QAAS3uC,EACT4uC,cAAc,EAAItT,EAAOmG,gBAAgB1nC,IAAQ8zC,EAAWrM,MAC5DqN,YAAY,EAAIvT,EAAOwT,cAAc/0C,IAAQ8zC,EAAWvF,OAK5D,EAAIhN,EAAOqG,QApKH,qCAoKoB0L,EAlKX,2BAkKyC,SAAU0B,GAClE,OAAOA,EAAGta,UACT6E,MAAK,SAAUyV,GACX3X,EAAO/gC,YACZ+gC,EAAOrD,OAAS,IAAIgb,EAAG1b,OAAO+D,EAAO/gC,UAAWuiC,EAAc,CAC5Dx4B,MAAO,OACPC,OAAQ,OACRsuC,QAAS3uC,EACT6tC,WAAYjV,EAAcA,EAAc,CACtC8I,SAAUrM,EAAU,EAAI,EACxBqC,KAAMnC,EAAQ,EAAI,EAClBgM,SAAUA,EAAW,EAAI,EACzBC,OAAO,EAAIlG,EAAOmG,gBAAgB1nC,GAClCuuC,KAAK,EAAIhN,EAAOwT,cAAc/0C,GAC9B+nC,OAAQnY,OAAOoY,SAASD,OACxBoD,YAAaA,GACZ9N,EAAOqX,cAAc10C,IAAO8zC,GAC/B7L,OAAQ,CACN5M,QAAS,WACHoB,GACFY,EAAOrD,OAAO6D,SAAQ,GAIxBR,EAAOjjC,MAAMihC,WAEf4Z,cAAe5X,EAAO4X,cACtBpY,QAAS,SAAiB8L,GACxB,OAAO4L,EAAS5L,EAAMjJ,QAG1BwV,KAAMzB,EAAet6C,KAAK6G,GA7LhB,wCA6LuC2B,GAChD6yC,OACFD,KAEJ,CACD15C,IAAK,OACLC,MAAO,WACLyK,KAAKgiC,WAAW,eAEjB,CACD1sC,IAAK,QACLC,MAAO,WACLyK,KAAKgiC,WAAW,gBAEjB,CACD1sC,IAAK,OACLC,MAAO,WACAk1B,SAASmlB,KAAKC,SAAS7vC,KAAKgiC,WAAW,eAC5ChiC,KAAKgiC,WAAW,eAEjB,CACD1sC,IAAK,SACLC,MAAO,SAAgB2S,GACrBlI,KAAKgiC,WAAW,SAAU95B,GAErBlI,KAAKnL,MAAMkhC,SACd/1B,KAAKk4B,UAGR,CACD5iC,IAAK,YACLC,MAAO,SAAmBgoC,GACxBv9B,KAAKgiC,WAAW,YAAwB,IAAXzE,KAE9B,CACDjoC,IAAK,kBACLC,MAAO,SAAyBqzC,GAC9B5oC,KAAKgiC,WAAW,kBAAmB4G,KAEpC,CACDtzC,IAAK,UACLC,MAAO,SAAiB2hC,GACtBl3B,KAAKgiC,WAAW,UAAW9K,KAE5B,CACD5hC,IAAK,cACLC,MAAO,WACL,OAAOyK,KAAKgiC,WAAW,iBAExB,CACD1sC,IAAK,iBACLC,MAAO,WACL,OAAOyK,KAAKgiC,WAAW,oBAExB,CACD1sC,IAAK,mBACLC,MAAO,WACL,OAAOyK,KAAKgiC,WAAW,0BAA4BhiC,KAAKi1B,gBAEzD,CACD3/B,IAAK,SACLC,MAAO,WACL,IACI4H,EAAQ,CACV2D,MAAO,OACPC,OAAQ,OACRy5B,QAJYx6B,KAAKnL,MAAM2lC,SAMzB,OAAoB7I,EAAgB,QAAEjzB,cAAc,MAAO,CACzDvB,MAAOA,GACOw0B,EAAgB,QAAEjzB,cAAc,MAAO,CACrD8B,IAAKR,KAAKQ,YA7WAgyB,EAAkBD,EAAYj/B,UAAW8gC,GACrDC,GAAa7B,EAAkBD,EAAa8B,GAiXzC8Z,EAvQkB,CAwQzBxc,EAAOsH,WAETlnC,EAAA,QAAqBo8C,EAErBra,EAAgBqa,EAAS,cAAe,WAExCra,EAAgBqa,EAAS,UAAW5M,EAAU9D,QAAQgD,U,mCCrjBtD7tC,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAA,aAAqB,EAErB,IAAI4/B,EAAS,EAAQ,OAEjBqK,EAAS,EAAQ,OAEjBuF,EAAY,EAAQ,OAExB,SAASjmC,EAAQC,GAaf,OATED,EADoB,mBAAX5I,QAAoD,iBAApBA,OAAOC,SACtC,SAAiB4I,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,mBAAX7I,QAAyB6I,EAAI7H,cAAgBhB,QAAU6I,IAAQ7I,OAAOY,UAAY,gBAAkBiI,IAI9GA,GAGjB,SAASs2B,IACP,GAAuB,mBAAZQ,QAAwB,OAAO,KAC1C,IAAIT,EAAQ,IAAIS,QAMhB,OAJAR,EAA2B,WACzB,OAAOD,GAGFA,EAGT,SAASM,EAAwB32B,GAC/B,GAAIA,GAAOA,EAAIjJ,WACb,OAAOiJ,EAGT,GAAY,OAARA,GAAiC,WAAjBD,EAAQC,IAAoC,mBAARA,EACtD,MAAO,CACL,QAAWA,GAIf,IAAIq2B,EAAQC,IAEZ,GAAID,GAASA,EAAMrC,IAAIh0B,GACrB,OAAOq2B,EAAMpK,IAAIjsB,GAGnB,IAAIu2B,EAAS,GACTC,EAAwBn/B,OAAOwwB,gBAAkBxwB,OAAOo/B,yBAE5D,IAAK,IAAI18B,KAAOiG,EACd,GAAI3I,OAAOU,UAAUwM,eAAetM,KAAK+H,EAAKjG,GAAM,CAClD,IAAI28B,EAAOF,EAAwBn/B,OAAOo/B,yBAAyBz2B,EAAKjG,GAAO,KAE3E28B,IAASA,EAAKzK,KAAOyK,EAAKtM,KAC5B/yB,OAAOwwB,eAAe0O,EAAQx8B,EAAK28B,GAEnCH,EAAOx8B,GAAOiG,EAAIjG,GAWxB,OANAw8B,EAAgB,QAAIv2B,EAEhBq2B,GACFA,EAAMjM,IAAIpqB,EAAKu2B,GAGVA,EAGT,IAAIkN,EAAW,CAAC,CACd1pC,IAAK,UACL3B,KAAM,UACN8pC,QAAS8D,EAAU9D,QAAQgD,QAC3B1C,YAAyB,EAAIpM,EAAO0K,OAAM,WACxC,OAAOC,QAAQC,UAAUvC,MAAK,WAC5B,OAAO9H,EAAwB,EAAQ,eAG1C,CACD58B,IAAK,aACL3B,KAAM,aACN8pC,QAAS8D,EAAU9D,QAAQkD,WAC3B5C,YAAyB,EAAIpM,EAAO0K,OAAM,WACxC,OAAOC,QAAQC,UAAUvC,MAAK,WAC5B,OAAO9H,EAAwB,EAAQ,eAG1C,CACD58B,IAAK,QACL3B,KAAM,QACN8pC,QAAS8D,EAAU9D,QAAQmD,MAC3B7C,YAAyB,EAAIpM,EAAO0K,OAAM,WACxC,OAAOC,QAAQC,UAAUvC,MAAK,WAC5B,OAAO9H,EAAwB,EAAQ,eAG1C,CACD58B,IAAK,WACL3B,KAAM,WACN8pC,QAAS8D,EAAU9D,QAAQoD,SAC3B9C,YAAyB,EAAIpM,EAAO0K,OAAM,WACxC,OAAOC,QAAQC,UAAUvC,MAAK,WAC5B,OAAO9H,EAAwB,EAAQ,eAG1C,CACD58B,IAAK,aACL3B,KAAM,aACN8pC,QAAS8D,EAAU9D,QAAQqD,WAC3B/C,YAAyB,EAAIpM,EAAO0K,OAAM,WACxC,OAAOC,QAAQC,UAAUvC,MAAK,WAC5B,OAAO9H,EAAwB,EAAQ,eAG1C,CACD58B,IAAK,SACL3B,KAAM,SACN8pC,QAAS8D,EAAU9D,QAAQsD,OAC3BhD,YAAyB,EAAIpM,EAAO0K,OAAM,WACxC,OAAOC,QAAQC,UAAUvC,MAAK,WAC5B,OAAO9H,EAAwB,EAAQ,eAG1C,CACD58B,IAAK,SACL3B,KAAM,SACN8pC,QAAS8D,EAAU9D,QAAQuD,OAC3BjD,YAAyB,EAAIpM,EAAO0K,OAAM,WACxC,OAAOC,QAAQC,UAAUvC,MAAK,WAC5B,OAAO9H,EAAwB,EAAQ,eAG1C,CACD58B,IAAK,cACL3B,KAAM,cACN8pC,QAAS8D,EAAU9D,QAAQwD,YAC3BlD,YAAyB,EAAIpM,EAAO0K,OAAM,WACxC,OAAOC,QAAQC,UAAUvC,MAAK,WAC5B,OAAO9H,EAAwB,EAAQ,cAG1C,CACD58B,IAAK,WACL3B,KAAM,WACN8pC,QAAS8D,EAAU9D,QAAQyD,SAC3BnD,YAAyB,EAAIpM,EAAO0K,OAAM,WACxC,OAAOC,QAAQC,UAAUvC,MAAK,WAC5B,OAAO9H,EAAwB,EAAQ,eAG1C,CACD58B,IAAK,UACL3B,KAAM,UACN8pC,QAAS8D,EAAU9D,QAAQ0D,QAC3BpD,YAAyB,EAAIpM,EAAO0K,OAAM,WACxC,OAAOC,QAAQC,UAAUvC,MAAK,WAC5B,OAAO9H,EAAwB,EAAQ,eAG1C,CACD58B,IAAK,OACL3B,KAAM,aACN8pC,QAAS8D,EAAU9D,QAAQ2D,KAC3BvC,aAAc,SAAsBpkC,GAClC,OAAO8mC,EAAU9D,QAAQ2D,KAAK3mC,KAASgwB,SAASqlB,0BAA2B,EAAI9T,EAAOoJ,qCAAuC7D,EAAUlC,iBAAiBzrC,KAAK6G,IAE/JsjC,YAAyB,EAAIpM,EAAO0K,OAAM,WACxC,OAAOC,QAAQC,UAAUvC,MAAK,WAC5B,OAAO9H,EAAwB,EAAQ,gBAI7CngC,EAAA,QAAqBitC,G,mCCtLrBpsC,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAQwN,aAAexN,EAAQ+M,eAAY,EAE3C,IAEgCvD,EAF5Bw0C,GAE4Bx0C,EAFQ,EAAQ,SAGhCA,EAAIjJ,WAAaiJ,EAAM,CACnC,QAAWA,GAIf,IAAIwD,EAASgxC,EAAoB,QAAEhxC,OAC/BC,EAAO+wC,EAAoB,QAAE/wC,KAC7B8Q,EAASigC,EAAoB,QAAEjgC,OAC/BQ,EAAQy/B,EAAoB,QAAEz/B,MAC9BlR,EAAY2wC,EAAoB,QAAE3wC,UAClCF,EAAQ6wC,EAAoB,QAAE7wC,MAC9BD,EAAS8wC,EAAoB,QAAE9wC,OAC/BE,EAAO4wC,EAAoB,QAAE5wC,KAC7B1J,EAAOs6C,EAAoB,QAAEt6C,KAC7BqJ,EAAY,CACdrE,IAAK2E,EAAU,CAACL,EAAQuR,EAAOrR,IAC/B82B,QAAS/2B,EACTk4B,KAAMl4B,EACNijC,SAAUjjC,EACVg3B,OAAQlmB,EACRmmB,MAAOj3B,EACP03B,aAAc5mB,EACdhP,MAAO1B,EAAU,CAACL,EAAQ+Q,IAC1B/O,OAAQ3B,EAAU,CAACL,EAAQ+Q,IAC3B3S,MAAO8B,EACPy2B,iBAAkB5lB,EAClB81B,YAAa5mC,EACbg5B,IAAKh5B,EACL66B,MAAOz6B,EAAU,CAACJ,EAAMD,IACxBs7B,SAAU5kC,EACV0nC,QAAS/9B,EAAU,CAACL,EAAQI,EAAMD,EAAM,CACtC8wC,OAAQ7wC,EAAKG,eAEfo+B,OAAQx+B,EAAM,CACZyhC,WAAYzhC,EAAM,CAChB/J,QAAS8J,IAEXwhC,QAASvhC,EAAM,CACbqvC,WAAYtvC,EACZgwC,aAAchwC,EACduvC,YAAarvC,IAEf0hC,SAAU3hC,EAAM,CACd4kC,MAAO/kC,EACPilC,QAASjlC,EACT2kC,SAAU3kC,IAEZkiC,YAAa/hC,EAAM,CACjBtE,OAAQqE,IAEV2hC,MAAO1hC,EAAM,CACX4tC,cAAe7tC,IAEjBmiC,KAAMliC,EAAM,CACVk/B,WAAYn/B,EACZyqC,OAAQp5B,EACR01B,WAAYhnC,EACZknC,WAAYlnC,EACZmnC,SAAUnnC,EACVonC,UAAWpnC,EACXqnC,SAAUrnC,EACVwnC,WAAYvnC,EACZsnC,WAAYxnC,EACZ0nC,YAAa1nC,EACb2nC,WAAY3nC,IAEdgiC,OAAQ7hC,EAAM,CACZ/J,QAAS8J,EACTykC,SAAU3kC,IAEZmiC,SAAUhiC,EAAM,CACd/J,QAAS8J,IAEX+hC,OAAQ9hC,EAAM,CACZ/J,QAAS8J,EACTykC,SAAU3kC,IAEZoiC,QAASjiC,EAAM,CACb/J,QAAS8J,MAGb62B,QAAS32B,EACTq3B,QAASr3B,EACTs3B,OAAQt3B,EACR43B,QAAS53B,EACTgkC,SAAUhkC,EACVklC,YAAallC,EACbg4B,QAASh4B,EACTm4B,QAASn4B,EACTu4B,WAAYv4B,EACZ0jC,OAAQ1jC,EACRm2B,WAAYn2B,EACZ8lC,YAAa9lC,EACbgmC,aAAchmC,GAEhBpN,EAAQ+M,UAAYA,EAEpB,IAAImxC,EAAO,aAEP1wC,EAAe,CACjBw2B,SAAS,EACTmB,MAAM,EACN+K,UAAU,EACVjM,OAAQ,KACRC,OAAO,EACPS,aAAc,EACd51B,MAAO,QACPC,OAAQ,QACR5D,MAAO,GACPu4B,iBAAkB,IAClBkQ,aAAa,EACb5N,KAAK,EACL6B,OAAO,EACPsD,QAAS,MACTO,OAAQ,CACNiD,WAAY,CACVxrC,QAAS,CACP+6C,QAAQ,EAERC,QAAQ,EACRC,QAAQ,EACRhpC,UAAU,EACVipC,SAAS,EACTC,eAAe,EACfC,gBAAgB,IAGpB9P,QAAS,CACP8N,WAAY,CACV3I,YAAa,EACb4K,SAAU,EACVC,IAAK,EACLC,eAAgB,EAChBC,eAAgB,GAElB1B,aAAc,GACdT,YAAayB,GAEfpP,SAAU,CACRiD,MAAO,mBACPE,QAAS,OACTN,SAAU,MAEZzC,YAAa,CACXrmC,OAAQ,CACNwxC,IAAK,EACL,oBAAoB,IAGxBxL,MAAO,CACLkM,cAAe,CACb8D,WAAW,EACXC,QAAQ,EACRC,UAAU,EACVC,OAAO,IAGX3P,KAAM,CACJhD,WAAY,GACZsL,OAAQ,GACR1D,YAAY,EACZE,YAAY,EACZC,UAAU,EACVC,WAAW,EACXC,UAAU,EACVG,WAAY,GACZD,WAAY,SACZE,YAAa,QACbC,WAAY,SAEd3F,OAAQ,CACN5rC,QAAS,GACTuuC,SAAU,MAEZxC,SAAU,CACR/rC,QAAS,CACP67C,WAAY,IAGhBhQ,OAAQ,CACN7rC,QAAS,GACTuuC,SAAU,MAEZvC,QAAS,CACPhsC,QAAS,KAGb2gC,QAASma,EACTzZ,QAASyZ,EACTxZ,OAAQwZ,EACRlZ,QAASkZ,EACT9M,SAAU8M,EACV5L,YAAa4L,EACb9Y,QAAS8Y,EACT3Y,QAAS2Y,EACTvY,WAAYuY,EACZpN,OAAQoN,EACR3a,WAAY2a,EACZhL,YAAagL,EACb9K,aAAc8K,GAEhBl+C,EAAQwN,aAAeA,G,mCCjNvB3M,OAAOwwB,eAAerxB,EAAS,aAAc,CAC3CwD,OAAO,IAETxD,EAAQowC,eA8HR,SAAwB1nC,GACtB,OAAOw2C,EAAex2C,EAAKy2C,IA9H7Bn/C,EAAQy9C,aAiIR,SAAsB/0C,GACpB,OAAOw2C,EAAex2C,EAAK02C,IAjI7Bp/C,EAAQ4xC,aAqIR,WACE,OAAOrhC,KAAK8uC,SAAS79C,SAAS,IAAI6b,OAAO,EAAG,IArI9Crd,EAAQk4C,YAwIR,SAAqBhrC,GACnB,OAAOrM,OAAO+H,KAAKsE,GAAQ/I,KAAI,SAAUZ,GACvC,MAAO,GAAGkB,OAAOlB,EAAK,KAAKkB,OAAOyI,EAAO3J,OACxCuF,KAAK,MA1IV9I,EAAQswC,OAiKR,SAAgB5nC,EAAK42C,GACnB,IAAIC,EAAWn1C,UAAUjK,OAAS,QAAsBkK,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,KAC/Eo1C,EAAWp1C,UAAUjK,OAAS,QAAsBkK,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,WACjF,OAAO,GAELq1C,EAAcr1C,UAAUjK,OAAS,QAAsBkK,IAAjBD,UAAU,GAAmBA,UAAU,GAAKs1C,EAAqB,QACvGC,EAAiBC,EAAUN,GAE/B,GAAIK,GAAkBH,EAASG,GAC7B,OAAOpV,QAAQC,QAAQmV,GAGzB,OAAO,IAAIpV,SAAQ,SAAUC,EAASqV,GAGpC,GAAIC,EAASp3C,GACXo3C,EAASp3C,GAAKvB,KAAK,CACjBqjC,QAASA,EACTqV,OAAQA,QAHZ,CAQAC,EAASp3C,GAAO,CAAC,CACf8hC,QAASA,EACTqV,OAAQA,IAGV,IAAI9Y,EAAW,SAAkBgZ,GAE/BD,EAASp3C,GAAKhC,SAAQ,SAAUs5C,GAC9B,OAAOA,EAAQxV,QAAQuV,OAI3B,GAAIR,EAAU,CACZ,IAAIU,EAAkB3nB,OAAOinB,GAE7BjnB,OAAOinB,GAAY,WACbU,GAAiBA,IACrBlZ,EAAS6Y,EAAUN,KAIvBG,EAAY/2C,GAAK,SAAUkmB,GACrBA,GAGFkxB,EAASp3C,GAAKhC,SAAQ,SAAUs5C,GAC9B,OAAOA,EAAQH,OAAOjxB,MAExBkxB,EAASp3C,GAAO,MACN62C,GACVxY,EAAS6Y,EAAUN,YArN3Bt/C,EAAQ8rC,UA2NR,SAAmBhpC,EAAO0K,GACxB,OAAO,EAAIs8B,EAAoB,SAAGt8B,EAAam+B,OAAQ7oC,EAAM6oC,SA3N/D3rC,EAAQ4rC,KA8NR,SAAc1+B,GAGZ,IAFA,IAAIlE,EAEK6wB,EAAOzvB,UAAUjK,OAAQ+/C,EAAS,IAAI5/C,MAAMu5B,EAAO,EAAIA,EAAO,EAAI,GAAI51B,EAAO,EAAGA,EAAO41B,EAAM51B,IACpGi8C,EAAOj8C,EAAO,GAAKmG,UAAUnG,GAQ/B,IALA,IAAIk8C,GAAYn3C,EAAO,IAAIvE,OAAOuJ,MAAMhF,EAAMk3C,GAE1CjiC,EAAS,GACTrV,EAAO/H,OAAO+H,KAAKsE,GAEdu/B,EAAM,EAAG2T,EAAQx3C,EAAM6jC,EAAM2T,EAAMjgD,OAAQssC,IAAO,CACzD,IAAIlpC,EAAM68C,EAAM3T,IAEe,IAA3B0T,EAASx6C,QAAQpC,KACnB0a,EAAO1a,GAAO2J,EAAO3J,IAIzB,OAAO0a,GAjPTje,EAAQiwC,WAoPR,SAAoBoQ,GAClB,IAAIvJ,EAIJ,IAAK7oC,KAAKy0B,SAAWz0B,KAAKy0B,OAAO2d,GAAS,CACxC,IAAI7mB,EAAU,gBAAgB/0B,OAAOwJ,KAAKtM,YAAY2+C,YAAa,6BAA6B77C,OAAO47C,EAAQ,SAS/G,OAPKpyC,KAAKy0B,OAEEz0B,KAAKy0B,OAAO2d,KACtB7mB,GAAW,gCAFXA,GAAW,+BAKb7uB,QAAQC,KAAK4uB,EAAS,oBAAqB,IACpC,KAGT,IAAK,IAAI+mB,EAAQn2C,UAAUjK,OAAQ8zB,EAAO,IAAI3zB,MAAMigD,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGvsB,EAAKusB,EAAQ,GAAKp2C,UAAUo2C,GAG9B,OAAQ1J,EAAe7oC,KAAKy0B,QAAQ2d,GAAQryC,MAAM8oC,EAAc7iB,IAzQlEj0B,EAAQuvC,cA4QR,SAAuB7mC,GACrB,MAAyB,oBAAX4vB,aAAwD,IAAvBA,OAAOmoB,aAA+B/3C,aAAe4vB,OAAOmoB,aA5Q7GzgD,EAAQqzC,+BA+QR,WACE,IAAI7C,EAAQpmC,UAAUjK,OAAS,QAAsBkK,IAAjBD,UAAU,GAAmBA,UAAU,GAAKsuB,SAAS/rB,cAAc,SAGnG+zC,GAAwD,IAA5C,cAAc7+C,KAAK22B,UAAUC,WAC7C,OAAO+X,EAAMmQ,gCAA6E,mBAApCnQ,EAAMmG,2BAA4C+J,GAlR1G,IAAIhB,EAAc3V,EAAuB,EAAQ,QAE7CD,EAAaC,EAAuB,EAAQ,QAEhD,SAASA,EAAuBvgC,GAC9B,OAAOA,GAAOA,EAAIjJ,WAAaiJ,EAAM,CACnC,QAAWA,GAIf,SAASimC,EAAexvC,EAAKG,GAC3B,OAqDF,SAAyBH,GACvB,GAAIK,MAAMG,QAAQR,GAAM,OAAOA,EAtDxByvC,CAAgBzvC,IA0BzB,SAA+BA,EAAKG,GAClC,GAAsB,oBAAXO,UAA4BA,OAAOC,YAAYC,OAAOZ,IAAO,OACxE,IAAIwrC,EAAO,GACPkE,GAAK,EACLC,GAAK,EACLvB,OAAKhkC,EAET,IACE,IAAK,IAAiCwlC,EAA7B9S,EAAK98B,EAAIU,OAAOC,cAAmB+uC,GAAME,EAAK9S,EAAGzuB,QAAQD,QAChEo9B,EAAKtkC,KAAK0oC,EAAGrsC,QAETpD,GAAKqrC,EAAKtrC,SAAWC,GAH8CuvC,GAAK,IAK9E,MAAO/gB,GACPghB,GAAK,EACLvB,EAAKzf,EACL,QACA,IACO+gB,GAAsB,MAAhB5S,EAAW,QAAWA,EAAW,SAC5C,QACA,GAAI6S,EAAI,MAAMvB,GAIlB,OAAO5C,EAlDwBqE,CAAsB7vC,EAAKG,IAO5D,SAAqCgB,EAAGC,GACtC,IAAKD,EAAG,OACR,GAAiB,iBAANA,EAAgB,OAAO+M,EAAkB/M,EAAGC,GACvD,IAAIC,EAAIT,OAAOU,UAAUC,SAASC,KAAKL,GAAGM,MAAM,GAAI,GAC1C,WAANJ,GAAkBF,EAAEO,cAAaL,EAAIF,EAAEO,YAAYC,MACvD,GAAU,QAANN,GAAqB,QAANA,EAAa,OAAOhB,MAAMQ,KAAKM,GAClD,GAAU,cAANE,GAAqB,2CAA2CO,KAAKP,GAAI,OAAO6M,EAAkB/M,EAAGC,GAbzC6M,CAA4BjO,EAAKG,IAGnG,WACE,MAAM,IAAIW,UAAU,6IAJmFgvC,GAgBzG,SAAS5hC,EAAkBlO,EAAKC,IACnB,MAAPA,GAAeA,EAAMD,EAAIE,UAAQD,EAAMD,EAAIE,QAE/C,IAAK,IAAIC,EAAI,EAAGC,EAAO,IAAIC,MAAMJ,GAAME,EAAIF,EAAKE,IAC9CC,EAAKD,GAAKH,EAAIG,GAGhB,OAAOC,EAkCT,IAAI8+C,EAAoB,+BACpBC,EAAkB,uBAClBwB,EAAoB,gBACpBC,EAAgB,QAGpB,SAAS3B,EAAex2C,EAAKo4C,GAC3B,KAAIp4C,aAAepI,OAAnB,CAIA,IAAIoK,EAAQhC,EAAIgC,MAAMo2C,GAEtB,GAAIp2C,EAAO,CACT,IAAIq2C,EAAQr2C,EAAM,GAElB,GAAIq2C,EAAMr2C,MAAMk2C,GACd,OAWN,SAAyBG,GACvB,IAAI9lC,EAAU,EACVsD,EAAQqiC,EAAkB50B,KAAK+0B,GAEnC,KAAiB,OAAVxiC,GAAgB,CACrB,IACIyiC,EAAUvR,EADDlxB,EACwB,GACjCuK,EAAQk4B,EAAQ,GAChBC,EAASD,EAAQ,GAEN,MAAXC,IAAgBhmC,GAAiC,GAAtBsR,SAASzD,EAAO,IAAW,IAC3C,MAAXm4B,IAAgBhmC,GAAiC,GAAtBsR,SAASzD,EAAO,KAChC,MAAXm4B,IAAgBhmC,GAAWsR,SAASzD,EAAO,KAC/CvK,EAAQqiC,EAAkB50B,KAAK+0B,GAGjC,OAAO9lC,EA3BIimC,CAAgBH,GAGzB,GAAIF,EAAch/C,KAAKk/C,GACrB,OAAOx0B,SAASw0B,KA6CtB,SAASnB,EAAUr8C,GACjB,OAAI+0B,OAAO/0B,GACF+0B,OAAO/0B,GAGZ+0B,OAAOt4B,SAAWs4B,OAAOt4B,QAAQuD,GAC5B+0B,OAAOt4B,QAAQuD,GAGpB+0B,OAAOv4B,QAAUu4B,OAAOv4B,OAAOC,SAAWs4B,OAAOv4B,OAAOC,QAAQuD,GAC3D+0B,OAAOv4B,OAAOC,QAAQuD,GAGxB,KAKT,IAAIu8C,EAAW,I,8BC7Jf//C,EAAOC,QAAU,SAAkBmhD,EAAMC,GAGvC,GAFAA,EAAWA,EAAS95C,MAAM,KAAK,KAC/B65C,GAAQA,GACG,OAAO,EAElB,OAAQC,GACN,IAAK,OACL,IAAK,KACH,OAAgB,KAATD,EAET,IAAK,QACL,IAAK,MACH,OAAgB,MAATA,EAET,IAAK,MACH,OAAgB,KAATA,EAET,IAAK,SACH,OAAgB,KAATA,EAET,IAAK,OACH,OAAO,EAGX,OAAgB,IAATA,I,+BCjCTphD,EAAOC,QAAU,SAAUyH,GACzB,OAAOW,mBAAmBX,GAAKO,QAAQ,YAAY,SAAUwvB,GAC3D,MAAO,IAAMA,EAAE5vB,WAAW,GAAGpG,SAAS,IAAI6/C,mB,mCCF9C,EAAQ,OAER,IAAIC,EAAW,EAAQ,MACnBC,EAAK,EAAQ,OACbC,EAAU,kCACVC,EAAa,+CAEb5xC,EAAO,IAAI8X,OAAO,gLAStB,SAAS+5B,EAASj6C,GAChB,OAAQA,GAAY,IAAIjG,WAAWwG,QAAQ6H,EAAM,IAgBnD,IAAI8xC,EAAQ,CAAC,CAAC,IAAK,QACnB,CAAC,IAAK,SACN,SAAkBC,GAEhB,OAAOA,EAAQ55C,QAAQ,KAAM,MAC5B,CAAC,IAAK,YACT,CAAC,IAAK,OAAQ,GACd,CAAC65C,IAAK,YAAQx3C,EAAW,EAAG,GAC5B,CAAC,UAAW,YAAQA,EAAW,GAC/B,CAACw3C,IAAK,gBAAYx3C,EAAW,EAAG,IAW5By3C,EAAS,CACXp6C,KAAM,EACNiB,MAAO,GAeT,SAASo5C,EAAUtvB,GACjB,IAMIlvB,EAJAmtC,GADkB,oBAAXpY,OAAoCA,YAAkC,IAAX,EAAA0pB,EAAoC,EAAAA,EAAgC,oBAATjoB,KAAkCA,KAAsB,IAChK2W,UAAY,GAEjCuR,EAAmB,GACnBn+C,SAFJ2uB,EAAMA,GAAOie,GAKb,GAAI,UAAYje,EAAI2uB,SAClBa,EAAmB,IAAIC,EAAIC,SAAS1vB,EAAIe,UAAW,SAC9C,GAAI,WAAa1vB,EAGtB,IAAKP,KAFL0+C,EAAmB,IAAIC,EAAIzvB,EAAK,IAEpBqvB,SACHG,EAAiB1+C,QAErB,GAAI,WAAaO,EAAM,CAC5B,IAAKP,KAAOkvB,EACNlvB,KAAOu+C,IACXG,EAAiB1+C,GAAOkvB,EAAIlvB,SAGG8G,IAA7B43C,EAAiBT,UACnBS,EAAiBT,QAAUA,EAAQ3/C,KAAK4wB,EAAI5mB,OAIhD,OAAOo2C,EAmBT,SAASG,EAAgBR,GACvBA,EAAUF,EAASE,GACnB,IAAIl3C,EAAQ+2C,EAAWz1B,KAAK41B,GAI5B,MAAO,CACLR,SAJa12C,EAAM,GAAKA,EAAM,GAAGusB,cAAgB,GAKjDuqB,WAJe92C,EAAM,IAAMA,EAAM,GAAGvK,QAAU,GAK9CkiD,KAJS33C,EAAM,IAA0B,IAApBA,EAAM,GAAGvK,OAAe,IAAMuK,EAAM,GAAKA,EAAM,IA0DxE,SAASw3C,EAAIN,EAASlR,EAAU9S,GAG9B,GAFAgkB,EAAUF,EAASE,KAEb3zC,gBAAgBi0C,GACpB,OAAO,IAAIA,EAAIN,EAASlR,EAAU9S,GAGpC,IAAI0kB,EACAC,EACAtsC,EACAusC,EACA7+C,EACAJ,EACAk/C,EAAed,EAAMjgD,QACrBoC,SAAc4sC,EACdhoC,EAAMuF,KACN7N,EAAI,EAiCR,IArBI,WAAa0D,GAAQ,WAAaA,IACpC85B,EAAS8S,EACTA,EAAW,MAGT9S,GAAU,mBAAsBA,IAAQA,EAAS2jB,EAAGtrC,OACxDy6B,EAAWqR,EAAUrR,GAKrB4R,IADAC,EAAYH,EAAgBR,GAAW,KACjBR,WAAamB,EAAUf,QAC7C94C,EAAI84C,QAAUe,EAAUf,SAAWc,GAAY5R,EAAS8Q,QACxD94C,EAAI04C,SAAWmB,EAAUnB,UAAY1Q,EAAS0Q,UAAY,GAC1DQ,EAAUW,EAAUF,KAKfE,EAAUf,UAASiB,EAAa,GAAK,CAAC,OAAQ,aAE5CriD,EAAIqiD,EAAatiD,OAAQC,IAGH,mBAF3BoiD,EAAcC,EAAariD,KAO3B6V,EAAQusC,EAAY,GACpBj/C,EAAMi/C,EAAY,GAEdvsC,GAAUA,EACZvN,EAAInF,GAAOq+C,EACF,iBAAoB3rC,IACvBtS,EAAQi+C,EAAQj8C,QAAQsQ,MACxB,iBAAoBusC,EAAY,IAClC95C,EAAInF,GAAOq+C,EAAQlgD,MAAM,EAAGiC,GAC5Bi+C,EAAUA,EAAQlgD,MAAMiC,EAAQ6+C,EAAY,MAE5C95C,EAAInF,GAAOq+C,EAAQlgD,MAAMiC,GACzBi+C,EAAUA,EAAQlgD,MAAM,EAAGiC,MAGtBA,EAAQsS,EAAM+V,KAAK41B,MAC5Bl5C,EAAInF,GAAOI,EAAM,GACjBi+C,EAAUA,EAAQlgD,MAAM,EAAGiC,EAAMA,QAGnC+E,EAAInF,GAAOmF,EAAInF,IAAS++C,GAAYE,EAAY,IAAK9R,EAASntC,IAAa,GAKvEi/C,EAAY,KAAI95C,EAAInF,GAAOmF,EAAInF,GAAK0zB,gBA7BtC2qB,EAAUY,EAAYZ,GAqCtBhkB,IAAQl1B,EAAIC,MAAQi1B,EAAOl1B,EAAIC,QAI/B25C,GAAY5R,EAAS8Q,SAAsC,MAA3B94C,EAAI8qB,SAASkvB,OAAO,KAAgC,KAAjBh6C,EAAI8qB,UAAyC,KAAtBkd,EAASld,YACrG9qB,EAAI8qB,SAxIR,SAAiB8uB,EAAUnvB,GACzB,GAAiB,KAAbmvB,EAAiB,OAAOnvB,EAO5B,IANA,IAAIwvB,GAAQxvB,GAAQ,KAAK7rB,MAAM,KAAK5F,MAAM,GAAI,GAAG+C,OAAO69C,EAASh7C,MAAM,MACnElH,EAAIuiD,EAAKxiD,OACTyiD,EAAOD,EAAKviD,EAAI,GAChB+5B,GAAU,EACV0oB,EAAK,EAEFziD,KACW,MAAZuiD,EAAKviD,GACPuiD,EAAK77C,OAAO1G,EAAG,GACM,OAAZuiD,EAAKviD,IACduiD,EAAK77C,OAAO1G,EAAG,GACfyiD,KACSA,IACC,IAANziD,IAAS+5B,GAAU,GACvBwoB,EAAK77C,OAAO1G,EAAG,GACfyiD,KAMJ,OAFI1oB,GAASwoB,EAAKxoB,QAAQ,IACb,MAATyoB,GAAyB,OAATA,GAAeD,EAAKx7C,KAAK,IACtCw7C,EAAK75C,KAAK,KAiHA0hC,CAAQ9hC,EAAI8qB,SAAUkd,EAASld,WAOjB,MAA3B9qB,EAAI8qB,SAASkvB,OAAO,IAAch6C,EAAIo6C,WACxCp6C,EAAI8qB,SAAW,IAAM9qB,EAAI8qB,UAQtB8tB,EAAS54C,EAAIy4C,KAAMz4C,EAAI04C,YAC1B14C,EAAIk1C,KAAOl1C,EAAIo6C,SACfp6C,EAAIy4C,KAAO,IAMbz4C,EAAIq6C,SAAWr6C,EAAIs6C,SAAW,GAE1Bt6C,EAAIu6C,OACNT,EAAc95C,EAAIu6C,KAAK37C,MAAM,KAC7BoB,EAAIq6C,SAAWP,EAAY,IAAM,GACjC95C,EAAIs6C,SAAWR,EAAY,IAAM,IAGnC95C,EAAI+nC,OAAS/nC,EAAI04C,UAAY14C,EAAIk1C,MAAyB,UAAjBl1C,EAAI04C,SAAuB14C,EAAI04C,SAAW,KAAO14C,EAAIk1C,KAAO,OAIrGl1C,EAAImD,KAAOnD,EAAIlH,WAwHjB0gD,EAAI3gD,UAAY,CACdqyB,IAxGF,SAAa+J,EAAMn6B,EAAO0/C,GACxB,IAAIx6C,EAAMuF,KAEV,OAAQ0vB,GACN,IAAK,QACC,iBAAoBn6B,GAASA,EAAMrD,SACrCqD,GAAS0/C,GAAM3B,EAAGtrC,OAAOzS,IAG3BkF,EAAIi1B,GAAQn6B,EACZ,MAEF,IAAK,OACHkF,EAAIi1B,GAAQn6B,EAEP89C,EAAS99C,EAAOkF,EAAI04C,UAGd59C,IACTkF,EAAIk1C,KAAOl1C,EAAIo6C,SAAW,IAAMt/C,IAHhCkF,EAAIk1C,KAAOl1C,EAAIo6C,SACfp6C,EAAIi1B,GAAQ,IAKd,MAEF,IAAK,WACHj1B,EAAIi1B,GAAQn6B,EACRkF,EAAIy4C,OAAM39C,GAAS,IAAMkF,EAAIy4C,MACjCz4C,EAAIk1C,KAAOp6C,EACX,MAEF,IAAK,OACHkF,EAAIi1B,GAAQn6B,EAER,QAAQ3B,KAAK2B,IACfA,EAAQA,EAAM8D,MAAM,KACpBoB,EAAIy4C,KAAO39C,EAAM2/C,MACjBz6C,EAAIo6C,SAAWt/C,EAAMsF,KAAK,OAE1BJ,EAAIo6C,SAAWt/C,EACfkF,EAAIy4C,KAAO,IAGb,MAEF,IAAK,WACHz4C,EAAI04C,SAAW59C,EAAMyzB,cACrBvuB,EAAI84C,SAAW0B,EACf,MAEF,IAAK,WACL,IAAK,OACH,GAAI1/C,EAAO,CACT,IAAI4/C,EAAgB,aAATzlB,EAAsB,IAAM,IACvCj1B,EAAIi1B,GAAQn6B,EAAMk/C,OAAO,KAAOU,EAAOA,EAAO5/C,EAAQA,OAEtDkF,EAAIi1B,GAAQn6B,EAGd,MAEF,QACEkF,EAAIi1B,GAAQn6B,EAGhB,IAAK,IAAIpD,EAAI,EAAGA,EAAIuhD,EAAMxhD,OAAQC,IAAK,CACrC,IAAIijD,EAAM1B,EAAMvhD,GACZijD,EAAI,KAAI36C,EAAI26C,EAAI,IAAM36C,EAAI26C,EAAI,IAAIpsB,eAKxC,OAFAvuB,EAAI+nC,OAAS/nC,EAAI04C,UAAY14C,EAAIk1C,MAAyB,UAAjBl1C,EAAI04C,SAAuB14C,EAAI04C,SAAW,KAAO14C,EAAIk1C,KAAO,OACrGl1C,EAAImD,KAAOnD,EAAIlH,WACRkH,GAkCPlH,SAvBF,SAAkBuG,GACXA,GAAa,mBAAsBA,IAAWA,EAAYw5C,EAAGx5C,WAClE,IAAIY,EACAD,EAAMuF,KACNmzC,EAAW14C,EAAI04C,SACfA,GAAqD,MAAzCA,EAASsB,OAAOtB,EAASjhD,OAAS,KAAYihD,GAAY,KAC1E,IAAIxxC,EAASwxC,GAAY14C,EAAI84C,QAAU,KAAO,IAY9C,OAVI94C,EAAIq6C,WACNnzC,GAAUlH,EAAIq6C,SACVr6C,EAAIs6C,WAAUpzC,GAAU,IAAMlH,EAAIs6C,UACtCpzC,GAAU,KAGZA,GAAUlH,EAAIk1C,KAAOl1C,EAAI8qB,UACzB7qB,EAAQ,iBAAoBD,EAAIC,MAAQZ,EAAUW,EAAIC,OAASD,EAAIC,SACxDiH,GAAU,MAAQjH,EAAM+5C,OAAO,GAAK,IAAM/5C,EAAQA,GACzDD,EAAIhB,OAAMkI,GAAUlH,EAAIhB,MACrBkI,IAWTsyC,EAAIE,gBAAkBA,EACtBF,EAAIxR,SAAWqR,EACfG,EAAIR,SAAWA,EACfQ,EAAIX,GAAKA,EACTxhD,EAAOC,QAAUkiD,G,kBChbjBniD,EAAOC,QAAU,SAAyC0V,GACxD,IAAIC,EAAO,IAAIC,KAAKF,EAAUG,WAC1BC,EAAqBH,EAAKI,oBAG9B,OAFAJ,EAAKK,WAAW,EAAG,GAhBQ,IAkBpBF,EADgCH,EAAKE,UAjBjB,M,qBCA7B,IAAII,EAAQ,EAAQ,MA0BpBlW,EAAOC,QAPP,SAAiB0V,EAAWQ,GAC1B,IAAIP,EAAOM,EAAMP,GACbS,EAASC,OAAOF,GAEpB,OADAP,EAAKU,QAAQV,EAAKW,UAAYH,GACvBR,I,sBCvBT,IAAIY,EAAkB,EAAQ,MAyB9BxW,EAAOC,QALP,SAAkB0V,EAAWQ,GAC3B,IAAIC,EAASC,OAAOF,GACpB,OAAOK,EAAgBb,EApBE,KAoBSS,K,sBCtBpC,IAAIK,EAAa,EAAQ,OAErBC,EAAa,EAAQ,OA0BzB1W,EAAOC,QALP,SAAqB0V,EAAWQ,GAC9B,IAAIC,EAASC,OAAOF,GACpB,OAAOO,EAAWf,EAAWc,EAAWd,GAAaS,K,qBCzBvD,IAAIF,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAyB0V,EAAWQ,GAClC,IAAIQ,EAAYT,EAAMP,GAAWG,UAC7BM,EAASC,OAAOF,GACpB,OAAO,IAAIN,KAAKc,EAAYP,K,qBCtB9B,IAAII,EAAkB,EAAQ,MAyB9BxW,EAAOC,QALP,SAAoB0V,EAAWQ,GAC7B,IAAIC,EAASC,OAAOF,GACpB,OAAOK,EAAgBb,EApBI,IAoBOS,K,sBCtBpC,IAAIF,EAAQ,EAAQ,MAEhBU,EAAiB,EAAQ,OAiC7B5W,EAAOC,QAdP,SAAmB0V,EAAWQ,GAC5B,IAAIP,EAAOM,EAAMP,GACbS,EAASC,OAAOF,GAChBU,EAAejB,EAAKkB,WAAaV,EACjCW,EAAuB,IAAIlB,KAAK,GACpCkB,EAAqBC,YAAYpB,EAAKqB,cAAeJ,EAAc,GACnEE,EAAqBG,SAAS,EAAG,EAAG,EAAG,GACvC,IAAIC,EAAcP,EAAeG,GAIjC,OADAnB,EAAKwB,SAASP,EAAcrG,KAAK6G,IAAIF,EAAavB,EAAKW,YAChDX,I,sBChCT,IAAI0B,EAAY,EAAQ,OAyBxBtX,EAAOC,QANP,SAAqB0V,EAAWQ,GAC9B,IAAIC,EAASC,OAAOF,GAEpB,OAAOmB,EAAU3B,EADK,EAATS,K,sBCrBf,IAAII,EAAkB,EAAQ,MAwB9BxW,EAAOC,QALP,SAAoB0V,EAAWQ,GAC7B,IAAIC,EAASC,OAAOF,GACpB,OAAOK,EAAgBb,EAAoB,IAATS,K,sBCrBpC,IAAImB,EAAU,EAAQ,MAyBtBvX,EAAOC,QANP,SAAkB0V,EAAWQ,GAC3B,IAAIC,EAASC,OAAOF,GAEpB,OAAOoB,EAAQ5B,EADK,EAATS,K,sBCrBb,IAAIkB,EAAY,EAAQ,OAwBxBtX,EAAOC,QALP,SAAkB0V,EAAWQ,GAC3B,IAAIC,EAASC,OAAOF,GACpB,OAAOmB,EAAU3B,EAAoB,GAATS,K,sBCrB9B,IAAIF,EAAQ,EAAQ,MA4CpBlW,EAAOC,QAbP,SAA8BuX,EAA4BC,EAA0BC,EAA6BC,GAC/G,IAAIC,EAAmB1B,EAAMsB,GAA4B1B,UACrD+B,EAAiB3B,EAAMuB,GAA0B3B,UACjDgC,EAAoB5B,EAAMwB,GAA6B5B,UACvDiC,EAAkB7B,EAAMyB,GAA2B7B,UAEvD,GAAI8B,EAAmBC,GAAkBC,EAAoBC,EAC3D,MAAM,IAAIrP,MAAM,+DAGlB,OAAOkP,EAAmBG,GAAmBD,EAAoBD,I,sBCzCnE,IAAI3B,EAAQ,EAAQ,MA+CpBlW,EAAOC,QArBP,SAAwB+X,EAAoBC,GAC1C,KAAMA,aAA2B1X,OAC/B,MAAM,IAAIS,UAAUS,SAASC,KAAKuW,GAAmB,gCAGvD,IAEIpI,EACAqI,EAFAC,EADgBjC,EAAM8B,GACQlC,UAYlC,OATAmC,EAAgBtR,SAAQ,SAAUgP,EAAW/R,GAC3C,IAAIwU,EAAclC,EAAMP,GACpB0C,EAAW7H,KAAK8H,IAAIH,EAAgBC,EAAYtC,iBAErCxL,IAAXuF,GAAwBwI,EAAWH,KACrCrI,EAASjM,EACTsU,EAAcG,MAGXxI,I,sBC5CT,IAAIqG,EAAQ,EAAQ,MA6CpBlW,EAAOC,QArBP,SAAmB+X,EAAoBC,GACrC,KAAMA,aAA2B1X,OAC/B,MAAM,IAAIS,UAAUS,SAASC,KAAKuW,GAAmB,gCAGvD,IAEIpI,EACAqI,EAFAC,EADgBjC,EAAM8B,GACQlC,UAYlC,OATAmC,EAAgBtR,SAAQ,SAAUgP,GAChC,IAAIyC,EAAclC,EAAMP,GACpB0C,EAAW7H,KAAK8H,IAAIH,EAAgBC,EAAYtC,iBAErCxL,IAAXuF,GAAwBwI,EAAWH,KACrCrI,EAASuI,EACTF,EAAcG,MAGXxI,I,sBC1CT,IAAIqG,EAAQ,EAAQ,MAmDpBlW,EAAOC,QAfP,SAAoBsY,EAAeC,GACjC,IACIC,EADWvC,EAAMqC,GACGzC,UAEpB4C,EADYxC,EAAMsC,GACI1C,UAE1B,OAAI2C,EAAWC,GACL,EACCD,EAAWC,EACb,EAEA,I,sBC/CX,IAAIxC,EAAQ,EAAQ,MAmDpBlW,EAAOC,QAfP,SAAqBsY,EAAeC,GAClC,IACIC,EADWvC,EAAMqC,GACGzC,UAEpB4C,EADYxC,EAAMsC,GACI1C,UAE1B,OAAI2C,EAAWC,GACL,EACCD,EAAWC,EACb,EAEA,I,sBC/CX,IAAIC,EAAa,EAAQ,OAoCzB3Y,EAAOC,QAXP,SAAkCsY,EAAeC,GAC/C,IAAII,EAAiBD,EAAWJ,GAC5BM,EAAkBF,EAAWH,GAC7BM,EAAgBF,EAAe9C,UA1BR,IA0BoB8C,EAAe5C,oBAC1D+C,EAAiBF,EAAgB/C,UA3BV,IA2BsB+C,EAAgB7C,oBAIjE,OAAOxF,KAAKC,OAAOqI,EAAgBC,GA9BX,S,sBCH1B,IAAIC,EAAiB,EAAQ,OAqC7BhZ,EAAOC,QAXP,SAAsCsY,EAAeC,GACnD,IAAIS,EAAqBD,EAAeT,GACpCW,EAAsBF,EAAeR,GACrCM,EAAgBG,EAAmBnD,UA3BZ,IA2BwBmD,EAAmBjD,oBAClE+C,EAAiBG,EAAoBpD,UA5Bd,IA4B0BoD,EAAoBlD,oBAIzE,OAAOxF,KAAKC,OAAOqI,EAAgBC,GA/BV,U,sBCH3B,IAAItC,EAAa,EAAQ,OA4BzBzW,EAAOC,QAJP,SAAsCsY,EAAeC,GACnD,OAAO/B,EAAW8B,GAAiB9B,EAAW+B,K,sBCzBhD,IAAItC,EAAQ,EAAQ,MA8BpBlW,EAAOC,QARP,SAAoCsY,EAAeC,GACjD,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GAGtB,OAAkB,IAFHW,EAASlC,cAAgBmC,EAAUnC,gBAClCkC,EAASrC,WAAasC,EAAUtC,c,sBC1BlD,IAAIuC,EAAa,EAAQ,OAErBnD,EAAQ,EAAQ,MA8BpBlW,EAAOC,QARP,SAAsCsY,EAAeC,GACnD,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GAGtB,OAAkB,GAFHW,EAASlC,cAAgBmC,EAAUnC,gBAChCoC,EAAWF,GAAYE,EAAWD,M,sBC5BtD,IAAIE,EAAc,EAAQ,OA+C1BtZ,EAAOC,QAXP,SAAmCsY,EAAeC,EAAgBe,GAChE,IAAIC,EAAkBF,EAAYf,EAAegB,GAC7CE,EAAmBH,EAAYd,EAAgBe,GAC/CT,EAAgBU,EAAgB1D,UArCT,IAqCqB0D,EAAgBxD,oBAC5D+C,EAAiBU,EAAiB3D,UAtCX,IAsCuB2D,EAAiBzD,oBAInE,OAAOxF,KAAKC,OAAOqI,EAAgBC,GAzCV,U,qBCH3B,IAAI7C,EAAQ,EAAQ,MA4BpBlW,EAAOC,QANP,SAAmCsY,EAAeC,GAChD,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GACtB,OAAOW,EAASlC,cAAgBmC,EAAUnC,gB,qBCzB5C,IAAIf,EAAQ,EAAQ,MAEhBwD,EAA2B,EAAQ,OAEnCC,EAAa,EAAQ,OAmCzB3Z,EAAOC,QAZP,SAA0BsY,EAAeC,GACvC,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GAClBoB,EAAOD,EAAWR,EAAUC,GAC5BS,EAAarJ,KAAK8H,IAAIoB,EAAyBP,EAAUC,IAK7D,OAJAD,EAAS7C,QAAQ6C,EAAS5C,UAAYqD,EAAOC,GAItCD,GAAQC,GADQF,EAAWR,EAAUC,MAAgBQ,M,sBCnC9D,IAAIE,EAA2B,EAAQ,OA4BvC9Z,EAAOC,QALP,SAA2BsY,EAAeC,GACxC,IAAIuB,EAAOD,EAAyBvB,EAAeC,GAtB1B,KAuBzB,OAAOuB,EAAO,EAAIvJ,KAAKiC,MAAMsH,GAAQvJ,KAAKwJ,KAAKD,K,sBCzBjD,IAAI7D,EAAQ,EAAQ,MAEhB+D,EAA+B,EAAQ,OAEvCN,EAAa,EAAQ,OAErBO,EAAc,EAAQ,OAqC1Bla,EAAOC,QAbP,SAA8BsY,EAAeC,GAC3C,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GAClBoB,EAAOD,EAAWR,EAAUC,GAC5BS,EAAarJ,KAAK8H,IAAI2B,EAA6Bd,EAAUC,IAMjE,OALAD,EAAWe,EAAYf,EAAUS,EAAOC,GAKjCD,GAAQC,GADYF,EAAWR,EAAUC,MAAgBQ,M,sBCvClE,IAAI1D,EAAQ,EAAQ,MA6BpBlW,EAAOC,QANP,SAAkCsY,EAAeC,GAC/C,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GACtB,OAAOW,EAASrD,UAAYsD,EAAUtD,Y,sBC1BxC,IAAIgE,EAA2B,EAAQ,OA4BvC9Z,EAAOC,QALP,SAA6BsY,EAAeC,GAC1C,IAAIuB,EAAOD,EAAyBvB,EAAeC,GAtBxB,IAuB3B,OAAOuB,EAAO,EAAIvJ,KAAKiC,MAAMsH,GAAQvJ,KAAKwJ,KAAKD,K,sBCzBjD,IAAI7D,EAAQ,EAAQ,MAEhBiE,EAA6B,EAAQ,OAErCR,EAAa,EAAQ,OAkCzB3Z,EAAOC,QAZP,SAA4BsY,EAAeC,GACzC,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GAClBoB,EAAOD,EAAWR,EAAUC,GAC5BS,EAAarJ,KAAK8H,IAAI6B,EAA2BhB,EAAUC,IAK/D,OAJAD,EAAS/B,SAAS+B,EAASrC,WAAa8C,EAAOC,GAIxCD,GAAQC,GADUF,EAAWR,EAAUC,MAAgBQ,M,sBClChE,IAAIQ,EAAqB,EAAQ,OA2BjCpa,EAAOC,QALP,SAA8BsY,EAAeC,GAC3C,IAAIuB,EAAOK,EAAmB7B,EAAeC,GAAkB,EAC/D,OAAOuB,EAAO,EAAIvJ,KAAKiC,MAAMsH,GAAQvJ,KAAKwJ,KAAKD,K,sBCxBjD,IAAID,EAA2B,EAAQ,OA4BvC9Z,EAAOC,QALP,SAA6BsY,EAAeC,GAC1C,IAAIuB,EAAOD,EAAyBvB,EAAeC,GAAkB,IACrE,OAAOuB,EAAO,EAAIvJ,KAAKiC,MAAMsH,GAAQvJ,KAAKwJ,KAAKD,K,sBCzBjD,IAAIM,EAAmB,EAAQ,MA2B/Bra,EAAOC,QALP,SAA2BsY,EAAeC,GACxC,IAAIuB,EAAOM,EAAiB9B,EAAeC,GAAkB,EAC7D,OAAOuB,EAAO,EAAIvJ,KAAKiC,MAAMsH,GAAQvJ,KAAKwJ,KAAKD,K,sBCxBjD,IAAI7D,EAAQ,EAAQ,MAEhBoE,EAA4B,EAAQ,MAEpCX,EAAa,EAAQ,OAkCzB3Z,EAAOC,QAZP,SAA2BsY,EAAeC,GACxC,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GAClBoB,EAAOD,EAAWR,EAAUC,GAC5BS,EAAarJ,KAAK8H,IAAIgC,EAA0BnB,EAAUC,IAK9D,OAJAD,EAASnC,YAAYmC,EAASlC,cAAgB2C,EAAOC,GAI9CD,GAAQC,GADSF,EAAWR,EAAUC,MAAgBQ,M,sBClC/D,IAAIW,EAAc,EAAQ,OAEtBrE,EAAQ,EAAQ,MAEhBsE,EAAsB,EAAQ,OAE9BJ,EAAqB,EAAQ,OAE7BK,EAAW,EAAQ,OAInBC,EAAmB,MA6KvB1a,EAAOC,QAxFP,SAAyB+X,EAAoBrC,EAAW4D,GACtD,IAAIlW,EAAUkW,GAAgB,GAC1BoB,EAAaJ,EAAYvC,EAAoBrC,GAC7CiF,EAASvX,EAAQuX,OACjBC,EAAWJ,EAASK,gBAAgBD,SAEpCD,GAAUA,EAAOE,iBAAmBF,EAAOE,gBAAgBD,WAC7DA,EAAWD,EAAOE,gBAAgBD,UAGpC,IAII1B,EAAUC,EAJV2B,EAAkB,CACpBC,UAAWnW,QAAQxB,EAAQ2X,WAC3BL,WAAYA,GAIVA,EAAa,GACfxB,EAAWjD,EAAM8B,GACjBoB,EAAYlD,EAAMP,KAElBwD,EAAWjD,EAAMP,GACjByD,EAAYlD,EAAM8B,IAGpB,IAGIiD,EAHAC,EAAUV,EAAoBpB,EAAWD,GACzCgC,EAAS/B,EAAUpD,oBAAsBmD,EAASnD,oBAClDoF,EAAU5K,KAAKC,MAAMyK,EAAU,IAAMC,EAGzC,GAAIC,EAAU,EACZ,OAAI/X,EAAQgY,eACNH,EAAU,EACLL,EAAS,mBAAoB,EAAGE,GAC9BG,EAAU,GACZL,EAAS,mBAAoB,GAAIE,GAC/BG,EAAU,GACZL,EAAS,mBAAoB,GAAIE,GAC/BG,EAAU,GACZL,EAAS,cAAe,KAAME,GAE9BF,EADEK,EAAU,GACH,mBAEA,WAFoB,EAAGH,GAKzB,IAAZK,EACKP,EAAS,mBAAoB,EAAGE,GAEhCF,EAAS,WAAYO,EAASL,GAIpC,GAAIK,EAAU,GACnB,OAAOP,EAAS,WAAYO,EAASL,GAChC,GAAIK,EAAU,GACnB,OAAOP,EAAS,cAAe,EAAGE,GAC7B,GAAIK,EA/IQ,KAiJjB,OAAOP,EAAS,cADJrK,KAAKC,MAAM2K,EAAU,IACKL,GACjC,GAAIK,EAjJoB,KAkJ7B,OAAOP,EAAS,QAAS,EAAGE,GACvB,GAAIK,EAAUV,EAEnB,OAAOG,EAAS,QADLrK,KAAKC,MAAM2K,EArJL,MAsJcL,GAC1B,GAAIK,EApJe,MAsJxB,OAAOP,EAAS,eADhBI,EAASzK,KAAKC,MAAM2K,EAAUV,GACUK,GAK1C,IAFAE,EAASb,EAAmBhB,EAAWD,IAE1B,GAEX,OAAO0B,EAAS,UADGrK,KAAKC,MAAM2K,EAAUV,GACCK,GAEzC,IAAIO,EAAyBL,EAAS,GAClCM,EAAQ/K,KAAKiC,MAAMwI,EAAS,IAEhC,OAAIK,EAAyB,EACpBT,EAAS,cAAeU,EAAOR,GAC7BO,EAAyB,EAC3BT,EAAS,aAAcU,EAAOR,GAE9BF,EAAS,eAAgBU,EAAQ,EAAGR,K,sBCpLjD,IAAIR,EAAc,EAAQ,OAEtBrE,EAAQ,EAAQ,MAEhBsE,EAAsB,EAAQ,OAE9BC,EAAW,EAAQ,OAInBe,EAAkB,OA6JtBxb,EAAOC,QAvEP,SAA+B+X,EAAoBrC,EAAW4D,GAC5D,IAAIlW,EAAUkW,GAAgB,GAC1BoB,EAAaJ,EAAYvC,EAAoBrC,GAC7CiF,EAASvX,EAAQuX,OACjBC,EAAWJ,EAASK,gBAAgBD,SAEpCD,GAAUA,EAAOE,iBAAmBF,EAAOE,gBAAgBD,WAC7DA,EAAWD,EAAOE,gBAAgBD,UAGpC,IAII1B,EAAUC,EAUVqC,EAdAV,EAAkB,CACpBC,UAAWnW,QAAQxB,EAAQ2X,WAC3BL,WAAYA,GAIVA,EAAa,GACfxB,EAAWjD,EAAM8B,GACjBoB,EAAYlD,EAAMP,KAElBwD,EAAWjD,EAAMP,GACjByD,EAAYlD,EAAM8B,IAIpB,IAAI0D,EAAclL,KAAKnN,EAAQsY,cAAgBC,OAAOvY,EAAQsY,eAAiB,SAC3ET,EAAUV,EAAoBpB,EAAWD,GACzCgC,EAAS/B,EAAUpD,oBAAsBmD,EAASnD,oBAClDoF,EAAUM,EAAYR,EAAU,IAAMC,EAsB1C,GAAa,OAlBXM,EADEpY,EAAQoY,KACHG,OAAOvY,EAAQoY,MAElBL,EAAU,EACL,IACEA,EAAU,GACZ,IACEA,EA9HM,KA+HR,IACEA,EA/HQ,MAgIV,IACEA,EAAUI,EACZ,IAEA,KAMT,OAAOX,EAAS,WAAYK,EAASH,GAChC,GAAa,MAATU,EACT,OAAOZ,EAAS,WAAYO,EAASL,GAChC,GAAa,MAATU,EAET,OAAOZ,EAAS,SADRa,EAAYN,EAAU,IACGL,GAC5B,GAAa,MAATU,EAET,OAAOZ,EAAS,QADTa,EAAYN,EAlJF,MAmJcL,GAC1B,GAAa,MAATU,EAET,OAAOZ,EAAS,UADPa,EAAYN,EApJF,OAqJgBL,GAC9B,GAAa,MAATU,EAET,OAAOZ,EAAS,SADRa,EAAYN,EAAUI,GACGT,GAGnC,MAAM,IAAIrS,MAAM,iBAAmB+S,K,sBCpKrC,IAAIX,EAAkB,EAAQ,OAqF9B9a,EAAOC,QAJP,SAA8B0V,EAAW4D,GACvC,OAAOuB,EAAgBjF,KAAKgG,MAAOlG,EAAW4D,K,oBClFhD,IAAIrD,EAAQ,EAAQ,MAoDpBlW,EAAOC,QAtBP,SAAiB6b,EAAgBC,EAAcC,GAC7C,IAAIC,EAAY/F,EAAM4F,GAElBI,OAAqB5R,IAAd0R,EAA0BA,EAAY,EAC7CG,EAFUjG,EAAM6F,GAEEjG,UAEtB,GAAImG,EAAUnG,UAAYqG,EACxB,MAAM,IAAIzT,MAAM,kDAGlB,IAAI0T,EAAQ,GACRhE,EAAc6D,EAGlB,IAFA7D,EAAYlB,SAAS,EAAG,EAAG,EAAG,GAEvBkB,EAAYtC,WAAaqG,GAC9BC,EAAMhV,KAAK8O,EAAMkC,IACjBA,EAAY9B,QAAQ8B,EAAY7B,UAAY2F,GAG9C,OAAOE,I,sBCjDT,IAAIlG,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAkB0V,GAChB,IAAIC,EAAOM,EAAMP,GAEjB,OADAC,EAAKsB,SAAS,GAAI,GAAI,GAAI,KACnBtB,I,sBCtBT,IAAIM,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAmB0V,GACjB,IAAIC,EAAOM,EAAMP,GAEjB,OADAC,EAAKyG,WAAW,GAAI,GAAI,KACjBzG,I,sBCtBT,IAAI0G,EAAY,EAAQ,OA2BxBtc,EAAOC,QANP,SAAsB0V,GACpB,OAAO2G,EAAU3G,EAAW,CAC1B4G,aAAc,M,sBCvBlB,IAAI9F,EAAa,EAAQ,OAErBuC,EAAiB,EAAQ,OAgC7BhZ,EAAOC,QAVP,SAAsB0V,GACpB,IAAI6G,EAAO/F,EAAWd,GAClB8G,EAA4B,IAAI5G,KAAK,GACzC4G,EAA0BzF,YAAYwF,EAAO,EAAG,EAAG,GACnDC,EAA0BvF,SAAS,EAAG,EAAG,EAAG,GAC5C,IAAItB,EAAOoD,EAAeyD,GAE1B,OADA7G,EAAK8G,gBAAgB9G,EAAK+G,kBAAoB,GACvC/G,I,sBC/BT,IAAIM,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAqB0V,GACnB,IAAIC,EAAOM,EAAMP,GAEjB,OADAC,EAAKK,WAAW,GAAI,KACbL,I,sBCtBT,IAAIM,EAAQ,EAAQ,MA2BpBlW,EAAOC,QARP,SAAoB0V,GAClB,IAAIC,EAAOM,EAAMP,GACbiH,EAAQhH,EAAKkB,WAGjB,OAFAlB,EAAKoB,YAAYpB,EAAKqB,cAAe2F,EAAQ,EAAG,GAChDhH,EAAKsB,SAAS,GAAI,GAAI,GAAI,KACnBtB,I,qBCxBT,IAAIM,EAAQ,EAAQ,MA4BpBlW,EAAOC,QATP,SAAsB0V,GACpB,IAAIC,EAAOM,EAAMP,GACbkH,EAAejH,EAAKkB,WACpB8F,EAAQC,EAAeA,EAAe,EAAI,EAG9C,OAFAjH,EAAKwB,SAASwF,EAAO,GACrBhH,EAAKsB,SAAS,GAAI,GAAI,GAAI,KACnBtB,I,sBCzBT,IAAIM,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAqB0V,GACnB,IAAIC,EAAOM,EAAMP,GAEjB,OADAC,EAAK8G,gBAAgB,KACd9G,I,sBCtBT,IAAIkH,EAAW,EAAQ,OAqBvB9c,EAAOC,QAJP,WACE,OAAO6c,EAAS,IAAIjH,Q,kBCOtB7V,EAAOC,QAXP,WACE,IAAI4b,EAAM,IAAIhG,KACV2G,EAAOX,EAAI5E,cACX2F,EAAQf,EAAI/E,WACZiG,EAAMlB,EAAItF,UACVX,EAAO,IAAIC,KAAK,GAGpB,OAFAD,EAAKoB,YAAYwF,EAAMI,EAAOG,EAAM,GACpCnH,EAAKsB,SAAS,GAAI,GAAI,GAAI,KACnBtB,I,sBCtBT,IAAIM,EAAQ,EAAQ,MAoCpBlW,EAAOC,QAVP,SAAmB0V,EAAW4D,GAC5B,IAAIgD,EAAehD,GAAelD,OAAOkD,EAAagD,eAAqB,EACvE3G,EAAOM,EAAMP,GACboH,EAAMnH,EAAKoH,SACXjD,EAAuC,GAA/BgD,EAAMR,GAAgB,EAAI,IAAUQ,EAAMR,GAGtD,OAFA3G,EAAKU,QAAQV,EAAKW,UAAYwD,GAC9BnE,EAAKsB,SAAS,GAAI,GAAI,GAAI,KACnBtB,I,sBCjCT,IAAIM,EAAQ,EAAQ,MA2BpBlW,EAAOC,QARP,SAAmB0V,GACjB,IAAIC,EAAOM,EAAMP,GACb6G,EAAO5G,EAAKqB,cAGhB,OAFArB,EAAKoB,YAAYwF,EAAO,EAAG,EAAG,GAC9B5G,EAAKsB,SAAS,GAAI,GAAI,GAAI,KACnBtB,I,kBCCT5V,EAAOC,QAXP,WACE,IAAI4b,EAAM,IAAIhG,KACV2G,EAAOX,EAAI5E,cACX2F,EAAQf,EAAI/E,WACZiG,EAAMlB,EAAItF,UACVX,EAAO,IAAIC,KAAK,GAGpB,OAFAD,EAAKoB,YAAYwF,EAAMI,EAAOG,EAAM,GACpCnH,EAAKsB,SAAS,GAAI,GAAI,GAAI,KACnBtB,I,sBCtBT,IAAIqH,EAAe,EAAQ,OAEvBC,EAAa,EAAQ,MAErBzG,EAAa,EAAQ,OAErBP,EAAQ,EAAQ,MAEhBiH,EAAU,EAAQ,MAElB1C,EAAW,EAAQ,OA+GvB,IAAI2C,EAAa,CAEf,EAAK,SAAWxH,GACd,OAAOA,EAAKkB,WAAa,GAG3B,GAAM,SAAYlB,GAChB,OAAOyH,EAAgBzH,EAAKkB,WAAa,EAAG,IAG9C,EAAK,SAAWlB,GACd,OAAOpF,KAAKwJ,MAAMpE,EAAKkB,WAAa,GAAK,IAG3C,EAAK,SAAWlB,GACd,OAAOA,EAAKW,WAGd,GAAM,SAAYX,GAChB,OAAOyH,EAAgBzH,EAAKW,UAAW,IAGzC,IAAO,SAAaX,GAClB,OAAOqH,EAAarH,IAGtB,KAAQ,SAAcA,GACpB,OAAOyH,EAAgBJ,EAAarH,GAAO,IAG7C,EAAK,SAAWA,GACd,OAAOA,EAAKoH,UAGd,EAAK,SAAWpH,GACd,OAAOA,EAAKoH,UAAY,GAG1B,EAAK,SAAWpH,GACd,OAAOsH,EAAWtH,IAGpB,GAAM,SAAYA,GAChB,OAAOyH,EAAgBH,EAAWtH,GAAO,IAG3C,GAAM,SAAYA,GAChB,OAAOyH,EAAgBzH,EAAKqB,cAAe,GAAGqG,OAAO,IAGvD,KAAQ,SAAc1H,GACpB,OAAOyH,EAAgBzH,EAAKqB,cAAe,IAG7C,GAAM,SAAYrB,GAChB,OAAOgG,OAAOnF,EAAWb,IAAO0H,OAAO,IAGzC,KAAQ,SAAc1H,GACpB,OAAOa,EAAWb,IAGpB,EAAK,SAAWA,GACd,OAAOA,EAAK2H,YAGd,GAAM,SAAY3H,GAChB,OAAOyH,EAAgBzH,EAAK2H,WAAY,IAG1C,EAAK,SAAW3H,GACd,IAAI4H,EAAQ5H,EAAK2H,WAEjB,OAAc,IAAVC,EACK,GACEA,EAAQ,GACVA,EAAQ,GAERA,GAIX,GAAM,SAAY5H,GAChB,OAAOyH,EAAgBD,EAAc,EAAExH,GAAO,IAGhD,EAAK,SAAWA,GACd,OAAOA,EAAK6H,cAGd,GAAM,SAAY7H,GAChB,OAAOyH,EAAgBzH,EAAK6H,aAAc,IAG5C,EAAK,SAAW7H,GACd,OAAOA,EAAK8H,cAGd,GAAM,SAAY9H,GAChB,OAAOyH,EAAgBzH,EAAK8H,aAAc,IAG5C,EAAK,SAAW9H,GACd,OAAOpF,KAAKiC,MAAMmD,EAAK+G,kBAAoB,MAG7C,GAAM,SAAY/G,GAChB,OAAOyH,EAAgB7M,KAAKiC,MAAMmD,EAAK+G,kBAAoB,IAAK,IAGlE,IAAO,SAAa/G,GAClB,OAAOyH,EAAgBzH,EAAK+G,kBAAmB,IAGjD,EAAK,SAAW/G,GACd,OAAO+H,EAAe/H,EAAKI,oBAAqB,MAGlD,GAAM,SAAYJ,GAChB,OAAO+H,EAAe/H,EAAKI,sBAG7B,EAAK,SAAWJ,GACd,OAAOpF,KAAKiC,MAAMmD,EAAKE,UAAY,MAGrC,EAAK,SAAWF,GACd,OAAOA,EAAKE,YAmChB,SAAS8H,EAAuBC,GAC9B,OAAIA,EAAMlT,MAAM,YACPkT,EAAM5V,QAAQ,UAAW,IAG3B4V,EAAM5V,QAAQ,MAAO,IAG9B,SAAS0V,EAAexC,EAAQ2C,GAC9BA,EAAYA,GAAa,GACzB,IAAIlE,EAAOuB,EAAS,EAAI,IAAM,IAC1B4C,EAAYvN,KAAK8H,IAAI6C,GAErBC,EAAU2C,EAAY,GAC1B,OAAOnE,EAAOyD,EAFF7M,KAAKiC,MAAMsL,EAAY,IAEE,GAAKD,EAAYT,EAAgBjC,EAAS,GAGjF,SAASiC,EAAgBW,EAAQC,GAG/B,IAFA,IAAIC,EAAS1N,KAAK8H,IAAI0F,GAAQvc,WAEvByc,EAAO9d,OAAS6d,GACrBC,EAAS,IAAMA,EAGjB,OAAOA,EAGTle,EAAOC,QAtNP,SAAgB0V,EAAWwI,EAAgB5E,GACzC,IAAI6E,EAAYD,EAAiBvC,OAAOuC,GAAkB,2BAEtDvD,GADUrB,GAAgB,IACTqB,OACjByD,EAAmB5D,EAAS3L,OAAOsO,WACnCkB,EAAyB7D,EAAS3L,OAAOwP,uBAEzC1D,GAAUA,EAAO9L,QAAU8L,EAAO9L,OAAOsO,aAC3CiB,EAAmBzD,EAAO9L,OAAOsO,WAE7BxC,EAAO9L,OAAOwP,yBAChBA,EAAyB1D,EAAO9L,OAAOwP,yBAI3C,IAAI1I,EAAOM,EAAMP,GAEjB,OAAKwH,EAAQvH,GA2If,SAAuBwI,EAAWC,EAAkBC,GAClD,IAEIje,EACAke,EAHAC,EAAQJ,EAAUzT,MAAM2T,GACxBle,EAASoe,EAAMpe,OAInB,IAAKC,EAAI,EAAGA,EAAID,EAAQC,IACtBke,EAAYF,EAAiBG,EAAMne,KAAO+c,EAAWoB,EAAMne,IAGzDme,EAAMne,GADJke,GAGSX,EAAuBY,EAAMne,IAI5C,OAAO,SAAUuV,GAGf,IAFA,IAAIsI,EAAS,GAEJ7d,EAAI,EAAGA,EAAID,EAAQC,IACtBme,EAAMne,aAAcoe,SACtBP,GAAUM,EAAMne,GAAGuV,EAAMwH,GAEzBc,GAAUM,EAAMne,GAIpB,OAAO6d,GAlKMQ,CAAcN,EAAWC,EAAkBC,EACnDK,CAAS/I,GAJP,iB,sBClHX,IAAIM,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAiB0V,GAGf,OAFWO,EAAMP,GACKY,Y,qBCpBxB,IAAIL,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAgB0V,GAGd,OAFWO,EAAMP,GACFqH,W,sBCpBjB,IAAI9G,EAAQ,EAAQ,MAEhB0I,EAAc,EAAQ,OAEtBlF,EAA2B,EAAQ,OAyBvC1Z,EAAOC,QAPP,SAAsB0V,GACpB,IAAIC,EAAOM,EAAMP,GAGjB,OAFW+D,EAAyB9D,EAAMgJ,EAAYhJ,IAC/B,I,sBCzBzB,IAAIM,EAAQ,EAAQ,MA4BpBlW,EAAOC,QAVP,SAAwB0V,GACtB,IAAIC,EAAOM,EAAMP,GACb6G,EAAO5G,EAAKqB,cACZ4H,EAAajJ,EAAKkB,WAClBgI,EAAiB,IAAIjJ,KAAK,GAG9B,OAFAiJ,EAAe9H,YAAYwF,EAAMqC,EAAa,EAAG,GACjDC,EAAe5H,SAAS,EAAG,EAAG,EAAG,GAC1B4H,EAAevI,Y,sBCzBxB,IAAIwI,EAAa,EAAQ,OAsBzB/e,EAAOC,QAJP,SAAuB0V,GACrB,OAAOoJ,EAAWpJ,GAAa,IAAM,M,sBCnBvC,IAAIO,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAkB0V,GAGhB,OAFWO,EAAMP,GACA4H,a,sBCpBnB,IAAIrH,EAAQ,EAAQ,MAgCpBlW,EAAOC,QAXP,SAAmB0V,GACjB,IACIoH,EADO7G,EAAMP,GACFqH,SAMf,OAJY,IAARD,IACFA,EAAM,GAGDA,I,qBC7BT,IAAI7G,EAAQ,EAAQ,MAEhB8C,EAAiB,EAAQ,OAEzBgG,EAAiB,EAAQ,OA8B7Bhf,EAAOC,QATP,SAAoB0V,GAClB,IAAIC,EAAOM,EAAMP,GACboE,EAAOf,EAAepD,GAAME,UAAYkJ,EAAepJ,GAAME,UAIjE,OAAOtF,KAAKC,MAAMsJ,EAzBO,QAyBwB,I,qBC/BnD,IAAIiF,EAAiB,EAAQ,OAEzBC,EAAW,EAAQ,OA+BvBjf,EAAOC,QAVP,SAA2B0V,GACzB,IAAIuJ,EAAWF,EAAerJ,GAE1BoE,EADWiF,EAAeC,EAASC,EAAU,KAC7BC,UAAYD,EAASC,UAIzC,OAAO3O,KAAKC,MAAMsJ,EA1BO,U,sBCJ3B,IAAI7D,EAAQ,EAAQ,MAEhB8C,EAAiB,EAAQ,OA0C7BhZ,EAAOC,QArBP,SAAoB0V,GAClB,IAAIC,EAAOM,EAAMP,GACb6G,EAAO5G,EAAKqB,cACZwF,EAA4B,IAAI5G,KAAK,GACzC4G,EAA0BzF,YAAYwF,EAAO,EAAG,EAAG,GACnDC,EAA0BvF,SAAS,EAAG,EAAG,EAAG,GAC5C,IAAIkI,EAAkBpG,EAAeyD,GACjC4C,EAA4B,IAAIxJ,KAAK,GACzCwJ,EAA0BrI,YAAYwF,EAAM,EAAG,GAC/C6C,EAA0BnI,SAAS,EAAG,EAAG,EAAG,GAC5C,IAAIoI,EAAkBtG,EAAeqG,GAErC,OAAIzJ,EAAKE,WAAasJ,EAAgBtJ,UAC7B0G,EAAO,EACL5G,EAAKE,WAAawJ,EAAgBxJ,UACpC0G,EAEAA,EAAO,I,sBCxClB,IAAItG,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAyB0V,GAGvB,OAFWO,EAAMP,GACOgH,oB,sBCpB1B,IAAIzG,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAoB0V,GAGlB,OAFWO,EAAMP,GACE8H,e,sBCpBrB,IAAIvH,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAkB0V,GAGhB,OAFWO,EAAMP,GACAmB,a,sBCpBnB,IAAIZ,EAAQ,EAAQ,MAsDpBlW,EAAOC,QAtBP,SAAoCuX,EAA4BC,EAA0BC,EAA6BC,GACrH,IAAIC,EAAmB1B,EAAMsB,GAA4B1B,UACrD+B,EAAiB3B,EAAMuB,GAA0B3B,UACjDgC,EAAoB5B,EAAMwB,GAA6B5B,UACvDiC,EAAkB7B,EAAMyB,GAA2B7B,UAEvD,GAAI8B,EAAmBC,GAAkBC,EAAoBC,EAC3D,MAAM,IAAIrP,MAAM,+DAKlB,KAFoBkP,EAAmBG,GAAmBD,EAAoBD,GAG5E,OAAO,EAGT,IAEI0H,GADiBxH,EAAkBF,EAAiBA,EAAiBE,IADlDD,EAAoBF,EAAmBA,EAAmBE,GAGjF,OAAOtH,KAAKwJ,KAAKuF,EAjDO,S,sBCF1B,IAAIrJ,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAoB0V,GAClB,IAAIC,EAAOM,EAAMP,GAEjB,OADcnF,KAAKiC,MAAMmD,EAAKkB,WAAa,GAAK,I,sBCpBlD,IAAIZ,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAoB0V,GAGlB,OAFWO,EAAMP,GACE+H,e,sBCpBrB,IAAIxH,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAiB0V,GAGf,OAFWO,EAAMP,GACIG,Y,sBCpBvB,IAAII,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAiB0V,GAGf,OAFWO,EAAMP,GACDsB,gB,sBCpBlBjX,EAAOC,QAAU,CACfsX,QAAS,EAAQ,MACjBiI,SAAU,EAAQ,OAClBC,YAAa,EAAQ,OACrBjJ,gBAAiB,EAAQ,MACzBkJ,WAAY,EAAQ,MACpBpI,UAAW,EAAQ,OACnBqI,YAAa,EAAQ,OACrBC,WAAY,EAAQ,OACpBX,SAAU,EAAQ,OAClBY,SAAU,EAAQ,OAClBC,qBAAsB,EAAQ,OAC9BC,eAAgB,EAAQ,OACxBC,UAAW,EAAQ,OACnBrG,WAAY,EAAQ,OACpBY,YAAa,EAAQ,OACrBb,yBAA0B,EAAQ,OAClCuG,6BAA8B,EAAQ,OACtChG,6BAA8B,EAAQ,OACtCE,2BAA4B,EAAQ,OACpC+F,6BAA8B,EAAQ,OACtCC,0BAA2B,EAAQ,OACnC7F,0BAA2B,EAAQ,MACnCD,iBAAkB,EAAQ,MAC1B+F,kBAAmB,EAAQ,OAC3BC,qBAAsB,EAAQ,OAC9BvG,yBAA0B,EAAQ,OAClCwG,oBAAqB,EAAQ,OAC7BlG,mBAAoB,EAAQ,OAC5BmG,qBAAsB,EAAQ,OAC9B/F,oBAAqB,EAAQ,OAC7BgG,kBAAmB,EAAQ,OAC3BC,kBAAmB,EAAQ,OAC3B3F,gBAAiB,EAAQ,OACzB4F,sBAAuB,EAAQ,OAC/BC,qBAAsB,EAAQ,OAC9BC,QAAS,EAAQ,KACjB9D,SAAU,EAAQ,OAClB+D,UAAW,EAAQ,OACnBC,aAAc,EAAQ,OACtBC,aAAc,EAAQ,OACtBC,YAAa,EAAQ,OACrBC,WAAY,EAAQ,OACpBC,aAAc,EAAQ,MACtBC,YAAa,EAAQ,OACrBC,WAAY,EAAQ,OACpBC,cAAe,EAAQ,OACvB/E,UAAW,EAAQ,OACnBgF,UAAW,EAAQ,OACnBC,eAAgB,EAAQ,OACxBzS,OAAQ,EAAQ,OAChByH,QAAS,EAAQ,OACjByG,OAAQ,EAAQ,MAChBC,aAAc,EAAQ,OACtBrG,eAAgB,EAAQ,OACxB4K,cAAe,EAAQ,OACvBjE,SAAU,EAAQ,OAClBkE,UAAW,EAAQ,OACnBvE,WAAY,EAAQ,MACpBwE,kBAAmB,EAAQ,MAC3BjL,WAAY,EAAQ,OACpBkG,gBAAiB,EAAQ,OACzBc,WAAY,EAAQ,OACpB3G,SAAU,EAAQ,OAClB6K,2BAA4B,EAAQ,OACpCtI,WAAY,EAAQ,OACpBqE,WAAY,EAAQ,OACpB5H,QAAS,EAAQ,OACjB8L,QAAS,EAAQ,OACjBC,QAAS,EAAQ,OACjBC,SAAU,EAAQ,OAClBC,OAAQ,EAAQ,OAChBC,QAAS,EAAQ,MACjBC,kBAAmB,EAAQ,OAC3BC,SAAU,EAAQ,MAClBC,SAAU,EAAQ,OAClBC,iBAAkB,EAAQ,OAC1BrD,WAAY,EAAQ,OACpBsD,SAAU,EAAQ,OAClBC,OAAQ,EAAQ,OAChBC,UAAW,EAAQ,OACnBC,WAAY,EAAQ,OACpBC,cAAe,EAAQ,OACvBC,cAAe,EAAQ,MACvBC,aAAc,EAAQ,OACtBC,YAAa,EAAQ,OACrBC,cAAe,EAAQ,OACvBC,aAAc,EAAQ,OACtBC,WAAY,EAAQ,OACpBC,WAAY,EAAQ,OACpBC,WAAY,EAAQ,OACpBC,SAAU,EAAQ,OAClBC,WAAY,EAAQ,OACpBC,cAAe,EAAQ,OACvBC,cAAe,EAAQ,OACvBC,aAAc,EAAQ,OACtBC,YAAa,EAAQ,OACrBC,cAAe,EAAQ,OACvBC,aAAc,EAAQ,MACtBC,WAAY,EAAQ,OACpBC,WAAY,EAAQ,OACpBC,WAAY,EAAQ,OACpBC,QAAS,EAAQ,OACjBC,WAAY,EAAQ,OACpBC,UAAW,EAAQ,OACnB5G,QAAS,EAAQ,MACjB6G,YAAa,EAAQ,OACrBC,UAAW,EAAQ,OACnBC,cAAe,EAAQ,OACvBC,YAAa,EAAQ,OACrBC,iBAAkB,EAAQ,OAC1BC,iBAAkB,EAAQ,OAC1BvF,eAAgB,EAAQ,OACxBwF,iBAAkB,EAAQ,OAC1BC,cAAe,EAAQ,OACvBC,cAAe,EAAQ,OACvBhS,IAAK,EAAQ,OACb6E,IAAK,EAAQ,OACbnB,MAAO,EAAQ,MACfI,QAAS,EAAQ,OACjBmO,OAAQ,EAAQ,OAChBC,aAAc,EAAQ,OACtBxN,SAAU,EAAQ,OAClByN,UAAW,EAAQ,OACnBC,WAAY,EAAQ,MACpBlO,WAAY,EAAQ,OACpBgG,gBAAiB,EAAQ,OACzBL,WAAY,EAAQ,OACpBjF,SAAU,EAAQ,OAClByN,WAAY,EAAQ,OACpB5O,WAAY,EAAQ,OACpB6O,QAAS,EAAQ,OACjBnM,WAAY,EAAQ,OACpBoM,YAAa,EAAQ,OACrB/L,eAAgB,EAAQ,OACxBgG,eAAgB,EAAQ,OACxBgG,cAAe,EAAQ,OACvBC,aAAc,EAAQ,OACtBC,eAAgB,EAAQ,OACxBC,cAAe,EAAQ,OACvBC,aAAc,EAAQ,OACtBC,gBAAiB,EAAQ,OACzB/L,YAAa,EAAQ,OACrBsF,YAAa,EAAQ,OACrB0G,iBAAkB,EAAQ,OAC1BC,QAAS,EAAQ,OACjBC,SAAU,EAAQ,MAClBtL,YAAa,EAAQ,OACrBuL,gBAAiB,EAAQ,OACzBC,WAAY,EAAQ,OACpBC,UAAW,EAAQ,OACnBC,YAAa,EAAQ,OACrBC,WAAY,EAAQ,OACpBC,SAAU,EAAQ,OAClBC,SAAU,EAAQ,S,sBC1JpB,IAAI7P,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAiB0V,EAAWqC,GAC1B,IAAIpC,EAAOM,EAAMP,GACbqQ,EAAgB9P,EAAM8B,GAC1B,OAAOpC,EAAKE,UAAYkQ,EAAclQ,Y,sBCtBxC,IAAII,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAkB0V,EAAWqC,GAC3B,IAAIpC,EAAOM,EAAMP,GACbqQ,EAAgB9P,EAAM8B,GAC1B,OAAOpC,EAAKE,UAAYkQ,EAAclQ,Y,kBCHxC9V,EAAOC,QAJP,SAAgBgmB,GACd,OAAOA,aAAoBpQ,O,qBChB7B,IAAIK,EAAQ,EAAQ,MA4BpBlW,EAAOC,QANP,SAAiBimB,EAAeC,GAC9B,IAAIhN,EAAWjD,EAAMgQ,GACjB9M,EAAYlD,EAAMiQ,GACtB,OAAOhN,EAASrD,YAAcsD,EAAUtD,Y,sBCzB1C,IAAII,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAA2B0V,GACzB,OAAsC,IAA/BO,EAAMP,GAAWY,Y,qBCnB1B,IAAIL,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAAkB0V,GAChB,OAAqC,IAA9BO,EAAMP,GAAWqH,W,sBCnB1B,IAAI9G,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAAkB0V,GAChB,OAAOO,EAAMP,GAAWG,WAAY,IAAID,MAAOC,Y,sBCnBjD,IAAII,EAAQ,EAAQ,MAEhB4G,EAAW,EAAQ,OAEnBmE,EAAa,EAAQ,OAuBzBjhB,EAAOC,QALP,SAA0B0V,GACxB,IAAIC,EAAOM,EAAMP,GACjB,OAAOmH,EAASlH,GAAME,YAAcmL,EAAWrL,GAAME,Y,sBCxBvD,IAAII,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAoB0V,GAClB,IACI6G,EADOtG,EAAMP,GACDsB,cAChB,OAAOuF,EAAO,KAAQ,GAAKA,EAAO,GAAM,GAAKA,EAAO,KAAQ,I,sBCrB9D,IAAItG,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAAkB0V,GAChB,OAAqC,IAA9BO,EAAMP,GAAWqH,W,sBCnB1B,IAAI9G,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAAgB0V,GACd,OAAOO,EAAMP,GAAWG,WAAY,IAAID,MAAOC,Y,sBCnBjD,IAAI6C,EAAa,EAAQ,OA4BzB3Y,EAAOC,QANP,SAAmBsY,EAAeC,GAChC,IAAI4N,EAAqBzN,EAAWJ,GAChC8N,EAAsB1N,EAAWH,GACrC,OAAO4N,EAAmBtQ,YAAcuQ,EAAoBvQ,Y,sBCzB9D,IAAIiP,EAAc,EAAQ,OA4B1B/kB,EAAOC,QANP,SAAoBsY,EAAeC,GACjC,IAAI8N,EAAsBvB,EAAYxM,GAClCgO,EAAuBxB,EAAYvM,GACvC,OAAO8N,EAAoBxQ,YAAcyQ,EAAqBzQ,Y,sBCzBhE,IAAIiN,EAAa,EAAQ,OA8BzB/iB,EAAOC,QANP,SAAuBsY,EAAeC,GACpC,OAAOuK,EAAWxK,EAAeC,EAAgB,CAC/C+D,aAAc,M,qBC1BlB,IAAIyC,EAAiB,EAAQ,OA8B7Bhf,EAAOC,QANP,SAAuBsY,EAAeC,GACpC,IAAIgO,EAAsBxH,EAAezG,GACrCkO,EAAuBzH,EAAexG,GAC1C,OAAOgO,EAAoB1Q,YAAc2Q,EAAqB3Q,Y,sBC3BhE,IAAIkP,EAAgB,EAAQ,OA6B5BhlB,EAAOC,QANP,SAAsBsY,EAAeC,GACnC,IAAIkO,EAAwB1B,EAAczM,GACtCoO,EAAyB3B,EAAcxM,GAC3C,OAAOkO,EAAsB5Q,YAAc6Q,EAAuB7Q,Y,sBC1BpE,IAAII,EAAQ,EAAQ,MA4BpBlW,EAAOC,QANP,SAAqBsY,EAAeC,GAClC,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GACtB,OAAOW,EAASlC,gBAAkBmC,EAAUnC,eAAiBkC,EAASrC,aAAesC,EAAUtC,a,sBCzBjG,IAAIoO,EAAiB,EAAQ,OA4B7BllB,EAAOC,QANP,SAAuBsY,EAAeC,GACpC,IAAIoO,EAAyB1B,EAAe3M,GACxCsO,EAA0B3B,EAAe1M,GAC7C,OAAOoO,EAAuB9Q,YAAc+Q,EAAwB/Q,Y,sBCzBtE,IAAIqP,EAAgB,EAAQ,OA6B5BnlB,EAAOC,QANP,SAAsBsY,EAAeC,GACnC,IAAIsO,EAAwB3B,EAAc5M,GACtCwO,EAAyB5B,EAAc3M,GAC3C,OAAOsO,EAAsBhR,YAAciR,EAAuBjR,Y,sBC1BpE,IAAIwD,EAAc,EAAQ,OAwC1BtZ,EAAOC,QANP,SAAoBsY,EAAeC,EAAgBe,GACjD,IAAIyN,EAAsB1N,EAAYf,EAAegB,GACjD0N,EAAuB3N,EAAYd,EAAgBe,GACvD,OAAOyN,EAAoBlR,YAAcmR,EAAqBnR,Y,sBCrChE,IAAII,EAAQ,EAAQ,MA4BpBlW,EAAOC,QANP,SAAoBsY,EAAeC,GACjC,IAAIW,EAAWjD,EAAMqC,GACjBa,EAAYlD,EAAMsC,GACtB,OAAOW,EAASlC,gBAAkBmC,EAAUnC,gB,sBCzB9C,IAAIf,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAAoB0V,GAClB,OAAqC,IAA9BO,EAAMP,GAAWqH,W,sBCnB1B,IAAI9G,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAAkB0V,GAChB,OAAqC,IAA9BO,EAAMP,GAAWqH,W,sBCnB1B,IAAIwF,EAAa,EAAQ,OAuBzBxiB,EAAOC,QAJP,SAAoB0V,GAClB,OAAO6M,EAAW,IAAI3M,KAAQF,K,sBCpBhC,IAAI8M,EAAgB,EAAQ,OAwB5BziB,EAAOC,QAJP,SAAuB0V,GACrB,OAAO8M,EAAc,IAAI5M,KAAQF,K,sBCrBnC,IAAI+M,EAAgB,EAAQ,MAyB5B1iB,EAAOC,QAJP,SAAuB0V,GACrB,OAAO+M,EAAc,IAAI7M,KAAQF,K,sBCtBnC,IAAIgN,EAAe,EAAQ,OAuB3B3iB,EAAOC,QAJP,SAAsB0V,GACpB,OAAOgN,EAAa,IAAI9M,KAAQF,K,sBCpBlC,IAAIiN,EAAc,EAAQ,OAsB1B5iB,EAAOC,QAJP,SAAqB0V,GACnB,OAAOiN,EAAY,IAAI/M,KAAQF,K,sBCnBjC,IAAIkN,EAAgB,EAAQ,OAsB5B7iB,EAAOC,QAJP,SAAuB0V,GACrB,OAAOkN,EAAc,IAAIhN,KAAQF,K,qBCnBnC,IAAImN,EAAe,EAAQ,OAuB3B9iB,EAAOC,QAJP,SAAsB0V,GACpB,OAAOmN,EAAa,IAAIjN,KAAQF,K,sBCpBlC,IAAIoN,EAAa,EAAQ,OA8BzB/iB,EAAOC,QAJP,SAAoB0V,EAAW4D,GAC7B,OAAOwJ,EAAW,IAAIlN,KAAQF,EAAW4D,K,sBC3B3C,IAAIyJ,EAAa,EAAQ,OAsBzBhjB,EAAOC,QAJP,SAAoB0V,GAClB,OAAOqN,EAAW,IAAInN,KAAQF,K,sBCnBhC,IAAIO,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAAoB0V,GAClB,OAAqC,IAA9BO,EAAMP,GAAWqH,W,sBCnB1B,IAAIrE,EAAa,EAAQ,OAsBzB3Y,EAAOC,QAJP,SAAiB0V,GACf,OAAOgD,EAAWhD,GAAWG,YAAc6C,EAAW,IAAI9C,MAAQC,Y,sBCnBpE,IAAI6C,EAAa,EAAQ,OAwBzB3Y,EAAOC,QANP,SAAoB0V,GAClB,IAAIuR,EAAW,IAAIrR,KAEnB,OADAqR,EAAS5Q,QAAQ4Q,EAAS3Q,UAAY,GAC/BoC,EAAWhD,GAAWG,YAAc6C,EAAWuO,GAAUpR,Y,sBCrBlE,IAAII,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAAmB0V,GACjB,OAAqC,IAA9BO,EAAMP,GAAWqH,W,qBCnB1B,IAAI+E,EAAS,EAAQ,OAmCrB/hB,EAAOC,QARP,SAAiB0V,GACf,GAAIoM,EAAOpM,GACT,OAAQwR,MAAMxR,GAEd,MAAM,IAAI3U,UAAUS,SAASC,KAAKiU,GAAa,iC,sBC/BnD,IAAIO,EAAQ,EAAQ,MAsBpBlW,EAAOC,QAJP,SAAqB0V,GACnB,OAAqC,IAA9BO,EAAMP,GAAWqH,W,sBCnB1B,IAAI9G,EAAQ,EAAQ,MAwBpBlW,EAAOC,QANP,SAAmB0V,GACjB,IACIoH,EADO7G,EAAMP,GACFqH,SACf,OAAe,IAARD,GAAqB,IAARA,I,sBCrBtB,IAAI7G,EAAQ,EAAQ,MA0CpBlW,EAAOC,QAZP,SAAuB0V,EAAWmG,EAAgBC,GAChD,IAAIqL,EAAOlR,EAAMP,GAAWG,UACxBuR,EAAYnR,EAAM4F,GAAgBhG,UAClCqG,EAAUjG,EAAM6F,GAAcjG,UAElC,GAAIuR,EAAYlL,EACd,MAAM,IAAIzT,MAAM,+DAGlB,OAAO0e,GAAQC,GAAaD,GAAQjL,I,sBCvCtC,IAAIxD,EAAa,EAAQ,OAwBzB3Y,EAAOC,QANP,SAAqB0V,GACnB,IAAI2R,EAAY,IAAIzR,KAEpB,OADAyR,EAAUhR,QAAQgR,EAAU/Q,UAAY,GACjCoC,EAAWhD,GAAWG,YAAc6C,EAAW2O,GAAWxR,Y,sBCrBnE,IAAIyO,EAAgB,EAAQ,OA2B5BvkB,EAAOC,QANP,SAA0B0V,GACxB,OAAO4O,EAAc5O,EAAW,CAC9B4G,aAAc,M,sBCvBlB,IAAI9F,EAAa,EAAQ,OAErBuC,EAAiB,EAAQ,OAgC7BhZ,EAAOC,QAVP,SAA0B0V,GACxB,IAAI6G,EAAO/F,EAAWd,GAClB4R,EAAkB,IAAI1R,KAAK,GAC/B0R,EAAgBvQ,YAAYwF,EAAO,EAAG,EAAG,GACzC+K,EAAgBrQ,SAAS,EAAG,EAAG,EAAG,GAClC,IAAItB,EAAOoD,EAAeuO,GAE1B,OADA3R,EAAKU,QAAQV,EAAKW,UAAY,GACvBX,I,sBC/BT,IAAIM,EAAQ,EAAQ,MA2BpBlW,EAAOC,QARP,SAAwB0V,GACtB,IAAIC,EAAOM,EAAMP,GACbiH,EAAQhH,EAAKkB,WAGjB,OAFAlB,EAAKoB,YAAYpB,EAAKqB,cAAe2F,EAAQ,EAAG,GAChDhH,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,sBCxBT,IAAIM,EAAQ,EAAQ,MA4BpBlW,EAAOC,QATP,SAA0B0V,GACxB,IAAIC,EAAOM,EAAMP,GACbkH,EAAejH,EAAKkB,WACpB8F,EAAQC,EAAeA,EAAe,EAAI,EAG9C,OAFAjH,EAAKwB,SAASwF,EAAO,GACrBhH,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,sBCzBT,IAAIM,EAAQ,EAAQ,MAoCpBlW,EAAOC,QAVP,SAAuB0V,EAAW4D,GAChC,IAAIgD,EAAehD,GAAelD,OAAOkD,EAAagD,eAAqB,EACvE3G,EAAOM,EAAMP,GACboH,EAAMnH,EAAKoH,SACXjD,EAAuC,GAA/BgD,EAAMR,GAAgB,EAAI,IAAUQ,EAAMR,GAGtD,OAFA3G,EAAKsB,SAAS,EAAG,EAAG,EAAG,GACvBtB,EAAKU,QAAQV,EAAKW,UAAYwD,GACvBnE,I,sBCjCT,IAAIM,EAAQ,EAAQ,MA2BpBlW,EAAOC,QARP,SAAuB0V,GACrB,IAAIC,EAAOM,EAAMP,GACb6G,EAAO5G,EAAKqB,cAGhB,OAFArB,EAAKoB,YAAYwF,EAAO,EAAG,EAAG,GAC9B5G,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,kBCxBT,IAAI4R,EAAsB,CAAC,IAAK,KAAM,IAAK,IAAK,KAAM,MAAO,OAAQ,IAAK,IAAK,IAAK,KAAM,KAAM,OAAQ,KAAM,OAAQ,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,MAAO,IAAK,KAAM,IAAK,KAgBpMxnB,EAAOC,QAdP,SAAqCmd,GACnC,IAAIqK,EAAgB,GAEpB,IAAK,IAAIjkB,KAAO4Z,EACVA,EAAWpP,eAAexK,IAC5BikB,EAAcrgB,KAAK5D,GAIvB,IAAIkkB,EAAmBF,EAAoB9iB,OAAO+iB,GAAezhB,OAAO2hB,UAExE,OAD6B,IAAIC,OAAO,2BAAkCF,EAAiB3e,KAAK,KAAO,MAAO,O,kBCyEhH/I,EAAOC,QArFP,WACE,IAAI4nB,EAAwB,CAC1BC,iBAAkB,CAChBC,IAAK,qBACLC,MAAO,+BAETC,SAAU,CACRF,IAAK,WACLC,MAAO,qBAETE,YAAa,gBACbC,iBAAkB,CAChBJ,IAAK,qBACLC,MAAO,+BAETI,SAAU,CACRL,IAAK,WACLC,MAAO,qBAETK,YAAa,CACXN,IAAK,eACLC,MAAO,yBAETM,OAAQ,CACNP,IAAK,SACLC,MAAO,mBAETO,MAAO,CACLR,IAAK,QACLC,MAAO,kBAETQ,aAAc,CACZT,IAAK,gBACLC,MAAO,0BAETS,QAAS,CACPV,IAAK,UACLC,MAAO,oBAETU,YAAa,CACXX,IAAK,eACLC,MAAO,yBAETW,OAAQ,CACNZ,IAAK,SACLC,MAAO,mBAETY,WAAY,CACVb,IAAK,cACLC,MAAO,wBAETa,aAAc,CACZd,IAAK,gBACLC,MAAO,2BA2BX,MAAO,CACLnN,SAxBF,SAAkBiO,EAAOC,EAAO1lB,GAE9B,IAAIwM,EAUJ,OAXAxM,EAAUA,GAAW,GAInBwM,EAD0C,iBAAjCgY,EAAsBiB,GACtBjB,EAAsBiB,GACZ,IAAVC,EACAlB,EAAsBiB,GAAOf,IAE7BF,EAAsBiB,GAAOd,MAAM/f,QAAQ,YAAa8gB,GAG/D1lB,EAAQ2X,UACN3X,EAAQsX,WAAa,EAChB,MAAQ9K,EAERA,EAAS,OAIbA,M,sBC7EX,IAAImZ,EAA8B,EAAQ,OAiF1ChpB,EAAOC,QA/EP,WAKE,IAAIgpB,EAAc,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC5FC,EAAa,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YAC5HC,EAAgB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACrDC,EAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3DC,EAAe,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAClFC,EAAoB,CAAC,KAAM,MAC3BC,EAAoB,CAAC,KAAM,MAC3BC,EAAe,CAAC,OAAQ,QACxBpM,EAAa,CAEf,IAAO,SAAaxH,GAClB,OAAOqT,EAAYrT,EAAKkB,aAG1B,KAAQ,SAAclB,GACpB,OAAOsT,EAAWtT,EAAKkB,aAGzB,GAAM,SAAYlB,GAChB,OAAOuT,EAAcvT,EAAKoH,WAG5B,IAAO,SAAapH,GAClB,OAAOwT,EAAcxT,EAAKoH,WAG5B,KAAQ,SAAcpH,GACpB,OAAOyT,EAAazT,EAAKoH,WAG3B,EAAK,SAAWpH,GACd,OAAOA,EAAK2H,WAAa,IAAM,EAAI+L,EAAkB,GAAKA,EAAkB,IAG9E,EAAK,SAAW1T,GACd,OAAOA,EAAK2H,WAAa,IAAM,EAAIgM,EAAkB,GAAKA,EAAkB,IAG9E,GAAM,SAAY3T,GAChB,OAAOA,EAAK2H,WAAa,IAAM,EAAIiM,EAAa,GAAKA,EAAa,KAUtE,MANwB,CAAC,IAAK,IAAK,MAAO,IAAK,IAAK,KAClC7iB,SAAQ,SAAU8iB,GAClCrM,EAAWqM,EAAiB,KAAO,SAAU7T,EAAMwH,GACjD,OASN,SAAiBY,GACf,IAAI0L,EAAS1L,EAAS,IAEtB,GAAI0L,EAAS,IAAMA,EAAS,GAC1B,OAAQA,EAAS,IACf,KAAK,EACH,OAAO1L,EAAS,KAElB,KAAK,EACH,OAAOA,EAAS,KAElB,KAAK,EACH,OAAOA,EAAS,KAItB,OAAOA,EAAS,KAzBL2L,CAAQvM,EAAWqM,GAAgB7T,QAGvC,CACLwH,WAAYA,EACZkB,uBAAwB0K,EAA4B5L,M,sBC1DxD,IAAIwM,EAA6B,EAAQ,OAErCC,EAAoB,EAAQ,OAOhC7pB,EAAOC,QAAU,CACf6a,gBAAiB8O,IACjB9a,OAAQ+a,M,sBCXV,IAAI3T,EAAQ,EAAQ,MAgCpBlW,EAAOC,QATP,WACE,IAAI6pB,EAAavpB,MAAMiB,UAAUG,MAAMD,KAAK2I,WACxC+R,EAAQ0N,EAAW1lB,KAAI,SAAUuR,GACnC,OAAOO,EAAMP,MAEXoU,EAAkBvZ,KAAKgC,IAAIvE,MAAM,KAAMmO,GAC3C,OAAO,IAAIvG,KAAKkU,K,sBC7BlB,IAAI7T,EAAQ,EAAQ,MAgCpBlW,EAAOC,QATP,WACE,IAAI6pB,EAAavpB,MAAMiB,UAAUG,MAAMD,KAAK2I,WACxC+R,EAAQ0N,EAAW1lB,KAAI,SAAUuR,GACnC,OAAOO,EAAMP,MAEXqU,EAAoBxZ,KAAK6G,IAAIpJ,MAAM,KAAMmO,GAC7C,OAAO,IAAIvG,KAAKmU,K,qBC7BlB,IAAIC,EAAkC,EAAQ,OAE1ClI,EAAS,EAAQ,OAEjBmI,EAAuB,KACvBC,EAAyB,IAEzBC,EAA8B,OAC9BC,EAAsB,IAEtBC,EAAe,YACfC,EAAiB,CAAC,gBACtB,gBACA,iBAEIC,EAAiB,WACjBC,EAAmB,CAAC,eACxB,eACA,gBAGIC,EAAe,aACfC,EAAgB,cAChBC,EAAiB,uBACjBC,EAAgB,eAChBC,EAAiB,wBAEjBC,EAAe,sBACfC,EAAiB,+BACjBC,EAAmB,wCAEnBC,EAAqB,aACrBC,EAAsB,QACtBC,EAAuB,kBACvBC,EAAyB,2BAyR7B,SAASC,EAAaC,EAASC,EAAMzO,GACnCyO,EAAOA,GAAQ,EACfzO,EAAMA,GAAO,EACb,IAAInH,EAAO,IAAIC,KAAK,GACpBD,EAAK6V,eAAeF,EAAS,EAAG,GAChC,IACIxR,EAAc,EAAPyR,EAAWzO,EAAM,GADHnH,EAAK8V,aAAe,GAG7C,OADA9V,EAAK+V,WAAW/V,EAAKgW,aAAe7R,GAC7BnE,EAGT5V,EAAOC,QAjQP,SAAegmB,EAAU1M,GACvB,GAAIwI,EAAOkE,GAET,OAAO,IAAIpQ,KAAKoQ,EAASnQ,WACpB,GAAwB,iBAAbmQ,EAChB,OAAO,IAAIpQ,KAAKoQ,GAGlB,IACI4F,GADUtS,GAAgB,IACCsS,iBAG7BA,EADsB,MAApBA,EA1E0B,EA6ETxV,OAAOwV,GAG5B,IAAIC,EAqCN,SAAyBC,GACvB,IAEIC,EAFAF,EAAc,GACdtN,EAAQuN,EAAWxkB,MAAM6iB,GAGzBC,EAAoBvoB,KAAK0c,EAAM,KACjCsN,EAAYlW,KAAO,KACnBoW,EAAaxN,EAAM,KAEnBsN,EAAYlW,KAAO4I,EAAM,GACzBwN,EAAaxN,EAAM,IAGrB,GAAIwN,EAAY,CACd,IAAIlD,EAAQoC,EAAmBe,KAAKD,GAEhClD,GACFgD,EAAY1E,KAAO4E,EAAW/jB,QAAQ6gB,EAAM,GAAI,IAChDgD,EAAYI,SAAWpD,EAAM,IAE7BgD,EAAY1E,KAAO4E,EAIvB,OAAOF,EA7DWK,CAAgBlG,GAC9BmG,EA+DN,SAAmBL,EAAYF,GAC7B,IAEI/C,EAFAuD,EAAgB9B,EAAesB,GAC/BS,EAAkB7B,EAAiBoB,GAKvC,GAFA/C,EAAQ0B,EAAeyB,KAAKF,IAAeO,EAAgBL,KAAKF,GAErD,CACT,IAAIQ,EAAazD,EAAM,GACvB,MAAO,CACLtM,KAAMgQ,SAASD,EAAY,IAC3BE,eAAgBV,EAAWpqB,MAAM4qB,EAAWnsB,SAOhD,GAFA0oB,EAAQwB,EAAa2B,KAAKF,IAAeM,EAAcJ,KAAKF,GAEjD,CACT,IAAIW,EAAgB5D,EAAM,GAC1B,MAAO,CACLtM,KAAoC,IAA9BgQ,SAASE,EAAe,IAC9BD,eAAgBV,EAAWpqB,MAAM+qB,EAActsB,SAKnD,MAAO,CACLoc,KAAM,MA3FcmQ,CAAUb,EAAYlW,KAAMiW,GAC9CrP,EAAO4P,EAAgB5P,KAEvB5G,EA4FN,SAAmBmW,EAAYvP,GAE7B,GAAa,OAATA,EACF,OAAO,KAGT,IAAIsM,EACAlT,EACAgH,EAGJ,GAA0B,IAAtBmP,EAAW3rB,OAGb,OAFAwV,EAAO,IAAIC,KAAK,IACX4V,eAAejP,GACb5G,EAMT,GAFAkT,EAAQ4B,EAAauB,KAAKF,GAMxB,OAHAnW,EAAO,IAAIC,KAAK,GAChB+G,EAAQ4P,SAAS1D,EAAM,GAAI,IAAM,EACjClT,EAAK6V,eAAejP,EAAMI,GACnBhH,EAMT,GAFAkT,EAAQ6B,EAAcsB,KAAKF,GAEhB,CACTnW,EAAO,IAAIC,KAAK,GAChB,IAAI+W,EAAYJ,SAAS1D,EAAM,GAAI,IAEnC,OADAlT,EAAK6V,eAAejP,EAAM,EAAGoQ,GACtBhX,EAMT,GAFAkT,EAAQ8B,EAAeqB,KAAKF,GAEjB,CACTnW,EAAO,IAAIC,KAAK,GAChB+G,EAAQ4P,SAAS1D,EAAM,GAAI,IAAM,EACjC,IAAI/L,EAAMyP,SAAS1D,EAAM,GAAI,IAE7B,OADAlT,EAAK6V,eAAejP,EAAMI,EAAOG,GAC1BnH,EAMT,GAFAkT,EAAQ+B,EAAcoB,KAAKF,GAIzB,OAAOT,EAAa9O,EADbgQ,SAAS1D,EAAM,GAAI,IAAM,GAOlC,GAFAA,EAAQgC,EAAemB,KAAKF,GAEjB,CAGT,OAAOT,EAAa9O,EAFbgQ,SAAS1D,EAAM,GAAI,IAAM,EAChB0D,SAAS1D,EAAM,GAAI,IAAM,GAK3C,OAAO,KA9JI+D,CADUT,EAAgBK,eACAjQ,GAErC,GAAI5G,EAAM,CACR,IAEIuF,EAFAxE,EAAYf,EAAKE,UACjBsR,EAAO,EAOX,GAJI0E,EAAY1E,OACdA,EAyJN,SAAmB4E,GACjB,IAAIlD,EACAtL,EACApC,EAIJ,GAFA0N,EAAQiC,EAAakB,KAAKD,GAIxB,OADAxO,EAAQsP,WAAWhE,EAAM,GAAG7gB,QAAQ,IAAK,OAC1B,GAAKiiB,EAMtB,GAFApB,EAAQkC,EAAeiB,KAAKD,GAK1B,OAFAxO,EAAQgP,SAAS1D,EAAM,GAAI,IAC3B1N,EAAU0R,WAAWhE,EAAM,GAAG7gB,QAAQ,IAAK,MACpCuV,EAAQ,GAAK0M,EAAuB9O,EAAU+O,EAMvD,GAFArB,EAAQmC,EAAiBgB,KAAKD,GAEnB,CACTxO,EAAQgP,SAAS1D,EAAM,GAAI,IAC3B1N,EAAUoR,SAAS1D,EAAM,GAAI,IAC7B,IAAI5N,EAAU4R,WAAWhE,EAAM,GAAG7gB,QAAQ,IAAK,MAC/C,OAAOuV,EAAQ,GAAK0M,EAAuB9O,EAAU+O,EAAmC,IAAVjP,EAIhF,OAAO,KAzLI6R,CAAUjB,EAAY1E,OAG3B0E,EAAYI,SACd/Q,EAwLN,SAAuB6R,GACrB,IAAIlE,EACAmE,EAIJ,GAFAnE,EAAQqC,EAAoBc,KAAKe,GAG/B,OAAO,EAMT,GAFAlE,EAAQsC,EAAqBa,KAAKe,GAIhC,OADAC,EAA0C,GAAzBT,SAAS1D,EAAM,GAAI,IAChB,MAAbA,EAAM,IAAcmE,EAAiBA,EAM9C,GAFAnE,EAAQuC,EAAuBY,KAAKe,GAIlC,OADAC,EAA0C,GAAzBT,SAAS1D,EAAM,GAAI,IAAW0D,SAAS1D,EAAM,GAAI,IAC9C,MAAbA,EAAM,IAAcmE,EAAiBA,EAG9C,OAAO,EAlNMC,CAAcpB,EAAYI,UAAY/B,MAC1C,CACL,IAAIgD,EAAWxW,EAAYyQ,EACvBgG,EAAe,IAAIvX,KAAKsX,GAC5BhS,EAAS8O,EAAgCmD,GAEzC,IAAIC,EAAsB,IAAIxX,KAAKsX,GACnCE,EAAoB/W,QAAQ8W,EAAa7W,UAAY,GACrD,IAAI+W,EAAarD,EAAgCoD,GAAuBpD,EAAgCmD,GAEpGE,EAAa,IACfnS,GAAUmS,GAId,OAAO,IAAIzX,KAAKc,EAAYyQ,EAAOjM,GAEnC,OAAO,IAAItF,KAAKoQ,K,sBCvHpB,IAAI/P,EAAQ,EAAQ,MA0BpBlW,EAAOC,QAPP,SAAiB0V,EAAW4X,GAC1B,IAAI3X,EAAOM,EAAMP,GACb6X,EAAanX,OAAOkX,GAExB,OADA3X,EAAKU,QAAQkX,GACN5X,I,sBCvBT,IAAIM,EAAQ,EAAQ,MAEhBqB,EAAU,EAAQ,MAqCtBvX,EAAOC,QAXP,SAAgB0V,EAAW8X,EAAUlU,GACnC,IAAIgD,EAAehD,GAAelD,OAAOkD,EAAagD,eAAqB,EACvE3G,EAAOM,EAAMP,GACboH,EAAM1G,OAAOoX,GACbC,EAAa9X,EAAKoH,SAItB,OAAOzF,EAAQ3B,IAHCmH,EAAM,EACM,GAAK,EACVR,EAAe,EAAI,GAAKQ,EAAM2Q,K,sBCnCvD,IAAIxX,EAAQ,EAAQ,MA2BpBlW,EAAOC,QARP,SAAsB0V,EAAWgY,GAC/B,IAAI/X,EAAOM,EAAMP,GACbiX,EAAYvW,OAAOsX,GAGvB,OAFA/X,EAAKwB,SAAS,GACdxB,EAAKU,QAAQsW,GACNhX,I,sBCxBT,IAAIM,EAAQ,EAAQ,MA0BpBlW,EAAOC,QAPP,SAAkB0V,EAAWiY,GAC3B,IAAIhY,EAAOM,EAAMP,GACb6H,EAAQnH,OAAOuX,GAEnB,OADAhY,EAAKsB,SAASsG,GACP5H,I,sBCvBT,IAAIM,EAAQ,EAAQ,MAEhBqB,EAAU,EAAQ,MAElBkK,EAAY,EAAQ,OA6BxBzhB,EAAOC,QARP,SAAmB0V,EAAW8X,GAC5B,IAAI7X,EAAOM,EAAMP,GACboH,EAAM1G,OAAOoX,GACbC,EAAajM,EAAU7L,GAE3B,OAAO2B,EAAQ3B,EADJmH,EAAM2Q,K,qBC7BnB,IAAIxX,EAAQ,EAAQ,MAEhBgH,EAAa,EAAQ,MA6BzBld,EAAOC,QARP,SAAoB0V,EAAWkY,GAC7B,IAAIjY,EAAOM,EAAMP,GACbmY,EAAUzX,OAAOwX,GACjB9T,EAAOmD,EAAWtH,GAAQkY,EAE9B,OADAlY,EAAKU,QAAQV,EAAKW,UAAmB,EAAPwD,GACvBnE,I,sBC5BT,IAAIM,EAAQ,EAAQ,MAEhB8I,EAAiB,EAAQ,OAEzBtF,EAA2B,EAAQ,OAkCvC1Z,EAAOC,QAZP,SAAoB0V,EAAWoY,GAC7B,IAAInY,EAAOM,EAAMP,GACb4V,EAAUlV,OAAO0X,GACjBhU,EAAOL,EAAyB9D,EAAMoJ,EAAepJ,IACrD2R,EAAkB,IAAI1R,KAAK,GAK/B,OAJA0R,EAAgBvQ,YAAYuU,EAAS,EAAG,GACxChE,EAAgBrQ,SAAS,EAAG,EAAG,EAAG,IAClCtB,EAAOoJ,EAAeuI,IACjBjR,QAAQV,EAAKW,UAAYwD,GACvBnE,I,sBCnCT,IAAIM,EAAQ,EAAQ,MA0BpBlW,EAAOC,QAPP,SAAyB0V,EAAWqY,GAClC,IAAIpY,EAAOM,EAAMP,GACbsY,EAAe5X,OAAO2X,GAE1B,OADApY,EAAK8G,gBAAgBuR,GACdrY,I,sBCvBT,IAAIM,EAAQ,EAAQ,MA0BpBlW,EAAOC,QAPP,SAAoB0V,EAAWuY,GAC7B,IAAItY,EAAOM,EAAMP,GACbyF,EAAU/E,OAAO6X,GAErB,OADAtY,EAAKyG,WAAWjB,GACTxF,I,sBCvBT,IAAIM,EAAQ,EAAQ,MAEhBU,EAAiB,EAAQ,OAkC7B5W,EAAOC,QAfP,SAAkB0V,EAAWwY,GAC3B,IAAIvY,EAAOM,EAAMP,GACbiH,EAAQvG,OAAO8X,GACf3R,EAAO5G,EAAKqB,cACZ8F,EAAMnH,EAAKW,UACXQ,EAAuB,IAAIlB,KAAK,GACpCkB,EAAqBC,YAAYwF,EAAMI,EAAO,IAC9C7F,EAAqBG,SAAS,EAAG,EAAG,EAAG,GACvC,IAAIC,EAAcP,EAAeG,GAIjC,OADAnB,EAAKwB,SAASwF,EAAOpM,KAAK6G,IAAI0F,EAAK5F,IAC5BvB,I,sBCjCT,IAAIM,EAAQ,EAAQ,MAEhBkB,EAAW,EAAQ,OA2BvBpX,EAAOC,QARP,SAAoB0V,EAAWyY,GAC7B,IAAIxY,EAAOM,EAAMP,GAGboE,EAFU1D,OAAO+X,IACJ5d,KAAKiC,MAAMmD,EAAKkB,WAAa,GAAK,GAEnD,OAAOM,EAASxB,EAAMA,EAAKkB,WAAoB,EAAPiD,K,sBC1B1C,IAAI7D,EAAQ,EAAQ,MA0BpBlW,EAAOC,QAPP,SAAoB0V,EAAW0Y,GAC7B,IAAIzY,EAAOM,EAAMP,GACbuF,EAAU7E,OAAOgY,GAErB,OADAzY,EAAKK,WAAWiF,GACTtF,I,sBCvBT,IAAIM,EAAQ,EAAQ,MA0BpBlW,EAAOC,QAPP,SAAiB0V,EAAW2Y,GAC1B,IAAI1Y,EAAOM,EAAMP,GACb6G,EAAOnG,OAAOiY,GAElB,OADA1Y,EAAKoB,YAAYwF,GACV5G,I,sBCvBT,IAAIM,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAoB0V,GAClB,IAAIC,EAAOM,EAAMP,GAEjB,OADAC,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,sBCtBT,IAAIM,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAqB0V,GACnB,IAAIC,EAAOM,EAAMP,GAEjB,OADAC,EAAKyG,WAAW,EAAG,EAAG,GACfzG,I,sBCtBT,IAAI0D,EAAc,EAAQ,OA2B1BtZ,EAAOC,QANP,SAAwB0V,GACtB,OAAO2D,EAAY3D,EAAW,CAC5B4G,aAAc,M,sBCvBlB,IAAI9F,EAAa,EAAQ,OAErBuC,EAAiB,EAAQ,OA+B7BhZ,EAAOC,QATP,SAAwB0V,GACtB,IAAI6G,EAAO/F,EAAWd,GAClB4R,EAAkB,IAAI1R,KAAK,GAI/B,OAHA0R,EAAgBvQ,YAAYwF,EAAM,EAAG,GACrC+K,EAAgBrQ,SAAS,EAAG,EAAG,EAAG,GACvB8B,EAAeuO,K,sBC7B5B,IAAIrR,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAuB0V,GACrB,IAAIC,EAAOM,EAAMP,GAEjB,OADAC,EAAKK,WAAW,EAAG,GACZL,I,sBCtBT,IAAIM,EAAQ,EAAQ,MA0BpBlW,EAAOC,QAPP,SAAsB0V,GACpB,IAAIC,EAAOM,EAAMP,GAGjB,OAFAC,EAAKU,QAAQ,GACbV,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,sBCvBT,IAAIM,EAAQ,EAAQ,MA4BpBlW,EAAOC,QATP,SAAwB0V,GACtB,IAAIC,EAAOM,EAAMP,GACbkH,EAAejH,EAAKkB,WACpB8F,EAAQC,EAAeA,EAAe,EAG1C,OAFAjH,EAAKwB,SAASwF,EAAO,GACrBhH,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,sBCzBT,IAAIM,EAAQ,EAAQ,MAyBpBlW,EAAOC,QANP,SAAuB0V,GACrB,IAAIC,EAAOM,EAAMP,GAEjB,OADAC,EAAK8G,gBAAgB,GACd9G,I,sBCtBT,IAAI+C,EAAa,EAAQ,OAqBzB3Y,EAAOC,QAJP,WACE,OAAO0Y,EAAW,IAAI9C,Q,kBCOxB7V,EAAOC,QAXP,WACE,IAAI4b,EAAM,IAAIhG,KACV2G,EAAOX,EAAI5E,cACX2F,EAAQf,EAAI/E,WACZiG,EAAMlB,EAAItF,UACVX,EAAO,IAAIC,KAAK,GAGpB,OAFAD,EAAKoB,YAAYwF,EAAMI,EAAOG,EAAM,GACpCnH,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,sBCtBT,IAAIM,EAAQ,EAAQ,MAoCpBlW,EAAOC,QAVP,SAAqB0V,EAAW4D,GAC9B,IAAIgD,EAAehD,GAAelD,OAAOkD,EAAagD,eAAqB,EACvE3G,EAAOM,EAAMP,GACboH,EAAMnH,EAAKoH,SACXjD,GAAQgD,EAAMR,EAAe,EAAI,GAAKQ,EAAMR,EAGhD,OAFA3G,EAAKU,QAAQV,EAAKW,UAAYwD,GAC9BnE,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,sBCjCT,IAAIM,EAAQ,EAAQ,MA2BpBlW,EAAOC,QARP,SAAqB0V,GACnB,IAAI4Y,EAAYrY,EAAMP,GAClBC,EAAO,IAAIC,KAAK,GAGpB,OAFAD,EAAKoB,YAAYuX,EAAUtX,cAAe,EAAG,GAC7CrB,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,kBCCT5V,EAAOC,QAXP,WACE,IAAI4b,EAAM,IAAIhG,KACV2G,EAAOX,EAAI5E,cACX2F,EAAQf,EAAI/E,WACZiG,EAAMlB,EAAItF,UACVX,EAAO,IAAIC,KAAK,GAGpB,OAFAD,EAAKoB,YAAYwF,EAAMI,EAAOG,EAAM,GACpCnH,EAAKsB,SAAS,EAAG,EAAG,EAAG,GAChBtB,I,sBCtBT,IAAI2B,EAAU,EAAQ,MAwBtBvX,EAAOC,QALP,SAAiB0V,EAAWQ,GAC1B,IAAIC,EAASC,OAAOF,GACpB,OAAOoB,EAAQ5B,GAAYS,K,qBCrB7B,IAAIoJ,EAAW,EAAQ,OAwBvBxf,EAAOC,QALP,SAAkB0V,EAAWQ,GAC3B,IAAIC,EAASC,OAAOF,GACpB,OAAOqJ,EAAS7J,GAAYS,K,sBCrB9B,IAAIqJ,EAAc,EAAQ,OA0B1Bzf,EAAOC,QALP,SAAqB0V,EAAWQ,GAC9B,IAAIC,EAASC,OAAOF,GACpB,OAAOsJ,EAAY9J,GAAYS,K,sBCvBjC,IAAII,EAAkB,EAAQ,MAwB9BxW,EAAOC,QALP,SAAyB0V,EAAWQ,GAClC,IAAIC,EAASC,OAAOF,GACpB,OAAOK,EAAgBb,GAAYS,K,sBCrBrC,IAAIsJ,EAAa,EAAQ,MAwBzB1f,EAAOC,QALP,SAAoB0V,EAAWQ,GAC7B,IAAIC,EAASC,OAAOF,GACpB,OAAOuJ,EAAW/J,GAAYS,K,sBCrBhC,IAAIkB,EAAY,EAAQ,OAwBxBtX,EAAOC,QALP,SAAmB0V,EAAWQ,GAC5B,IAAIC,EAASC,OAAOF,GACpB,OAAOmB,EAAU3B,GAAYS,K,sBCrB/B,IAAIuJ,EAAc,EAAQ,OAwB1B3f,EAAOC,QALP,SAAqB0V,EAAWQ,GAC9B,IAAIC,EAASC,OAAOF,GACpB,OAAOwJ,EAAYhK,GAAYS,K,sBCrBjC,IAAIwJ,EAAa,EAAQ,OAwBzB5f,EAAOC,QALP,SAAoB0V,EAAWQ,GAC7B,IAAIC,EAASC,OAAOF,GACpB,OAAOyJ,EAAWjK,GAAYS,K,sBCrBhC,IAAI6I,EAAW,EAAQ,OAwBvBjf,EAAOC,QALP,SAAkB0V,EAAWQ,GAC3B,IAAIC,EAASC,OAAOF,GACpB,OAAO8I,EAAStJ,GAAYS,K,sBCrB9B,IAAIyJ,EAAW,EAAQ,OAwBvB7f,EAAOC,QALP,SAAkB0V,EAAWQ,GAC3B,IAAIC,EAASC,OAAOF,GACpB,OAAO0J,EAASlK,GAAYS,K,sBCrB9B,OAOA,WACE,aAEA,IAAImtC,IAAiC,oBAAXhrB,SAA0BA,OAAOI,WAAYJ,OAAOI,SAAS/rB,eACnF42C,EAAuB,CACzBD,UAAWA,EACXE,cAAiC,oBAAXC,OACtBC,qBAAsBJ,MAAgBhrB,OAAOwb,mBAAoBxb,OAAOqrB,aACxEC,eAAgBN,KAAehrB,OAAOurB,aAMrC,KAFD,aACE,OAAON,GACR,8BAdL,I,+BCLA,IAAI9iD,EAAUH,MAAMG,QAChBqjD,EAAUjjD,OAAO+H,KACjBm7C,EAAUljD,OAAOU,UAAUwM,eAC3B8vB,EAAoC,oBAAZC,QAE5B,SAASQ,EAAMC,EAAGC,GAEhB,GAAID,IAAMC,EAAG,OAAO,EAEpB,GAAID,GAAKC,GAAiB,iBAALD,GAA6B,iBAALC,EAAe,CAC1D,IAEIp+B,EACAD,EACAoD,EAJAygD,EAAOvjD,EAAQ89B,GACf0lB,EAAOxjD,EAAQ+9B,GAKnB,GAAIwlB,GAAQC,EAAM,CAEhB,IADA9jD,EAASo+B,EAAEp+B,SACGq+B,EAAEr+B,OAAQ,OAAO,EAE/B,IAAKC,EAAID,EAAgB,GAARC,KACf,IAAKk+B,EAAMC,EAAEn+B,GAAIo+B,EAAEp+B,IAAK,OAAO,EAGjC,OAAO,EAGT,GAAI4jD,GAAQC,EAAM,OAAO,EACzB,IAAIC,EAAQ3lB,aAAa3oB,KACrBuuC,EAAQ3lB,aAAa5oB,KACzB,GAAIsuC,GAASC,EAAO,OAAO,EAC3B,GAAID,GAASC,EAAO,OAAO5lB,EAAE1oB,WAAa2oB,EAAE3oB,UAC5C,IAAIuuC,EAAU7lB,aAAa5W,OACvB08B,EAAU7lB,aAAa7W,OAC3B,GAAIy8B,GAAWC,EAAS,OAAO,EAC/B,GAAID,GAAWC,EAAS,OAAO9lB,EAAE/8B,YAAcg9B,EAAEh9B,WACjD,IAAIoH,EAAOk7C,EAAQvlB,GAEnB,IADAp+B,EAASyI,EAAKzI,UACC2jD,EAAQtlB,GAAGr+B,OAAQ,OAAO,EAEzC,IAAKC,EAAID,EAAgB,GAARC,KACf,IAAK2jD,EAAQtiD,KAAK+8B,EAAG51B,EAAKxI,IAAK,OAAO,EAMxC,GAAIy9B,GAAkBU,aAAaT,SAAWU,aAAaV,QAAS,OAAOS,IAAMC,EAEjF,IAAKp+B,EAAID,EAAgB,GAARC,KAGf,KAAY,YAFZmD,EAAMqF,EAAKxI,KAEam+B,EAAEjP,UAQnBgP,EAAMC,EAAEh7B,GAAMi7B,EAAEj7B,KAAO,OAAO,EAMvC,OAAO,EAGT,OAAOg7B,GAAMA,GAAKC,GAAMA,EAI1Bz+B,EAAOC,QAAU,SAAuBu+B,EAAGC,GACzC,IACE,OAAOF,EAAMC,EAAGC,GAChB,MAAOxG,GACP,GAAIA,EAAMwB,SAAWxB,EAAMwB,QAAQ9uB,MAAM,sBAAyC,aAAlBstB,EAAMja,OAOpE,OADApT,QAAQC,KAAK,mEAAoEotB,EAAMp2B,KAAMo2B,EAAMwB,UAC5F,EAIT,MAAMxB,K,qBCvFV,IAAIpqB,EAAW/M,OAAOiM,QAAU,SAAUe,GACxC,IAAK,IAAIzN,EAAI,EAAGA,EAAIgK,UAAUjK,OAAQC,IAAK,CACzC,IAAI0N,EAAS1D,UAAUhK,GAEvB,IAAK,IAAImD,KAAOuK,EACVjN,OAAOU,UAAUwM,eAAetM,KAAKqM,EAAQvK,KAC/CsK,EAAOtK,GAAOuK,EAAOvK,IAK3B,OAAOsK,GAGLy2C,EAAe,WACjB,SAAS7c,EAAiB55B,EAAQ/K,GAChC,IAAK,IAAI1C,EAAI,EAAGA,EAAI0C,EAAM3C,OAAQC,IAAK,CACrC,IAAIsgC,EAAa59B,EAAM1C,GACvBsgC,EAAWlL,WAAakL,EAAWlL,aAAc,EACjDkL,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD//B,OAAOwwB,eAAexjB,EAAQ6yB,EAAWn9B,IAAKm9B,IAIlD,OAAO,SAAUF,EAAa6B,EAAYC,GAGxC,OAFID,GAAYoF,EAAiBjH,EAAYj/B,UAAW8gC,GACpDC,GAAamF,EAAiBjH,EAAa8B,GACxC9B,GAdQ,GAoBf+jB,EAAUxa,EAFD,EAAQ,QAMjBya,EAAcza,EAFD,EAAQ,QAMrB0a,EAAoB1a,EAFD,EAAQ,QAM3B2a,EAAqB3a,EAFD,EAAQ,QAI5B4a,EAAe,EAAQ,OAEvBC,EAAmB,EAAQ,OAE/B,SAAS7a,EAAuBvgC,GAC9B,OAAOA,GAAOA,EAAIjJ,WAAaiJ,EAAM,CACnC+nB,QAAS/nB,GAIb,SAASq7C,EAAyBr7C,EAAKZ,GACrC,IAAIiF,EAAS,GAEb,IAAK,IAAIzN,KAAKoJ,EACRZ,EAAKjD,QAAQvF,IAAM,GAClBS,OAAOU,UAAUwM,eAAetM,KAAK+H,EAAKpJ,KAC/CyN,EAAOzN,GAAKoJ,EAAIpJ,IAGlB,OAAOyN,EAGT,SAAS0yB,EAAgBnF,EAAUoF,GACjC,KAAMpF,aAAoBoF,GACxB,MAAM,IAAIz/B,UAAU,qCAIxB,SAAS4gC,EAA2B5H,EAAMt4B,GACxC,IAAKs4B,EACH,MAAM,IAAI8H,eAAe,6DAG3B,OAAOpgC,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Bs4B,EAAPt4B,EAmB5E,IAA6BylC,EACvB8D,EAAQC,EAoPV6Z,GAAoB,EAAIL,EAAkBlzB,SAASozB,EAAaI,mBAAoBJ,EAAaK,wBAAyBL,EAAaM,iBAAnH,EAJJ,WAClB,OAAO,QAILC,GAtPyBhe,EAsPH4d,EAnPjB7Z,EAAQD,EAAS,SAAUma,GAGhC,SAASC,IAGP,OAFA7kB,EAAgBtyB,KAAMm3C,GAEfzjB,EAA2B1zB,KAAMk3C,EAAiBn3C,MAAMC,KAAM7D,YA2LvE,OApNJ,SAAmB83B,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIphC,UAAU,kEAAoEohC,GAG1FD,EAAS3gC,UAAYV,OAAOy+B,OAAO6C,GAAcA,EAAW5gC,UAAW,CACrEI,YAAa,CACX6B,MAAO0+B,EACP1M,YAAY,EACZoL,UAAU,EACVD,cAAc,KAGdwB,IAAYthC,OAAOigC,eAAiBjgC,OAAOigC,eAAeoB,EAAUC,GAAcD,EAASnB,UAAYoB,GAOzGC,CAAUgjB,EAAeD,GAQzBC,EAAc7jD,UAAU8jD,sBAAwB,SAA+BpZ,GAC7E,QAAQ,EAAIyY,EAAmBnzB,SAAStjB,KAAKnL,MAAOmpC,IAGtDmZ,EAAc7jD,UAAU+jD,yBAA2B,SAAkCl5C,EAAOm5C,GAC1F,IAAKA,EACH,OAAO,KAGT,OAAQn5C,EAAMtI,MACZ,KAAK8gD,EAAiBY,UAAUC,OAChC,KAAKb,EAAiBY,UAAUE,SAC9B,MAAO,CACLC,UAAWJ,GAGf,KAAKX,EAAiBY,UAAUI,MAC9B,MAAO,CACLC,QAASN,GAIf,MAAM,IAAI98C,MAAM,IAAM2D,EAAMtI,KAAO,uGAGrCshD,EAAc7jD,UAAUukD,yBAA2B,SAAkC98C,GACnF,IAAI+8C,EAEA35C,EAAQpD,EAAKoD,MACb45C,EAAoBh9C,EAAKg9C,kBACzBC,EAAgBj9C,EAAKi9C,cACrBV,EAAiBv8C,EAAKu8C,eAC1B,OAAO33C,EAAS,GAAIo4C,IAAoBD,EAAY,IAAc35C,EAAMtI,MAAQ,GAAGW,OAAOuhD,EAAkB55C,EAAMtI,OAAS,GAAI,CAAC8J,EAAS,GAAIq4C,EAAeh4C,KAAKq3C,yBAAyBl5C,EAAOm5C,MAAoBQ,KAGvNX,EAAc7jD,UAAU2kD,sBAAwB,SAA+B9M,GAC7E,IAAI+M,EAAWC,EAEXh6C,EAAQgtC,EAAMhtC,MACdi6C,EAAWjN,EAAMiN,SACjBJ,EAAgB7M,EAAM6M,cACtBV,EAAiBnM,EAAMmM,eAE3B,OAAQn5C,EAAMtI,MACZ,KAAK8gD,EAAiBY,UAAUc,MAC9B,OAAO14C,EAAS,GAAIy4C,IAAWF,EAAY,IAAc/5C,EAAMtI,MAAQyhD,EAAgBY,EAAUI,gBAAkB34C,EAAS,GAAIq4C,GAAgBE,IAElJ,KAAKvB,EAAiBY,UAAUgB,KAC9B,OAAO54C,EAAS,GAAIy4C,EAAU,CAC5BI,eAAgB74C,EAAS,GAAIq4C,KAGjC,KAAKrB,EAAiBY,UAAUkB,KAC9B,OAAO94C,EAAS,GAAIy4C,EAAU,CAC5BM,eAAgB/4C,EAAS,GAAIq4C,KAInC,OAAOr4C,EAAS,GAAIy4C,IAAWD,EAAY,IAAch6C,EAAMtI,MAAQ8J,EAAS,GAAIq4C,GAAgBG,KAGtGhB,EAAc7jD,UAAUqlD,4BAA8B,SAAqCZ,EAAmBK,GAC5G,IAAIQ,EAAoBj5C,EAAS,GAAIy4C,GAOrC,OALAxlD,OAAO+H,KAAKo9C,GAAmBt/C,SAAQ,SAAUogD,GAC/C,IAAIC,EAEJF,EAAoBj5C,EAAS,GAAIi5C,IAAoBE,EAAY,IAAcD,GAAkBd,EAAkBc,GAAiBC,OAE/HF,GAGTzB,EAAc7jD,UAAUylD,sBAAwB,SAA+B56C,EAAOm5C,GAmBpF,OAAO,GAGTH,EAAc7jD,UAAU0lD,mBAAqB,SAA4B/iD,EAAUmiD,GACjF,IAAItgB,EAAS93B,KAET+3C,EAAoB,GAyCxB,OAvCAzB,EAAQhzB,QAAQ21B,SAASxgD,QAAQxC,GAAU,SAAUkI,GACnD,GAAKA,GAAUA,EAAMtJ,MAArB,CAIA,IAAIqkD,EAAe/6C,EAAMtJ,MACrByiD,EAAiB4B,EAAajjD,SAC9BkjD,EAAavC,EAAyBsC,EAAc,CAAC,aAErDlB,GAAgB,EAAItB,EAAa0C,mCAAmCD,GAIxE,OAFArhB,EAAOihB,sBAAsB56C,EAAOm5C,GAE5Bn5C,EAAMtI,MACZ,KAAK8gD,EAAiBY,UAAU8B,KAChC,KAAK1C,EAAiBY,UAAU+B,KAChC,KAAK3C,EAAiBY,UAAUE,SAChC,KAAKd,EAAiBY,UAAUC,OAChC,KAAKb,EAAiBY,UAAUI,MAC9BI,EAAoBjgB,EAAO+f,yBAAyB,CAClD15C,MAAOA,EACP45C,kBAAmBA,EACnBC,cAAeA,EACfV,eAAgBA,IAElB,MAEF,QACEc,EAAWtgB,EAAOmgB,sBAAsB,CACtC95C,MAAOA,EACPi6C,SAAUA,EACVJ,cAAeA,EACfV,eAAgBA,SAMxBc,EAAWp4C,KAAK24C,4BAA4BZ,EAAmBK,IAIjEjB,EAAc7jD,UAAU08C,OAAS,WAC/B,IAAI5d,EAASpyB,KAAKnL,MACdoB,EAAWm8B,EAAOn8B,SAClBpB,EAAQ+hD,EAAyBxkB,EAAQ,CAAC,aAE1CgmB,EAAWz4C,EAAS,GAAI9K,GAM5B,OAJIoB,IACFmiD,EAAWp4C,KAAKg5C,mBAAmB/iD,EAAUmiD,IAGxC9B,EAAQhzB,QAAQ5kB,cAAcu6B,EAAWmf,IAGlD/B,EAAac,EAAe,KAAM,CAAC,CACjC7hD,IAAK,YAuBLqwB,IAAK,SAAa0vB,GAChBpc,EAAUoc,UAAYA,MAInB8B,EAjMe,CAkMtBb,EAAQhzB,QAAQ2V,WAAY8D,EAAOj+B,UAAY,CAC/ComB,KAAMqxB,EAAYjzB,QAAQrkB,OAC1Bu5C,eAAgBjC,EAAYjzB,QAAQrkB,OACpChJ,SAAUsgD,EAAYjzB,QAAQlkB,UAAU,CAACm3C,EAAYjzB,QAAQjkB,QAAQk3C,EAAYjzB,QAAQ7tB,MAAO8gD,EAAYjzB,QAAQ7tB,OACpH8jD,aAAchD,EAAYjzB,QAAQvkB,OAClCy6C,MAAOjD,EAAYjzB,QAAQtkB,KAC3By6C,wBAAyBlD,EAAYjzB,QAAQtkB,KAC7C05C,eAAgBnC,EAAYjzB,QAAQrkB,OACpCtB,KAAM44C,EAAYjzB,QAAQjkB,QAAQk3C,EAAYjzB,QAAQrkB,QACtDwtC,KAAM8J,EAAYjzB,QAAQjkB,QAAQk3C,EAAYjzB,QAAQrkB,QACtDy6C,SAAUnD,EAAYjzB,QAAQjkB,QAAQk3C,EAAYjzB,QAAQrkB,QAC1D06C,oBAAqBpD,EAAYjzB,QAAQnkB,KACzCkuB,OAAQkpB,EAAYjzB,QAAQjkB,QAAQk3C,EAAYjzB,QAAQrkB,QACxD9B,MAAOo5C,EAAYjzB,QAAQjkB,QAAQk3C,EAAYjzB,QAAQrkB,QACvD8xC,MAAOwF,EAAYjzB,QAAQvkB,OAC3Bu5C,gBAAiB/B,EAAYjzB,QAAQrkB,OACrC26C,cAAerD,EAAYjzB,QAAQvkB,QAClCg+B,EAAOx9B,aAAe,CACvBi6C,OAAO,EACPC,yBAAyB,GACxB1c,EAAO8c,KAAO5gB,EAAU4gB,KAAM9c,EAAO+c,OAAS,WAC/C,IAAIC,EAAc9gB,EAAU6gB,SAmB5B,OAjBKC,IAEHA,GAAc,EAAIrD,EAAaM,kBAAkB,CAC/CgD,QAAS,GACTxB,eAAgB,GAChBiB,yBAAyB,EACzBf,eAAgB,GAChBuB,SAAU,GACVC,SAAU,GACVC,aAAc,GACdC,WAAY,GACZC,UAAW,GACXtJ,MAAO,GACPuH,gBAAiB,MAIdyB,GACN/c,GASLia,EAAaqD,aAAerD,EAAa6C,OAEzC/nD,EAAQ,GAAUklD,G,oBChWlBllD,EAAQO,YAAa,EACCP,EAAQwoD,gBAAkB,CAC9ChC,KAAM,iBACNE,KAAM,iBACNJ,MAAO,mBAHT,IAKId,EAAYxlD,EAAQwlD,UAAY,CAClCiD,KAAM,OACNjC,KAAM,OACNkC,KAAM,OACNhC,KAAM,OACNY,KAAM,OACNC,KAAM,OACN7B,SAAU,WACVD,OAAQ,SACRG,MAAO,QACPU,MAAO,SAiBLqC,GAfkB3oD,EAAQ4oD,gBAAkB/nD,OAAO+H,KAAK48C,GAAWrhD,KAAI,SAAUvC,GACnF,OAAO4jD,EAAU5jD,MAEE5B,EAAQ6oD,eAAiB,CAC5CC,QAAS,UACTC,SAAU,UACVC,KAAM,OACNC,UAAW,aACXC,WAAY,YACZC,UAAW,WACXC,KAAM,OACNC,SAAU,WACVC,IAAK,MACLC,IAAK,OAEavpD,EAAQ2oD,cAAgB,CAC1Ca,UAAW,YACXztB,QAAS,UACT0tB,MAAO,YACPC,gBAAiB,kBACjBC,YAAa,cACb,aAAc,YACdC,SAAU,WACVC,SAAU,aAEO7pD,EAAQ8pD,aAAe,CACxCC,cAAe,eACfC,MAAO,QACPC,0BAA2B,0BAC3BC,uBAAwB,sBACxBC,eAAgB,iBAECnqD,EAAQoqD,aAAevpD,OAAO+H,KAAK+/C,GAAetlD,QAAO,SAAUmG,EAAKjG,GAEzF,OADAiG,EAAIm/C,EAAcplD,IAAQA,EACnBiG,IACN,IACqBxJ,EAAQqqD,kBAAoB,CAAC7E,EAAUE,SAAUF,EAAUC,OAAQD,EAAUI,OAC9E5lD,EAAQsqD,iBAAmB,qB,sBCvDlDtqD,EAAQO,YAAa,EACrBP,EAAQ4K,KAAO5K,EAAQuqD,sBAAwBvqD,EAAQ+kD,mBAAqB/kD,EAAQilD,iBAAmBjlD,EAAQglD,wBAA0BhlD,EAAQqnD,uCAAoCh9C,EAErL,IAAId,EAA4B,mBAAX5I,QAAoD,iBAApBA,OAAOC,SAAwB,SAAU4I,GAC5F,cAAcA,GACZ,SAAUA,GACZ,OAAOA,GAAyB,mBAAX7I,QAAyB6I,EAAI7H,cAAgBhB,QAAU6I,IAAQ7I,OAAOY,UAAY,gBAAkBiI,GAGvHoE,EAAW/M,OAAOiM,QAAU,SAAUe,GACxC,IAAK,IAAIzN,EAAI,EAAGA,EAAIgK,UAAUjK,OAAQC,IAAK,CACzC,IAAI0N,EAAS1D,UAAUhK,GAEvB,IAAK,IAAImD,KAAOuK,EACVjN,OAAOU,UAAUwM,eAAetM,KAAKqM,EAAQvK,KAC/CsK,EAAOtK,GAAOuK,EAAOvK,IAK3B,OAAOsK,GAKL02C,EAAUxa,EAFD,EAAQ,QAMjBygB,EAAiBzgB,EAFD,EAAQ,QAIxB6a,EAAmB,EAAQ,OAE/B,SAAS7a,EAAuBvgC,GAC9B,OAAOA,GAAOA,EAAIjJ,WAAaiJ,EAAM,CACnC+nB,QAAS/nB,GAIb,IAoKMihD,EApKF/C,EAA0B,SAAiCjgD,GAC7D,IAAIo3B,IAASz0B,UAAUjK,OAAS,QAAsBkK,IAAjBD,UAAU,KAAmBA,UAAU,GAE5E,OAAe,IAAXy0B,EACKljB,OAAOlU,GAGTkU,OAAOlU,GAAKO,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,UAAUA,QAAQ,KAAM,WAG1H0iD,EAAwB,SAA+BC,GACzD,IAAIC,EAAiBC,EAAqBF,EAAW/F,EAAiBY,UAAUc,OAC5EwE,EAAoBD,EAAqBF,EAAW/F,EAAiBkF,aAAaK,gBAEtF,GAAIW,GAAqBF,EAEvB,OAAOE,EAAkB9iD,QAAQ,OAAO,WACtC,OAAO4iD,KAIX,IAAIG,EAAwBF,EAAqBF,EAAW/F,EAAiBkF,aAAaC,eAC1F,OAAOa,GAAkBG,QAAyB1gD,GAGhD2gD,EAAyB,SAAgCL,GAC3D,OAAOE,EAAqBF,EAAW/F,EAAiBkF,aAAaI,yBAA2B,cAG9Fe,EAA6B,SAAoCC,EAASP,GAC5E,OAAOA,EAAUh5C,QAAO,SAAU7O,GAChC,YAAiC,IAAnBA,EAAMooD,MACnB/mD,KAAI,SAAUrB,GACf,OAAOA,EAAMooD,MACZ7nD,QAAO,SAAU8nD,EAAUC,GAC5B,OAAOx9C,EAAS,GAAIu9C,EAAUC,KAC7B,KAGDC,EAA0B,SAAiCC,EAAmBX,GAChF,OAAOA,EAAUh5C,QAAO,SAAU7O,GAChC,YAAyD,IAA3CA,EAAM8hD,EAAiBY,UAAUiD,SAC9CtkD,KAAI,SAAUrB,GACf,OAAOA,EAAM8hD,EAAiBY,UAAUiD,SACvC/gC,UAAUrkB,QAAO,SAAUkoD,EAAkBrgD,GAC9C,IAAKqgD,EAAiBprD,OAGpB,IAFA,IAAIyI,EAAO/H,OAAO+H,KAAKsC,GAEd9K,EAAI,EAAGA,EAAIwI,EAAKzI,OAAQC,IAAK,CACpC,IACIorD,EADe5iD,EAAKxI,GACiB62B,cAEzC,IAA0D,IAAtDq0B,EAAkB3lD,QAAQ6lD,IAAiCtgD,EAAIsgD,GACjE,OAAOD,EAAiB9mD,OAAOyG,GAKrC,OAAOqgD,IACN,KAGDE,EAAuB,SAA8BC,EAASJ,EAAmBX,GAEnF,IAAIgB,EAAmB,GACvB,OAAOhB,EAAUh5C,QAAO,SAAU7O,GAChC,QAAIxC,MAAMG,QAAQqC,EAAM4oD,WAIM,IAAnB5oD,EAAM4oD,IACf9gD,EAAK,WAAa8gD,EAAU,mDAAwDniD,EAAQzG,EAAM4oD,IAAY,MAGzG,MACNvnD,KAAI,SAAUrB,GACf,OAAOA,EAAM4oD,MACZhkC,UAAUrkB,QAAO,SAAUuoD,EAAcC,GAC1C,IAAIC,EAAmB,GACvBD,EAAal6C,QAAO,SAAUzG,GAI5B,IAHA,IAAI6gD,OAAsB,EACtBnjD,EAAO/H,OAAO+H,KAAKsC,GAEd9K,EAAI,EAAGA,EAAIwI,EAAKzI,OAAQC,IAAK,CACpC,IAAI4rD,EAAepjD,EAAKxI,GACpBorD,EAAwBQ,EAAa/0B,eAEiB,IAAtDq0B,EAAkB3lD,QAAQ6lD,IAAmCO,IAAwBnH,EAAiBiE,eAAeS,KAAkD,cAA3Cp+C,EAAI6gD,GAAqB90B,eAAoCu0B,IAA0B5G,EAAiBiE,eAAeS,KAAoD,eAA7Cp+C,EAAIsgD,GAAuBv0B,gBACvR80B,EAAsBP,IAIyB,IAA7CF,EAAkB3lD,QAAQqmD,IAAyBA,IAAiBpH,EAAiBiE,eAAeK,YAAc8C,IAAiBpH,EAAiBiE,eAAeE,UAAYiD,IAAiBpH,EAAiBiE,eAAeM,YAClO4C,EAAsBC,GAI1B,IAAKD,IAAwB7gD,EAAI6gD,GAC/B,OAAO,EAGT,IAAIvoD,EAAQ0H,EAAI6gD,GAAqB90B,cAUrC,OARK00B,EAAiBI,KACpBJ,EAAiBI,GAAuB,IAGrCD,EAAiBC,KACpBD,EAAiBC,GAAuB,KAGrCJ,EAAiBI,GAAqBvoD,KACzCsoD,EAAiBC,GAAqBvoD,IAAS,GACxC,MAIRkkB,UAAUhhB,SAAQ,SAAUwE,GAC7B,OAAO0gD,EAAazkD,KAAK+D,MAK3B,IAFA,IAAItC,EAAO/H,OAAO+H,KAAKkjD,GAEd1rD,EAAI,EAAGA,EAAIwI,EAAKzI,OAAQC,IAAK,CACpC,IAAI4rD,EAAepjD,EAAKxI,GACpB6rD,GAAW,EAAIzB,EAAej5B,SAAS,GAAIo6B,EAAiBK,GAAeF,EAAiBE,IAChGL,EAAiBK,GAAgBC,EAGnC,OAAOL,IACN,IAAIlkC,WAGLmjC,EAAuB,SAA8BF,EAAWp6B,GAClE,IAAK,IAAInwB,EAAIuqD,EAAUxqD,OAAS,EAAGC,GAAK,EAAGA,IAAK,CAC9C,IAAI0C,EAAQ6nD,EAAUvqD,GAEtB,GAAI0C,EAAMiL,eAAewiB,GACvB,OAAOztB,EAAMytB,GAIjB,OAAO,MAqBL27B,GACEzB,EAAQ70C,KAAKgG,MACV,SAAUo9B,GACf,IAAIjI,EAAcn7B,KAAKgG,MAEnBm1B,EAAc0Z,EAAQ,IACxBA,EAAQ1Z,EACRiI,EAASjI,IAETtN,YAAW,WACTyoB,EAAYlT,KACX,KAKLmT,EAAc,SAAqBx9C,GACrC,OAAO62B,aAAa72B,IAGlB47C,EAA0C,oBAAXjyB,OAAyBA,OAAOiyB,uBAAyBjyB,OAAO8zB,6BAA+B9zB,OAAO+zB,0BAA4BH,EAAc,EAAAlK,EAAOuI,uBAAyB2B,EAC/MI,EAAyC,oBAAXh0B,OAAyBA,OAAOg0B,sBAAwBh0B,OAAOi0B,4BAA8Bj0B,OAAOk0B,yBAA2BL,EAAc,EAAAnK,EAAOsK,sBAAwBH,EAE1MvhD,EAAO,SAAcwnC,GACvB,OAAOznC,SAAmC,mBAAjBA,QAAQC,MAAuBD,QAAQC,KAAKwnC,IAGnEqa,EAAkB,KAmBlBC,EAAmB,SAA0BC,EAAUpxB,GACzD,IAAI0sB,EAAU0E,EAAS1E,QACnBxB,EAAiBkG,EAASlG,eAC1BE,EAAiBgG,EAAShG,eAC1BuB,EAAWyE,EAASzE,SACpBC,EAAWwE,EAASxE,SACpBC,EAAeuE,EAASvE,aACxBR,EAAsB+E,EAAS/E,oBAC/BS,EAAasE,EAAStE,WACtBC,EAAYqE,EAASrE,UACrBtJ,EAAQ2N,EAAS3N,MACjBuH,EAAkBoG,EAASpG,gBAC/BqG,EAAiBhI,EAAiBY,UAAUgB,KAAMC,GAClDmG,EAAiBhI,EAAiBY,UAAUkB,KAAMC,GAClDkG,EAAY7N,EAAOuH,GACnB,IAAIuG,EAAa,CACf7E,QAAS8E,EAAWnI,EAAiBY,UAAUiD,KAAMR,GACrDC,SAAU6E,EAAWnI,EAAiBY,UAAU8B,KAAMY,GACtDC,SAAU4E,EAAWnI,EAAiBY,UAAU+B,KAAMY,GACtDC,aAAc2E,EAAWnI,EAAiBY,UAAUE,SAAU0C,GAC9DC,WAAY0E,EAAWnI,EAAiBY,UAAUC,OAAQ4C,GAC1DC,UAAWyE,EAAWnI,EAAiBY,UAAUI,MAAO0C,IAEtD0E,EAAY,GACZC,EAAc,GAClBpsD,OAAO+H,KAAKkkD,GAAYpmD,SAAQ,SAAUwkD,GACxC,IAAIgC,EAAsBJ,EAAW5B,GACjCiC,EAAUD,EAAoBC,QAC9BC,EAAUF,EAAoBE,QAE9BD,EAAQhtD,SACV6sD,EAAU9B,GAAWiC,GAGnBC,EAAQjtD,SACV8sD,EAAY/B,GAAW4B,EAAW5B,GAASkC,YAG/C7xB,GAAMA,IACNqsB,EAAoB+E,EAAUK,EAAWC,IAGvCI,EAAe,SAAsBC,GACvC,OAAOhtD,MAAMG,QAAQ6sD,GAAiBA,EAAcxkD,KAAK,IAAMwkD,GAG7DT,EAAc,SAAqB7N,EAAO3S,QACvB,IAAV2S,GAAyBtmB,SAASsmB,QAAUA,IACrDtmB,SAASsmB,MAAQqO,EAAarO,IAGhC4N,EAAiBhI,EAAiBY,UAAUc,MAAOja,IAGjDugB,EAAmB,SAA0BlB,EAASrf,GACxD,IAAIkhB,EAAa70B,SAASoD,qBAAqB4vB,GAAS,GAExD,GAAK6B,EAAL,CASA,IALA,IAAIC,EAAwBD,EAAWE,aAAa7I,EAAiB0F,kBACjEoD,EAAmBF,EAAwBA,EAAsBlmD,MAAM,KAAO,GAC9EqmD,EAAqB,GAAGlpD,OAAOipD,GAC/BE,EAAgB/sD,OAAO+H,KAAKyjC,GAEvBjsC,EAAI,EAAGA,EAAIwtD,EAAcztD,OAAQC,IAAK,CAC7C,IAAIytD,EAAYD,EAAcxtD,GAC1BoD,EAAQ6oC,EAAWwhB,IAAc,GAEjCN,EAAWE,aAAaI,KAAerqD,GACzC+pD,EAAWpxB,aAAa0xB,EAAWrqD,IAGQ,IAAzCkqD,EAAiB/nD,QAAQkoD,IAC3BH,EAAiBvmD,KAAK0mD,GAGxB,IAAIC,EAAcH,EAAmBhoD,QAAQkoD,IAExB,IAAjBC,GACFH,EAAmB7mD,OAAOgnD,EAAa,GAI3C,IAAK,IAAI/wB,EAAK4wB,EAAmBxtD,OAAS,EAAG48B,GAAM,EAAGA,IACpDwwB,EAAW/W,gBAAgBmX,EAAmB5wB,IAG5C2wB,EAAiBvtD,SAAWwtD,EAAmBxtD,OACjDotD,EAAW/W,gBAAgBoO,EAAiB0F,kBACnCiD,EAAWE,aAAa7I,EAAiB0F,oBAAsBsD,EAAc9kD,KAAK,MAC3FykD,EAAWpxB,aAAayoB,EAAiB0F,iBAAkBsD,EAAc9kD,KAAK,QAI9EikD,EAAa,SAAoBjpD,EAAMiqD,GACzC,IAAIC,EAAct1B,SAASmD,MAAQnD,SAAS8Z,cAAcoS,EAAiBY,UAAUkD,MACjFuF,EAAWD,EAAYE,iBAAiBpqD,EAAO,IAAM8gD,EAAiB0F,iBAAmB,KACzF8C,EAAU9sD,MAAMiB,UAAUG,MAAMD,KAAKwsD,GACrCd,EAAU,GACVgB,OAAgB,EA0CpB,OAxCIJ,GAAQA,EAAK5tD,QACf4tD,EAAKrnD,SAAQ,SAAUwE,GACrB,IAAIkjD,EAAa11B,SAAS/rB,cAAc7I,GAExC,IAAK,IAAI+pD,KAAa3iD,EACpB,GAAIA,EAAI6C,eAAe8/C,GACrB,GAAIA,IAAcjJ,EAAiBiE,eAAeK,WAChDkF,EAAWzI,UAAYz6C,EAAIy6C,eACtB,GAAIkI,IAAcjJ,EAAiBiE,eAAeE,SACnDqF,EAAWC,WACbD,EAAWC,WAAWxI,QAAU36C,EAAI26C,QAEpCuI,EAAW/xB,YAAY3D,SAAS41B,eAAepjD,EAAI26C,cAEhD,CACL,IAAIriD,OAAkC,IAAnB0H,EAAI2iD,GAA6B,GAAK3iD,EAAI2iD,GAC7DO,EAAWjyB,aAAa0xB,EAAWrqD,GAKzC4qD,EAAWjyB,aAAayoB,EAAiB0F,iBAAkB,QAEvD8C,EAAQmB,MAAK,SAAUC,EAAa7qD,GAEtC,OADAwqD,EAAgBxqD,EACTyqD,EAAWK,YAAYD,MAE9BpB,EAAQtmD,OAAOqnD,EAAe,GAE9BhB,EAAQhmD,KAAKinD,MAKnBhB,EAAQ1mD,SAAQ,SAAUwE,GACxB,OAAOA,EAAIwjD,WAAWC,YAAYzjD,MAEpCiiD,EAAQzmD,SAAQ,SAAUwE,GACxB,OAAO8iD,EAAY3xB,YAAYnxB,MAE1B,CACLkiD,QAASA,EACTD,QAASA,IAITyB,EAAoC,SAA2CviB,GACjF,OAAOxrC,OAAO+H,KAAKyjC,GAAYhpC,QAAO,SAAUoE,EAAKlE,GACnD,IAAI24B,OAAkC,IAApBmQ,EAAW9oC,GAAuBA,EAAM,KAAQ8oC,EAAW9oC,GAAO,IAAO,GAAKA,EAChG,OAAOkE,EAAMA,EAAM,IAAMy0B,EAAOA,IAC/B,KAuBD2yB,EAAuC,SAA8CxiB,GACvF,IAAIyiB,EAAY1kD,UAAUjK,OAAS,QAAsBkK,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,GACpF,OAAOvJ,OAAO+H,KAAKyjC,GAAYhpC,QAAO,SAAUmG,EAAKjG,GAEnD,OADAiG,EAAIo7C,EAAiB+D,cAAcplD,IAAQA,GAAO8oC,EAAW9oC,GACtDiG,IACNslD,IA6CDC,EAAmB,SAA0BjrD,EAAMiqD,EAAMlvB,GAC3D,OAAQ/6B,GACN,KAAK8gD,EAAiBY,UAAUc,MAC9B,MAAO,CACL0I,YAAa,WACX,OAvCuEhQ,EAuC5B+O,EAAK/O,MAvC8B3S,EAuCvB0hB,EAAKxH,iBAnCnD0I,EAAa,CAC5B1rD,IAAKy7C,IACO4F,EAAiB0F,mBAAoB,EAC/CxnD,EAAQ+rD,EAAqCxiB,EADQ4iB,GAElD,CAAC1K,EAAQhzB,QAAQ5kB,cAAci4C,EAAiBY,UAAUc,MAAOxjD,EAAOk8C,IAR7C,IAA6CA,EAAO3S,EAClF4iB,EAMAnsD,GAkCEtB,SAAU,WACR,OA9EkB,SAA+BsC,EAAMk7C,EAAO3S,EAAYxN,GAClF,IAAIqwB,EAAkBN,EAAkCviB,GACpD8iB,EAAiB9B,EAAarO,GAClC,OAAOkQ,EAAkB,IAAMprD,EAAO,IAAM8gD,EAAiB0F,iBAAmB,WAAe4E,EAAkB,IAAMxH,EAAwByH,EAAgBtwB,GAAU,KAAO/6B,EAAO,IAAM,IAAMA,EAAO,IAAM8gD,EAAiB0F,iBAAmB,WAAe5C,EAAwByH,EAAgBtwB,GAAU,KAAO/6B,EAAO,IA2EpTsrD,CAAsBtrD,EAAMiqD,EAAK/O,MAAO+O,EAAKxH,gBAAiB1nB,KAI3E,KAAK+lB,EAAiB4D,gBAAgBhC,KACtC,KAAK5B,EAAiB4D,gBAAgB9B,KACpC,MAAO,CACLsI,YAAa,WACX,OAAOH,EAAqCd,IAE9CvsD,SAAU,WACR,OAAOotD,EAAkCb,KAI/C,QACE,MAAO,CACLiB,YAAa,WACX,OAjDyB,SAAsClrD,EAAMiqD,GAC7E,OAAOA,EAAK5pD,KAAI,SAAU+G,EAAK9K,GAC7B,IAAIivD,EAEAC,IAAaD,EAAa,CAC5B9rD,IAAKnD,IACOwkD,EAAiB0F,mBAAoB,EAAM+E,GAazD,OAZAxuD,OAAO+H,KAAKsC,GAAKxE,SAAQ,SAAUmnD,GACjC,IAAI0B,EAAkB3K,EAAiB+D,cAAckF,IAAcA,EAEnE,GAAI0B,IAAoB3K,EAAiBiE,eAAeK,YAAcqG,IAAoB3K,EAAiBiE,eAAeE,SAAU,CAClI,IAAIyG,EAAUtkD,EAAIy6C,WAAaz6C,EAAI26C,QACnCyJ,EAAUG,wBAA0B,CAClCC,OAAQF,QAGVF,EAAUC,GAAmBrkD,EAAI2iD,MAG9BtJ,EAAQhzB,QAAQ5kB,cAAc7I,EAAMwrD,MA8B9BK,CAA6B7rD,EAAMiqD,IAE5CvsD,SAAU,WACR,OA7FiB,SAA8BsC,EAAMiqD,EAAMlvB,GACnE,OAAOkvB,EAAK1qD,QAAO,SAAUoE,EAAKyD,GAChC,IAAI0kD,EAAgB/uD,OAAO+H,KAAKsC,GAAKyG,QAAO,SAAUk8C,GACpD,QAASA,IAAcjJ,EAAiBiE,eAAeK,YAAc2E,IAAcjJ,EAAiBiE,eAAeE,aAClH1lD,QAAO,SAAU2J,EAAQ6gD,GAC1B,IAAI3xB,OAAiC,IAAnBhxB,EAAI2iD,GAA6BA,EAAYA,EAAY,KAAQnG,EAAwBx8C,EAAI2iD,GAAYhvB,GAAU,IACrI,OAAO7xB,EAASA,EAAS,IAAMkvB,EAAOA,IACrC,IACC2zB,EAAa3kD,EAAIy6C,WAAaz6C,EAAI26C,SAAW,GAC7CiK,GAAsE,IAAtDlL,EAAiByF,kBAAkB1kD,QAAQ7B,GAC/D,OAAO2D,EAAM,IAAM3D,EAAO,IAAM8gD,EAAiB0F,iBAAmB,WAAesF,GAAiBE,EAAgB,KAAO,IAAMD,EAAa,KAAO/rD,EAAO,OAC3J,IAkFYisD,CAAqBjsD,EAAMiqD,EAAMlvB,OAmClD7+B,EAAQqnD,kCA1GgC,SAA2CvkD,GACjF,IAAIktD,EAAiB5lD,UAAUjK,OAAS,QAAsBkK,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,GACzF,OAAOvJ,OAAO+H,KAAK9F,GAAOO,QAAO,SAAUmG,EAAKjG,GAE9C,OADAiG,EAAIo7C,EAAiBwF,aAAa7mD,IAAQA,GAAOT,EAAMS,GAChDiG,IACNwmD,IAsGLhwD,EAAQglD,wBApTsB,SAAiC2H,GACzDF,GACFH,EAAqBG,GAGnBE,EAASlF,MACXgF,EAAkBlC,GAAsB,WACtCmC,EAAiBC,GAAU,WACzBF,EAAkB,YAItBC,EAAiBC,GACjBF,EAAkB,OAwStBzsD,EAAQilD,iBA/Be,SAA0Bj8C,GAC/C,IAAIi/C,EAAUj/C,EAAKi/C,QACfxB,EAAiBz9C,EAAKy9C,eACtB5nB,EAAS71B,EAAK61B,OACd8nB,EAAiB39C,EAAK29C,eACtBuB,EAAWl/C,EAAKk/C,SAChBC,EAAWn/C,EAAKm/C,SAChBC,EAAep/C,EAAKo/C,aACpBC,EAAar/C,EAAKq/C,WAClBC,EAAYt/C,EAAKs/C,UACjB2H,EAAajnD,EAAKg2C,MAClBA,OAAuB30C,IAAf4lD,EAA2B,GAAKA,EACxC1J,EAAkBv9C,EAAKu9C,gBAC3B,MAAO,CACLpzB,KAAM47B,EAAiBnK,EAAiBY,UAAUiD,KAAMR,EAASppB,GACjE4nB,eAAgBsI,EAAiBnK,EAAiB4D,gBAAgBhC,KAAMC,EAAgB5nB,GACxF8nB,eAAgBoI,EAAiBnK,EAAiB4D,gBAAgB9B,KAAMC,EAAgB9nB,GACxFjzB,KAAMmjD,EAAiBnK,EAAiBY,UAAU8B,KAAMY,EAAUrpB,GAClE6b,KAAMqU,EAAiBnK,EAAiBY,UAAU+B,KAAMY,EAAUtpB,GAClE8oB,SAAUoH,EAAiBnK,EAAiBY,UAAUE,SAAU0C,EAAcvpB,GAC9EvD,OAAQyzB,EAAiBnK,EAAiBY,UAAUC,OAAQ4C,EAAYxpB,GACxEzzB,MAAO2jD,EAAiBnK,EAAiBY,UAAUI,MAAO0C,EAAWzpB,GACrEmgB,MAAO+P,EAAiBnK,EAAiBY,UAAUc,MAAO,CACxDtH,MAAOA,EACPuH,gBAAiBA,GAChB1nB,KAOP7+B,EAAQ+kD,mBArWiB,SAA4B4F,GACnD,MAAO,CACL1C,QAASoD,EAAwB,CAACzG,EAAiBiE,eAAeG,MAAO2B,GACzElE,eAAgBwE,EAA2BrG,EAAiB4D,gBAAgBhC,KAAMmE,GAClFlD,MAAOoD,EAAqBF,EAAW/F,EAAiBkF,aAAaE,OACrEnrB,OAAQgsB,EAAqBF,EAAW/F,EAAiBkF,aAAaG,2BACtEtD,eAAgBsE,EAA2BrG,EAAiB4D,gBAAgB9B,KAAMiE,GAClFzC,SAAUuD,EAAqB7G,EAAiBY,UAAU8B,KAAM,CAAC1C,EAAiBiE,eAAeS,IAAK1E,EAAiBiE,eAAeG,MAAO2B,GAC7IxC,SAAUsD,EAAqB7G,EAAiBY,UAAU+B,KAAM,CAAC3C,EAAiBiE,eAAeO,KAAMxE,EAAiBiE,eAAeC,QAASlE,EAAiBiE,eAAeI,UAAWrE,EAAiBiE,eAAeQ,SAAUzE,EAAiBiE,eAAeM,WAAYwB,GACjRvC,aAAcqD,EAAqB7G,EAAiBY,UAAUE,SAAU,CAACd,EAAiBiE,eAAeK,YAAayB,GACtH/C,oBAAqBoD,EAAuBL,GAC5CtC,WAAYoD,EAAqB7G,EAAiBY,UAAUC,OAAQ,CAACb,EAAiBiE,eAAeU,IAAK3E,EAAiBiE,eAAeK,YAAayB,GACvJrC,UAAWmD,EAAqB7G,EAAiBY,UAAUI,MAAO,CAAChB,EAAiBiE,eAAeE,UAAW4B,GAC9G3L,MAAO0L,EAAsBC,GAC7BpE,gBAAiB0E,EAA2BrG,EAAiB4D,gBAAgBlC,MAAOqE,KAwVxF3qD,EAAQuqD,sBAAwBA,EAChCvqD,EAAQ4K,KAAOA,G,mCC7hBf,SAASslD,EAAgBC,GACvB,OAAOA,GAAoB,iBAAPA,GAAmB,YAAaA,EAAKA,EAAY,QAAIA,EAG3E,IAAI7jD,EAAQ,EAAQ,OAEhB8jD,EAAiBF,EAAgB5jD,GAEjCi3C,EAAuB2M,EAAgB,EAAQ,QAE/CG,EAAeH,EAAgB,EAAQ,QAE3C,SAAS3vB,EAAgBnF,EAAUoF,GACjC,KAAMpF,aAAoBoF,GACxB,MAAM,IAAIz/B,UAAU,qCAIxB,SAAS4gC,EAA2B5H,EAAMt4B,GACxC,IAAKs4B,EACH,MAAM,IAAI8H,eAAe,6DAG3B,OAAOpgC,GAAyB,iBAATA,GAAqC,mBAATA,EAA8Bs4B,EAAPt4B,EAkH5E1B,EAAOC,QA/FP,SAAwB+kD,EAAoBuL,EAA2BrL,GACrE,GAAkC,mBAAvBF,EACT,MAAM,IAAIt8C,MAAM,iDAGlB,GAAyC,mBAA9B6nD,EACT,MAAM,IAAI7nD,MAAM,wDAGlB,QAAgC,IAArBw8C,GAAgE,mBAArBA,EACpD,MAAM,IAAIx8C,MAAM,mEAOlB,OAAO,SAAc8nD,GACnB,GAAgC,mBAArBA,EACT,MAAM,IAAI9nD,MAAM,sDAGlB,IAAI+nD,EAAmB,GACnBjoB,OAAQ,EAEZ,SAASkoB,IACPloB,EAAQwc,EAAmByL,EAAiBrsD,KAAI,SAAUi3B,GACxD,OAAOA,EAASt4B,UAGd4tD,EAAWpN,UACbgN,EAA0B/nB,GACjB0c,IACT1c,EAAQ0c,EAAiB1c,IAI7B,IAAImoB,EAAa,SAAUzuB,GAGzB,SAASyuB,IAGP,OAFAnwB,EAAgBtyB,KAAMyiD,GAEf/uB,EAA2B1zB,KAAMg0B,EAAWj0B,MAAMC,KAAM7D,YA2CjE,OAtGN,SAAmB83B,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIphC,UAAU,kEAAoEohC,GAG1FD,EAAS3gC,UAAYV,OAAOy+B,OAAO6C,GAAcA,EAAW5gC,UAAW,CACrEI,YAAa,CACX6B,MAAO0+B,EACP1M,YAAY,EACZoL,UAAU,EACVD,cAAc,KAGdwB,IAAYthC,OAAOigC,eAAiBjgC,OAAOigC,eAAeoB,EAAUC,GAAcD,EAASnB,UAAYoB,GAyCvGC,CAAUsuB,EAAYzuB,GAStByuB,EAAW5I,KAAO,WAChB,OAAOvf,GAITmoB,EAAW3I,OAAS,WAClB,GAAI2I,EAAWpN,UACb,MAAM,IAAI76C,MAAM,oFAGlB,IAAIkoD,EAAgBpoB,EAGpB,OAFAA,OAAQl+B,EACRmmD,EAAmB,GACZG,GAGTD,EAAWnvD,UAAU8jD,sBAAwB,SAA+BpZ,GAC1E,OAAQokB,EAAapkB,EAAWh+B,KAAKnL,QAGvC4tD,EAAWnvD,UAAUqvD,mBAAqB,WACxCJ,EAAiBrpD,KAAK8G,MACtBwiD,KAGFC,EAAWnvD,UAAUsvD,mBAAqB,WACxCJ,KAGFC,EAAWnvD,UAAUuvD,qBAAuB,WAC1C,IAAIntD,EAAQ6sD,EAAiB7qD,QAAQsI,MACrCuiD,EAAiB1pD,OAAOnD,EAAO,GAC/B8sD,KAGFC,EAAWnvD,UAAU08C,OAAS,WAC5B,OAAOmS,EAAezjD,cAAc4jD,EAAkBtiD,KAAKnL,QAGtD4tD,EAjDQ,CAkDfpkD,EAAM46B,WAIR,OAFAwpB,EAAWpQ,YAAc,cA5E3B,SAAwBiQ,GACtB,OAAOA,EAAiBjQ,aAAeiQ,EAAiB3uD,MAAQ,YA2EvBmvD,CAAeR,GAAoB,IAC5EG,EAAWpN,UAAYC,EAAqBD,UACrCoN,K,kBCtIX3wD,EAAOC,QAAU,SAAsBgxD,EAAMC,EAAMC,EAASC,GAC1D,IAAI9xB,EAAM6xB,EAAUA,EAAQzvD,KAAK0vD,EAAgBH,EAAMC,QAAQ,EAE/D,QAAY,IAAR5xB,EACF,QAASA,EAGX,GAAI2xB,IAASC,EACX,OAAO,EAGT,GAAoB,iBAATD,IAAsBA,GAAwB,iBAATC,IAAsBA,EACpE,OAAO,EAGT,IAAIG,EAAQvwD,OAAO+H,KAAKooD,GACpBK,EAAQxwD,OAAO+H,KAAKqoD,GAExB,GAAIG,EAAMjxD,SAAWkxD,EAAMlxD,OACzB,OAAO,EAKT,IAFA,IAAImxD,EAAkBzwD,OAAOU,UAAUwM,eAAejI,KAAKmrD,GAElDM,EAAM,EAAGA,EAAMH,EAAMjxD,OAAQoxD,IAAO,CAC3C,IAAIhuD,EAAM6tD,EAAMG,GAEhB,IAAKD,EAAgB/tD,GACnB,OAAO,EAGT,IAAIiuD,EAASR,EAAKztD,GACdkuD,EAASR,EAAK1tD,GAGlB,IAAY,KAFZ87B,EAAM6xB,EAAUA,EAAQzvD,KAAK0vD,EAAgBK,EAAQC,EAAQluD,QAAO,SAEvC,IAAR87B,GAAkBmyB,IAAWC,EAChD,OAAO,EAIX,OAAO,I,kDCvBT,IAhBoB,SAAC,GAAwC,IAAtCzS,EAAqC,EAArCA,MAAO0S,EAA8B,EAA9BA,UAAWC,EAAmB,EAAnBA,aAEvC,OACE,2BACGD,GAGC,yBAAOxhB,UAAQ,EAAC5kC,IAAKomD,EAAW1S,MAAOA,GACpC2S,GAAgB,yBAAOpgC,SAAO,EAACqgC,KAAK,WAAWC,QAAQ,KAAKvmD,IAAKqmD,IADpE,oD,uECRFG,E,+DCgBN,EAZkB,SAAC,GAAiC,IAA/BC,EAA8B,EAA9BA,UAAWj/C,EAAmB,EAAnBA,aACxB0hB,EAASu9B,IAAaC,QAAYC,QAAcF,GAAYj/C,GAAcpK,MAE1EwpD,GAAapgC,yBACjBigC,EAAUvpD,MAAM4G,IAChB,CAAE4E,SAAU,KACZlB,EAAaq/C,QAGf,OAAO39B,GAAU,uBAAKlpB,IAAK4mD,EAAW5mD,IAAK8mD,IAAKL,EAAUK,KAAO,M,sBDd/DC,GACEP,EAAiB,SAAuB70B,EAAGuB,GAW7C,OAVAszB,EAAiBjxD,OAAOigC,gBAAkB,CACxCC,UAAW,cACAzgC,OAAS,SAAU28B,EAAGuB,GACjCvB,EAAE8D,UAAYvC,IACX,SAAUvB,EAAGuB,GAChB,IAAK,IAAI7M,KAAK6M,EACRA,EAAEzwB,eAAe4jB,KAAIsL,EAAEtL,GAAK6M,EAAE7M,MAIhBsL,EAAGuB,IAGpB,SAAUvB,EAAGuB,GAGlB,SAAS8zB,IACPrkD,KAAKtM,YAAcs7B,EAHrB60B,EAAe70B,EAAGuB,GAMlBvB,EAAE17B,UAAkB,OAANi9B,EAAa39B,OAAOy+B,OAAOd,IAAM8zB,EAAG/wD,UAAYi9B,EAAEj9B,UAAW,IAAI+wD,KAI/E9gC,EAAoC,WAatC,OAZAA,EAAW3wB,OAAOiM,QAAU,SAAU2kB,GACpC,IAAK,IAAIC,EAAGtxB,EAAI,EAAGkB,EAAI8I,UAAUjK,OAAQC,EAAIkB,EAAGlB,IAG9C,IAAK,IAAIuxB,KAFTD,EAAItnB,UAAUhK,GAGRS,OAAOU,UAAUwM,eAAetM,KAAKiwB,EAAGC,KAAIF,EAAEE,GAAKD,EAAEC,IAI7D,OAAOF,IAGOzjB,MAAMC,KAAM7D,YAG1BwnB,EAAgC,SAAUF,EAAGG,GAC/C,IAAIJ,EAAI,GAER,IAAK,IAAIE,KAAKD,EACR7wB,OAAOU,UAAUwM,eAAetM,KAAKiwB,EAAGC,IAAME,EAAElsB,QAAQgsB,GAAK,IAAGF,EAAEE,GAAKD,EAAEC,IAG/E,GAAS,MAALD,GAAqD,mBAAjC7wB,OAAOqvB,sBAA2C,KAAI9vB,EAAI,EAAb,IAAgBuxB,EAAI9wB,OAAOqvB,sBAAsBwB,GAAItxB,EAAIuxB,EAAExxB,OAAQC,IAClIyxB,EAAElsB,QAAQgsB,EAAEvxB,IAAM,IAAGqxB,EAAEE,EAAEvxB,IAAMsxB,EAAEC,EAAEvxB,KAEzC,OAAOqxB,GAsMT,EA9LA,SAAU8Q,GAGR,SAASgwB,EAAezvD,GACtB,IAAI0/B,EAAQD,EAAO9gC,KAAKwM,KAAMnL,IAAUmL,KA+DxC,OA7DAu0B,EAAMwd,QAAU,KAEhBxd,EAAMgwB,OAAS,WACThwB,EAAMwd,SACRxd,EAAMwd,QAAQwS,UAIlBhwB,EAAMiwB,mBAAqB,SAAUvqB,GAC/B1F,EAAM1/B,MAAM4vD,WACdlwB,EAAM1/B,MAAM4vD,UAAUxqB,GAGxB1F,EAAMuF,SAAS,CACb4qB,KAAMzqB,EAASyqB,OACd,WACDr6B,OAAOs6B,QAAQC,OAAOz6B,UAElBoK,EAAM1/B,MAAMgwD,eACdtwB,EAAM1/B,MAAMgwD,oBAKlBtwB,EAAMuwB,mBAAqB,WAGzB,IAFA,IAAI9+B,EAAO,GAEF8I,EAAK,EAAGA,EAAK3yB,UAAUjK,OAAQ48B,IACtC9I,EAAK8I,GAAM3yB,UAAU2yB,GAGvByI,aAAahD,EAAMwwB,OAEfxwB,EAAM1/B,MAAMmwD,WACdzwB,EAAM1/B,MAAMmwD,UAAUh/B,IAI1BuO,EAAM0wB,qBAAuB,SAAUxqD,GACrC,IAAIs3C,EAAU,GAgBd,OAfAA,EAAQzJ,QAAU,IAAIhM,SAAQ,SAAUC,EAASqV,GAC/C,IAAItJ,EAAUvO,MAAMt/B,GAAKu/B,MAAK,SAAUC,GACtC,OAAOA,EAASC,UACfF,MAAK,SAAUE,GAChB,OAAOqC,EAAQrC,MACdgrB,OAAM,SAAUvkC,GACjB,OAAOixB,EAAOjxB,MAOhB,OAJAoxB,EAAQwS,OAAS,WACf,OAAO3S,EAAO,IAAIp3C,MAAM,eAGnB8tC,KAEFyJ,GAGTxd,EAAM+F,MAAQ,CACZoqB,KAAM,MAEDnwB,EAwHT,OA1LA6vB,EAAUE,EAAgBhwB,GAqE1BgwB,EAAehxD,UAAU6xD,kBAAoB,WAC3C,IAAI5wB,EAAQv0B,KAERqqB,OAAOs6B,QACT3kD,KAAKolD,WAAWplD,KAAKqlD,eAAerlD,KAAKnL,SAErCmL,KAAKnL,MAAMywD,eAAiB76B,SAAS6Z,eAAe,iCACtDtkC,KAAKslD,eAGPtlD,KAAKulD,WAAWvrB,MAAK,WACnBzF,EAAM6wB,WAAW7wB,EAAM8wB,eAAe9wB,EAAM1/B,aAKlDyvD,EAAehxD,UAAUsvD,mBAAqB,SAAU/qB,GACtD,IAAIpT,EAAKzkB,KAAKnL,MACV4F,EAAMgqB,EAAGhqB,IACT+qD,EAAc/gC,EAAG+gC,YACjBz/C,EAAW0e,EAAG1e,SACd0/C,EAAmBhhC,EAAGghC,iBAEtB5tB,EAAUp9B,MAAQA,GAAOo9B,EAAU2tB,cAAgBA,GAAe3tB,EAAU9xB,WAAaA,GAAY8xB,EAAU4tB,mBAAqBA,IACtIzlD,KAAK+xC,QAAQwS,SACbvkD,KAAKolD,WAAWplD,KAAKqlD,eAAerlD,KAAKnL,UAI7CyvD,EAAehxD,UAAUuvD,qBAAuB,WAC9C7iD,KAAKukD,UAGPD,EAAehxD,UAAU08C,OAAS,WAChC,IAAI0V,EAAM1lD,KAAKnL,MAAM4wD,iBACrB,OAAO,gBAAoBC,EAAKniC,EAAS,GAAIvjB,KAAK2lD,qBAAsB,CACtEnE,wBAAyB,CACvBC,OAAQzhD,KAAKs6B,MAAMoqB,MAAQ,QAKjCJ,EAAehxD,UAAU8xD,WAAa,SAAUQ,GAC9C5lD,KAAK+xC,QAAU/xC,KAAKilD,qBAAqB,qCAAuCW,GAE5E5lD,KAAKnL,MAAMgxD,WACb7lD,KAAKnL,MAAMgxD,YAGb7lD,KAAK+xC,QAAQzJ,QAAQtO,KAAKh6B,KAAKwkD,oBAAoBU,MAAMllD,KAAK8kD,qBAGhER,EAAehxD,UAAUqyD,mBAAqB,WAC5C,IAAIlhC,EAAKzkB,KAAKnL,MACJ4vB,EAAGhqB,IACKgqB,EAAG+gC,YACN/gC,EAAG1e,SACK0e,EAAGghC,iBACVhhC,EAAGohC,UACHphC,EAAGggC,UACChgC,EAAGogC,cACPpgC,EAAGugC,UACJvgC,EAAG0uB,SACC1uB,EAAG6gC,aAGtB,OAFW3hC,EAAOc,EAAI,CAAC,MAAO,cAAe,WAAY,mBAAoB,YAAa,YAAa,gBAAiB,YAAa,WAAY,kBAKnJ6/B,EAAehxD,UAAUgyD,aAAe,WACtC,IAAIQ,EAA6D,IAA7Cz7B,OAAOoY,SAAS0Q,SAASz7C,QAAQ,QAAgBsI,KAAKnL,MAAMs+C,SAAW,GACvF1vB,EAAIgH,SAAS/rB,cAAc,UAC/B+kB,EAAEsK,MAAQtK,EAAE+1B,OAAQ,EACpB/1B,EAAEpmB,IAAMyoD,EAAgB,2CACxBriC,EAAE/iB,GAAK,+BACP,IAAIkvC,EAAOnlB,SAASmlB,KAEhBA,GACFA,EAAKxhB,YAAY3K,IAIrB6gC,EAAehxD,UAAUiyD,SAAW,WAClC,IAAIhxB,EAAQv0B,KAEZ,OAAO,IAAIs8B,SAAQ,SAAUC,IAC3B,SAAUgpB,EAASz5B,GACjBA,EAAKi5B,MAAQ16B,OAAOmL,YAAW,WACzBnL,OAAOs6B,SACTptB,aAAazL,EAAKi5B,OAClBxoB,KAEAgpB,EAASz5B,KAEV,IARL,CASGyI,OAIP+vB,EAAehxD,UAAU+xD,eAAiB,SAAU5gC,GAClD,IAAIhqB,EAAMgqB,EAAGhqB,IACT+qD,EAAc/gC,EAAG+gC,YACjBz/C,EAAW0e,EAAG1e,SAClB,OAAO,KAAa,CAClBtL,IAAKA,EACLsrD,YAAaP,EACbQ,SAA8B,iBAAbjgD,GAAyBA,GAAY,IAAMA,OAAW3J,EACvE6pD,YAAY,KAIhB3B,EAAe/kD,aAAe,CAC5BimD,aAAa,EACbC,iBAAkB,MAClBtS,SAAU,SACVmS,cAAc,GAEThB,EA3LT,CA4LE,iB,oBElOF,EAlBoB,SAAC,GAAsC,IAAD,IAAnC1uD,gBAAmC,aAAjBswD,aAAiB,MAAT,GAAS,EACxD,GAAwBC,cAAS,IAA1BzB,EAAP,KAAa0B,EAAb,KAWA,OADAC,cATmB,WACjBD,EACEE,mBAAqBJ,EAAO,CAC1BK,aAAc3wD,EACd4wD,cAAc,OAKA,CAACN,EAAOtwD,IACxBA,EACK,wBAAM4rD,wBAAyB,CAAEC,OAAQiD,KAE3C,uBAAKlD,wBAAyB,CAAEC,OAAQiD,MCHjD,EAda,SAAC,GAAgC,IAA9B9mD,EAA6B,EAA7BA,KAAM6oD,EAAuB,EAAvBA,OAAQxwD,EAAe,EAAfA,SAEtB2J,IAAS6mD,GAAS,CAAE7mD,OAAQ,SAAU6wC,IAAK,uBAG7Ch2C,EAAMmD,UAAQ,IAElB,OACE,mCAAGA,KAAMnD,GAASmF,GACf3J,I,sBCFDywD,EAAkB,SAAC,GAAc,IAAZjxD,EAAW,EAAXA,KACzB,OAAIA,GAAQA,EAAKkxD,QAAUlxD,EAAKkxD,OAAOhzD,KAC9B,4BAAO8B,EAAKkxD,OAAOhzD,MAErB,kCA4DT,EAzDoB,SAACkR,GACnB,MAAO,CACLxO,MAAO,CAELsH,KAAM,YAAyB,IAAtB1H,EAAqB,EAArBA,SAAUsB,EAAW,EAAXA,KACjB,OACE,gBAAC,EAAD,CAAMqG,KAAMrG,EAAKqG,KAAM6oD,OAAQlvD,EAAKkvD,QACjCxwD,KAKTiH,MAAO,CACL0pD,gBAAiBF,EACjB5C,UAAW,YAAe,IAAZruD,EAAW,EAAXA,KACZ,OAAO,gBAAC,EAAD,CAAWquD,UAAWruD,EAAMoP,aAAcA,KAEnDgiD,WAAY,gBAAGpxD,EAAH,EAAGA,KAAH,OAAc,gBAAC,IAAD,CAAaqB,UAAU,YAAY2D,IAAKhF,EAAKgF,IAAKwnC,UAAQ,KACpF6kB,UAAW,YAAe,IAAZrxD,EAAW,EAAXA,KACZ,OAAKA,EAAKgF,IACH,gBAAC,EAAD,CAAgBA,IAAKhF,EAAKgF,IAAK3D,UAAU,gCAD1B,MAGxBiwD,KAAM,gBAAGtxD,EAAH,EAAGA,KAAH,IAASG,gBAAT,gBACJ,gBAACoxD,EAAD,CAAepxD,SAAUA,EAAUswD,MAAOzwD,EAAKywD,SAEjDe,YAAa,YAAe,IAAD,EAAXxxD,EAAW,EAAXA,KACRyxD,EACJzxD,EAAK0xD,SAAW1xD,EAAK0xD,QAAQ5sD,OAAS9E,EAAK0xD,QAAQ5sD,MAAME,IACrDhF,EAAK0xD,QAAQ5sD,MAAME,IACnB,GACAs2C,EAAK,UAAGt7C,EAAKs7C,aAAR,QAAiB,GAE5B,OAAKmW,GAAYnW,EAEf,yBACE,qBAAGnzC,KAAMspD,GAAUnW,IAHQ,MAOjCqW,cAAe,YAAe,IAAZ3xD,EAAW,EAAXA,KAChB,OACE,gBAAC,IAAD,CACEs7C,MAAOt7C,EAAKs7C,MACZ0S,UAAWhuD,EAAKguD,UAChBC,aAAcjuD,EAAKiuD,gBAIzB2D,gBAAiB,YAAe,IAAZ5xD,EAAW,EAAXA,KAClB,OACE,gBAAC,IAAD,CAAiBs7C,MAAOt7C,EAAKs7C,MAAOuW,oBAAqB7xD,EAAK6xD,0BCjDxE,EAbqB,SAAC,GAA8B,IAA5BvyD,EAA2B,EAA3BA,OAAQ8P,EAAmB,EAAnBA,aACV,MAAhBA,KACFA,EAAe,IACFq/C,OAAS,IAGxB,IAAMqD,EAAoBryD,EAAY2P,GAEtC,OACE,gBAAC,IAAD,eAAkB9P,OAAQA,EAAQG,YAAaqyD,GAAuB1iD,EAAaq/C,W,kDCEvF,IAbwB,SAAC,GAAmC,EAAjCnT,MAAkC,IAA3BuW,EAA0B,EAA1BA,oBAMhC,OACE,uBAAKxwD,UAAU,sBACZwwD,GAAuB,uBAAK9F,wBALxB,CAAEC,OAAQ6F,Q,kFCFRE,EAAkB,SAAC,GAAmC,IAAjCC,EAAgC,EAAhCA,WAAYC,EAAoB,EAApBA,cAE5C,GAAI,oBAAOj9B,SAA0B,CACnC,IAAM4C,EAAS5C,SAAS/rB,cAAc,UAItC,OAHA2uB,EAAOU,OAAQ,EACfV,EAAOhwB,IAAM,0CACbotB,SAASmlB,KAAKxhB,YAAYf,GAExB,uBAAK3sB,GAAG,mBACN,qBAAG5J,UAAU,mBAAmB8G,KAAM6pD,EAAYE,cAAY,OAC3DD,IAOP,OACE,uBAAKhnD,GAAG,mBACN,qBAAG5J,UAAU,mBAAmB8G,KAAM6pD,EAAYE,cAAY,OAC3DD,GAEH,0BAAQ35B,OAAK,EAAC1wB,IAAI,+C,qMCpBnB,SAASuqD,IAAa,IAAD,uBAAN5hC,EAAM,yBAANA,EAAM,gBAC1B,OAAOA,EAAKtiB,OAAO/M,SAASkE,KAAK,KAgB5B,SAASgtD,EAAWnoD,GACzB,MAAM,UAAUA,EAAKy9C,SAAWz9C,GAAhC,IAGK,SAASskD,EAAcnkD,GAAyB,IAAD,aAAxBA,MAAS,CAAEtF,MAAO,KAC9C,IAAMutD,EAAW,CACfvtD,MAAO,CAAEQ,MAAM,UAAA8E,EAAOtF,aAAP,eAAcQ,QAAd,UAAsB8E,EAAOtF,aAA7B,aAAsB,EAAc4G,OAMrD,OAHItB,EAAO2B,OAAMsmD,EAAStmD,KAAO3B,EAAO2B,MACpC3B,EAAO4B,UAASqmD,EAASrmD,QAAU5B,EAAO4B,SAEvCqmD,EA6BF,SAASC,EAA4BC,EAASC,EAAYC,GAE/D,IAAI1+B,EAA8B,MAAtBw+B,EAAQvT,OAAO,GAAauT,EAAQn7B,UAAU,GAAKm7B,EAC/DC,OAAmC,IAAfA,EAA6BA,EAAa,UAC9DC,OAAiC,IAAdA,EAA4BA,EAAY,UAC3D,IAII3+B,EADW,CAHPjL,SAASkL,EAAMqD,UAAU,EAAG,GAAI,IAGpB,IAFZvO,SAASkL,EAAMqD,UAAU,EAAG,GAAI,IAEX,IADrBvO,SAASkL,EAAMqD,UAAU,EAAG,GAAI,IACF,KACrB32B,KAAI,SAACiyD,GACpB,OAAIA,GAAO,OACFA,EAAM,MAER7lD,KAAK8lD,KAAKD,EAAM,MAAS,MAAO,QAGzC,MADQ,MAAS5+B,EAAE,GAAK,MAASA,EAAE,GAAK,MAASA,EAAE,GACxC,KAAQ2+B,EAAYD,EAc1B,SAASI,EAAajd,GAC3B,IAAIkd,EAAehmD,KAAKC,MAAiB,IAAV6oC,EAAiB,KAShD,OANIA,EAAU,EACD,IAAMkd,EAAa/0D,SAAS,IAAI6/C,cAEhCkV,EAAa/0D,SAAS,IAAI6/C,cAMlC,SAASmV,EAAa3oD,GAE3B,QADiB,YAAYhM,KAAKgM,K,2FCzG7B,SAASmkD,EAAYlkD,EAAQgF,GAElC,OADgB2jD,IAAgB3jD,EAAaq/C,QAC9BlpD,MAAM6E,K,kDCOvB,IATyB,SAAC,GAAD,IAAE4oD,EAAF,EAAEA,OAAF,OACvB,2BACE,2CACCA,EAAOvyD,KAAI,SAAA6zB,GAAK,OACf,uBAAKz0B,IAAKy0B,EAAMwB,SAAUxB,EAAMwB,e,iHCItC,SAASm9B,EAAT,GAAsF,IAAvEC,EAAsE,EAAtEA,YAAaC,EAAyD,EAAzDA,KAAMnc,EAAmD,EAAnDA,KAAMoc,EAA6C,EAA7CA,SAAU9X,EAAmC,EAAnCA,MAAO+X,EAA4B,EAA5BA,eAAgBC,EAAY,EAAZA,SACvE,OACE,gBAAC,KAAD,CACEruD,MAAOsuD,EACPhZ,OAAQ,SAAA7V,GACN,IAAM8uB,EAAkBN,GAAgBxuB,EAAK+uB,MAAQ/uB,EAAK+uB,KAAKP,aAAgB,GACzEQ,EAAahvB,EAAK+uB,MAAQ/uB,EAAK+uB,KAAKnY,OAAU,GAC9CqY,EACHjvB,EAAK+uB,MAAQ/uB,EAAK+uB,KAAKvC,QAAUxsB,EAAK+uB,KAAKvC,OAAOhzD,MAAS,4BAExD01D,EACHlvB,EAAK+uB,MAAQ/uB,EAAK+uB,KAAKI,WAAanvB,EAAK+uB,KAAKI,UAAUD,YAAe,GACpEE,EAAUpvB,EAAK+uB,MAAQ/uB,EAAK+uB,KAAKI,WAAanvB,EAAK+uB,KAAKI,UAAUC,QAAW,GAG7EC,EAAYrvB,EAAK+uB,MAAQ/uB,EAAK+uB,KAAKI,WAAanvB,EAAK+uB,KAAKI,UAAUE,UAAa,GACjFC,EAAQtvB,EAAK+uB,MAAQ/uB,EAAK+uB,KAAKI,WAAanvB,EAAK+uB,KAAKI,UAAUG,MAAS,GAEzEC,EACJZ,GAAkBA,EAAevuD,OAC7BwpD,QAAYC,QAAc8E,GAAiBjkD,KACxC/D,MAAM,MACNrG,MACH,GAEAkvD,EAAY5Y,GAASoY,EAE3B,OACE,gBAAC,KAAD,CACE3Q,eAAgBuQ,EAChBrQ,eAAgB,CAAEkQ,QAClB7X,MAAO4Y,EACP/P,cAAe+P,IAAcR,EAAYA,EAA1B,QAA8CA,EAC7D1c,KAAM,CACJ,CACE94C,KAAM,2BACN4tD,QAAS,+CAEX,CACE5tD,KAAM,cACN4tD,QAAS0H,GAEX,CACE3mC,SAAU,WACVi/B,QAASxQ,GAEX,CACEzuB,SAAU,iBACVi/B,QAAS0H,GAEX,CACE3mC,SAAU,UACVi/B,QAAS,WAEX,CACEj/B,SAAU,WACVi/B,QAASmI,GAEX,CACE/1D,KAAM,eACN4tD,QAAS,WAEX,CACE5tD,KAAM,kBACN4tD,QAAS6H,GAEX,CACEz1D,KAAM,gBACN4tD,QAASxQ,GAEX,CACEp9C,KAAM,sBACN4tD,QAAS0H,IAGVzyD,OACCqyD,GAAYA,EAAS32D,OAAS,EAC1B,CACEyB,KAAM,WACN4tD,QAASsH,EAAShuD,KAAK,OAEzB,IAELrE,OAAOi2C,IAGT4c,GACC,0BAAQt7B,OAAO,EAAM1wB,IAAG,+CAAiDksD,IAE1EF,GACC,iKACqIE,EADrI,OAIDC,GACC,0WAAqVC,EAArV,0CASdf,EAAInpD,aAAe,CACjBqpD,KAAM,KACND,YAAa,GACblc,KAAM,GACNoc,SAAU,IAWZ,MAEA,IAAMG,EAAY,a,6FCnIlB,SAASY,EAAmBC,EAAKttB,EAASqV,EAAQkY,EAAOC,EAAQz0D,EAAK00D,GACpE,IACE,IAAIC,EAAOJ,EAAIv0D,GAAK00D,GAChBz0D,EAAQ00D,EAAK10D,MACjB,MAAOw0B,GAEP,YADA6nB,EAAO7nB,GAILkgC,EAAK7pD,KACPm8B,EAAQhnC,GAER+mC,QAAQC,QAAQhnC,GAAOykC,KAAK8vB,EAAOC,GAIxB,SAASG,EAAkBjV,GACxC,OAAO,WACL,IAAInpB,EAAO9rB,KACPgmB,EAAO7pB,UACX,OAAO,IAAImgC,SAAQ,SAAUC,EAASqV,GACpC,IAAIiY,EAAM5U,EAAGl1C,MAAM+rB,EAAM9F,GAEzB,SAAS8jC,EAAMv0D,GACbq0D,EAAmBC,EAAKttB,EAASqV,EAAQkY,EAAOC,EAAQ,OAAQx0D,GAGlE,SAASw0D,EAAOppC,GACdipC,EAAmBC,EAAKttB,EAASqV,EAAQkY,EAAOC,EAAQ,QAASppC,GAGnEmpC,OAAM1tD,O,mCC/BZ,EAAe,IAA0B,uDCGnC+tD,EAAe,SAACt1D,GACpB,OACE,qBACE+K,OAAO,SACP6wC,IAAI,sBACJ7yC,KAAI,4BAA8B/I,EAAMu1D,aAExC,uBACEjtD,MAAO,CAAE4D,OAAQ,QACjBspD,cAAY,OACZC,UAAU,QACVC,cAAY,MACZC,YAAU,kBACVC,KAAK,MACLC,MAAM,6BACNC,QAAQ,cACR7zD,UAAU,8BAEV,wBACE8zD,KAAK,UACL57B,EAAE,wQAGN,wBAAMl4B,UAAU,WAAhB,uBAKA+zD,EAAc,SAACh2D,GACnB,OACE,qBAAG+K,OAAO,SAAS6wC,IAAI,sBAAsB7yC,KAAI,uBAAyB/I,EAAMu1D,aAC9E,uBACEjtD,MAAO,CAAE4D,OAAQ,QACjB2pD,MAAM,6BACNC,QAAQ,cACRN,cAAY,OACZC,UAAU,QACVE,YAAU,YACVC,KAAK,OAEL,wBACEG,KAAK,OACL57B,EAAE,kKAGN,wBAAMl4B,UAAU,WAAhB,gBAKAg0D,EAAe,SAACj2D,GACpB,OACE,qBAAG+K,OAAO,SAAS6wC,IAAI,sBAAsB7yC,KAAM/I,EAAM4F,KACvD,uBACE0C,MAAO,CAAE4D,OAAQ,QACjBspD,cAAY,OACZC,UAAU,QACVC,cAAY,MACZC,YAAU,WACVC,KAAK,MACLC,MAAM,6BACNC,QAAQ,cACR7zD,UAAU,0BAEV,wBACE8zD,KAAK,UACL57B,EAAE,2aACFl4B,UAAU,MAGd,wBAAMA,UAAU,WAAhB,uBAKAi0D,EAAc,SAACl2D,GACnB,OACE,qBACE+K,OAAO,SACP6wC,IAAI,sBACJ7yC,KAAI,gCAAkC/I,EAAMu1D,aAE5C,uBACEjtD,MAAO,CAAE4D,OAAQ,QACjBspD,cAAY,OACZC,UAAU,QACVC,cAAY,MACZC,YAAU,UACVC,KAAK,MACLC,MAAM,6BACNC,QAAQ,cACR7zD,UAAU,yBAEV,wBACE8zD,KAAK,eACL57B,EAAE,4dAGN,wBAAMl4B,UAAU,WAAhB,yBAiBN,EAZe,SAACjC,GACd,IAAMm2D,EAAUn2D,EAAMm2D,SAAW,CAAEnqB,SAAU,GAAIoqB,QAAS,GAAIC,SAAU,GAAIzqB,QAAS,IACrF,OACE,uBAAK3pC,UAAU,mBACZk0D,EAAQnqB,SAAW,gBAACspB,EAAD,CAAcC,YAAaY,EAAQnqB,WAAe,GACrEmqB,EAAQC,QAAU,gBAACJ,EAAD,CAAaT,YAAaY,EAAQC,UAAc,GAClED,EAAQE,SAAW,gBAACJ,EAAD,CAAcrwD,IAAKuwD,EAAQE,WAAe,GAC7DF,EAAQvqB,QAAU,gBAACsqB,EAAD,CAAaX,YAAaY,EAAQvqB,UAAc,KChBzE,EA7FiB,SAAC,GAA+C,IAA7C0qB,EAA4C,EAA5CA,YAAaC,EAA+B,EAA/BA,gBAAiBC,EAAc,EAAdA,QAC7B,MAAfF,IAAqBA,GAAc,GAIvC,IAAMG,EAAgB,SAAC1nC,EAAG2nC,GAEpBA,IACG3nC,EAAE4nC,UAA0B,IAAd5nC,EAAE6nC,SAGnBL,MAQAM,EAAc,SAACH,GACfA,GACFF,KAIJ,OACE,0BACGF,GACCA,EAAYj1D,KAAI,SAACy1D,EAASj2D,GACxB,IAAIk2D,EAAK,GAEW,MAAhBD,EAAQhuD,OAAciuD,EAAKD,EAAQhuD,MAElB,MAAjBguD,EAAQE,QAAeD,EAAKD,EAAQE,OAER,MAA5BF,EAAQG,mBAA0BF,EAAE,IAAOD,EAAQG,iBAAiBpsD,KAAKy9C,SAEzEwO,EAAQG,kBAAoBH,EAAQG,iBAAiBC,yBACvDH,EAAK,QAAUA,GAEjB,IAAMI,EAAeJ,IAAOD,EAAQhuD,KAGhC4tD,GAAW,EAKf,OAJIJ,EAAYj5D,SAAWwD,EAAQ,IACjC61D,GAAW,GAOX,sBAAIj2D,IAAKI,GACNs2D,EACC,qBACEpuD,KAAMguD,EACNhsD,OAAO,SACP6wC,IAAI,sBACJwb,UAAW,SAACroC,GACV0nC,EAAc1nC,EAAG2nC,IAEnBW,QAAS,WACPR,EAAYH,KAGbI,EAAQ5a,OAGX,gBAAC,KAAD,CACE6a,GAAIA,EACJK,UAAW,SAACroC,GACV0nC,EAAc1nC,EAAG2nC,IAEnBW,QAAS,WACPR,EAAYH,KAGbI,EAAQ5a,aClD3B,EA3BkB,SAAC,GAA6D,IAA3Dob,EAA0D,EAA1DA,WAAYnX,EAA8C,EAA9CA,KAAMoX,EAAwC,EAAxCA,QAAShB,EAA+B,EAA/BA,gBAAiBC,EAAc,EAAdA,QAE/D,OACE,gCACGrW,EACC,yBAAOl+C,UAAU,qBACf,2DAAmCk+C,EAAK5W,WAAWiuB,MAAnD,KACA,uBAAKv1D,UAAU,qBACb,0BAAQ6iC,QAASyyB,EAASt1D,UAAU,mBAApC,WAEU,IAHZ,KAIK,IACH,qBAAGA,UAAU,uBAAuB8G,KAAK,gBAAzC,0BAMJ,GAEF,2BACE,gBAAC,EAAD,CAAUutD,YAAagB,EAAYf,gBAAiBA,EAAiBC,QAASA,O,0CCtBtF,SAAS1rD,IAeP,OAdAA,EAAW/M,OAAOiM,QAAU,SAAUe,GACpC,IAAK,IAAIzN,EAAI,EAAGA,EAAIgK,UAAUjK,OAAQC,IAAK,CACzC,IAAI0N,EAAS1D,UAAUhK,GAEvB,IAAK,IAAImD,KAAOuK,EACVjN,OAAOU,UAAUwM,eAAetM,KAAKqM,EAAQvK,KAC/CsK,EAAOtK,GAAOuK,EAAOvK,IAK3B,OAAOsK,IAGOG,MAAMC,KAAM7D,WAG9B,SAASmwD,EAA8BzsD,EAAQ0sD,GAC7C,GAAc,MAAV1sD,EAAgB,MAAO,GAC3B,IAEIvK,EAAKnD,EAFLyN,EAAS,GACT4sD,EAAa55D,OAAO+H,KAAKkF,GAG7B,IAAK1N,EAAI,EAAGA,EAAIq6D,EAAWt6D,OAAQC,IACjCmD,EAAMk3D,EAAWr6D,GACbo6D,EAAS70D,QAAQpC,IAAQ,IAC7BsK,EAAOtK,GAAOuK,EAAOvK,IAGvB,OAAOsK,EAKT,IAAI6sD,EAAY,iBAUZC,GAA2B,IAAAC,aAAW,SAAqB5xD,EAAM6xD,GACnE,IAAIC,EAAU9xD,EAAK+xD,GACfC,OAAmB,IAAZF,EAAqB,IAAMA,EAClCG,EAAgBjyD,EAAK9E,SACrBA,OAA6B,IAAlB+2D,EAA2B,kBAAoBA,EAC1DC,EAAYlyD,EAAKkyD,UACjBp4D,EAAQy3D,EAA8BvxD,EAAM,CAAC,KAAM,WAAY,cAE/D2F,EAAKusD,GAAaR,EAEtB,OAAoB,IAAA/tD,eAAcquD,EAAMptD,EAAS,GAAI9K,EAAO,CAC1D2L,IAAKosD,EACLhvD,KAAM,IAAM8C,EAEZ,uBAAwB,GACxB,2BAA4B,KAC1BzK,MAmBN,IAAIi3D,GAA8B,IAAAP,aAAW,SAAwBxhB,EAAOyhB,GAC1E,IAAIO,EAAWhiB,EAAM2hB,GACjBC,OAAoB,IAAbI,EAAsB,MAAQA,EACrCC,EAASjiB,EAAMzqC,GACf7L,EAAQy3D,EAA8BnhB,EAAO,CAAC,KAAM,OAEpDzqC,EAAK0sD,GAAUX,EACnB,OAAoB,IAAA/tD,eAAcquD,EAAMptD,EAAS,GAAI9K,EAAO,CAC1D2L,IAAKosD,EACLlsD,GAAIA,EACJ,8BAA+B,S,ICkHnC,E,oJAjME45B,MAAQ,CAAE+yB,eAAe,EAAOrY,MAAM,G,EAEtCqW,QAAU,WACR,EAAKvxB,SAAS,CAAEuzB,eAAe,K,EAEjCjC,gBAAkB,WAChB,EAAKtxB,UAAS,SAACwzB,GACb,MAAO,CACLD,eAAgBC,EAAUD,mB,EAKhCE,cAAgB,SAAC3pC,GACVA,EAAE4nC,UAA0B,IAAd5nC,EAAE6nC,SAGnB,EAAKJ,W,EAKTmC,qBAAuB,SAAC5pC,GAClBA,EAAE4nC,UAA0B,IAAd5nC,EAAE6nC,SAElB,EAAK3xB,SAAS,CAAEuzB,eAAe,K,EAInCI,oB,YAAsB,mFAChB,uBAAwB,EAAK54D,MAAM64D,WADnB,gCAELC,+BACV3zB,MAAK,SAACG,GAEL,OADA,EAAKL,SAAS,CAAEkb,KAAM7a,KACf,KAER+qB,OAAM,WACL,OAAO,KARO,yEAWX,GAXW,2C,EAetBkH,QAAU,WACRuB,cACG3zB,MAAK,YACJ4zB,cAAS,KACT,EAAK9zB,SAAS,CAAEkb,MAAM,OAEvBkQ,OAAM,SAACvkC,GAAD,OAASjkB,QAAQyuB,IAAIxK,O,EAGhCwkC,kBAAoB,WAClB0I,eAAkB,EAAKh5D,MAAM64D,WAE7B,EAAKD,sBAGLpjC,OAAOwb,iBAAiB,WAAW,SAACjiB,GAC9B,EAAK0W,MAAM+yB,gBAEC,WAAVzpC,EAAEtuB,KAA8B,QAAVsuB,EAAEtuB,KAA2B,KAAVsuB,EAAEtuB,KAC7C,EAAK81D,uB,EAMb0C,aAAe,SAACC,EAAYpwD,GAQ1B,MAFKowD,GAAcA,EAAWxzD,OAASwzD,EAAWxzD,MAAME,KAAOszD,EAAW5J,KAAOxmD,GAEpD,CAC3B,IAAMsmD,GAAapgC,yBACjBkqC,EAAWxzD,MAAM4G,IACjB,CAAE4E,SAAU,KACZ,EAAKlR,MAAMgQ,aAAaq/C,QAG1B,OACE,qBACEtmD,KAAMD,EACNozC,MAAM,iEACNnxC,OAAO,SACP6wC,IAAI,uBAEJ,uBACEpzC,IAAK4mD,EAAW5mD,IAChB8mD,IAAK4J,EAAW5J,IAChBhnD,MAAO,CAAE4D,OAAQ,OAAQD,MAAO,OAAQktD,aAAc,MAK5D,OACE,qBACEpwD,KAAK,wBACLmzC,MAAM,wCACNnxC,OAAO,SACP6wC,IAAI,uBAEJ,uBACEpzC,IAAK4wD,EACL9J,IAAI,WACJhnD,MAAO,CAAE4D,OAAQ,OAAQD,MAAO,OAAQktD,aAAc,O,iCAOhEhe,OAAA,WACE,IAAMmc,EAAansD,KAAKnL,MAAMq5D,cAExBJ,EAAe9tD,KAAKnL,MAAMs5D,gBAAkBnuD,KAAKnL,MAAMs5D,eAAeC,KACtEC,EAAmBruD,KAAKnL,MAAMs5D,gBAAkBnuD,KAAKnL,MAAMs5D,eAAexwD,KAI1E2wD,KAAoC,IAApBtuD,KAAKs6B,MAAM0a,OAAkBmX,GAEnD,OACE,uBAAKr1D,UAAU,YACb,gBAAC41D,EAAD,CAAavvD,MAAO,CAAEqsB,MAAO,WAC7B,uBAAK1yB,UAAU,qBACb,uBAAKA,UAAU,OACZkJ,KAAK8tD,aAAaA,EAAcO,GACjC,uBAAKlxD,MAAO,CAAEq9B,QAAS,OAAQC,WAAY,YACpB,IAApBz6B,KAAKs6B,MAAM0a,MACV,qBAAGl+C,UAAU,sBAAb,sBAEF,gBAAC,EAAD,CAAQk0D,QAAShrD,KAAKnL,MAAMm2D,UAI1BsD,EACE,0BACEx3D,UAAU,WACV6iC,QAAS35B,KAAKorD,gBACda,UAAWjsD,KAAKutD,cAChBgB,gBAAc,OACdC,gBAAexuD,KAAKs6B,MAAM+yB,cAAgB,OAAS,SALrD,OAQE,4BACE,uBAAKv2D,UAAU,SACf,uBAAKA,UAAU,SACf,uBAAKA,UAAU,WAInB,IAILw3D,EACC,uBACEx3D,UAAU,qBACVqG,MAAO,CAAE2D,MAAOd,KAAKs6B,MAAM+yB,cAAgB,MAAQ,IAAKtnD,SAAU,UAGlE,0BACEjP,UAAU,iBACV6iC,QAAS35B,KAAKorD,gBACda,UAAWjsD,KAAKwtD,sBAHlB,KAOA,uBAAK12D,UAAU,sBACb,gBAAC,EAAD,CACEq1D,WAAYA,EACZf,gBAAiBprD,KAAKorD,gBACtBpW,KAAMh1C,KAAKs6B,MAAM0a,KACjBoX,QAASpsD,KAAKosD,QACdf,QAASrrD,KAAKqrD,YAKpB,O,GAzLShtD,aC0DvB,EAhEe,SAAC,GAAwD,IAAtD8qD,EAAqD,EAArDA,UAAWsF,EAA0C,EAA1CA,YAAaC,EAA6B,EAA7BA,SAAU7pD,EAAmB,EAAnBA,aAC5C8pD,EACJF,GACAA,EAAYl0D,OACZk0D,EAAYl0D,MAAME,IAAlB,iBAG0B,MAAvBg0D,EAAYhtD,QAAZ,kBACqBgtD,EAAYhtD,QAAQQ,EADzC,SACmDwsD,EAAYhtD,QAAQO,EACpE,IAEF4sD,EAAcF,GAAYA,EAASn0D,OAASm0D,EAASn0D,MAAME,IAC3Do0D,EAAcH,GAAYA,EAASvK,IAEnCF,EAAa2K,GACf/qC,yBAAoB6qC,EAASn0D,MAAM4G,IAAK,CAAE4E,SAAU,KAAOlB,EAAaq/C,QACxE,GAEJ,OACE,uBACExjD,GAAG,SACH+pD,KAAK,SACLttD,MAAO,CACL+9B,WAAW,0EAA2EyzB,EAA5E,IACVG,iBAAkB,YAClB/zB,mBAAoB,SACpBD,eAAgB,QAChB/5B,OAAQ,QACRy5B,QAAS,OACTC,WAAY,SACZjR,MAAO,UAGT,uBAAK1yB,UAAU,0BACb,2BACE,gBAAC,KAAD,CAAM80D,GAAG,IAAI7a,MAAM,oBAChB6d,EACC,uBACEvxD,IAAK4mD,EAAW5mD,IAChB8mD,IAAK0K,EACL/3D,UAAU,OACVqG,MAAO,CACLgJ,UAAW,OACXrF,MAAO,OACPktD,aAAc,KAIlB,qBAAGl3D,UAAU,0DAA0DqyD,MAK/E,gBAAC+D,EAAD,QCtDA6B,EAAS,SAAC,GAST,IARL/D,EAQI,EARJA,QACA7B,EAOI,EAPJA,UACAsF,EAMI,EANJA,YACAC,EAKI,EALJA,SACAvC,EAII,EAJJA,WACAgC,EAGI,EAHJA,eACAT,EAEI,EAFJA,UACA7oD,EACI,EADJA,aAEA,OACE,gCACE,gBAAC,EAAD,CACEmmD,QAASA,EACTkD,cAAe/B,EACfuB,UAAWA,EACXS,eAAgBA,EAChBtpD,aAAcA,IAEhB,gBAAC,EAAD,CACEskD,UAAWA,EACXsF,YAAaA,EACbC,SAAUA,EACV7pD,aAAcA,MAYtBkqD,EAAOxvD,aAAe,CACpB4pD,UAAU,IAGZ,QChBA,EA1BiB,SAACt0D,GAChB,OACE,2BACkB,MAAfA,EAAMk8C,MAAgB,sBAAIj6C,UAAU,aAAajC,EAAMk8C,OAAc,GACtE,sBAAIj6C,UAAU,YACXjC,EAAMm6D,MAAM94D,KAAI,SAACyH,GAChB,OACE,sBAAIrI,IAAKqI,EAAK3H,MAKV,YAAYpC,KAAK+J,EAAKC,MACpB,gBAAC,KAAD,CAAMguD,GAAIjuD,EAAKC,MAAOD,EAAKxE,MAE3B,qBAAGyE,KAAMD,EAAKC,MAAOD,EAAKxE,aCkE5C,EAhFoB,SAACtE,GACnB,IAAMo6D,EAAap6D,EAAMo6D,WACzB,OAAIA,GAAcA,EAAWC,aAEzB,gCACGD,EAAWE,UAAUj9D,OAAS,EAC7B,uBAAKwO,GAAG,aACN,uBAAK5J,UAAU,qBACb,uBAAKA,UAAU,uBACZm4D,EAAWE,UAAUj5D,KAAI,SAACJ,GACzB,OACE,gBAAC,EAAD,CAAUi7C,MAAOj7C,EAAKs5D,UAAWJ,MAAOl5D,EAAKu5D,WAAY/5D,IAAKQ,EAAKE,aAO7E,GAEF,8BACE,8JAIA,sBAAIc,UAAU,eACZ,0BACE,qBACE8I,OAAO,SACP6wC,IAAI,sBACJ7yC,KAAK,kFAHP,kBAQF,0BACE,qBACEgC,OAAO,SACP6wC,IAAI,sBACJ7yC,KAAK,+EAHP,qBAQF,0BACE,qBACEgC,OAAO,SACP6wC,IAAI,sBACJ7yC,KAAK,wGAHP,gCAQF,0BACE,qBACEgC,OAAO,SACP6wC,IAAI,sBACJ7yC,KAAK,kFAHP,kBAQF,0BACE,qBACEgC,OAAO,SACP6wC,IAAI,sBACJ7yC,KAAK,0FAHP,uBAaH,ICxEU0xD,E,6FACnBtf,OAAA,WACE,MAiBIhwC,KAAKnL,MAhBPoB,EADF,EACEA,SACAs5D,EAFF,EAEEA,UACAC,EAHF,EAGEA,UACAC,EAJF,EAIEA,QACAtG,EALF,EAKEA,UACAuG,EANF,EAMEA,aACA1E,EAPF,EAOEA,QACAyD,EARF,EAQEA,YACAC,EATF,EASEA,SACAiB,EAVF,EAUEA,YACAC,EAXF,EAWEA,YACAX,EAZF,EAYEA,WACAY,EAbF,EAaEA,eACAnC,EAdF,EAcEA,UACAS,EAfF,EAeEA,eACAtpD,EAhBF,EAgBEA,aAEF,OACE,gCACE,gBAAC,EAAD,CACEskD,UAAWA,EACXoG,UAAWA,EACXC,UAAWA,EACXC,QAASA,EACTzE,QAASA,EACT0D,SAAUA,EACVD,YAAaA,EACbtC,WAAYuD,EACZhC,UAAWA,EACXS,eAAgBA,EAChBtpD,aAAcA,IAEhB,gBAAC,EAAD,CAAQsnD,WAAYuD,IACpB,4BACE,uBAAK54D,UAAU,qBACb,uBAAKA,UAAU,uBACb,uBACEA,UACE+4D,EAAiB,uBAAyB,kCAG3C55D,GAGF45D,GACC,uBAAK/4D,UAAU,wBACb,gBAAC,EAAD,CAAS64D,YAAaA,EAAaC,YAAaA,QAM1D,gBAAC,EAAD,CAAaX,WAAYA,M,GAvDGh2B,aCQpC,EAZe,SAAC,GAAoB,IAAlBkzB,EAAiB,EAAjBA,WAChB,OACE,uBAAKr1D,UAAU,0BACb,uBAAKA,UAAU,UACb,uBAAKA,UAAU,eACb,gBAAC,EAAD,CAAUq0D,YAAagB,QCN3B2D,EAAQ,SAAC,GAAD,IAAGC,EAAH,EAAGA,aAAcC,EAAjB,EAAiBA,kBAAjB,OACZ,uBAAKl5D,UAAU,SACb,0BACEuG,IAAK0yD,EACLhf,MAAOif,EACPhlB,MAAM,0EACNb,YAAY,IACZ8lB,sBAAsB,OACtBC,mBAAmB,OACnB3kB,iBAAe,MAIN,SAAS4kB,EAAQt7D,GAC9B,OAAO,gBAACi7D,EAAUj7D,G,eCGpB,EAhBgB,SAAC,GAAkC,IAAhC86D,EAA+B,EAA/BA,YAA+B,EAAlBC,YAC9B,OACE,uBAAKlvD,GAAG,WACN,gBAAC,EAAD,CACEqvD,aAAcJ,GAAeA,EAAYI,aACzCC,kBAAmBL,GAAeA,EAAYK,oBAEhD,2BACA,gBAAC,IAAD,CACEvI,WAAYkI,GAAeA,EAAYS,YACvC1I,cAAeiI,GAAeA,EAAYU,qB,oBCqGlD,MA5CA,SAAyBx7D,GACvB,OAA8BsxD,eAAS,GAAhCsJ,EAAP,KAAgBa,EAAhB,KAEA,SAASC,IACPD,GAAW,GAGb,SAASE,IACPF,GAAW,GAGb,MAA8Bz7D,EAAtB47D,iBAAR,SAEA,OACE,gBAAC,KAAD,CACE/1D,MAjFK,aAkFLs1C,OAAQ,SAAC7V,GACP,IAAKA,EAAK+uB,KACR,MAAM,IAAI1uD,MACR,yGAGJ,OACE,gBAAC80D,EAAD,iBACMz6D,EADN,CAEE46D,QAASA,EACTtG,UAAWhvB,EAAK+uB,KAAKnY,MACrB2d,SAAUv0B,EAAK+uB,KAAKwF,SACpBD,YAAat0B,EAAK+uB,KAAKuF,YACvBc,UAAWiB,EACXhB,UAAWe,EACXE,UAAWA,EACXd,YAAax1B,EAAK+uB,KAAKwH,QACvBd,YAAaz1B,EAAKy1B,YAClBX,WAAY90B,EAAK+uB,KAAKyH,OACtBxC,eAAgBh0B,EAAK+uB,KAAK0H,SAC1B/rD,aAAcA,Y,2JClGnB,SAASgsD,EAAgB12B,GAC9B,OAAKA,EAAK22B,MACH32B,EAAK22B,MAAM56D,KAAI,SAAC66D,GAAD,OAAUA,EAAKt7D,QADb,GAInB,SAASu7D,EAAT,GACL,OADkD,EAARtxD,MAC1B,IAAIy9C,QAGf,SAAS8T,EAAT,GAA6D,IAAhBC,EAAe,EAAfA,YAClD,QAAQj9C,cAASi9C,GAOZ,SAASlN,EAAcnkD,GAAyB,IAAD,aAAxBA,MAAS,CAAEtF,MAAO,KAC9C,IAAMutD,EAAW,CACfvtD,MAAO,CAAEQ,MAAM,UAAA8E,EAAOtF,aAAP,eAAcQ,QAAd,UAAsB8E,EAAOtF,aAA7B,aAAsB,EAAc4G,OAMrD,OAHItB,EAAO2B,OAAMsmD,EAAStmD,KAAO3B,EAAO2B,MACpC3B,EAAO4B,UAASqmD,EAASrmD,QAAU5B,EAAO4B,SAEvCqmD,I,kBC3BT,IAAIqJ,EAAW,SAAUp/D,GACvB,aAEA,IAEIqK,EAFAg1D,EAAKx+D,OAAOU,UACZ+9D,EAASD,EAAGtxD,eAEZwxD,EAA4B,mBAAX5+D,OAAwBA,OAAS,GAClD6+D,EAAiBD,EAAQ3+D,UAAY,aACrC6+D,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQK,aAAe,gBAE/C,SAASC,EAAOr2D,EAAKjG,EAAKC,GAOxB,OANA3C,OAAOwwB,eAAe7nB,EAAKjG,EAAK,CAC9BC,MAAOA,EACPgyB,YAAY,EACZmL,cAAc,EACdC,UAAU,IAELp3B,EAAIjG,GAEb,IAEEs8D,EAAO,GAAI,IACX,MAAOjxC,GACPixC,EAAS,SAASr2D,EAAKjG,EAAKC,GAC1B,OAAOgG,EAAIjG,GAAOC,GAItB,SAASs8D,EAAKC,EAASC,EAASjmC,EAAMkmC,GAEpC,IAAIC,EAAiBF,GAAWA,EAAQz+D,qBAAqB4+D,EAAYH,EAAUG,EAC/EC,EAAYv/D,OAAOy+B,OAAO4gC,EAAe3+D,WACzCg1B,EAAU,IAAI8pC,EAAQJ,GAAe,IAMzC,OAFAG,EAAUE,QAsMZ,SAA0BP,EAAShmC,EAAMxD,GACvC,IAAIgS,EAAQg4B,EAEZ,OAAO,SAAgBlgB,EAAQ4X,GAC7B,GAAI1vB,IAAUi4B,EACZ,MAAM,IAAI/3D,MAAM,gCAGlB,GAAI8/B,IAAUk4B,EAAmB,CAC/B,GAAe,UAAXpgB,EACF,MAAM4X,EAKR,OAAOyI,IAMT,IAHAnqC,EAAQ8pB,OAASA,EACjB9pB,EAAQ0hC,IAAMA,IAED,CACX,IAAI0I,EAAWpqC,EAAQoqC,SACvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAUpqC,GACnD,GAAIqqC,EAAgB,CAClB,GAAIA,IAAmBE,EAAkB,SACzC,OAAOF,GAIX,GAAuB,SAAnBrqC,EAAQ8pB,OAGV9pB,EAAQwqC,KAAOxqC,EAAQyqC,MAAQzqC,EAAQ0hC,SAElC,GAAuB,UAAnB1hC,EAAQ8pB,OAAoB,CACrC,GAAI9X,IAAUg4B,EAEZ,MADAh4B,EAAQk4B,EACFlqC,EAAQ0hC,IAGhB1hC,EAAQ0qC,kBAAkB1qC,EAAQ0hC,SAEN,WAAnB1hC,EAAQ8pB,QACjB9pB,EAAQ2qC,OAAO,SAAU3qC,EAAQ0hC,KAGnC1vB,EAAQi4B,EAER,IAAIW,EAASC,EAASrB,EAAShmC,EAAMxD,GACrC,GAAoB,WAAhB4qC,EAAOr9D,KAAmB,CAO5B,GAJAykC,EAAQhS,EAAQloB,KACZoyD,EACAY,EAEAF,EAAOlJ,MAAQ6I,EACjB,SAGF,MAAO,CACLt9D,MAAO29D,EAAOlJ,IACd5pD,KAAMkoB,EAAQloB,MAGS,UAAhB8yD,EAAOr9D,OAChBykC,EAAQk4B,EAGRlqC,EAAQ8pB,OAAS,QACjB9pB,EAAQ0hC,IAAMkJ,EAAOlJ,OA9QPqJ,CAAiBvB,EAAShmC,EAAMxD,GAE7C6pC,EAcT,SAASgB,EAASle,EAAI15C,EAAKyuD,GACzB,IACE,MAAO,CAAEn0D,KAAM,SAAUm0D,IAAK/U,EAAGzhD,KAAK+H,EAAKyuD,IAC3C,MAAOrpC,GACP,MAAO,CAAE9qB,KAAM,QAASm0D,IAAKrpC,IAhBjC5uB,EAAQ8/D,KAAOA,EAoBf,IAAIS,EAAyB,iBACzBc,EAAyB,iBACzBb,EAAoB,YACpBC,EAAoB,YAIpBK,EAAmB,GAMvB,SAASX,KACT,SAASoB,KACT,SAASC,KAIT,IAAIC,EAAoB,GACxBA,EAAkBjC,GAAkB,WAClC,OAAOvxD,MAGT,IAAIyzD,EAAW7gE,OAAOihC,eAClB6/B,EAA0BD,GAAYA,EAASA,EAASE,EAAO,MAC/DD,GACAA,IAA4BtC,GAC5BC,EAAO79D,KAAKkgE,EAAyBnC,KAGvCiC,EAAoBE,GAGtB,IAAIE,EAAKL,EAA2BjgE,UAClC4+D,EAAU5+D,UAAYV,OAAOy+B,OAAOmiC,GAWtC,SAASK,EAAsBvgE,GAC7B,CAAC,OAAQ,QAAS,UAAUmF,SAAQ,SAAS25C,GAC3Cwf,EAAOt+D,EAAW8+C,GAAQ,SAAS4X,GACjC,OAAOhqD,KAAKqyD,QAAQjgB,EAAQ4X,SAkClC,SAAS8J,EAAc3B,EAAW4B,GAChC,SAASC,EAAO5hB,EAAQ4X,EAAKztB,EAASqV,GACpC,IAAIshB,EAASC,EAAShB,EAAU/f,GAAS+f,EAAWnI,GACpD,GAAoB,UAAhBkJ,EAAOr9D,KAEJ,CACL,IAAI8L,EAASuxD,EAAOlJ,IAChBz0D,EAAQoM,EAAOpM,MACnB,OAAIA,GACiB,iBAAVA,GACP87D,EAAO79D,KAAK+B,EAAO,WACdw+D,EAAYx3B,QAAQhnC,EAAM0+D,SAASj6B,MAAK,SAASzkC,GACtDy+D,EAAO,OAAQz+D,EAAOgnC,EAASqV,MAC9B,SAASjxB,GACVqzC,EAAO,QAASrzC,EAAK4b,EAASqV,MAI3BmiB,EAAYx3B,QAAQhnC,GAAOykC,MAAK,SAASk6B,GAI9CvyD,EAAOpM,MAAQ2+D,EACf33B,EAAQ56B,MACP,SAASooB,GAGV,OAAOiqC,EAAO,QAASjqC,EAAOwS,EAASqV,MAvBzCA,EAAOshB,EAAOlJ,KA4BlB,IAAImK,EAgCJn0D,KAAKqyD,QA9BL,SAAiBjgB,EAAQ4X,GACvB,SAASoK,IACP,OAAO,IAAIL,GAAY,SAASx3B,EAASqV,GACvCoiB,EAAO5hB,EAAQ4X,EAAKztB,EAASqV,MAIjC,OAAOuiB,EAaLA,EAAkBA,EAAgBn6B,KAChCo6B,EAGAA,GACEA,KAkHV,SAASxB,EAAoBF,EAAUpqC,GACrC,IAAI8pB,EAASsgB,EAAS//D,SAAS21B,EAAQ8pB,QACvC,GAAIA,IAAWh2C,EAAW,CAKxB,GAFAksB,EAAQoqC,SAAW,KAEI,UAAnBpqC,EAAQ8pB,OAAoB,CAE9B,GAAIsgB,EAAS//D,SAAiB,SAG5B21B,EAAQ8pB,OAAS,SACjB9pB,EAAQ0hC,IAAM5tD,EACdw2D,EAAoBF,EAAUpqC,GAEP,UAAnBA,EAAQ8pB,QAGV,OAAOygB,EAIXvqC,EAAQ8pB,OAAS,QACjB9pB,EAAQ0hC,IAAM,IAAIl3D,UAChB,kDAGJ,OAAO+/D,EAGT,IAAIK,EAASC,EAAS/gB,EAAQsgB,EAAS//D,SAAU21B,EAAQ0hC,KAEzD,GAAoB,UAAhBkJ,EAAOr9D,KAIT,OAHAyyB,EAAQ8pB,OAAS,QACjB9pB,EAAQ0hC,IAAMkJ,EAAOlJ,IACrB1hC,EAAQoqC,SAAW,KACZG,EAGT,IAAI5I,EAAOiJ,EAAOlJ,IAElB,OAAMC,EAOFA,EAAK7pD,MAGPkoB,EAAQoqC,EAAS2B,YAAcpK,EAAK10D,MAGpC+yB,EAAQjoB,KAAOqyD,EAAS4B,QAQD,WAAnBhsC,EAAQ8pB,SACV9pB,EAAQ8pB,OAAS,OACjB9pB,EAAQ0hC,IAAM5tD,GAUlBksB,EAAQoqC,SAAW,KACZG,GANE5I,GA3BP3hC,EAAQ8pB,OAAS,QACjB9pB,EAAQ0hC,IAAM,IAAIl3D,UAAU,oCAC5Bw1B,EAAQoqC,SAAW,KACZG,GAoDX,SAAS0B,EAAaC,GACpB,IAAIvvD,EAAQ,CAAEwvD,OAAQD,EAAK,IAEvB,KAAKA,IACPvvD,EAAMyvD,SAAWF,EAAK,IAGpB,KAAKA,IACPvvD,EAAM0vD,WAAaH,EAAK,GACxBvvD,EAAM2vD,SAAWJ,EAAK,IAGxBx0D,KAAK60D,WAAW37D,KAAK+L,GAGvB,SAAS6vD,EAAc7vD,GACrB,IAAIiuD,EAASjuD,EAAM8vD,YAAc,GACjC7B,EAAOr9D,KAAO,gBACPq9D,EAAOlJ,IACd/kD,EAAM8vD,WAAa7B,EAGrB,SAASd,EAAQJ,GAIfhyD,KAAK60D,WAAa,CAAC,CAAEJ,OAAQ,SAC7BzC,EAAYv5D,QAAQ87D,EAAcv0D,MAClCA,KAAK4mC,OAAM,GA8Bb,SAAS+sB,EAAOqB,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAASzD,GAC9B,GAAI0D,EACF,OAAOA,EAAezhE,KAAKwhE,GAG7B,GAA6B,mBAAlBA,EAAS30D,KAClB,OAAO20D,EAGT,IAAK/7C,MAAM+7C,EAAS9iE,QAAS,CAC3B,IAAIC,GAAK,EAAGkO,EAAO,SAASA,IAC1B,OAASlO,EAAI6iE,EAAS9iE,QACpB,GAAIm/D,EAAO79D,KAAKwhE,EAAU7iE,GAGxB,OAFAkO,EAAK9K,MAAQy/D,EAAS7iE,GACtBkO,EAAKD,MAAO,EACLC,EAOX,OAHAA,EAAK9K,MAAQ6G,EACbiE,EAAKD,MAAO,EAELC,GAGT,OAAOA,EAAKA,KAAOA,GAKvB,MAAO,CAAEA,KAAMoyD,GAIjB,SAASA,IACP,MAAO,CAAEl9D,MAAO6G,EAAWgE,MAAM,GA+MnC,OA5mBAkzD,EAAkBhgE,UAAYsgE,EAAGlgE,YAAc6/D,EAC/CA,EAA2B7/D,YAAc4/D,EACzCA,EAAkBjhB,YAAcuf,EAC9B2B,EACA7B,EACA,qBAaF3/D,EAAQmjE,oBAAsB,SAASC,GACrC,IAAIC,EAAyB,mBAAXD,GAAyBA,EAAOzhE,YAClD,QAAO0hE,IACHA,IAAS9B,GAG2B,uBAAnC8B,EAAK/iB,aAAe+iB,EAAKzhE,QAIhC5B,EAAQwF,KAAO,SAAS49D,GAQtB,OAPIviE,OAAOigC,eACTjgC,OAAOigC,eAAesiC,EAAQ5B,IAE9B4B,EAAOriC,UAAYygC,EACnB3B,EAAOuD,EAAQzD,EAAmB,sBAEpCyD,EAAO7hE,UAAYV,OAAOy+B,OAAOuiC,GAC1BuB,GAOTpjE,EAAQsjE,MAAQ,SAASrL,GACvB,MAAO,CAAEiK,QAASjK,IAsEpB6J,EAAsBC,EAAcxgE,WACpCwgE,EAAcxgE,UAAUk+D,GAAuB,WAC7C,OAAOxxD,MAETjO,EAAQ+hE,cAAgBA,EAKxB/hE,EAAQg8B,MAAQ,SAAS+jC,EAASC,EAASjmC,EAAMkmC,EAAa+B,QACxC,IAAhBA,IAAwBA,EAAcz3B,SAE1C,IAAI7pC,EAAO,IAAIqhE,EACbjC,EAAKC,EAASC,EAASjmC,EAAMkmC,GAC7B+B,GAGF,OAAOhiE,EAAQmjE,oBAAoBnD,GAC/Bt/D,EACAA,EAAK4N,OAAO25B,MAAK,SAASr4B,GACxB,OAAOA,EAAOvB,KAAOuB,EAAOpM,MAAQ9C,EAAK4N,WAuKjDwzD,EAAsBD,GAEtBhC,EAAOgC,EAAIlC,EAAmB,aAO9BkC,EAAGrC,GAAkB,WACnB,OAAOvxD,MAGT4zD,EAAGrgE,SAAW,WACZ,MAAO,sBAkCTxB,EAAQ4I,KAAO,SAASsE,GACtB,IAAItE,EAAO,GACX,IAAK,IAAIrF,KAAO2J,EACdtE,EAAKzB,KAAK5D,GAMZ,OAJAqF,EAAK8e,UAIE,SAASpZ,IACd,KAAO1F,EAAKzI,QAAQ,CAClB,IAAIoD,EAAMqF,EAAKu6C,MACf,GAAI5/C,KAAO2J,EAGT,OAFAoB,EAAK9K,MAAQD,EACb+K,EAAKD,MAAO,EACLC,EAQX,OADAA,EAAKD,MAAO,EACLC,IAsCXtO,EAAQ4hE,OAASA,EAMjBvB,EAAQ9+D,UAAY,CAClBI,YAAa0+D,EAEbxrB,MAAO,SAAS0uB,GAcd,GAbAt1D,KAAKgjB,KAAO,EACZhjB,KAAKK,KAAO,EAGZL,KAAK8yD,KAAO9yD,KAAK+yD,MAAQ32D,EACzB4D,KAAKI,MAAO,EACZJ,KAAK0yD,SAAW,KAEhB1yD,KAAKoyC,OAAS,OACdpyC,KAAKgqD,IAAM5tD,EAEX4D,KAAK60D,WAAWp8D,QAAQq8D,IAEnBQ,EACH,IAAK,IAAI3hE,KAAQqM,KAEQ,MAAnBrM,EAAK8gD,OAAO,IACZ4c,EAAO79D,KAAKwM,KAAMrM,KACjBslB,OAAOtlB,EAAKF,MAAM,MACrBuM,KAAKrM,GAAQyI,IAMrBu7B,KAAM,WACJ33B,KAAKI,MAAO,EAEZ,IACIm1D,EADYv1D,KAAK60D,WAAW,GACLE,WAC3B,GAAwB,UAApBQ,EAAW1/D,KACb,MAAM0/D,EAAWvL,IAGnB,OAAOhqD,KAAKw1D,MAGdxC,kBAAmB,SAASnoC,GAC1B,GAAI7qB,KAAKI,KACP,MAAMyqB,EAGR,IAAIvC,EAAUtoB,KACd,SAASy1D,EAAOjxC,EAAKkxC,GAYnB,OAXAxC,EAAOr9D,KAAO,QACdq9D,EAAOlJ,IAAMn/B,EACbvC,EAAQjoB,KAAOmkB,EAEXkxC,IAGFptC,EAAQ8pB,OAAS,OACjB9pB,EAAQ0hC,IAAM5tD,KAGNs5D,EAGZ,IAAK,IAAIvjE,EAAI6N,KAAK60D,WAAW3iE,OAAS,EAAGC,GAAK,IAAKA,EAAG,CACpD,IAAI8S,EAAQjF,KAAK60D,WAAW1iE,GACxB+gE,EAASjuD,EAAM8vD,WAEnB,GAAqB,SAAjB9vD,EAAMwvD,OAIR,OAAOgB,EAAO,OAGhB,GAAIxwD,EAAMwvD,QAAUz0D,KAAKgjB,KAAM,CAC7B,IAAI2yC,EAAWtE,EAAO79D,KAAKyR,EAAO,YAC9B2wD,EAAavE,EAAO79D,KAAKyR,EAAO,cAEpC,GAAI0wD,GAAYC,EAAY,CAC1B,GAAI51D,KAAKgjB,KAAO/d,EAAMyvD,SACpB,OAAOe,EAAOxwD,EAAMyvD,UAAU,GACzB,GAAI10D,KAAKgjB,KAAO/d,EAAM0vD,WAC3B,OAAOc,EAAOxwD,EAAM0vD,iBAGjB,GAAIgB,GACT,GAAI31D,KAAKgjB,KAAO/d,EAAMyvD,SACpB,OAAOe,EAAOxwD,EAAMyvD,UAAU,OAG3B,KAAIkB,EAMT,MAAM,IAAIp7D,MAAM,0CALhB,GAAIwF,KAAKgjB,KAAO/d,EAAM0vD,WACpB,OAAOc,EAAOxwD,EAAM0vD,gBAU9B1B,OAAQ,SAASp9D,EAAMm0D,GACrB,IAAK,IAAI73D,EAAI6N,KAAK60D,WAAW3iE,OAAS,EAAGC,GAAK,IAAKA,EAAG,CACpD,IAAI8S,EAAQjF,KAAK60D,WAAW1iE,GAC5B,GAAI8S,EAAMwvD,QAAUz0D,KAAKgjB,MACrBquC,EAAO79D,KAAKyR,EAAO,eACnBjF,KAAKgjB,KAAO/d,EAAM0vD,WAAY,CAChC,IAAIkB,EAAe5wD,EACnB,OAIA4wD,IACU,UAAThgE,GACS,aAATA,IACDggE,EAAapB,QAAUzK,GACvBA,GAAO6L,EAAalB,aAGtBkB,EAAe,MAGjB,IAAI3C,EAAS2C,EAAeA,EAAad,WAAa,GAItD,OAHA7B,EAAOr9D,KAAOA,EACdq9D,EAAOlJ,IAAMA,EAET6L,GACF71D,KAAKoyC,OAAS,OACdpyC,KAAKK,KAAOw1D,EAAalB,WAClB9B,GAGF7yD,KAAK81D,SAAS5C,IAGvB4C,SAAU,SAAS5C,EAAQ0B,GACzB,GAAoB,UAAhB1B,EAAOr9D,KACT,MAAMq9D,EAAOlJ,IAcf,MAXoB,UAAhBkJ,EAAOr9D,MACS,aAAhBq9D,EAAOr9D,KACTmK,KAAKK,KAAO6yD,EAAOlJ,IACM,WAAhBkJ,EAAOr9D,MAChBmK,KAAKw1D,KAAOx1D,KAAKgqD,IAAMkJ,EAAOlJ,IAC9BhqD,KAAKoyC,OAAS,SACdpyC,KAAKK,KAAO,OACa,WAAhB6yD,EAAOr9D,MAAqB++D,IACrC50D,KAAKK,KAAOu0D,GAGP/B,GAGTkD,OAAQ,SAASpB,GACf,IAAK,IAAIxiE,EAAI6N,KAAK60D,WAAW3iE,OAAS,EAAGC,GAAK,IAAKA,EAAG,CACpD,IAAI8S,EAAQjF,KAAK60D,WAAW1iE,GAC5B,GAAI8S,EAAM0vD,aAAeA,EAGvB,OAFA30D,KAAK81D,SAAS7wD,EAAM8vD,WAAY9vD,EAAM2vD,UACtCE,EAAc7vD,GACP4tD,IAKb,MAAS,SAAS4B,GAChB,IAAK,IAAItiE,EAAI6N,KAAK60D,WAAW3iE,OAAS,EAAGC,GAAK,IAAKA,EAAG,CACpD,IAAI8S,EAAQjF,KAAK60D,WAAW1iE,GAC5B,GAAI8S,EAAMwvD,SAAWA,EAAQ,CAC3B,IAAIvB,EAASjuD,EAAM8vD,WACnB,GAAoB,UAAhB7B,EAAOr9D,KAAkB,CAC3B,IAAImgE,EAAS9C,EAAOlJ,IACpB8K,EAAc7vD,GAEhB,OAAO+wD,GAMX,MAAM,IAAIx7D,MAAM,0BAGlBy7D,cAAe,SAASjB,EAAUX,EAAYC,GAa5C,OAZAt0D,KAAK0yD,SAAW,CACd//D,SAAUghE,EAAOqB,GACjBX,WAAYA,EACZC,QAASA,GAGS,SAAhBt0D,KAAKoyC,SAGPpyC,KAAKgqD,IAAM5tD,GAGNy2D,IAQJ9gE,EA7sBK,CAotBiBD,EAAOC,SAGtC,IACEmkE,mBAAqB/E,EACrB,MAAOgF,GAUP5lD,SAAS,IAAK,yBAAdA,CAAwC4gD","file":"eab7c8fde225c05e2bbdb61227c723197d9adbcc-5723ef2bc6146d940e92.js","sourcesContent":["function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = require(\"regenerator-runtime\");\n","module.exports = require('./lib/internals');","\"use strict\";\n\nvar objectAssign = require('object-assign');\n\nvar buildMarksTree = require('./buildMarksTree');\n\nvar nestLists = require('./nestLists');\n\nvar generateKeys = require('./generateKeys');\n\nvar mergeSerializers = require('./mergeSerializers'); // Properties to extract from props and pass to serializers as options\n\n\nvar optionProps = ['projectId', 'dataset', 'imageOptions'];\n\nvar isDefined = function isDefined(val) {\n return typeof val !== 'undefined';\n};\n\nvar defaults = {\n imageOptions: {}\n};\n\nfunction blocksToNodes(h, properties, defaultSerializers, serializeSpan) {\n var props = objectAssign({}, defaults, properties);\n var rawBlocks = Array.isArray(props.blocks) ? props.blocks : [props.blocks];\n var keyedBlocks = generateKeys(rawBlocks);\n var blocks = nestLists(keyedBlocks, props.listNestMode);\n var serializers = mergeSerializers(defaultSerializers, props.serializers || {});\n var options = optionProps.reduce(function (opts, key) {\n var value = props[key];\n\n if (isDefined(value)) {\n opts[key] = value;\n }\n\n return opts;\n }, {});\n\n function serializeNode(node, index, siblings, isInline) {\n if (isList(node)) {\n return serializeList(node);\n }\n\n if (isListItem(node)) {\n return serializeListItem(node, findListItemIndex(node, siblings));\n }\n\n if (isSpan(node)) {\n return serializeSpan(node, serializers, index, {\n serializeNode: serializeNode\n });\n }\n\n return serializeBlock(node, index, isInline);\n }\n\n function findListItemIndex(node, siblings) {\n var index = 0;\n\n for (var i = 0; i < siblings.length; i++) {\n if (siblings[i] === node) {\n return index;\n }\n\n if (!isListItem(siblings[i])) {\n continue;\n }\n\n index++;\n }\n\n return index;\n }\n\n function serializeBlock(block, index, isInline) {\n var tree = buildMarksTree(block);\n var children = tree.map(function (node, i, siblings) {\n return serializeNode(node, i, siblings, true);\n });\n var blockProps = {\n key: block._key || \"block-\".concat(index),\n node: block,\n isInline: isInline,\n serializers: serializers,\n options: options\n };\n return h(serializers.block, blockProps, children);\n }\n\n function serializeListItem(block, index) {\n var key = block._key;\n var tree = buildMarksTree(block);\n var children = tree.map(serializeNode);\n return h(serializers.listItem, {\n node: block,\n serializers: serializers,\n index: index,\n key: key,\n options: options\n }, children);\n }\n\n function serializeList(list) {\n var type = list.listItem;\n var level = list.level;\n var key = list._key;\n var children = list.children.map(serializeNode);\n return h(serializers.list, {\n key: key,\n level: level,\n type: type,\n options: options\n }, children);\n } // Default to false, so `undefined` will evaluate to the default here\n\n\n var renderContainerOnSingleChild = Boolean(props.renderContainerOnSingleChild);\n var nodes = blocks.map(serializeNode);\n\n if (renderContainerOnSingleChild || nodes.length > 1) {\n var containerProps = props.className ? {\n className: props.className\n } : {};\n return h(serializers.container, containerProps, nodes);\n }\n\n if (nodes[0]) {\n return nodes[0];\n }\n\n return typeof serializers.empty === 'function' ? h(serializers.empty) : serializers.empty;\n}\n\nfunction isList(block) {\n return block._type === 'list' && block.listItem;\n}\n\nfunction isListItem(block) {\n return block._type === 'block' && block.listItem;\n}\n\nfunction isSpan(block) {\n return typeof block === 'string' || block.marks || block._type === 'span';\n}\n\nmodule.exports = blocksToNodes;","\"use strict\";\n\nvar defaultMarks = ['strong', 'em', 'code', 'underline', 'strike-through'];\n\nvar buildMarksTree = function buildMarksTree(block) {\n var children = block.children,\n markDefs = block.markDefs;\n\n if (!children || !children.length) {\n return [];\n }\n\n var sortedMarks = children.map(sortMarksByOccurences);\n var rootNode = {\n _type: 'span',\n children: []\n };\n var nodeStack = [rootNode];\n children.forEach(function (span, i) {\n var marksNeeded = sortedMarks[i];\n\n if (!marksNeeded) {\n var lastNode = nodeStack[nodeStack.length - 1];\n lastNode.children.push(span);\n return;\n }\n\n var pos = 1; // Start at position one. Root is always plain and should never be removed. (?)\n\n if (nodeStack.length > 1) {\n for (pos; pos < nodeStack.length; pos++) {\n var mark = nodeStack[pos].markKey;\n var index = marksNeeded.indexOf(mark); // eslint-disable-next-line max-depth\n\n if (index === -1) {\n break;\n }\n\n marksNeeded.splice(index, 1);\n }\n } // Keep from beginning to first miss\n\n\n nodeStack = nodeStack.slice(0, pos); // Add needed nodes\n\n var currentNode = findLastParentNode(nodeStack);\n marksNeeded.forEach(function (mark) {\n var node = {\n _type: 'span',\n _key: span._key,\n children: [],\n mark: markDefs.find(function (def) {\n return def._key === mark;\n }) || mark,\n markKey: mark\n };\n currentNode.children.push(node);\n nodeStack.push(node);\n currentNode = node;\n }); // Split at newlines to make individual line chunks, but keep newline\n // characters as individual elements in the array. We use these characters\n // in the span serializer to trigger hard-break rendering\n\n if (isTextSpan(span)) {\n var lines = span.text.split('\\n');\n\n for (var line = lines.length; line-- > 1;) {\n lines.splice(line, 0, '\\n');\n }\n\n currentNode.children = currentNode.children.concat(lines);\n } else {\n currentNode.children = currentNode.children.concat(span);\n }\n });\n return rootNode.children;\n}; // We want to sort all the marks of all the spans in the following order:\n// 1. Marks that are shared amongst the most adjacent siblings\n// 2. Non-default marks (links, custom metadata)\n// 3. Built-in, plain marks (bold, emphasis, code etc)\n\n\nfunction sortMarksByOccurences(span, i, spans) {\n if (!span.marks || span.marks.length === 0) {\n return span.marks || [];\n }\n\n var markOccurences = span.marks.reduce(function (occurences, mark) {\n occurences[mark] = occurences[mark] ? occurences[mark] + 1 : 1;\n\n for (var siblingIndex = i + 1; siblingIndex < spans.length; siblingIndex++) {\n var sibling = spans[siblingIndex];\n\n if (sibling.marks && Array.isArray(sibling.marks) && sibling.marks.indexOf(mark) !== -1) {\n occurences[mark]++;\n } else {\n break;\n }\n }\n\n return occurences;\n }, {});\n var sortByOccurence = sortMarks.bind(null, markOccurences); // Slicing because sort() mutates the input\n\n return span.marks.slice().sort(sortByOccurence);\n}\n\nfunction sortMarks(occurences, markA, markB) {\n var aOccurences = occurences[markA] || 0;\n var bOccurences = occurences[markB] || 0;\n\n if (aOccurences !== bOccurences) {\n return bOccurences - aOccurences;\n }\n\n var aDefaultPos = defaultMarks.indexOf(markA);\n var bDefaultPos = defaultMarks.indexOf(markB); // Sort default marks last\n\n if (aDefaultPos !== bDefaultPos) {\n return aDefaultPos - bDefaultPos;\n } // Sort other marks simply by key\n\n\n if (markA < markB) {\n return -1;\n } else if (markA > markB) {\n return 1;\n }\n\n return 0;\n}\n\nfunction isTextSpan(node) {\n return node._type === 'span' && typeof node.text === 'string' && (Array.isArray(node.marks) || typeof node.marks === 'undefined');\n}\n\nfunction findLastParentNode(nodes) {\n for (var i = nodes.length - 1; i >= 0; i--) {\n var node = nodes[i];\n\n if (node._type === 'span' && node.children) {\n return node;\n }\n }\n\n return undefined;\n}\n\nmodule.exports = buildMarksTree;","\"use strict\";\n\nvar objectAssign = require('object-assign');\n\nmodule.exports = function (blocks) {\n return blocks.map(function (block) {\n if (block._key) {\n return block;\n }\n\n return objectAssign({\n _key: getStaticKey(block)\n }, block);\n });\n};\n\nfunction getStaticKey(item) {\n return checksum(JSON.stringify(item)).toString(36).replace(/[^A-Za-z0-9]/g, '');\n}\n/* eslint-disable no-bitwise */\n\n\nfunction checksum(str) {\n var hash = 0;\n var strlen = str.length;\n\n if (strlen === 0) {\n return hash;\n }\n\n for (var i = 0; i < strlen; i++) {\n hash = (hash << 5) - hash + str.charCodeAt(i);\n hash &= hash; // Convert to 32bit integer\n }\n\n return hash;\n}\n/* eslint-enable no-bitwise */","\"use strict\";\n\nvar generateHelpUrl = require('@sanity/generate-help-url');\n\nvar urlBuilder = require('@sanity/image-url');\n\nvar objectAssign = require('object-assign');\n\nvar enc = encodeURIComponent;\nvar materializeError = \"You must either:\\n - Pass `projectId` and `dataset` to the block renderer\\n - Materialize images to include the `url` field.\\n\\nFor more information, see \".concat(generateHelpUrl('block-content-image-materializing'));\n\nvar getQueryString = function getQueryString(options) {\n var query = options.imageOptions;\n var keys = Object.keys(query);\n\n if (!keys.length) {\n return '';\n }\n\n var params = keys.map(function (key) {\n return \"\".concat(enc(key), \"=\").concat(enc(query[key]));\n });\n return \"?\".concat(params.join('&'));\n};\n\nvar buildUrl = function buildUrl(props) {\n var node = props.node,\n options = props.options;\n var projectId = options.projectId,\n dataset = options.dataset;\n var asset = node.asset;\n\n if (!asset) {\n throw new Error('Image does not have required `asset` property');\n }\n\n if (asset.url) {\n return asset.url + getQueryString(options);\n }\n\n if (!projectId || !dataset) {\n throw new Error(materializeError);\n }\n\n var ref = asset._ref;\n\n if (!ref) {\n throw new Error('Invalid image reference in block, no `_ref` found on `asset`');\n }\n\n return urlBuilder(objectAssign({\n projectId: projectId,\n dataset: dataset\n }, options.imageOptions || {})).image(node).toString();\n};\n\nmodule.exports = buildUrl;","\"use strict\";\n\nvar getSerializers = require('./serializers');\n\nvar _blocksToNodes = require('./blocksToNodes');\n\nvar getImageUrl = require('./getImageUrl');\n\nvar mergeSerializers = require('./mergeSerializers');\n\nmodule.exports = {\n blocksToNodes: function blocksToNodes(renderNode, props, defaultSerializers, serializeSpan) {\n if (defaultSerializers) {\n return _blocksToNodes(renderNode, props, defaultSerializers, serializeSpan);\n } // Backwards-compatibility\n\n\n var serializers = getSerializers(renderNode);\n return _blocksToNodes(renderNode, props, serializers.defaultSerializers, serializers.serializeSpan);\n },\n getSerializers: getSerializers,\n getImageUrl: getImageUrl,\n mergeSerializers: mergeSerializers\n};","\"use strict\";\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nvar objectAssign = require('object-assign');\n\nvar isDefined = function isDefined(val) {\n return typeof val !== 'undefined';\n}; // Recursively merge/replace default serializers with user-specified serializers\n\n\nmodule.exports = function mergeSerializers(defaultSerializers, userSerializers) {\n return Object.keys(defaultSerializers).reduce(function (acc, key) {\n var type = _typeof(defaultSerializers[key]);\n\n if (type === 'function') {\n acc[key] = isDefined(userSerializers[key]) ? userSerializers[key] : defaultSerializers[key];\n } else if (type === 'object') {\n acc[key] = objectAssign({}, defaultSerializers[key], userSerializers[key]);\n } else {\n acc[key] = typeof userSerializers[key] === 'undefined' ? defaultSerializers[key] : userSerializers[key];\n }\n\n return acc;\n }, {});\n};","\"use strict\";\n\nvar objectAssign = require('object-assign');\n/* eslint-disable max-depth, complexity */\n\n\nfunction nestLists(blocks) {\n var mode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'html';\n var tree = [];\n var currentList;\n\n for (var i = 0; i < blocks.length; i++) {\n var block = blocks[i];\n\n if (!isListBlock(block)) {\n tree.push(block);\n currentList = null;\n continue;\n } // Start of a new list?\n\n\n if (!currentList) {\n currentList = listFromBlock(block);\n tree.push(currentList);\n continue;\n } // New list item within same list?\n\n\n if (blockMatchesList(block, currentList)) {\n currentList.children.push(block);\n continue;\n } // Different list props, are we going deeper?\n\n\n if (block.level > currentList.level) {\n var newList = listFromBlock(block);\n\n if (mode === 'html') {\n // Because HTML is kinda weird, nested lists needs to be nested within list items\n // So while you would think that we could populate the parent list with a new sub-list,\n // We actually have to target the last list element (child) of the parent.\n // However, at this point we need to be very careful - simply pushing to the list of children\n // will mutate the input, and we don't want to blindly clone the entire tree.\n // Clone the last child while adding our new list as the last child of it\n var lastListItem = lastChild(currentList);\n var newLastChild = objectAssign({}, lastListItem, {\n children: lastListItem.children.concat(newList)\n }); // Swap the last child\n\n currentList.children[currentList.children.length - 1] = newLastChild;\n } else {\n currentList.children.push(newList);\n } // Set the newly created, deeper list as the current\n\n\n currentList = newList;\n continue;\n } // Different list props, are we going back up the tree?\n\n\n if (block.level < currentList.level) {\n // Current list has ended, and we need to hook up with a parent of the same level and type\n var match = findListMatching(tree[tree.length - 1], block);\n\n if (match) {\n currentList = match;\n currentList.children.push(block);\n continue;\n } // Similar parent can't be found, assume new list\n\n\n currentList = listFromBlock(block);\n tree.push(currentList);\n continue;\n } // Different list props, different list style?\n\n\n if (block.listItem !== currentList.listItem) {\n var _match = findListMatching(tree[tree.length - 1], {\n level: block.level\n });\n\n if (_match && _match.listItem === block.listItem) {\n currentList = _match;\n currentList.children.push(block);\n continue;\n } else {\n currentList = listFromBlock(block);\n tree.push(currentList);\n continue;\n }\n } // eslint-disable-next-line no-console\n\n\n console.warn('Unknown state encountered for block', block);\n tree.push(block);\n }\n\n return tree;\n}\n\nfunction isListBlock(block) {\n return Boolean(block.listItem);\n}\n\nfunction blockMatchesList(block, list) {\n return block.level === list.level && block.listItem === list.listItem;\n}\n\nfunction listFromBlock(block) {\n return {\n _type: 'list',\n _key: \"\".concat(block._key, \"-parent\"),\n level: block.level,\n listItem: block.listItem,\n children: [block]\n };\n}\n\nfunction lastChild(block) {\n return block.children && block.children[block.children.length - 1];\n}\n\nfunction findListMatching(rootNode, matching) {\n var filterOnType = typeof matching.listItem === 'string';\n\n if (rootNode._type === 'list' && rootNode.level === matching.level && filterOnType && rootNode.listItem === matching.listItem) {\n return rootNode;\n }\n\n var node = lastChild(rootNode);\n\n if (!node) {\n return false;\n }\n\n return findListMatching(node, matching);\n}\n\nmodule.exports = nestLists;","\"use strict\";\n\nvar objectAssign = require('object-assign');\n\nvar getImageUrl = require('./getImageUrl');\n\nmodule.exports = function (h, serializerOpts) {\n var serializeOptions = serializerOpts || {\n useDashedStyles: false // Low-level block serializer\n\n };\n\n function BlockSerializer(props) {\n var node = props.node,\n serializers = props.serializers,\n options = props.options,\n isInline = props.isInline,\n children = props.children;\n var blockType = node._type;\n var serializer = serializers.types[blockType];\n\n if (!serializer) {\n throw new Error(\"Unknown block type \\\"\".concat(blockType, \"\\\", please specify a serializer for it in the `serializers.types` prop\"));\n }\n\n return h(serializer, {\n node: node,\n options: options,\n isInline: isInline\n }, children);\n } // Low-level span serializer\n\n\n function SpanSerializer(props) {\n var _props$node = props.node,\n mark = _props$node.mark,\n children = _props$node.children;\n var isPlain = typeof mark === 'string';\n var markType = isPlain ? mark : mark._type;\n var serializer = props.serializers.marks[markType];\n\n if (!serializer) {\n // @todo Revert back to throwing errors?\n // eslint-disable-next-line no-console\n console.warn(\"Unknown mark type \\\"\".concat(markType, \"\\\", please specify a serializer for it in the `serializers.marks` prop\"));\n return h(props.serializers.markFallback, null, children);\n }\n\n return h(serializer, props.node, children);\n } // Low-level list serializer\n\n\n function ListSerializer(props) {\n var tag = props.type === 'bullet' ? 'ul' : 'ol';\n return h(tag, null, props.children);\n } // Low-level list item serializer\n\n\n function ListItemSerializer(props) {\n var children = !props.node.style || props.node.style === 'normal' ? // Don't wrap plain text in paragraphs inside of a list item\n props.children : // But wrap any other style in whatever the block serializer says to use\n h(props.serializers.types.block, props, props.children);\n return h('li', null, children);\n } // Renderer of an actual block of type `block`. Confusing, we know.\n\n\n function BlockTypeSerializer(props) {\n var style = props.node.style || 'normal';\n\n if (/^h\\d/.test(style)) {\n return h(style, null, props.children);\n }\n\n return style === 'blockquote' ? h('blockquote', null, props.children) : h('p', null, props.children);\n } // Serializers for things that can be directly attributed to a tag without any props\n // We use partial application to do this, passing the tag name as the first argument\n\n\n function RawMarkSerializer(tag, props) {\n return h(tag, null, props.children);\n }\n\n function UnderlineSerializer(props) {\n var style = serializeOptions.useDashedStyles ? {\n 'text-decoration': 'underline'\n } : {\n textDecoration: 'underline'\n };\n return h('span', {\n style: style\n }, props.children);\n }\n\n function StrikeThroughSerializer(props) {\n return h('del', null, props.children);\n }\n\n function LinkSerializer(props) {\n return h('a', {\n href: props.mark.href\n }, props.children);\n }\n\n function ImageSerializer(props) {\n if (!props.node.asset) {\n return null;\n }\n\n var img = h('img', {\n src: getImageUrl(props)\n });\n return props.isInline ? img : h('figure', null, img);\n } // Serializer that recursively calls itself, producing a hyperscript tree of spans\n\n\n function serializeSpan(span, serializers, index, options) {\n if (span === '\\n' && serializers.hardBreak) {\n return h(serializers.hardBreak, {\n key: \"hb-\".concat(index)\n });\n }\n\n if (typeof span === 'string') {\n return serializers.text ? h(serializers.text, {\n key: \"text-\".concat(index)\n }, span) : span;\n }\n\n var children;\n\n if (span.children) {\n children = {\n children: span.children.map(function (child, i) {\n return options.serializeNode(child, i, span.children, true);\n })\n };\n }\n\n var serializedNode = objectAssign({}, span, children);\n return h(serializers.span, {\n key: span._key || \"span-\".concat(index),\n node: serializedNode,\n serializers: serializers\n });\n }\n\n var HardBreakSerializer = function HardBreakSerializer() {\n return h('br');\n };\n\n var defaultMarkSerializers = {\n strong: RawMarkSerializer.bind(null, 'strong'),\n em: RawMarkSerializer.bind(null, 'em'),\n code: RawMarkSerializer.bind(null, 'code'),\n underline: UnderlineSerializer,\n 'strike-through': StrikeThroughSerializer,\n link: LinkSerializer\n };\n var defaultSerializers = {\n // Common overrides\n types: {\n block: BlockTypeSerializer,\n image: ImageSerializer\n },\n marks: defaultMarkSerializers,\n // Less common overrides\n list: ListSerializer,\n listItem: ListItemSerializer,\n block: BlockSerializer,\n span: SpanSerializer,\n hardBreak: HardBreakSerializer,\n // Container element\n container: 'div',\n // When we can't resolve the mark properly, use this renderer as the container\n markFallback: 'span',\n // Allow overriding text renderer, but leave undefined to just use plain strings by default\n text: undefined,\n // Empty nodes (React uses null, hyperscript with empty strings)\n empty: ''\n };\n return {\n defaultSerializers: defaultSerializers,\n serializeSpan: serializeSpan\n };\n};","'use strict';\n\nvar React = require('react');\n\nvar PropTypes = require('prop-types');\n\nvar internals = require('@sanity/block-content-to-hyperscript/internals');\n\nvar _require = require('./targets/dom'),\n serializers = _require.serializers,\n serializeSpan = _require.serializeSpan,\n renderProps = _require.renderProps;\n\nvar getImageUrl = internals.getImageUrl,\n blocksToNodes = internals.blocksToNodes,\n mergeSerializers = internals.mergeSerializers;\nvar renderNode = React.createElement;\n\nvar SanityBlockContent = function SanityBlockContent(props) {\n var customSerializers = mergeSerializers(SanityBlockContent.defaultSerializers, props.serializers);\n var blockProps = Object.assign({}, renderProps, props, {\n serializers: customSerializers,\n blocks: props.blocks || []\n });\n return blocksToNodes(renderNode, blockProps, serializers, serializeSpan);\n}; // Expose default serializers to the user\n\n\nSanityBlockContent.defaultSerializers = serializers; // Expose logic for building image URLs from an image reference/node\n\nSanityBlockContent.getImageUrl = getImageUrl;\nSanityBlockContent.propTypes = {\n className: PropTypes.string,\n renderContainerOnSingleChild: PropTypes.bool,\n // When rendering images, we need project id and dataset, unless images are materialized\n projectId: PropTypes.string,\n dataset: PropTypes.string,\n imageOptions: PropTypes.object,\n serializers: PropTypes.shape({\n // Common overrides\n types: PropTypes.object,\n marks: PropTypes.object,\n // Less common overrides\n list: PropTypes.func,\n listItem: PropTypes.func,\n // Low-level serializers\n block: PropTypes.func,\n span: PropTypes.func\n }),\n blocks: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.shape({\n _type: PropTypes.string.isRequired\n })), PropTypes.shape({\n _type: PropTypes.string.isRequired\n })]).isRequired\n};\nSanityBlockContent.defaultProps = {\n renderContainerOnSingleChild: false,\n serializers: {},\n imageOptions: {}\n};\nmodule.exports = SanityBlockContent;","'use strict';\n\nvar React = require('react');\n\nvar _require = require('@sanity/block-content-to-hyperscript/internals'),\n getSerializers = _require.getSerializers;\n\nvar renderNode = React.createElement;\n\nvar _getSerializers = getSerializers(renderNode),\n defaultSerializers = _getSerializers.defaultSerializers,\n serializeSpan = _getSerializers.serializeSpan;\n\nmodule.exports = {\n serializeSpan: serializeSpan,\n serializers: defaultSerializers,\n renderProps: {\n nestMarks: true\n }\n};","var baseUrl = 'https://docs.sanity.io/help/';\n\nmodule.exports = function generateHelpUrl(slug) {\n return baseUrl + slug;\n};","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.SanityImageUrlBuilder = factory());\n})(this, function () {\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n\n function _createForOfIteratorHelperLoose(o) {\n var i = 0;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n i = o[Symbol.iterator]();\n return i.next.bind(i);\n }\n\n var example = 'image-Tb9Ew8CXIwaY6R1kjMvI0uRR-2000x3000-jpg';\n\n function parseAssetId(ref) {\n var _ref$split = ref.split('-'),\n id = _ref$split[1],\n dimensionString = _ref$split[2],\n format = _ref$split[3];\n\n if (!id || !dimensionString || !format) {\n throw new Error(\"Malformed asset _ref '\" + ref + \"'. Expected an id like \\\"\" + example + \"\\\".\");\n }\n\n var _dimensionString$spli = dimensionString.split('x'),\n imgWidthStr = _dimensionString$spli[0],\n imgHeightStr = _dimensionString$spli[1];\n\n var width = +imgWidthStr;\n var height = +imgHeightStr;\n var isValidAssetId = isFinite(width) && isFinite(height);\n\n if (!isValidAssetId) {\n throw new Error(\"Malformed asset _ref '\" + ref + \"'. Expected an id like \\\"\" + example + \"\\\".\");\n }\n\n return {\n id: id,\n width: width,\n height: height,\n format: format\n };\n }\n\n var isRef = function isRef(src) {\n var source = src;\n return source ? typeof source._ref === 'string' : false;\n };\n\n var isAsset = function isAsset(src) {\n var source = src;\n return source ? typeof source._id === 'string' : false;\n };\n\n var isAssetStub = function isAssetStub(src) {\n var source = src;\n return source && source.asset ? typeof source.asset.url === 'string' : false;\n };\n\n function parseSource(source) {\n if (!source) {\n return null;\n }\n\n var image;\n\n if (typeof source === 'string' && isUrl(source)) {\n image = {\n asset: {\n _ref: urlToId(source)\n }\n };\n } else if (typeof source === 'string') {\n image = {\n asset: {\n _ref: source\n }\n };\n } else if (isRef(source)) {\n image = {\n asset: source\n };\n } else if (isAsset(source)) {\n image = {\n asset: {\n _ref: source._id || ''\n }\n };\n } else if (isAssetStub(source)) {\n image = {\n asset: {\n _ref: urlToId(source.asset.url)\n }\n };\n } else if (typeof source.asset === 'object') {\n image = source;\n } else {\n return null;\n }\n\n var img = source;\n\n if (img.crop) {\n image.crop = img.crop;\n }\n\n if (img.hotspot) {\n image.hotspot = img.hotspot;\n }\n\n return applyDefaults(image);\n }\n\n function isUrl(url) {\n return /^https?:\\/\\//.test(\"\" + url);\n }\n\n function urlToId(url) {\n var parts = url.split('/').slice(-1);\n return (\"image-\" + parts[0]).replace(/\\.([a-z]+)$/, '-$1');\n }\n\n function applyDefaults(image) {\n if (image.crop && image.hotspot) {\n return image;\n }\n\n var result = _extends({}, image);\n\n if (!result.crop) {\n result.crop = {\n left: 0,\n top: 0,\n bottom: 0,\n right: 0\n };\n }\n\n if (!result.hotspot) {\n result.hotspot = {\n x: 0.5,\n y: 0.5,\n height: 1.0,\n width: 1.0\n };\n }\n\n return result;\n }\n\n var SPEC_NAME_TO_URL_NAME_MAPPINGS = [['width', 'w'], ['height', 'h'], ['format', 'fm'], ['download', 'dl'], ['blur', 'blur'], ['sharpen', 'sharp'], ['invert', 'invert'], ['orientation', 'or'], ['minHeight', 'min-h'], ['maxHeight', 'max-h'], ['minWidth', 'min-w'], ['maxWidth', 'max-w'], ['quality', 'q'], ['fit', 'fit'], ['crop', 'crop'], ['saturation', 'sat'], ['auto', 'auto'], ['dpr', 'dpr']];\n\n function urlForImage(options) {\n var spec = _extends({}, options || {});\n\n var source = spec.source;\n delete spec.source;\n var image = parseSource(source);\n\n if (!image) {\n return null;\n }\n\n var id = image.asset._ref || image.asset._id || '';\n var asset = parseAssetId(id);\n var cropLeft = Math.round(image.crop.left * asset.width);\n var cropTop = Math.round(image.crop.top * asset.height);\n var crop = {\n left: cropLeft,\n top: cropTop,\n width: Math.round(asset.width - image.crop.right * asset.width - cropLeft),\n height: Math.round(asset.height - image.crop.bottom * asset.height - cropTop)\n };\n var hotSpotVerticalRadius = image.hotspot.height * asset.height / 2;\n var hotSpotHorizontalRadius = image.hotspot.width * asset.width / 2;\n var hotSpotCenterX = image.hotspot.x * asset.width;\n var hotSpotCenterY = image.hotspot.y * asset.height;\n var hotspot = {\n left: hotSpotCenterX - hotSpotHorizontalRadius,\n top: hotSpotCenterY - hotSpotVerticalRadius,\n right: hotSpotCenterX + hotSpotHorizontalRadius,\n bottom: hotSpotCenterY + hotSpotVerticalRadius\n };\n\n if (!(spec.rect || spec.focalPoint || spec.ignoreImageParams || spec.crop)) {\n spec = _extends(_extends({}, spec), fit({\n crop: crop,\n hotspot: hotspot\n }, spec));\n }\n\n return specToImageUrl(_extends(_extends({}, spec), {}, {\n asset: asset\n }));\n }\n\n function specToImageUrl(spec) {\n var cdnUrl = spec.baseUrl || 'https://cdn.sanity.io';\n var filename = spec.asset.id + \"-\" + spec.asset.width + \"x\" + spec.asset.height + \".\" + spec.asset.format;\n var baseUrl = cdnUrl + \"/images/\" + spec.projectId + \"/\" + spec.dataset + \"/\" + filename;\n var params = [];\n\n if (spec.rect) {\n var _spec$rect = spec.rect,\n left = _spec$rect.left,\n top = _spec$rect.top,\n width = _spec$rect.width,\n height = _spec$rect.height;\n var isEffectiveCrop = left !== 0 || top !== 0 || height !== spec.asset.height || width !== spec.asset.width;\n\n if (isEffectiveCrop) {\n params.push(\"rect=\" + left + \",\" + top + \",\" + width + \",\" + height);\n }\n }\n\n if (spec.bg) {\n params.push(\"bg=\" + spec.bg);\n }\n\n if (spec.focalPoint) {\n params.push(\"fp-x=\" + spec.focalPoint.x);\n params.push(\"fp-y=\" + spec.focalPoint.y);\n }\n\n var flip = [spec.flipHorizontal && 'h', spec.flipVertical && 'v'].filter(Boolean).join('');\n\n if (flip) {\n params.push(\"flip=\" + flip);\n }\n\n SPEC_NAME_TO_URL_NAME_MAPPINGS.forEach(function (mapping) {\n var specName = mapping[0],\n param = mapping[1];\n\n if (typeof spec[specName] !== 'undefined') {\n params.push(param + \"=\" + encodeURIComponent(spec[specName]));\n } else if (typeof spec[param] !== 'undefined') {\n params.push(param + \"=\" + encodeURIComponent(spec[param]));\n }\n });\n\n if (params.length === 0) {\n return baseUrl;\n }\n\n return baseUrl + \"?\" + params.join('&');\n }\n\n function fit(source, spec) {\n var cropRect;\n var imgWidth = spec.width;\n var imgHeight = spec.height;\n\n if (!(imgWidth && imgHeight)) {\n return {\n width: imgWidth,\n height: imgHeight,\n rect: source.crop\n };\n }\n\n var crop = source.crop;\n var hotspot = source.hotspot;\n var desiredAspectRatio = imgWidth / imgHeight;\n var cropAspectRatio = crop.width / crop.height;\n\n if (cropAspectRatio > desiredAspectRatio) {\n var height = crop.height;\n var width = height * desiredAspectRatio;\n var top = crop.top;\n var hotspotXCenter = (hotspot.right - hotspot.left) / 2 + hotspot.left;\n var left = hotspotXCenter - width / 2;\n\n if (left < crop.left) {\n left = crop.left;\n } else if (left + width > crop.left + crop.width) {\n left = crop.left + crop.width - width;\n }\n\n cropRect = {\n left: Math.round(left),\n top: Math.round(top),\n width: Math.round(width),\n height: Math.round(height)\n };\n } else {\n var _width = crop.width;\n\n var _height = _width / desiredAspectRatio;\n\n var _left = crop.left;\n var hotspotYCenter = (hotspot.bottom - hotspot.top) / 2 + hotspot.top;\n\n var _top = hotspotYCenter - _height / 2;\n\n if (_top < crop.top) {\n _top = crop.top;\n } else if (_top + _height > crop.top + crop.height) {\n _top = crop.top + crop.height - _height;\n }\n\n cropRect = {\n left: Math.max(0, Math.floor(_left)),\n top: Math.max(0, Math.floor(_top)),\n width: Math.round(_width),\n height: Math.round(_height)\n };\n }\n\n return {\n width: imgWidth,\n height: imgHeight,\n rect: cropRect\n };\n }\n\n var validFits = ['clip', 'crop', 'fill', 'fillmax', 'max', 'scale', 'min'];\n var validCrops = ['top', 'bottom', 'left', 'right', 'center', 'focalpoint', 'entropy'];\n var validAutoModes = ['format'];\n\n function isSanityClient(client) {\n return client ? typeof client.clientConfig === 'object' : false;\n }\n\n function rewriteSpecName(key) {\n var specs = SPEC_NAME_TO_URL_NAME_MAPPINGS;\n\n for (var _iterator = _createForOfIteratorHelperLoose(specs), _step; !(_step = _iterator()).done;) {\n var entry = _step.value;\n var specName = entry[0],\n param = entry[1];\n\n if (key === specName || key === param) {\n return specName;\n }\n }\n\n return key;\n }\n\n function urlBuilder(options) {\n var client = options;\n\n if (isSanityClient(client)) {\n var _client$clientConfig = client.clientConfig,\n apiUrl = _client$clientConfig.apiHost,\n projectId = _client$clientConfig.projectId,\n dataset = _client$clientConfig.dataset;\n var apiHost = apiUrl || 'https://api.sanity.io';\n return new ImageUrlBuilder(null, {\n baseUrl: apiHost.replace(/^https:\\/\\/api\\./, 'https://cdn.'),\n projectId: projectId,\n dataset: dataset\n });\n }\n\n return new ImageUrlBuilder(null, options);\n }\n\n var ImageUrlBuilder = /*#__PURE__*/function () {\n function ImageUrlBuilder(parent, options) {\n this.options = parent ? _extends(_extends({}, parent.options || {}), options || {}) : _extends({}, options || {});\n }\n\n var _proto = ImageUrlBuilder.prototype;\n\n _proto.withOptions = function withOptions(options) {\n var baseUrl = options.baseUrl || this.options.baseUrl;\n var newOptions = {\n baseUrl: baseUrl\n };\n\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n var specKey = rewriteSpecName(key);\n newOptions[specKey] = options[key];\n }\n }\n\n return new ImageUrlBuilder(this, _extends({\n baseUrl: baseUrl\n }, newOptions));\n };\n\n _proto.image = function image(source) {\n return this.withOptions({\n source: source\n });\n };\n\n _proto.dataset = function dataset(_dataset) {\n return this.withOptions({\n dataset: _dataset\n });\n };\n\n _proto.projectId = function projectId(_projectId) {\n return this.withOptions({\n projectId: _projectId\n });\n };\n\n _proto.bg = function bg(_bg) {\n return this.withOptions({\n bg: _bg\n });\n };\n\n _proto.dpr = function dpr(_dpr) {\n return this.withOptions({\n dpr: _dpr\n });\n };\n\n _proto.width = function width(_width) {\n return this.withOptions({\n width: _width\n });\n };\n\n _proto.height = function height(_height) {\n return this.withOptions({\n height: _height\n });\n };\n\n _proto.focalPoint = function focalPoint(x, y) {\n return this.withOptions({\n focalPoint: {\n x: x,\n y: y\n }\n });\n };\n\n _proto.maxWidth = function maxWidth(_maxWidth) {\n return this.withOptions({\n maxWidth: _maxWidth\n });\n };\n\n _proto.minWidth = function minWidth(_minWidth) {\n return this.withOptions({\n minWidth: _minWidth\n });\n };\n\n _proto.maxHeight = function maxHeight(_maxHeight) {\n return this.withOptions({\n maxHeight: _maxHeight\n });\n };\n\n _proto.minHeight = function minHeight(_minHeight) {\n return this.withOptions({\n minHeight: _minHeight\n });\n };\n\n _proto.size = function size(width, height) {\n return this.withOptions({\n width: width,\n height: height\n });\n };\n\n _proto.blur = function blur(_blur) {\n return this.withOptions({\n blur: _blur\n });\n };\n\n _proto.sharpen = function sharpen(_sharpen) {\n return this.withOptions({\n sharpen: _sharpen\n });\n };\n\n _proto.rect = function rect(left, top, width, height) {\n return this.withOptions({\n rect: {\n left: left,\n top: top,\n width: width,\n height: height\n }\n });\n };\n\n _proto.format = function format(_format) {\n return this.withOptions({\n format: _format\n });\n };\n\n _proto.invert = function invert(_invert) {\n return this.withOptions({\n invert: _invert\n });\n };\n\n _proto.orientation = function orientation(_orientation) {\n return this.withOptions({\n orientation: _orientation\n });\n };\n\n _proto.quality = function quality(_quality) {\n return this.withOptions({\n quality: _quality\n });\n };\n\n _proto.forceDownload = function forceDownload(download) {\n return this.withOptions({\n download: download\n });\n };\n\n _proto.flipHorizontal = function flipHorizontal() {\n return this.withOptions({\n flipHorizontal: true\n });\n };\n\n _proto.flipVertical = function flipVertical() {\n return this.withOptions({\n flipVertical: true\n });\n };\n\n _proto.ignoreImageParams = function ignoreImageParams() {\n return this.withOptions({\n ignoreImageParams: true\n });\n };\n\n _proto.fit = function fit(value) {\n if (validFits.indexOf(value) === -1) {\n throw new Error(\"Invalid fit mode \\\"\" + value + \"\\\"\");\n }\n\n return this.withOptions({\n fit: value\n });\n };\n\n _proto.crop = function crop(value) {\n if (validCrops.indexOf(value) === -1) {\n throw new Error(\"Invalid crop mode \\\"\" + value + \"\\\"\");\n }\n\n return this.withOptions({\n crop: value\n });\n };\n\n _proto.saturation = function saturation(_saturation) {\n return this.withOptions({\n saturation: _saturation\n });\n };\n\n _proto.auto = function auto(value) {\n if (validAutoModes.indexOf(value) === -1) {\n throw new Error(\"Invalid auto mode \\\"\" + value + \"\\\"\");\n }\n\n return this.withOptions({\n auto: value\n });\n };\n\n _proto.url = function url() {\n return urlForImage(this.options);\n };\n\n _proto.toString = function toString() {\n return this.url();\n };\n\n return ImageUrlBuilder;\n }();\n\n return urlBuilder;\n});","var MILLISECONDS_IN_MINUTE = 60000;\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\n\nmodule.exports = function getTimezoneOffsetInMilliseconds(dirtyDate) {\n var date = new Date(dirtyDate.getTime());\n var baseTimezoneOffset = date.getTimezoneOffset();\n date.setSeconds(0, 0);\n var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE;\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset;\n};","var parse = require('../parse/index.js');\n/**\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added\n * @returns {Date} the new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * var result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\n\nfunction addDays(dirtyDate, dirtyAmount) {\n var date = parse(dirtyDate);\n var amount = Number(dirtyAmount);\n date.setDate(date.getDate() + amount);\n return date;\n}\n\nmodule.exports = addDays;","var addMilliseconds = require('../add_milliseconds/index.js');\n\nvar MILLISECONDS_IN_HOUR = 3600000;\n/**\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added\n * @returns {Date} the new date with the hours added\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * var result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\n\nfunction addHours(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}\n\nmodule.exports = addHours;","var getISOYear = require('../get_iso_year/index.js');\n\nvar setISOYear = require('../set_iso_year/index.js');\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Add the specified number of ISO week-numbering years to the given date.\n *\n * @description\n * Add the specified number of ISO week-numbering years to the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be added\n * @returns {Date} the new date with the ISO week-numbering years added\n *\n * @example\n * // Add 5 ISO week-numbering years to 2 July 2010:\n * var result = addISOYears(new Date(2010, 6, 2), 5)\n * //=> Fri Jun 26 2015 00:00:00\n */\n\n\nfunction addISOYears(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return setISOYear(dirtyDate, getISOYear(dirtyDate) + amount);\n}\n\nmodule.exports = addISOYears;","var parse = require('../parse/index.js');\n/**\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @returns {Date} the new date with the milliseconds added\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\n\nfunction addMilliseconds(dirtyDate, dirtyAmount) {\n var timestamp = parse(dirtyDate).getTime();\n var amount = Number(dirtyAmount);\n return new Date(timestamp + amount);\n}\n\nmodule.exports = addMilliseconds;","var addMilliseconds = require('../add_milliseconds/index.js');\n\nvar MILLISECONDS_IN_MINUTE = 60000;\n/**\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added\n * @returns {Date} the new date with the minutes added\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * var result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\n\nfunction addMinutes(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}\n\nmodule.exports = addMinutes;","var parse = require('../parse/index.js');\n\nvar getDaysInMonth = require('../get_days_in_month/index.js');\n/**\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added\n * @returns {Date} the new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * var result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\n\n\nfunction addMonths(dirtyDate, dirtyAmount) {\n var date = parse(dirtyDate);\n var amount = Number(dirtyAmount);\n var desiredMonth = date.getMonth() + amount;\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth); // Set the last day of the new month\n // if the original date was the last day of the longer month\n\n date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate()));\n return date;\n}\n\nmodule.exports = addMonths;","var addMonths = require('../add_months/index.js');\n/**\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added\n * @returns {Date} the new date with the quarters added\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * var result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\n\n\nfunction addQuarters(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n var months = amount * 3;\n return addMonths(dirtyDate, months);\n}\n\nmodule.exports = addQuarters;","var addMilliseconds = require('../add_milliseconds/index.js');\n/**\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added\n * @returns {Date} the new date with the seconds added\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * var result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\n\n\nfunction addSeconds(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * 1000);\n}\n\nmodule.exports = addSeconds;","var addDays = require('../add_days/index.js');\n/**\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added\n * @returns {Date} the new date with the weeks added\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * var result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\n\n\nfunction addWeeks(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}\n\nmodule.exports = addWeeks;","var addMonths = require('../add_months/index.js');\n/**\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added\n * @returns {Date} the new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * var result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\n\n\nfunction addYears(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}\n\nmodule.exports = addYears;","var parse = require('../parse/index.js');\n/**\n * @category Range Helpers\n * @summary Is the given date range overlapping with another date range?\n *\n * @description\n * Is the given date range overlapping with another date range?\n *\n * @param {Date|String|Number} initialRangeStartDate - the start of the initial range\n * @param {Date|String|Number} initialRangeEndDate - the end of the initial range\n * @param {Date|String|Number} comparedRangeStartDate - the start of the range to compare it with\n * @param {Date|String|Number} comparedRangeEndDate - the end of the range to compare it with\n * @returns {Boolean} whether the date ranges are overlapping\n * @throws {Error} startDate of a date range cannot be after its endDate\n *\n * @example\n * // For overlapping date ranges:\n * areRangesOverlapping(\n * new Date(2014, 0, 10), new Date(2014, 0, 20), new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n * //=> true\n *\n * @example\n * // For non-overlapping date ranges:\n * areRangesOverlapping(\n * new Date(2014, 0, 10), new Date(2014, 0, 20), new Date(2014, 0, 21), new Date(2014, 0, 22)\n * )\n * //=> false\n */\n\n\nfunction areRangesOverlapping(dirtyInitialRangeStartDate, dirtyInitialRangeEndDate, dirtyComparedRangeStartDate, dirtyComparedRangeEndDate) {\n var initialStartTime = parse(dirtyInitialRangeStartDate).getTime();\n var initialEndTime = parse(dirtyInitialRangeEndDate).getTime();\n var comparedStartTime = parse(dirtyComparedRangeStartDate).getTime();\n var comparedEndTime = parse(dirtyComparedRangeEndDate).getTime();\n\n if (initialStartTime > initialEndTime || comparedStartTime > comparedEndTime) {\n throw new Error('The start of the range cannot be after the end of the range');\n }\n\n return initialStartTime < comparedEndTime && comparedStartTime < initialEndTime;\n}\n\nmodule.exports = areRangesOverlapping;","var parse = require('../parse/index.js');\n/**\n * @category Common Helpers\n * @summary Return an index of the closest date from the array comparing to the given date.\n *\n * @description\n * Return an index of the closest date from the array comparing to the given date.\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date[]|String[]|Number[]} datesArray - the array to search\n * @returns {Number} an index of the date closest to the given date\n * @throws {TypeError} the second argument must be an instance of Array\n *\n * @example\n * // Which date is closer to 6 September 2015?\n * var dateToCompare = new Date(2015, 8, 6)\n * var datesArray = [\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * new Date(2017, 0, 1)\n * ]\n * var result = closestIndexTo(dateToCompare, datesArray)\n * //=> 1\n */\n\n\nfunction closestIndexTo(dirtyDateToCompare, dirtyDatesArray) {\n if (!(dirtyDatesArray instanceof Array)) {\n throw new TypeError(toString.call(dirtyDatesArray) + ' is not an instance of Array');\n }\n\n var dateToCompare = parse(dirtyDateToCompare);\n var timeToCompare = dateToCompare.getTime();\n var result;\n var minDistance;\n dirtyDatesArray.forEach(function (dirtyDate, index) {\n var currentDate = parse(dirtyDate);\n var distance = Math.abs(timeToCompare - currentDate.getTime());\n\n if (result === undefined || distance < minDistance) {\n result = index;\n minDistance = distance;\n }\n });\n return result;\n}\n\nmodule.exports = closestIndexTo;","var parse = require('../parse/index.js');\n/**\n * @category Common Helpers\n * @summary Return a date from the array closest to the given date.\n *\n * @description\n * Return a date from the array closest to the given date.\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date[]|String[]|Number[]} datesArray - the array to search\n * @returns {Date} the date from the array closest to the given date\n * @throws {TypeError} the second argument must be an instance of Array\n *\n * @example\n * // Which date is closer to 6 September 2015: 1 January 2000 or 1 January 2030?\n * var dateToCompare = new Date(2015, 8, 6)\n * var result = closestTo(dateToCompare, [\n * new Date(2000, 0, 1),\n * new Date(2030, 0, 1)\n * ])\n * //=> Tue Jan 01 2030 00:00:00\n */\n\n\nfunction closestTo(dirtyDateToCompare, dirtyDatesArray) {\n if (!(dirtyDatesArray instanceof Array)) {\n throw new TypeError(toString.call(dirtyDatesArray) + ' is not an instance of Array');\n }\n\n var dateToCompare = parse(dirtyDateToCompare);\n var timeToCompare = dateToCompare.getTime();\n var result;\n var minDistance;\n dirtyDatesArray.forEach(function (dirtyDate) {\n var currentDate = parse(dirtyDate);\n var distance = Math.abs(timeToCompare - currentDate.getTime());\n\n if (result === undefined || distance < minDistance) {\n result = currentDate;\n minDistance = distance;\n }\n });\n return result;\n}\n\nmodule.exports = closestTo;","var parse = require('../parse/index.js');\n/**\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * var result = compareAsc(\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * )\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\n\n\nfunction compareAsc(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var timeLeft = dateLeft.getTime();\n var dateRight = parse(dirtyDateRight);\n var timeRight = dateRight.getTime();\n\n if (timeLeft < timeRight) {\n return -1;\n } else if (timeLeft > timeRight) {\n return 1;\n } else {\n return 0;\n }\n}\n\nmodule.exports = compareAsc;","var parse = require('../parse/index.js');\n/**\n * @category Common Helpers\n * @summary Compare the two dates reverse chronologically and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return -1 if the first date is after the second,\n * 1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989 reverse chronologically:\n * var result = compareDesc(\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * )\n * //=> 1\n *\n * @example\n * // Sort the array of dates in reverse chronological order:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareDesc)\n * //=> [\n * // Sun Jul 02 1995 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Wed Feb 11 1987 00:00:00\n * // ]\n */\n\n\nfunction compareDesc(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var timeLeft = dateLeft.getTime();\n var dateRight = parse(dirtyDateRight);\n var timeRight = dateRight.getTime();\n\n if (timeLeft > timeRight) {\n return -1;\n } else if (timeLeft < timeRight) {\n return 1;\n } else {\n return 0;\n }\n}\n\nmodule.exports = compareDesc;","var startOfDay = require('../start_of_day/index.js');\n\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_DAY = 86400000;\n/**\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n */\n\nfunction differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - startOfDayLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE;\n var timestampRight = startOfDayRight.getTime() - startOfDayRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE; // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}\n\nmodule.exports = differenceInCalendarDays;","var startOfISOWeek = require('../start_of_iso_week/index.js');\n\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @category ISO Week Helpers\n * @summary Get the number of calendar ISO weeks between the given dates.\n *\n * @description\n * Get the number of calendar ISO weeks between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO weeks\n *\n * @example\n * // How many calendar ISO weeks are between 6 July 2014 and 21 July 2014?\n * var result = differenceInCalendarISOWeeks(\n * new Date(2014, 6, 21),\n * new Date(2014, 6, 6)\n * )\n * //=> 3\n */\n\nfunction differenceInCalendarISOWeeks(dirtyDateLeft, dirtyDateRight) {\n var startOfISOWeekLeft = startOfISOWeek(dirtyDateLeft);\n var startOfISOWeekRight = startOfISOWeek(dirtyDateRight);\n var timestampLeft = startOfISOWeekLeft.getTime() - startOfISOWeekLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE;\n var timestampRight = startOfISOWeekRight.getTime() - startOfISOWeekRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE; // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}\n\nmodule.exports = differenceInCalendarISOWeeks;","var getISOYear = require('../get_iso_year/index.js');\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of calendar ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of calendar ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO week-numbering years\n *\n * @example\n * // How many calendar ISO week-numbering years are 1 January 2010 and 1 January 2012?\n * var result = differenceInCalendarISOYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 2\n */\n\n\nfunction differenceInCalendarISOYears(dirtyDateLeft, dirtyDateRight) {\n return getISOYear(dirtyDateLeft) - getISOYear(dirtyDateRight);\n}\n\nmodule.exports = differenceInCalendarISOYears;","var parse = require('../parse/index.js');\n/**\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\n\n\nfunction differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}\n\nmodule.exports = differenceInCalendarMonths;","var getQuarter = require('../get_quarter/index.js');\n\nvar parse = require('../parse/index.js');\n/**\n * @category Quarter Helpers\n * @summary Get the number of calendar quarters between the given dates.\n *\n * @description\n * Get the number of calendar quarters between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar quarters\n *\n * @example\n * // How many calendar quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInCalendarQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 3\n */\n\n\nfunction differenceInCalendarQuarters(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var quarterDiff = getQuarter(dateLeft) - getQuarter(dateRight);\n return yearDiff * 4 + quarterDiff;\n}\n\nmodule.exports = differenceInCalendarQuarters;","var startOfWeek = require('../start_of_week/index.js');\n\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * {weekStartsOn: 1}\n * )\n * //=> 2\n */\n\nfunction differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, dirtyOptions);\n var startOfWeekRight = startOfWeek(dirtyDateRight, dirtyOptions);\n var timestampLeft = startOfWeekLeft.getTime() - startOfWeekLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE;\n var timestampRight = startOfWeekRight.getTime() - startOfWeekRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE; // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}\n\nmodule.exports = differenceInCalendarWeeks;","var parse = require('../parse/index.js');\n/**\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\n\n\nfunction differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}\n\nmodule.exports = differenceInCalendarYears;","var parse = require('../parse/index.js');\n\nvar differenceInCalendarDays = require('../difference_in_calendar_days/index.js');\n\nvar compareAsc = require('../compare_asc/index.js');\n/**\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full days between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full days\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n */\n\n\nfunction differenceInDays(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n dateLeft.setDate(dateLeft.getDate() - sign * difference); // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastDayNotFull = compareAsc(dateLeft, dateRight) === -sign;\n return sign * (difference - isLastDayNotFull);\n}\n\nmodule.exports = differenceInDays;","var differenceInMilliseconds = require('../difference_in_milliseconds/index.js');\n\nvar MILLISECONDS_IN_HOUR = 3600000;\n/**\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of hours\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * var result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\n\nfunction differenceInHours(dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / MILLISECONDS_IN_HOUR;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}\n\nmodule.exports = differenceInHours;","var parse = require('../parse/index.js');\n\nvar differenceInCalendarISOYears = require('../difference_in_calendar_iso_years/index.js');\n\nvar compareAsc = require('../compare_asc/index.js');\n\nvar subISOYears = require('../sub_iso_years/index.js');\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of full ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of full ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full ISO week-numbering years\n *\n * @example\n * // How many full ISO week-numbering years are between 1 January 2010 and 1 January 2012?\n * var result = differenceInISOYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 1\n */\n\n\nfunction differenceInISOYears(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarISOYears(dateLeft, dateRight));\n dateLeft = subISOYears(dateLeft, sign * difference); // Math.abs(diff in full ISO years - diff in calendar ISO years) === 1\n // if last calendar ISO year is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastISOYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n return sign * (difference - isLastISOYearNotFull);\n}\n\nmodule.exports = differenceInISOYears;","var parse = require('../parse/index.js');\n/**\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * var result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\n\n\nfunction differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n return dateLeft.getTime() - dateRight.getTime();\n}\n\nmodule.exports = differenceInMilliseconds;","var differenceInMilliseconds = require('../difference_in_milliseconds/index.js');\n\nvar MILLISECONDS_IN_MINUTE = 60000;\n/**\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the number of minutes between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of minutes\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * var result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n */\n\nfunction differenceInMinutes(dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / MILLISECONDS_IN_MINUTE;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}\n\nmodule.exports = differenceInMinutes;","var parse = require('../parse/index.js');\n\nvar differenceInCalendarMonths = require('../difference_in_calendar_months/index.js');\n\nvar compareAsc = require('../compare_asc/index.js');\n/**\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 7\n */\n\n\nfunction differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference); // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign;\n return sign * (difference - isLastMonthNotFull);\n}\n\nmodule.exports = differenceInMonths;","var differenceInMonths = require('../difference_in_months/index.js');\n/**\n * @category Quarter Helpers\n * @summary Get the number of full quarters between the given dates.\n *\n * @description\n * Get the number of full quarters between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full quarters\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\n\n\nfunction differenceInQuarters(dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMonths(dirtyDateLeft, dirtyDateRight) / 3;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}\n\nmodule.exports = differenceInQuarters;","var differenceInMilliseconds = require('../difference_in_milliseconds/index.js');\n/**\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of seconds\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * var result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\n\n\nfunction differenceInSeconds(dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / 1000;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}\n\nmodule.exports = differenceInSeconds;","var differenceInDays = require('../difference_in_days/index.js');\n/**\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full weeks\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 2\n */\n\n\nfunction differenceInWeeks(dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInDays(dirtyDateLeft, dirtyDateRight) / 7;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}\n\nmodule.exports = differenceInWeeks;","var parse = require('../parse/index.js');\n\nvar differenceInCalendarYears = require('../difference_in_calendar_years/index.js');\n\nvar compareAsc = require('../compare_asc/index.js');\n/**\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 1\n */\n\n\nfunction differenceInYears(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight));\n dateLeft.setFullYear(dateLeft.getFullYear() - sign * difference); // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n return sign * (difference - isLastYearNotFull);\n}\n\nmodule.exports = differenceInYears;","var compareDesc = require('../compare_desc/index.js');\n\nvar parse = require('../parse/index.js');\n\nvar differenceInSeconds = require('../difference_in_seconds/index.js');\n\nvar differenceInMonths = require('../difference_in_months/index.js');\n\nvar enLocale = require('../locale/en/index.js');\n\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_TWO_MONTHS = 86400;\n/**\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date|String|Number} date - the other date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Object} [options.locale=enLocale] - the locale object\n * @returns {String} the distance in words\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = distanceInWords(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 1)\n * )\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * var result = distanceInWords(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = distanceInWords(\n * new Date(2016, 0, 1),\n * new Date(2015, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = distanceInWords(\n * new Date(2016, 7, 1),\n * new Date(2015, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\n\nfunction distanceInWords(dirtyDateToCompare, dirtyDate, dirtyOptions) {\n var options = dirtyOptions || {};\n var comparison = compareDesc(dirtyDateToCompare, dirtyDate);\n var locale = options.locale;\n var localize = enLocale.distanceInWords.localize;\n\n if (locale && locale.distanceInWords && locale.distanceInWords.localize) {\n localize = locale.distanceInWords.localize;\n }\n\n var localizeOptions = {\n addSuffix: Boolean(options.addSuffix),\n comparison: comparison\n };\n var dateLeft, dateRight;\n\n if (comparison > 0) {\n dateLeft = parse(dirtyDateToCompare);\n dateRight = parse(dirtyDate);\n } else {\n dateLeft = parse(dirtyDate);\n dateRight = parse(dirtyDateToCompare);\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offset = dateRight.getTimezoneOffset() - dateLeft.getTimezoneOffset();\n var minutes = Math.round(seconds / 60) - offset;\n var months; // 0 up to 2 mins\n\n if (minutes < 2) {\n if (options.includeSeconds) {\n if (seconds < 5) {\n return localize('lessThanXSeconds', 5, localizeOptions);\n } else if (seconds < 10) {\n return localize('lessThanXSeconds', 10, localizeOptions);\n } else if (seconds < 20) {\n return localize('lessThanXSeconds', 20, localizeOptions);\n } else if (seconds < 40) {\n return localize('halfAMinute', null, localizeOptions);\n } else if (seconds < 60) {\n return localize('lessThanXMinutes', 1, localizeOptions);\n } else {\n return localize('xMinutes', 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return localize('lessThanXMinutes', 1, localizeOptions);\n } else {\n return localize('xMinutes', minutes, localizeOptions);\n }\n } // 2 mins up to 0.75 hrs\n\n } else if (minutes < 45) {\n return localize('xMinutes', minutes, localizeOptions); // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return localize('aboutXHours', 1, localizeOptions); // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60);\n return localize('aboutXHours', hours, localizeOptions); // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return localize('xDays', 1, localizeOptions); // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY);\n return localize('xDays', days, localizeOptions); // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH);\n return localize('aboutXMonths', months, localizeOptions);\n }\n\n months = differenceInMonths(dateRight, dateLeft); // 2 months up to 12 months\n\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH);\n return localize('xMonths', nearestMonth, localizeOptions); // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12;\n var years = Math.floor(months / 12); // N years up to 1 years 3 months\n\n if (monthsSinceStartOfYear < 3) {\n return localize('aboutXYears', years, localizeOptions); // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return localize('overXYears', years, localizeOptions); // N years 9 months up to N year 12 months\n } else {\n return localize('almostXYears', years + 1, localizeOptions);\n }\n }\n}\n\nmodule.exports = distanceInWords;","var compareDesc = require('../compare_desc/index.js');\n\nvar parse = require('../parse/index.js');\n\nvar differenceInSeconds = require('../difference_in_seconds/index.js');\n\nvar enLocale = require('../locale/en/index.js');\n\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_YEAR = 525600;\n/**\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `distanceInWords`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date|String|Number} date - the other date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'s'|'m'|'h'|'d'|'M'|'Y'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.partialMethod='floor'] - which way to round partial units\n * @param {Object} [options.locale=enLocale] - the locale object\n * @returns {String} the distance in words\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = distanceInWordsStrict(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00?\n * var result = distanceInWordsStrict(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * )\n * //=> '15 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = distanceInWordsStrict(\n * new Date(2016, 0, 1),\n * new Date(2015, 0, 1),\n * {addSuffix: true}\n * )\n * //=> '1 year ago'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, in minutes?\n * var result = distanceInWordsStrict(\n * new Date(2016, 0, 1),\n * new Date(2015, 0, 1),\n * {unit: 'm'}\n * )\n * //=> '525600 minutes'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 28 January 2015, in months, rounded up?\n * var result = distanceInWordsStrict(\n * new Date(2015, 0, 28),\n * new Date(2015, 0, 1),\n * {unit: 'M', partialMethod: 'ceil'}\n * )\n * //=> '1 month'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = distanceInWordsStrict(\n * new Date(2016, 7, 1),\n * new Date(2015, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> '1 jaro'\n */\n\nfunction distanceInWordsStrict(dirtyDateToCompare, dirtyDate, dirtyOptions) {\n var options = dirtyOptions || {};\n var comparison = compareDesc(dirtyDateToCompare, dirtyDate);\n var locale = options.locale;\n var localize = enLocale.distanceInWords.localize;\n\n if (locale && locale.distanceInWords && locale.distanceInWords.localize) {\n localize = locale.distanceInWords.localize;\n }\n\n var localizeOptions = {\n addSuffix: Boolean(options.addSuffix),\n comparison: comparison\n };\n var dateLeft, dateRight;\n\n if (comparison > 0) {\n dateLeft = parse(dirtyDateToCompare);\n dateRight = parse(dirtyDate);\n } else {\n dateLeft = parse(dirtyDate);\n dateRight = parse(dirtyDateToCompare);\n }\n\n var unit;\n var mathPartial = Math[options.partialMethod ? String(options.partialMethod) : 'floor'];\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offset = dateRight.getTimezoneOffset() - dateLeft.getTimezoneOffset();\n var minutes = mathPartial(seconds / 60) - offset;\n var hours, days, months, years;\n\n if (options.unit) {\n unit = String(options.unit);\n } else {\n if (minutes < 1) {\n unit = 's';\n } else if (minutes < 60) {\n unit = 'm';\n } else if (minutes < MINUTES_IN_DAY) {\n unit = 'h';\n } else if (minutes < MINUTES_IN_MONTH) {\n unit = 'd';\n } else if (minutes < MINUTES_IN_YEAR) {\n unit = 'M';\n } else {\n unit = 'Y';\n }\n } // 0 up to 60 seconds\n\n\n if (unit === 's') {\n return localize('xSeconds', seconds, localizeOptions); // 1 up to 60 mins\n } else if (unit === 'm') {\n return localize('xMinutes', minutes, localizeOptions); // 1 up to 24 hours\n } else if (unit === 'h') {\n hours = mathPartial(minutes / 60);\n return localize('xHours', hours, localizeOptions); // 1 up to 30 days\n } else if (unit === 'd') {\n days = mathPartial(minutes / MINUTES_IN_DAY);\n return localize('xDays', days, localizeOptions); // 1 up to 12 months\n } else if (unit === 'M') {\n months = mathPartial(minutes / MINUTES_IN_MONTH);\n return localize('xMonths', months, localizeOptions); // 1 year up to max Date\n } else if (unit === 'Y') {\n years = mathPartial(minutes / MINUTES_IN_YEAR);\n return localize('xYears', years, localizeOptions);\n }\n\n throw new Error('Unknown unit: ' + unit);\n}\n\nmodule.exports = distanceInWordsStrict;","var distanceInWords = require('../distance_in_words/index.js');\n/**\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n *\n * @description\n * Return the distance between the given date and now in words.\n *\n * | Distance to now | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance to now | Result |\n * |---------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|String|Number} date - the given date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result specifies if the second date is earlier or later than the first\n * @param {Object} [options.locale=enLocale] - the locale object\n * @returns {String} the distance in words\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * var result = distanceInWordsToNow(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * var result = distanceInWordsToNow(\n * new Date(2015, 0, 1, 0, 0, 15),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * var result = distanceInWordsToNow(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in about 1 year'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = distanceInWordsToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\n\n\nfunction distanceInWordsToNow(dirtyDate, dirtyOptions) {\n return distanceInWords(Date.now(), dirtyDate, dirtyOptions);\n}\n\nmodule.exports = distanceInWordsToNow;","var parse = require('../parse/index.js');\n/**\n * @category Day Helpers\n * @summary Return the array of dates within the specified range.\n *\n * @description\n * Return the array of dates within the specified range.\n *\n * @param {Date|String|Number} startDate - the first date\n * @param {Date|String|Number} endDate - the last date\n * @param {Number} [step=1] - the step between each day\n * @returns {Date[]} the array with starts of days from the day of startDate to the day of endDate\n * @throws {Error} startDate cannot be after endDate\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * var result = eachDay(\n * new Date(2014, 9, 6),\n * new Date(2014, 9, 10)\n * )\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\n\n\nfunction eachDay(dirtyStartDate, dirtyEndDate, dirtyStep) {\n var startDate = parse(dirtyStartDate);\n var endDate = parse(dirtyEndDate);\n var step = dirtyStep !== undefined ? dirtyStep : 1;\n var endTime = endDate.getTime();\n\n if (startDate.getTime() > endTime) {\n throw new Error('The first date cannot be after the second date');\n }\n\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n\n while (currentDate.getTime() <= endTime) {\n dates.push(parse(currentDate));\n currentDate.setDate(currentDate.getDate() + step);\n }\n\n return dates;\n}\n\nmodule.exports = eachDay;","var parse = require('../parse/index.js');\n/**\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * var result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\n\n\nfunction endOfDay(dirtyDate) {\n var date = parse(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}\n\nmodule.exports = endOfDay;","var parse = require('../parse/index.js');\n/**\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of an hour\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * var result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\n\n\nfunction endOfHour(dirtyDate) {\n var date = parse(dirtyDate);\n date.setMinutes(59, 59, 999);\n return date;\n}\n\nmodule.exports = endOfHour;","var endOfWeek = require('../end_of_week/index.js');\n/**\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of an ISO week\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * var result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\n\n\nfunction endOfISOWeek(dirtyDate) {\n return endOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}\n\nmodule.exports = endOfISOWeek;","var getISOYear = require('../get_iso_year/index.js');\n\nvar startOfISOWeek = require('../start_of_iso_week/index.js');\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the end of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the end of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n *\n * @example\n * // The end of an ISO week-numbering year for 2 July 2005:\n * var result = endOfISOYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 23:59:59.999\n */\n\n\nfunction endOfISOYear(dirtyDate) {\n var year = getISOYear(dirtyDate);\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuaryOfNextYear);\n date.setMilliseconds(date.getMilliseconds() - 1);\n return date;\n}\n\nmodule.exports = endOfISOYear;","var parse = require('../parse/index.js');\n/**\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a minute\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * var result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\n\n\nfunction endOfMinute(dirtyDate) {\n var date = parse(dirtyDate);\n date.setSeconds(59, 999);\n return date;\n}\n\nmodule.exports = endOfMinute;","var parse = require('../parse/index.js');\n/**\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * var result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\n\nfunction endOfMonth(dirtyDate) {\n var date = parse(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}\n\nmodule.exports = endOfMonth;","var parse = require('../parse/index.js');\n/**\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a quarter\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * var result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\n\nfunction endOfQuarter(dirtyDate) {\n var date = parse(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3 + 3;\n date.setMonth(month, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}\n\nmodule.exports = endOfQuarter;","var parse = require('../parse/index.js');\n/**\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a second\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * var result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\n\n\nfunction endOfSecond(dirtyDate) {\n var date = parse(dirtyDate);\n date.setMilliseconds(999);\n return date;\n}\n\nmodule.exports = endOfSecond;","var endOfDay = require('../end_of_day/index.js');\n/**\n * @category Day Helpers\n * @summary Return the end of today.\n *\n * @description\n * Return the end of today.\n *\n * @returns {Date} the end of today\n *\n * @example\n * // If today is 6 October 2014:\n * var result = endOfToday()\n * //=> Mon Oct 6 2014 23:59:59.999\n */\n\n\nfunction endOfToday() {\n return endOfDay(new Date());\n}\n\nmodule.exports = endOfToday;","/**\n * @category Day Helpers\n * @summary Return the end of tomorrow.\n *\n * @description\n * Return the end of tomorrow.\n *\n * @returns {Date} the end of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * var result = endOfTomorrow()\n * //=> Tue Oct 7 2014 23:59:59.999\n */\nfunction endOfTomorrow() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day + 1);\n date.setHours(23, 59, 59, 999);\n return date;\n}\n\nmodule.exports = endOfTomorrow;","var parse = require('../parse/index.js');\n/**\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 23:59:59.999\n */\n\n\nfunction endOfWeek(dirtyDate, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? Number(dirtyOptions.weekStartsOn) || 0 : 0;\n var date = parse(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}\n\nmodule.exports = endOfWeek;","var parse = require('../parse/index.js');\n/**\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a year\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * var result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\n\n\nfunction endOfYear(dirtyDate) {\n var date = parse(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}\n\nmodule.exports = endOfYear;","/**\n * @category Day Helpers\n * @summary Return the end of yesterday.\n *\n * @description\n * Return the end of yesterday.\n *\n * @returns {Date} the end of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * var result = endOfYesterday()\n * //=> Sun Oct 5 2014 23:59:59.999\n */\nfunction endOfYesterday() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day - 1);\n date.setHours(23, 59, 59, 999);\n return date;\n}\n\nmodule.exports = endOfYesterday;","var getDayOfYear = require('../get_day_of_year/index.js');\n\nvar getISOWeek = require('../get_iso_week/index.js');\n\nvar getISOYear = require('../get_iso_year/index.js');\n\nvar parse = require('../parse/index.js');\n\nvar isValid = require('../is_valid/index.js');\n\nvar enLocale = require('../locale/en/index.js');\n/**\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format.\n *\n * Accepted tokens:\n * | Unit | Token | Result examples |\n * |-------------------------|-------|----------------------------------|\n * | Month | M | 1, 2, ..., 12 |\n * | | Mo | 1st, 2nd, ..., 12th |\n * | | MM | 01, 02, ..., 12 |\n * | | MMM | Jan, Feb, ..., Dec |\n * | | MMMM | January, February, ..., December |\n * | Quarter | Q | 1, 2, 3, 4 |\n * | | Qo | 1st, 2nd, 3rd, 4th |\n * | Day of month | D | 1, 2, ..., 31 |\n * | | Do | 1st, 2nd, ..., 31st |\n * | | DD | 01, 02, ..., 31 |\n * | Day of year | DDD | 1, 2, ..., 366 |\n * | | DDDo | 1st, 2nd, ..., 366th |\n * | | DDDD | 001, 002, ..., 366 |\n * | Day of week | d | 0, 1, ..., 6 |\n * | | do | 0th, 1st, ..., 6th |\n * | | dd | Su, Mo, ..., Sa |\n * | | ddd | Sun, Mon, ..., Sat |\n * | | dddd | Sunday, Monday, ..., Saturday |\n * | Day of ISO week | E | 1, 2, ..., 7 |\n * | ISO week | W | 1, 2, ..., 53 |\n * | | Wo | 1st, 2nd, ..., 53rd |\n * | | WW | 01, 02, ..., 53 |\n * | Year | YY | 00, 01, ..., 99 |\n * | | YYYY | 1900, 1901, ..., 2099 |\n * | ISO week-numbering year | GG | 00, 01, ..., 99 |\n * | | GGGG | 1900, 1901, ..., 2099 |\n * | AM/PM | A | AM, PM |\n * | | a | am, pm |\n * | | aa | a.m., p.m. |\n * | Hour | H | 0, 1, ... 23 |\n * | | HH | 00, 01, ... 23 |\n * | | h | 1, 2, ..., 12 |\n * | | hh | 01, 02, ..., 12 |\n * | Minute | m | 0, 1, ..., 59 |\n * | | mm | 00, 01, ..., 59 |\n * | Second | s | 0, 1, ..., 59 |\n * | | ss | 00, 01, ..., 59 |\n * | 1/10 of second | S | 0, 1, ..., 9 |\n * | 1/100 of second | SS | 00, 01, ..., 99 |\n * | Millisecond | SSS | 000, 001, ..., 999 |\n * | Timezone | Z | -01:00, +00:00, ... +12:00 |\n * | | ZZ | -0100, +0000, ..., +1200 |\n * | Seconds timestamp | X | 512969520 |\n * | Milliseconds timestamp | x | 512969520900 |\n *\n * The characters wrapped in square brackets are escaped.\n *\n * The result may vary by locale.\n *\n * @param {Date|String|Number} date - the original date\n * @param {String} [format='YYYY-MM-DDTHH:mm:ss.SSSZ'] - the string of tokens\n * @param {Object} [options] - the object with options\n * @param {Object} [options.locale=enLocale] - the locale object\n * @returns {String} the formatted date string\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(\n * new Date(2014, 1, 11),\n * 'MM/DD/YYYY'\n * )\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * var eoLocale = require('date-fns/locale/eo')\n * var result = format(\n * new Date(2014, 6, 2),\n * 'Do [de] MMMM YYYY',\n * {locale: eoLocale}\n * )\n * //=> '2-a de julio 2014'\n */\n\n\nfunction format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n var formatStr = dirtyFormatStr ? String(dirtyFormatStr) : 'YYYY-MM-DDTHH:mm:ss.SSSZ';\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFormatters = enLocale.format.formatters;\n var formattingTokensRegExp = enLocale.format.formattingTokensRegExp;\n\n if (locale && locale.format && locale.format.formatters) {\n localeFormatters = locale.format.formatters;\n\n if (locale.format.formattingTokensRegExp) {\n formattingTokensRegExp = locale.format.formattingTokensRegExp;\n }\n }\n\n var date = parse(dirtyDate);\n\n if (!isValid(date)) {\n return 'Invalid Date';\n }\n\n var formatFn = buildFormatFn(formatStr, localeFormatters, formattingTokensRegExp);\n return formatFn(date);\n}\n\nvar formatters = {\n // Month: 1, 2, ..., 12\n 'M': function M(date) {\n return date.getMonth() + 1;\n },\n // Month: 01, 02, ..., 12\n 'MM': function MM(date) {\n return addLeadingZeros(date.getMonth() + 1, 2);\n },\n // Quarter: 1, 2, 3, 4\n 'Q': function Q(date) {\n return Math.ceil((date.getMonth() + 1) / 3);\n },\n // Day of month: 1, 2, ..., 31\n 'D': function D(date) {\n return date.getDate();\n },\n // Day of month: 01, 02, ..., 31\n 'DD': function DD(date) {\n return addLeadingZeros(date.getDate(), 2);\n },\n // Day of year: 1, 2, ..., 366\n 'DDD': function DDD(date) {\n return getDayOfYear(date);\n },\n // Day of year: 001, 002, ..., 366\n 'DDDD': function DDDD(date) {\n return addLeadingZeros(getDayOfYear(date), 3);\n },\n // Day of week: 0, 1, ..., 6\n 'd': function d(date) {\n return date.getDay();\n },\n // Day of ISO week: 1, 2, ..., 7\n 'E': function E(date) {\n return date.getDay() || 7;\n },\n // ISO week: 1, 2, ..., 53\n 'W': function W(date) {\n return getISOWeek(date);\n },\n // ISO week: 01, 02, ..., 53\n 'WW': function WW(date) {\n return addLeadingZeros(getISOWeek(date), 2);\n },\n // Year: 00, 01, ..., 99\n 'YY': function YY(date) {\n return addLeadingZeros(date.getFullYear(), 4).substr(2);\n },\n // Year: 1900, 1901, ..., 2099\n 'YYYY': function YYYY(date) {\n return addLeadingZeros(date.getFullYear(), 4);\n },\n // ISO week-numbering year: 00, 01, ..., 99\n 'GG': function GG(date) {\n return String(getISOYear(date)).substr(2);\n },\n // ISO week-numbering year: 1900, 1901, ..., 2099\n 'GGGG': function GGGG(date) {\n return getISOYear(date);\n },\n // Hour: 0, 1, ... 23\n 'H': function H(date) {\n return date.getHours();\n },\n // Hour: 00, 01, ..., 23\n 'HH': function HH(date) {\n return addLeadingZeros(date.getHours(), 2);\n },\n // Hour: 1, 2, ..., 12\n 'h': function h(date) {\n var hours = date.getHours();\n\n if (hours === 0) {\n return 12;\n } else if (hours > 12) {\n return hours % 12;\n } else {\n return hours;\n }\n },\n // Hour: 01, 02, ..., 12\n 'hh': function hh(date) {\n return addLeadingZeros(formatters['h'](date), 2);\n },\n // Minute: 0, 1, ..., 59\n 'm': function m(date) {\n return date.getMinutes();\n },\n // Minute: 00, 01, ..., 59\n 'mm': function mm(date) {\n return addLeadingZeros(date.getMinutes(), 2);\n },\n // Second: 0, 1, ..., 59\n 's': function s(date) {\n return date.getSeconds();\n },\n // Second: 00, 01, ..., 59\n 'ss': function ss(date) {\n return addLeadingZeros(date.getSeconds(), 2);\n },\n // 1/10 of second: 0, 1, ..., 9\n 'S': function S(date) {\n return Math.floor(date.getMilliseconds() / 100);\n },\n // 1/100 of second: 00, 01, ..., 99\n 'SS': function SS(date) {\n return addLeadingZeros(Math.floor(date.getMilliseconds() / 10), 2);\n },\n // Millisecond: 000, 001, ..., 999\n 'SSS': function SSS(date) {\n return addLeadingZeros(date.getMilliseconds(), 3);\n },\n // Timezone: -01:00, +00:00, ... +12:00\n 'Z': function Z(date) {\n return formatTimezone(date.getTimezoneOffset(), ':');\n },\n // Timezone: -0100, +0000, ... +1200\n 'ZZ': function ZZ(date) {\n return formatTimezone(date.getTimezoneOffset());\n },\n // Seconds timestamp: 512969520\n 'X': function X(date) {\n return Math.floor(date.getTime() / 1000);\n },\n // Milliseconds timestamp: 512969520900\n 'x': function x(date) {\n return date.getTime();\n }\n};\n\nfunction buildFormatFn(formatStr, localeFormatters, formattingTokensRegExp) {\n var array = formatStr.match(formattingTokensRegExp);\n var length = array.length;\n var i;\n var formatter;\n\n for (i = 0; i < length; i++) {\n formatter = localeFormatters[array[i]] || formatters[array[i]];\n\n if (formatter) {\n array[i] = formatter;\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (date) {\n var output = '';\n\n for (var i = 0; i < length; i++) {\n if (array[i] instanceof Function) {\n output += array[i](date, formatters);\n } else {\n output += array[i];\n }\n }\n\n return output;\n };\n}\n\nfunction removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|]$/g, '');\n }\n\n return input.replace(/\\\\/g, '');\n}\n\nfunction formatTimezone(offset, delimeter) {\n delimeter = delimeter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n return sign + addLeadingZeros(hours, 2) + delimeter + addLeadingZeros(minutes, 2);\n}\n\nfunction addLeadingZeros(number, targetLength) {\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return output;\n}\n\nmodule.exports = format;","var parse = require('../parse/index.js');\n/**\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the day of month\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * var result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\n\n\nfunction getDate(dirtyDate) {\n var date = parse(dirtyDate);\n var dayOfMonth = date.getDate();\n return dayOfMonth;\n}\n\nmodule.exports = getDate;","var parse = require('../parse/index.js');\n/**\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the day of week\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * var result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\n\n\nfunction getDay(dirtyDate) {\n var date = parse(dirtyDate);\n var day = date.getDay();\n return day;\n}\n\nmodule.exports = getDay;","var parse = require('../parse/index.js');\n\nvar startOfYear = require('../start_of_year/index.js');\n\nvar differenceInCalendarDays = require('../difference_in_calendar_days/index.js');\n/**\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * var result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\n\n\nfunction getDayOfYear(dirtyDate) {\n var date = parse(dirtyDate);\n var diff = differenceInCalendarDays(date, startOfYear(date));\n var dayOfYear = diff + 1;\n return dayOfYear;\n}\n\nmodule.exports = getDayOfYear;","var parse = require('../parse/index.js');\n/**\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the number of days in a month\n *\n * @example\n * // How many days are in February 2000?\n * var result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\n\n\nfunction getDaysInMonth(dirtyDate) {\n var date = parse(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}\n\nmodule.exports = getDaysInMonth;","var isLeapYear = require('../is_leap_year/index.js');\n/**\n * @category Year Helpers\n * @summary Get the number of days in a year of the given date.\n *\n * @description\n * Get the number of days in a year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the number of days in a year\n *\n * @example\n * // How many days are in 2012?\n * var result = getDaysInYear(new Date(2012, 0, 1))\n * //=> 366\n */\n\n\nfunction getDaysInYear(dirtyDate) {\n return isLeapYear(dirtyDate) ? 366 : 365;\n}\n\nmodule.exports = getDaysInYear;","var parse = require('../parse/index.js');\n/**\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the hours\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * var result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\n\n\nfunction getHours(dirtyDate) {\n var date = parse(dirtyDate);\n var hours = date.getHours();\n return hours;\n}\n\nmodule.exports = getHours;","var parse = require('../parse/index.js');\n/**\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the day of ISO week\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * var result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\n\n\nfunction getISODay(dirtyDate) {\n var date = parse(dirtyDate);\n var day = date.getDay();\n\n if (day === 0) {\n day = 7;\n }\n\n return day;\n}\n\nmodule.exports = getISODay;","var parse = require('../parse/index.js');\n\nvar startOfISOWeek = require('../start_of_iso_week/index.js');\n\nvar startOfISOYear = require('../start_of_iso_year/index.js');\n\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * var result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\n\nfunction getISOWeek(dirtyDate) {\n var date = parse(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\n\nmodule.exports = getISOWeek;","var startOfISOYear = require('../start_of_iso_year/index.js');\n\nvar addWeeks = require('../add_weeks/index.js');\n\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * @description\n * Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the number of ISO weeks in a year\n *\n * @example\n * // How many weeks are in ISO week-numbering year 2015?\n * var result = getISOWeeksInYear(new Date(2015, 1, 11))\n * //=> 53\n */\n\nfunction getISOWeeksInYear(dirtyDate) {\n var thisYear = startOfISOYear(dirtyDate);\n var nextYear = startOfISOYear(addWeeks(thisYear, 60));\n var diff = nextYear.valueOf() - thisYear.valueOf(); // Round the number of weeks to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK);\n}\n\nmodule.exports = getISOWeeksInYear;","var parse = require('../parse/index.js');\n\nvar startOfISOWeek = require('../start_of_iso_week/index.js');\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * var result = getISOYear(new Date(2005, 0, 2))\n * //=> 2004\n */\n\n\nfunction getISOYear(dirtyDate) {\n var date = parse(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\nmodule.exports = getISOYear;","var parse = require('../parse/index.js');\n/**\n * @category Millisecond Helpers\n * @summary Get the milliseconds of the given date.\n *\n * @description\n * Get the milliseconds of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the milliseconds\n *\n * @example\n * // Get the milliseconds of 29 February 2012 11:45:05.123:\n * var result = getMilliseconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 123\n */\n\n\nfunction getMilliseconds(dirtyDate) {\n var date = parse(dirtyDate);\n var milliseconds = date.getMilliseconds();\n return milliseconds;\n}\n\nmodule.exports = getMilliseconds;","var parse = require('../parse/index.js');\n/**\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the minutes\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * var result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\n\n\nfunction getMinutes(dirtyDate) {\n var date = parse(dirtyDate);\n var minutes = date.getMinutes();\n return minutes;\n}\n\nmodule.exports = getMinutes;","var parse = require('../parse/index.js');\n/**\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the month\n *\n * @example\n * // Which month is 29 February 2012?\n * var result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\n\n\nfunction getMonth(dirtyDate) {\n var date = parse(dirtyDate);\n var month = date.getMonth();\n return month;\n}\n\nmodule.exports = getMonth;","var parse = require('../parse/index.js');\n\nvar MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000;\n/**\n * @category Range Helpers\n * @summary Get the number of days that overlap in two date ranges\n *\n * @description\n * Get the number of days that overlap in two date ranges\n *\n * @param {Date|String|Number} initialRangeStartDate - the start of the initial range\n * @param {Date|String|Number} initialRangeEndDate - the end of the initial range\n * @param {Date|String|Number} comparedRangeStartDate - the start of the range to compare it with\n * @param {Date|String|Number} comparedRangeEndDate - the end of the range to compare it with\n * @returns {Number} the number of days that overlap in two date ranges\n * @throws {Error} startDate of a date range cannot be after its endDate\n *\n * @example\n * // For overlapping date ranges adds 1 for each started overlapping day:\n * getOverlappingDaysInRanges(\n * new Date(2014, 0, 10), new Date(2014, 0, 20), new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n * //=> 3\n *\n * @example\n * // For non-overlapping date ranges returns 0:\n * getOverlappingDaysInRanges(\n * new Date(2014, 0, 10), new Date(2014, 0, 20), new Date(2014, 0, 21), new Date(2014, 0, 22)\n * )\n * //=> 0\n */\n\nfunction getOverlappingDaysInRanges(dirtyInitialRangeStartDate, dirtyInitialRangeEndDate, dirtyComparedRangeStartDate, dirtyComparedRangeEndDate) {\n var initialStartTime = parse(dirtyInitialRangeStartDate).getTime();\n var initialEndTime = parse(dirtyInitialRangeEndDate).getTime();\n var comparedStartTime = parse(dirtyComparedRangeStartDate).getTime();\n var comparedEndTime = parse(dirtyComparedRangeEndDate).getTime();\n\n if (initialStartTime > initialEndTime || comparedStartTime > comparedEndTime) {\n throw new Error('The start of the range cannot be after the end of the range');\n }\n\n var isOverlapping = initialStartTime < comparedEndTime && comparedStartTime < initialEndTime;\n\n if (!isOverlapping) {\n return 0;\n }\n\n var overlapStartDate = comparedStartTime < initialStartTime ? initialStartTime : comparedStartTime;\n var overlapEndDate = comparedEndTime > initialEndTime ? initialEndTime : comparedEndTime;\n var differenceInMs = overlapEndDate - overlapStartDate;\n return Math.ceil(differenceInMs / MILLISECONDS_IN_DAY);\n}\n\nmodule.exports = getOverlappingDaysInRanges;","var parse = require('../parse/index.js');\n/**\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the quarter\n *\n * @example\n * // Which quarter is 2 July 2014?\n * var result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\n\n\nfunction getQuarter(dirtyDate) {\n var date = parse(dirtyDate);\n var quarter = Math.floor(date.getMonth() / 3) + 1;\n return quarter;\n}\n\nmodule.exports = getQuarter;","var parse = require('../parse/index.js');\n/**\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the seconds\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * var result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\n\n\nfunction getSeconds(dirtyDate) {\n var date = parse(dirtyDate);\n var seconds = date.getSeconds();\n return seconds;\n}\n\nmodule.exports = getSeconds;","var parse = require('../parse/index.js');\n/**\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the timestamp\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * var result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\n\n\nfunction getTime(dirtyDate) {\n var date = parse(dirtyDate);\n var timestamp = date.getTime();\n return timestamp;\n}\n\nmodule.exports = getTime;","var parse = require('../parse/index.js');\n/**\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the year\n *\n * @example\n * // Which year is 2 July 2014?\n * var result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\n\n\nfunction getYear(dirtyDate) {\n var date = parse(dirtyDate);\n var year = date.getFullYear();\n return year;\n}\n\nmodule.exports = getYear;","module.exports = {\n addDays: require('./add_days/index.js'),\n addHours: require('./add_hours/index.js'),\n addISOYears: require('./add_iso_years/index.js'),\n addMilliseconds: require('./add_milliseconds/index.js'),\n addMinutes: require('./add_minutes/index.js'),\n addMonths: require('./add_months/index.js'),\n addQuarters: require('./add_quarters/index.js'),\n addSeconds: require('./add_seconds/index.js'),\n addWeeks: require('./add_weeks/index.js'),\n addYears: require('./add_years/index.js'),\n areRangesOverlapping: require('./are_ranges_overlapping/index.js'),\n closestIndexTo: require('./closest_index_to/index.js'),\n closestTo: require('./closest_to/index.js'),\n compareAsc: require('./compare_asc/index.js'),\n compareDesc: require('./compare_desc/index.js'),\n differenceInCalendarDays: require('./difference_in_calendar_days/index.js'),\n differenceInCalendarISOWeeks: require('./difference_in_calendar_iso_weeks/index.js'),\n differenceInCalendarISOYears: require('./difference_in_calendar_iso_years/index.js'),\n differenceInCalendarMonths: require('./difference_in_calendar_months/index.js'),\n differenceInCalendarQuarters: require('./difference_in_calendar_quarters/index.js'),\n differenceInCalendarWeeks: require('./difference_in_calendar_weeks/index.js'),\n differenceInCalendarYears: require('./difference_in_calendar_years/index.js'),\n differenceInDays: require('./difference_in_days/index.js'),\n differenceInHours: require('./difference_in_hours/index.js'),\n differenceInISOYears: require('./difference_in_iso_years/index.js'),\n differenceInMilliseconds: require('./difference_in_milliseconds/index.js'),\n differenceInMinutes: require('./difference_in_minutes/index.js'),\n differenceInMonths: require('./difference_in_months/index.js'),\n differenceInQuarters: require('./difference_in_quarters/index.js'),\n differenceInSeconds: require('./difference_in_seconds/index.js'),\n differenceInWeeks: require('./difference_in_weeks/index.js'),\n differenceInYears: require('./difference_in_years/index.js'),\n distanceInWords: require('./distance_in_words/index.js'),\n distanceInWordsStrict: require('./distance_in_words_strict/index.js'),\n distanceInWordsToNow: require('./distance_in_words_to_now/index.js'),\n eachDay: require('./each_day/index.js'),\n endOfDay: require('./end_of_day/index.js'),\n endOfHour: require('./end_of_hour/index.js'),\n endOfISOWeek: require('./end_of_iso_week/index.js'),\n endOfISOYear: require('./end_of_iso_year/index.js'),\n endOfMinute: require('./end_of_minute/index.js'),\n endOfMonth: require('./end_of_month/index.js'),\n endOfQuarter: require('./end_of_quarter/index.js'),\n endOfSecond: require('./end_of_second/index.js'),\n endOfToday: require('./end_of_today/index.js'),\n endOfTomorrow: require('./end_of_tomorrow/index.js'),\n endOfWeek: require('./end_of_week/index.js'),\n endOfYear: require('./end_of_year/index.js'),\n endOfYesterday: require('./end_of_yesterday/index.js'),\n format: require('./format/index.js'),\n getDate: require('./get_date/index.js'),\n getDay: require('./get_day/index.js'),\n getDayOfYear: require('./get_day_of_year/index.js'),\n getDaysInMonth: require('./get_days_in_month/index.js'),\n getDaysInYear: require('./get_days_in_year/index.js'),\n getHours: require('./get_hours/index.js'),\n getISODay: require('./get_iso_day/index.js'),\n getISOWeek: require('./get_iso_week/index.js'),\n getISOWeeksInYear: require('./get_iso_weeks_in_year/index.js'),\n getISOYear: require('./get_iso_year/index.js'),\n getMilliseconds: require('./get_milliseconds/index.js'),\n getMinutes: require('./get_minutes/index.js'),\n getMonth: require('./get_month/index.js'),\n getOverlappingDaysInRanges: require('./get_overlapping_days_in_ranges/index.js'),\n getQuarter: require('./get_quarter/index.js'),\n getSeconds: require('./get_seconds/index.js'),\n getTime: require('./get_time/index.js'),\n getYear: require('./get_year/index.js'),\n isAfter: require('./is_after/index.js'),\n isBefore: require('./is_before/index.js'),\n isDate: require('./is_date/index.js'),\n isEqual: require('./is_equal/index.js'),\n isFirstDayOfMonth: require('./is_first_day_of_month/index.js'),\n isFriday: require('./is_friday/index.js'),\n isFuture: require('./is_future/index.js'),\n isLastDayOfMonth: require('./is_last_day_of_month/index.js'),\n isLeapYear: require('./is_leap_year/index.js'),\n isMonday: require('./is_monday/index.js'),\n isPast: require('./is_past/index.js'),\n isSameDay: require('./is_same_day/index.js'),\n isSameHour: require('./is_same_hour/index.js'),\n isSameISOWeek: require('./is_same_iso_week/index.js'),\n isSameISOYear: require('./is_same_iso_year/index.js'),\n isSameMinute: require('./is_same_minute/index.js'),\n isSameMonth: require('./is_same_month/index.js'),\n isSameQuarter: require('./is_same_quarter/index.js'),\n isSameSecond: require('./is_same_second/index.js'),\n isSameWeek: require('./is_same_week/index.js'),\n isSameYear: require('./is_same_year/index.js'),\n isSaturday: require('./is_saturday/index.js'),\n isSunday: require('./is_sunday/index.js'),\n isThisHour: require('./is_this_hour/index.js'),\n isThisISOWeek: require('./is_this_iso_week/index.js'),\n isThisISOYear: require('./is_this_iso_year/index.js'),\n isThisMinute: require('./is_this_minute/index.js'),\n isThisMonth: require('./is_this_month/index.js'),\n isThisQuarter: require('./is_this_quarter/index.js'),\n isThisSecond: require('./is_this_second/index.js'),\n isThisWeek: require('./is_this_week/index.js'),\n isThisYear: require('./is_this_year/index.js'),\n isThursday: require('./is_thursday/index.js'),\n isToday: require('./is_today/index.js'),\n isTomorrow: require('./is_tomorrow/index.js'),\n isTuesday: require('./is_tuesday/index.js'),\n isValid: require('./is_valid/index.js'),\n isWednesday: require('./is_wednesday/index.js'),\n isWeekend: require('./is_weekend/index.js'),\n isWithinRange: require('./is_within_range/index.js'),\n isYesterday: require('./is_yesterday/index.js'),\n lastDayOfISOWeek: require('./last_day_of_iso_week/index.js'),\n lastDayOfISOYear: require('./last_day_of_iso_year/index.js'),\n lastDayOfMonth: require('./last_day_of_month/index.js'),\n lastDayOfQuarter: require('./last_day_of_quarter/index.js'),\n lastDayOfWeek: require('./last_day_of_week/index.js'),\n lastDayOfYear: require('./last_day_of_year/index.js'),\n max: require('./max/index.js'),\n min: require('./min/index.js'),\n parse: require('./parse/index.js'),\n setDate: require('./set_date/index.js'),\n setDay: require('./set_day/index.js'),\n setDayOfYear: require('./set_day_of_year/index.js'),\n setHours: require('./set_hours/index.js'),\n setISODay: require('./set_iso_day/index.js'),\n setISOWeek: require('./set_iso_week/index.js'),\n setISOYear: require('./set_iso_year/index.js'),\n setMilliseconds: require('./set_milliseconds/index.js'),\n setMinutes: require('./set_minutes/index.js'),\n setMonth: require('./set_month/index.js'),\n setQuarter: require('./set_quarter/index.js'),\n setSeconds: require('./set_seconds/index.js'),\n setYear: require('./set_year/index.js'),\n startOfDay: require('./start_of_day/index.js'),\n startOfHour: require('./start_of_hour/index.js'),\n startOfISOWeek: require('./start_of_iso_week/index.js'),\n startOfISOYear: require('./start_of_iso_year/index.js'),\n startOfMinute: require('./start_of_minute/index.js'),\n startOfMonth: require('./start_of_month/index.js'),\n startOfQuarter: require('./start_of_quarter/index.js'),\n startOfSecond: require('./start_of_second/index.js'),\n startOfToday: require('./start_of_today/index.js'),\n startOfTomorrow: require('./start_of_tomorrow/index.js'),\n startOfWeek: require('./start_of_week/index.js'),\n startOfYear: require('./start_of_year/index.js'),\n startOfYesterday: require('./start_of_yesterday/index.js'),\n subDays: require('./sub_days/index.js'),\n subHours: require('./sub_hours/index.js'),\n subISOYears: require('./sub_iso_years/index.js'),\n subMilliseconds: require('./sub_milliseconds/index.js'),\n subMinutes: require('./sub_minutes/index.js'),\n subMonths: require('./sub_months/index.js'),\n subQuarters: require('./sub_quarters/index.js'),\n subSeconds: require('./sub_seconds/index.js'),\n subWeeks: require('./sub_weeks/index.js'),\n subYears: require('./sub_years/index.js')\n};","var parse = require('../parse/index.js');\n/**\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|String|Number} date - the date that should be after the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\n\n\nfunction isAfter(dirtyDate, dirtyDateToCompare) {\n var date = parse(dirtyDate);\n var dateToCompare = parse(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}\n\nmodule.exports = isAfter;","var parse = require('../parse/index.js');\n/**\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|String|Number} date - the date that should be before the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\n\n\nfunction isBefore(dirtyDate, dirtyDateToCompare) {\n var date = parse(dirtyDate);\n var dateToCompare = parse(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}\n\nmodule.exports = isBefore;","/**\n * @category Common Helpers\n * @summary Is the given argument an instance of Date?\n *\n * @description\n * Is the given argument an instance of Date?\n *\n * @param {*} argument - the argument to check\n * @returns {Boolean} the given argument is an instance of Date\n *\n * @example\n * // Is 'mayonnaise' a Date?\n * var result = isDate('mayonnaise')\n * //=> false\n */\nfunction isDate(argument) {\n return argument instanceof Date;\n}\n\nmodule.exports = isDate;","var parse = require('../parse/index.js');\n/**\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0)\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\n\n\nfunction isEqual(dirtyLeftDate, dirtyRightDate) {\n var dateLeft = parse(dirtyLeftDate);\n var dateRight = parse(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}\n\nmodule.exports = isEqual;","var parse = require('../parse/index.js');\n/**\n * @category Month Helpers\n * @summary Is the given date the first day of a month?\n *\n * @description\n * Is the given date the first day of a month?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is the first day of a month\n *\n * @example\n * // Is 1 September 2014 the first day of a month?\n * var result = isFirstDayOfMonth(new Date(2014, 8, 1))\n * //=> true\n */\n\n\nfunction isFirstDayOfMonth(dirtyDate) {\n return parse(dirtyDate).getDate() === 1;\n}\n\nmodule.exports = isFirstDayOfMonth;","var parse = require('../parse/index.js');\n/**\n * @category Weekday Helpers\n * @summary Is the given date Friday?\n *\n * @description\n * Is the given date Friday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Friday\n *\n * @example\n * // Is 26 September 2014 Friday?\n * var result = isFriday(new Date(2014, 8, 26))\n * //=> true\n */\n\n\nfunction isFriday(dirtyDate) {\n return parse(dirtyDate).getDay() === 5;\n}\n\nmodule.exports = isFriday;","var parse = require('../parse/index.js');\n/**\n * @category Common Helpers\n * @summary Is the given date in the future?\n *\n * @description\n * Is the given date in the future?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in the future\n *\n * @example\n * // If today is 6 October 2014, is 31 December 2014 in the future?\n * var result = isFuture(new Date(2014, 11, 31))\n * //=> true\n */\n\n\nfunction isFuture(dirtyDate) {\n return parse(dirtyDate).getTime() > new Date().getTime();\n}\n\nmodule.exports = isFuture;","var parse = require('../parse/index.js');\n\nvar endOfDay = require('../end_of_day/index.js');\n\nvar endOfMonth = require('../end_of_month/index.js');\n/**\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * var result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\n\n\nfunction isLastDayOfMonth(dirtyDate) {\n var date = parse(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}\n\nmodule.exports = isLastDayOfMonth;","var parse = require('../parse/index.js');\n/**\n * @category Year Helpers\n * @summary Is the given date in the leap year?\n *\n * @description\n * Is the given date in the leap year?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in the leap year\n *\n * @example\n * // Is 1 September 2012 in the leap year?\n * var result = isLeapYear(new Date(2012, 8, 1))\n * //=> true\n */\n\n\nfunction isLeapYear(dirtyDate) {\n var date = parse(dirtyDate);\n var year = date.getFullYear();\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n\nmodule.exports = isLeapYear;","var parse = require('../parse/index.js');\n/**\n * @category Weekday Helpers\n * @summary Is the given date Monday?\n *\n * @description\n * Is the given date Monday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Monday\n *\n * @example\n * // Is 22 September 2014 Monday?\n * var result = isMonday(new Date(2014, 8, 22))\n * //=> true\n */\n\n\nfunction isMonday(dirtyDate) {\n return parse(dirtyDate).getDay() === 1;\n}\n\nmodule.exports = isMonday;","var parse = require('../parse/index.js');\n/**\n * @category Common Helpers\n * @summary Is the given date in the past?\n *\n * @description\n * Is the given date in the past?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in the past\n *\n * @example\n * // If today is 6 October 2014, is 2 July 2014 in the past?\n * var result = isPast(new Date(2014, 6, 2))\n * //=> true\n */\n\n\nfunction isPast(dirtyDate) {\n return parse(dirtyDate).getTime() < new Date().getTime();\n}\n\nmodule.exports = isPast;","var startOfDay = require('../start_of_day/index.js');\n/**\n * @category Day Helpers\n * @summary Are the given dates in the same day?\n *\n * @description\n * Are the given dates in the same day?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(\n * new Date(2014, 8, 4, 6, 0),\n * new Date(2014, 8, 4, 18, 0)\n * )\n * //=> true\n */\n\n\nfunction isSameDay(dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}\n\nmodule.exports = isSameDay;","var startOfHour = require('../start_of_hour/index.js');\n/**\n * @category Hour Helpers\n * @summary Are the given dates in the same hour?\n *\n * @description\n * Are the given dates in the same hour?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same hour\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?\n * var result = isSameHour(\n * new Date(2014, 8, 4, 6, 0),\n * new Date(2014, 8, 4, 6, 30)\n * )\n * //=> true\n */\n\n\nfunction isSameHour(dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfHour = startOfHour(dirtyDateLeft);\n var dateRightStartOfHour = startOfHour(dirtyDateRight);\n return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime();\n}\n\nmodule.exports = isSameHour;","var isSameWeek = require('../is_same_week/index.js');\n/**\n * @category ISO Week Helpers\n * @summary Are the given dates in the same ISO week?\n *\n * @description\n * Are the given dates in the same ISO week?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week\n *\n * @example\n * // Are 1 September 2014 and 7 September 2014 in the same ISO week?\n * var result = isSameISOWeek(\n * new Date(2014, 8, 1),\n * new Date(2014, 8, 7)\n * )\n * //=> true\n */\n\n\nfunction isSameISOWeek(dirtyDateLeft, dirtyDateRight) {\n return isSameWeek(dirtyDateLeft, dirtyDateRight, {\n weekStartsOn: 1\n });\n}\n\nmodule.exports = isSameISOWeek;","var startOfISOYear = require('../start_of_iso_year/index.js');\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Are the given dates in the same ISO week-numbering year?\n *\n * @description\n * Are the given dates in the same ISO week-numbering year?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week-numbering year\n *\n * @example\n * // Are 29 December 2003 and 2 January 2005 in the same ISO week-numbering year?\n * var result = isSameISOYear(\n * new Date(2003, 11, 29),\n * new Date(2005, 0, 2)\n * )\n * //=> true\n */\n\n\nfunction isSameISOYear(dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfYear = startOfISOYear(dirtyDateLeft);\n var dateRightStartOfYear = startOfISOYear(dirtyDateRight);\n return dateLeftStartOfYear.getTime() === dateRightStartOfYear.getTime();\n}\n\nmodule.exports = isSameISOYear;","var startOfMinute = require('../start_of_minute/index.js');\n/**\n * @category Minute Helpers\n * @summary Are the given dates in the same minute?\n *\n * @description\n * Are the given dates in the same minute?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same minute\n *\n * @example\n * // Are 4 September 2014 06:30:00 and 4 September 2014 06:30:15\n * // in the same minute?\n * var result = isSameMinute(\n * new Date(2014, 8, 4, 6, 30),\n * new Date(2014, 8, 4, 6, 30, 15)\n * )\n * //=> true\n */\n\n\nfunction isSameMinute(dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfMinute = startOfMinute(dirtyDateLeft);\n var dateRightStartOfMinute = startOfMinute(dirtyDateRight);\n return dateLeftStartOfMinute.getTime() === dateRightStartOfMinute.getTime();\n}\n\nmodule.exports = isSameMinute;","var parse = require('../parse/index.js');\n/**\n * @category Month Helpers\n * @summary Are the given dates in the same month?\n *\n * @description\n * Are the given dates in the same month?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * var result = isSameMonth(\n * new Date(2014, 8, 2),\n * new Date(2014, 8, 25)\n * )\n * //=> true\n */\n\n\nfunction isSameMonth(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}\n\nmodule.exports = isSameMonth;","var startOfQuarter = require('../start_of_quarter/index.js');\n/**\n * @category Quarter Helpers\n * @summary Are the given dates in the same year quarter?\n *\n * @description\n * Are the given dates in the same year quarter?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * var result = isSameQuarter(\n * new Date(2014, 0, 1),\n * new Date(2014, 2, 8)\n * )\n * //=> true\n */\n\n\nfunction isSameQuarter(dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft);\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight);\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime();\n}\n\nmodule.exports = isSameQuarter;","var startOfSecond = require('../start_of_second/index.js');\n/**\n * @category Second Helpers\n * @summary Are the given dates in the same second?\n *\n * @description\n * Are the given dates in the same second?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same second\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500\n * // in the same second?\n * var result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n */\n\n\nfunction isSameSecond(dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft);\n var dateRightStartOfSecond = startOfSecond(dirtyDateRight);\n return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime();\n}\n\nmodule.exports = isSameSecond;","var startOfWeek = require('../start_of_week/index.js');\n/**\n * @category Week Helpers\n * @summary Are the given dates in the same week?\n *\n * @description\n * Are the given dates in the same week?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Boolean} the dates are in the same week\n *\n * @example\n * // Are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(\n * new Date(2014, 7, 31),\n * new Date(2014, 8, 4)\n * )\n * //=> true\n *\n * @example\n * // If week starts with Monday,\n * // are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(\n * new Date(2014, 7, 31),\n * new Date(2014, 8, 4),\n * {weekStartsOn: 1}\n * )\n * //=> false\n */\n\n\nfunction isSameWeek(dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n var dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, dirtyOptions);\n var dateRightStartOfWeek = startOfWeek(dirtyDateRight, dirtyOptions);\n return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime();\n}\n\nmodule.exports = isSameWeek;","var parse = require('../parse/index.js');\n/**\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * var result = isSameYear(\n * new Date(2014, 8, 2),\n * new Date(2014, 8, 25)\n * )\n * //=> true\n */\n\n\nfunction isSameYear(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}\n\nmodule.exports = isSameYear;","var parse = require('../parse/index.js');\n/**\n * @category Weekday Helpers\n * @summary Is the given date Saturday?\n *\n * @description\n * Is the given date Saturday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Saturday\n *\n * @example\n * // Is 27 September 2014 Saturday?\n * var result = isSaturday(new Date(2014, 8, 27))\n * //=> true\n */\n\n\nfunction isSaturday(dirtyDate) {\n return parse(dirtyDate).getDay() === 6;\n}\n\nmodule.exports = isSaturday;","var parse = require('../parse/index.js');\n/**\n * @category Weekday Helpers\n * @summary Is the given date Sunday?\n *\n * @description\n * Is the given date Sunday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Sunday\n *\n * @example\n * // Is 21 September 2014 Sunday?\n * var result = isSunday(new Date(2014, 8, 21))\n * //=> true\n */\n\n\nfunction isSunday(dirtyDate) {\n return parse(dirtyDate).getDay() === 0;\n}\n\nmodule.exports = isSunday;","var isSameHour = require('../is_same_hour/index.js');\n/**\n * @category Hour Helpers\n * @summary Is the given date in the same hour as the current date?\n *\n * @description\n * Is the given date in the same hour as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this hour\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:00:00 in this hour?\n * var result = isThisHour(new Date(2014, 8, 25, 18))\n * //=> true\n */\n\n\nfunction isThisHour(dirtyDate) {\n return isSameHour(new Date(), dirtyDate);\n}\n\nmodule.exports = isThisHour;","var isSameISOWeek = require('../is_same_iso_week/index.js');\n/**\n * @category ISO Week Helpers\n * @summary Is the given date in the same ISO week as the current date?\n *\n * @description\n * Is the given date in the same ISO week as the current date?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this ISO week\n *\n * @example\n * // If today is 25 September 2014, is 22 September 2014 in this ISO week?\n * var result = isThisISOWeek(new Date(2014, 8, 22))\n * //=> true\n */\n\n\nfunction isThisISOWeek(dirtyDate) {\n return isSameISOWeek(new Date(), dirtyDate);\n}\n\nmodule.exports = isThisISOWeek;","var isSameISOYear = require('../is_same_iso_year/index.js');\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Is the given date in the same ISO week-numbering year as the current date?\n *\n * @description\n * Is the given date in the same ISO week-numbering year as the current date?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this ISO week-numbering year\n *\n * @example\n * // If today is 25 September 2014,\n * // is 30 December 2013 in this ISO week-numbering year?\n * var result = isThisISOYear(new Date(2013, 11, 30))\n * //=> true\n */\n\n\nfunction isThisISOYear(dirtyDate) {\n return isSameISOYear(new Date(), dirtyDate);\n}\n\nmodule.exports = isThisISOYear;","var isSameMinute = require('../is_same_minute/index.js');\n/**\n * @category Minute Helpers\n * @summary Is the given date in the same minute as the current date?\n *\n * @description\n * Is the given date in the same minute as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this minute\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:30:00 in this minute?\n * var result = isThisMinute(new Date(2014, 8, 25, 18, 30))\n * //=> true\n */\n\n\nfunction isThisMinute(dirtyDate) {\n return isSameMinute(new Date(), dirtyDate);\n}\n\nmodule.exports = isThisMinute;","var isSameMonth = require('../is_same_month/index.js');\n/**\n * @category Month Helpers\n * @summary Is the given date in the same month as the current date?\n *\n * @description\n * Is the given date in the same month as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this month\n *\n * @example\n * // If today is 25 September 2014, is 15 September 2014 in this month?\n * var result = isThisMonth(new Date(2014, 8, 15))\n * //=> true\n */\n\n\nfunction isThisMonth(dirtyDate) {\n return isSameMonth(new Date(), dirtyDate);\n}\n\nmodule.exports = isThisMonth;","var isSameQuarter = require('../is_same_quarter/index.js');\n/**\n * @category Quarter Helpers\n * @summary Is the given date in the same quarter as the current date?\n *\n * @description\n * Is the given date in the same quarter as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this quarter\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this quarter?\n * var result = isThisQuarter(new Date(2014, 6, 2))\n * //=> true\n */\n\n\nfunction isThisQuarter(dirtyDate) {\n return isSameQuarter(new Date(), dirtyDate);\n}\n\nmodule.exports = isThisQuarter;","var isSameSecond = require('../is_same_second/index.js');\n/**\n * @category Second Helpers\n * @summary Is the given date in the same second as the current date?\n *\n * @description\n * Is the given date in the same second as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this second\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:30:15.000 in this second?\n * var result = isThisSecond(new Date(2014, 8, 25, 18, 30, 15))\n * //=> true\n */\n\n\nfunction isThisSecond(dirtyDate) {\n return isSameSecond(new Date(), dirtyDate);\n}\n\nmodule.exports = isThisSecond;","var isSameWeek = require('../is_same_week/index.js');\n/**\n * @category Week Helpers\n * @summary Is the given date in the same week as the current date?\n *\n * @description\n * Is the given date in the same week as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Boolean} the date is in this week\n *\n * @example\n * // If today is 25 September 2014, is 21 September 2014 in this week?\n * var result = isThisWeek(new Date(2014, 8, 21))\n * //=> true\n *\n * @example\n * // If today is 25 September 2014 and week starts with Monday\n * // is 21 September 2014 in this week?\n * var result = isThisWeek(new Date(2014, 8, 21), {weekStartsOn: 1})\n * //=> false\n */\n\n\nfunction isThisWeek(dirtyDate, dirtyOptions) {\n return isSameWeek(new Date(), dirtyDate, dirtyOptions);\n}\n\nmodule.exports = isThisWeek;","var isSameYear = require('../is_same_year/index.js');\n/**\n * @category Year Helpers\n * @summary Is the given date in the same year as the current date?\n *\n * @description\n * Is the given date in the same year as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this year\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this year?\n * var result = isThisYear(new Date(2014, 6, 2))\n * //=> true\n */\n\n\nfunction isThisYear(dirtyDate) {\n return isSameYear(new Date(), dirtyDate);\n}\n\nmodule.exports = isThisYear;","var parse = require('../parse/index.js');\n/**\n * @category Weekday Helpers\n * @summary Is the given date Thursday?\n *\n * @description\n * Is the given date Thursday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Thursday\n *\n * @example\n * // Is 25 September 2014 Thursday?\n * var result = isThursday(new Date(2014, 8, 25))\n * //=> true\n */\n\n\nfunction isThursday(dirtyDate) {\n return parse(dirtyDate).getDay() === 4;\n}\n\nmodule.exports = isThursday;","var startOfDay = require('../start_of_day/index.js');\n/**\n * @category Day Helpers\n * @summary Is the given date today?\n *\n * @description\n * Is the given date today?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is today\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * var result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\n\n\nfunction isToday(dirtyDate) {\n return startOfDay(dirtyDate).getTime() === startOfDay(new Date()).getTime();\n}\n\nmodule.exports = isToday;","var startOfDay = require('../start_of_day/index.js');\n/**\n * @category Day Helpers\n * @summary Is the given date tomorrow?\n *\n * @description\n * Is the given date tomorrow?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is tomorrow\n *\n * @example\n * // If today is 6 October 2014, is 7 October 14:00:00 tomorrow?\n * var result = isTomorrow(new Date(2014, 9, 7, 14, 0))\n * //=> true\n */\n\n\nfunction isTomorrow(dirtyDate) {\n var tomorrow = new Date();\n tomorrow.setDate(tomorrow.getDate() + 1);\n return startOfDay(dirtyDate).getTime() === startOfDay(tomorrow).getTime();\n}\n\nmodule.exports = isTomorrow;","var parse = require('../parse/index.js');\n/**\n * @category Weekday Helpers\n * @summary Is the given date Tuesday?\n *\n * @description\n * Is the given date Tuesday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Tuesday\n *\n * @example\n * // Is 23 September 2014 Tuesday?\n * var result = isTuesday(new Date(2014, 8, 23))\n * //=> true\n */\n\n\nfunction isTuesday(dirtyDate) {\n return parse(dirtyDate).getDay() === 2;\n}\n\nmodule.exports = isTuesday;","var isDate = require('../is_date/index.js');\n/**\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {Date} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} argument must be an instance of Date\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\n\n\nfunction isValid(dirtyDate) {\n if (isDate(dirtyDate)) {\n return !isNaN(dirtyDate);\n } else {\n throw new TypeError(toString.call(dirtyDate) + ' is not an instance of Date');\n }\n}\n\nmodule.exports = isValid;","var parse = require('../parse/index.js');\n/**\n * @category Weekday Helpers\n * @summary Is the given date Wednesday?\n *\n * @description\n * Is the given date Wednesday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Wednesday\n *\n * @example\n * // Is 24 September 2014 Wednesday?\n * var result = isWednesday(new Date(2014, 8, 24))\n * //=> true\n */\n\n\nfunction isWednesday(dirtyDate) {\n return parse(dirtyDate).getDay() === 3;\n}\n\nmodule.exports = isWednesday;","var parse = require('../parse/index.js');\n/**\n * @category Weekday Helpers\n * @summary Does the given date fall on a weekend?\n *\n * @description\n * Does the given date fall on a weekend?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date falls on a weekend\n *\n * @example\n * // Does 5 October 2014 fall on a weekend?\n * var result = isWeekend(new Date(2014, 9, 5))\n * //=> true\n */\n\n\nfunction isWeekend(dirtyDate) {\n var date = parse(dirtyDate);\n var day = date.getDay();\n return day === 0 || day === 6;\n}\n\nmodule.exports = isWeekend;","var parse = require('../parse/index.js');\n/**\n * @category Range Helpers\n * @summary Is the given date within the range?\n *\n * @description\n * Is the given date within the range?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Date|String|Number} startDate - the start of range\n * @param {Date|String|Number} endDate - the end of range\n * @returns {Boolean} the date is within the range\n * @throws {Error} startDate cannot be after endDate\n *\n * @example\n * // For the date within the range:\n * isWithinRange(\n * new Date(2014, 0, 3), new Date(2014, 0, 1), new Date(2014, 0, 7)\n * )\n * //=> true\n *\n * @example\n * // For the date outside of the range:\n * isWithinRange(\n * new Date(2014, 0, 10), new Date(2014, 0, 1), new Date(2014, 0, 7)\n * )\n * //=> false\n */\n\n\nfunction isWithinRange(dirtyDate, dirtyStartDate, dirtyEndDate) {\n var time = parse(dirtyDate).getTime();\n var startTime = parse(dirtyStartDate).getTime();\n var endTime = parse(dirtyEndDate).getTime();\n\n if (startTime > endTime) {\n throw new Error('The start of the range cannot be after the end of the range');\n }\n\n return time >= startTime && time <= endTime;\n}\n\nmodule.exports = isWithinRange;","var startOfDay = require('../start_of_day/index.js');\n/**\n * @category Day Helpers\n * @summary Is the given date yesterday?\n *\n * @description\n * Is the given date yesterday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is yesterday\n *\n * @example\n * // If today is 6 October 2014, is 5 October 14:00:00 yesterday?\n * var result = isYesterday(new Date(2014, 9, 5, 14, 0))\n * //=> true\n */\n\n\nfunction isYesterday(dirtyDate) {\n var yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n return startOfDay(dirtyDate).getTime() === startOfDay(yesterday).getTime();\n}\n\nmodule.exports = isYesterday;","var lastDayOfWeek = require('../last_day_of_week/index.js');\n/**\n * @category ISO Week Helpers\n * @summary Return the last day of an ISO week for the given date.\n *\n * @description\n * Return the last day of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of an ISO week\n *\n * @example\n * // The last day of an ISO week for 2 September 2014 11:55:00:\n * var result = lastDayOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 00:00:00\n */\n\n\nfunction lastDayOfISOWeek(dirtyDate) {\n return lastDayOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}\n\nmodule.exports = lastDayOfISOWeek;","var getISOYear = require('../get_iso_year/index.js');\n\nvar startOfISOWeek = require('../start_of_iso_week/index.js');\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the last day of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the last day of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n *\n * @example\n * // The last day of an ISO week-numbering year for 2 July 2005:\n * var result = lastDayOfISOYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 00:00:00\n */\n\n\nfunction lastDayOfISOYear(dirtyDate) {\n var year = getISOYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year + 1, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n date.setDate(date.getDate() - 1);\n return date;\n}\n\nmodule.exports = lastDayOfISOYear;","var parse = require('../parse/index.js');\n/**\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of a month\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * var result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\n\n\nfunction lastDayOfMonth(dirtyDate) {\n var date = parse(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = lastDayOfMonth;","var parse = require('../parse/index.js');\n/**\n * @category Quarter Helpers\n * @summary Return the last day of a year quarter for the given date.\n *\n * @description\n * Return the last day of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of a quarter\n *\n * @example\n * // The last day of a quarter for 2 September 2014 11:55:00:\n * var result = lastDayOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\n\n\nfunction lastDayOfQuarter(dirtyDate) {\n var date = parse(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3 + 3;\n date.setMonth(month, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = lastDayOfQuarter;","var parse = require('../parse/index.js');\n/**\n * @category Week Helpers\n * @summary Return the last day of a week for the given date.\n *\n * @description\n * Return the last day of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the last day of a week\n *\n * @example\n * // The last day of a week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the last day of the week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 00:00:00\n */\n\n\nfunction lastDayOfWeek(dirtyDate, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? Number(dirtyOptions.weekStartsOn) || 0 : 0;\n var date = parse(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + diff);\n return date;\n}\n\nmodule.exports = lastDayOfWeek;","var parse = require('../parse/index.js');\n/**\n * @category Year Helpers\n * @summary Return the last day of a year for the given date.\n *\n * @description\n * Return the last day of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of a year\n *\n * @example\n * // The last day of a year for 2 September 2014 11:55:00:\n * var result = lastDayOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 00:00:00\n */\n\n\nfunction lastDayOfYear(dirtyDate) {\n var date = parse(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = lastDayOfYear;","var commonFormatterKeys = ['M', 'MM', 'Q', 'D', 'DD', 'DDD', 'DDDD', 'd', 'E', 'W', 'WW', 'YY', 'YYYY', 'GG', 'GGGG', 'H', 'HH', 'h', 'hh', 'm', 'mm', 's', 'ss', 'S', 'SS', 'SSS', 'Z', 'ZZ', 'X', 'x'];\n\nfunction buildFormattingTokensRegExp(formatters) {\n var formatterKeys = [];\n\n for (var key in formatters) {\n if (formatters.hasOwnProperty(key)) {\n formatterKeys.push(key);\n }\n }\n\n var formattingTokens = commonFormatterKeys.concat(formatterKeys).sort().reverse();\n var formattingTokensRegExp = new RegExp('(\\\\[[^\\\\[]*\\\\])|(\\\\\\\\)?' + '(' + formattingTokens.join('|') + '|.)', 'g');\n return formattingTokensRegExp;\n}\n\nmodule.exports = buildFormattingTokensRegExp;","function buildDistanceInWordsLocale() {\n var distanceInWordsLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n };\n\n function localize(token, count, options) {\n options = options || {};\n var result;\n\n if (typeof distanceInWordsLocale[token] === 'string') {\n result = distanceInWordsLocale[token];\n } else if (count === 1) {\n result = distanceInWordsLocale[token].one;\n } else {\n result = distanceInWordsLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n }\n\n return {\n localize: localize\n };\n}\n\nmodule.exports = buildDistanceInWordsLocale;","var buildFormattingTokensRegExp = require('../../_lib/build_formatting_tokens_reg_exp/index.js');\n\nfunction buildFormatLocale() {\n // Note: in English, the names of days of the week and months are capitalized.\n // If you are making a new locale based on this one, check if the same is true for the language you're working on.\n // Generally, formatted dates should look like they are in the middle of a sentence,\n // e.g. in Spanish language the weekdays and months should be in the lowercase.\n var months3char = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n var monthsFull = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n var weekdays2char = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n var weekdays3char = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n var weekdaysFull = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n var meridiemUppercase = ['AM', 'PM'];\n var meridiemLowercase = ['am', 'pm'];\n var meridiemFull = ['a.m.', 'p.m.'];\n var formatters = {\n // Month: Jan, Feb, ..., Dec\n 'MMM': function MMM(date) {\n return months3char[date.getMonth()];\n },\n // Month: January, February, ..., December\n 'MMMM': function MMMM(date) {\n return monthsFull[date.getMonth()];\n },\n // Day of week: Su, Mo, ..., Sa\n 'dd': function dd(date) {\n return weekdays2char[date.getDay()];\n },\n // Day of week: Sun, Mon, ..., Sat\n 'ddd': function ddd(date) {\n return weekdays3char[date.getDay()];\n },\n // Day of week: Sunday, Monday, ..., Saturday\n 'dddd': function dddd(date) {\n return weekdaysFull[date.getDay()];\n },\n // AM, PM\n 'A': function A(date) {\n return date.getHours() / 12 >= 1 ? meridiemUppercase[1] : meridiemUppercase[0];\n },\n // am, pm\n 'a': function a(date) {\n return date.getHours() / 12 >= 1 ? meridiemLowercase[1] : meridiemLowercase[0];\n },\n // a.m., p.m.\n 'aa': function aa(date) {\n return date.getHours() / 12 >= 1 ? meridiemFull[1] : meridiemFull[0];\n }\n }; // Generate ordinal version of formatters: M -> Mo, D -> Do, etc.\n\n var ordinalFormatters = ['M', 'D', 'DDD', 'd', 'Q', 'W'];\n ordinalFormatters.forEach(function (formatterToken) {\n formatters[formatterToken + 'o'] = function (date, formatters) {\n return ordinal(formatters[formatterToken](date));\n };\n });\n return {\n formatters: formatters,\n formattingTokensRegExp: buildFormattingTokensRegExp(formatters)\n };\n}\n\nfunction ordinal(number) {\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n}\n\nmodule.exports = buildFormatLocale;","var buildDistanceInWordsLocale = require('./build_distance_in_words_locale/index.js');\n\nvar buildFormatLocale = require('./build_format_locale/index.js');\n/**\n * @category Locales\n * @summary English locale.\n */\n\n\nmodule.exports = {\n distanceInWords: buildDistanceInWordsLocale(),\n format: buildFormatLocale()\n};","var parse = require('../parse/index.js');\n/**\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {...(Date|String|Number)} dates - the dates to compare\n * @returns {Date} the latest of the dates\n *\n * @example\n * // Which of these dates is the latest?\n * var result = max(\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * )\n * //=> Sun Jul 02 1995 00:00:00\n */\n\n\nfunction max() {\n var dirtyDates = Array.prototype.slice.call(arguments);\n var dates = dirtyDates.map(function (dirtyDate) {\n return parse(dirtyDate);\n });\n var latestTimestamp = Math.max.apply(null, dates);\n return new Date(latestTimestamp);\n}\n\nmodule.exports = max;","var parse = require('../parse/index.js');\n/**\n * @category Common Helpers\n * @summary Return the earliest of the given dates.\n *\n * @description\n * Return the earliest of the given dates.\n *\n * @param {...(Date|String|Number)} dates - the dates to compare\n * @returns {Date} the earliest of the dates\n *\n * @example\n * // Which of these dates is the earliest?\n * var result = min(\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * )\n * //=> Wed Feb 11 1987 00:00:00\n */\n\n\nfunction min() {\n var dirtyDates = Array.prototype.slice.call(arguments);\n var dates = dirtyDates.map(function (dirtyDate) {\n return parse(dirtyDate);\n });\n var earliestTimestamp = Math.min.apply(null, dates);\n return new Date(earliestTimestamp);\n}\n\nmodule.exports = min;","var getTimezoneOffsetInMilliseconds = require('../_lib/getTimezoneOffsetInMilliseconds/index.js');\n\nvar isDate = require('../is_date/index.js');\n\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\nvar parseTokenDateTimeDelimeter = /[T ]/;\nvar parseTokenPlainTime = /:/; // year tokens\n\nvar parseTokenYY = /^(\\d{2})$/;\nvar parseTokensYYY = [/^([+-]\\d{2})$/, // 0 additional digits\n/^([+-]\\d{3})$/, // 1 additional digit\n/^([+-]\\d{4})$/ // 2 additional digits\n];\nvar parseTokenYYYY = /^(\\d{4})/;\nvar parseTokensYYYYY = [/^([+-]\\d{4})/, // 0 additional digits\n/^([+-]\\d{5})/, // 1 additional digit\n/^([+-]\\d{6})/ // 2 additional digits\n]; // date tokens\n\nvar parseTokenMM = /^-(\\d{2})$/;\nvar parseTokenDDD = /^-?(\\d{3})$/;\nvar parseTokenMMDD = /^-?(\\d{2})-?(\\d{2})$/;\nvar parseTokenWww = /^-?W(\\d{2})$/;\nvar parseTokenWwwD = /^-?W(\\d{2})-?(\\d{1})$/; // time tokens\n\nvar parseTokenHH = /^(\\d{2}([.,]\\d*)?)$/;\nvar parseTokenHHMM = /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/;\nvar parseTokenHHMMSS = /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/; // timezone tokens\n\nvar parseTokenTimezone = /([Z+-].*)$/;\nvar parseTokenTimezoneZ = /^(Z)$/;\nvar parseTokenTimezoneHH = /^([+-])(\\d{2})$/;\nvar parseTokenTimezoneHHMM = /^([+-])(\\d{2}):?(\\d{2})$/;\n/**\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If all above fails, the function passes the given argument to Date constructor.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {Object} [options] - the object with options\n * @param {0 | 1 | 2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = parse('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Parse string '+02014101',\n * // if the additional number of digits in the extended year format is 1:\n * var result = parse('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\n\nfunction parse(argument, dirtyOptions) {\n if (isDate(argument)) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument !== 'string') {\n return new Date(argument);\n }\n\n var options = dirtyOptions || {};\n var additionalDigits = options.additionalDigits;\n\n if (additionalDigits == null) {\n additionalDigits = DEFAULT_ADDITIONAL_DIGITS;\n } else {\n additionalDigits = Number(additionalDigits);\n }\n\n var dateStrings = splitDateString(argument);\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n var year = parseYearResult.year;\n var restDateString = parseYearResult.restDateString;\n var date = parseDate(restDateString, year);\n\n if (date) {\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone) * MILLISECONDS_IN_MINUTE;\n } else {\n var fullTime = timestamp + time;\n var fullTimeDate = new Date(fullTime);\n offset = getTimezoneOffsetInMilliseconds(fullTimeDate); // Adjust time when it's coming from DST\n\n var fullTimeDateNextDay = new Date(fullTime);\n fullTimeDateNextDay.setDate(fullTimeDate.getDate() + 1);\n var offsetDiff = getTimezoneOffsetInMilliseconds(fullTimeDateNextDay) - getTimezoneOffsetInMilliseconds(fullTimeDate);\n\n if (offsetDiff > 0) {\n offset += offsetDiff;\n }\n }\n\n return new Date(timestamp + time + offset);\n } else {\n return new Date(argument);\n }\n}\n\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(parseTokenDateTimeDelimeter);\n var timeString;\n\n if (parseTokenPlainTime.test(array[0])) {\n dateStrings.date = null;\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n }\n\n if (timeString) {\n var token = parseTokenTimezone.exec(timeString);\n\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var parseTokenYYY = parseTokensYYY[additionalDigits];\n var parseTokenYYYYY = parseTokensYYYYY[additionalDigits];\n var token; // YYYY or ±YYYYY\n\n token = parseTokenYYYY.exec(dateString) || parseTokenYYYYY.exec(dateString);\n\n if (token) {\n var yearString = token[1];\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n };\n } // YY or ±YYY\n\n\n token = parseTokenYY.exec(dateString) || parseTokenYYY.exec(dateString);\n\n if (token) {\n var centuryString = token[1];\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n };\n } // Invalid ISO-formatted year\n\n\n return {\n year: null\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null;\n }\n\n var token;\n var date;\n var month;\n var week; // YYYY\n\n if (dateString.length === 0) {\n date = new Date(0);\n date.setUTCFullYear(year);\n return date;\n } // YYYY-MM\n\n\n token = parseTokenMM.exec(dateString);\n\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n date.setUTCFullYear(year, month);\n return date;\n } // YYYY-DDD or YYYYDDD\n\n\n token = parseTokenDDD.exec(dateString);\n\n if (token) {\n date = new Date(0);\n var dayOfYear = parseInt(token[1], 10);\n date.setUTCFullYear(year, 0, dayOfYear);\n return date;\n } // YYYY-MM-DD or YYYYMMDD\n\n\n token = parseTokenMMDD.exec(dateString);\n\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n var day = parseInt(token[2], 10);\n date.setUTCFullYear(year, month, day);\n return date;\n } // YYYY-Www or YYYYWww\n\n\n token = parseTokenWww.exec(dateString);\n\n if (token) {\n week = parseInt(token[1], 10) - 1;\n return dayOfISOYear(year, week);\n } // YYYY-Www-D or YYYYWwwD\n\n\n token = parseTokenWwwD.exec(dateString);\n\n if (token) {\n week = parseInt(token[1], 10) - 1;\n var dayOfWeek = parseInt(token[2], 10) - 1;\n return dayOfISOYear(year, week, dayOfWeek);\n } // Invalid ISO-formatted date\n\n\n return null;\n}\n\nfunction parseTime(timeString) {\n var token;\n var hours;\n var minutes; // hh\n\n token = parseTokenHH.exec(timeString);\n\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'));\n return hours % 24 * MILLISECONDS_IN_HOUR;\n } // hh:mm or hhmm\n\n\n token = parseTokenHHMM.exec(timeString);\n\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseFloat(token[2].replace(',', '.'));\n return hours % 24 * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE;\n } // hh:mm:ss or hhmmss\n\n\n token = parseTokenHHMMSS.exec(timeString);\n\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseInt(token[2], 10);\n var seconds = parseFloat(token[3].replace(',', '.'));\n return hours % 24 * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000;\n } // Invalid ISO-formatted time\n\n\n return null;\n}\n\nfunction parseTimezone(timezoneString) {\n var token;\n var absoluteOffset; // Z\n\n token = parseTokenTimezoneZ.exec(timezoneString);\n\n if (token) {\n return 0;\n } // ±hh\n\n\n token = parseTokenTimezoneHH.exec(timezoneString);\n\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60;\n return token[1] === '+' ? -absoluteOffset : absoluteOffset;\n } // ±hh:mm or ±hhmm\n\n\n token = parseTokenTimezoneHHMM.exec(timezoneString);\n\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60 + parseInt(token[3], 10);\n return token[1] === '+' ? -absoluteOffset : absoluteOffset;\n }\n\n return 0;\n}\n\nfunction dayOfISOYear(isoYear, week, day) {\n week = week || 0;\n day = day || 0;\n var date = new Date(0);\n date.setUTCFullYear(isoYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\nmodule.exports = parse;","var parse = require('../parse/index.js');\n/**\n * @category Day Helpers\n * @summary Set the day of the month to the given date.\n *\n * @description\n * Set the day of the month to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} dayOfMonth - the day of the month of the new date\n * @returns {Date} the new date with the day of the month setted\n *\n * @example\n * // Set the 30th day of the month to 1 September 2014:\n * var result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\n\n\nfunction setDate(dirtyDate, dirtyDayOfMonth) {\n var date = parse(dirtyDate);\n var dayOfMonth = Number(dirtyDayOfMonth);\n date.setDate(dayOfMonth);\n return date;\n}\n\nmodule.exports = setDate;","var parse = require('../parse/index.js');\n\nvar addDays = require('../add_days/index.js');\n/**\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} day - the day of the week of the new date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the new date with the day of the week setted\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If week starts with Monday, set Sunday to 1 September 2014:\n * var result = setDay(new Date(2014, 8, 1), 0, {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 00:00:00\n */\n\n\nfunction setDay(dirtyDate, dirtyDay, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? Number(dirtyOptions.weekStartsOn) || 0 : 0;\n var date = parse(dirtyDate);\n var day = Number(dirtyDay);\n var currentDay = date.getDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n return addDays(date, diff);\n}\n\nmodule.exports = setDay;","var parse = require('../parse/index.js');\n/**\n * @category Day Helpers\n * @summary Set the day of the year to the given date.\n *\n * @description\n * Set the day of the year to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} dayOfYear - the day of the year of the new date\n * @returns {Date} the new date with the day of the year setted\n *\n * @example\n * // Set the 2nd day of the year to 2 July 2014:\n * var result = setDayOfYear(new Date(2014, 6, 2), 2)\n * //=> Thu Jan 02 2014 00:00:00\n */\n\n\nfunction setDayOfYear(dirtyDate, dirtyDayOfYear) {\n var date = parse(dirtyDate);\n var dayOfYear = Number(dirtyDayOfYear);\n date.setMonth(0);\n date.setDate(dayOfYear);\n return date;\n}\n\nmodule.exports = setDayOfYear;","var parse = require('../parse/index.js');\n/**\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours setted\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\n\n\nfunction setHours(dirtyDate, dirtyHours) {\n var date = parse(dirtyDate);\n var hours = Number(dirtyHours);\n date.setHours(hours);\n return date;\n}\n\nmodule.exports = setHours;","var parse = require('../parse/index.js');\n\nvar addDays = require('../add_days/index.js');\n\nvar getISODay = require('../get_iso_day/index.js');\n/**\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} day - the day of the ISO week of the new date\n * @returns {Date} the new date with the day of the ISO week setted\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\n\n\nfunction setISODay(dirtyDate, dirtyDay) {\n var date = parse(dirtyDate);\n var day = Number(dirtyDay);\n var currentDay = getISODay(date);\n var diff = day - currentDay;\n return addDays(date, diff);\n}\n\nmodule.exports = setISODay;","var parse = require('../parse/index.js');\n\nvar getISOWeek = require('../get_iso_week/index.js');\n/**\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} isoWeek - the ISO week of the new date\n * @returns {Date} the new date with the ISO week setted\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * var result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\n\n\nfunction setISOWeek(dirtyDate, dirtyISOWeek) {\n var date = parse(dirtyDate);\n var isoWeek = Number(dirtyISOWeek);\n var diff = getISOWeek(date) - isoWeek;\n date.setDate(date.getDate() - diff * 7);\n return date;\n}\n\nmodule.exports = setISOWeek;","var parse = require('../parse/index.js');\n\nvar startOfISOYear = require('../start_of_iso_year/index.js');\n\nvar differenceInCalendarDays = require('../difference_in_calendar_days/index.js');\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Set the ISO week-numbering year to the given date.\n *\n * @description\n * Set the ISO week-numbering year to the given date,\n * saving the week number and the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} isoYear - the ISO week-numbering year of the new date\n * @returns {Date} the new date with the ISO week-numbering year setted\n *\n * @example\n * // Set ISO week-numbering year 2007 to 29 December 2008:\n * var result = setISOYear(new Date(2008, 11, 29), 2007)\n * //=> Mon Jan 01 2007 00:00:00\n */\n\n\nfunction setISOYear(dirtyDate, dirtyISOYear) {\n var date = parse(dirtyDate);\n var isoYear = Number(dirtyISOYear);\n var diff = differenceInCalendarDays(date, startOfISOYear(date));\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(isoYear, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n date = startOfISOYear(fourthOfJanuary);\n date.setDate(date.getDate() + diff);\n return date;\n}\n\nmodule.exports = setISOYear;","var parse = require('../parse/index.js');\n/**\n * @category Millisecond Helpers\n * @summary Set the milliseconds to the given date.\n *\n * @description\n * Set the milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} milliseconds - the milliseconds of the new date\n * @returns {Date} the new date with the milliseconds setted\n *\n * @example\n * // Set 300 milliseconds to 1 September 2014 11:30:40.500:\n * var result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\n\n\nfunction setMilliseconds(dirtyDate, dirtyMilliseconds) {\n var date = parse(dirtyDate);\n var milliseconds = Number(dirtyMilliseconds);\n date.setMilliseconds(milliseconds);\n return date;\n}\n\nmodule.exports = setMilliseconds;","var parse = require('../parse/index.js');\n/**\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes setted\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * var result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\n\n\nfunction setMinutes(dirtyDate, dirtyMinutes) {\n var date = parse(dirtyDate);\n var minutes = Number(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}\n\nmodule.exports = setMinutes;","var parse = require('../parse/index.js');\n\nvar getDaysInMonth = require('../get_days_in_month/index.js');\n/**\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month setted\n *\n * @example\n * // Set February to 1 September 2014:\n * var result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\n\n\nfunction setMonth(dirtyDate, dirtyMonth) {\n var date = parse(dirtyDate);\n var month = Number(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth); // Set the last day of the new month\n // if the original date was the last day of the longer month\n\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}\n\nmodule.exports = setMonth;","var parse = require('../parse/index.js');\n\nvar setMonth = require('../set_month/index.js');\n/**\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter setted\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * var result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\n\n\nfunction setQuarter(dirtyDate, dirtyQuarter) {\n var date = parse(dirtyDate);\n var quarter = Number(dirtyQuarter);\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1;\n var diff = quarter - oldQuarter;\n return setMonth(date, date.getMonth() + diff * 3);\n}\n\nmodule.exports = setQuarter;","var parse = require('../parse/index.js');\n/**\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds setted\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * var result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\n\n\nfunction setSeconds(dirtyDate, dirtySeconds) {\n var date = parse(dirtyDate);\n var seconds = Number(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}\n\nmodule.exports = setSeconds;","var parse = require('../parse/index.js');\n/**\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year setted\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * var result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\n\n\nfunction setYear(dirtyDate, dirtyYear) {\n var date = parse(dirtyDate);\n var year = Number(dirtyYear);\n date.setFullYear(year);\n return date;\n}\n\nmodule.exports = setYear;","var parse = require('../parse/index.js');\n/**\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * var result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\n\nfunction startOfDay(dirtyDate) {\n var date = parse(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = startOfDay;","var parse = require('../parse/index.js');\n/**\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of an hour\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * var result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\n\n\nfunction startOfHour(dirtyDate) {\n var date = parse(dirtyDate);\n date.setMinutes(0, 0, 0);\n return date;\n}\n\nmodule.exports = startOfHour;","var startOfWeek = require('../start_of_week/index.js');\n/**\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * var result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\n\nfunction startOfISOWeek(dirtyDate) {\n return startOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}\n\nmodule.exports = startOfISOWeek;","var getISOYear = require('../get_iso_year/index.js');\n\nvar startOfISOWeek = require('../start_of_iso_week/index.js');\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of an ISO year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * var result = startOfISOYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\n\n\nfunction startOfISOYear(dirtyDate) {\n var year = getISOYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}\n\nmodule.exports = startOfISOYear;","var parse = require('../parse/index.js');\n/**\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a minute\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * var result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\n\n\nfunction startOfMinute(dirtyDate) {\n var date = parse(dirtyDate);\n date.setSeconds(0, 0);\n return date;\n}\n\nmodule.exports = startOfMinute;","var parse = require('../parse/index.js');\n/**\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * var result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\n\nfunction startOfMonth(dirtyDate) {\n var date = parse(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = startOfMonth;","var parse = require('../parse/index.js');\n/**\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a quarter\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * var result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\n\n\nfunction startOfQuarter(dirtyDate) {\n var date = parse(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3;\n date.setMonth(month, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = startOfQuarter;","var parse = require('../parse/index.js');\n/**\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a second\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * var result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\n\n\nfunction startOfSecond(dirtyDate) {\n var date = parse(dirtyDate);\n date.setMilliseconds(0);\n return date;\n}\n\nmodule.exports = startOfSecond;","var startOfDay = require('../start_of_day/index.js');\n/**\n * @category Day Helpers\n * @summary Return the start of today.\n *\n * @description\n * Return the start of today.\n *\n * @returns {Date} the start of today\n *\n * @example\n * // If today is 6 October 2014:\n * var result = startOfToday()\n * //=> Mon Oct 6 2014 00:00:00\n */\n\n\nfunction startOfToday() {\n return startOfDay(new Date());\n}\n\nmodule.exports = startOfToday;","/**\n * @category Day Helpers\n * @summary Return the start of tomorrow.\n *\n * @description\n * Return the start of tomorrow.\n *\n * @returns {Date} the start of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * var result = startOfTomorrow()\n * //=> Tue Oct 7 2014 00:00:00\n */\nfunction startOfTomorrow() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day + 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = startOfTomorrow;","var parse = require('../parse/index.js');\n/**\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Mon Sep 01 2014 00:00:00\n */\n\n\nfunction startOfWeek(dirtyDate, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? Number(dirtyOptions.weekStartsOn) || 0 : 0;\n var date = parse(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = startOfWeek;","var parse = require('../parse/index.js');\n/**\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * var result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\n\n\nfunction startOfYear(dirtyDate) {\n var cleanDate = parse(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = startOfYear;","/**\n * @category Day Helpers\n * @summary Return the start of yesterday.\n *\n * @description\n * Return the start of yesterday.\n *\n * @returns {Date} the start of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * var result = startOfYesterday()\n * //=> Sun Oct 5 2014 00:00:00\n */\nfunction startOfYesterday() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day - 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = startOfYesterday;","var addDays = require('../add_days/index.js');\n/**\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted\n * @returns {Date} the new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * var result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\n\n\nfunction subDays(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}\n\nmodule.exports = subDays;","var addHours = require('../add_hours/index.js');\n/**\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be subtracted\n * @returns {Date} the new date with the hours subtracted\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * var result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\n\n\nfunction subHours(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addHours(dirtyDate, -amount);\n}\n\nmodule.exports = subHours;","var addISOYears = require('../add_iso_years/index.js');\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Subtract the specified number of ISO week-numbering years from the given date.\n *\n * @description\n * Subtract the specified number of ISO week-numbering years from the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be subtracted\n * @returns {Date} the new date with the ISO week-numbering years subtracted\n *\n * @example\n * // Subtract 5 ISO week-numbering years from 1 September 2014:\n * var result = subISOYears(new Date(2014, 8, 1), 5)\n * //=> Mon Aug 31 2009 00:00:00\n */\n\n\nfunction subISOYears(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addISOYears(dirtyDate, -amount);\n}\n\nmodule.exports = subISOYears;","var addMilliseconds = require('../add_milliseconds/index.js');\n/**\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @returns {Date} the new date with the milliseconds subtracted\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\n\nfunction subMilliseconds(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}\n\nmodule.exports = subMilliseconds;","var addMinutes = require('../add_minutes/index.js');\n/**\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted\n * @returns {Date} the new date with the mintues subtracted\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * var result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\n\n\nfunction subMinutes(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addMinutes(dirtyDate, -amount);\n}\n\nmodule.exports = subMinutes;","var addMonths = require('../add_months/index.js');\n/**\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted\n * @returns {Date} the new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * var result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\n\n\nfunction subMonths(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}\n\nmodule.exports = subMonths;","var addQuarters = require('../add_quarters/index.js');\n/**\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted\n * @returns {Date} the new date with the quarters subtracted\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * var result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\n\n\nfunction subQuarters(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addQuarters(dirtyDate, -amount);\n}\n\nmodule.exports = subQuarters;","var addSeconds = require('../add_seconds/index.js');\n/**\n * @category Second Helpers\n * @summary Subtract the specified number of seconds from the given date.\n *\n * @description\n * Subtract the specified number of seconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be subtracted\n * @returns {Date} the new date with the seconds subtracted\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * var result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\n\n\nfunction subSeconds(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addSeconds(dirtyDate, -amount);\n}\n\nmodule.exports = subSeconds;","var addWeeks = require('../add_weeks/index.js');\n/**\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted\n * @returns {Date} the new date with the weeks subtracted\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * var result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\n\n\nfunction subWeeks(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addWeeks(dirtyDate, -amount);\n}\n\nmodule.exports = subWeeks;","var addYears = require('../add_years/index.js');\n/**\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted\n * @returns {Date} the new date with the years subtracted\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * var result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\n\n\nfunction subYears(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addYears(dirtyDate, -amount);\n}\n\nmodule.exports = subYears;","'use strict';\n\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n try {\n // Try to decode the entire string first\n return decodeURIComponent(components.join(''));\n } catch (err) {// Do nothing\n }\n\n if (components.length === 1) {\n return components;\n }\n\n split = split || 1; // Split the array in 2 parts\n\n var left = components.slice(0, split);\n var right = components.slice(split);\n return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n try {\n return decodeURIComponent(input);\n } catch (err) {\n var tokens = input.match(singleMatcher);\n\n for (var i = 1; i < tokens.length; i++) {\n input = decodeComponents(tokens, i).join('');\n tokens = input.match(singleMatcher);\n }\n\n return input;\n }\n}\n\nfunction customDecodeURIComponent(input) {\n // Keep track of all the replacements and prefill the map with the `BOM`\n var replaceMap = {\n '%FE%FF': \"\\uFFFD\\uFFFD\",\n '%FF%FE': \"\\uFFFD\\uFFFD\"\n };\n var match = multiMatcher.exec(input);\n\n while (match) {\n try {\n // Decode as big chunks as possible\n replaceMap[match[0]] = decodeURIComponent(match[0]);\n } catch (err) {\n var result = decode(match[0]);\n\n if (result !== match[0]) {\n replaceMap[match[0]] = result;\n }\n }\n\n match = multiMatcher.exec(input);\n } // Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\n\n replaceMap['%C2'] = \"\\uFFFD\";\n var entries = Object.keys(replaceMap);\n\n for (var i = 0; i < entries.length; i++) {\n // Replace all decoded components\n var key = entries[i];\n input = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n }\n\n return input;\n}\n\nmodule.exports = function (encodedURI) {\n if (typeof encodedURI !== 'string') {\n throw new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n }\n\n try {\n encodedURI = encodedURI.replace(/\\+/g, ' '); // Try the built in decoder first\n\n return decodeURIComponent(encodedURI);\n } catch (err) {\n // Fallback to a more advanced decoder\n return customDecodeURIComponent(encodedURI);\n }\n};","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n return isNonNullObject(value) && !isSpecial(value);\n};\n\nfunction isNonNullObject(value) {\n return !!value && typeof value === 'object';\n}\n\nfunction isSpecial(value) {\n var stringValue = Object.prototype.toString.call(value);\n return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value);\n} // see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\n\n\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n return value.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nfunction emptyTarget(val) {\n return Array.isArray(val) ? [] : {};\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n return options.clone !== false && options.isMergeableObject(value) ? deepmerge(emptyTarget(value), value, options) : value;\n}\n\nfunction defaultArrayMerge(target, source, options) {\n return target.concat(source).map(function (element) {\n return cloneUnlessOtherwiseSpecified(element, options);\n });\n}\n\nfunction getMergeFunction(key, options) {\n if (!options.customMerge) {\n return deepmerge;\n }\n\n var customMerge = options.customMerge(key);\n return typeof customMerge === 'function' ? customMerge : deepmerge;\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function (symbol) {\n return target.propertyIsEnumerable(symbol);\n }) : [];\n}\n\nfunction getKeys(target) {\n return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));\n}\n\nfunction propertyIsOnObject(object, property) {\n try {\n return property in object;\n } catch (_) {\n return false;\n }\n} // Protects from prototype poisoning and unexpected merging up the prototype chain.\n\n\nfunction propertyIsUnsafe(target, key) {\n return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n && Object.propertyIsEnumerable.call(target, key)); // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n var destination = {};\n\n if (options.isMergeableObject(target)) {\n getKeys(target).forEach(function (key) {\n destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n });\n }\n\n getKeys(source).forEach(function (key) {\n if (propertyIsUnsafe(target, key)) {\n return;\n }\n\n if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n destination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n } else {\n destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n }\n });\n return destination;\n}\n\nfunction deepmerge(target, source, options) {\n options = options || {};\n options.arrayMerge = options.arrayMerge || defaultArrayMerge;\n options.isMergeableObject = options.isMergeableObject || isMergeableObject; // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n // implementations can use it. The caller may not replace it.\n\n options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n var sourceIsArray = Array.isArray(source);\n var targetIsArray = Array.isArray(target);\n var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n if (!sourceAndTargetTypesMatch) {\n return cloneUnlessOtherwiseSpecified(source, options);\n } else if (sourceIsArray) {\n return options.arrayMerge(target, source, options);\n } else {\n return mergeObject(target, source, options);\n }\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n if (!Array.isArray(array)) {\n throw new Error('first argument should be an array');\n }\n\n return array.reduce(function (prev, next) {\n return deepmerge(prev, next, options);\n }, {});\n};\n\nvar deepmerge_1 = deepmerge;\nmodule.exports = deepmerge_1;","// Browser/ES5 targets\nmodule.exports = require('./lib-es5');","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar debug_1 = __importDefault(require(\"debug\"));\n\nexports.default = debug_1.default('sanity');","\"use strict\";\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getFluidGatsbyImage = exports.getFixedGatsbyImage = exports.DEFAULT_FLUID_MAX_WIDTH = exports.DEFAULT_FIXED_WIDTH = exports.LOWEST_FLUID_BREAKPOINT_WIDTH = void 0;\n\nvar url_parse_1 = __importDefault(require(\"url-parse\"));\n\nexports.LOWEST_FLUID_BREAKPOINT_WIDTH = 100;\nexports.DEFAULT_FIXED_WIDTH = 400;\nexports.DEFAULT_FLUID_MAX_WIDTH = 800;\nvar ImageFormat;\n\n(function (ImageFormat) {\n ImageFormat[\"NO_CHANGE\"] = \"\";\n ImageFormat[\"WEBP\"] = \"webp\";\n ImageFormat[\"JPG\"] = \"jpg\";\n ImageFormat[\"PNG\"] = \"png\";\n})(ImageFormat || (ImageFormat = {}));\n\nvar idPattern = /^image-[A-Za-z0-9]+-\\d+x\\d+-[a-z]+$/;\nvar sizeMultipliersFixed = [1, 1.5, 2, 3];\nvar sizeMultipliersFluid = [0.25, 0.5, 1, 1.5, 2, 3];\n\nfunction buildImageUrl(loc, stub) {\n var projectId = loc.projectId,\n dataset = loc.dataset;\n var assetId = stub.assetId,\n extension = stub.extension,\n metadata = stub.metadata;\n var _a = metadata.dimensions,\n width = _a.width,\n height = _a.height;\n var base = 'https://cdn.sanity.io/images';\n return base + \"/\" + projectId + \"/\" + dataset + \"/\" + assetId + \"-\" + width + \"x\" + height + \".\" + extension;\n}\n\nfunction getBasicImageProps(node, loc) {\n if (!node) {\n return false;\n }\n\n var obj = node;\n var ref = node;\n var img = node;\n var id = '';\n\n if (typeof node === 'string') {\n id = node;\n } else if (obj.asset) {\n id = obj.asset._ref || obj.asset._id;\n } else {\n id = ref._ref || img._id;\n }\n\n var hasId = !id || idPattern.test(id);\n\n if (!hasId) {\n return false;\n }\n\n var _a = id.split('-'),\n assetId = _a[1],\n dimensions = _a[2],\n extension = _a[3];\n\n var _b = dimensions.split('x').map(function (num) {\n return parseInt(num, 10);\n }),\n width = _b[0],\n height = _b[1];\n\n var aspectRatio = width / height;\n var metadata = img.metadata || {\n dimensions: {\n width: width,\n height: height,\n aspectRatio: aspectRatio\n }\n };\n var url = img.url || buildImageUrl(loc, {\n url: '',\n assetId: assetId,\n extension: extension,\n metadata: metadata\n });\n return {\n url: url,\n assetId: assetId,\n extension: extension,\n metadata: metadata\n };\n}\n\nfunction convertToFormat(url, toFormat) {\n var parsed = url_parse_1.default(url, true);\n var filename = parsed.pathname.replace(/.*\\//, '');\n var extension = filename.replace(/.*\\./, '');\n var isConvertedToTarget = parsed.query.fm === toFormat;\n var isOriginal = extension === toFormat; // If the original matches the target format, remove any explicit conversions\n\n if (isConvertedToTarget && isOriginal) {\n var _a = parsed.query,\n fm = _a.fm,\n params = __rest(_a, [\"fm\"]);\n\n parsed.set('query', params);\n return parsed.toString();\n }\n\n if (isConvertedToTarget || isOriginal) {\n return url;\n }\n\n var newQuery = __assign(__assign({}, parsed.query), {\n fm: toFormat\n });\n\n parsed.set('query', newQuery);\n return parsed.toString();\n}\n\nfunction isWebP(url) {\n var isConverted = url.includes('fm=webp');\n var isOriginal = /[a-f0-9]+-\\d+x\\d+\\.webp/.test(url);\n return isConverted || isOriginal;\n}\n\nfunction getFixedGatsbyImage(image, args, loc) {\n var props = getBasicImageProps(image, loc);\n\n if (!props) {\n return null;\n }\n\n var width = args.width || exports.DEFAULT_FIXED_WIDTH;\n var height = args.height;\n var url = props.url,\n metadata = props.metadata,\n extension = props.extension;\n var dimensions = metadata.dimensions,\n lqip = metadata.lqip;\n\n var isOriginalSize = function isOriginalSize(w, h) {\n return w === dimensions.width && h === dimensions.height;\n };\n\n var desiredAspectRatio = dimensions.aspectRatio; // If we're cropping, calculate the specified aspect ratio\n\n if (args.height) {\n desiredAspectRatio = width / args.height;\n }\n\n var forceConvert = null;\n\n if (args.toFormat) {\n forceConvert = args.toFormat;\n } else if (isWebP(props.url)) {\n forceConvert = 'jpg';\n }\n\n var hasOriginalRatio = desiredAspectRatio === dimensions.aspectRatio;\n var outputHeight = Math.round(height ? height : width / desiredAspectRatio);\n var imgUrl = isOriginalSize(width, outputHeight) || hasOriginalRatio && width > dimensions.width && outputHeight > dimensions.height ? url : url + \"?w=\" + width + \"&h=\" + outputHeight + \"&fit=crop\";\n var widths = sizeMultipliersFixed.map(function (scale) {\n return Math.round(width * scale);\n });\n var initial = {\n webp: [],\n base: []\n };\n var srcSets = widths.filter(function (currentWidth) {\n return currentWidth <= dimensions.width;\n }).reduce(function (acc, currentWidth, i) {\n var resolution = sizeMultipliersFixed[i] + \"x\";\n var currentHeight = Math.round(currentWidth / desiredAspectRatio);\n var imgUrl = isOriginalSize(currentWidth, currentHeight) ? url : url + \"?w=\" + currentWidth + \"&h=\" + currentHeight + \"&fit=crop\";\n var webpUrl = convertToFormat(imgUrl, 'webp');\n var baseUrl = convertToFormat(imgUrl, forceConvert || props.extension);\n acc.webp.push(webpUrl + \" \" + resolution);\n acc.base.push(baseUrl + \" \" + resolution);\n return acc;\n }, initial);\n var src = convertToFormat(imgUrl, forceConvert || extension);\n var srcWebp = convertToFormat(imgUrl, 'webp');\n return {\n base64: lqip || undefined,\n width: Math.round(width),\n height: outputHeight,\n src: src,\n srcWebp: srcWebp,\n srcSet: srcSets.base.join(',\\n') || src + \" 1x\",\n srcSetWebp: srcSets.webp.join(',\\n') || srcWebp + \" 1x\"\n };\n}\n\nexports.getFixedGatsbyImage = getFixedGatsbyImage;\n\nfunction getFluidGatsbyImage(image, args, loc) {\n var props = getBasicImageProps(image, loc);\n\n if (!props) {\n return null;\n }\n\n var url = props.url,\n metadata = props.metadata,\n extension = props.extension;\n var dimensions = metadata.dimensions,\n lqip = metadata.lqip;\n\n var isOriginalSize = function isOriginalSize(w, h) {\n return w === dimensions.width && h === dimensions.height;\n };\n\n var maxWidth = Math.min(args.maxWidth || exports.DEFAULT_FLUID_MAX_WIDTH, dimensions.width);\n var specifiedMaxHeight = args.maxHeight ? Math.min(args.maxHeight, dimensions.height) : undefined;\n var desiredAspectRatio = dimensions.aspectRatio; // If we're cropping, calculate the specified aspect ratio\n\n if (specifiedMaxHeight) {\n desiredAspectRatio = maxWidth / specifiedMaxHeight;\n }\n\n var maxHeight = specifiedMaxHeight || Math.round(maxWidth / dimensions.aspectRatio);\n var forceConvert = null;\n\n if (args.toFormat) {\n forceConvert = args.toFormat;\n } else if (isWebP(props.url)) {\n forceConvert = 'jpg';\n }\n\n var baseSrc = isOriginalSize(maxWidth, maxHeight) || maxWidth >= dimensions.width && maxHeight >= dimensions.height ? url : url + \"?w=\" + maxWidth + \"&h=\" + maxHeight + \"&fit=crop\";\n var src = convertToFormat(baseSrc, forceConvert || extension);\n var srcWebp = convertToFormat(baseSrc, 'webp');\n var sizes = args.sizes || \"(max-width: \" + maxWidth + \"px) 100vw, \" + maxWidth + \"px\";\n var widths = sizeMultipliersFluid.map(function (scale) {\n return Math.round(maxWidth * scale);\n }).filter(function (width) {\n return width < dimensions.width && width > exports.LOWEST_FLUID_BREAKPOINT_WIDTH;\n }).concat(dimensions.width);\n var initial = {\n webp: [],\n base: []\n };\n var srcSets = widths.filter(function (currentWidth) {\n return currentWidth <= dimensions.width;\n }).reduce(function (acc, currentWidth) {\n var currentHeight = Math.round(currentWidth / desiredAspectRatio);\n var imgUrl = isOriginalSize(currentWidth, currentHeight) ? url : url + \"?w=\" + currentWidth + \"&h=\" + currentHeight + \"&fit=crop\";\n var webpUrl = convertToFormat(imgUrl, 'webp');\n var baseUrl = convertToFormat(imgUrl, forceConvert || props.extension);\n acc.webp.push(webpUrl + \" \" + currentWidth + \"w\");\n acc.base.push(baseUrl + \" \" + currentWidth + \"w\");\n return acc;\n }, initial);\n return {\n base64: lqip || undefined,\n aspectRatio: desiredAspectRatio,\n src: src,\n srcWebp: srcWebp,\n srcSet: srcSets.base.join(',\\n'),\n srcSetWebp: srcSets.webp.join(',\\n'),\n sizes: sizes\n };\n}\n\nexports.getFluidGatsbyImage = getFluidGatsbyImage;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.pkgName = void 0;\nexports.pkgName = 'gatsby-source-sanity';\n\nvar getGatsbyImageProps_1 = require(\"./images/getGatsbyImageProps\");\n\nObject.defineProperty(exports, \"getFluidGatsbyImage\", {\n enumerable: true,\n get: function get() {\n return getGatsbyImageProps_1.getFluidGatsbyImage;\n }\n});\nObject.defineProperty(exports, \"getFixedGatsbyImage\", {\n enumerable: true,\n get: function get() {\n return getGatsbyImageProps_1.getFixedGatsbyImage;\n }\n});\n\nvar resolveReferences_1 = require(\"./util/resolveReferences\");\n\nObject.defineProperty(exports, \"resolveReferences\", {\n enumerable: true,\n get: function get() {\n return resolveReferences_1.resolveReferences;\n }\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.safeId = exports.unprefixId = exports.prefixId = exports.isDraftId = void 0;\n\nfunction isDraftId(id) {\n return id.startsWith('drafts.');\n}\n\nexports.isDraftId = isDraftId;\n\nexports.prefixId = function (id) {\n return id.startsWith('drafts.') ? id : \"drafts.\" + id;\n};\n\nexports.unprefixId = function (id) {\n return id.replace(/^drafts\\./, '');\n};\n\nexports.safeId = function (id, makeSafe) {\n return /^(image|file)-[a-z0-9]{32,}-/.test(id) ? // Use raw IDs for assets as we might use these with asset tooling\n id : // Prefix Gatsbyfied IDs with a dash as it's not allowed in Sanity,\n // thus enabling easy checks for Gatsby vs Sanity IDs\n \"-\" + makeSafe(id);\n};","\"use strict\";\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resolveReferences = void 0;\n\nvar debug_1 = __importDefault(require(\"../debug\"));\n\nvar documentIds_1 = require(\"./documentIds\");\n\nvar unprefixDraftId_1 = require(\"./unprefixDraftId\");\n\nvar defaultResolveOptions = {\n maxDepth: 5,\n overlayDrafts: false\n}; // NOTE: This is now a public API and should be treated as such\n\nfunction resolveReferences(obj, context, options, currentDepth) {\n if (options === void 0) {\n options = {};\n }\n\n if (currentDepth === void 0) {\n currentDepth = 0;\n }\n\n var createNodeId = context.createNodeId,\n getNode = context.getNode;\n\n var resolveOptions = __assign(__assign({}, defaultResolveOptions), options);\n\n var overlayDrafts = resolveOptions.overlayDrafts,\n maxDepth = resolveOptions.maxDepth;\n\n if (Array.isArray(obj)) {\n return currentDepth <= maxDepth ? obj.map(function (item) {\n return resolveReferences(item, context, resolveOptions, currentDepth + 1);\n }) : obj;\n }\n\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (typeof obj._ref === 'string') {\n var targetId = // If the reference starts with a '-', it means it's a Gatsby node ID,\n // not a Sanity document ID. Thus, it does not need to be rewritten\n obj._ref.startsWith('-') ? obj._ref : documentIds_1.safeId(overlayDrafts ? unprefixDraftId_1.unprefixDraftId(obj._ref) : obj._ref, createNodeId);\n debug_1.default('Resolve %s (Sanity ID %s)', targetId, obj._ref);\n var node = getNode(targetId);\n\n if (!node && obj._weak) {\n return null;\n } else if (!node) {\n debug_1.default(\"Could not resolve reference to ID \\\"\" + targetId + \"\\\"\");\n return null;\n }\n\n return node && currentDepth <= maxDepth ? resolveReferences(remapRawFields(node), context, resolveOptions, currentDepth + 1) : obj;\n }\n\n var initial = {};\n return Object.keys(obj).reduce(function (acc, key) {\n var isRawDataField = key.startsWith('_rawData');\n var value = resolveReferences(obj[key], context, resolveOptions, currentDepth + 1);\n var targetKey = isRawDataField ? \"_raw\" + key.slice(8) : key;\n acc[targetKey] = value;\n return acc;\n }, initial);\n}\n\nexports.resolveReferences = resolveReferences;\n/**\n * When resolving a Gatsby node through resolveReferences, it's always (through the GraphQL API)\n * operation on a \"raw\" field. The expectation is to have the return value be as close to the\n * Sanity document as possible. Thus, when we've resolved the node, we want to remap the raw\n * fields to be named as the original field name. `_rawSections` becomes `sections`. Since the\n * value is fetched from the \"raw\" variant, the references inside it do not have their IDs\n * rewired to their Gatsby equivalents.\n */\n\nfunction remapRawFields(obj) {\n var initial = {};\n return Object.keys(obj).reduce(function (acc, key) {\n if (key.startsWith('_rawData')) {\n var targetKey = key.slice(8); // Look for UpperCase variant first, if not found, try camelCase\n\n targetKey = typeof obj[targetKey] === 'undefined' ? targetKey[0].toLowerCase() + targetKey.slice(1) : targetKey;\n acc[targetKey] = obj[key];\n } else if (!acc[key]) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, initial);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.unprefixDraftId = void 0; // `drafts.foo-bar` => `foo.bar`\n\nfunction unprefixDraftId(id) {\n return id.replace(/^drafts\\./, '');\n}\n\nexports.unprefixDraftId = unprefixDraftId;","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\n\n\nexports.log = console.debug || console.log || function () {};\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n } // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n\nmodule.exports = require('./common')(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n};","var _toConsumableArray = require(\"/codebuild/output/src1473349944/src/microsites/sites/inh0025/web/node_modules/@babel/runtime/helpers/toConsumableArray\");\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n createDebug.debug = createDebug;\n createDebug.default = createDebug;\n createDebug.coerce = coerce;\n createDebug.disable = disable;\n createDebug.enable = enable;\n createDebug.enabled = enabled;\n createDebug.humanize = require('ms');\n Object.keys(env).forEach(function (key) {\n createDebug[key] = env[key];\n });\n /**\n * Active `debug` instances.\n */\n\n createDebug.instances = [];\n /**\n * The currently active debug mode names, and names to skip.\n */\n\n createDebug.names = [];\n createDebug.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\n createDebug.formatters = {};\n /**\n * Selects a color for a debug namespace\n * @param {String} namespace The namespace string for the for the debug instance to be colored\n * @return {Number|String} An ANSI color code for the given namespace\n * @api private\n */\n\n function selectColor(namespace) {\n var hash = 0;\n\n for (var i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n }\n\n createDebug.selectColor = selectColor;\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\n function createDebug(namespace) {\n var prevTime;\n\n function debug() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n // Disabled?\n if (!debug.enabled) {\n return;\n }\n\n var self = debug; // Set `diff` timestamp\n\n var curr = Number(new Date());\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n args[0] = createDebug.coerce(args[0]);\n\n if (typeof args[0] !== 'string') {\n // Anything else let's inspect with %O\n args.unshift('%O');\n } // Apply any `formatters` transformations\n\n\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n // If we encounter an escaped % then don't increase the array index\n if (match === '%%') {\n return match;\n }\n\n index++;\n var formatter = createDebug.formatters[format];\n\n if (typeof formatter === 'function') {\n var val = args[index];\n match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n args.splice(index, 1);\n index--;\n }\n\n return match;\n }); // Apply env-specific formatting (colors, etc.)\n\n createDebug.formatArgs.call(self, args);\n var logFn = self.log || createDebug.log;\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = createDebug.enabled(namespace);\n debug.useColors = createDebug.useColors();\n debug.color = createDebug.selectColor(namespace);\n debug.destroy = destroy;\n debug.extend = extend; // Env-specific initialization logic for debug instances\n\n if (typeof createDebug.init === 'function') {\n createDebug.init(debug);\n }\n\n createDebug.instances.push(debug);\n return debug;\n }\n\n function destroy() {\n var index = createDebug.instances.indexOf(this);\n\n if (index !== -1) {\n createDebug.instances.splice(index, 1);\n return true;\n }\n\n return false;\n }\n\n function extend(namespace, delimiter) {\n var newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n newDebug.log = this.log;\n return newDebug;\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\n\n function enable(namespaces) {\n createDebug.save(namespaces);\n createDebug.names = [];\n createDebug.skips = [];\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue;\n }\n\n namespaces = split[i].replace(/\\*/g, '.*?');\n\n if (namespaces[0] === '-') {\n createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n createDebug.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < createDebug.instances.length; i++) {\n var instance = createDebug.instances[i];\n instance.enabled = createDebug.enabled(instance.namespace);\n }\n }\n /**\n * Disable debug output.\n *\n * @return {String} namespaces\n * @api public\n */\n\n\n function disable() {\n var namespaces = [].concat(_toConsumableArray(createDebug.names.map(toNamespace)), _toConsumableArray(createDebug.skips.map(toNamespace).map(function (namespace) {\n return '-' + namespace;\n }))).join(',');\n createDebug.enable('');\n return namespaces;\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\n function enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n\n var i;\n var len;\n\n for (i = 0, len = createDebug.skips.length; i < len; i++) {\n if (createDebug.skips[i].test(name)) {\n return false;\n }\n }\n\n for (i = 0, len = createDebug.names.length; i < len; i++) {\n if (createDebug.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * Convert regexp to namespace\n *\n * @param {RegExp} regxep\n * @return {String} namespace\n * @api private\n */\n\n\n function toNamespace(regexp) {\n return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\\.\\*\\?$/, '*');\n }\n /**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\n\n function coerce(val) {\n if (val instanceof Error) {\n return val.stack || val.message;\n }\n\n return val;\n }\n\n createDebug.enable(createDebug.load());\n return createDebug;\n}\n\nmodule.exports = setup;","module.exports = function load(src, opts, cb) {\n var head = document.head || document.getElementsByTagName('head')[0];\n var script = document.createElement('script');\n\n if (typeof opts === 'function') {\n cb = opts;\n opts = {};\n }\n\n opts = opts || {};\n\n cb = cb || function () {};\n\n script.type = opts.type || 'text/javascript';\n script.charset = opts.charset || 'utf8';\n script.async = 'async' in opts ? !!opts.async : true;\n script.src = src;\n\n if (opts.attrs) {\n setAttributes(script, opts.attrs);\n }\n\n if (opts.text) {\n script.text = '' + opts.text;\n }\n\n var onend = 'onload' in script ? stdOnEnd : ieOnEnd;\n onend(script, cb); // some good legacy browsers (firefox) fail the 'in' detection above\n // so as a fallback we always set onload\n // old IE will ignore this and new IE will set onload\n\n if (!script.onload) {\n stdOnEnd(script, cb);\n }\n\n head.appendChild(script);\n};\n\nfunction setAttributes(script, attrs) {\n for (var attr in attrs) {\n script.setAttribute(attr, attrs[attr]);\n }\n}\n\nfunction stdOnEnd(script, cb) {\n script.onload = function () {\n this.onerror = this.onload = null;\n cb(null, script);\n };\n\n script.onerror = function () {\n // this.onload = null here is necessary\n // because even IE9 works not like others\n this.onerror = this.onload = null;\n cb(new Error('Failed to load ' + this.src), script);\n };\n}\n\nfunction ieOnEnd(script, cb) {\n script.onreadystatechange = function () {\n if (this.readyState != 'complete' && this.readyState != 'loaded') return;\n this.onreadystatechange = null;\n cb(null, script); // there is no way to catch loading errors in IE8\n };\n}","function areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) {\n isEqual = areInputsEqual;\n }\n\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n\n function memoized() {\n var newArgs = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n\n return memoized;\n}\n\nexport default memoizeOne;","/**\n * Helpers.\n */\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n\n throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val));\n};\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\n\nfunction parse(str) {\n str = String(str);\n\n if (str.length > 100) {\n return;\n }\n\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);\n\n if (!match) {\n return;\n }\n\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n\n default:\n return undefined;\n }\n}\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n\n return ms + 'ms';\n}\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n\n return ms + ' ms';\n}\n/**\n * Pluralization helper.\n */\n\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}","'use strict';\n\nvar has = Object.prototype.hasOwnProperty,\n undef;\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\n\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\n\n\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\n\n\nfunction querystring(query) {\n var parser = /([^=?&]+)=?([^&]*)/g,\n result = {},\n part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1]),\n value = decode(part[2]); //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\n\n\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n var pairs = [],\n value,\n key; //\n // Optionally prefix with a '?' if needed\n //\n\n if ('string' !== typeof prefix) prefix = '?';\n\n for (key in obj) {\n if (has.call(obj, key)) {\n value = obj[key]; //\n // Edge cases where we actually want to encode the value to an empty\n // string instead of the stringified value.\n //\n\n if (!value && (value === null || value === undef || isNaN(value))) {\n value = '';\n }\n\n key = encodeURIComponent(key);\n value = encodeURIComponent(value); //\n // If we failed to encode the strings, we should bail out as we don't\n // want to add invalid strings to the query.\n //\n\n if (key === null || value === null) continue;\n pairs.push(key + '=' + value);\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n} //\n// Expose the module.\n//\n\n\nexports.stringify = querystringify;\nexports.parse = querystring;","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView; // Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length, i, keys;\n\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!equal(a[i], b[i])) return false;\n }\n\n return true;\n } // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n\n\n var it;\n\n if (hasMap && a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n it = a.entries();\n\n while (!(i = it.next()).done) {\n if (!b.has(i.value[0])) return false;\n }\n\n it = a.entries();\n\n while (!(i = it.next()).done) {\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n }\n\n return true;\n }\n\n if (hasSet && a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n it = a.entries();\n\n while (!(i = it.next()).done) {\n if (!b.has(i.value[0])) return false;\n }\n\n return true;\n } // END: Modifications\n\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n } // END: fast-deep-equal\n // START: react-fast-compare\n // custom handling for DOM elements\n\n\n if (hasElementType && a instanceof Element) return false; // custom handling for React/Preact\n\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n continue;\n } // all other properties should be traversed as usual\n\n\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n } // END: react-fast-compare\n // START: fast-deep-equal\n\n\n return true;\n }\n\n return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message || '').match(/stack|recursion/i)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n } // some other error. we should definitely know about these\n\n\n throw error;\n }\n};","'use strict';\n\nvar strictUriEncode = require('strict-uri-encode');\n\nvar objectAssign = require('object-assign');\n\nvar decodeComponent = require('decode-uri-component');\n\nfunction encoderForArrayFormat(opts) {\n switch (opts.arrayFormat) {\n case 'index':\n return function (key, value, index) {\n return value === null ? [encode(key, opts), '[', index, ']'].join('') : [encode(key, opts), '[', encode(index, opts), ']=', encode(value, opts)].join('');\n };\n\n case 'bracket':\n return function (key, value) {\n return value === null ? encode(key, opts) : [encode(key, opts), '[]=', encode(value, opts)].join('');\n };\n\n default:\n return function (key, value) {\n return value === null ? encode(key, opts) : [encode(key, opts), '=', encode(value, opts)].join('');\n };\n }\n}\n\nfunction parserForArrayFormat(opts) {\n var result;\n\n switch (opts.arrayFormat) {\n case 'index':\n return function (key, value, accumulator) {\n result = /\\[(\\d*)\\]$/.exec(key);\n key = key.replace(/\\[\\d*\\]$/, '');\n\n if (!result) {\n accumulator[key] = value;\n return;\n }\n\n if (accumulator[key] === undefined) {\n accumulator[key] = {};\n }\n\n accumulator[key][result[1]] = value;\n };\n\n case 'bracket':\n return function (key, value, accumulator) {\n result = /(\\[\\])$/.exec(key);\n key = key.replace(/\\[\\]$/, '');\n\n if (!result) {\n accumulator[key] = value;\n return;\n } else if (accumulator[key] === undefined) {\n accumulator[key] = [value];\n return;\n }\n\n accumulator[key] = [].concat(accumulator[key], value);\n };\n\n default:\n return function (key, value, accumulator) {\n if (accumulator[key] === undefined) {\n accumulator[key] = value;\n return;\n }\n\n accumulator[key] = [].concat(accumulator[key], value);\n };\n }\n}\n\nfunction encode(value, opts) {\n if (opts.encode) {\n return opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n }\n\n return value;\n}\n\nfunction keysSorter(input) {\n if (Array.isArray(input)) {\n return input.sort();\n } else if (typeof input === 'object') {\n return keysSorter(Object.keys(input)).sort(function (a, b) {\n return Number(a) - Number(b);\n }).map(function (key) {\n return input[key];\n });\n }\n\n return input;\n}\n\nfunction extract(str) {\n var queryStart = str.indexOf('?');\n\n if (queryStart === -1) {\n return '';\n }\n\n return str.slice(queryStart + 1);\n}\n\nfunction parse(str, opts) {\n opts = objectAssign({\n arrayFormat: 'none'\n }, opts);\n var formatter = parserForArrayFormat(opts); // Create an object with no prototype\n // https://github.com/sindresorhus/query-string/issues/47\n\n var ret = Object.create(null);\n\n if (typeof str !== 'string') {\n return ret;\n }\n\n str = str.trim().replace(/^[?#&]/, '');\n\n if (!str) {\n return ret;\n }\n\n str.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('='); // Firefox (pre 40) decodes `%3D` to `=`\n // https://github.com/sindresorhus/query-string/pull/37\n\n var key = parts.shift();\n var val = parts.length > 0 ? parts.join('=') : undefined; // missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\n val = val === undefined ? null : decodeComponent(val);\n formatter(decodeComponent(key), val, ret);\n });\n return Object.keys(ret).sort().reduce(function (result, key) {\n var val = ret[key];\n\n if (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n // Sort object keys, not values\n result[key] = keysSorter(val);\n } else {\n result[key] = val;\n }\n\n return result;\n }, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = function (obj, opts) {\n var defaults = {\n encode: true,\n strict: true,\n arrayFormat: 'none'\n };\n opts = objectAssign(defaults, opts);\n\n if (opts.sort === false) {\n opts.sort = function () {};\n }\n\n var formatter = encoderForArrayFormat(opts);\n return obj ? Object.keys(obj).sort(opts.sort).map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return '';\n }\n\n if (val === null) {\n return encode(key, opts);\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.slice().forEach(function (val2) {\n if (val2 === undefined) {\n return;\n }\n\n result.push(formatter(key, val2, result.length));\n });\n return result.join('&');\n }\n\n return encode(key, opts) + '=' + encode(val, opts);\n }).filter(function (x) {\n return x.length > 0;\n }).join('&') : '';\n};\n\nexports.parseUrl = function (str, opts) {\n return {\n url: str.split('?')[0] || '',\n query: parse(extract(str), opts)\n };\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _reactFastCompare = _interopRequireDefault(require(\"react-fast-compare\"));\n\nvar _props = require(\"./props\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar SEEK_ON_PLAY_EXPIRY = 5000;\n\nvar Player = /*#__PURE__*/function (_Component) {\n _inherits(Player, _Component);\n\n var _super = _createSuper(Player);\n\n function Player() {\n var _this;\n\n _classCallCheck(this, Player);\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(_args));\n\n _defineProperty(_assertThisInitialized(_this), \"mounted\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"isReady\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"isPlaying\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"isLoading\", true);\n\n _defineProperty(_assertThisInitialized(_this), \"loadOnReady\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"startOnPlay\", true);\n\n _defineProperty(_assertThisInitialized(_this), \"seekOnPlay\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"onDurationCalled\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"handlePlayerMount\", function (player) {\n _this.player = player;\n\n _this.player.load(_this.props.url);\n\n _this.progress();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getInternalPlayer\", function (key) {\n if (!_this.player) return null;\n return _this.player[key];\n });\n\n _defineProperty(_assertThisInitialized(_this), \"progress\", function () {\n if (_this.props.url && _this.player && _this.isReady) {\n var playedSeconds = _this.getCurrentTime() || 0;\n\n var loadedSeconds = _this.getSecondsLoaded();\n\n var duration = _this.getDuration();\n\n if (duration) {\n var progress = {\n playedSeconds: playedSeconds,\n played: playedSeconds / duration\n };\n\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n } // Only call onProgress if values have changed\n\n\n if (progress.playedSeconds !== _this.prevPlayed || progress.loadedSeconds !== _this.prevLoaded) {\n _this.props.onProgress(progress);\n }\n\n _this.prevPlayed = progress.playedSeconds;\n _this.prevLoaded = progress.loadedSeconds;\n }\n }\n\n _this.progressTimeout = setTimeout(_this.progress, _this.props.progressFrequency || _this.props.progressInterval);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleReady\", function () {\n if (!_this.mounted) return;\n _this.isReady = true;\n _this.isLoading = false;\n var _this$props = _this.props,\n onReady = _this$props.onReady,\n playing = _this$props.playing,\n volume = _this$props.volume,\n muted = _this$props.muted;\n onReady();\n\n if (!muted && volume !== null) {\n _this.player.setVolume(volume);\n }\n\n if (_this.loadOnReady) {\n _this.player.load(_this.loadOnReady, true);\n\n _this.loadOnReady = null;\n } else if (playing) {\n _this.player.play();\n }\n\n _this.handleDurationCheck();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handlePlay\", function () {\n _this.isPlaying = true;\n _this.isLoading = false;\n var _this$props2 = _this.props,\n onStart = _this$props2.onStart,\n onPlay = _this$props2.onPlay,\n playbackRate = _this$props2.playbackRate;\n\n if (_this.startOnPlay) {\n if (_this.player.setPlaybackRate && playbackRate !== 1) {\n _this.player.setPlaybackRate(playbackRate);\n }\n\n onStart();\n _this.startOnPlay = false;\n }\n\n onPlay();\n\n if (_this.seekOnPlay) {\n _this.seekTo(_this.seekOnPlay);\n\n _this.seekOnPlay = null;\n }\n\n _this.handleDurationCheck();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handlePause\", function (e) {\n _this.isPlaying = false;\n\n if (!_this.isLoading) {\n _this.props.onPause(e);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleEnded\", function () {\n var _this$props3 = _this.props,\n activePlayer = _this$props3.activePlayer,\n loop = _this$props3.loop,\n onEnded = _this$props3.onEnded;\n\n if (activePlayer.loopOnEnded && loop) {\n _this.seekTo(0);\n }\n\n if (!loop) {\n _this.isPlaying = false;\n onEnded();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleError\", function () {\n var _this$props4;\n\n _this.isLoading = false;\n\n (_this$props4 = _this.props).onError.apply(_this$props4, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleDurationCheck\", function () {\n clearTimeout(_this.durationCheckTimeout);\n\n var duration = _this.getDuration();\n\n if (duration) {\n if (!_this.onDurationCalled) {\n _this.props.onDuration(duration);\n\n _this.onDurationCalled = true;\n }\n } else {\n _this.durationCheckTimeout = setTimeout(_this.handleDurationCheck, 100);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleLoaded\", function () {\n // Sometimes we know loading has stopped but onReady/onPlay are never called\n // so this provides a way for players to avoid getting stuck\n _this.isLoading = false;\n });\n\n return _this;\n }\n\n _createClass(Player, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.mounted = true;\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n\n if (this.isReady) {\n this.player.stop();\n\n if (this.player.disablePIP) {\n this.player.disablePIP();\n }\n }\n\n this.mounted = false;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this2 = this; // Invoke player methods based on changed props\n\n\n var _this$props5 = this.props,\n url = _this$props5.url,\n playing = _this$props5.playing,\n volume = _this$props5.volume,\n muted = _this$props5.muted,\n playbackRate = _this$props5.playbackRate,\n pip = _this$props5.pip,\n loop = _this$props5.loop,\n activePlayer = _this$props5.activePlayer;\n\n if (!(0, _reactFastCompare[\"default\"])(prevProps.url, url)) {\n if (this.isLoading && !activePlayer.forceLoad) {\n console.warn(\"ReactPlayer: the attempt to load \".concat(url, \" is being deferred until the player has loaded\"));\n this.loadOnReady = url;\n return;\n }\n\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(url, this.isReady);\n }\n\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play();\n }\n\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause();\n }\n\n if (!prevProps.pip && pip && this.player.enablePIP) {\n this.player.enablePIP();\n }\n\n if (prevProps.pip && !pip && this.player.disablePIP) {\n this.player.disablePIP();\n }\n\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume);\n }\n\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n\n if (volume !== null) {\n // Set volume next tick to fix a bug with DailyMotion\n setTimeout(function () {\n return _this2.player.setVolume(volume);\n });\n }\n }\n }\n\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate);\n }\n\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop);\n }\n }\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n if (!this.isReady) return null;\n return this.player.getDuration();\n }\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n if (!this.isReady) return null;\n return this.player.getCurrentTime();\n }\n }, {\n key: \"getSecondsLoaded\",\n value: function getSecondsLoaded() {\n if (!this.isReady) return null;\n return this.player.getSecondsLoaded();\n }\n }, {\n key: \"seekTo\",\n value: function seekTo(amount, type) {\n var _this3 = this; // When seeking before player is ready, store value and seek later\n\n\n if (!this.isReady && amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(function () {\n _this3.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n return;\n }\n\n var isFraction = !type ? amount > 0 && amount < 1 : type === 'fraction';\n\n if (isFraction) {\n // Convert fraction to seconds based on duration\n var duration = this.player.getDuration();\n\n if (!duration) {\n console.warn('ReactPlayer: could not seek using fraction – duration not yet available');\n return;\n }\n\n this.player.seekTo(duration * amount);\n return;\n }\n\n this.player.seekTo(amount);\n }\n }, {\n key: \"render\",\n value: function render() {\n var Player = this.props.activePlayer;\n\n if (!Player) {\n return null;\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(Player, _extends({}, this.props, {\n onMount: this.handlePlayerMount,\n onReady: this.handleReady,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onEnded: this.handleEnded,\n onLoaded: this.handleLoaded,\n onError: this.handleError\n }));\n }\n }]);\n\n return Player;\n}(_react.Component);\n\nexports[\"default\"] = Player;\n\n_defineProperty(Player, \"displayName\", 'Player');\n\n_defineProperty(Player, \"propTypes\", _props.propTypes);\n\n_defineProperty(Player, \"defaultProps\", _props.defaultProps);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar ICON_SIZE = '64px';\nvar cache = {};\n\nvar Preview = /*#__PURE__*/function (_Component) {\n _inherits(Preview, _Component);\n\n var _super = _createSuper(Preview);\n\n function Preview() {\n var _this;\n\n _classCallCheck(this, Preview);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"mounted\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n image: null\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleKeyPress\", function (e) {\n if (e.key === 'Enter' || e.key === ' ') {\n _this.props.onClick();\n }\n });\n\n return _this;\n }\n\n _createClass(Preview, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.mounted = true;\n this.fetchImage(this.props);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props = this.props,\n url = _this$props.url,\n light = _this$props.light;\n\n if (prevProps.url !== url || prevProps.light !== light) {\n this.fetchImage(this.props);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false;\n }\n }, {\n key: \"fetchImage\",\n value: function fetchImage(_ref) {\n var _this2 = this;\n\n var url = _ref.url,\n light = _ref.light;\n\n if (typeof light === 'string') {\n this.setState({\n image: light\n });\n return;\n }\n\n if (cache[url]) {\n this.setState({\n image: cache[url]\n });\n return;\n }\n\n this.setState({\n image: null\n });\n return window.fetch(\"https://noembed.com/embed?url=\".concat(url)).then(function (response) {\n return response.json();\n }).then(function (data) {\n if (data.thumbnail_url && _this2.mounted) {\n var image = data.thumbnail_url.replace('height=100', 'height=480');\n\n _this2.setState({\n image: image\n });\n\n cache[url] = image;\n }\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n onClick = _this$props2.onClick,\n playIcon = _this$props2.playIcon;\n var image = this.state.image;\n var flexCenter = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n };\n var styles = {\n preview: _objectSpread({\n width: '100%',\n height: '100%',\n backgroundImage: image ? \"url(\".concat(image, \")\") : undefined,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n cursor: 'pointer'\n }, flexCenter),\n shadow: _objectSpread({\n background: 'radial-gradient(rgb(0, 0, 0, 0.3), rgba(0, 0, 0, 0) 60%)',\n borderRadius: ICON_SIZE,\n width: ICON_SIZE,\n height: ICON_SIZE\n }, flexCenter),\n playIcon: {\n borderStyle: 'solid',\n borderWidth: '16px 0 16px 26px',\n borderColor: 'transparent transparent transparent white',\n marginLeft: '7px'\n }\n };\n\n var defaultPlayIcon = /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: styles.shadow,\n className: \"react-player__shadow\"\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: styles.playIcon,\n className: \"react-player__play-icon\"\n }));\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: styles.preview,\n className: \"react-player__preview\",\n onClick: onClick,\n tabIndex: 0,\n onKeyPress: this.handleKeyPress\n }, playIcon || defaultPlayIcon);\n }\n }]);\n\n return Preview;\n}(_react.Component);\n\nexports[\"default\"] = Preview;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createReactPlayer = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _deepmerge = _interopRequireDefault(require(\"deepmerge\"));\n\nvar _memoizeOne = _interopRequireDefault(require(\"memoize-one\"));\n\nvar _reactFastCompare = _interopRequireDefault(require(\"react-fast-compare\"));\n\nvar _props = require(\"./props\");\n\nvar _utils = require(\"./utils\");\n\nvar _Player3 = _interopRequireDefault(require(\"./Player\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nvar Preview = /*#__PURE__*/(0, _react.lazy)(function () {\n return Promise.resolve().then(function () {\n return _interopRequireWildcard(require('./Preview'));\n });\n});\nvar IS_BROWSER = typeof window !== 'undefined' && window.document;\nvar SUPPORTED_PROPS = Object.keys(_props.propTypes); // Return null when rendering on the server\n// as Suspense is not supported yet\n\nvar UniversalSuspense = IS_BROWSER ? _react.Suspense : function () {\n return null;\n};\nvar customPlayers = [];\n\nvar createReactPlayer = function createReactPlayer(players, fallback) {\n var _class, _temp;\n\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inherits(ReactPlayer, _Component);\n\n var _super = _createSuper(ReactPlayer);\n\n function ReactPlayer() {\n var _this;\n\n _classCallCheck(this, ReactPlayer);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n showPreview: !!_this.props.light\n });\n\n _defineProperty(_assertThisInitialized(_this), \"references\", {\n wrapper: function wrapper(_wrapper) {\n _this.wrapper = _wrapper;\n },\n player: function player(_player) {\n _this.player = _player;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleClickPreview\", function () {\n _this.setState({\n showPreview: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"showPreview\", function () {\n _this.setState({\n showPreview: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getDuration\", function () {\n if (!_this.player) return null;\n return _this.player.getDuration();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getCurrentTime\", function () {\n if (!_this.player) return null;\n return _this.player.getCurrentTime();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getSecondsLoaded\", function () {\n if (!_this.player) return null;\n return _this.player.getSecondsLoaded();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getInternalPlayer\", function () {\n var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'player';\n if (!_this.player) return null;\n return _this.player.getInternalPlayer(key);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"seekTo\", function (fraction, type) {\n if (!_this.player) return null;\n\n _this.player.seekTo(fraction, type);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleReady\", function () {\n _this.props.onReady(_assertThisInitialized(_this));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getActivePlayer\", (0, _memoizeOne[\"default\"])(function (url) {\n for (var _i = 0, _arr = [].concat(customPlayers, _toConsumableArray(players)); _i < _arr.length; _i++) {\n var player = _arr[_i];\n\n if (player.canPlay(url)) {\n return player;\n }\n }\n\n if (fallback) {\n return fallback;\n }\n\n return null;\n }));\n\n _defineProperty(_assertThisInitialized(_this), \"getConfig\", (0, _memoizeOne[\"default\"])(function (url, key) {\n var config = _this.props.config;\n return _deepmerge[\"default\"].all([_props.defaultProps.config, _props.defaultProps.config[key] || {}, config, config[key] || {}]);\n }));\n\n _defineProperty(_assertThisInitialized(_this), \"getAttributes\", (0, _memoizeOne[\"default\"])(function (url) {\n return (0, _utils.omit)(_this.props, SUPPORTED_PROPS);\n }));\n\n _defineProperty(_assertThisInitialized(_this), \"renderActivePlayer\", function (url) {\n if (!url) return null;\n\n var player = _this.getActivePlayer(url);\n\n if (!player) return null;\n\n var config = _this.getConfig(url, player.key);\n\n return /*#__PURE__*/_react[\"default\"].createElement(_Player3[\"default\"], _extends({}, _this.props, {\n key: player.key,\n ref: _this.references.player,\n config: config,\n activePlayer: player.lazyPlayer || player,\n onReady: _this.handleReady\n }));\n });\n\n return _this;\n }\n\n _createClass(ReactPlayer, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n return !(0, _reactFastCompare[\"default\"])(this.props, nextProps) || !(0, _reactFastCompare[\"default\"])(this.state, nextState);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var light = this.props.light;\n\n if (!prevProps.light && light) {\n this.setState({\n showPreview: true\n });\n }\n\n if (prevProps.light && !light) {\n this.setState({\n showPreview: false\n });\n }\n }\n }, {\n key: \"renderPreview\",\n value: function renderPreview(url) {\n if (!url) return null;\n var _this$props = this.props,\n light = _this$props.light,\n playIcon = _this$props.playIcon;\n return /*#__PURE__*/_react[\"default\"].createElement(Preview, {\n url: url,\n light: light,\n playIcon: playIcon,\n onClick: this.handleClickPreview\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n url = _this$props2.url,\n style = _this$props2.style,\n width = _this$props2.width,\n height = _this$props2.height,\n Wrapper = _this$props2.wrapper;\n var showPreview = this.state.showPreview;\n var attributes = this.getAttributes(url);\n return /*#__PURE__*/_react[\"default\"].createElement(Wrapper, _extends({\n ref: this.references.wrapper,\n style: _objectSpread(_objectSpread({}, style), {}, {\n width: width,\n height: height\n })\n }, attributes), /*#__PURE__*/_react[\"default\"].createElement(UniversalSuspense, {\n fallback: null\n }, showPreview ? this.renderPreview(url) : this.renderActivePlayer(url)));\n }\n }]);\n\n return ReactPlayer;\n }(_react.Component), _defineProperty(_class, \"displayName\", 'ReactPlayer'), _defineProperty(_class, \"propTypes\", _props.propTypes), _defineProperty(_class, \"defaultProps\", _props.defaultProps), _defineProperty(_class, \"addCustomPlayer\", function (player) {\n customPlayers.push(player);\n }), _defineProperty(_class, \"removeCustomPlayers\", function () {\n customPlayers.length = 0;\n }), _defineProperty(_class, \"canPlay\", function (url) {\n for (var _i2 = 0, _arr2 = [].concat(customPlayers, _toConsumableArray(players)); _i2 < _arr2.length; _i2++) {\n var _Player = _arr2[_i2];\n\n if (_Player.canPlay(url)) {\n return true;\n }\n }\n\n return false;\n }), _defineProperty(_class, \"canEnablePIP\", function (url) {\n for (var _i3 = 0, _arr3 = [].concat(customPlayers, _toConsumableArray(players)); _i3 < _arr3.length; _i3++) {\n var _Player2 = _arr3[_i3];\n\n if (_Player2.canEnablePIP && _Player2.canEnablePIP(url)) {\n return true;\n }\n }\n\n return false;\n }), _temp;\n};\n\nexports.createReactPlayer = createReactPlayer;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _players = _interopRequireDefault(require(\"./players\"));\n\nvar _ReactPlayer = require(\"./ReactPlayer\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n} // Fall back to FilePlayer if nothing else can play the URL\n\n\nvar fallback = _players[\"default\"][_players[\"default\"].length - 1];\n\nvar _default = (0, _ReactPlayer.createReactPlayer)(_players[\"default\"], fallback);\n\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canPlay = exports.FLV_EXTENSIONS = exports.DASH_EXTENSIONS = exports.HLS_EXTENSIONS = exports.VIDEO_EXTENSIONS = exports.AUDIO_EXTENSIONS = exports.MATCH_URL_VIDYARD = exports.MATCH_URL_MIXCLOUD = exports.MATCH_URL_DAILYMOTION = exports.MATCH_URL_TWITCH_CHANNEL = exports.MATCH_URL_TWITCH_VIDEO = exports.MATCH_URL_WISTIA = exports.MATCH_URL_STREAMABLE = exports.MATCH_URL_FACEBOOK = exports.MATCH_URL_VIMEO = exports.MATCH_URL_SOUNDCLOUD = exports.MATCH_URL_YOUTUBE = void 0;\n\nvar _utils = require(\"./utils\");\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nvar MATCH_URL_YOUTUBE = /(?:youtu\\.be\\/|youtube(?:-nocookie)?\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))((\\w|-){11})|youtube\\.com\\/playlist\\?list=|youtube\\.com\\/user\\//;\nexports.MATCH_URL_YOUTUBE = MATCH_URL_YOUTUBE;\nvar MATCH_URL_SOUNDCLOUD = /(?:soundcloud\\.com|snd\\.sc)\\/[^.]+$/;\nexports.MATCH_URL_SOUNDCLOUD = MATCH_URL_SOUNDCLOUD;\nvar MATCH_URL_VIMEO = /vimeo\\.com\\/.+/;\nexports.MATCH_URL_VIMEO = MATCH_URL_VIMEO;\nvar MATCH_URL_FACEBOOK = /^https?:\\/\\/(www\\.)?facebook\\.com.*\\/(video(s)?|watch|story)(\\.php?|\\/).+$/;\nexports.MATCH_URL_FACEBOOK = MATCH_URL_FACEBOOK;\nvar MATCH_URL_STREAMABLE = /streamable\\.com\\/([a-z0-9]+)$/;\nexports.MATCH_URL_STREAMABLE = MATCH_URL_STREAMABLE;\nvar MATCH_URL_WISTIA = /(?:wistia\\.com|wi\\.st)\\/(?:medias|embed)\\/(.*)$/;\nexports.MATCH_URL_WISTIA = MATCH_URL_WISTIA;\nvar MATCH_URL_TWITCH_VIDEO = /(?:www\\.|go\\.)?twitch\\.tv\\/videos\\/(\\d+)($|\\?)/;\nexports.MATCH_URL_TWITCH_VIDEO = MATCH_URL_TWITCH_VIDEO;\nvar MATCH_URL_TWITCH_CHANNEL = /(?:www\\.|go\\.)?twitch\\.tv\\/([a-zA-Z0-9_]+)($|\\?)/;\nexports.MATCH_URL_TWITCH_CHANNEL = MATCH_URL_TWITCH_CHANNEL;\nvar MATCH_URL_DAILYMOTION = /^(?:(?:https?):)?(?:\\/\\/)?(?:www\\.)?(?:(?:dailymotion\\.com(?:\\/embed)?\\/video)|dai\\.ly)\\/([a-zA-Z0-9]+)(?:_[\\w_-]+)?$/;\nexports.MATCH_URL_DAILYMOTION = MATCH_URL_DAILYMOTION;\nvar MATCH_URL_MIXCLOUD = /mixcloud\\.com\\/([^/]+\\/[^/]+)/;\nexports.MATCH_URL_MIXCLOUD = MATCH_URL_MIXCLOUD;\nvar MATCH_URL_VIDYARD = /vidyard.com\\/(?:watch\\/)?([a-zA-Z0-9-]+)/;\nexports.MATCH_URL_VIDYARD = MATCH_URL_VIDYARD;\nvar AUDIO_EXTENSIONS = /\\.(m4a|mp4a|mpga|mp2|mp2a|mp3|m2a|m3a|wav|weba|aac|oga|spx)($|\\?)/i;\nexports.AUDIO_EXTENSIONS = AUDIO_EXTENSIONS;\nvar VIDEO_EXTENSIONS = /\\.(mp4|og[gv]|webm|mov|m4v)($|\\?)/i;\nexports.VIDEO_EXTENSIONS = VIDEO_EXTENSIONS;\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nexports.HLS_EXTENSIONS = HLS_EXTENSIONS;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nexports.DASH_EXTENSIONS = DASH_EXTENSIONS;\nvar FLV_EXTENSIONS = /\\.(flv)($|\\?)/i;\nexports.FLV_EXTENSIONS = FLV_EXTENSIONS;\n\nvar canPlayFile = function canPlayFile(url) {\n if (url instanceof Array) {\n var _iterator = _createForOfIteratorHelper(url),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var item = _step.value;\n\n if (typeof item === 'string' && canPlayFile(item)) {\n return true;\n }\n\n if (canPlayFile(item.src)) {\n return true;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return false;\n }\n\n if ((0, _utils.isMediaStream)(url)) {\n return true;\n }\n\n return AUDIO_EXTENSIONS.test(url) || VIDEO_EXTENSIONS.test(url) || HLS_EXTENSIONS.test(url) || DASH_EXTENSIONS.test(url) || FLV_EXTENSIONS.test(url);\n};\n\nvar canPlay = {\n youtube: function youtube(url) {\n if (url instanceof Array) {\n return url.every(function (item) {\n return MATCH_URL_YOUTUBE.test(item);\n });\n }\n\n return MATCH_URL_YOUTUBE.test(url);\n },\n soundcloud: function soundcloud(url) {\n return MATCH_URL_SOUNDCLOUD.test(url) && !AUDIO_EXTENSIONS.test(url);\n },\n vimeo: function vimeo(url) {\n return MATCH_URL_VIMEO.test(url) && !VIDEO_EXTENSIONS.test(url) && !HLS_EXTENSIONS.test(url);\n },\n facebook: function facebook(url) {\n return MATCH_URL_FACEBOOK.test(url);\n },\n streamable: function streamable(url) {\n return MATCH_URL_STREAMABLE.test(url);\n },\n wistia: function wistia(url) {\n return MATCH_URL_WISTIA.test(url);\n },\n twitch: function twitch(url) {\n return MATCH_URL_TWITCH_VIDEO.test(url) || MATCH_URL_TWITCH_CHANNEL.test(url);\n },\n dailymotion: function dailymotion(url) {\n return MATCH_URL_DAILYMOTION.test(url);\n },\n mixcloud: function mixcloud(url) {\n return MATCH_URL_MIXCLOUD.test(url);\n },\n vidyard: function vidyard(url) {\n return MATCH_URL_VIDYARD.test(url);\n },\n file: canPlayFile\n};\nexports.canPlay = canPlay;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar SDK_URL = 'https://api.dmcdn.net/all.js';\nvar SDK_GLOBAL = 'DM';\nvar SDK_GLOBAL_READY = 'dmAsyncInit';\n\nvar DailyMotion = /*#__PURE__*/function (_Component) {\n _inherits(DailyMotion, _Component);\n\n var _super = _createSuper(DailyMotion);\n\n function DailyMotion() {\n var _this;\n\n _classCallCheck(this, DailyMotion);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n _defineProperty(_assertThisInitialized(_this), \"onDurationChange\", function () {\n var duration = _this.getDuration();\n\n _this.props.onDuration(duration);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n _this.callPlayer('setMuted', true);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n _this.callPlayer('setMuted', false);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ref\", function (container) {\n _this.container = container;\n });\n\n return _this;\n }\n\n _createClass(DailyMotion, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.onMount && this.props.onMount(this);\n }\n }, {\n key: \"load\",\n value: function load(url) {\n var _this2 = this;\n\n var _this$props = this.props,\n controls = _this$props.controls,\n config = _this$props.config,\n onError = _this$props.onError,\n playing = _this$props.playing;\n\n var _url$match = url.match(_patterns.MATCH_URL_DAILYMOTION),\n _url$match2 = _slicedToArray(_url$match, 2),\n id = _url$match2[1];\n\n if (this.player) {\n this.player.load(id, {\n start: (0, _utils.parseStartTime)(url),\n autoplay: playing\n });\n return;\n }\n\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY, function (DM) {\n return DM.player;\n }).then(function (DM) {\n if (!_this2.container) return;\n var Player = DM.player;\n _this2.player = new Player(_this2.container, {\n width: '100%',\n height: '100%',\n video: id,\n params: _objectSpread({\n controls: controls,\n autoplay: _this2.props.playing,\n mute: _this2.props.muted,\n start: (0, _utils.parseStartTime)(url),\n origin: window.location.origin\n }, config.params),\n events: {\n apiready: _this2.props.onReady,\n seeked: function seeked() {\n return _this2.props.onSeek(_this2.player.currentTime);\n },\n video_end: _this2.props.onEnded,\n durationchange: _this2.onDurationChange,\n pause: _this2.props.onPause,\n playing: _this2.props.onPlay,\n waiting: _this2.props.onBuffer,\n error: function error(event) {\n return onError(event);\n }\n }\n });\n }, onError);\n }\n }, {\n key: \"play\",\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: \"pause\",\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: \"stop\",\n value: function stop() {// Nothing to do\n }\n }, {\n key: \"seekTo\",\n value: function seekTo(seconds) {\n this.callPlayer('seek', seconds);\n }\n }, {\n key: \"setVolume\",\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction);\n }\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return this.player.duration || null;\n }\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n return this.player.currentTime;\n }\n }, {\n key: \"getSecondsLoaded\",\n value: function getSecondsLoaded() {\n return this.player.bufferedTime;\n }\n }, {\n key: \"render\",\n value: function render() {\n var display = this.props.display;\n var style = {\n width: '100%',\n height: '100%',\n display: display\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: style\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: this.ref\n }));\n }\n }]);\n\n return DailyMotion;\n}(_react.Component);\n\nexports[\"default\"] = DailyMotion;\n\n_defineProperty(DailyMotion, \"displayName\", 'DailyMotion');\n\n_defineProperty(DailyMotion, \"canPlay\", _patterns.canPlay.dailymotion);\n\n_defineProperty(DailyMotion, \"loopOnEnded\", true);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar SDK_URL = 'https://connect.facebook.net/en_US/sdk.js';\nvar SDK_GLOBAL = 'FB';\nvar SDK_GLOBAL_READY = 'fbAsyncInit';\nvar PLAYER_ID_PREFIX = 'facebook-player-';\n\nvar Facebook = /*#__PURE__*/function (_Component) {\n _inherits(Facebook, _Component);\n\n var _super = _createSuper(Facebook);\n\n function Facebook() {\n var _this;\n\n _classCallCheck(this, Facebook);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n _defineProperty(_assertThisInitialized(_this), \"playerID\", _this.props.config.playerId || \"\".concat(PLAYER_ID_PREFIX).concat((0, _utils.randomString)()));\n\n _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n _this.callPlayer('mute');\n });\n\n _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n _this.callPlayer('unmute');\n });\n\n return _this;\n }\n\n _createClass(Facebook, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.onMount && this.props.onMount(this);\n }\n }, {\n key: \"load\",\n value: function load(url, isReady) {\n var _this2 = this;\n\n if (isReady) {\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then(function (FB) {\n return FB.XFBML.parse();\n });\n return;\n }\n\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then(function (FB) {\n FB.init({\n appId: _this2.props.config.appId,\n xfbml: true,\n version: _this2.props.config.version\n });\n FB.Event.subscribe('xfbml.render', function (msg) {\n // Here we know the SDK has loaded, even if onReady/onPlay\n // is not called due to a video that cannot be embedded\n _this2.props.onLoaded();\n });\n FB.Event.subscribe('xfbml.ready', function (msg) {\n if (msg.type === 'video' && msg.id === _this2.playerID) {\n _this2.player = msg.instance;\n\n _this2.player.subscribe('startedPlaying', _this2.props.onPlay);\n\n _this2.player.subscribe('paused', _this2.props.onPause);\n\n _this2.player.subscribe('finishedPlaying', _this2.props.onEnded);\n\n _this2.player.subscribe('startedBuffering', _this2.props.onBuffer);\n\n _this2.player.subscribe('finishedBuffering', _this2.props.onBufferEnd);\n\n _this2.player.subscribe('error', _this2.props.onError);\n\n if (!_this2.props.muted) {\n // Player is muted by default\n _this2.callPlayer('unmute');\n }\n\n _this2.props.onReady(); // For some reason Facebook have added `visibility: hidden`\n // to the iframe when autoplay fails, so here we set it back\n\n\n document.getElementById(_this2.playerID).querySelector('iframe').style.visibility = 'visible';\n }\n });\n });\n }\n }, {\n key: \"play\",\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: \"pause\",\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: \"stop\",\n value: function stop() {// Nothing to do\n }\n }, {\n key: \"seekTo\",\n value: function seekTo(seconds) {\n this.callPlayer('seek', seconds);\n }\n }, {\n key: \"setVolume\",\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction);\n }\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return this.callPlayer('getDuration');\n }\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n return this.callPlayer('getCurrentPosition');\n }\n }, {\n key: \"getSecondsLoaded\",\n value: function getSecondsLoaded() {\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var style = {\n width: '100%',\n height: '100%'\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: style,\n id: this.playerID,\n className: \"fb-video\",\n \"data-href\": this.props.url,\n \"data-autoplay\": this.props.playing ? 'true' : 'false',\n \"data-allowfullscreen\": \"true\",\n \"data-controls\": this.props.controls ? 'true' : 'false'\n });\n }\n }]);\n\n return Facebook;\n}(_react.Component);\n\nexports[\"default\"] = Facebook;\n\n_defineProperty(Facebook, \"displayName\", 'Facebook');\n\n_defineProperty(Facebook, \"canPlay\", _patterns.canPlay.facebook);\n\n_defineProperty(Facebook, \"loopOnEnded\", true);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar IOS = typeof navigator !== 'undefined' && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\nvar HLS_SDK_URL = 'https://cdn.jsdelivr.net/npm/hls.js@VERSION/dist/hls.min.js';\nvar HLS_GLOBAL = 'Hls';\nvar DASH_SDK_URL = 'https://cdnjs.cloudflare.com/ajax/libs/dashjs/VERSION/dash.all.min.js';\nvar DASH_GLOBAL = 'dashjs';\nvar FLV_SDK_URL = 'https://cdn.jsdelivr.net/npm/flv.js@VERSION/dist/flv.min.js';\nvar FLV_GLOBAL = 'flvjs';\nvar MATCH_DROPBOX_URL = /www\\.dropbox\\.com\\/.+/;\nvar MATCH_CLOUDFLARE_STREAM = /https:\\/\\/watch\\.cloudflarestream\\.com\\/([a-z0-9]+)/;\nvar REPLACE_CLOUDFLARE_STREAM = 'https://videodelivery.net/{id}/manifest/video.m3u8';\n\nvar FilePlayer = /*#__PURE__*/function (_Component) {\n _inherits(FilePlayer, _Component);\n\n var _super = _createSuper(FilePlayer);\n\n function FilePlayer() {\n var _this;\n\n _classCallCheck(this, FilePlayer);\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(_args));\n\n _defineProperty(_assertThisInitialized(_this), \"onReady\", function () {\n var _this$props;\n\n return (_this$props = _this.props).onReady.apply(_this$props, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPlay\", function () {\n var _this$props2;\n\n return (_this$props2 = _this.props).onPlay.apply(_this$props2, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onBuffer\", function () {\n var _this$props3;\n\n return (_this$props3 = _this.props).onBuffer.apply(_this$props3, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onBufferEnd\", function () {\n var _this$props4;\n\n return (_this$props4 = _this.props).onBufferEnd.apply(_this$props4, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPause\", function () {\n var _this$props5;\n\n return (_this$props5 = _this.props).onPause.apply(_this$props5, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onEnded\", function () {\n var _this$props6;\n\n return (_this$props6 = _this.props).onEnded.apply(_this$props6, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onError\", function () {\n var _this$props7;\n\n return (_this$props7 = _this.props).onError.apply(_this$props7, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onEnablePIP\", function () {\n var _this$props8;\n\n return (_this$props8 = _this.props).onEnablePIP.apply(_this$props8, arguments);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDisablePIP\", function (e) {\n var _this$props9 = _this.props,\n onDisablePIP = _this$props9.onDisablePIP,\n playing = _this$props9.playing;\n onDisablePIP(e);\n\n if (playing) {\n _this.play();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPresentationModeChange\", function (e) {\n if (_this.player && (0, _utils.supportsWebKitPresentationMode)(_this.player)) {\n var webkitPresentationMode = _this.player.webkitPresentationMode;\n\n if (webkitPresentationMode === 'picture-in-picture') {\n _this.onEnablePIP(e);\n } else if (webkitPresentationMode === 'inline') {\n _this.onDisablePIP(e);\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSeek\", function (e) {\n _this.props.onSeek(e.target.currentTime);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n _this.player.muted = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n _this.player.muted = false;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderSourceElement\", function (source, index) {\n if (typeof source === 'string') {\n return /*#__PURE__*/_react[\"default\"].createElement(\"source\", {\n key: index,\n src: source\n });\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"source\", _extends({\n key: index\n }, source));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderTrack\", function (track, index) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"track\", _extends({\n key: index\n }, track));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ref\", function (player) {\n if (_this.player) {\n // Store previous player to be used by removeListeners()\n _this.prevPlayer = _this.player;\n }\n\n _this.player = player;\n });\n\n return _this;\n }\n\n _createClass(FilePlayer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.onMount && this.props.onMount(this);\n this.addListeners(this.player);\n\n if (IOS) {\n this.player.load();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.shouldUseAudio(this.props) !== this.shouldUseAudio(prevProps)) {\n this.removeListeners(this.prevPlayer);\n this.addListeners(this.player);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.removeListeners(this.player);\n\n if (this.hls) {\n this.hls.destroy();\n }\n }\n }, {\n key: \"addListeners\",\n value: function addListeners(player) {\n var playsinline = this.props.playsinline;\n player.addEventListener('canplay', this.onReady);\n player.addEventListener('play', this.onPlay);\n player.addEventListener('waiting', this.onBuffer);\n player.addEventListener('playing', this.onBufferEnd);\n player.addEventListener('pause', this.onPause);\n player.addEventListener('seeked', this.onSeek);\n player.addEventListener('ended', this.onEnded);\n player.addEventListener('error', this.onError);\n player.addEventListener('enterpictureinpicture', this.onEnablePIP);\n player.addEventListener('leavepictureinpicture', this.onDisablePIP);\n player.addEventListener('webkitpresentationmodechanged', this.onPresentationModeChange);\n\n if (playsinline) {\n player.setAttribute('playsinline', '');\n player.setAttribute('webkit-playsinline', '');\n player.setAttribute('x5-playsinline', '');\n }\n }\n }, {\n key: \"removeListeners\",\n value: function removeListeners(player) {\n player.removeEventListener('canplay', this.onReady);\n player.removeEventListener('play', this.onPlay);\n player.removeEventListener('waiting', this.onBuffer);\n player.removeEventListener('playing', this.onBufferEnd);\n player.removeEventListener('pause', this.onPause);\n player.removeEventListener('seeked', this.onSeek);\n player.removeEventListener('ended', this.onEnded);\n player.removeEventListener('error', this.onError);\n player.removeEventListener('enterpictureinpicture', this.onEnablePIP);\n player.removeEventListener('leavepictureinpicture', this.onDisablePIP);\n player.removeEventListener('webkitpresentationmodechanged', this.onPresentationModeChange);\n } // Proxy methods to prevent listener leaks\n\n }, {\n key: \"shouldUseAudio\",\n value: function shouldUseAudio(props) {\n if (props.config.forceVideo) {\n return false;\n }\n\n if (props.config.attributes.poster) {\n return false; // Use