@onereach/idw-ui-components 0.2.1-beta.32.0 → 0.3.0-beta.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +59 -51
  2. package/dist/cjs/index.js +239 -1
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/esm/index.js +1963 -837
  5. package/dist/esm/index.js.map +1 -1
  6. package/dist/idw-ui-components.css +1 -1
  7. package/dist/types/components/Feeds/FeedItemBase/FeedItemBase.vue.d.ts +29 -11
  8. package/dist/types/components/Feeds/FeedItemBase/FeedItemBase.vue.d.ts.map +1 -1
  9. package/dist/types/components/Feeds/FeedItemBase/index.d.ts +1 -1
  10. package/dist/types/components/Feeds/FeedItemBase/index.d.ts.map +1 -1
  11. package/dist/types/components/Feeds/FeedItemBase/types.d.ts +50 -10
  12. package/dist/types/components/Feeds/FeedItemBase/types.d.ts.map +1 -1
  13. package/dist/types/components/Feeds/FeedItemMetaFooter/FeedItemMetaFooter.vue.d.ts.map +1 -1
  14. package/dist/types/components/Feeds/FeedList/FeedList.vue.d.ts +5 -4
  15. package/dist/types/components/Feeds/FeedList/FeedList.vue.d.ts.map +1 -1
  16. package/dist/types/components/Feeds/FeedList/types.d.ts +1 -1
  17. package/dist/types/components/Feeds/FeedList/types.d.ts.map +1 -1
  18. package/dist/types/components/SkillCard/SkillCard.vue.d.ts.map +1 -1
  19. package/dist/types/idw-card/host/hostConfig.d.ts +2 -0
  20. package/dist/types/idw-card/host/hostConfig.d.ts.map +1 -1
  21. package/dist/types/idw-card/host/index.d.ts +1 -1
  22. package/dist/types/idw-card/host/index.d.ts.map +1 -1
  23. package/dist/types/idw-card/index.d.ts +2 -2
  24. package/dist/types/idw-card/index.d.ts.map +1 -1
  25. package/dist/types/idw-card/renderer/CardRenderer.vue.d.ts.map +1 -1
  26. package/dist/types/idw-card/renderer/IdwCardActionBar.vue.d.ts.map +1 -1
  27. package/dist/types/idw-card/renderer/IdwCardElementView.vue.d.ts.map +1 -1
  28. package/dist/types/idw-card/renderer/actionStyle.d.ts +5 -10
  29. package/dist/types/idw-card/renderer/actionStyle.d.ts.map +1 -1
  30. package/dist/types/idw-card/renderer/elements/ColumnSetElement.vue.d.ts.map +1 -1
  31. package/dist/types/idw-card/renderer/elements/ContainerElement.vue.d.ts.map +1 -1
  32. package/dist/types/idw-card/renderer/elements/FactSetElement.vue.d.ts.map +1 -1
  33. package/dist/types/idw-card/renderer/elements/FileElement.vue.d.ts +0 -2
  34. package/dist/types/idw-card/renderer/elements/FileElement.vue.d.ts.map +1 -1
  35. package/dist/types/idw-card/renderer/elements/ImageElement.vue.d.ts.map +1 -1
  36. package/dist/types/idw-card/renderer/elements/ImageSetElement.vue.d.ts.map +1 -1
  37. package/dist/types/idw-card/renderer/elements/InputElement.vue.d.ts.map +1 -1
  38. package/dist/types/idw-card/renderer/elements/MediaAudio.vue.d.ts +7 -0
  39. package/dist/types/idw-card/renderer/elements/MediaAudio.vue.d.ts.map +1 -0
  40. package/dist/types/idw-card/renderer/elements/MediaElement.vue.d.ts.map +1 -1
  41. package/dist/types/idw-card/renderer/elements/MediaVideo.vue.d.ts +8 -0
  42. package/dist/types/idw-card/renderer/elements/MediaVideo.vue.d.ts.map +1 -0
  43. package/dist/types/idw-card/renderer/elements/MediaVolume.vue.d.ts +12 -0
  44. package/dist/types/idw-card/renderer/elements/MediaVolume.vue.d.ts.map +1 -0
  45. package/dist/types/idw-card/renderer/elements/NoteElement.vue.d.ts +7 -0
  46. package/dist/types/idw-card/renderer/elements/NoteElement.vue.d.ts.map +1 -0
  47. package/dist/types/idw-card/renderer/elements/NotificationElement.vue.d.ts +7 -0
  48. package/dist/types/idw-card/renderer/elements/NotificationElement.vue.d.ts.map +1 -0
  49. package/dist/types/idw-card/renderer/elements/ProgressElement.vue.d.ts.map +1 -1
  50. package/dist/types/idw-card/renderer/elements/SkillElement.vue.d.ts.map +1 -1
  51. package/dist/types/idw-card/renderer/elements/TableElement.vue.d.ts.map +1 -1
  52. package/dist/types/idw-card/renderer/frameBorder.d.ts +3 -0
  53. package/dist/types/idw-card/renderer/frameBorder.d.ts.map +1 -0
  54. package/dist/types/idw-card/renderer/mediaChrome.d.ts +3 -0
  55. package/dist/types/idw-card/renderer/mediaChrome.d.ts.map +1 -0
  56. package/dist/types/idw-card/renderer/mediaControls.d.ts +21 -0
  57. package/dist/types/idw-card/renderer/mediaControls.d.ts.map +1 -0
  58. package/dist/types/idw-card/renderer/sliderSpacing.d.ts +3 -0
  59. package/dist/types/idw-card/renderer/sliderSpacing.d.ts.map +1 -0
  60. package/dist/types/idw-card/schema/index.d.ts +1 -1
  61. package/dist/types/idw-card/schema/index.d.ts.map +1 -1
  62. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/format-idw-summary.ts","../../src/components/SkillCard/types.ts","../../src/components/SkillCard/SkillCard.vue","../../src/components/Feeds/feedEmbed.ts","../../src/components/Feeds/formatFeedReadingTime.ts","../../src/components/Feeds/FeedItemBase/FeedItemBase.vue","../../src/components/Feeds/FeedItemMetaFooter/FeedItemMetaFooter.vue","../../src/components/Feeds/FeedMarkdownContent/FeedMarkdownContent.vue","../../src/assets/skill-card-background.png","../../src/components/Feeds/FeedSkillContent/FeedSkillContent.vue","../../src/components/Feeds/FeedEmbed/FeedEmbed.vue","../../src/components/Feeds/FeedHtmlContent/FeedHtmlContent.vue","../../src/components/Feeds/FeedFileContent/FeedFileContent.vue","../../src/idw-card/host/hostConfig.ts","../../src/idw-card/form/formContext.ts","../../src/idw-card/templates/compile.ts","../../src/idw-card/renderer/actionStyle.ts","../../src/idw-card/renderer/IdwCardActionBar.vue","../../src/idw-card/renderer/elements/ActionSetElement.vue","../../src/idw-card/renderer/elements/BadgeElement.vue","../../src/idw-card/renderer/elements/ColumnSetElement.vue","../../src/idw-card/renderer/elements/ContainerElement.vue","../../src/idw-card/renderer/elements/FactSetElement.vue","../../src/idw-card/renderer/elements/FileElement.vue","../../src/idw-card/renderer/elements/HtmlElement.vue","../../src/idw-card/renderer/elements/IconElement.vue","../../src/idw-card/renderer/elements/ImageElement.vue","../../src/idw-card/renderer/elements/ImageSetElement.vue","../../src/idw-card/form/dates.ts","../../src/idw-card/renderer/elements/InputElement.vue","../../src/idw-card/renderer/elements/MediaElement.vue","../../src/idw-card/renderer/elements/ProgressElement.vue","../../src/idw-card/renderer/elements/SkillElement.vue","../../src/idw-card/renderer/elements/TableElement.vue","../../src/idw-card/renderer/elements/TextElement.vue","../../src/idw-card/renderer/IdwCardElementView.vue","../../src/idw-card/renderer/CardRenderer.vue","../../src/components/Feeds/FeedList/FeedListItemBody.vue","../../src/components/Feeds/FeedList/FeedList.vue"],"sourcesContent":["import type { IdwSummary } from '@onereach/idw-contracts';\n\n/**\n * Formats an IDW summary for display in the UI.\n * Replace with real component exports as the library grows.\n */\nexport function formatIdwSummary(summary: IdwSummary): string {\n return `${summary.name} (${summary.id})`;\n}\n","import type { IdwCardSkillData } from '@onereach/idw-contracts';\n\nexport enum CardSize {\n XS = 'xs',\n S = 's',\n L = 'l',\n}\n\n/** Minimal skill fields required to render {@link SkillCard}. */\nexport type SkillCardData = IdwCardSkillData;\n\nexport type SkillCardProps = {\n skill: SkillCardData;\n selected?: boolean;\n disabled?: boolean;\n loading?: boolean;\n size?: CardSize;\n interactive?: boolean;\n};\n","<script setup lang=\"ts\">\nimport { OrLoaderV3 } from '@onereach/ui-components';\nimport { computed } from 'vue';\n\nimport {\n CardSize,\n type SkillCardProps,\n} from './types';\n\ndefineOptions({\n name: 'SkillCard',\n});\n\nconst CARD_SIZE = {\n [CardSize.XS]: {\n container: ['w-[128px]', 'h-[128px]', 'p-md+', 'gap-[17px]'],\n domain: ['text-[12px] leading-[16px]'],\n title: ['text-[16px] leading-[20px] line-clamp-3'],\n },\n [CardSize.S]: {\n container: ['w-[163px]', 'h-[163px]', 'p-md+', 'gap-[17px]'],\n domain: ['typography-caption-regular'],\n title: ['text-[20px] leading-[24px] line-clamp-4'],\n },\n [CardSize.L]: {\n container: ['w-[240px]', 'h-[240px]', 'p-lg', 'gap-md+'],\n domain: ['typography-body-2-regular'],\n title: ['text-[30px] leading-[36px] line-clamp-5'],\n },\n};\n\nconst props = withDefaults(defineProps<SkillCardProps>(), {\n selected: false,\n disabled: false,\n loading: false,\n size: CardSize.L,\n interactive: true,\n});\n\nconst sizeClasses = computed(() => {\n return CARD_SIZE[props.size] || CARD_SIZE[CardSize.L];\n});\n\nconst cardImageStyles = computed(() => {\n return {\n backgroundImage: props.disabled ? undefined : `url(${props.skill.image})`,\n backgroundPosition: '15px 15px',\n backgroundSize: '200%',\n };\n});\n\nconst rootClasses = computed(() => {\n const classes = [\n 'idw-skill-card overflow-hidden',\n 'bg-surface-1 dark:bg-surface-1-dark',\n 'shadow-card dark:shadow-card-dark',\n\n 'rounded-[24px]',\n ...sizeClasses.value.container,\n ];\n\n if (props.disabled) {\n classes.push(\n 'text-outline dark:text-outline-dark',\n 'select-none',\n );\n } else {\n classes.push(\n 'text-black dark:text-white',\n );\n\n if (props.interactive) {\n classes.push('cursor-pointer');\n }\n }\n\n return classes;\n});\n</script>\n\n<template>\n <div\n :class=\"rootClasses\"\n :data-interactive=\"props.interactive\"\n :data-disabled=\"props.disabled\"\n :data-selected=\"props.selected\"\n :style=\"cardImageStyles\"\n >\n <div\n v-if=\"props.loading\"\n class=\"absolute left-0 top-0 w-full h-full z-10 flex items-center justify-center bg-on-disabled-dark\"\n >\n <OrLoaderV3 type=\"circle\" />\n </div>\n\n <div class=\"layout-column justify-between h-full w-full relative z-[2]\">\n <div class=\"grid grid-cols-[1fr_auto] items-start gap-xs\">\n <span\n class=\"truncate idw-skill-card__domain\"\n :class=\"sizeClasses.domain\"\n >\n {{ skill.domain }}\n </span>\n <div class=\"idw-skill-card__actions\">\n <slot name=\"actions\" />\n </div>\n </div>\n\n <span\n class=\"idw-skill-card__title\"\n :class=\"sizeClasses.title\"\n >\n {{ skill.name }}\n </span>\n </div>\n </div>\n</template>\n\n<style>\n@import 'https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap';\n</style>\n\n<style scoped lang=\"scss\">\n.idw-skill-card {\n position: relative;\n z-index: 0;\n\n &__title,\n &__domain {\n font-family: Outfit, sans-serif !important;\n }\n\n &__title {\n font-weight: 700;\n }\n\n &::before {\n position: absolute;\n inset: 0;\n content: '';\n // stylelint-disable-next-line\n background: linear-gradient(to bottom, rgba(#000, 0.3), rgba(#000, 0));\n\n opacity: 0;\n transition: opacity 0.3s ease-in-out;\n }\n\n &:not([data-disabled=true]):not([data-interactive=false]) {\n &.selected::before,\n &[data-selected=true]::before,\n &:hover::before {\n opacity: 1;\n }\n\n &.selected::before,\n &[data-selected=true]::before {\n // stylelint-disable-next-line\n background: rgba(#000, 0.3);\n }\n\n &::after {\n position: absolute;\n inset: 0;\n content: '';\n\n border: 3px solid transparent;\n border-radius: 24px;\n transition: border-color 0.3s ease-in-out;\n }\n\n &.selected::after,\n &[data-selected=true]::after {\n border-color: var(--or-primary, #5b8def);\n }\n\n :global(.dark) &,\n :global([data-theme='dark']) & {\n &.selected::after,\n &[data-selected=true]::after {\n border-color: var(--or-primary-dark, #5b8def);\n }\n }\n }\n}\n</style>\n","/** Shared sandbox for feed HTML/file embeds (scripts + same-origin for app shells). */\nexport const FEED_EMBED_SANDBOX = 'allow-scripts allow-same-origin' as const;\n\n/**\n * Layout size for embed iframes.\n * - `list` — usable height inside a feed list card (viewport-based)\n * - `fill` — grow with a flex parent (detail / fullscreen panes)\n */\nexport type FeedEmbedSize = 'list' | 'fill';\n\nexport const FEED_EMBED_SIZE_CLASS: Record<FeedEmbedSize, string> = {\n /** Matches prior feed html/file iframe height in idw-ui (`h-[720px]`). */\n list: 'block w-full h-[720px] max-h-[720px] border-none',\n fill: 'block w-full h-full min-h-0 flex-1 border-none',\n};\n","/** Approximate reading-time label for feed bodies (same heuristic as idw-ui). */\nexport function formatFeedReadingTime(text = ''): string {\n const wordsPerMinute = 200;\n const words = text.trim() ? text.trim().split(/\\s+/).length : 0;\n const minutes = Math.max(Math.round(words / wordsPerMinute), words > 0 ? 1 : 0);\n\n if (minutes <= 0) {\n return '';\n }\n\n if (minutes >= 60) {\n const hours = Math.floor(minutes / 60);\n const remainingMinutes = minutes % 60;\n return remainingMinutes > 0\n ? `~${hours}h ${remainingMinutes} min`\n : `~${hours}h`;\n }\n\n return `~${minutes} min`;\n}\n","<script setup lang=\"ts\">\nimport { OrButtonV3, OrIconButtonV3 } from '@onereach/ui-components';\nimport { computed, ref, useSlots, watch } from 'vue';\n\nimport {\n type FeedItemBaseProps,\n type FeedItemControl,\n} from './types';\n\ndefineOptions({\n name: 'FeedItemBase',\n});\n\nconst DEFAULT_CONTROL_LABELS = {\n mention: 'Mention',\n fullscreen: 'Fullscreen',\n} as const;\n\nconst SHOW_MORE_LABEL = 'Show more';\nconst SHOW_LESS_LABEL = 'Show less';\n\nconst props = withDefaults(defineProps<FeedItemBaseProps>(), {\n shortContent: undefined,\n timestamp: undefined,\n timestampDatetime: undefined,\n source: undefined,\n expandable: true,\n fullscreenControl: false,\n mentionControl: true,\n isNew: false,\n controlLabels: undefined,\n});\n\nconst emit = defineEmits<{\n 'update:expanded': [expanded: boolean];\n expand: [];\n collapse: [];\n 'control-click': [control: FeedItemControl];\n fullscreen: [];\n}>();\n\nconst slots = useSlots();\n\nconst isExpanded = ref(false);\nconst hasMountedBody = ref(false);\n\n/** Non-expandable items always expose their body; expandable items follow expand state. */\nconst isBodyVisible = computed(() => !props.expandable || isExpanded.value);\n\nwatch(\n isBodyVisible,\n (visible) => {\n if (visible) {\n hasMountedBody.value = true;\n }\n },\n { immediate: true },\n);\n\nconst titleId = computed(() => `feed-item-title-${props.id}`);\nconst bodyId = computed(() => `feed-item-body-${props.id}`);\n\nconst shellClass = computed(() => {\n if (props.isNew) {\n return 'bg-primary-opacity-0-12 dark:bg-primary-opacity-0-12-dark';\n }\n return 'bg-surface-2 dark:bg-surface-2-dark';\n});\n\nconst resolvedControlLabels = computed(() => ({\n ...DEFAULT_CONTROL_LABELS,\n ...props.controlLabels,\n}));\n\nconst hasActions = computed(() => Boolean(slots.actions));\nconst hasFooter = computed(() => Boolean(slots.footer));\nconst hasBody = computed(() => Boolean(slots.body));\nconst showExpandControl = computed(() => props.expandable && hasBody.value);\nconst showItemActions = computed(() => hasActions.value && isBodyVisible.value);\nconst showActionsRow = computed(\n () => showExpandControl.value || showItemActions.value,\n);\nconst showFooter = computed(() => hasFooter.value && isBodyVisible.value);\n\nfunction setExpanded(next: boolean) {\n if (!props.expandable || next === isExpanded.value) {\n return;\n }\n\n isExpanded.value = next;\n emit('update:expanded', next);\n if (next) {\n emit('expand');\n } else {\n emit('collapse');\n }\n}\n\nfunction toggleExpanded() {\n setExpanded(!isExpanded.value);\n}\n\nfunction onControlClick(control: FeedItemControl) {\n emit('control-click', control);\n}\n\nfunction onFullscreenClick() {\n emit('fullscreen');\n}\n</script>\n\n<template>\n <article\n class=\"feed-item-base relative flex min-w-0 flex-col gap-md rounded-md border border-outline-opacity-0-12 dark:border-outline-opacity-0-12-dark p-md\"\n :class=\"shellClass\"\n :aria-labelledby=\"titleId\"\n >\n <div class=\"flex w-full min-w-0 flex-col gap-md\">\n <header class=\"flex w-full min-w-0 items-start gap-md\">\n <div class=\"flex min-w-0 flex-1 flex-wrap content-center items-center gap-md\">\n <time\n v-if=\"timestamp\"\n class=\"shrink-0 overflow-hidden text-ellipsis whitespace-nowrap typography-caption-regular text-outline dark:text-outline-dark\"\n :datetime=\"timestampDatetime || undefined\"\n >\n {{ timestamp }}\n </time>\n\n <span\n v-if=\"source\"\n class=\"shrink-0 overflow-hidden text-ellipsis whitespace-nowrap typography-caption-regular text-outline dark:text-outline-dark\"\n >\n {{ source }}\n </span>\n </div>\n\n <div class=\"flex shrink-0 items-center gap-md\">\n <slot name=\"controls\">\n <OrIconButtonV3\n v-if=\"fullscreenControl\"\n icon=\"open_in_full\"\n :tooltip=\"resolvedControlLabels.fullscreen\"\n @click=\"onFullscreenClick\"\n />\n <OrIconButtonV3\n v-if=\"mentionControl\"\n icon=\"alternate_email\"\n :tooltip=\"resolvedControlLabels.mention\"\n @click=\"onControlClick('mention')\"\n />\n </slot>\n </div>\n </header>\n\n <div class=\"flex w-full min-w-0 items-center gap-sm\">\n <div class=\"flex min-w-0 flex-1 flex-col items-start\">\n <h3\n :id=\"titleId\"\n class=\"m-0 w-full overflow-hidden text-ellipsis typography-headline-3 text-on-background dark:text-on-background-dark\"\n >\n {{ title }}\n </h3>\n <p\n v-if=\"shortContent\"\n class=\"m-0 w-full overflow-hidden text-ellipsis typography-body-2-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ shortContent }}\n </p>\n </div>\n </div>\n\n <div\n v-if=\"hasMountedBody\"\n v-show=\"isBodyVisible\"\n :id=\"bodyId\"\n class=\"feed-item-base__body max-h-[37.875rem] w-full min-w-0 overflow-y-auto rounded-md\"\n role=\"region\"\n :aria-label=\"title\"\n :aria-hidden=\"!isBodyVisible\"\n >\n <slot name=\"body\" />\n </div>\n\n <div\n v-if=\"showActionsRow\"\n class=\"flex w-full min-w-0 flex-wrap content-center items-center\"\n >\n <OrButtonV3\n v-if=\"showExpandControl\"\n type=\"button\"\n variant=\"link\"\n color=\"primary\"\n class=\"min-w-[96px] mr-md\"\n :aria-expanded=\"isBodyVisible\"\n :aria-controls=\"bodyId\"\n @click=\"toggleExpanded\"\n >\n {{ isBodyVisible ? SHOW_LESS_LABEL : SHOW_MORE_LABEL }}\n </OrButtonV3>\n\n <div\n v-if=\"showItemActions\"\n class=\"flex min-w-0 flex-1 flex-wrap content-center items-center gap-sm empty:hidden\"\n >\n <slot name=\"actions\" />\n </div>\n </div>\n\n <footer\n v-if=\"showFooter\"\n class=\"w-full min-w-0 empty:hidden\"\n >\n <slot name=\"footer\" />\n </footer>\n </div>\n </article>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport { formatFeedReadingTime } from '../formatFeedReadingTime';\nimport type { FeedItemMetaFooterProps } from './types';\n\ndefineOptions({\n name: 'FeedItemMetaFooter',\n});\n\nconst props = withDefaults(defineProps<FeedItemMetaFooterProps>(), {\n readingTimeSource: undefined,\n});\n\nconst emit = defineEmits<{\n 'open-reactions': [];\n 'open-comments': [];\n}>();\n\nconst reactionCount = computed(() => props.engagement.reactionCount ?? 0);\nconst reactionEmojis = computed(() => props.engagement.reactionEmojis ?? []);\nconst commentsCount = computed(() => props.engagement.commentsCount ?? 0);\nconst commentsLabel = computed(() => props.engagement.commentsLabel);\nconst readingTime = computed(() => {\n if (props.engagement.readingTime) {\n return props.engagement.readingTime;\n }\n if (props.readingTimeSource) {\n return formatFeedReadingTime(props.readingTimeSource);\n }\n return '';\n});\n\nconst hasContent = computed(\n () => reactionCount.value > 0\n || Boolean(readingTime.value)\n || (commentsCount.value > 0 && Boolean(commentsLabel.value)),\n);\n</script>\n\n<template>\n <span\n v-if=\"hasContent\"\n class=\"feed-item-meta-footer flex items-center justify-between gap-sm typography-caption-regular text-outline dark:text-outline-dark\"\n >\n <span class=\"flex items-center gap-xs\">\n <button\n v-if=\"reactionCount > 0\"\n type=\"button\"\n class=\"flex cursor-pointer items-center text-on-background dark:text-on-background-dark bg-primary-opacity-0-08 dark:bg-primary-opacity-0-08-dark px-sm rounded-md border-0\"\n @click=\"emit('open-reactions')\"\n >\n <span\n v-if=\"reactionEmojis.length\"\n class=\"mr-sm inline-flex items-center gap-xs\"\n aria-hidden=\"true\"\n >\n <span\n v-for=\"(emoji, index) in reactionEmojis\"\n :key=\"`${emoji}-${index}`\"\n class=\"inline-flex size-4 items-center justify-center text-[16px] leading-none\"\n >\n {{ emoji }}\n </span>\n </span>\n {{ reactionCount }}\n </button>\n <span\n v-if=\"readingTime\"\n class=\"text-on-background dark:text-on-background-dark bg-primary-opacity-0-08 dark:bg-primary-opacity-0-08-dark px-sm rounded-md\"\n >\n {{ readingTime }}\n </span>\n </span>\n <button\n v-if=\"commentsCount > 0 && commentsLabel\"\n type=\"button\"\n class=\"underline cursor-pointer bg-transparent border-0 p-0 typography-caption-regular text-outline dark:text-outline-dark\"\n @click=\"emit('open-comments')\"\n >\n {{ commentsLabel }}\n </button>\n </span>\n</template>\n","<script setup lang=\"ts\">\nimport OrWebMarkdownRender from '@onereach/idw-markdown-renderer';\n\nimport type { FeedMarkdownContentProps } from './types';\n\ndefineOptions({\n name: 'FeedMarkdownContent',\n});\n\nwithDefaults(defineProps<FeedMarkdownContentProps>(), {\n contentClass: undefined,\n internalLinkPattern: undefined,\n});\n</script>\n\n<template>\n <OrWebMarkdownRender\n class=\"feed-markdown-content styled-content typography-body-2-regular text-on-background dark:text-on-background-dark\"\n :class=\"contentClass\"\n :text=\"text\"\n :internal-link-pattern=\"internalLinkPattern\"\n />\n</template>\n\n<style scoped>\n.styled-content {\n overflow-wrap: break-word;\n}\n</style>\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAGQBAMAAACqu9pFAAAAHlBMVEVHcEz////////////////////////////////////JATChAAAACnRSTlMABwIMEhokMD9UyelWMwAAIABJREFUeNrsXVl24zgSFNN9AC7ufyBVBzAF1X+7RB+gp+wjzP2vMNiJJUFSm0v2AK9ftWWREk0EApErd7s66njcgZ0fiFjvRx2PPQCRK7D2mMMV5Dtj1/f6vb43qO6R3etSuF02F56orq1O6P81mC0QuAT1jAkM3szAhYawuTysiGt+CeSxG+SX96iXTc/OOlPvHWqce2odX1IzWBBqnvVYAzRsyOJDeRcojBI25qN6iyRzaNfqt5uzuTJBovz4nthJkNhE1LHh76CLX9fxLTlY4Y6HWF3GK4kcSqxg9IHD9CtaLdvEg14dKf4hhWV67TMlUzqpQvr7ojkFFYSUWhqMbdq4g6Mg+1Dw2pyV945I5CSQDsVD0/qdhSGGOwSpearw+I6DP4CNhIQ6wZDZczD7Bce7GZVdYdWUWb+S9PeD86OwFDDwPpII3ZmGiXXFIEaL7mFMzl7/zlyF1/GVR9fdHM45vxaUNixocCPqe+Jko48YhLasEBrJGtgswv3qagVeZcc3Us9n8BOmxuL64FxDVltzCZQdNDtCP6N2a5uT+4hqjdpnlPtj7AiXhzIaV/HKu4rob4Pn9am06nbQ+LQIXR4bUAOd/2kXMHnv0J9g1vyS8yWXCxREszx3bdE2FdHfRT6zVeeHVQzsBl82K1qkMAYSsGKalHjI1oiSE/Kdyy4DVt1zFdHfBM+LpGwCcrdzAkDoHiYIlju/cU9oG7WktOOYXbiYls/DiujvKZ/97n+X9CJQ+SAx3XvbcdwUXsFLQ9Zr7jmoiP7qcE5mULsERiNjt3ky1uKI686GSyRNCmmni9Y8dLjizqmI/tJwjgkL8JzsOAdl9B4MtuIb6TGCkz4rupyzpYu7VO6vQyokNI5AViTpRZZuuoqLr8vOAckVwQyp1wIclBNlXVaowAf3notQGyU9dO116l9fcQxRXEs+WUneqIj+miPas5Ge/zQUN4feSCuR0ZIiyQhSL9Bpg7G9clFyFUxJrpzrq4AFoc2XNHhF9Jf0bMwzCrT0zBKBcD1NCbJ1QQhnGI6j/VT+mknyOHUjzpUjvlr+IbyYqFeGtF6qpb+kGStAvho5e8o0MTfykK1iOtPKLq+Ik1YaeL0i/21TmeB2gDk1qU/SOhzC7UexYCvJM/WWIoS8aENWRH8t5TxTE53eDt2ljt5EqBCUaqMbYIxErt/nLr6N25aMy9QeIzwC9imhq69fgjSUMF0jLF+Im+cJJJUk8HuW2iWG4zXfQ2sfwDzXRAihNw1WuiX58m3GiuiHG02fgkmEUOVFct59Epw/YwVbX56weXikfx0JaVQ5+uGkxTAObSgDhhCqpOsK+D1rRv9sqVNjpUhXgHVmvDZDW0H0SPQs+h282BdKb/bWemIGWzlw8Z7kDPjH66tnLRUE9st6TDJCTfl/JDy3qrBO21CDUxo+LUhk2FrLgU+lKeJ2Iw63hcbPXyP8XEdMuAWBr2FkseKab8NQhfSjDK6n4olBJ2bdzA0jcSUnY/fAcg6Eg3KQxtnn5VHE4HMYZk1an98rRl9Rd1kDBMxWG8YblQUyF5WkHwjPu30XBtG4ph6TjWSx1q/W3FnHFi7ZXMVClT5xLWTeZvu5KgP6PFwGAuZ8pZSuX4BkC5l5HCpJP8LYj84QCkXIwbK0fc1UHaoOYLCFPf1GLjzXuiYkc4Xi4cDCbQADz8SCoEls1wtsWcyKXmwatl8lg70YLmog/E+PgYxzdRrh2ybei4Wrha8PspAsDyjGOeeJD8eTEEMaEtxiu17gbcS8wCBS0BLJxvCQJkhl6cfD876V8zUuSAePoXEcTVkrowRGGK1Q46iGiEaAR5VYvVgkAEIEagTjtAzM6gyoakJ90tzwiYULcjnFOudpzfa7GdLMQnrsK6YfC89w2DUDOStzZvzCPj/jmCsUqDjFMLpIBQ9NxGGccV3Q3sCDN1SZLGQ9H6MztcQ2C2jsMptTrxneBdcwml/p/1b7n+aY5mPA0uZH0Cl9FVt/YMBw8OwWTpPEITUjaBIiFjwciK4uymFo3FZaQpfWwtyygAUXxwjxHnpPVFRIOPxG7hUWqxvMigTAdZnczNNyJ2v97XR+DtXzo7o8Ph/P4qBD3BFLyrlqXsVI+wqQ8luE3eAsvy21lSsPlmVWuC9ELWALEIFd0ti037CCdgvBSOCLFkGachgUpgV+Dl4h/dmjES0ONhPHVpYMGtjvdNqGN+ptz41hSEMngWGngX22lATzCdqrERO7qs69OUB0RNJp/ZjBkS8RdewqgcADPf8of1u9eJ/qrhMqjpK7AJBIS/BNKpCHGca0v+NOT5bgW/o1JY7uZbWjl/DxZIp8OU8ldFKBk/xZUbRUMjPOusMfOIiaKv155uBJCNLu2x9yLjdYgjJcAedZhztdcXNYhrLvJGbTpX2uP9WDlPuoJAb6AazaCDQ1dyP3soe/4iIwDj0zozi1FWqfIjeOEw1nbycGw2hEKIRNXK1Jv0m4lvb+vE1MpoT5wR7LCN9DUTrDLCgitR8cnFgHhbIcynGn1rGwbRwikp4lyLGS9P3GX+/WsTRMU6rvzFQTlozd6ukwCy/VmpwB5iz3Y0ZeBJ6+t9vFjE/vHVyROYzH5VrUNYR/XrHdEtDPA9AZ1OLt5NZUM5M0PJ+qkr6bW+P4rvhETGJKeFjnII1EUJhb4qE62ulpv0Yw23B5kdsxXF1dSrqZIXfVwDztiNzCSrFz+bdwue0Zb5Hka3Fwx+yn6u6423jlg4Juoux4QU57OJMd7c6sKAlsrN5v/Ss6pZmvk7elj8Utj8GgT4pOcWlHjsGL9YVQTHFqRKf3DR0V9Te5Ob5W5N1JOv9SHe+beBMMJV9MRcPYe5/ZNXDW8UK73avt+XiUi4pvgCDryhZhIW9vtSsZpsezXHkFXf475NQ+UEhxkveyte+L44e/z0OVHfcZR3W39/Hd5bRvCTofv226ltCSbDuY/V7ua0y39gR1lY7QJQw5uGw8FtEuX+p8B6YnemQP0jEUp+N9l38iTlSgae61BvCfHydL9vtTlR33wPMhx/NAOZZAFa6gJyNWMBS3iQyfxxwbVNuymrl1GM6X0Kwrlfi5FqF3g8ziW2yJvjNUDEg8Sw7JyuFB+M9q3j5emZUdh4q/m5uESsrFegMIetbJNf38qicQwNbBHOEXKdCs9EAwhVzHk+iiXB/YKpYhiskvimxYyuUOaioxfbwyZTqGgcPd/u3dIBmrkL61fp7GDM8Zb4DaZAMLEch04j6HrjaETuI4nU7Cpboxw5Z8IVmazvmICJYPbte/66691O4rMg8hlimE6QiNmEkanj8skqv/7qZj0M6jZgoFxj6WGzpPaQynh7L8Ino2k8vd41Q6ssiqECdHZ3ipR0roykUs++PUEzHvjYeFcskUtuH+A75gZT481Mz87Z1Rt7uOq+SGpgc4tpF8Zp4ohVCJ9/Fs8oGQFnNKuy23Kz+nuOhLCx6p7CWuIviTSWEuABeuB+x68TmUMJ0xsZEp5lddlgDdHOfIFRw/zEa4nyqibyQ3rIB7fgkm5PnVmzFHkU2jVNJk0l0fzfx52UizqOXEOWwxuUm+93LNLeCFHqWcioST4oNIN1Wp1xrTKrUueS+wtuGH9eA100sF4y3w/GYY4vlXyNmjNwxzu6Ybxp4gyqbDBB5rOiBLcZYYguUTUh+ZS/PHFyeDzn+WCwaeEWDgOzjauLlJY4psPfJPI7zP3N2pLq0mDNM4fpy0BeNnoo5rxv7dcMXTa2gi+jv7rB/drny7g9UQqtkMI1mOOafeuPy8Hms56cKr+UGF27XBXCOlLsrmavShM7DrtgMbthTFxgoaCo4PwnRUe5n7f+RBCtI42JFb0TdVRN8Kz8003+5Azel0UTB7sH7m3zQW3Al2d1XB86VOMzd6JBZbWQTYb6tP0c7B7UQeLmUa05yUZ/bWxDlfew/f5j/SLNd3+uevCsmrxo/f5h5DYJEEHqTmpIDsSrEHk4tAEZqRz7rGpWRy2TK+LUHtW42goSIrmZ/nLKwkT4ORvdxzmnbpA6qNAW0b/s2UJcMqoq/Gs8PubBCC9/FLanlTfuNpjKYIMJfQumMsD0MumcDYWsxXcEDMng92Nqq5tM5cT4Q4tfT8K0rT6cgWYtmqd+WEaWbMYB14zT/qhSKViuib4PmHF9Dc7YNcHMXwumNs37J8840hvR+lKUWV50ssjR7Kl8DZZi7Nz+ze9LS4pDbXqG3tetTNP6bp5Mt+z5c+kBYEUx5q9Llb7r5aJMfJMcCNObgT/gVUy/B6PD/99pQh6di2YZS745HpNhy0JTU/W0VKkeGYF33iBbXdueBOPwAKbcUw87+FTw0ax9jzwpJWeovXCWk2aZ49hbl64fGq9zXfQTaH3hC1A++v1r5gEtHVe3edft417+6Htw9JXtOpE3orfFJ3ds9Ke+9g4ncS+0TJFl7by27xAwBjf7H88TBjj8X0zh0RO+mCsbsBwbaRQdvyOX6fZ30TdmSTasxQnnjruUUyF21mG2rNIdfZ8+9WzkJbwXmRf8PefbA3EJ4/PlSLUfj533/165P6Z5SGXlt0eAnx9vE+ZjHDq6tVNmTbSZMsqJ1CyuAjy79KGfg29z4W1zALHHVeyLlEE7xcO0chlcalQ0chWWkOSl5+9fB+mQmmjjPGk79rP/UWh8P09rs1tjf+VHynb/uPU4+8jOhhes2xseWBEUAm33vpe12jUr0elj6CvkJU7URGmzWCVOv2GLFE3jbLPjmENFghDfENZc9T++znRWrop98V0eeO5sPd079/qaeASEPJuDd0nhIcx87kR/+PvWtpbxPJoqJQ9uKhXlOFvRcCso4C5Ovl2AJlnR4rPT+gp/P3p269qyhAst2zMSwc27GFXJy6de65LwZ7VGY+0CSFp5zllvknxC18jY0Jgtgv7KHF1rgGWpf3w5gyiPctnUlPwF+9ejaj0Y3NNNYhFSQSGB1EU1e8Uy8C8cKH84rQO22Y8jzSE7QtaKMsbxAT7TJ+DAKzo/SYczt3fCRMwYJiz5EjiJbBdGenaOIvpfL8SZkiAtmkO+f6tZkPhYLMTLQYQHYmkkfMZhl2mcWlVZKLYBvIyURCn8/qG6g+bfZrfvR9Vy21i4enTdrDoRg2nG6YfnkTh2L988JEWMmgMDLPy+3Cbx/8IPy3RI2CdUSG0Y24y2WmtHq7OY54dswTXD0/Ml2pgMa9OkZtZgqrLkxWEypEO6WbdPn7o7Y2Xzfp0wrSO669XK78HHTnLBOhb2zajaA6Zptc6XmFsD3QIQyeReTodIthN3QbmLV+PJuNQWw5mh4ZO4+Dlsm3Fk/KJaBwTHb+nZQbMk98ZUHiKCSP5j8W2jY4PATdSdvo4yZdefQdAsdZeYaY6/jMcFg55gEzJdowJ2UU6SFYiR1F0UVU5jBjS0BYyiTlwfFEtDW/wYhnahR45NUbrNjHwskxuQfjeRZO5lg5shKhVTUhljUqVkgwpNyuVogmlBGm/are3eoQKt25j0QOLoS+rXL6gINbHYPUbRyaQj6ostjZjpGY2mdm5s/1A/BA+TXBcbOZ6QycGYxe12V8tkCS4MQi7GhetZPBQtlPzRLvmBCtDk6mRafDYcXqTZd0CIMuEhL09glyksz15eQjOAqrAnFtamMgZmz1cUR6SDJnkpnNgy1dYmpW21vyPDRcDjNw3rxu4NtGtaKcFQiNt47dPBeTmcmiYx+NDr9sbERTo5MPq2t4y/X4LH2Po4A2rJ7lhcgQQMg0aqQhTMzWXKDc6dq5uYlunnaLWrl7F64YxTsJqSkmj18lby82GSG2TunmuVhtc7kspGh0Y3JoqTnJb5zB4qwhluUr7KXS8XUvaBycb6YxCCSZDuuMj0Y2TGymtKlirrrZkd38vDi7/XlN9e+XZBftBGjn4ylO40fsi+6MbXu2qETaKp2dy2/IQZzWSYcw14seCh6inwPTotNhTVVaJBw7qXRsn5R7YuNZsbttb5yMWE4lIWAHS2u8pP+Rk7fTCd17MZKlLQqJ+qigbylgX6GlW7l159hmQV7SjxaHFzoTz1Fil1wGmkrzTj7JCL5bwZh0MSfnHyvtWLo+Pcvlkr4hSNGnMX9mP3RSvZR0pRKJqqawJDPf40ZvHbWJ8Lx8p8U45rklS0DWLSCX3hTKeMFLTExIL7qPsaNwmIui+5xzvTyViJbWYqvWXPsyLDUa1SvtmFc41IHGczggum317UH1wXAfFZ4TczyIOXDB2/EKv376hDaUeIFgc3rLJTlUzNh2i7JPh1rsQIxIUzVI1WKPA8cdtHqUSN6B2Iqi6iDhu7MsNFiRs3oSDPbpsOp305dA68M52zJTnXf9zvIHkdEvKRgaCXU1W4XbGhIJPxEXsRcYy2CecBTvHFUVi1sFkS3m8aFFMGHQkwCCgD0R34Gi6IzRco8owC5g2onfOFYay4IrgWixoDmPEAbGM9jLmAphTjvKV0RPe4RPwjHMEJjqpOuL7MHCs1kwkV6k3ct3Cs7q+UKB4LjbzHL8G4kIChtpGbta3l1mXRee5pENzOX9ZErI44Qi9TcQHTARNYTTL+4aaaeIUBpp5gsSieigZYegmb2hbHTAER2uivTU9ZmtYki3/P6wCWqwDlZml4XnUKUXiAbMdkkc8gi+6KZsDvI+s7AY1DB/D2IkBb6jTpCIhGni/SUceZsukokTRTJk58CyV0xWxTJE66MwhREglCvr39WI5lAOVxs9Z6Bhw4dnys1OaGPn3lp4zrVd4IY6XxhEhrCrwXogBM8evQ+aBdeFf4Lda7aI6lLjv4H+W4gVlkHIzHzVOdzs3SRO2XtgTaYRVbHMCSe6jUHV05XN625oSr43VCaHQPTKOiYYdCbXqI5rlitgVUegWuMZpd2z2ge7jd2QTbNK4yrnrDMh96keZCZRdGO/FoPlG3TBOU6cWUxqxvizPuusvw52l8muWuGryFQOXWC/wW0PVjqq2m7oAfRpbyN6u2odPgP9h1yh7VPXcJK2M/W6o7nw7cYw0G4BPsS8WblSjMej0AyhwUqeu8v6ak1Cv7BSLuzXQuSfedpO5vPiTC8InZZR2TjBkMxsMYN4WzumchCjBQquem69SVIN1NbsJYIFgX5cc/49BpouZXCh64OG4avQ5fx4ztujbtVBDTS2zTNKymJm3rUVgcPxne3mnLQ1lVWnxmGS/9+KIacRapQs5bYigpO2d04WimKt3PNuBdwnTIyUuiAd+kIkM9LH8yD/SyB6/7wC2LmCH4BnQPJv/+XY3RspjHl3yJR012RGWLZAiTUFBKx1NnlMG5rva96kL3hN+DiTtyLZ1596sXeN2UrP+LX5JMIcRriZwSdo4tqUQgRhrQtE+Aq3hrqB8rpvIn5yGojmzgxZ2xu41+NB4Hn7N1+qR0Owy7WtABOiW3VswrItboEzT+acnnOpnShToDNYScL6/MfeXIsxqrxYmtG2I7ftNDHnCOldmC1xbk6y6BqQ6QKcoITaYrvNH5C0tmGLl9MVFSkFqDqb/l6QUM8w5t05lCcYDvCj4XWl0fbVU/4MeA5/8b1ugHaT6mVN29ioCafGwuotj8cdZcTjKuYGkXguwG/Lp1Swz6F5XuRpsEsQsraETruw8uvFrYDwxO61rHDT3YjxLPbtV1C5JGiiXzQk1rFOrCYLzyjKKybSVU2cN9Kc2+IRrobhtENDpnWm7b/h46e1LMu6tv/ibCz8/ofwn3cGaDPlDdJPte6JkvbJNs9e2UHnkXpcwmRkt1mPi0Jjhh7d9zMUO58ev9s6yfc0Z+hBe1Q5dn61kufzQzWE2xq6hMJ6LMvsmT/oiHLUTJ8hfhvKZLv9F/j4eSUdlkuYDMCSw+FFfP1Frd+gbEQKwRRFPyici9zUQcqjxzzjxPLiiNuPy2euF4/2Wwm3vHPwDkIt4vMHZwZfmEl5sF3F3YkP0kScZcTto8tdbLq2lycF4JMriVbD98NGHKngxTPldFhRbBjoq1iUy8Em0EGtDAQzz6oVN11yao+NNLZ83HGGlayI509UTHuqCyJiMoHPlUKEvLZzorj9G8dgkfFYiuU7U5aitr4H0nLwBErckBRrB42Sy4ssnWWhFfsG9d8nODu5GQ9X0uGuz+8vO7bVuyeLQFNTcNLLXMBcppMwI22zo/DWQkgyjqwojghtwdgg1mxOpfW6UHY9S3y35RYhj7dwjvH4FjHRZUlgLCIVGYR8rVFtgFQ7iTPCFFHTQXcg+fbSCgEJd6OhQXvQo4OaBw0F6ditSBbG9fIX+7dre+MMAwcEVpqftUCkqak4UlObUHeNa6Kh5G3OGE42m0rAj8+pmCMRaGIwCXGS60ZdPHUoJXN5rrtV2N/zigxsMmWOgUYv7C8WX9L+xqijsBY8zaEqwnrQlUddASstiJ/TqyM4s/T+vbBEmePHf2jzXA8Xtuz1Wbh7n78ARLthaFpxXX5e245+6OGLRklzqWIjR8OggSohMYbLcj4jyG+a0VQ9C5YCmqk2aLasGyWYd0UYyVvdY+PJwqFAlhub4aRRJxd0yY5dvqwInMOTUdqeMlR/pcyu57WG1WCD/rcddE0R5d+cbmjH5yPDOb30yQ/Gm/tBEmhcdcNlGNqGi8d518dJd+352Yv00svytzbWhrkstTnGdgBhQozIfI7hlE3PdM9/2wzHUvnNNCuQLxLEGqOLkEZKf1mOOy5vEYpZ/RNMqXNMsewM7U6LDSp6DALDw1XP0I47S+8In3l6f86iB98O+mT90Fc1vBw332AdwqvA8/4nNc1l16gTMh1KaLxBDBByd0c0LmYUEHHDbOIwKBf6XZAxWYheq3Kg8SaQoKbfjaztMvny6Kb53qOjZJZQbZLKCKUi98hCqYB0Ppp/DJBmJDmo+Oqng2nHOzbGkBLp4UnmkT1cPzii8wsIcSwRIPjzeoCMmO7y6xzJUglmCbprN7QqRb5kpINTuwfG3yj/owSxGQ1083QfddHjUt33Uuwcp7Kwq0X8LQsIs8mvqdrFeP6NB/Z8GZieZO70oOSQHiMafO+h54vMOHRQ9/qFPoE5gegB6ih5fmRKx8Nw/sCQRvUVYBmC9Jz8568dSPZ9A8Kd7t+fXH5dla0GbUN466wAueRnZkSfyJgFJ8XSab1z7fI/lVhUOPaX9S2zfD3kt7PkxklYaKpNk7giB9KUejRmYXzZwrKGEtHGSuDq8pM9jKBiNsYo9EbMB4QwFwI7zvP+cX3p4w+K5+DCV2qIKaH48wc1AgP1yetnmdeP8mq4/Ho5Guai2On0+/SUf4FTsWwsVwdFQvCb7xkhmg7dZ5fJYjaG6qyh8JvpGlms+hJErB+/HHvvH3DB3xobSHHb20OyHDzzcm2bPSOcVIaPiBK6kEXax9C+lbnhetnrn9cT7P2AaapIBwb27BNI6kCQT8olvAzXQ/8h+3WEF6hJ2QTfr5drW/fpwHY26/cAedC4Gvq2G2JN6HpHaU4blFCLbvNkxAeaBAt0A7NQGg+k/I+8q+lu21aiBKR0TZFSugVIOWtTJJWtHZLqW9qlSHfZ1KacfWM7P+A1yc9+mAFAgl8ynZfTheyTk8S2JFvAYHBn5s6dCS4QbQ7L4V2tjA6byChJB9K4xX3jR2wY/bqhO1YmaeuTdqZ8j9d5lKvunwBv4fSSHByGb9WFJwIE/gqnl8IZS42BkNmhysUyC0csQxplr/Mr+Q/A59WdsGjFsRFe/RVqOc4OGAKSm0egKx4kVJM9hPMLmBCU2H7RdGAt0z6CcIsi6eBmEmAANjqnQlmSpP9PdXz/Fx7ZWCRxjybmer8F5QPS+wNKSmPRIx2SPKULpNi110sg/LBGcehucyP/0awhz0SgLixdSqRgFKjCwnrTIB5cab6SFx9eW9lQMYxIgSWVG0WBXt/BeqdQIGQ0bpSmgJ/UTa65RZV33TDYs0UdN2GjAZrwnJDYm5pE0BoeP9ppSG0e2eTI8SJtlRDq8YkzNyk1hr54gznqTtJZLA7kpe3ebRWlqVa1bJjmdGYO9/azBAoDhztw6VQVCN+ovDNeq2DRDcIm5R17VfYs8zuz8gPUBn/7zIyvznMIlf3McM89UIbm3DMT2TFHs8sxPws7zyfPz35uJMsAJb/nyaHmbFF7wh3QatKerqSkOyL7jSq9nDfiMIGWByjjngvj78BY/UakEYj8zS8Z5Ywu3JuqEPeiJ3uw6K36JsooAZgmu3rXVq8phUckB2lZnZ/9ZVnbf0yvTX6rNi0hQO0PzGxScRiIpeVoCh4FXVqHWfGQtMoORWNUzosdwdRDtOSeHXIUdbJ1ZDZmoZSJl5Q0VnX05Mek2bTqBRa9H97VbVCZHx4lAwo8wlxDmGPbKJvjQBVjeXFL4kvqZ0UeoUWvNMQoL7TmTFzpjTt7RRYN798icWWv7oQ9qxYV2ULsAoGUGO6ZdBwuddOiGEoN4W5hm2drjFALp8JgWa+jhMiH7m3aElwccKfjoLrNVpbCHOqpw9yPdkzbjREbwfVJht0ItLOBQ8n1WO8oGW7t4W5a3jmGW7ZNi85tOe+bxAWK6ZJcB/hPv2uL9ku9d29eDerYQiVFvHG6E2/57PC78s/nKDrsXrVULUl7vDQXoXg2ZM4URTNVg0U9RsirJc/VPoYjXrKPHgaCLf6CDvFxeWnmjfhd8O986CmUmukTfRCPWItHHf0WOl66Tv/wUNh0MGTUdFslCwM7Gw/B2AaBCMlKwBuyOVZs3dk38NHriolfNquU4z67fR32vPqIEGuzLsUBnytKP6IQsOQ357FBCZjtz43dWKb7mv/V8SywUTzSPEi0aA9VohvHiuUD7/i9PZTLpSaUeIHTYc/D5jZYeY6NR8ebVQYavXWyBAa5MRN2sDoaDNs5jnqD9s0i06ghHWCpcKOm7kX3H4G9cel5yE96+xWW/gyRyLJUDml79SoCwj164kUGaIsqph3gDZnXeGfQpRIbAAAgAElEQVTADbM7lrrZPoHpsExtbcs9hwyc98ZIOoXSN3PZHwiljCmTTPh4veRnr4Pwu8ZPc35Y3Rdngw4HA4rfB1J/9ZpSoxNC9RGm3fnR0TVUsbQRR5Cxa1x2vpAW7YNFk0zgP5xp8/6/6JQRZpBM4udXwVYiyNDKlxJqrUp5aYlbSgJn/96AzOt6QXiUpQHjKfKQXKxlNZQbHgbwNYMoKWwYBSaEcwpBM8gNwsCZZM61C24ktX4GEvw35Do8b4AniDxAWJEmX0M6LSowRDptY+plDnpJTgPVjJT/skhlvpl8uoXuRUemNOkff6J3lxfussJtnH98BQD6QsCNYKfy0BW+/3V1roDzujBwV+2f/Wwv3AqNgCYK1C+8qsUuCKcrdjFKE/FnYVykgA3FLkRhKC9jEb8HE1zmNOLEscTdyBHgCPAp6wOIZ0+L12eIqhRNEARD0WxfvgCTj5Q3wv29bmIQhYQm98ZRQ6O9n9adLIzyNNNcO4GfZVVs9mRWBMkTpqWVlqNbIvo4/dbZ1TWNK1d3YK4wf7eEKhNGEvHevjbsWa3vGqveLiwoifaJR/Vei+tSLG7R4ECvUU1CP56gAgFsJXeed89TIGwj1CFVnh3UedZ/BkAKWligDMsZmJ7iHJ3gKXnWTicy1aVvoym2/7yuSRugi4ebwQxHWjMJkO/Y7o/1M51L9cvHDzIzZ2KKOcJoa3ttRWJTyqfHc91ueMoAuiK7fKlzlaTE+HBv0xhaeSDjTGtRqbW2Z5zyKBU4Oh3IFHuFapCwCGsvJMwZIInBYuPsGfc8GPEPlJy9KUIaput2mPLN1OtLItExRp0ZJtbaziNCGxprdG2atcGUMZpwTPLBTTMF3WaZ9B+m5fvZtfo9tk/oiLPEGBxEf31Ai35/KAJx0Jc3329PvtGQlsI5z+uM+wrSPLucCSO3FJ2LXHXxM9ZVlqjp2paVke0YRmCoYSBQyZLuQnqbY1DWdM+0gyS0FsyLsfTUZ/WKl33aPj7kuMB1bwKy1xoFIOcaCC9t14HH8Ba5kQxPsIOzk7druHbrTw+QiC6Csikn0hvYWVKqRKy1vn+wZ6eNot/uDx9mtT3T+ytrVuRiCa4xWgQQrQ1ay8kgxYvULbJj5kxcU74/HCLb+Y63cO1j7tkwZOfnxYNTPlzHVDAfIuDRKV3nHbcMJ9scgAyiDshQkg8OE2cEtosIfMMwdNmwzvS2tSYgkRuAHbOCGxY9O4jvZh8oFs7glXaP59kp2/P8IJByI1X+y2drKZZjhksyK3Hd3p2r3J6yZ6gTSoGZjt6Jac48rHtBYQDOYpBsB+oU1mbEQ/anWrF/dWXa+jesa6XT83rdGLJl0nLiXU2N5lEw8i6pm2HaDsXseMtJzwptwNsvt0wAQ5M7syoqvGaVvIpF3z5lJ5yLpvfCOetZsTzMnjax+ILSAFPzDfYtewZ+DKbzaEeRCpLOmoBHGsFGmP7rucG4Mfp9WLAQp+GYjqPVGVo13W93XpEf87FsGJrT+raY3DLepVTxlrowhIaQmZf9DW6yGXvNhWz3BjG7fXnIVTQr3AXPdNw+v39M2GpPd3UgT1eHb5fNbkLc+PT36Rr0fz6LMOMOljwtDlWR3kIuWjZWqvZKBTQ03gA+zLoIeu6ZNGl/i4Y6AS1dDw2P9UsQu+v63GcKLrRLQ1pMVPsXT3SZ/Ff9UMamdH2bEtYtVb4JAwnNrIb5KWqNMuNTqJrKlUxGX9PPZE+FuPSy+yeg2QnbTsVfNVuD7B6LfJfT7NrAKyVy2mtcOf9ycar2/P6BihN74WdltU/ERr1/uNSWrCJABdB0/nlZ2BiFGG0/uLFRU0OBipZU+ZLZOSVDOP4R1JncIIBojx8zZ3yY43RdMjXkX5SFu+6iA3OgyQuOD29Hd8J/2s8fH3V+WB8jT7wdvF6AWPd8KeiRFjJu5kdMmsdSX4Zhx7eekOFm9w/qPXjxPi7u76z4uhs4Nhb9y7cTzUVvvzJU+zrk4ppjll9C2lIKZyt7ViQO5a0hiYdUu3agbWH1G7kZQDnfJyEmm5VPGuH2GxBww41qBHfHrlyVYhuDF1RKgISqdAPvrJOAWcivEWcARbBRKwyeQTTT2dx0oCCjWhnhVxLxYlbsF3JBx0260RYkhiyHf6Mtmm2vqfvpYWNaNFtBWnZdK0ZXjyeZuotR+PnNV3ld0bhK/4QWlQZvkEwmnldy4QR0xgC7k9zg0OzGQ6gCRqDd0cKd9Bh8Vh43bS5fWgdMrTyd68qiydFcM+8wRDXpuZU2EQYdLPpAYdgqp4FkOhFJW2o8FuufGn2ZIT7GijaY9Nir1ulTb9mQIL3dow4Noat5+z3fmUMpfGAnnWn2aHb2cIr+GZOT9JNch2WZ2+/OVYuKtGe1XFRxk9xig3eX2bmCuVHHQhJomKaXDm23RpFj8FnndmlNoFTCHVop6SXUDcOs6omItvlt9YntB+In9uy3X2Q/0hzTlzOfnIChI/1cVHiEEO4m6mYlDk/xo3QYe3meW6ftDCdNd4+6/RCoSqsvD5kJlQnEidqi39i/nl5gGBd3YHtv8Z25JdxJhYr90J5hrRia9bV04IUNdRYat9wzVL8FggaC2AA/3U/sYxu70NViwJJw98IreBPEaYdSAN1Wc8uUzG1MLgjlF1jt1FVe0OuGbWMekvckdCmZ1sRinuOhF45kZUXYNER7aZqJMD00y5ZQYoFmChHAa+rSstFs3FXKuiExRWefvrYaVGh8K8xc1r1nV9bNqeXu4hxZovT+ArmFmNn5S7ao4JUm52ySSEk6QL83ZDjMvm8VbfggeTfYbeGO2LMHEZt+AtaOazVa/pLphKYx2L0D08h9Gd6bB/KB/FxlL2poI9Nw0i69xSiqbvy2Wd2mixfR/VEm22hz0P/ztPqowNPCcJMoLQ6HUljwpeR+FSkO8hBHIqv2mRzsRmJNUaJFqiDIGfhmevP9n9aqg6iBIip9tMjTacHobf4WIdb8AcCzPOTvnPKCSXsm5aHIilKsZUAlvv4gMxxFm0hwKcLuagTtkcEigdrL5jsCC1CTF/FDb4fb/+PuanobR44ou6lJruKHciYpec+mSRo5WibpydGy2LSPCWxKs7cAiSXnvjuef5D83HRVN5vNL0meAAFkA4udsUfWB6uLr15VvTeEQQQjqKMJ33a8Hlko9v8s3bFl7FB187ZUSkXewcMtRN8f0LkZ/lViBlEueaks3bS/rTgNcZGFlZtNBb6x2i9yixCEUmy8DGwdCm61lm8UiXj29rvXytEvUA8hKDGMP/z2meJ59iyMZYw//n1Ra5DQAhexJtV0Xr7tiixS42mwugbNlHlbktgt7HmWj02MO9nVQJB1rJ5kKBLLOE0HdAw/D70G6tSDcV4TRIZzkFgT8ecZp4Wznqn7UUuDljHcoLIBYC24uQXNO9BZIb9m9Om8tzgP90oOTmDFkFq8loSQvng2xFT7tfgd/q//vu1FNIwH/8J//vSJnAxn63pz4YmpneBJtcJTnpZvryHVeSL+Yc05AmmnZ5KnVlZY8XA8z+O0T9lGfS1dKWtLrJ9OzmPxLIpMPZzrUnDc3pjSGjIM7MlE0L8ck0c6bEsxvEgmi2r0KNQiuiXRSJW6bpz2HskTc+CW2F2x58hIJQ+8hudpR0ooUePX/1RhC2jy/15QOUi59X2CL/fFk0rYFz+elV7Mn+Homptqs1tR/VQDak7YZRs9g4B8XFx5i6vBQOrxqLQR8G9/uyEOTq6p2oN32FsPxpnfoMm/Cu6OXkked1GMJWrQ8WkOxLcOnLvAP7YaNrSmCGQ5rPNEsfrBvCXXo9R13XUf1EEwb15sH4xCQBoaCQ6fh7TyC3p8r5jmtIwR/WyQv/K/lC+fJJ4XL96FGCFc7Btqx4Qui/ltVzajSqIonALhEbTTM88OGU739z5kYU9hDyCNwYDzPpiLe5usjhARG1pSbdgUzY4F07TapQl6xwRdlR0YVVaGRrZtaXq3/kFgFByzQgaDRj1PE09VgeoGNgfdpOZpAjlW4K77Tww76fB96HcBOSXM96x8+1wf2q87xio1pkCvV5in4bp9yT8H0zFhU1IJ5LG9N+v3RP/C/2S+vZZr7XaXoxKry279vJOemYDTs3ZtBRJWvHRpiYTRmo8byOSh99FobgNcCFe5P0e9ttFmM7dJfTTTlPGDR4jIMWxijYzUATzSsAoPYrvpshzrdqvJjxF84luasV0jvG7aTYPFcmrrD7HhI7RHnRHFRYhokKBZME8INcIultKFvtsVkdIxwPUVDjkTePcr5n2CeAaqWSwJJ9VzM70/e4V4rqqlIz7GLMtLnC0APtplLVCdMyYsJ8yl3hngj1tatIs+0mjk+n/Y3qRLPRxr5NGhjqB4B4rkoMMcG3+or8FpfBqqWtf+Sa88CMZm+Sh6xorn1F6hVWs1ipsBnkNhmotuNlloOWy4TwXijPT6Fv/vioj+ZSW4WOSn2dVcPZLe3UIqgw8gX3yCWX+zvJRiJNcFD+06Q5vbe2Oy3eyqkhX8i7E8X+KShMuWpGXlwUE1k241JPMUaM4LbdlKWkeCdMrIpFHgRL3WXE9aRoVad/VDLqUG3vFTEAzEs2FaRx6IZ1AJL+pxXuPw0w7jOBEpCR993oRcqk8T3OyjpYx+fJs0KWGwrsS8S4U3dPPKQJwR1DngyophHFIo6QJSpmVhsRpcUhiN/hOIF365P/+NWRj0niCqSFYgOlJn6LvKuNju36uoHSRzDqEXTB/ccnk41/AjwY+DRkD4T1XPm0BNFWJlODY31zUAHham82uP7ziNtBnkk4wuuyEoWWjFOx+J5/GqUUHx0xRJjQNT05Cn46X2RkJxVkGmEUY63LBTAmahk282MC8q4AgMgsmjCZHp8wQle2JQ7z8YnlxtofkyqVLFr0L7jOAyLSPFmcczLa9k3ZCsUHJVZugLtrr+8b7r3NB4Ml4aumoSdctaNxpudMBx+hDN+gUjgFOCROqey3GyKGqt7IdNwRMINwgbu4dW6OhlnSVFzTV5Its+2IQL+o3zoFUO/k80oAj2sMHv9kkx3VKV6fxoHoohUvxy4c8wFhN4WI/AsLME0vge5nlq+wlTTD4NlDwHATg8KcRON09DoRCpF4ZYPI3dELZ59TTUmV28TI0vN7PzrgspLOvc3WA8CxZIBDTZ7Mt//ejstzv5tx2svrNC+rLRmCO5hlIy16id1NlVNiOPwC0TqD+8rSqTB8Hb8XBWJu6WnDINhPp3T37/Q/bHVFlcdV1dxY6JBNStAWbfGhQiP/ycxGoTdSeokQFjMnyaTA9fuDz0q478LqxdSQ5czMo4PKTnbWbJiqEzbkxWAnkgnAxcVrG7XWrZUoAXkrK7rSOaLgrvwluwKS3oWfuBUxgsxDnZ2XomBq9AIduKv72/7N9bCu9+XG6/p1ayWVtWnMOwTF5u98LaQ17XAj7vLhglMKcE90FHWPB5bdwcxQy2qxAChtqkcVuBg4ov/v+PsnmtUGvijNbG8QCqfXgP07rjgY5V+ss8PjpHdGE6xQseOX3+MNXTXkDrtzFBaFfcMGiUZ1cgw5123TRBTZdF4r77gIkZ7h9xVu54WEdSUwnGfr9+r0HM7HlyAzTfxf3knPuFgrEBhPFSu298SRO2Kd+Lp3Y8u6zc8ASsqkHq3G2rtMWfZlFfc9R3y0Jet0Xaq/pg8BGrnSi0O+OXH+E7+hBj2HutCwmCesrN7s5+6Fohp7wU0sUkNBguaPt1cJdNacNkcwDrIKTOsAJE3TV+V3ztnQ3i5OV3WDrKb81C/SxZkYgjjWmdo4HBk88wWz8ANLELozxf6g5yMwINs8qlq1X+reJw66na7vTqgOasLC45AFvV0DlnncE5k3WdlQIcbZTf44XiqhtdHH3ERahEwBUQtCzrJz5T2siP0mP/pjNyZA+INql/eSp50adoBADxUd/a94fYbV13RyaONstAl4PPhm7qoOAYOMgvJTGUhVEHLl1jlViuJk1Ewwy0+/i7LAUBblYb+RRJhVdx9nC+KRpys7AhLas1jIYmZZUxIDC/V5tKJ8XyqlpSYyajE1zBuh0Qd1PpzDRUMHkaBfGlKL+cNDQirSwTZV8QLzsRZA9hWM1cfjAni43BNu0xfrP3MLxa6RLXU3qP8EQG17rdh2Lb1/uV9WNqzy2t5O0KKGFnU51lpxvA7vTQKQIwl6SeESOCyZhYkq31IghbevOY7V/j6soT5Xr59npr0Md/SIJrBfdcyVEFjzciL00T72zjWaiJ0icwBCI55GZjze87b893pQbL6Fe4MZE7Ydrh5LwO7OTA+d2+bkNBJyDKmVAVXIjrI+ZpJtP6CsoNK9IxKsSrHfStY2GYAqi6cMx4sMYryp0z8AfMKA4hBmQDjY42niPi2beDRhSviWoNVaiTFNVfjtPCGlZ3V6CF58FjE4rhaECvkoJ+ieLx+zHtZGlcTGP0JFMorr59ElS6m5f7DQ4sVcXSmpc/Xi+NJ9E/gctP83Ui2OkJQhFz82zenmk8g5MVhBsUuyQRlijkOWePv83Waz2eoXQQcIMkjC27sM/JNzihh5qv4DSbyowj+oa8jAnq26eIZnkKsulhggJNB3GOQk5pwBiFJrzYJj260lzUHpnm6LHCjph8niqgMUIFUhr4/ZPUQ8t+gN/GApbWnp0dKB50RmMBZkWD8IbEoc/hsj8mzRq4WVSsab4MtCVYP5aD/Q7iwMX2fa1mT8zH97+ZewErgoQfAzCgxMzCMGNNtg9nmaLdKsbm/jwv/wkLhFAc8Er4sUqT/byYNVDOeYSh8AR6/z5P4ldeByjzEIcH+7wkLAqgMdQ/MKFvqK3gXyy19gmNx5a/fRFhgdfAgfqq2+PtjeNtDc3wEuNJpmL5RPTki/hxSWoYQLL9znk6QEZ3mChcmCCju5jzPNqhVFKi4W8idTioi22C6/2Lyh7ebLsr60lRfkm9WRXh4y9iTGOLfXR+KNq/3lWQkR1eTBSeuDVxaFwVpTfbPDB73Xww1cYT2978jy2bNkjIgNgctgTqsztRZxCegXk4XzU0VWM6WzutDFx63WIbMIdnHGPQAuvkNS3EBSlAGAfZxOD/9YHTGo3brcHAExwLSAQy21mYjN7PSF4iWmhPOubyb/ymyi8b+fbajCsEX3dv3+t2wazgIDOFfot5j60142J3Zlw0idn2FXx0eTgv6d2lWaLYIr87BeRh9sKu77/U7SKnXM9ujAWsvJNSm6+DNSAezHBBFizN2cDSFSmmc6WeJHRHSWYrMnXo8uiAxBiaexiwcQs+uHSIuVxgCp6yf8bE/Sd9A6hq8eBxiuTQHM6FHvhN88gTdEhWZWk4TCGSPMJo/S9119LeKK5EQSSzNmBnzSOZdTCQu40HlNvLpI3wrKcD7u1839jOH7id/tlXVRJC4pHH3Vx3Vu3EjY04KlWdqjplljredS6IDVo0pKbaYLKcI6BmIonAUcwfPtRzUEsUD1+dHn8l48xvDKq6kavgt3Z/zc2znQvre5M9r9jWqrqFYmu7EnPtiCLg3IxyU15IMHCPo5qKWPiup0oALJVFHDbIdLgpLdZTXrOZaZgueSB6b/W4Pp68A7UhvRZ6n4Py1GSXD8Nani/6+4mN5dtpms4cFlq3ysUaKssnBWfsCpXn7acRKyvtADc58VcObGWlH9ra488REGDd/WEFWX28tS7vRRUEufvxy8CZwG7ld4+albg9Yfhi1tXKtk3YPHcjz3Gc3SoRFLWclgQ9EVWhQETyliUTBK5fH7uECua2+rINftD3wqPSZIk84ZAImEFKZKqAzvxh0mpPDLQYZETsNzAKTq85irCvcw4+aqQnwOjzhSKjLKpcLt1WQHNbuCzL9fjTnKcLMEIrg8Um2pjZmDY1hP6qX7Q+fIOYCWJ8fkiDTMePtVVaIgtDvvwqKh029FA6FfgaATzbi2pZBbE6i34/LO6aBakk9IHMaxj2X4ndbnfSVN3l6tZwq0PY9PwYpe1WBockzoqB4wtiokBR8R+kqzDjHY3M8PtxmeldJyanFo7I6GmT300NkAX+XQpkvB/IHGwJ+ejs7xmJMYS0cLjMv4Ymr2mjteYrOkEPrf642WKJqLFMulZS/O9DIhroBKW3b+8FRcVPYShkCq6O29WjGHNvWX/+3ZEHZz0lCwXLnVo5CQ7Hc5Sj4Aa+PN1e8pPn5tFS00b/dcBNn38TN1cYzzmuWz0REJasAAHdECblKZrUAJEt5u65yYzUYRc/fY43iqalmcO+OWu+WjqSFf6LkW9hfgnivsNjfAzToTsZPAiXgyPb1SnoYaAR46EaxdA3NORO6QLaVG6eBr/Vno/9jP3PnWzHxeuz5KnYdokb4Y6xdiHG3Fv2y98yZKxvz9k+rwG1z2q8Hcue/b7Vlewe7Zd7sc3FzC/7Qeg45FC4RKRyUs/8tQeDKBLbBDjQoIezcYBmRfoeWIHh+mSw9QaUonDCNwkNyTvRZu6O7a6Z0HM/gNWPYJr4k7cXimkdkQ/nGcS+IImtjobeZMgmLNYMWaKwWoDiYG4iOtK0+62/gJ1do0cNlv/qVdpvsmRI8kVsfXfaLgT7FyOiSUXPOMtCoBzlYv+kBccN66dGW1/+tvdfsU+YUKQtY4bpUDFehTwM+l9Xbc9tQpMswNgG3zyQB+kQzmX6HlRxVl/Q5x7enFyvjPNnuDcsWhaZRWIJUhCcDnsx917ZkOJ9yPpihIAJzXA+Uz6jTgpEBt/uIWp7QYcVuGP8RcZKWikeJHRd6QmUAx6fe78Q3tOhje5fP2HBLzjRwop9USK6DmtxQgMLVi2rpMDsC3ey88P6jB0OmGl+cbrt7zXZczusluXqPzh49Pqr5YjG2GWzRmONWScy2Krkof3Wr6hDCxjgRJUzY2flZmGy0pv3nLFQdWENxBnnorzPCyuFoxasAJ2J8A2Sz52tXTZOAv4mQcz5ibYTJ70cf5p+DqCcVvSdgBWmgO8ozBIQigaZn8BkkQaIJtfVgp+SninUDcqa3T9laFTjfHuoHv2udJTIAwx4g4baZUVrgeKLlyMryuB88Qz+lSMmL0r7vP9Hu/ffT5gzvNjKETTQOHj5COkUTGvfmdkjHg72W9/Om6qERlnV2Z+Vg/gmLr13LGfShfmT4oxkyNARPZ3S82lvsmgThjby0Dx7pjei59Tf7ykYOtBysKYXTUSmFrba+BBHSOlq8wTisYd/2weLPHQWIVyKo2R1qDqUDVQMwEDzMCcbRDp5h+hckbEFaH9vLefln561xgmGK/70qwLawqMw3f38sXGqs40JHYiCWw3P1Xe9I+XmZ4M9smyxasBVjqFxkJG8EcuxMk+yuEYfO8IaL2hiKTUNJISzudZvi5yHPRELY6DmjnelzCVrjwID61pVxQyq7SmKARwO11pYdtLz2OHbFnYCzRM8TC9lnUpdGtE+hljHJKH6xn7az1ghcWLQ6kFPeEBTpgavKK+7ulDpZjs8jAHx3bplWiAS5NI1/O22+8qMPz3Q1bz82dNzK7TRyy3m3Y7703HrLev9t2V1rk4H5Wjt8cwRqSYc80eS7X4+e/k9x/MaK/0JJlMuD0qP1dTUWXE8Q34FNF6LvN2QQHeVx4mW5QyehS5MoShYIPTe4euGkB1VcfQVRF402eE9AGSC9fmhPzpBIjIlbDTeYyZXqGu7B2JviIJ8URkd9Otk+BBKqTHezGwcqMQDHTDdTOwOa37NGNruEXfYsVzvTy+vr8cGOuUEwZ8LEQ7nL90ggTW/vTp1Ov8WuTpuhI3miK83MYX20XLfpHR7lkb6hqN1/7UnKJoNioqA38vXYPd6D0bYYSkW1aHKl0+/q1upF4Zb1uwbSHyvo2AwXAV6CkdFGrZe9kykSSrgJ8uwxbD3oT/J180rcQxHB5HZQRGQS8mSuX0kK5qCOTT3nx66hgzw1HvNy5BBLoWAUmM6P/ActYhts6Yrx0FBPPgOlSw0bBqftqdTU5aVqJBme2gELT29RAPK0Zx6k59eqy4PsGphV6CMh01RHsvLE9pWGSu8s8OzzT0mxW8QKF9e3UOfIGMbN+Cvb2FrXjPsMOERQ+KCqoxySVa6A+1gL6Encrgc+noiYOrWY6k6Cv5JJgQmEnz0hmcAzRufXbZJSX0DNdFoKsUUZt/xkqcwPTTeWmZzTumfjC5DOrPcPaQlq7w3nBsMTHwjreKwrbzAyLJwp2HR7W5ukXmQY8RM0MFv0y1lbSthX/BTm0NajLkGquOabaiX1yzJWHFuVjpfXCs8xzU/XJwt8PMYxfmQx+fOE9QbLWDvwq4vveC3zkExHI7V6aVXN9BGmNrjhm9xVGJhKsY06ZyKIj7ZT1a+mbgxyizM8g4ShmgbSRT8z8tHIq1Uzh2lu0clItOdW0RTj1Y8ZSZjQxjjlgR2ny0kwZjDBkg75UBUsEqF0HHMbs2V53a5iw+FEv2fjR5HOrRJ8i2tWIWuvQ/NLVDYgIh2xPT2bbXwGdtGS1oE54Rn52nZ4dmmewgSuG3GXQd6dc2C4zmkrAEdgh0sA2T6iMqjPvTb09m9HrtJM9pAD8iglu5EL19cbiJsLpwt/o1gmMinfQ1iyuJqHrMowx9dj7gfGV6IfQXdz0g9Fw4Y4Cfc0bjOaIJsDub2YZoMalB8HysABNB92UFFpuS0Md4muQEuqI+hOJ8wa9ZDarXv9AT21W40TTsL+ei8olsoIsbnY+9aVvIoH7xpHEbC9wFWF1fr0dTr/7OBpm1X8I38RLg7YDqPA5HWHKCrCsxzkbLvP5qNXOzLx+4/9w7H6uXY+xjdyCVAc9XXH2lFQilroLRjTjCJSLsEMIuiz9WAesG8dzpOn8u602gQKoowTlxmQCuIqFAR4YrIE7cX6lbWdaeZ6SGkFb2HlYWzfY82TNzk23yxnNoSHNKpNwUu20/L+tSYAfk122a1iGpIyKrFRR8XnnYAACAASURBVLNkej4hyrmXwY230OHlwdTpdOLhJDdqa27A4UP4ARBArAnz+7ZnY6RvDqJfm59PLU7JrA9iv7MSmnUIvy224zfStkp0lYd+HYiVKx1z86zWQww7ENkUUT8Hwrmgg9fpZLL9EQ6zRTDhtUJ1EmQP4KmTrhcv+ZCdhqo3vQPAi+ZM+NhewhYqUl1wN5K5t3Da08Dpnz72g3lTBCKeBrOHSKSDGdp4XVWdJxSkkklQw0Ly49OezjpHKYVGt65d3vj0cHc03V1uXRNfSg+C17xkrplLtGn7LLK86A6FrFjyx/bw8vOQ4ARKawUEQUyFd30eRtrO9vjV7CU/mTZYtU8XUNZcFSFkjOLdkdYvh0JIP7tAAm3dQBpomyp2j+5f2475hBIXCwZDdtkUuHghhhIie+KWwHeQUSDVlbWDrgToDcD4sgTzxNhe+x6mcbZy9CYFrENa2sNemknMpPCF1xl1vw6ULPPQbVYZbDIYEdvPFnrzIImMryJ44aj73kRKRY3pbrFu2axnlFKYsgIKmhXQTTrpXLPBnJB6G/myEDqmVckDPaOGIVrtD26vSkHyDTd7CYZKJTrOK+g1JFBoatl0cw5wrnL0MrKqpChWztZX36CX1UN6zqan5/x0WGPJypI2DdCXtK5P3FXgzplMrEAn7MtrF4OHeVMVuVpK7sW1cFJ1moHo0SnOQiZ0lSibpo+Eqt6eidc0na3TFEDU3N23vRRCjBhRb+rTLXuAGRdd9VOFgMHQL9Zefej4Fb6RPel9eJ0L00ntjK7o3L5xZe45/5e4a9mOFEeiKWV/QILwnod7bwzUbCsNyt52DYicbR0b8QPtpL5gXJ89ESEBIl9Oz6lHLur0cVXjFAqFbtyIuNEojE2oE27uXE7AzJda9AWp+RvhlaBVbaOWVTlsP3xOVD9oSiCERR3i7ct2eGLwIJCPBn/W1iHPfzPswDRHHe2fVpjuEGobR0Hfyd1riQ2AENM9inZ48fZvX9DjEr62dNzqUy2lVHJLFEUAYGR463yz2UHbH1rUubQOTkIUUXveVKqPF/pELcMhQmRBUhjHew1x9XLsnrPBrpQSH72qHzsw/SbSgsezfE14ZFOmEMqUc0wj30b6OgzP+vwPbyePLmgQxA5LA79U5ADB0qNDVL27vQD4sAsoKWaTRmeqF7ACAEOKXOyIOrv+n+VzPn3/LyVkvh868C8B/Esc4lf0A+nP+ncNJdsCZA9EtflttkxBeRru+68oSZlJ3VWyP9SZZ/psclXmEEU8Ft9efcz/Y23h9DbXz+gQ0T7B3Wr49DhoN8lVpyFsaGYlYnhZWdBs4vOnCfZoMwZcJ5ybzeTG3nKIBOWJRU6TlbOyHD07bHbkVCp9OAPjX/CfPvdpFAYLJ1AS3sh8Hw13Oav+wb1LPS24yswNUY1ubklwyPzkj883LM0LCFHLuXWI5W3/z2K9CKOTncEdUdHqb6+OGAWGUD1pc0S7vkNPJel5YB2vWQtXb9M2ZMaR1FvY8N9i0VEuLVWW/OdNawWm3KW+oMsGC14pSaoPygv64QvcR5uknUX54RX1XWvi3k63GlCIiXW7rtOq9ObrFq+z0JGaOvoGY0kHON0TDoLlpRePPh1VZMZmETHJtZRlmTnisjcpGF2C05dINLH1qX40jTa3AAk6iQbwj1Wi9EFtfecrjiGjzSXGWIK3gON2kTSxg/JMoRMRoiMyEzWr29YHcSJ6rDlm42L/qupsPptcwP5a3IFFpN/eujGlS+PgYml6NdiuQc4KHX+ra77rNneAO8AclEmt6+cVqx5/vXOupsK3QPeoyUpEjxlDcPeEkQLSM6WPiAOMdcOLcVzBCoU2mv0z7FECy2pVVcYhVioJpRFnLFtW8A2tz9mzmzREpil/crMosOMFlRqk45CoS0XCNwuOXjfCK/k336NqTs+71fHEVxTWuZFPKvGImn5uF5ePBzXNHOvG+ylNj4JDTpPSqwZc5ezDk2tsPQ7drJxEY7jzcjNPebQE8NKlHJnqZP/WDwM4J2EBN09aI6BUdBvMWKZxyIrGv9PboMmqrO00HQbWvmy4/MUW7VTWs12nXqjbOlyZnObqvhay/47WDKAIa0/gJSRtbci1qCKG476mfIsyHD+44QcGUfVxXtt2HZ42ncWBnAuUIBhFV5CHRkUoA9xc5ZSkjJfpAe8nne7rLTBsQwM5vQceXiTuToz3/L+Nl/Ou+K29B2YOXeylNKHQCSDjWLSlVOSuvThCedft5WOHl67t4ya48jc9gFTSH6d8gZwSLUWTQyD4bZjGFsaFsdl79YDPMipE5Z1u8ibOq7YxBZarQj/y4le2sSROo0ig66D8t+EPeVHDzVftDgiCS+z8A2zc4DU1DdAUOLAxxLFYUnXV+GKxcrZASvloFxldYEw9HF8PElsLZ44lDdFtFS94kZIctC/OFnDdMAKLf1QR4+KYnnkVuIbNeQUbPhVHvz8G9Jzazc2a/gAzUs+4cUFNl5NfRmUCrIaswPs+XKqWcaAyjacoyf83s38ZK6dDgXSfcePYsYHhMF7IVhd5DcG9tWiapUOZQtlI+QzWostCU23Dvd7G+S/z0SyfK+nZTj8l5R9GhwDuCpRQzHsawIZ6uLAQOs/r1jI6I4F5Pziy/Gjt9/3by8lrNHnCpT1zavtON3wOuBui7AAiYywBWDpEBPJ4gV3dXDWYMwMIr82jiG/JdRv+2T8PVNwBgvHVEVuX8juc3yrpH82EZTwqQON6i6eR4vTNDXDUeH/ipWvSTYHb1VHmZfNQyThv9YG88tSDRAIdNR3poD9AtLimTTWFDYlsvwT7r/AffZ0p6pwJdOPl2+jjkfn/BZ7n8kMBcCfYrhQgHiakfgHkyu96OHE4lqMp0aLRJ951T9wcbjvJajc4XCPS8n997zbHIzFtGcd6smcGaMxtWsGf4ECbiWBdVwAUfVMuzc/LgbKzBBfe+iJLF2bByVv7/omi+FSfL6j++AZ8HbppwmjMKJ6z0ItTY6Or52ZRoB1eZWIs6UmoBY8CXmp6yrzaj2z71zI+w5kQ2YkjVzD0gFDoELrRzpwSAcg5HKqN21XHcTYLkly86LttaLeVSs940H9h+xcc4dmUeZNBfLbTums7820+XFT2Mffs5IgK/WUVbKNPz3GSNwprUnimdFmVCAk80osJKardjEylYeH6w4NDYEJYgMV1TLbKYeutbik2/VASm0r9VeYoyCB2050rVAqXVlfJplq42aMN5sLhrCxXfaJBcwGI+EvTvs15wDGk22mzil2STVzSPDhj52fNnJ/I+KLq+Q1tMMYu7XhN6lEUyj/SA44j5JKdccmRqEz8J+lPDA1xIf96TV0P5LgpjqTAa+2516tRndlwJnVXChMYmcwgmLPXym3IKhxWSYK1Tb4F1IFK20g0/qxqaeFc5RANPrA8hZXinBkMB4mowwHGEI5h+EAccNLSN7YcJkS3nZ45C/xxsj+g6LuqfQhQLPLFJ1HDih461eErLBd76gWVKvNCuWX9Ii99kq4Vc6KQn+ke5DNpl5VmwtBPvNfg2jGq1d6kY8DfOQ2L+iZ+qnrqlmYZf5st1Ossd/3equKx0wVMiHxhtpyPyCCqQW1BbE02IoNxiKFqjLU1umvIxQwHpy9/Mb2MqLsBPsvEX0IyNInSylbl0SjwFYdnfc2rB1aleUm9uck2KLPHCRb8lGppljv+cN0+hwkcqBK1WHFSLqZRsPICvzCaMyFt02iFfxXamjk1WyFK/MW74SUcRQ1INynDki5qk2iUfklp8/nCIHNKXQVuBycqzeNdTuH8yc6l6fkeqg/V390WIoIfj5f2bHsJWchufkroao75S312kdkLwkHRVgrdOwLkN8svcHMPYoqpdBRewa1g/dcwaPAuR5ZAHcyxVwz94HCqyaLQbhVyofrvbwNmZWYnlqN/BwvZDcYSaATPuhb7Jlcpqx6TigrcA4jOpsiQi59ATS+eed9ucb1lusN0dUD12X6CWg8beg8GLkcUDSZUkoTWjNT8eNRQ3s8rqJSfzXM2o6LHPCG8ANQdPlkEo6sPOXlsm6XKYVNVRzgrulB5RAzth1QPV24j6wwzwsu5EOHkZxb2vGKUUOE+Cz96NuJFetzoF1w+gxT1OdjJ1EX7N/3WcYxxaKrwph+3WtWpoGTu0kdaSMj/rIvhbRYSYrI+/las7TQeirlxjqPQIfwhrSARDeG537K6kG3jVSnLM0wb5g9/drMFsB9Neyzkw8HxbhJFaRM8nwEgIvDLd/2hxrrXKrfNB5iyBz8M30qQIt1Oj8kVrAYoBRhvvTzX2LuAUJuRAMdRxoNTdyL4cI/KFS0WrGwrCjbQba6m8o5Sgr7tL3Urm+hDOfFpTDKNe5vt2z9WyTNjPA1uN5pFUzW+oepYaKpHrUE7z/mAhccXUfeRUWeLVoapLvq9/5NJi1N5LGQ6JmJVY0c9wR1YHLGna+ObiqdVDsBwcqXFiSpBJB85VucMU2bNkNBgKfqFKAZSuws+34VR0OpGlnGOjBXPRaPnp/Efa9FRtYD/XYZqiYh8yW4xdcJ2Q5cK2ZQjB5zQigPww+BVW+SmATghhwnxYgeQRAESozzM1OIQICsCAQnGh1v/lHxuMoDOPhKCbqNnaGLE8oZgeB7uQFYs4WOVr1xLz0xaDX4mTkYnYw+5AZ5jBUhmjX+0VkRI5BfHEmkAGyQYZ27diBLw0Ry/vc+3Wdd8c9YyW1I59ijjCq9gEI4bZSOPYssxpqc3OrfArVV4hlZlOJg+gQuzpt8Rr5KTafdG/y7Gwo1Hx0uXYSSHmhhW8tG5+HtlxAJe0jICH83Kaq2dY5Q//EC44V44cIxapBe4JLaxwFZeHuwHpBhSz3LAQtJyZYNEe48dwrS9XLSIKVpVZblhp+1AGRqPlGWFajtHTNe15hQ5f4y/j4dW4CDv6gPcDthHicoGFDzydzLQcwSZLnRbwCJpnJp3IlKKf/0/1q4uvU0liYb2zLsAZZ6hlQUEAXkeXWi95xPgBYyBu4EgrSBSduC726lT3c2PBFZkR1++2HEsWYbqqlNVp06xJrPs69AMOty54on79sNwC70H1ZvskNX4KJuSHQ8fzCYPhFNRNsNBb7s6M7+A2PRaVUYDeXjCE5pmTvUXutqny4VQYAnuAtmvmOYsqQYlZPdDt8EB6f9LUzPGWcNWstwWBJryO7YzPKmvT9Uw0SWT1R+DG/31IYOqmo6ZhBsWMXMqlG42iiJKHq1CVtSXG96EjplIShqOxx+akSxDVH10fZ0Oco19Eqo913UDKnl7xmxwdgsbeGvpbmUr+gfv9kZkv0m6FMzL0UjzIUTLpufpP96dsohOOYfsFCVo4Jvl9S0CzCN+3LZ1gqt0tt+e9WZ1TtyadB+i/KGpMgXYAhWMPMEQBcqkSunURnsTvPtirhe+45HnTBJUac9dTf7qfDrTVw7biTM3+/r2Y5NOy0jsuwI2A4sm+zXJWrxvX2ICs5v/Qr7p69BF+DP1KIvHQy7DV4Uep0kablw2B0NE2kky/DwGF6Uxc+tgdBvZ85BVY3IrfuSX9Q6d8er4P493TaWnS4fZWXd165sxWOyk/Jq3UtzXAqRvYGjujMcPV+lsTcRzRxPZ93MtYXmqnnHcf6AEaDuXo5VvS87bifPo7b6hG2caM0VLsEekxtBZW6XI99vbcjjuj9HUJHdRtfUhhpd6oVhrMzqME1bYCswFlQYkPFNFd5Jiu6YvEPwAeeOLGV3a5Fu/qtWLzkjUkGI9/ZFxlg26GRhCy3PQQ3MwS/wkQc1xU714G2CKslyJkD9WsOYC1GKUz1m4n/wweeDBi6K+HvGxT/TBDROkkwGnghh6zXTmRY6+qkrwyvYNBcFihgp2r0LJHskOU0ePb/DpNR2nDj1Y7HXcVt+8vvO4+I1jiLNYQ55dwzVLbOovc7a9d+ykkTJBFXrmRf79dRzc8n2HZtnNWJgQvQYN31uKoV/aDjMsnNI55Q7YTBEmjSUk75rOCnVgLBRE0qJ88UA5/vaXPQKRSOt9wfHaSYbRgi9/AEb72FmSa2U5kZZxsqK4FANUk8kSQq6LJHPLuGybmmUtNQB286pGWTpnvtWxhsII488EJhvBQwe6uY2mVPuyGhoJoMkQCjl2x/MRMzr49DBfjvNVtjw/amU288VR0TuOmQdXF5O2qTKGtDhgzhhxLCLz7SKcX2kh+gxxXoFxkbpkdtnPvU9wWoK37VnHKwBs+KsbN89pGmJrkYE1lEof3ZL22HX1YfzSaCmYOyHXKKkW9Nd3yf2HfhecTzeaRQxgKPh2AMCy6uChVZOjttsnlHG2Iijjspy9M9IKSz4KOkSSQfLC04Wx8kDHPiHz2GTeujoda6Rq8W7d0pHbgW/v0w8OeIFVVefPl/P52NWQLhEB9/JrzBNGegYNI1mS17apajdxOvR0fCOlbdBD5osZYwqZnLU3CaqzvDAQb/JSF6m9q1mWaXXZW2TW2T2xM5mV2a1tGNZycJ5y7DKDK3OWgVW+s3JOWh5XDvY6te+plpK8y8QLb9d04h1h+8ySCdD9UqUqCivj6vg3KgLiO2pVGWvEIGP8/KJ4Moks80R3djvBpfgfPeyJDi9Z/em1Q9Aea2L5PCv7pHZeT+oDTqGYHldN7QWf+2VPBDvC/Y8tFo5EbqzsYXM+CDo28KvStozVIamgNpJXbXu6nH9A8SzJfIolGZ0lpuZz07+q6XweKTU4jJwY0FZFEGLnpg2BDRzjksFJ2l+YEP67wtIrVze4yf83OjLxzCBUjKMhJb82ZwmYrJhx7kkR3NxxXZqbMoxmSwuzxmz2wQ6UDqZBzAkpybEqzSDwoRssM03uBUqSPVX3iaUW4Yxr5SyP4DHzcJZiuKFg6wVQe6QraUM6QYd4wlNJ02KrC0HkTVV7+ednqR1MHFcUOg+8C4DPUBzDirs6y3SygLFxspHj6XIsIkOXwcuiXreCpoxMBitNMLOkmh95XMR9RZuc9H/wExwsUUysM/vykUoHO9EeGxEIajt0ptENRQIXZ9gs+Q0lyKTAm+MuP07b/tgcJ8rsgn49PbDdnF4v9GxMDcaUY9DB5mXgcMuVpgxwdY+dPIofFOqkmJyKjMcQi1Gdjqe+0UEspsyjAR3013PJFO6s7L6hDAkh39CLFixvc5U+irlSzBy8uM5Hfxsu9a8fBNxihCIDm3QWTd+kjNWYfB4mQ/6Wq7Kfrc+rv3+U9qEq8ltpV9mRFUdlSg/iGzhMx0doQqR5VE17eT2dL5fXrjSqjtidSvcwpwyLTHqQkRXrCoWuOt7XQz96k0QpT7sIP61zU10X8QfQsxlMJ4/fsA3Tz6Q3SZi4awpPu6rPf5/rnKx5JRhqlcXOC/znDp28YLhebJo1AZQC66uGRInM87DC3La2ZU0uglIUX0BTLLquOSdmvgJVWqtowNQaOTuwp/l1d7sX/WMWq8+7SLswfNx8Ma1Cng+5Ph2P4L93LN6ce7BJY60VcmK95d5nBDsFRetyGIjgAgo7VUqDarNfIzR7+T7vEs0JZrJ+w21v3VC9eusATPRhXSGN+vWK2q6kLF9xv4begoudqViPYeMsqn9td1D1aCUPWTz3oD8FmO7y2Uk/vbdh6OjBJmzkgD1mCQZBEoyi81GDfhEFmcuPDHPFLs5zwXWIzXOXjdaCQXe16wxba6RV9wkcLvK2EJ3JS8UnvSprM6PmpxMXPLXPZPAKi12C0bdHHy3Hh29G/EC6U/DiWSHopTVA9+h2N/vrP5QEGY2DEPJ/OYtORdMMGzl+TD7nGkBv1Pfg0790/Mx7g093PDoIC88pE0zbbvt2mUgVnnD3x9czC1hggEUx76zGvS8wYVTsmPZHIYAACrzmaLo8Ldy00IoYZeGySa/fd8odZn8CgaGQ4X1aExJKsGlmJxMrWkc29ZXpb+SifY2I0AxyrVozuWYIMWRuIHXZyixToROKX4pZzihbVixvqdsI0ky2zFUvpKYmsa/RpTBx727mH2aH/946n0nvxqZzjrdQTF7md9qVQ0EfOLyP2jT2Xg3Y6uY+m0tkJAlHcFPDkDUaLOPbkaIbXGklXWyOrY4vq98I9Ovn7tg29QH1BToNOZ2gtmuahsDp6Qx2JQ8WULL5i4B3N4zMfC6Ye4ZaR1LuQsinRu+5CpSIQp0pp+ytzvDZAcAD8456xhzqzpQdbh1WxqB3qNsnqq23etkJcAaAtjcEo1CVsR4ULuCEwb6TPNoynfNOq9lNyNgbXuTbt71xPCZREjh5hzlfQWnhPujgw5XRaZam5X313+Z4iLlUcGHqVT5i0yK8mUBwkmzhUIp4WFUjU/Ka+kkS6vrstZDbsSAYSkyBLQbmmQ/HGsCkq2pEt1voz7DLXbNKCxg9LBVNySbZDiZgXMgAkGNGmyPz/OfTP78uP/vJ2k1GwHJHvjmMyVnjb/8dLvqp3AZYKyX3IG04kHdqj5djTTCDQgXSwoYXKSW666yZpWil7D6tc8/PtYaBndJA+T7TdQ1CUAyMN1y/2QBDT/YVoy6/mjYhNAdBzS/8njSAUFkQIevXoYmbR4+5VsPc8PVDT8eI6MGr53jjHvUwPOMFswoxcmqKS8EAV+GeTQte+qb0PBUI6fEw4n27Y8mY5uTEO5ho42ezsWpxQoKKHkBSjJceb+1c69lD+theLI1fzLZ/ILsJ1ACRXqaeHSImMURQ+9EMbCG4PFZiakmkp8vlcu4Kncr68IIHz4393NuUO7oSj4uFhYAS5GnX4A+FaAWSt0UeyFp8DeWEGd141uBCWtzwiqr2cq5L1WgqUmYbvoni/JaeVXAlKzDONuL+N5otvSACHdR6arXIF0uN8Jp7Eu9+NHpaWdbZjVb5fNNbmGaiHbULBoe/+p058essbFrDMNqSYmHB66iCfXe9rWWCytk2NurEes8KAAvK3nFmWIUZTIxFciezArG63rxESS78cQF9nnjQfB2h7XKcTvJIFXL5MKG0ryv7+gblQnk2jaU+c3CMuKifNo3Wyqp1vDbnGm031FJWIoFoGCJ8zr4pwhyjDH1FeJc+WWeP9XwJHX8Fwc5Xhb8K06aAQfOp4CF2ReDeQSew0TVJAhJJ+QwKNx0lxKdDNMrd8th38YqHXvOW3hPPaEG6oy7rqmpYQok+P2g0Z2b6+XJh2t7n0p7jq+ytmLLTscBnWY7IZcX+MDZcZ963okcuYbl+z2WDdBIvQJu0W2w8jh+252uQ4fT/3gTLBA1dKwn6w2eCxE1be5CSiXoqHrO3maRy/QNC/fYRrMAE5Xqu+T3hya1pSsMNx9dK4FgyJKYvzNYveSxw9O+1rvOVzemf158176YVqKQock6TNsSazo+koM8thDxLlGl8M8nH0hoCerff/s/btWU3iizBVvUGjLD/Bb73vzF4/nWh/N8joDfQwN2ABTsQ3oG928mILBBCSFZ3nzM+c870y5IsZWVFRkZGCqCO4+em6yt5MYgwtBCwWicMJZ/jFxmWx8zexsurHlexF0G0Dy0oUl32sgd2DfyYvaAYbBleLsb8MGEJw6/6J7sqQGEg83Wz45rnyINTg7xGy9KEpaSF7fV+h+3ZgrD1U3KZ2m2+UmPsuuCpH0C2uR8vtvOmSOFMSbVHH+AtlQo2426zIQ+ZUUR5HCocHEtPFJuRBpL5nDabC0DP3tRbdIAj4A1nEmltj8zucBPABNr33AI3Jdk3F4oKb8S9qaYZN0mteEr1AVnKMJaAMRv+1KTRFTYvBDWF6ZOLbHibvr50B0mroOWYl9hLmOwQMbhnBblClYPXhYOG213CnF74Y9b9avGJJPZHfyh0QYvlzlsSfjHSuN1xsmPsXhHWy3+T2+z4hnjRnS+1Gt3qsuylyiRIbZomaaIeIwkYjQKxU9X1Hh2WXENVyoef6O8LLBneCIy6g/PbYm1eAuAhdSwumyr/tlT3sX0qqRwmd1AoSXSlceqCD1XwfqT5lajP8T/o9F9yNYxlisYLhxQp9JIkulQOoaueM5d78509zm4r+hS1njTQl4ljs17g7C4WcwuoaIN34eKWLCwgvHzsTBgP26KxVmKiHKBAAH4zrF0TuQklvE5aYRRXch5jc86M2GHFxOmXXLuYtkImSnm2A7izpJrTBF9YYk8yGmQG0FK3zR7OWqAIhjthhVTjCSbq3g9ts8eoLaIGA36RTzKkrXE40G0BTer6++b++4Qd2LgbG3rCPPmx12bRS1M3eSzlqXaQKIMLXhoKmDGKnQxj2rhGyNs5+tr9GUk2VxkCZPSQAOTL1RqchXEBwRaCLahS3RzlR83Vtl/K3N2Qw4ajafUvrE4ws/E9XawJt4OTj3z09h8UKpNqZianCKILrspDBEa3UA/BjPVdnFQx4dWOoPEmAwNT9BF92jJCIKeaypDH4jsCAtpduFc/7slbna+RZwe3KM5XwcnDMiDmalyMyVVVjb2aEtlQXtatVHjoKyPp2yxnJcg4lIe2+BB86DI5uTEwKYL/cRBStJzrMi+omK/KBsViW0kM+DglGclsuEgOn4M63wR4lNU2cAWEFz4UTZUjHWe2zuvc1qg+LSAyshqguqs/jRZi+OEwSokjOfrQoMIbiwSsogDI5jObzWK3RKK4LjHwUDR7HpzFqbvnu5nUBVpAeateLaehlnZgUb+Xpek4O0WT5AXEteTqFVxywMfld2tfxn1Kl4HKDcOs4TAS6VxT4zi6lckL/HFoDFL1CgHuni18TCbskXn+xqHEGRynPic/z9QbmCzJp3zqMSHlVaHMHOmBFhwzanpNouxTcitOko4vKCcrBnih0IPTFIGf0v2TWdEyt8l1bDHvVGGyCSIj9qALreh582UMSnBdPmBKlgNO1T2Ybna6Gyn8gMvlD/cEDPLaqvE8mJgSQLRV1iFzvPrQYCpQXmbNW0J+rgYKlUO1XXL45mYJ/qtXBVGr04HBmgJ7WAAAIABJREFUs3/+fdLJOg4SM843Zx2OeJhgctXUEVlcqCAWGV8uox3eM9fXjeObncmNo+dWs3pRAKsbL1zf2uIOblo4vvAStHzwFJJZNwupRdk0eA2DEzXj/DMI7xHU0WIjyZWFnFb2VYhgIWRf039CV5RhM2ftWBOmfSqw5Qv28xT0WcmiMQO3hK4Dw6PIkY85YFNCAdErrhq/KCGOL1BZxnxRzl4EhdDDFuNLKuzBWZOT0HbdAbAYEPRl37XtT8mBEK9A/fwkZeYYlkECMF0W5OwQ9bgCcOvXEMyiVC5q1ftLeaucxSyp4X4SIJTK7eMYDPNcfLKt7nkzCqfSJHfKr9ldSQicJNFgoRyfbdz0766xYwu4W4e705FjuBpQJpzZ4arn87cv/9KX9lYuoyVatDIANjO1g/17FCmtzx/VL4rthR+YK9nBdaFvkqudGMsrJ98L1R+sGQdGOf40VJ0gYGLOTqPKApqVkrQqokDSxmPqJFP0wcf3IJ8DpbPP7NNPwVDRLR+PXNly13NkCpCduGCYAXks2yovC+7B8Ogt/hhnWxUV+1ALVvg2EEFxgrs+eEapKIXiHiMJVUlD83Ryl5JVLlKX6jxyMuBMQN+vXTNwlHqgnsGxm38oOqkJWwiMKSsc1Gom5PjFcFhPYjJE3TBJvNcFLoZWncvBYMzmljQ66lOHl4EYu/t3whlbGUH6RXQZ/YVn9SVt2eP9t90sMRz5lcd7qLYB88dokcdeGisu+k/ETHDVMGmnY1CUrdP5io26SH5Bu5UEBIfN4+cq094iTsQOtnC5hYS6QeTLB+Xb3VD32rJrMaxLlrslOsliWxG/l21/AGLIMD8lMBoELlZOjGBMztoTPnTMTaHajB2frFQbmM9zjMcxzBRyOj4ZUJHN5DRsNo7ifBpzhZ5zjDcUu5MaUs6th0kIx+ExG/EdhCWBAoPNgq4NZOyQdExqPs1x/qeGdxfDeVqCTlG56juu2muYcbtANLWHJDU9+fMr4qbT8VjmwVt2jqLPgkTmhq5M8n3isGFIiz1tjnKcxa+/froSxkDA6qRJ9aDYjLUxgWKqbZQa4D/W0g1lTYA8zWgGbghpEQIuo/4ZgSGTv0h+IMfKQ3T9x8fHe8+HsRluefLZddcfMK8uh6LACIJCeS53kVRdpZh/kZeSlMU6iAW51Ds5/BELQ54C6Eu6vpNfNl3Xv6KMzFB17q7KRzjFvXuafihQq0wgmoHWzgk5ddRlMkq0Yt73BcsrdtO9m4S+5jOlkrt77u9uurdHRvpmtIybwDstTMdthqE+6SpYXxbsr444naghik+jWC2/Rl+Fc1OPwD9DvwYigHShZjBH5h0smqIy8135jt3DnfMT1c16JNqe3N8tvn3eD40fucqnP15gJ8uSwU55UPEIImZ3e9wC7pp0mdtSQrI3z5KEYLbkvU7QbCFlEjzby/cf2kP30aNZjxiX4AbS+B5Dykf/shwDOaj7Mvi8J3mcgpy0rsuB3rOtG3mIt3fMXqF8xNgK61hJ833bHnaYZc+3V/MaHUzWygPr26RC/uyI5x6dVnGy5w/wRNGECsjrtlLiKdxsbi+PnBfwf252hx+EJPENInsGW+qd7+nm+pXVFHGEF5bPr27VUmloY+0R+beBK8Gw3GKwsUmYxhMTywAzGQ4ZAHuOSTxTZdqXr7sQBXo6aYA/Ose2++KMdpXb9cdrpGB0zuc92mp7jtxC9rk1M6qjqQRC7kAk2w7kRjJN7JiURn/BFs0rLOewbjXZ0/2i+3g/qFK/baum3IPxrh3qIJZGiq1KtPQzWzNca3Soc9aZh55fLQ+JRDNRNApBFIZlv6/zq7Pz9yx2q6G9ogfa0TiDTs48V/lwUidfmCxAkRFjwqzIfxOPrp634eMvLklH8GAB/DVfObIj3kjXzpbCLSw8POqQzDA55ftZdDLueGNoH3cgXQUzwUCYDV2NtVka0PnvndHFIg8IsrqZpuPB7hm9hvUJT5Wn/nQPjvZkcvJ5G7oh6fNGZxdFOHSGibOhKM2dZy80nL7uPOKQLmysfMosBEmDQAnvU8vvahCQNNBrGZx994b033Z7SfVkDvdNg4E/1nZI3PA+evvo+h72OFLu1YJV5FxUOyX/QEcbJNH27V1ATXROIAeeJPf+TWAPzgfGwPdsa6MC0Ktu5T9JRYcnpUuJfrTro4835mwDRxD9kV3wvf3FeD5lAc+Zg2H0L/CjmXTuCJ/NOchhWyacOqlDDEUr0XHeMb55/sqMzghmQu0t8h+xjxbfxfdgVQwTIyuwPeHzNEWNBuYE1exLZFlOkG7PORwka/S92CojXLXsEpPd0PZFjRVo2gpsu67DlL8ggdiXQgvAQ9KdVIBA1pKdUy7iSsq3XvIqI4g2A0x2HfFL04Mg7rrDATWhRFm9b8jBsRZtSL6x4Si5l4cAHb5QB7KQseVVVqkX+FrPSsKtcFgOvboP5C7pBtBRa1qv8qKiaECQMRBqVg6WNNzrVSLp4whdMcgxf26B+/tLr450tkbd0ZXXWxqMmSie586jOgqVnjQMz6jEATLfqIXWrn82QuxFwdItnc3T3z/afFrA/G9CbybJ2BF6+PsyavNJMqBHjCRcMdgkHt6kgMthcViWkkAZaw0yay+BBqkevYNT1/91/bmy6T/6XqrBQ8vC8F1iDfSwBKtAD6blw2EPI7M49qEMRbxVXONasdeeMWd+fDAxF0p6y1NncYrDhzhWFI1itEA3Dib6EM5BQ4jX3rqXuPPUvRTDkLX2lkIY0oHlSZRjbHdJBAV1AA7/U2k+gYDqLa6GuJlfF8Mi2d/w6jDugqfcuFCsF7kNtJtLhHC4xBFzLOXLVP9sLorF+JTeZ9xK7Dqg4UnDPMtS7489sP1JB8uc7OI2g/mfzRUlzeeCR81lmkb3ZbHj0QgkI8K5A5TCod9jcCVHVgbGf4xfWonZw77Yyf0AOLZ2dSs6JG8MYSyl6vp3nAEMltcKjPtDI7Vd+X8JOInXd2KPHhDZoXR6Xb+94yHe3mGwgUMlp6olctZGfQUg3h3yTFUe/7B2bdmNYknQUBswQv4XyP3fGLQAN1D/1QL8PecYVAsYI61gLO3A3u1kRF4e4qFHz/ijTpWtsh4keSMzIyJXZuAB0QwWUVWwOQMEB4U1Jzu3KKVk5GypIKwx2kAJLvvB+rs7QNdkEMxkJlOp5qnCrUy3wD6O6Q+JGoyqw6jiVByRcbuSMgluTGFsp0XqdGggrufcNLbrQlo72Ofujp5BBvZlpwI6is5NSTzdajU9ufRYY11J8RjmafM4xoLS8ftxk3aiaEdZ46eR5OamThGTOubWaqyu6pJMnCyVz70lDnuQE6Kgp/TDXicYgVCaYsmFiQJXR1pWVGi3Aac1nwA06f1RAC0b2qDkV+WbhLLgAknq35/l7nAE7EAoH+UWKTVCiz3G2ztkdET8iT89HpTFmaj/ZsBN3axl5aTYf0gov31+nLPyN/mu+n2EcR+eXCCWYI73F38FIzzjrwLbXaczmVcU8PR4fimMnj5uwy9RX9664hGAbWASrGx7JGAGNNdcm4DazGtWprlRV5Z0Bygtoa7GNJpxAM//UNnXSKK8yRmH2T907UUQwg8a47ah37iXR+cU7yTTh4gylZBSzErdOCY9ORmaDJreH55/ncQrNTfGPyW7KJUMBhdpooB1r+mvJkf+bMIFzbivab8QhPynQhr+CIIDCSy+zjUW0Zp7BHn5+0vSqmAJBqrgZLi+1DvtUXzKA76OzMnoA+4/QOsOcVNIOj5qNB8Ocjt8fRDhnu+vpFc9TDgd9RpP5O1UR4wklXMeNbzOJCvAMwGxBZuqUtKbHllrbKrzZT9tfP1r+A3fVTU55i9kiMGD+xVzmFUPEdNrCSNRqG0BnLIRkXc5ZXTVDlyCy5OOOLgvlDu/l2aiYjYyv8x2Km68M7qJSztmWdx6wvTdrBUoGKpWbwDeNMEJxrPB+inPJIWQysA8VmYR5hc4I2MlViOiYVeBPhtZEEg/rRQUDVmdoRXlduGaWmndGLphtO6r2WclKVFwLhEtuEBAFqYtVmAZ/FH7b8Tj8tDv7/2ecX/8+uaXJmXk7z0OD/yMAY9ar+TpQeMLnVUicMqyRAKU++zXynN/YicKxCrMiu0J47KtIm8Tvuw77Xyz6Ft44ZQ/+ebxShs5ndBh2fyc40S72kVVjKUW3D5gR6+zs+Jpq0KNIOfOlooTDtZw96YKt1effit1nSgUpzYJXKg1mkeiXnGD3mCmB35082bvK9Ne2kDICVAbydWM2DeoijMGv+IQ2lpo0Uxqel5yToJeclGSG4l/ya/tXQ8XcYMXUOzlYId9C+63Yl++IkeiwZxnCCsfw0OpztAfCyHgKKt69/sEqMEgBiiWv5yAjU9f2mLmdxDmSNcnBri6RKIRjNk4UmaS6oA7l9yLBAa/jUACu72n+V6oNYxpByEYBz7ASXdq9kfRbUZ+v5SfNhNO5zSeh4zTpULOAAQa9PR+rWGuR39diMIwHElF7nAab9YiCnLvN4N9J7i3w9j47YOk0LSXnXvL12Z1W/8rnEPS4N/lkIeiS9cRCoOo4Alf9zb+cO0pznPIvkJ31F5fj8wzLVVYCexM3j6R0YpCdVq9eKYZYdXSkzvLPAutrx1Fhtwwabsqlha8jVmjJO7T6XT8ArIwWVki7mdd7BSJoLG211g/we8DfmMRjhf+VPE+BAkldR6wOkODBHsiiFkg6GY97tNgkaIeRb/qwUFBFCdbTXlBmVg/K/lPv+Yuc5hPimSttNHC2phB6sfJaTkQnqnAy4bhtPnzMtTl69dMjwC4YaeJ1/f4p5m6P4pPf4yZpwcn2v0bcP91KWh4o6+13y2ekfhc0PSIvQJo4VkEj2vGPImn8PU6f10xH/OQLs30gzxMibtsaiS5zKYX5gIohkUd02PbVEzwg9YkHmnDCfZkpJw+7ep3nKiOsyl+fx8/G+qRYHfHxcEAfH7Q6R6G2PJncfhPVlQHAhFMUHY7kJRO3wZ+SBUIlgd++lkD0NTU1Shkqd4kwTObgxjCKk1XpwQauQWcwgToQKKmTTmTtn2ufVV/gZjoBYVlSQJoyi6jfCmfZFCR2M6ch4F1vs/DR27m41bOBqw/mvHmckhQN/tgJ6srdVe7cIUxxJmwf3Eo3hKIeOgEzph76jfRsujl8vPltEYl6V5IxZ5zhVliO3o3xhce4ytlk2+NZyzMYGeOkGU7jH3O4QsWc6zg2w+6tjAagg3E6Ly9gJvu64BKSPOl0qOOgmXajpIVNgLLUQQiYOv3wGELxQwECSBgRAOqBkAw4E/4Jkk2CDe/nl7DAlvkPgU7IwujjCzyZgIOf+aaLA0JshJ0PVXA8CaAkQEVjlqIItg5vtGuyOEgN0KmRWL/0Pa9tIKBgw1snb8id/mbN+R/EAoXPOahDcSNUbZyeXTwZhwMrPTFHn1yKLd1443H3qZyPVjRxOHclBBoOYpHSzj1/HdGc09Tj52zkDy9cT13yP037ebFBE7x+lvjruOaRuvYM1HVTV5hREx8rT3nwcuNJHW1lqA+L59Ktk+94LTUu4DL8dgnZdKwYPzTb49vfs0/849iu8y5mlZv6OUWE/OEK8MrM7GuK+1pfLL1dyIURou40rhDFmXjDug+09Y04Ag0LNWHJNoy34NSoZG43x3q10fdCpZo50b+AEUDDeOPXMEULJkI9uEWXKiDOUxuU3IzGp4JiCPsbVTZqPLzNgdYmMY0PodXab6VY2iTt6yrfGdIf/JaYcXQcqWnLnA6BYot6C0WM2yGfNxe4bF3QWpqKTu6zcs4IieO/96QRID0YnhfOL43X/HeXi12o5lmUVdw4y4t7UgrZ2jVjkuXgg2Tohqxhzbb86K6LRWj/pHl9XPN8/YC34C4eJ2WKn12llWqXWsJBuisSxVlJVG6O9aGQF3UeVKYLkmGahEjD3Q9yiSNA5KZ6asuxVkYlXFUpeXuqDLGkioBcJ/hVCmXLEb7jVwODj8KiGMW4VmB4zEIO4YxzwzQPM/nHzwrYs0p2iGJ5PUwesH+3raSDnj40EgcXjZZnLAh/nn4rONZ8Cj5efrju3BtacvdlpbdJPtKOFhS611Ugg88j0amMfb/Y8fK/zDtB84LuwlH8+0NwtFeWbSf6DOUthPFwmSr3GmMjX9k858eVAEc0G64LJlT6j37CZGueVHSoJzgZZGB509RFYV5igEwZakPQLl5/pNcJEQ3pznVVhKq9it0ZIhJdLqVAoqq1hKsJnnzC0im2NeQ/1Zw9n6o1b6Z+JzOUlAIlFn3PgWiASb3IhBaeHRpBKs1jrf2M3Zmerw7+qpAq6t6bSfCGQpAmkOwTkPSUV9tTYYfrQwobLm1H+Go3c89ZGfwEaJpUvHMgHtsyT8gcrS9t5mOiecYH1v/vvQ9+Y7DkUG0CbT205dQ6jWdnuN7fj235axmC272odC+y1g3I48d3uF4CGu7uJE1Y5ZQyKH8Lge20Watln+RlL4BW4KZOqaJlmDqHameGum73XHfDClBFUFyjtEHDJlQ2TKPIPFG4YYkC4SQblOVo2MWUxadq44PbsZZN83NabtwPon1SAM0pd4aUjBiF8fddFgj722k6xGIcKwlmRHhqHoLtvFSNJd0lTDsCnXTvo23YPLVTS05lXVpEp+0GrDnQtf2JnGx1ffyGNrldtakuuMtcN0JR6c7ozme0fNaZwS5ZeYmBo79iO98EstNin9PYza4y0jmecV0OOHuqODhj79ZGg105Gup75zU0QUoPnsHu5IlHcL3I4kKuWiCZDHuMHxnqRpREBRaNikJ2YWNmRRoEYtGefcpdYVSyD42Lxb9t4wyV/ozEb+XWasWRaO9TLsUaXsJ/J0S+vytzmdVWD2z4jkFPKOe0NW+ZAGJdTTGmBWSn7SxgH5hbQ4atJtkmSHPyl0WGHJEFykc4sa39be8VgXeisP19ugvqwiHFgbttgnzLW/WFrdJ072iT9187EFYrpo+XkNZGv06G8roZvXs4p6MbXsXzA6s5BzUP299Xa9qnVfO/i1b7OzcHGHnQAvrU7KQPnlIfFroP72bjm2/oHd/Qqv1ZELC0PPRsiBE2HpqcSDpryiTXPtqgCQZw6SUwEhj3XW98NzATdFjc5oRnzzbjn0MCkI8x1+GaaGDI9DyYKCB/SlZzKsQsuGdq/OM7kYRKJEEzIPkkfeC2se3UF1TF0yFD0Z4rJzlgevdx5YtCgjOSIZmjIL55JINGSgpI4+nx9j2ypaLkpIneH2gYYEvnpeNjIvPlIX9heCT573fbDV23Iu7L3v4QXdquuHLpfaFd0Oo9ueEVxkol2+2H8mwSF3HK2y2tBvyLtuYNMXgRzTLD0DdU/xtjsqo2zEdVUryIH+i1T54P8tFNDREWEuAPVrp72O9AzzFqA6QV6rCOnuxl4sHd1MAaUvowuIxU6NSUKTBeQiiwG9N5iM4fgQAsyuJwMbkyI4UkCcq1MnDkA0as8AeqKnCnVOxOuVEBTISLPBOldrlmB0e5OTHPSe0dURDJBJbOtjMWYy8xuIAlnddDbQqHFeRQqzRdo3SrBtC49mNkkYKARqDOqIqu1niyr1icdoP1NX8y5je1fLPidjD5150KGQ1C9Iv3mxuMn6jz1s5Rx/Wj1pp4MLFrWwR3LrBFBxwuMLURa7PB/dBtbkhgxs/6GkZnJIWrUrOguFsNFwGjCZKtgGVPjMjMEdws6QxtqXi8NGLzHzu1X0TpOnS1eO/rF1blptIEhVZXoAAVX/z8AIKAe5fy4D+uwX4e44LyQuYElrByF7BTO924kYkkCBUJZWt06fbrbJUPJLIGxE37o1pHduJUJ3cPOrlUuCL7kYBd9kIguuAqta0KSAjA+szFu0kZKIFjDA5TNJP9xm7DkqVhfeAY9101jCwLNB7LHtIE4D2+Q+OJ2/hvVEmAXlkn00a9e3yA5np4AS15VmY1/KwSfzVi1bjCq8LhNJ9mGosdYtTWfcLjk6Rs4F7X0EjE71J55YA3XfYFzKj4l8Y1PUgJxrmsmZSTxEEulzRZZYWMt3BTmuc6RgfKnsMCSvsw5ECWCXyhsJOEjRIkPT0D9S/ROy0o3XAQrw9tXspy+aC8PhMtgd6+3Q+6jF+lysLXEPO14uHr01N2Bp0PtTlXrJYBslKaDfq0/Djrsulv4HwqePKpoK2AERBPDyTOQsvURyuD1JjrmvIbkAOASMyRdNsMHuizQRtzPPW3IoBA2vNHSXNVGFy9LExheR5mvs45cWp4vNsCS6gh7Zh4Xc6uERzZ3ZvDpXSI0o5PivZwRoMPtZvVDaUOyUqBSa3zXurEz4sATGSnfGbZfFcw1/OgO3XDw1H4bKHeGSPYX0wgCDddUOgihAP6B+7nzfsvptlR+bK1DKvXMky5CWY94ZMTqD5N5Dcx7Kg0CjO6bw9Y9QWFB9ob0EwpuTJTxkI0Z26+oB+9bl9XiMfAJtPKgEH9P5omfPeCBfWaifA1cUAiJ9kdXtCLeKI2by/QOeI3MinB3apkojDkHs5s8tcW+0LryDG+6RXeiy+roRVkHFWeTefxQiGqXydnQolfCzplUVxP6S+A+zRFXm4GIiWotYo5vrfY6llKL2hLXWl/uPRyWZx8fV4LIWYC4H56kaIoKVBbwq+ytZzMLoLN2nLXTEpYkR0EZKHncRyvGHNzx6HUsEVoodWkvRGiOJqe/uy6qKUSTmZUTFjOoKgwIrNOIc4o7iGVLLEK8cxDCkdK03L6X6VCpDAqIVmPHsmwBL5sfp0pOx/jV7Osu9TgH7587/oimzgJlRT1G8YA/M8LOqydbNvimodhFX1vFzBY4VyPgc9YE9b0CvXnm0jxVkEdyM+1TDXjIQVrDVZ2mj9gZYRCL0hrVgklSwcfWiKrstkJVD6hS4zimtgKGNS4MyC1X3z2GNvin6RR571dydw2YsRP1TX1qhCWwTP1IDB6J3sxmLWPUii27n9i9XrBf6IhhGYReV5wC7Lx9ZFS/V2FjnjCDqjtzfru+K/2iSa92FkfVJ53EIgTG2txwn9+JIwK+4oo9EYIeMqozfts0yVyKEBvW8JgkRL/Us2MoJRbFxCzv+md4u1y2NZom7rU3QH04/yvbqkvwz4UVQbhTGLICS0GMZJtJB0h6LP8mpnNItpW2f/TE4QnSBcU5D2WDl133yjp4LAdkYny5VvnoNBN4/nBDDMW0jnEMVwPO/0JQUTrBkflPmEWQyTxmrT9ZdYyJLViIOHztF+zA7z+ykja2VcNdXfjfe8giC42uB4I+A7IwD7GojBYavlnUfmeYF3VXS6X72j5av8d9hl+e5w/UJDHUIxqxQcm16q0mXu5vDRriGuGdB+nFZGw9HnxgbDT1rPzeBQESagbPIAN8FQDHX8yWn/0M2g2L1zErRWNukaw8Nu/bKGnKhDOCT23CSjPFGKDvF12QwP+w76MPqYA2iGSTePifyHfYmO+Gc+VFimsB4Y4BQdMx2vFHk69obPssScPfxopTOXVNVE7BKuWU/mMtE6Bftnz+ocYyuuIlkaNuviEUTw+isX8K+635xe6+Ll2qwiu1VOVN3bv7NsHvueBSqT1PDOB0vq4v1Owfm2P2LyvbER9VxI7q1M2HIKMGCv1ca5FVcZIkIKBoReoKT4yRaTO3FbZdJMzXK6e1o8gUo7UqRiyyAYBDL1Yb9Ld/SUfP/fcVTGc7N4s0iWQAMp4jKmtehhwWARlIJQ0ohFqyh+I4nCrCSoKpkMi9nSJBPM7af7w0tk18LWUIofEShyYEa7btvnDUtqlygOSg0FimGiaMM9eFhU2DxYaUorPf5nAplVCA7gz3+OO4k2ds4tbjljzBnKSkZD1TNCUyxjf7cuM5Z4jY2CkvLHCve3tEqmG4O6FrItyrEWi+ii9CwdwSEzdN6xqpXRXRwImd2YljtGR8ZLl0DNIsYl+9MvyliHaFbizY1M3Bz/DjgBlWIe27XnedJbiYQ1B34UAegHbBzHY8557NYgGrfnjYHDApeys51dMH+tbghEg/sjSniwCGfDzDyCRF18i9CUz6y8A6GeUojcQNES19O8bvf/crsTga4WPTJZEDvyvDXoaK/QbyrQlTww8+nQZISIvp9bbZKUiQJlKRxoCth/Hk3KnCVnuj0efnKXHfp19bE1LrXfVeVVYgpJK6UVhKK3W8TsjzdjeKg61ZsrixlLsK+uKTXh64hjps8t6yFEdivaWVjryUPxWg25L8WZ+8JlkW4S6We+MZCejngQRZwb0r+jaEp+DeLyckLtsYqmkJ9rUxCZSP++2C1cmbdKxOxGY1v4xXMVGw1qhxvJuPPYffOvzzHtAM1SnwIzGMBurSC/SHv/ec9L+rhzmXJpQaAJncIyulRlfzUKuUVeSeYGt1fu09GHrTLenvYNZYhe38IngJ75MRABe2eA9nmUz0Wc/yB1RU9zhT3r2ba1xhcmXxoMkfMHuhyPZaFw0lYFm5XtqUWRk54sfyTiyqZwXsfiGu+RQ4nNLGSNtvWE3TyiWcktaLrOg5dZAxTV52DqokDXJ3ddHUBnEH50S1NQ+c7ooPl4Hf26zBldPEs33d95VgdtgzO59UDYByV3SIGwPA/HahAu4xJdXbOsmzayD3oqRxmlKCDgHcsuJEjDtj72t03RHFB99kXXP8vYsS1ZE9Zw42pfPS0s+kO+VOlGOEBZAkGP2I7seyAfb/TMDxY/EqQGLMEcllso+BMo2TkSDQgS5Ulpbzhw5vQM0tvpepKZ0MayW1pFlNIi7pu/QZhzpFVucTqy/AIa3hqM/PGk2TN/8dUrgFtG+2FndBpe0XaVEpvWx7e7P/i8a+bRsMU7l8wfP84m3GgA1ciZT7cMo+PFK5kbtnjvXSIIKngNCV+G6vu+GrU8EcuEh002Ft8Z5uFWbH9WGSaFYSU5kdbxYp4Gq4rGkY/plqKESrKsikZkAAAgAElEQVRf7KGWtMNoiwrzTsPRLvD30+8/2kP7zI0SKH4xgFht/NxZfMRAbcuyomUUrq3YpbWY7qt8e3i2vcW7Xqbpu1qVMW/0vkP4vmgixP1Ol6RAf/AzL7ISazLyL0WhVrQe7YLgD2Wca6N3KmVC6+v5melHPc2gu5Kq45ljgLEdifTCidZj2ZN7ygfurCyeORLFxShXj8x2lWfnLWmmadU4mLoL2u+9D+9/Ba81aVyZ8a55SlAL0OtOSq5zk4/9XUBxQPHTm+vxDdka4cleavECVmBu8lKEf3KYoByghCF1KmyqFSstQ/cL41Ng8pfbI0dzl9c//e6i2rmZpx6baAVBRpvCO0Wzoim3OQ981C/rX2niAlF24CJeqpVYcK8Ixu/QKReBQbp9YXo4l0JvBpGlrGfseFKI8X7hx8xY0gutS/Dp9GIuyz/6/1H9WA9Ffi3C5PUJC382zKN7TuiNiKVLBK47+Bfeubmpq6XjX1+i0uXpbRRfzYRiQ1p6qP4xUC15/KrkIT5vJpIxpLR6wn66GbVgGAHL9lhyp05xfQ9jpG2rXShykI3bl7yon+ROVcLwpc1PTBpW3+Gq2XAvp+jgtkJ1OEsoWlKIc8BR2BBkxTgIGwm7RfmrUWFIJBUBGwBlGBrnaKF0ejfy009njFt5C9bG/tTMmJDCzWj/eeGt6L+mQqtE2ofDeRhIU+a4xKfP+jLDZKNJoJv0xTO6Kk7HmJrel2Q6huUm0fKO6KZbJuai8G5az8GQpjm/Myz7417OxUyjsUHEnTSG4w9Go9Llbdj3bsLSmLx4h3zsqk8fr8iZpE3G0BdfmTEbwdaGp6yWzDoai7B+CotmZ68ARz2PIlsJL+/vPyjR4+oCjO29bifIKFrXh3N7eoEqLSjNWVqV8AkCFemdsrGT3KQzblRcF8yhgR/m9paWdFIZ2/cj16XpDZe2sW8w5pz2161ik7YbglLVJjVH2JQPPWyVno7dA5KabA4LfUPo5aFIiCwFbkm9ODptegS5whkc8WHtjpyCKDK9M2J22Z3L6/ot3ma4HEGN3xam1WU/m/mrI94/V0JmnDQUazlqCZiFUtdutk6ooy1BAl17WFi78e4j4/BgN3DRim1j9f3RVyBlrK1/yUP7sglWnaIKch6r2J8ofIW8nt2h+GoBlFDAOoOOD+ZNjpnSIkPas4OPycb7TVeS2xaewr5gJcgOrdwh9FTnxllYWVg38BmO6BhPzVLFxdQs2qqePgBCW9UXv3hejvEwvV23L7jgYfFtHC52dLl0HcRjHoBVZ8J68iR0U7adXGCr//N2JVuOIkkQQq/vkkBzJiDzrgXyPEpAfZ0sFp37lUD1A1rmC7L6D6b/dtw8gh3lVplFX7pykZTgEWHubm5mSzSDlKsMpMg3nxFZLQ7RzUNthMoh2lu1nA2Yca8Q8/RvjeSKzEpardQRoj3M+6/jqr6tjvK+q4Xeu1V1otGkoc1n9U2DvupJsSmsMu+Nw9XuUH8i2WLUYL6oTQ718qzY1E0wO116mCpMp2aQqjpc9bNw1QZmOZ7irIiZS+Kj451iR10gvlefd9jx3Czlrop5GtEi80ERycu8qEOaDiaEdBhR7viv8vLd4RuQtrvSZry8TwlBmfkjIfE27nAZWE32MLzNevOZ5p+n5kdpf1/ykWjiZEuVyQI43dG2x7XJQqaaV7yRdLP6jM1StHoioxE46HArzgXnhBq8tapuUtasJ/nSMhHtCduRiKzR8rwrp1uJM6ilX3VG/XD4i/wTbkNYiRKhAtpe14GqhFb0466fEurM1Xnpw/84tJoi0YQe18P1u6hSfAu+b9lqxr8jlP8Qpk4zyJOX5zKKn+4o93tCy9NfGnIPHrxxV6Qbf2186oV1TquFgA0mGx30I7eAF2Xd3KfUQRDoSRE83zAfNte8/cbDysyceEmhPKOINglZtfsiDEPsIumFCb1kqsdIVHXZguK22jUwVxlzTu2DlVVhZm6bzFct4mklP3hTxvlDCdpsbCjGHIHpSi7XfaXOIYQ7PorSpn5TUK6s4c84Te+vd1V/MAZlX/cubyG21F/q1EkV3NLOxzfr9Myr9P4Nb39hPwnmhKKx5xqTYm1jfIppw5T8QSUXTeNsC/waJ1O4Z2MGLwyOhGEp7VsFl3RmRLQdxnRy7E+4xXeXxIrmxudfrs02zUFWJui3+xTBdpzXA/BBiL7hnDvea+eOQnrrUlTxkLXeqAk+pA6lARH2WVraXL3UD4e7JH0bWRs7t7nJtEM9hoFyJM9/uZ3nzb72PO4TstQYfXk9em73lOKE26FVWmMdumElpO4mKD+9TinbdG6SLt7ySBwpO71q2S5xC/kmOZpWe7spekBO4z0DM7apTCBX8MBKB+yvuFq3i6qzMNn/PNdWwXOQ6SDQVeTM4oCZ9/Hvn//88wzqL38uevprlP1UK31RbmUU+ikXDjAeFud0/MYHvN7DefvmOaL3Xjy2I7y4pHeSwB7YQWt5Dptguxdh0mD3XESrIK+4RGo+BUv8/hvOKtPPL98M1QXNy9oR/PhcrCz6rXpHt7JsPYwMuSuiMhsaMbm2KqOqecLprcCSVu+0nbmyg2nxfctatZvMsu7XrXS/rpLXrNvQukdjz3/dMaNNIG1H5UczTEzKvvdgWt0tZ2xsko2J2NVt7z8O+oWDa69ETF/3joleixQAP/753/Oh+Rh0TrusD8Cv/lAsvRj9lWJT+WyFc/GAFzd357W9/apafTUP7OEsoFhOuFmYnwulboQymo8YFHGcQog83GQ6NRQahAXTRQJi88O1/uvMeo8MkDnTCVRCTRXo90YeECT37iYeeijzWDXmZ6AGr50nZuMKA6qH7LxQ2mAP7tk4r6KLPJrz32HxsdYw0GcW7T6IlmCY/f7fDClRsuNma26XUqy4AtBCIw9rfx6eiGLHYT/jbfj485I04xUeJYMeTw1yxXt3cAIeHkmnvsNZJqVr+CpacsUqWhtfdk2qINqd6f8oC5zy+6OxzyGNvbgk0G8/+iHGrg5TE7mxWuScJp+mD7wIJ8exQWI6h6QV5ccCdhO309og/w/nKdthbcvRpUCQteG3GKXhF8Av0aatKbMqTtXYM2Cuy191pIs25pUfiUvx0QXySjjLqs7eQ+VCSr+OZqsWAstUOaR+MMqm2oyPp+F7iPxJHbKUAQXXS1tzhVJCOuUL/fS9sgjKMrQiP3EWj3zSo0mXf8crQ9t2anzhVXv8PZwh7xSU/G/6kyB8p3idckcY+RJiGVv5+QlzpzULwN3sz1meMHApGF2vuzfyjoJUuF6cvXzK3PEBJ+NkuEnjZvhxupprqx34xzqfG8wDbtBGiyW2YseZg2vMQy8V18Ptdl7e0w2YfWxRDkT2Os2XWtJfy/S0uc52WpUuQHHjE2o+k9LqWgZwbmhn8WEknndPXI9Ft43Sm9aDQlUAc04ua6xH++spLrfgQIfOJKmUBSiXNMSiTPxPfngvRPSixEr1cq5BChjd+xVRwk/cRREdsQQXR/5jTZ4Q411mF8Y/TrhbdwDivbIlzh+mCVidDvnwStmYuqX52joQQaaryoHc6WxG9oX7i7dHyPFZKzGmUeDOoHbCmx9zTetj5N3h7NTlDqchmL5O3x/V01Plu1DrUDvODH5mzICsdUhbzdfJUGRebmppy0W2itNZNrypZr7l72JBlG0tSC+DPUkOh1rmEuenNT1EgfllB+uDxemZckrn/zpIt8ZXX01EF0CxtIDZ1lzYJWwpVDpKHzFYih39wNTcn9Vh43qsKTc1M0fEV8z43h+qAOzcM4UkRLdS3b988LyN7tCQrvKHHW4h9JoJ+0/r7vFm0ye8v6tW977ETLaQQvOh3oEfWqRr2RBh5+1Mdbx16Y7KHWGqCIPvTabpZ/W0j2nB9JI5byvpq1tm9u8vNDRiVrBCYU4Gz9sxy80JxbNgBpMNqc9183QKkOpxnnOV1dyfZoSn7RykCjOe0vvNldWKDMrECIq18fWXV+134FpNDR6RSdVSLKBzPuV1uMqmRoD2uLO4PDXlI9TfDtjYKfNbLxJ9U/Os3dbkxiFDrdvHzULJRDi0g7TvuPSHGQRsIaRCRvSEO1WL3vWK4eFHyBltgCHr494aqKJXm3+7k82fs85cq/fuhK8r5GBQXFRjkkP8wV4yTvt2ZV26lofOXBzBR11RlPquNzxFq4244eZDkPJ+hF2Jzi+Mwc24yM9VEx3YA/SlqNzq+Xv7esowi1qqOvWS5ZxwaqPB8Gg8FFPjd1yVZQltkhmWkB26rP1FwOcw2+SE9lFQjoqpmWBBb72WCqPp5+UV5XILA5LHvyrIlnVAsx6ClfGtOofxx1SF73be2qMhDH0jFO0E6duN4q8rMI86ky8NQLmz2YccLIVVN3ctRxV12F13w13O1lauzw3ZHTF0jCFOEW5vaxa9LvrYJAI8WXtYR+0Ivf4ZDHky3j0nAA09Ae5FqZrfKasN0X+OYw5kdLmjMMkfGZCWGj679o5nExOYKFe1sp9nMDiVyB7Ekc2MwAf0PSIfLcaDY/yey6z66l4WF4/q3Jdoy5sEe3inTkMZULDfc/8knT9cDlwDQboc+tl/nxGvcO/4+xm2QtDuj4+XjHUn6wbhnN8gGz90Jv/Wp2RE63uLONi8aM/m2smbDvoGn/b3zg+jbwVkKSLVDi0cXeHTvUtV4J5JhY6Z0+cKTHx3oYvbLKxNMzLYDV1UU0aWoxy1VxZ2jz+m9NM2cVItXXtudRGsl5+TgRTmQEaX8jk6OMslSsjlWYEGib4XOoRObaJsUoCrEQ+GLB429WhqxWGADZpg9e678dsut0oaJmlW8smyVcQpWGty0SzK0DNJUxX2Ww+FPV2nc4TYUxxPUXz3fpyLNL8+XwlUxaBwa22kRq+Ee4UjV9LAQhBow8HEpJDdzcp6+/HlyC4muTWu8mYgPTbRwtw2bXlyA/9UbmzNeIDsQgmhwvsFpCSUfbQzAhwbPKel/oCtYcxe8DgUbU9R2Ml07/JD4w9ZlSLrYQztWqfw4iSbSgrY80lpIQZHbp8xrtTsPRtODfzdYG0o9Rkz3sThbFcQhA2dSX4wfudVlRcIWmBBiiABmqa/RdWmLbYJLy/HE6cOu1N2/Xlp3CDEnxetaSP2l+s5sTZZnq55PxZWkOmSkcUrQPdvBiB62d1sWhRKuVGB4tfmkqgJy807Fy1bR8lPEBxHVbf3IkLWcuaQW+rJbziubJaU1cTwqJ4fIPko4V/ZGt3QrvY1OUKtqlBRt0x2QHZjBzSZoUFb2vDrLSVISgvlYarBOHQLUClJQAk7lucfl7Mam5M2D5tUnB+2C5bw+VZMu7tHRDySsTwL53Z5WEX0DS9Ljd97TTS/jeItBxfUQpnNpKUldmeMGAZgMO0pA8iUX8YqQKWmvkkPPw8ESSQF8uUpLrAkfIS0nafTCRQeVjppwTyjFWdDKqzZIeWZm0hbV/laidGOHrn9oQasQDoL0tmvx+bnVLK7+6y8DYY6Y98vYCYNvaVuaVbs7Vs5rBltuSHEjmp1FaUqu07Ure3X7xe1RhvtwiD6srjGiTYsbYkAAYyc1cnZfapI58z/hy5/9n/mrmS7bSuJAo9yrzExvcVAZS0ShHsrCgS9DYOB3iYSCG1zIpHpD2jb/Qf9uV3DA/AAgoPkHEtY+FA0CWIo1LtVdetWWiNHkSJ3YrOrZKkckTqypIVdPFhgO/EcLR/W5R9+q8RcptUclt4n2EHxrVPdI1ZAC4+4t8pFHmGAuZimOnj1uMP5MKELq5NOFgsmnQJm2ezC6D5o+rlRjod0D2a9HMSk67d9HGOE7BG+Ttg83AN3prOURbG/7xp4J0OxM3nlE+8MApcTxy14aTJVkRn3aJETGQpSv9FV8kMNpL42JJhTY2xdJpM9U5GPCLbY7EdQsciXCxbttLeomo+zfyB8DOfgihV/dLWG8Gi1360lpXTpQpA1E06yWWuTqpyzJSxf1Cn6d2221McIchIQ437VEdj1CGNDeqWJz1/4bPT8DqJfl/IZrky9m6RAgpzZIKE9JA+GwNIq4AlHSXt4psNXiAsC8u7Dz9ML4XGlgORtwCmgRVPb0LJ/KwNLUpOmF+rgH+T3OqKNKAaqysScE7oXBOP1oQ+dVQcWL88YDp0L1QWLgykHWE1VUkAibqL/lrZZpEzXzZVkqo5s4GxG099R9R6seR6u/v1tv39Ow9iliYaV0sshgvmmTMPVt6aFdDwDE0YVzmgNMWRGtQeRxMlb2DMmMPjcdIj/1px9Jho3+Nndml9pHoSDM7boBaxas6Zfm5qraNwXatkJ7p0cl+Nb2E1JdfyUpS9lphS+RgOgaZQ9TS/y5k2HhbKEC8fQArojo4MECafQWu0OyYo/1pp3IDlkDYRsfSzhDsAGNnebxZ/cU8/OkeXDuzxlKA6Sf2ErVIJ6VkVGl7EZwIHzb0KrG/7dKLEjnpEwN7uElAdV2IN9onXLCeZjcZ5aDusuL93wDvgmu4GGROXJEm+u9I+OaBBxHhujzKmeeWd6Mh0o1fyw2JCFwVBNxmAMzbBjTA8mho4jgNCEDhCTMB3cI5MWQeniG2zrmhhjdHn9Hw6B4dTgeXBku4kMYGosLaQwCRJF/X68BeBDjtdE0+6n0Kzuja8bYc2DIZqmab5uRk/PpL3LZetqOd3+Jy9CJEdUS1sKrARwKE0r0+KUNsQ172DvQulYtnm8aslCLap3wBFotWbdHAll4RTg5/7X2v8Quvx4Uztz0jUUW0DZt3X+fF6lIY160AuUKaIHfpTMopn2ZpsuW3GDYvcwqy08kJV4fHWnXRUPESnkCvC5UrePSybX9w2vH+0cK/gR651/oFatDeveCepS4SVBFfjxcF7G9HBx0msvoh9Oc/KGTaPLjmgr3P4Z/c9zJu29vBrTVfzyTorYdOosct04caSY/lECPeEiE3zYURm8ZxQoWCZxw2skdXVON+IUoKmozXlbpgZWxZdE0MdFVpbO7+tSGVF+nOJLmaybMmW+npAV6xuIJqUh5VZ096YRu3TS+mpPUYOXEMEjdfUVJi/QLU+2D9IkEYNQ3p2KrAZp8wjEIdzMLoLq2cppr7/qUbFPx7JWpBeZjGCQcm2o1jMnJsmxVMx0AKz6J03JDo/khS8frSbkJ23s53sd9BVNx8Bx1bC2y9a67LDs0LIv7JwWsUtdmzQwR9hyHbaTei4kEfTqIBKwM4XzgKY9rA8iY6P+nWt20FGG0tABeOd7I3GlB48NJ8rIkVUPhWRtBJnxtvZMh8aPb7Snp5Jyigg2REJUDzDiUfWk83M5Rj7Vig4ei+IaccCDgpmGKJzjFJvfNQrodBy8VTy5fMU2DyTJg7n/rkmTXPfRCqE9e1l4JWermbIpRfmgL/w2O3zWYwvLns+RNyFM8zvp2KJv6S99vlpzFs6FndO+HW1Lqc3thVI/ANvr5aVDHNL0Z4BlFguNSrvY/oztoW0CKuOP8AJcbbNSm9yiF0Rzdkc7al/Kk4eN9FyTzI8W2ltvbMJwNACDZrKKqU3gn4gYGg6Ch2c5PXqM4GPCoNpLMn+FpwfXxEBQB1dQiGifLy33mtq7zajaZzF2vPsY91LzIA0h72RIcarhMZUCezoUYQ2btLhM7kgdrXbiwWj6Fm2r/+sXAZgWE0+VTUo2DpMEjwMkIkaLizqnBQ9yNZkqjRE3a+ImkuYrcIZUK+ds5wu4VaMC4xy6Z3ahpNxGv1P0v6a4aJdZ17+IDJk7nLz99BuByCCvJDBBe16/h0pBIBMZm13OsWGKuYsF2DI+m3Ce4vOTxty6CSlrMIFfjEuT1ijkijY34ec4KfLHL1J/PCpxUoFZZ/u51zsvyl4WGhVB3EstWhxSM6QywXB4NWQjdcpj0LC6qNezVF97SgRBQcX2JbMBhjLiKJuLCcVOSQaL33poXOCa582wSc9s6fw1i5HGkWE3ci08D77sKjeI+Aw4+QbVvNSn5h83lLBFvv8eYiw908a3AUATuhTRE+EOUdT2HLwL/yzXHToQgep7C5dFFnUAG06GtCnMSH/cGQ53qnAfMFdAgjwsJHulCff0ex8iSszV04zlz39SSSpWSDAuzbHr0aVR8HUwwzt4HxXSZUfoxT+QYO4OTxuO4DrvHwSCQlq0bnShzfCg71q7azq12azPW7R/MCS0OS6K4QgpnLdnknwf0hDX51JuHpvuKdOEqv1YGQY/dFVahIQBaRiAHruOJkFq9I2rjR5JBXx1I7JGzX+8faZk12rf+GczeSf23KoqRiUX64hS5eTGJAuxrgku+19fF2TRtQQus47gkuT8TTNBPT68k7CPhRZyu+uy2O6fET3nxW5hdTAhS3900XR/SBzdDnu4ZOzXPbAer9/sF4/D0kZf3+2boNUaNTaCD/Dd+EA7h+s2OTplh1T3UYnZ7M/d0yXEYaDkdlLb+pnGb2EPOwSqrrAad5S3I1YEOKY15rAmpUXhUYBrcdTjRorfqGymjdlmwUY+1Eurt9pVU41dN78zyuf5THs/m1S+HZPUgqthLAsnfRfkUwQg8BD/tL/nz3gcIOoUPICtJw8zmZSrvuFI5gqnHK744uoxZqlJivhxW3b5uziVdHqAFcO4nkwh3CZddZY5emSo1ACwHQwK1dlYg4CAqhPeiRwd80HjISXvky2F3mXEVu+0PTcShofmHEos5+Rx0mmLE5/2C6TVJXfku2fkr7tf/nBLNFKZfoW7L6pUJmKrZ4sW7Kjm/+t58ib17uOb1MeOUup9vVrL+BYgBgaNEBqOwdeu26iX+hnW8FinToF9EBBCpqSY5eH4zr92OU5jjgyp1wjO6xmFuTscMDs/EIUUoq5u221Cz+9pCqkKRTxe9iV857qGOJB7OBrvUS+W3osqmyGykt18NMcnTONohvCiNId3Kr2h20dnLtXeGcFyv8n+KsPhInfR2mOd70m+6PdVfkRY7VRc6AZ71jd/aDwAKnnQ9F/QP29l8wdy7bT3tbkygRilI4jqUv4LLoSZ3yHbdZLfBJs915FEJGcRBpgHiTJU2eh6WzHfY3NEQiHjFVOvxr6HGXzVTYt5MhQNIikzydGvLxsjnoehKkjEJm6H5utKggpzo22dsvrAXLFvHf4wG/Q+UE8/XUkcXmIu7QY/Yc8QY8Rd4WHRgCBvXrdM4Drai1lwnORom212THPXI5Sy6D54YovEs21JgGWVwldKOckQW0I+gO/Om2amVTnT3tsmZAkeoJKNlcw7WSOaJguMBEf5nYiq/3EE4GxnjZO1sH5ycDevw6QEWE050AlZNKpA4CDoXNXx5WmGh2RgaqrxaTRIfX/8Hm+fB0RPzdeKHfmmVClQ3TINaeTJRX5HIlp4U0OGtK+5toPTUs2Tx2ZLropnH828e3asQA3uB2f9jRiuTqwoN/fDNVw2g9wQOV1de7XfZyRAraKSn54N8Fhkz1hrGOfhGme7+nw/x2ARy62sonx6NrT3t+nS7wL4EE5Ra4uM4Ole6yQMvIZY4L9fKAM0qhcwFA8ekmYXsT/epxxNy5Qf/YOiHctcITaaEArG0+71sJveT6Q3qesptjd1ur3FoYNsp3GeSZqJgPmoMkPSfK0FtkohXP+uW6ZbAxWiY8Zvh1NbLgM4ySwOh9paCJuZ7fMWLqlwhRcL/gsHyDcc5iTsh2s4wHoC6Hd8y5T4/ZoprB7R2mVU9dWNynlOxbbyBqVzP/EAhjHd7iV4uYphqtj8sPbBl20SGxCc1qPHr2uGylGWpEzkSF0x2T9+3eHowaqUos9elA/124yWsQ9xb8AjDPiZ5tMHp28rikgCq3Jh3Jk52/GZtR/2TyMIpUdEWqWSr3O1IxUa4Q9Rov3GkBuT/s6KoWf1f9w4gta7nYYQkOIATZP5z03Gxu7IpMFKlrUJIoHO2ffthNGdAFjX+y1YbblrKqV0VaLqIkmT1lfFfZ4FaM9OkZpJGUcFiYmCPePeRFka//yTn47Nk/ZON07MaS4tUKPqr91Uwo4k85HIgedynY4BCP+fumvZTlvJoqoSmUsIefVQEtBjQBKZGoPINBhJ7mnaFqSHvW4b+IGY3E+4f9t1Tj1UevCI072W0VpxHoCCpF2nznNvtj9tDxtexAYJ5TYyKQ/ZWjlRh8s+3bmXz4idHxglpF1mZng+X4S2yKaGLdZMZnfP+Bcw/d1oC2X/6JdebgkUWhkD91oUtHXWUAD+7+6pfqXibZ/yqmvhncZ6GtgtPLuyKtUtrytUbogDKqrO0343qj1miPUAqkMwvOOae42QdvJsW8yYIWd7dQbs90m2Xlo8qoIW/mT/h/fplQdSeeF9VEDLVAcXlmM+v1C9GkBOBtHMfk3vxSoebPcyLcnixXW7bloMMsnsXYPUKrsaA0wA2iAG1lXdkKjgBJg9k3TznRqj7vWpjToDWPfSUyhnplCE2ypjLhU1qnL2pa8jWM459Sl6EVonh9okHJnA0UpCNXw3auO2EtAVzKyVXEsQ59vdzF/o14qqkVhMMdc9qHzXq9WURt8Pu8N/RiSb9LICpqMZnC2cpyW85RIomc39SCR6LePjHoJpFanNjM46znhykvn/mdVjThfDJSxbWLcs3os3uZxUuzsWWRuvogd9TjFMtWSWW95X7lUzJzZJFwteohXGJZBuhqy41dGL43ThtRNTv2dUJTgYuC2eF/eb9fSLwy6+cGbKZLfX7FKCVn3o8tBD30vrlvnKaahNAVTkWaB5mpmcbQZivumcR5igazgWiVdgGurGLdUQ5iYCOZ0JAuDQs5dgR0Tiic7ibB0xl8XM/82TYsm994EBTZMH7Xf30U2x8wib50YddvEM0SZuMU62Scfsx0Yg2i3mivq9ckYYE4AbwRbFfXMvQPEcZJRASEj6Z12MSvjQNYsL8iT/ywHDi3licq68E9inYzztJLRmX/W/n0l61LPo4iZB073TInQPgtYIxYMAACAASURBVPQwl80eUHfwjS2RIF5xJRZmPWyPF3th8nvt6MUUwqUmoa+dhTn28vA6B9bjiJO6QfEY+NHZS1AlNzPwQGiyclfGhz7IkgM0QEQnVi+LMIHHnK1sAo0qgxdvyHN3QEYDckoidTNMPWj1ypAoXXv4tC9mAEiiO1vVvlla9ie1tKIFvNOmapOFCMT/dxZcb1QKJhfAfwLo130//5qo00fBbwwkiFNOR/j2WFI+QPJti3Kc/P/luyLVpvxoxLZYZqhZEFOpHQLD/XrsJ5s0fNoVxXb34Mf5XBKrdJ7hGVosjLLBvJuZzQldBmvjgx9EOBFoo0nK/Ocwx9665Tp7IPnKGDyXqrtsW8sPf/1YoP2EPBAzuZ6PpW7OGyi2MI9Pdn3W1bManD1+dFaE00fOmBasn6pqvIfP8WycZl96p1fPrF2/3K7Bs3Y6KrLMMJUC2xsfA7e7KIWuJUHJSj7VicoxwRjgYgJCqEXJrotNxGR5OB432+MmteOsC0qGsvuOMI8T7HrMjPoMNuyRC4WVBzPzPjqgeT8K4CF/MOjw0fBZfLvi5aZsxWAN/u9U6e6y2+z+3P78uctA5dzSPIKFokSngxRhPaOpRtFBmvfCj+a2H8HRSt1Pm1Vr5X5UCnjv4HI0LrjAAXRDVdeK1zTSVhXN1zM2XVEzDLQqjxPBncXe53BcRhMkWgAVsfbFhvIbEVDjtu04BzL60I++/3xN5zgFjuVY5+kljIEmtwtJZw+qKDk42HJ2azlHSx0/s3AIWS3IGn9+6ICwRLQlEPeAoQBNUqRzZ2BmyGbxcbwylrrDYL74i3x/OG72x4pDVQpPoEmnURpP4nKXMxu7ld9jjrkU3ztB3X+iD8nTo6l6TSVQPdLv1In3UYFHK+S0yxNStaj01+hFt+Nks0erOw867h4XVa2sA785+0Mjbc0shESxvUg2h7eRvDJQ0MmhJ3IN34J3kMYgF9RXjMhArQxXH79gDc3MR4Y7Ynimy9EN4JnPc/NV/WD0v3FpoQeO6Ckz0C/B8p7mOqLdb2Cq2S1++vNN79Vg+NxzNl7uMfeZF90vSarcyu0APTdmbSLFdn5ae/Ryk/25z12bIKlQIAgWAyG8KRLtQaM/z2+w1iBrWC1krJn3K1QByrYPAWcnqnUkQSNSICiX1Avm1/J1BlwWeUMTGdjlygoC6lADLXtcPPCeo5nG7mx+5xykDOYrsYWb3+Bn/GjcxjEQJUPI3iHFsJNvMUMRr+K10SvszCKZjuipuDI6PLxlheJUTyeBzxtmKb+DZPo6po6ENF2U5sdJhOyF4ciP03NyYBS7gt7Rx0G5dOZpUNN2l+XE+y/QTksPXFlpv3lK/2J3rJ4/BDg3OpJQUTUCItsFKOMxpyKoeBzsnqeY30iymR1ls+HXatg0UX6JBRJvu7VF1CgWjQ889Ik3+L4BuKTTEPC8Mm7lGIriPE1WPKwgy+OII9p98QZFmHlVROfS2Pa3RSrYokWLtb/cWKV/AcIBNlDnYhgJBHaoyw4qyHLewpc4pv4FxZnAb9YAr6yztI2pUv98rfy0N9A9CfZAf5evjaZ4uCKDy6RKek3Tl3CufYQkRToPxbV4HvUj5O+i4qb3ExQzY4HfJMBxubSWBuCnczH6d0Hira+aTeP9Kx+5mu4Q11j57jwDntfG7RzSRgfJWrDA3/H0HEN06plZ8swi3Uf9pkjo9QuY9ClsR4kkey7UlIZiOUdzKKZALDK2g2QObCmi9TlAVm9PHzc6NXgkdFe5y9q1rz2qWQ+v9skxn355R9je2tdcd52hwN+Y7nLCsHvJe1dnEXBu9PLTeFPjPqcGgfS/oFDqCUaweCY0rTu6gaYykYGC9+QJ4iBXPk73cBSPcbrnbgfOa+X5jeHZoO6zvFmyNDo88itauYVn5sybIrnG0NNRDVfDVR9LVGUKLrgDHTxxA2g0n0AkkuTb7W6zw12yW4IAZRc0RLfIWvBBJ94RAQlYjBFpcPnoNvCtihuI8muhLHySrhj9QulmqNo72jRMPQGN8K4NptMLcwWV2jeLUNif2+Dcy9O2RUEWguSuI4ztcNYXavNxi7/Rw6c5QHpOV6RXe9ujfKzTo6h8g7W+2zE8P1Pjpg6hoMKgvRfuxB3nc49XwGyw3N1DkKi9XzG2x/fQJVopqd5BrBGnagY54qpkSZqs6yaRQkNyGElEm7Mys+Vxo1ZLRgupwV+0rGVS5Nf8CyPQpgB4yzIw0gARcGg7JQ1dzRYrLzioDBEEJayr4qC0lszxcfLbb9pzkNs+MZra4Q3u0u8gKc8wMX/kWat/8tIw957pEkN4l3O/xYdSzu3zEd5mchPW3z9UHv2NIdoYihSPMU3RjYhXg8Ji1z7C1qPm+wNMZBMd0UECWRHmhfDHqogI/Ch/bkGT70TM0+Y4k8yD5hh6d8LWuWZpzH7dW/DUdMopb6NGlqEpHNNqoxPlYhMM2tCfooth1tjtlIH3GtGA4jLQM4wBtpQCnJuNW84iPEnXYfKmXikcdId8SDD6/VQoXQVRdOjh/FX/CQcEXbDCTrLdlw/3M0KgJ/Ie3/9J8tvDM8Ov/NKfBbcwzXjliCN6+mYBNYe6nVRVW3gim2RaVm6wgr/RXpLOarPeJ4Z3/EiquYb8ttpots7JN7wP0149sVHlPxhrL1wMBeE0sDK4MOY8HJ8bvW1bXV61uCm+BEhpQXrDailEBb1TeCZzLHsPROzugi9BMJcUQb2Q51GzCewqGVJ9xchBawxeME+712ZevwCekegAjr/90c9mxi0e02e51Jd87+k8c247hmiG2c8/PEEEJg7J42d08NJNPdkZE74BgtzhvGJl46L17gSOiPycGaCUjNrwWxdAC36rtwOnYdoHA9hXiXQAt2c2aC2TIgYTrvhCwu9wbNGQalfJRNipmouChvPuaTolsrBMUISai1AI8lA9LNSSR+FqMNzixBYWTUwulG2YRdDLs1w3M1/eLJwq5Nfx6S0uRsZtHjLR6I5Elt19hEU+MaYrQOvdzgIiMLWUedMprnL0NzravtS5VxYbOphAO0uVX/I2FRaDhNx42jGKkGmwQMGeUKMP0Pmlg3fXAxuQlFGirGLbRrsPcfogrTwfrX65zr1emzJjDnTLfwely9P0Myi/G41FUp8mi7XifPvEXWvO3ChPLMwzSAVn6aLyRL5wwyXMDvmzWHuGcduIJi+CGhprnRAPLxHRn2HpBq4ysUQi2sO+ROrel6da6xYbiF5TRR5Ili9WazJMxFFjCtOgsmkBuIRqiQEfKGa8iu2uZQ7KevQvt3QoSRU6ac/HXQTrhXefbWECNLf2tQCLthNa1A7r8hScswfjuigUeB4nlqROljkOEKdQD+7pVVibv7/CgIq++/zjjfkjyij7//oxMW74EIgefgUXaiw6igjQNJaIZruVqiolaxU9Z4uunwmraaB8kqkN01KDwCSc8D56m3nLU5cl4b4FxhF7SJmLOm6P3aqeant/UqlOdbVfoqHX90Qk2P01CxWc9aH/y9319LeJJFFo7LsQyHulGzlnYcB7tS3h7NFyBJrjZiPZuc5vxiPvBxh7PvZ2Vf+hGwFCyezB4pLEjhUFnqpfVb161eNBTZhv7KK1rjiFtQkJ/zUVh9RCKvjFH+xiCMdzPtONMD04NNFHa75TqXm4uw0qswFIgG+4agw6Lv77J3E+9CWqxwRwDDZ9zjnwah6UxwLRn8W8WqaPoet6hwFny+sXYeJfziNgbtPVHlEG03N87cU86ZqMZrW8mif8856k0LLxZ6RDQBqxoag0g7EY3KZHolm9DOv8TtSZ4XbK9UiQRmCw68RGP8WYW2m8ZJ7kd54uOp3JYzNX4cVdvz+qKPT80FjQDXxD0Y243K7fRs4Hv0SMPv+PI8Ynx0K2MS1viyXkflCPxluheEduhGHXr1KUpAd5eQXCrxY5OPEX0Ch05xhZmuoMwRHymVnh+tFY2Av/jug5jjro9ZFXu5aUtcwMCh8mmD7sPEVomnDOxt9aMMgwOp8XV9O6ZiEl/7nuM3yXphokL7/c2/kMAQBPBcSDcns7eX746HhW/3Mx8svyqhQzVxQQDZL+z+/iEx9LRwcyMQmxlnvFZXoD31y2BpxsgekLVLvmcnmbCh9IEJIjgMOG/93+aMuO5RYHEz+/2ToRBWz4HW2zQVe1D92swStbpOhIynE95EM2XS2ujI3qzlw8Vfkg4vudaPnRApZMvt3aNVWOZw+rH3HFI9Z0u3E+/kWweuepVnhWvcslFl+K5SV0WCSice2miN5GVaesiRyG7o6NBTRYqGl6OUZYT3eTNp+WPuBEwyHNfoAm/OgVscZqKzk5jksHfHtmAAM1iEt08YOqnyvmcFugJjjopky389HUPDUf8GHIbL/YPuGAfw6LNp3p+t9Wjab6YyZUOuIAnm4+hv55WD36QsValr9iCgGGaY8Qo6/fH1Qw38oZ8Rq15zf17XnEv3PX8bSDwpB/gCaf+tpOhcTDqRujwyNrp9SN/e1wdqQVe1Cvo6OsdyNd1E43xnID+CA40/wJB5vrr4CilEg/cKhD3yGc0ZlwsrUU6h6o4LGuJUpc4QbE8SdxAesgemKKTF/R/9qBCRZA9IWK0VDbwLVI9UALqVmzh2SFdG+xC4xN96zOAlGBF7Q+PxJ1kYnBQbqtld4kLmLgJYh+HMnUGqY5wO276+gsmGMJfjyoSsNge97MxjPsMxUj/bB3IYBUMZSTKZNNdG48GxSgodJ9IvzcttH1yDkVRG8iGI5VN917/gvXAV1/q3hmyG/Z81dNh5F3SMlLnYOI4PAiQN+JaLjHImSGhgQP2mSRYzMJ08GL/RRfEGNT1CQD89Tfs//3GcWaLm2r+JGWdohK8tiglW01mjuxCtEdVmeyQWBG58Z0PLlzppbzIE9qBJ4hepwBnZAlZk4dy9KgFHGVc8IMRa2JcPjfRN7ScU4J0dd1hkuy77BslsfoagkEY/paZ4I4HUw0os9uDO7yVSB61JOCluganjo0S4ynww9aqtrAhhejQ0jHaLU7GNLEz7J5ovcKBjDCZKRoWrQkd8hS/8hrsJqP9Ig+GFj2BQfXUoijIEB91K3P4bts4NmZjPDRBOBggJ2uXJp9r18SP/j8W029fXTfiBxczueBGqkYnQ6g4cAhlfkfmqBytuCsA3TRZzvdLiS02IyMOGx8rJmYCfD6vN6DBQTJMk3BbFCHI2gi1Jt1GhBhra2SYR4CRETPoV5Fon4HG+Lwal1bpfV5R1GUnlEu2Xr3GyJ+3/KBz1CWUVXVE2wFKouSY5pnJaGNZ3cJeIYVOZHEs8wO1y8odM71YNEINpzxiH0JL5BBJdr76jgnhejRmVW08b6/XfGD6rZaohv2U6lL9wSCtJZumGpyb3t3ENExfDJCgFgoJsBFAVdsZYhgZqnt0G/Lo9iAcesjrAb+n5WkPkWeSHIb++WobgwiT1oUYKYLBoH817QcC0VTMa+eVuZEAMn94o4WmAKaeCYVuG2ScCPmXoFfQIH18tE520QkrMTw1eikAO1cbmd2FZl8fudZcMURDbKX6SbUq9AdWnyJlHTjzKTMoahkxKseoMX8g+Hhz4L2BqxUMKNXVlw+a336ykjJXEyPMs6ke9XlEfWQDtIc/V1w7vtmtFdhdI3BFZyIAD2AGyhDNTnnE87iOUOb17HO7sskF7snMOCoB3r9ByzCqcBYlPMK4BeQMXkbmj3N81Icvt4358Su6XZ2f2PX83Z3jltdlUsO1NnkG8m0A3wEG/BEo9u1Zt1znN504r7x1/AqkmpRIkQJNMAZT3yy7qhn1JozalspD2L5RBl6jscWrjsbJ8rFo41/uF3DipGdv+3/jT4+EfUwEXEHrJSY1loNKucwYQ6ozqPxlItvp4If+xm4zIBjdFkspFMKATxfAsFg2WL9F6wqS/HZxRuoOZ9x8kzWT+XrVm/Ourg5NUBzwnBbWRUKcrG74UcXbAaLK3A4YFmpvJGm5WwqPv+W+IIUKYxsknjVXVkD237577hyOzJqzuCpquUOrM/Flji2/DIw5XdCzQ8C/MReaGjtNBzL1NM4rsUb2gvM/DNkDysG+2JQStvyQ8LYAaGUDM8Nt/9A75oAM22xKbaxqyae+8E81AOZ4EpT4miyJHuYGfKI4+Y8Li+evxnvATRLcLrSX16S/JGoe+yeXIBG2rVqmFtf70bOdAONJ7dYQfuJhMVWYNUrZ6KJcmkFY7fwM8jW42KRdEp2GK3BfVUjGFxURmYa1ZvFKXwmonm8SC3a6ePUbDOUNnaEmyzc7aWQhBxy0mv1++ivSUtqZdONmkzrZmGcNcWKJE6TzIwkUMovRJcAD0rop8AAEvgbfGra1btgjbR+UUNc4knPThDQDq3KRjf/n39yxH5DaX++FaosztrwmHLLKyx1ePZZ5S1GAT8dI3BKgpHvekqQyKKZfXu1AodjhkpEqihZb7+07flNtzuLY+s+3VD2S+ohwuEt9b45AyNu978ew2YiJHxiyYp6ZUU3qLpxlMN5f2KdZPYgkJut6r4V5IKkWpXogELWN3t45mlhNTLLWu7GOcmL3D81jp5//Qq5BSI6ruRWJBrgWI9bJJj8NQSf7mIkt8YirU2B/DHYRTjHEeq0OQgbN8pVNTOQdWnbXUOMMPX042SVLmiMEHaZlWqSS4a0H/HHpSPq3hLZwYmk/Dzg5xv+cdjJId6EXhUdS2C7WZuUnN/kWxvOZVpvwsLVI9cvUlj36bcmnsFldvLoXBjZTz5zThTR+bNdjiTrB4fxZBH3g1c79WHHbeBuka72OIdDXMgIXT/LhAtsmhVVCeN3kUqpAlup0LrvmzUn/QVxPqbsYLcCe7I4JovVBz4ivtbXy/2JjBqLWvb7LS1vVr+jsRDjGXppaJj6mj7Lc4sfc62Su3hhqprBSIkWd8TE88WbGsB5vtnH8x1nGybhOLEatI3onR2jz95nWAMCaT+51rIOkAhEbpkBzpsqaCpvt6w78KcYNtaY+laUJkEXlhg9eoDEIr7ErGMnRsCmdlcdQ+bI6WkUUvlxEjoQJodjgiypybl6n7DeqMfuiUL+Kl6mIUqpJ3NdcQODRfvOZNMVkAaLVRK5i1kdnyNcQij/+On3Rp5051VXIBe+N8LI/cg53St8tfnUP15ANBs5OQB9stPnFM+gr7wVIHrSPK/crDnpHTYskoi93I12i8uY/7PKOKLwyGx7D3sWVlTOWh2azDczbtQxgqQ7Udx7sajOd1lvmTyR5LkVZ/zuqsMuTgus5rl1mRRreZc7NTNBdtbD8aob8OrghOPSIBxnS+eUr+nr79aNft6gm4MYVrmsEQ2yw/gL7PFc7D2YsPks4uYXQMBhFM38hPUUa/eMSNEiYxhfbcR4Zvlvye8hZUgPnQWtmij/6ODGJJy7P6fQd3LTdgdtzkLEpIVfr64x8Ix840xTQ+fiV+vRljNvOwO24ZbGl6vopAHteN+tVbiXYH8HTSfhTLkzLO/yVb7kR5y3P/keN/dPuHsLKUhgDnv2yo2ifSog6MxBPtISBs3xLCLpLITw2PcPvVTbl/3j0EAPwhkMFUgwTzrgLN3Qwb1JReFCz7DhSejVQSf8w/zpyXaEXkr3sL2v/vL5o3Pil/vLm3lQldBBBOXsJbS7veeaZEdhWc3C1Wivj8KCrHqCxYSGd2G2F3LcwIzLh5Y8tFCAgw4atHMDpj7+U+W3QCOvN6x2IJcYX3f7P2LSnvHQwKM7DtJW8kx5ms3A+AT342nqpEsUopYXPj/q71QPxo/nK4FnzjbMRjf5AItUfjo1XL8ZkyfnSw5knG3A8StvbVTq3eoliotbkPLWaIHdIPNxUMyhZmfkL/tbZG2nFuYfrybqg3Tnwm39ScAILXI1f0z8Hhz2/SvG74hqWrLWJiXr1d0pWLY5/BGe/YFxNCxCGBHrr6uKB9olBcVa4TkuvuTGk4JNZdAKhpqzmQWeYNO75bp/N2hECePcOH2G41f0f+xdy3ajSBKFUNWehzRrEuy9EchrVyO8blngXvcp2/UBc3r69ycjn5HJUx7PYkZi0V3lkiWR3IyM571//LXPbOr6rwzqTvCNNpJ1lJu84oiJUizdptTVSIdWmrnaV3l8KXP/tBjVrLYJOsSZ8aFlVTHXWY7EEZRd2GVgJA6xdp8zMUNQxiNFStHFv1T0YQd/jcR7yg6ldKBNY/AM22OCRa/qbIL2MjyRgEe3SHLLRJ2Mzc/gKq7D3+82cn5BF1oMQITY35+/vhMK7kfucbO6a2JkdubOKIpFH5N8+yBdvrymGQ7EeDY8zRP6lHEuq0pt1dB1OUZIzkedFVgap6VeRMa9hcSkOZiD6xUuWpyByD7Kr5SwkUw0rFKOQaak0v0BlqQaeX/hMO8BOiNdtMhk1+wzSUcKNbYp2ZkrlN2Tyjnc4YCemPj/k8nYZcO3+2VpFp8z4XAIORUUZoS2Q53TfW4Qjao2OuaupFFudBSTOr13bIQzd9gGkWo6Zm72a8fgJWMk56liRyD5ixWDh+axhvP8V1i9nHfvUyS9JvQMAJd2dshlqEqiOMv/WuNi5Sb9nDjhYXtsdMoj7T/euUnJkAhWWGtZ9u6Mu8HjeWgFjeOb62R8/zO4lmv3bmhJNmdBEib6EUX6Lm+fWKqlCuFRzK1hIqk78mVWlb+7SK18UzuFLWyBrgb4AFEpT/zqcSZr4dVivIgD17inKqOLnY9JVkya2EksK2s9H8il8RhtIyV3Wg68sIKamRBT2Gpq0GFLZcOKI/YW7D66oyjFfrxLY1IcJAnWGQl0jTaFGJtT3f7cMtHGjWuICEnWstVux+OT4BqVrOdb7nugxr2RKrQs0Dk5VMPfjDGpe7ewItRHLqqXAFtFyGFq0GykyZMy2HqAzqOpYNCmu2coQdi0sw62XrlgnNHn0TsL1d3cPQA1dUVkWn97jPg+rtv+nIh753/ioA+NJPI/ImOeNZ6xnkI76x6fgiu6tm9bJVgIffT4m14VwMl5rSPEDuidtWMs0BXBGV9qjxaLCQv0RfmMJTTpP4Ad03bzFGxwXoz07U/xJ1xAlDOxDeX2BpVl5HD2V8Zlii6EfZDl16JFcPPjse+FlU4N6ajgmABJ369sETZwfCNOxrefwVVdd12s1K42b/mr2edSsF7T5+JAFhw+hoj+Tu1WwX1u/ylJO51dAukvuS2FajMiwGEURjpBPefxjvMnhPF/BmfFqGvFDkdqlpWLZ5N0BpS2gcIMYoUHO9CJLECaDEURaWIoRFJ28D+hffy1Nhqe5YDgfVeINZEc0Tg1aOlzt10E9cegISB8cm3MUcpb+Uet6youPPuLjfQSqnWTkhGDg1mPd+SY+BSesTlcaK1USLKQx6TsmY4UVRxlCjFTKF2QsP0hlEDKHExyzlytpDMQlli6yruXwGniMHxZ13PtfgZKOmjXt1IS3CDako2ixd4OBYI8o42yOHE1DAgFfdLK1DOLsy+8O4CLR2EHxUn6jSCP19GuK0IbEHceM9KXAmMkUqmD50oklfBHm3aP+blE52u2VMrp21vfq+ZTNdGMY6Dh+/U6HBLRZxEEit3/64TkL5IJELsUzZg4IL7Z6/vexcbdg5/d4qGODAh9Q82kYsma6OlriQkup9F1yBHANIDkskGV2cGvya0CIjcHY+lzSEecAJdXFzXxZLvo5phs+8a+xU6emaJZtj7+6vTjUN4hOhiUqu2qMhz2rh9fgnsxagiYmka6k19vIuHZBUQOWljr3UdXUvMFg9Z9Eb0LpqCBowErBQlhDe4hHx3Nzr/mCUooyiqPnpgSTnc2CCtHPhREKDDRFuvhWYSJRel7H6EQegz7qiWVFjhojkZ+tY2VntccKqgwSQXpn5+Ca7xA8+ugkX4XJYw//oXcPBg3H+zcD86xFX1zFJ0z6hmyuhzJT1WxgkBVDsRS5pXnDZymz3RbS8zH2yniBTrFhWFY+kWJQP34JgP6obbQOT0NHkfugcbXqnTxjLQmkiUi7J06OHenQXgdokGaG2itsBe+yma8+5Nl6hD2/M/gOq/wPVIlFRyYlWvRI0fH7myZtfnPfhOruuePQXR1CFhC1QxFU1iqaoXKKLuZYcjjxR6lIWZZTOiYZycOZ6t2bDBHlbu7ZOy9l4rsZDOl5ZwWhbXPUglMdLncuXj+oZN20Hb0X/jKy6RHJHzm5vlnq4eZZeZ10wWOgPfmLbjWCzkqjQTcSUUfSdqfDw362PohiC5GyU2cYb4f+8/jRChc+WYRgyHtm8CI3cyW+x580cG1fReBECxkPqoYhwOmc+1nem0jiU9XSrbScjKRaZ3COXpRwNUylU59TgF9+abSeA6e36KMZkX3KumBVx9tcGIubfsfqcIz96OB4jm8uowdDQxfrMOlkI0LuO2x9T/VbBBybgIOpk0vF9VoPeutC9L6lE5ptpX6CZn1LOZpWjyEX8aeGFANbpEy2zxMbRz/NyGnjB/LXj9qUrDFDQdxVJhOlYnDEsXeJGapbLVInMqkh7RAT6CoRItW5z3ap7Al/sYMj/c1uNEYHusd/azlDk5KyiBstWy9zuEn7tPkoEYkizEnJbISyQDRJYXOHMl5xEm+ljL0s1m7RI/A8tsog09siBUR6soKJ4Z/C6aecTxvS51OJfchGxo3nQJpK+I/5zq8hI7g8fNLcM3X5qf1ufTBhf9XBcJU9nbpUsum/ZF5Joqbal0nxPAfQZ0IhesxXkbTv1kawZIB28zXRwrp+iNYHh7ItysGwbKFJN+67YGon7eaRZWBai69pxRXytEwhILh7wPxpt3pjqaoSXrqWp2OJ+l4yNVQrphIRf+i7YqKdhTqAbUdQGwxHcg+X3yErJqejs3wvGeqO7RpKtMh/RlYT6kaWid37Tsxz83I5xDNVqXNVUkd5vYUcmiHqgJ+9x5Rd0MstpXCuq99Yom789ZxmR/PE+uH4QAAFnFJREFUV45nOSSsKd5BJfCF57b7W2U/W8zwaytRHEdG8MHt3UCXI5AjK6sAqYZH9Em/FtX5BPF+5noFEkz5CugNnOb8YfrVa7wNk82eAzRSkmpKng0h1WRHGSPasXp49uH6rXOJ0Q9Xj2c5GWzV6ncq8EOrcK/akkDMD4aq9RmGw0Li2QkmbxP3SeqAMF3nZZqMSMxWgFpWNlIdj2VOoOeMCohe5lBu3GTp88e+KZvG8yqDbyhAo8k3wlbptFJ5j1cr2lSrZo07S0V6+KfvMPYHOpYP7RlugBY9WlatfqsRzU+y3ftJu6FtE4GmQUFIjwp3iwkr7VBLSF8kGG8yIukELSOwZIX+iZ0poS+aheBUeBdmk2HeCmc8994HBkVOsVxMz2bBo+k4MNRKVmolbF8jH881tc/F6+mGZjy2Xpzivz7DNtzHOHSNdpQ5pO1YLBQ4QDUGEcDWDYV76XHAhQRJyv5WirzToXO8RMpncE3vrOn6ySjP46K7kTP/nkN0P0oVCyf2yqSJ9h2G4qjNcmHsc9qXZ99bLIn/jHxXNzDLdcyo06EbYVA+CNqjPfCQ0MDOdnO3uT6Oq5Wxkpzjwdz09tyVQa4GCrUH4cWBzC+OZItGM7vYf4gvdDc0t573SbGj+0YKO3S856ASdsyusiFaC+su+u5m7PjzOTwgdyaWueq+P2c3KKuTC5McpLdFI5r1D+GZBB0I6cohgcU0nWjx8EzHAzn8Ex2/fS7prLWGp2gWvYHxSe8bxBYYM60w6T/gr5T+ZpraFoYncizZUlGSMkrfbr+ujviQESzz8CzUnILex/PmlLZ93zXHlv8nvwHZMdHQ2v2v/bawf/h2clRVOKRTl9cYE3Rp7TXfxW7eKgsmWirXw3qOCNp8lKrfjP67ShI25VCAKBvzf/VVl97MeplMtEbNNEcVextlTKxC0Z6VebZTAFsVlKei9U4Pxmr/+SF47vsf0Q2+EyY6bPdjiN49FN2e5kzxfBtwoqS1qxTi5q5KuQOAxZ/xPfTOUdeSCw5+Xx/NMIi59Ko0E7VOU7/tTCXlbMWelEOWibpRPGxela+eCzlTs1EmvG/uMsgcKSE00FT+aSsnZTsPz/BIWIFul2uio8CRRQ6UDBPGHZ3HxgjVsWQjkG4IpL3kgI0LgV2Uaf7slTECas+lQMCnskopEo2OzzIScloiBIg/N/nIktngGBiyNOyVeSZB3l5ZZ/mhDhV/0Udh/3GzzpOJDiV9TPiltOpSX50COFCuAoCqSfjSe08nJJAepF2JwwH5ZLfml172c2A/Ebp5fF4T2yyUIacyr86vrrkH7LTLvPQlWG+lwtFDydYKlO5cUPnDlsNZppbvaEpui+SM1S1Jt2Cidc+t8jrkH8Mjdm95rNCsrnLHJMuXVprXcawwBsQ2A7jdmtl/A88YGMTCqV5hV8OZdiQw0d54q/bs94c4gsTxNViKxX4h6YFp+xjrKpEg7C9J/M0XnJ+FZtmLs4/n6P5moGee51knO3X3ERhEt13ga38ITQVIhyy6GtL7uZyWMWxuSJV8IbCly6Hyy7kB+MzrtQqA942XOb/yubECTBVC5cBZUYBltt2Wx5kp2umchiQ4mmJ/QhV8sY2X4zm8Gei5S4tPhHZawiBaUBFbuQTtSjdRWA1GC5kkQGbTMZuRu3QHA9gM/dEn4Cw0rcrMFkbYnC1liX0VMdNAzfFyIDp4dyEtlxJcer3i0jJgAUk3wuDyIUt0hHDOwPofxBcRZKPRUC7kdjl2prP5Iz1TrBG9kdGHb5AxgmED/m4IcQwrjBZzEWyYNgYgNvyz1tpSi8Xlv9m7tuy2cSQqQlkAQar/ASj5D03mvxPSC5hpOzvw/rcwxLsAFEBSshKnB+iT47Zl60FeFG69bkmtc0d/8iqhkJOQQPn04OvCD0RsNWELPOcxvoTPr6tltkSsl0oeUluJBEOFyARyJpeXJ1XDXw30xvrytzcaz0ZS92wQ/UnX6DZRbEMSveQe6fs27KqpF3jnLBSr222uiY9VmL/hbbM6Y10a44ipcoRb4ga0HfU+5Skz2jmKdOxNcbh7ndA6yz4qFdInFt02wB/OyGr8nML1/6V7Lps8v1UGvbGewTWUl7r1iCamvZBdl3BYpCyrabAhCxSfKonCIZMLYaJorolAphWCHSA10aVxnhhmSoWJOqtdcJcKmbCJd5d6GUatDj+DEY6KTcDrJKjU+IKxI2ct5Iws8ADwXshF8UEZ8PhUDfRm6O4/4WGorrcR5mmsxqg6FVlgjFtUse20JW4HmSkpzIIvjNgM0t9xxIXKN05XAtFiIJxmWffUqWKKJwF3CfQAd8E5eduOTIXmeAhaIMbotPN8LmR2BIjK98o8Kwc+zLLUhYfuvkbE4fllbM/aHfk0uwCSnMXTBkaakT5tTlkNH0WFdWOEakBovyq7A9aHV1OuK9R2dGzZ8jkJ6w5hE7Qz3p90+xCBAwECz8VXST4fnjhaL1DnjgeZqIx8Q++KNGHKtVncYFP+vHQuxPqvHXj8rqG7ZNevZno2Iv0T9Y426eGMIMWiESNN1NTsHsoopQ3gmkYLQEb3MlfIs1NUuZpA6Rb6KIcx6RrauuhasxuzUVLEZiGNkHEpuYGlQQnI/a8EO55NCn3Fa2S3FzeBdrLRpy8/jFJKXVvrc8rLpOOiRPyb72AGpNQsBpBWLDpgiFwe9Do7qIvLBJivg0bZQkq6ywnTK87PKCMcwIWhplXR3X6LVmTy1SQNWQsqmyO9nYfcuTMhOc3dadgSLy8fcXSDMYxukMnxbUk4/qoE+ibSYfy7Z9WJ9fnvJh6o0oJvOsYdxOVENwpMcj/OyzyUYCqgKSxnKuBjsOYNkobN8Jozo5zugTR8M5q1dKHlJnLwvT8sTMWKHqehP5ntWBQxnE+9v46XQNSVu3aK/tUD/VtLpto4uDf09YIesP1POZdiaptAa56BVgt1agqqvtcYOcehOKWVlY/CWW1wQEXjsJ2NIxu+0ff51tjy1hE4PdlkN5l0oex6HzrcNbQegtmwPOmxhDGiS1AD5qoNgrbkTz9gFK+ujXXG937z/Da3jewqHCLjAorDVkiv96s3uGzaLDAyHl1yjKezgTSU0gHhNjixhWqBjdkMG1lsCWk0us1rJbD4r/tla5S4OX8EolXCAXML7LMri+ZhS/LSL7XR6sD6grMzMb0s3/nSiWnuOBymCdMq6zfeemGAhijFCjcIQQhDpLohO/MysLU1o3mmkXnQDiP3co/e4yyHObjsGNhm/B2k0mHww/8okIq2sbsmHDN2+uttbitKj6yc/zzN0yy7117fXhaYEAjKOZRsvQZBUVnl5CxqAhhRglEpsheI2qKeZ4Hv4ELmpHCkaM+0Lw/8Mu/G8LDkSaB5DqSibd0MuSxhOOTbWzXPR2n0twyiL3IU5HpTmmmgI7zOoUKSUHd5xeTTVviNeLxkmAmAgCv9kCjBcD74bIir8mTlwyLeDyzzAE9Eqe0PYvGk1EXVexN1PQPzDPFsqxjDgg5Fpn9+rQg9jOjnjBG4LoOeziTNEixFP9FI9EsavH7eKcZoPL0E1Bzhz4KnLqDV3Pe0A7BqTbXp/RdFxHX9LFIzEGm/gH1PeCSlCWpgzkPCnhOJqsvS/7fi8xYbnfGim2n+9o8yP7IobHpSDXrzOHQqU5CMrj8JvrfEx/lhpxx/NsDQHEW46iHsBfwEYpcXfMh1Ar4kKRRS4fPieB8U3jYj8xe5g1/986zWZGEVnrcgepozF65ffr4tar3+XP+TYFaJk06FpUOfR7cVKkcNDQKISN6oHAKxFUWAsCgbzpFfD0W/Vrt+DwwIx2u0gXkuikMhUUEZ5lOTnp2XSCyeiZHykV9DUS8pxHaphOPGdVmy1Z+XH+Y2S3CPJo2goneiH2HyxDXyIQltHpBSEK2D+WwW+Wz7YXllxmpCoPFb+gaE1tZNCjQE2F0lkWhEY4lLF2NQ1X7UDPBojLV2vfN8SarMVyJ4rvnBm1ezvOTOaTAo8vq66ClBNtslC2/cjb+y4Ny1t1YlzyLOHPSJSNsbEujhoM6ujLCYylCo8ntU6gYeCsyxHJ/dyUEWxgPT2W5Dx6FxV72F+uLZJk2kte0kCV4lHPcsuh6KKP1lkyN/pBnpaCifTbFIvJpxI2FFhTDlmnhQTiD1/D5mcPRO0pV2MIMY4crtCD0idYNoPRmpyA4WapQ2SSphw1dXI/oT42Cu3oj5bWS+mLIilXDc6/TIKvV5SDgwAQx7PSz5pESoQBBK+WKDDtKCaIRR99/wDKPV+3hctx/XjfDnCxVttKt2PI/YqYjDC+Y5lTuVkv84QWlcnCiQMnBH4Xf9r647vcOG9qr3YgnSYefvEPWyvl+LpIS9WLLhZFxGoOMmBNnUTmICEf0iKtxB6W5lXgIb8kaGnQWbbuCuPV8oA0klHRsVlsE+QeNCHg1ink/NrP/V9R6gViDoJ+imwMNPjpQ140FIOptdRaRHM0qFebzcFnggfCekCbRm6YQVGKPGHtn77sp4Tou0RYagXN11u2KJbUmew0rHuu5fYgIF/uMpRLSs40WMNDC8BM4PJOIeTO+AdMOBhW7NIK+Qagh8noU3zT7flxNWKOEZo8+53cgdnns0Xro6LWSqeH5/Tu3LZM5PMaL5bBz0oVz17OopOazlIBh/zszb3BOtoKCSpGHC/V1cPCJU5kb3dfEurax207AwClLGc/yT1aHI7ESvpj2hwdL1PCRTdQgfwT78ZQ1aqRUDtLmuphgwJoA1kEC1tgtFakErCujzA+G0kpnmLch20xMLfMJwYKyMEPI4TJjsJGSmc7GMOn6MUKRgOsZzgx9v0hm81JKkB9EOa/jOP045RJ/oRl9TGA8jG2E5jbo49jFOs3Y2BdpRCAqSkqo/1W0LMdyB5vGSu8rB1iqeEpE7KAOZYxb9rijpOqKs4jyvhqTi+UGrcRwvVLtQrMPX12z1NRF+o5y/iYEQRYFHOIHFcQliTKc10Zy94+cnYkeXF6zx4KbDnG3iuR9Z5opXPD9wuYjdOSR1RIYSQAXkptcnbp1QkcKrizoKDfXR9o50siXAHQV0z4oV+hOh/pL+nvQihMtwSstfGpnVW3GDEa81WM++puL5keuzBXIfAVTemutTcNCWg7niyLy3UuhspTi9UZHTUW/hakaJkFlLjRpewGqAW843cZ4x0urYGNyvMktAcuy5VzKNq7eYiw6Rqb3WeN1jlz0Zm6+xZerikO8WsxD3DF0JXkiZX4Mfa0lVQXYvxyk+RFddBOVSxM55pnmJkIh1jaOUy5U7aHx+wWNDZOr6mVXMPTZ4Z0nHhaXHZ5yVO21kQo5VVxyBm5pf9ahKaIvJXs0PcqERpCIwkxmUapbrsWKc6LETPTYXvZnGaaiIe/SyvKIZYhvEB//D3cxC0IfNXLlThRHZJDysAVwJxjyaSEuqhYeI0Tg4d86H4Fqmg9AE0nwlJJVuPH6Ri3G3pA9I2tN1pOOTRTS7tpgZ7jbjePdJQj/6IwtOk75C/W4Jz5ROgSJwMJGIaeha3xXCWDUYM2CeX/fqt9Z15+21dmN1uMYnZbAtd26o6Bl2OG/FNAjMeaC+2m+jWPunA4VUSgOc0DB6LdX5B410kVBurkTTdJPb68tQ4fyLlmuw4EOrxSQImIWMB5maXTENTPK5GHDAH84O3jx2BuRrmDbR3HlFsFARpx/cGx9oy5B3KWcJPb/8U8nzL0W0I6eN+eKYBjfZRCIiFfLjHSPhqa8OeVN5ARLmTl8XxN0iBuCE8PbPBRC0pK+3C82nOG4ppVgXOXFipMOQ3yYq9FfHHP/aJRLRftCFrxRgeWpGO3HXINljbxBMUwmS34SJLj/v3pZd9xmZ1B2vanaSrzcxn39QPqQuCmf5J1Bh6co1fv3qI0ifv3r7PVPWxDdF2ClX49GD/3ZQdwbTSKiA5bOGNw6XC9oCXJErByfChiqkrPgYB1pt8+9yDWUoFdx64AxeKcUZoOo07X0Py8NdPd1y9Q6p44CwR3EO4XTNTgGcoynQ+QS4fJfyonQfNcrz/wJp3qvyIHNfgZRV0aGRVWsS0ryjj0qrBIyW0vY+KMcVrh3mhTJoahWcQ5eBZM2zvorVMH8QUKupO0oxpfGGsNmEkEPF1mihbbsJkt5WVcz+wEwzZgY4oaB0NkAY1CINRR+SpLFzB+eAdOWaw6XCblfB/OF8RCmeIq7eBlGLN1bGI1f7QaoIHSQgJNBnHIfV5A+hEC51I755m24BgZZZZ9XpjmxwA+fwp7ifhyns1vVB1oqq3gfzOp+R2HHHbJHaXmPFg6kUGtFjIFVTqtYnZm2+DDsMNu33xW2PHCc9vK9E40Ov1Uw71iEJMjuVBxAmES85ZWKM2q1wlmO8MQ6TzoLT30tFjS8Yw5nk6pMqnD8+pP2MPXDmip0zLLUC7spAZhAGEQhqBMByIuMrfhuaNZBj+GaCdfx9C6fqetBt7fGCmiNaHIwIP0Iq6v8mQNccf7q0uK95d+TE7qPKxOiXjXFK8ALWXVoMdX0IIz1m/Bx2JE1oB0swiW9uIyLjNK22m/Oir0niAAM1TiHcHbeiiWcrS3B2gQc3yBEl1bp+u5Eec87doUGxvhjEGsHdOeEA0k0LMoVyuHKCQnUSbIPczx4scOg95plUtvGHGWkfvkUGZB5KpjhlXVmBdMCq+awGoRm6zk28b1Rvtdvi+ZseZ6p6TnLsuZrnP81Ir3dyq8H69mN/v5NGSzLpQpUj96CLO+tR7vAAkFYzHLiksuc/E9HM20IRzBUWx4e/3n5UcBQ9IppT5KZmYaEHsh0NxGRnMsDlNVb3p9IOsUmPu3IriI5ydLd2rBDBQ++PwAI7ZDSc0BxEJCx+fRIvWhYFCnMiv/9r79qSFQZhqGYFghsguAKG7uC6/zV5oaW8+gitzlibjB++qnVM0sMhOZmGG/DRpl22T9pag2rg5rBqQ+kLPLrns+tc80ZSm0fO55loXjgM5/UfkwPvTyvygwGLeTC54fSQT8WrwXMl6eB33t1UWllxt3bopHbl+OMGIJDlziElLcApW7exNCaE1hAFZST1dSBLsTFHPjN6PrRdCQ5YDjKGqUwMQzMTUPYBc7bBQdmrbWs3DUMHcWN56xzc4PR8eBOGkFP1iKUXZk4Mm9qrHEGxUdhfJeSjUX4ogOfldUDTlYlXgz9CdxDL7TSush46EBFqAeVk3xbeKy8PS8ffM+XR9YVFrhA8l/pM2I7v0pjLHO75X8Hncmunk11RmaTjQ+lVw3GmuB/FBnP+KW5EYMFb3T9GeOi69mGzT/v9kM4tG3GMExVwr0qJ7oh+vaqL3x1EKcZbPB3/BC3iXAfWmK4Fad2nBaPn3/ZvubtB1nczugHDwhivoev0/I1/6Dg+lJOd24SS/sZV720dWGhuFzyDKY37MnU2plPKNjADNZ28DQzlo3IntUfZnU+UqnF317e6wLY4SEIgwdHtol/pJPEsPcMbfh3bQeH1rpViszPP5WKIbp0XBy6I5rk+Kh2F+wkKe2xn4UE+9/mDBM6V8jWjwFOcVFh2iafxoPXd/jmRaCO/RCyV7Xsg9aZEPUO8xer9//tyuPu+LJ9RNqjcJETFfyPbFB4gLepwRS8Gq6FYbz1V4DzMRvKUWgG6yIemH3Qle2pu0aWUBpW8/AK/EJxEp/VKRgAAAABJRU5ErkJggg==\"","<script setup lang=\"ts\">\nimport { OrButtonV3 } from '@onereach/ui-components';\nimport { computed, useSlots } from 'vue';\n\nimport defaultSkillBandUrl from '../../../assets/skill-card-background.png';\nimport { CardSize, SkillCard } from '../../SkillCard';\nimport { FeedMarkdownContent } from '../FeedMarkdownContent';\nimport type { FeedSkillContentProps } from './types';\n\ndefineOptions({\n name: 'FeedSkillContent',\n});\n\nconst props = withDefaults(defineProps<FeedSkillContentProps>(), {\n skill: undefined,\n skillBackgroundUrl: undefined,\n skillCardSize: CardSize.S,\n showStartSkill: undefined,\n startSkillLabel: undefined,\n contentClass: undefined,\n internalLinkPattern: undefined,\n});\n\nconst emit = defineEmits<{\n 'start-skill': [];\n 'skill-click': [];\n}>();\n\nconst slots = useSlots();\n\nconst hasCustomSkillSlot = computed(() => Boolean(slots.skill));\nconst showSkillBand = computed(\n () => hasCustomSkillSlot.value || Boolean(props.skill),\n);\nconst showStartSkillButton = computed(\n () => props.showStartSkill !== false && Boolean(props.startSkillLabel),\n);\n\nconst skillBandStyle = computed(() => {\n if (!showSkillBand.value) {\n return undefined;\n }\n const url = props.skillBackgroundUrl ?? defaultSkillBandUrl;\n return {\n backgroundImage: `url(${url})`,\n };\n});\n\nfunction onStartSkill() {\n emit('start-skill');\n}\n\nfunction onSkillClick() {\n emit('skill-click');\n}\n</script>\n\n<template>\n <div class=\"feed-skill-content flex flex-col gap-md\">\n <div\n v-if=\"showSkillBand\"\n class=\"w-full overflow-hidden rounded-lg bg-surface-1 dark:bg-surface-1-dark\"\n :style=\"skillBandStyle\"\n >\n <slot name=\"skill\">\n <SkillCard\n v-if=\"skill\"\n :skill=\"skill\"\n :size=\"skillCardSize\"\n @click=\"onSkillClick\"\n />\n </slot>\n </div>\n\n <FeedMarkdownContent\n :text=\"text\"\n :content-class=\"contentClass\"\n :internal-link-pattern=\"internalLinkPattern\"\n />\n\n <OrButtonV3\n v-if=\"showStartSkillButton\"\n class=\"w-full md:w-auto\"\n variant=\"outlined\"\n color=\"primary\"\n @click=\"onStartSkill\"\n >\n {{ startSkillLabel }}\n </OrButtonV3>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport {\n FEED_EMBED_SANDBOX,\n FEED_EMBED_SIZE_CLASS,\n type FeedEmbedSize,\n} from '../feedEmbed';\n\ndefineOptions({\n name: 'FeedEmbed',\n});\n\nconst props = withDefaults(defineProps<{\n title: string;\n size?: FeedEmbedSize;\n /** URL for file embeds. Mutually exclusive with `srcdoc`. */\n src?: string;\n /** HTML document for html embeds. Mutually exclusive with `src`. */\n srcdoc?: string;\n}>(), {\n size: 'list',\n src: undefined,\n srcdoc: undefined,\n});\n\nconst iframeClass = computed(() => FEED_EMBED_SIZE_CLASS[props.size]);\nconst hasSource = computed(() => Boolean(props.src || props.srcdoc));\n</script>\n\n<template>\n <div\n v-if=\"hasSource\"\n class=\"feed-embed w-full overflow-hidden rounded-lg bg-surface-1 dark:bg-surface-1-dark\"\n :class=\"size === 'fill' ? 'flex h-full min-h-0 flex-1 flex-col' : undefined\"\n >\n <iframe\n :class=\"iframeClass\"\n :title=\"title\"\n :sandbox=\"FEED_EMBED_SANDBOX\"\n :src=\"src || undefined\"\n :srcdoc=\"srcdoc || undefined\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport FeedEmbed from '../FeedEmbed/FeedEmbed.vue';\nimport type { FeedHtmlContentProps } from './types';\n\ndefineOptions({\n name: 'FeedHtmlContent',\n});\n\nwithDefaults(defineProps<FeedHtmlContentProps>(), {\n size: 'list',\n});\n</script>\n\n<template>\n <FeedEmbed\n class=\"feed-html-content\"\n :title=\"title\"\n :size=\"size\"\n :srcdoc=\"content\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport FeedEmbed from '../FeedEmbed/FeedEmbed.vue';\nimport type { FeedFileContentProps } from './types';\n\ndefineOptions({\n name: 'FeedFileContent',\n});\n\nwithDefaults(defineProps<FeedFileContentProps>(), {\n size: 'list',\n});\n</script>\n\n<template>\n <FeedEmbed\n class=\"feed-file-content\"\n :title=\"title\"\n :size=\"size\"\n :src=\"src\"\n />\n</template>\n","import type { FeedEmbedSize } from '../../components/Feeds/feedEmbed';\nimport type { IdwSpacing, IdwTextStyle, IdwTone } from '../schema';\n\nexport type IdwCardTheme = 'dark' | 'light';\n\nexport type IdwCardHostConfig = {\n theme: IdwCardTheme;\n embedSize: FeedEmbedSize;\n};\n\nexport const DEFAULT_IDW_CARD_HOST_CONFIG: IdwCardHostConfig = {\n theme: 'dark',\n embedSize: 'list',\n};\n\nexport const IDW_SPACING_CLASS: Record<IdwSpacing, string> = {\n none: '',\n xs: 'mt-xs',\n sm: 'mt-sm',\n md: 'mt-md',\n lg: 'mt-lg',\n xl: 'mt-xl',\n};\n\nexport const IDW_TEXT_STYLE_CLASS: Record<IdwTextStyle, string> = {\n caption: 'typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark',\n body: 'typography-body-2-regular text-on-background dark:text-on-background-dark',\n headline: 'typography-headline-3 text-on-background dark:text-on-background-dark',\n};\n\nexport const IDW_TONE_SURFACE_CLASS: Record<IdwTone, string> = {\n default: '',\n emphasis: 'bg-surface-2 dark:bg-surface-2-dark rounded-lg p-md',\n success: 'bg-success-container dark:bg-success-container-dark text-on-success-container dark:text-on-success-container-dark rounded-lg p-md',\n warning: 'bg-warning-container dark:bg-warning-container-dark text-on-warning-container dark:text-on-warning-container-dark rounded-lg p-md',\n attention: 'bg-primary-container dark:bg-primary-container-dark text-on-primary-container dark:text-on-primary-container-dark rounded-lg p-md',\n};\n\nexport function resolveIdwCardHostConfig(\n overrides?: Partial<IdwCardHostConfig>,\n): IdwCardHostConfig {\n return {\n ...DEFAULT_IDW_CARD_HOST_CONFIG,\n ...overrides,\n };\n}\n","import { inject, type InjectionKey } from 'vue';\n\nexport type IdwCardFormApi = {\n getValue: (name: string) => unknown;\n setValue: (name: string, value: unknown) => void;\n getError: (name: string) => string | undefined;\n isHidden: (id?: string, isVisible?: boolean) => boolean;\n};\n\nexport const IDW_CARD_FORM_KEY: InjectionKey<IdwCardFormApi> = Symbol('idwCardForm');\n\nexport function useIdwCardForm(): IdwCardFormApi {\n const form = inject(IDW_CARD_FORM_KEY);\n if (!form) {\n throw new Error('IdwCard form controls must be rendered inside CardRenderer');\n }\n return form;\n}\n","import {\n FILE_TEMPLATE_ID,\n HTML_TEMPLATE_ID,\n MARKDOWN_TEMPLATE_ID,\n resolveIdwCardSource,\n SKILL_TEMPLATE_ID,\n type IdwCard,\n} from '@onereach/idw-contracts';\n\nimport type { CardFromSkillInput } from './types';\n\nfunction mustResolve(templateId: string, data: unknown): IdwCard {\n const result = resolveIdwCardSource({\n templateId,\n data,\n });\n if (!result.success) {\n throw new Error(result.issues[0]?.message ?? `Invalid ${templateId} template data`);\n }\n return result.card;\n}\n\nexport function cardFromMarkdown(text: string): IdwCard {\n return mustResolve(MARKDOWN_TEMPLATE_ID, { text });\n}\n\nexport function cardFromHtml(title: string, content: string): IdwCard {\n return mustResolve(HTML_TEMPLATE_ID, {\n title,\n content,\n });\n}\n\nexport function cardFromFile(title: string, src: string): IdwCard {\n return mustResolve(FILE_TEMPLATE_ID, {\n title,\n src,\n });\n}\n\nexport function cardFromSkill(input: CardFromSkillInput): IdwCard {\n return mustResolve(SKILL_TEMPLATE_ID, {\n text: input.text,\n skill: input.skill,\n startSkillLabel: input.startSkillLabel,\n });\n}\n","import type { IdwCardActionStyle } from '../schema';\n\nexport function idwCardActionButtonProps(style: IdwCardActionStyle = 'default') {\n if (style === 'primary') {\n return {\n variant: 'contained' as const,\n color: 'primary' as const,\n };\n }\n if (style === 'destructive') {\n return {\n variant: 'outlined' as const,\n color: 'danger' as const,\n };\n }\n return {\n variant: 'outlined' as const,\n color: 'primary' as const,\n };\n}\n","<script setup lang=\"ts\">\nimport { OrButtonV3 } from '@onereach/ui-components';\n\nimport type { IdwCardAction } from '../schema';\nimport { idwCardActionButtonProps } from './actionStyle';\nimport type { IdwCardActionEvent } from './types';\n\ndefineOptions({\n name: 'IdwCardActionBar',\n});\n\ndefineProps<{\n actions: IdwCardAction[];\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n}>();\n\nfunction onClick(action: IdwCardAction) {\n emit('action', {\n verb: action.verb,\n title: action.title,\n data: action.data,\n url: action.url,\n skillId: action.skillId,\n targetIds: action.targetIds,\n card: action.card,\n });\n}\n</script>\n\n<template>\n <div class=\"idw-card-action-bar mt-lg flex min-w-0 flex-wrap items-center gap-sm\">\n <OrButtonV3\n v-for=\"(action, index) in actions\"\n :key=\"action.title + index\"\n v-bind=\"idwCardActionButtonProps(action.style)\"\n type=\"button\"\n @click=\"onClick(action)\"\n >\n {{ action.title }}\n </OrButtonV3>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwActionSetElement } from '../../schema';\nimport IdwCardActionBar from '../IdwCardActionBar.vue';\nimport type { IdwCardActionEvent } from '../types';\n\ndefineOptions({\n name: 'IdwCardActionSetElement',\n});\n\ndefineProps<{\n element: IdwActionSetElement;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n}>();\n</script>\n\n<template>\n <IdwCardActionBar\n :actions=\"element.actions\"\n @action=\"emit('action', $event)\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport type { IdwBadgeElement, IdwTone } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardBadgeElement',\n});\n\nconst props = defineProps<{\n element: IdwBadgeElement;\n}>();\n\nconst toneClass: Record<IdwTone, string> = {\n default: 'bg-surface-2 dark:bg-surface-2-dark text-on-surface dark:text-on-surface-dark',\n emphasis: 'bg-surface-2 dark:bg-surface-2-dark text-on-surface dark:text-on-surface-dark',\n success: 'bg-success-container dark:bg-success-container-dark text-on-success-container dark:text-on-success-container-dark',\n warning: 'bg-warning-container dark:bg-warning-container-dark text-on-warning-container dark:text-on-warning-container-dark',\n attention: 'bg-primary-container dark:bg-primary-container-dark text-on-primary-container dark:text-on-primary-container-dark',\n};\n\nconst badgeClass = computed(() => [\n 'inline-flex w-fit items-center rounded-md px-sm py-xs typography-caption-semibold',\n toneClass[props.element.tone ?? 'emphasis'],\n]);\n</script>\n\n<template>\n <span :class=\"badgeClass\">\n {{ element.text }}\n </span>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwCardHostConfig } from '../../host';\nimport type { IdwColumnSetElement } from '../../schema';\nimport IdwCardElementView from '../IdwCardElementView.vue';\nimport type { IdwCardActionEvent } from '../types';\n\ndefineOptions({\n name: 'IdwCardColumnSetElement',\n});\n\ndefineProps<{\n element: IdwColumnSetElement;\n hostConfig: IdwCardHostConfig;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n\nfunction columnClass(width?: 'auto' | 'stretch') {\n return width === 'auto' ? 'min-w-0 shrink' : 'min-w-0 flex-1';\n}\n</script>\n\n<template>\n <div class=\"idw-card-column-set flex min-w-0 flex-wrap items-center gap-sm\">\n <div\n v-for=\"(column, columnIndex) in element.columns\"\n :key=\"columnIndex\"\n :class=\"columnClass(column.width)\"\n >\n <IdwCardElementView\n v-for=\"(child, index) in column.items\"\n :key=\"child.id || index\"\n :element=\"child\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwCardHostConfig } from '../../host';\nimport type { IdwContainerElement } from '../../schema';\nimport IdwCardElementView from '../IdwCardElementView.vue';\nimport type { IdwCardActionEvent } from '../types';\n\ndefineOptions({\n name: 'IdwCardContainerElement',\n});\n\ndefineProps<{\n element: IdwContainerElement;\n hostConfig: IdwCardHostConfig;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n</script>\n\n<template>\n <div class=\"idw-card-container flex min-w-0 flex-col\">\n <IdwCardElementView\n v-for=\"(child, index) in element.items\"\n :key=\"child.id || index\"\n :element=\"child\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwFactSetElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardFactSetElement',\n});\n\ndefineProps<{\n element: IdwFactSetElement;\n}>();\n</script>\n\n<template>\n <dl\n v-if=\"element.facts.length\"\n class=\"idw-card-fact-set m-0 grid grid-cols-[max-content_minmax(0,1fr)] gap-x-md gap-y-sm\"\n >\n <template\n v-for=\"(fact, index) in element.facts\"\n :key=\"`${fact.title}-${index}`\"\n >\n <dt class=\"m-0 typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark\">\n {{ fact.title }}\n </dt>\n <dd class=\"m-0 min-w-0 typography-body-2-regular text-on-background dark:text-on-background-dark\">\n {{ fact.value }}\n </dd>\n </template>\n </dl>\n</template>\n","<script setup lang=\"ts\">\nimport { FeedFileContent } from '../../../components/Feeds/FeedFileContent';\nimport type { IdwCardHostConfig } from '../../host';\nimport type { IdwFileElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardFileElement',\n});\n\ndefineProps<{\n element: IdwFileElement;\n hostConfig: IdwCardHostConfig;\n}>();\n</script>\n\n<template>\n <FeedFileContent\n :title=\"element.title\"\n :src=\"element.src\"\n :size=\"hostConfig.embedSize\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { FeedHtmlContent } from '../../../components/Feeds/FeedHtmlContent';\nimport type { IdwCardHostConfig } from '../../host';\nimport type { IdwHtmlElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardHtmlElement',\n});\n\ndefineProps<{\n element: IdwHtmlElement;\n hostConfig: IdwCardHostConfig;\n}>();\n</script>\n\n<template>\n <FeedHtmlContent\n :title=\"element.title\"\n :content=\"element.content\"\n :size=\"hostConfig.embedSize\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { OrIconV3 } from '@onereach/ui-components';\n\nimport type { IdwIconElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardIconElement',\n});\n\ndefineProps<{\n element: IdwIconElement;\n}>();\n</script>\n\n<template>\n <OrIconV3\n :icon=\"element.icon\"\n class=\"text-on-background dark:text-on-background-dark\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwImageElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardImageElement',\n});\n\ndefineProps<{\n element: IdwImageElement;\n}>();\n</script>\n\n<template>\n <img\n class=\"idw-card-image max-w-full rounded-lg bg-surface-1 dark:bg-surface-1-dark\"\n :src=\"element.url\"\n :alt=\"element.alt\"\n >\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwImageSetElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardImageSetElement',\n});\n\ndefineProps<{\n element: IdwImageSetElement;\n}>();\n</script>\n\n<template>\n <div class=\"idw-card-image-set flex min-w-0 flex-wrap gap-sm\">\n <img\n v-for=\"(image, index) in element.images\"\n :key=\"`${image.url}-${index}`\"\n class=\"size-16 rounded-md object-cover bg-surface-1 dark:bg-surface-1-dark\"\n :src=\"image.url\"\n :alt=\"image.alt\"\n >\n </div>\n</template>\n","export function parseCardDate(value: unknown): Date | undefined {\n if (value instanceof Date && !Number.isNaN(value.getTime())) {\n return value;\n }\n if (typeof value !== 'string' || !value.trim()) {\n return undefined;\n }\n if (/^\\d{2}:\\d{2}$/.test(value)) {\n const [hours, minutes] = value.split(':').map(Number);\n const parsed = new Date();\n parsed.setHours(hours, minutes, 0, 0);\n return parsed;\n }\n const parsed = new Date(value);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n}\n\nfunction pad(value: number) {\n return String(value).padStart(2, '0');\n}\n\nexport function toDateValue(value: Date | null | undefined): string {\n if (!value || Number.isNaN(value.getTime())) {\n return '';\n }\n return `${value.getFullYear()}-${pad(value.getMonth() + 1)}-${pad(value.getDate())}`;\n}\n\nexport function toTimeValue(value: Date | null | undefined): string {\n if (!value || Number.isNaN(value.getTime())) {\n return '';\n }\n return `${pad(value.getHours())}:${pad(value.getMinutes())}`;\n}\n\nexport function toDateTimeValue(value: Date | null | undefined): string {\n if (!value || Number.isNaN(value.getTime())) {\n return '';\n }\n return value.toISOString();\n}\n","<script setup lang=\"ts\">\nimport {\n OrCheckboxV3,\n OrDatePickerV3,\n OrDateTimePickerV3,\n OrInputV3,\n OrRadioV3,\n OrRangeSliderV3,\n OrRatingV3,\n OrSelectV3,\n OrSliderV3,\n OrSwitchV3,\n OrTextareaV3,\n OrTimePickerV3,\n} from '@onereach/ui-components';\nimport { computed } from 'vue';\n\nimport { parseCardDate, toDateTimeValue, toDateValue, toTimeValue } from '../../form/dates';\nimport { useIdwCardForm } from '../../form/formContext';\nimport type { IdwCardInputElement, IdwLocationValue } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardInputElement',\n});\n\nconst props = defineProps<{\n element: IdwCardInputElement;\n}>();\n\nconst form = useIdwCardForm();\n\nconst error = computed(() => form.getError(props.element.name));\nconst model = computed(() => form.getValue(props.element.name));\n\nconst textType = computed(() => (\n props.element.type === 'Input.Text' && props.element.style === 'password' ? 'password' : 'text'\n));\n\nconst textInputMode = computed(() => {\n if (props.element.type !== 'Input.Text') {\n return undefined;\n }\n if (props.element.style === 'email') {\n return 'email';\n }\n if (props.element.style === 'url') {\n return 'url';\n }\n if (props.element.style === 'tel') {\n return 'tel';\n }\n return undefined;\n});\n\nconst stringValue = computed(() => (typeof model.value === 'string' ? model.value : ''));\nconst selectValue = computed(() => model.value as string | string[] | undefined);\nconst radioValue = computed(() => (\n typeof model.value === 'string' || typeof model.value === 'number' ? model.value : undefined\n));\n\nconst selectOptions = computed(() => {\n if (props.element.type !== 'Input.ChoiceSet') {\n return [];\n }\n return props.element.choices.map((choice) => ({\n label: choice.title,\n value: choice.value,\n disabled: choice.disabled,\n }));\n});\n\nconst location = computed<IdwLocationValue>(() => {\n const value = model.value;\n if (value && typeof value === 'object') {\n return value as IdwLocationValue;\n }\n return { address: '' };\n});\n\nfunction set(value: unknown) {\n form.setValue(props.element.name, value);\n}\n\nfunction toggleChoice(choiceValue: string, checked: boolean) {\n const current = Array.isArray(model.value) ? [...model.value as string[]] : [];\n const next = checked\n ? Array.from(new Set([...current, choiceValue]))\n : current.filter((item) => item !== choiceValue);\n set(next);\n}\n\nfunction setLocation(patch: IdwLocationValue) {\n set({ ...location.value, ...patch });\n}\n</script>\n\n<template>\n <div class=\"idw-card-input flex min-w-0 flex-col gap-xs\">\n <OrTextareaV3\n v-if=\"element.type === 'Input.Text' && element.multiline\"\n :model-value=\"stringValue\"\n :label=\"element.label\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n :rows=\"element.rows || 3\"\n @update:model-value=\"set\"\n />\n <OrInputV3\n v-else-if=\"element.type === 'Input.Text'\"\n :model-value=\"stringValue\"\n :type=\"textType\"\n :inputmode=\"textInputMode\"\n :label=\"element.label\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <OrInputV3\n v-else-if=\"element.type === 'Input.Number'\"\n :model-value=\"model as number | string | undefined\"\n type=\"number\"\n :label=\"element.label\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set($event === '' || $event == null ? undefined : Number($event))\"\n />\n <OrSwitchV3\n v-else-if=\"element.type === 'Input.Toggle'\"\n :model-value=\"Boolean(model)\"\n :label=\"element.label\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <OrCheckboxV3\n v-else-if=\"element.type === 'Input.Checkbox'\"\n :model-value=\"Boolean(model)\"\n :label=\"element.label\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <OrSelectV3\n v-else-if=\"element.type === 'Input.ChoiceSet' && element.style !== 'expanded'\"\n :model-value=\"selectValue\"\n :options=\"selectOptions\"\n :multiple=\"element.multi\"\n :enable-search=\"element.style === 'filtered'\"\n :label=\"element.label\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <div\n v-else-if=\"element.type === 'Input.ChoiceSet'\"\n class=\"flex flex-col gap-xs\"\n >\n <span\n v-if=\"element.label\"\n class=\"typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ element.label }}\n </span>\n <template v-if=\"element.multi\">\n <OrCheckboxV3\n v-for=\"choice in element.choices\"\n :key=\"choice.value\"\n :model-value=\"Array.isArray(model) && (model as string[]).includes(choice.value)\"\n :label=\"choice.title\"\n :disabled=\"element.disabled || choice.disabled\"\n @update:model-value=\"toggleChoice(choice.value, $event)\"\n />\n </template>\n <template v-else>\n <OrRadioV3\n v-for=\"choice in element.choices\"\n :key=\"choice.value\"\n :model-value=\"radioValue\"\n :value=\"choice.value\"\n :label=\"choice.title\"\n :disabled=\"element.disabled || choice.disabled\"\n @update:model-value=\"set\"\n />\n </template>\n <span\n v-if=\"error || element.hint\"\n class=\"typography-caption-regular\"\n :class=\"error\n ? 'text-error dark:text-error-dark'\n : 'text-on-surface-variant dark:text-on-surface-variant-dark'\"\n >\n {{ error || element.hint }}\n </span>\n </div>\n <OrDatePickerV3\n v-else-if=\"element.type === 'Input.Date'\"\n :model-value=\"parseCardDate(model)\"\n :label=\"element.label\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set(toDateValue($event))\"\n />\n <OrTimePickerV3\n v-else-if=\"element.type === 'Input.Time'\"\n :model-value=\"parseCardDate(model)\"\n :label=\"element.label\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set(toTimeValue($event))\"\n />\n <OrDateTimePickerV3\n v-else-if=\"element.type === 'Input.DateTime'\"\n :model-value=\"parseCardDate(model)\"\n :label=\"element.label\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set(toDateTimeValue($event))\"\n />\n <div\n v-else-if=\"element.type === 'Input.Slider'\"\n class=\"flex flex-col gap-xs\"\n >\n <span\n v-if=\"element.label\"\n class=\"typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ element.label }}\n </span>\n <OrSliderV3\n :model-value=\"Number(model ?? element.min ?? 0)\"\n :min-value=\"element.min\"\n :max-value=\"element.max\"\n :step=\"element.step\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n </div>\n <div\n v-else-if=\"element.type === 'Input.Range'\"\n class=\"flex flex-col gap-xs\"\n >\n <span\n v-if=\"element.label\"\n class=\"typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ element.label }}\n </span>\n <OrRangeSliderV3\n :model-value=\"(Array.isArray(model) ? model : [element.min ?? 0, element.max ?? 100]) as [number, number]\"\n :min-value=\"element.min\"\n :max-value=\"element.max\"\n :step=\"element.step\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n </div>\n <div\n v-else-if=\"element.type === 'Input.Rating'\"\n class=\"flex flex-col gap-xs\"\n >\n <span\n v-if=\"element.label\"\n class=\"typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ element.label }}\n </span>\n <OrRatingV3\n :model-value=\"Number(model ?? 0)\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n </div>\n <div\n v-else-if=\"element.type === 'Input.Location'\"\n class=\"flex flex-col gap-sm\"\n >\n <OrInputV3\n :model-value=\"location.address || ''\"\n :label=\"element.label || 'Location'\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"setLocation({ address: String($event || '') })\"\n />\n <div\n v-if=\"element.includeCoordinates\"\n class=\"grid grid-cols-2 gap-sm\"\n >\n <OrInputV3\n :model-value=\"location.lat\"\n type=\"number\"\n label=\"Latitude\"\n :disabled=\"element.disabled\"\n @update:model-value=\"setLocation({ lat: $event === '' || $event == null ? undefined : Number($event) })\"\n />\n <OrInputV3\n :model-value=\"location.lng\"\n type=\"number\"\n label=\"Longitude\"\n :disabled=\"element.disabled\"\n @update:model-value=\"setLocation({ lng: $event === '' || $event == null ? undefined : Number($event) })\"\n />\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwMediaElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardMediaElement',\n});\n\ndefineProps<{\n element: IdwMediaElement;\n}>();\n</script>\n\n<template>\n <video\n v-if=\"(element.mediaType || 'video') === 'video'\"\n class=\"idw-card-media w-full rounded-lg bg-surface-1 dark:bg-surface-1-dark\"\n :src=\"element.url\"\n :poster=\"element.poster\"\n :title=\"element.title\"\n controls\n />\n <audio\n v-else\n class=\"idw-card-media w-full\"\n :src=\"element.url\"\n :title=\"element.title\"\n controls\n />\n</template>\n","<script setup lang=\"ts\">\nimport { OrProgressV3, ProgressColor, ProgressType } from '@onereach/ui-components';\nimport { computed } from 'vue';\n\nimport type { IdwProgressElement, IdwTone } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardProgressElement',\n});\n\nconst props = defineProps<{\n element: IdwProgressElement;\n}>();\n\nconst toneColor: Record<IdwTone, ProgressColor> = {\n default: ProgressColor.Primary,\n emphasis: ProgressColor.Primary,\n success: ProgressColor.Success,\n warning: ProgressColor.Warning,\n attention: ProgressColor.Error,\n};\n\nconst color = computed(() => toneColor[props.element.tone ?? 'default']);\nconst type = computed(() => (\n props.element.variant === 'circle' ? ProgressType.Circle : ProgressType.Linear\n));\n</script>\n\n<template>\n <div class=\"idw-card-progress flex min-w-0 flex-col gap-sm\">\n <span\n v-if=\"element.label\"\n class=\"typography-caption-semibold text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ element.label }}\n </span>\n <OrProgressV3\n class=\"w-full\"\n :value=\"element.value\"\n :max-value=\"element.max ?? 100\"\n :type=\"type\"\n :color=\"color\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { FeedSkillContent } from '../../../components/Feeds/FeedSkillContent';\nimport type { IdwSkillElement } from '../../schema';\nimport type { IdwCardActionEvent } from '../types';\n\ndefineOptions({\n name: 'IdwCardSkillElement',\n});\n\nconst props = defineProps<{\n element: IdwSkillElement;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n\nfunction onStartSkill() {\n emit('action', {\n verb: 'start-skill',\n title: props.element.startSkillLabel || 'Start skill',\n skillId: props.element.skill?.id,\n });\n}\n</script>\n\n<template>\n <FeedSkillContent\n :text=\"element.text\"\n :skill=\"element.skill\"\n :start-skill-label=\"element.startSkillLabel\"\n @start-skill=\"onStartSkill\"\n @skill-click=\"emit('skill-click')\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwTableElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardTableElement',\n});\n\ndefineProps<{\n element: IdwTableElement;\n}>();\n</script>\n\n<template>\n <div class=\"idw-card-table w-full min-w-0 overflow-x-auto rounded-lg bg-surface-2 dark:bg-surface-2-dark\">\n <table class=\"w-full border-collapse\">\n <thead>\n <tr>\n <th\n v-for=\"column in element.columns\"\n :key=\"column.title\"\n class=\"px-md py-sm text-left typography-caption-semibold text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ column.title }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n v-for=\"(row, rowIndex) in element.rows\"\n :key=\"rowIndex\"\n class=\"border-t border-outline-opacity-0-12 dark:border-outline-opacity-0-12-dark\"\n >\n <td\n v-for=\"(cell, cellIndex) in row\"\n :key=\"cellIndex\"\n class=\"px-md py-sm typography-body-2-regular text-on-background dark:text-on-background-dark\"\n >\n {{ cell }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport { FeedMarkdownContent } from '../../../components/Feeds/FeedMarkdownContent';\nimport { IDW_TEXT_STYLE_CLASS, IDW_TONE_SURFACE_CLASS } from '../../host';\nimport type { IdwTextElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardTextElement',\n});\n\nconst props = defineProps<{\n element: IdwTextElement;\n}>();\n\nconst contentClass = computed(() => {\n const textStyle = props.element.textStyle ?? 'body';\n const tone = props.element.tone ?? 'default';\n return [\n IDW_TEXT_STYLE_CLASS[textStyle],\n IDW_TONE_SURFACE_CLASS[tone],\n '[&_:where(p,ul,ol,h1,h2,h3,h4)]:m-0 [&_p+_p]:mt-sm',\n ].filter(Boolean).join(' ');\n});\n</script>\n\n<template>\n <FeedMarkdownContent\n :text=\"element.text\"\n :content-class=\"contentClass\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport { useIdwCardForm } from '../form/formContext';\nimport { IDW_SPACING_CLASS, IDW_TONE_SURFACE_CLASS, type IdwCardHostConfig } from '../host';\nimport { isIdwCardInputElement, type IdwCardElement } from '../schema';\nimport ActionSetElement from './elements/ActionSetElement.vue';\nimport BadgeElement from './elements/BadgeElement.vue';\nimport ColumnSetElement from './elements/ColumnSetElement.vue';\nimport ContainerElement from './elements/ContainerElement.vue';\nimport FactSetElement from './elements/FactSetElement.vue';\nimport FileElement from './elements/FileElement.vue';\nimport HtmlElement from './elements/HtmlElement.vue';\nimport IconElement from './elements/IconElement.vue';\nimport ImageElement from './elements/ImageElement.vue';\nimport ImageSetElement from './elements/ImageSetElement.vue';\nimport InputElement from './elements/InputElement.vue';\nimport MediaElement from './elements/MediaElement.vue';\nimport ProgressElement from './elements/ProgressElement.vue';\nimport SkillElement from './elements/SkillElement.vue';\nimport TableElement from './elements/TableElement.vue';\nimport TextElement from './elements/TextElement.vue';\nimport type { IdwCardActionEvent } from './types';\n\ndefineOptions({\n name: 'IdwCardElementView',\n});\n\nconst props = defineProps<{\n element: IdwCardElement;\n hostConfig: IdwCardHostConfig;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n\nconst form = useIdwCardForm();\n\nconst isHidden = computed(() => form.isHidden(props.element.id, props.element.isVisible));\n\nconst spacingClass = computed(() => {\n const spacing = props.element.spacing ?? 'none';\n return IDW_SPACING_CLASS[spacing];\n});\n\nconst toneClass = computed(() => {\n if (props.element.type !== 'Container') {\n return '';\n }\n return IDW_TONE_SURFACE_CLASS[props.element.tone ?? 'default'];\n});\n\nconst inputElement = computed(() => (\n isIdwCardInputElement(props.element) ? props.element : undefined\n));\n</script>\n\n<template>\n <div\n v-if=\"!isHidden\"\n class=\"idw-card-element min-w-0\"\n :class=\"[\n spacingClass,\n toneClass,\n element.separator ? 'border-t border-outline-opacity-0-12 dark:border-outline-opacity-0-12-dark pt-md' : '',\n (element.type === 'Html' || element.type === 'File') && hostConfig.embedSize === 'fill'\n ? 'flex-1 min-h-0 flex flex-col'\n : '',\n ]\"\n :data-element-type=\"element.type\"\n >\n <InputElement\n v-if=\"inputElement\"\n :element=\"inputElement\"\n />\n <TextElement\n v-else-if=\"element.type === 'Text'\"\n :element=\"element\"\n />\n <ImageElement\n v-else-if=\"element.type === 'Image'\"\n :element=\"element\"\n />\n <FactSetElement\n v-else-if=\"element.type === 'FactSet'\"\n :element=\"element\"\n />\n <ContainerElement\n v-else-if=\"element.type === 'Container'\"\n :element=\"element\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n <ColumnSetElement\n v-else-if=\"element.type === 'ColumnSet'\"\n :element=\"element\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n <HtmlElement\n v-else-if=\"element.type === 'Html'\"\n :element=\"element\"\n :host-config=\"hostConfig\"\n />\n <FileElement\n v-else-if=\"element.type === 'File'\"\n :element=\"element\"\n :host-config=\"hostConfig\"\n />\n <SkillElement\n v-else-if=\"element.type === 'Skill'\"\n :element=\"element\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n <ActionSetElement\n v-else-if=\"element.type === 'ActionSet'\"\n :element=\"element\"\n @action=\"emit('action', $event)\"\n />\n <ProgressElement\n v-else-if=\"element.type === 'Progress'\"\n :element=\"element\"\n />\n <BadgeElement\n v-else-if=\"element.type === 'Badge'\"\n :element=\"element\"\n />\n <IconElement\n v-else-if=\"element.type === 'Icon'\"\n :element=\"element\"\n />\n <ImageSetElement\n v-else-if=\"element.type === 'ImageSet'\"\n :element=\"element\"\n />\n <MediaElement\n v-else-if=\"element.type === 'Media'\"\n :element=\"element\"\n />\n <TableElement\n v-else-if=\"element.type === 'Table'\"\n :element=\"element\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, provide, reactive, ref, watch } from 'vue';\n\nimport { IDW_CARD_FORM_KEY } from '../form/formContext';\nimport { resolveIdwCardHostConfig, type IdwCardHostConfig } from '../host';\nimport {\n collectInitialInputValues,\n isElementVisible,\n isInputEmpty,\n listIdwCardInputs,\n type IdwCard,\n} from '../schema';\nimport type { CardRendererSource } from '../templates';\nimport { resolveCardRendererSource } from '../templates';\nimport IdwCardActionBar from './IdwCardActionBar.vue';\nimport IdwCardElementView from './IdwCardElementView.vue';\nimport type { IdwCardActionEvent } from './types';\n\ndefineOptions({\n name: 'CardRenderer',\n});\n\nconst props = withDefaults(defineProps<{\n source: CardRendererSource;\n hostConfig?: Partial<IdwCardHostConfig>;\n}>(), {\n hostConfig: undefined,\n});\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n\nconst resolvedHostConfig = computed(() => resolveIdwCardHostConfig(props.hostConfig));\nconst resolved = computed(() => resolveCardRendererSource(props.source));\nconst card = computed(() => (resolved.value.success ? resolved.value.card : undefined));\n\nconst values = reactive<Record<string, unknown>>({});\nconst errors = reactive<Record<string, string>>({});\nconst hiddenIds = ref(new Set<string>());\nconst openShowCards = ref<Record<string, IdwCard>>({});\n\nfunction resetForm() {\n Object.keys(values).forEach((key) => {\n delete values[key];\n });\n Object.keys(errors).forEach((key) => {\n delete errors[key];\n });\n hiddenIds.value = new Set();\n openShowCards.value = {};\n if (!card.value) {\n return;\n }\n Object.assign(values, collectInitialInputValues(card.value.body));\n}\n\nwatch(card, resetForm, { immediate: true });\n\nprovide(IDW_CARD_FORM_KEY, {\n getValue: (name) => values[name],\n setValue: (name, value) => {\n values[name] = value;\n delete errors[name];\n },\n getError: (name) => errors[name],\n isHidden: (id, isVisible) => !isElementVisible({ id, isVisible }, hiddenIds.value),\n});\n\nconst errorMessage = computed(() => {\n if (resolved.value.success) {\n return undefined;\n }\n return resolved.value.fallbackText || 'This card could not be displayed.';\n});\n\nfunction validateRequired(): boolean {\n if (!card.value) {\n return true;\n }\n let valid = true;\n for (const input of listIdwCardInputs(card.value.body, hiddenIds.value)) {\n if (!input.visible || !input.required) {\n continue;\n }\n if (isInputEmpty(values[input.name])) {\n errors[input.name] = input.errorMessage || 'This field is required.';\n valid = false;\n }\n }\n return valid;\n}\n\nfunction onAction(event: IdwCardActionEvent) {\n if (event.verb === 'toggle-visibility' && event.targetIds?.length) {\n const next = new Set(hiddenIds.value);\n for (const id of event.targetIds) {\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n }\n hiddenIds.value = next;\n }\n\n if (event.verb === 'show-card' && event.card) {\n const next = { ...openShowCards.value };\n if (next[event.title]) {\n delete next[event.title];\n } else {\n next[event.title] = event.card;\n }\n openShowCards.value = next;\n }\n\n if (event.verb === 'submit' || event.verb === 'approve' || event.verb === 'reject') {\n if (!validateRequired()) {\n return;\n }\n }\n\n emit('action', {\n ...event,\n inputs: { ...values },\n });\n}\n</script>\n\n<template>\n <section\n class=\"idw-card flex min-w-0 flex-col bg-surface dark:bg-surface-dark text-on-surface dark:text-on-surface-dark\"\n :class=\"[\n resolvedHostConfig.theme === 'dark' ? 'dark' : undefined,\n resolvedHostConfig.embedSize === 'fill' ? 'flex-1 min-h-0' : undefined,\n ]\"\n data-testid=\"idw-card\"\n >\n <template v-if=\"card\">\n <IdwCardElementView\n v-for=\"(element, index) in card.body\"\n :key=\"element.id || index\"\n :element=\"element\"\n :host-config=\"resolvedHostConfig\"\n @action=\"onAction\"\n @skill-click=\"emit('skill-click')\"\n />\n <IdwCardActionBar\n v-if=\"card.actions?.length\"\n :actions=\"card.actions\"\n @action=\"onAction\"\n />\n <CardRenderer\n v-for=\"(nestedCard, title) in openShowCards\"\n :key=\"`show-${title}`\"\n :source=\"{ card: nestedCard }\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n </template>\n <p\n v-else\n class=\"m-0 typography-body-2-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n data-testid=\"idw-card-fallback\"\n >\n {{ errorMessage }}\n </p>\n </section>\n</template>\n","<script setup lang=\"ts\">\nimport { CardRenderer, type IdwCardActionEvent, type IdwCardHostConfig } from '../../../idw-card';\nimport { FeedFileContent } from '../FeedFileContent';\nimport { FeedHtmlContent } from '../FeedHtmlContent';\nimport { FeedMarkdownContent } from '../FeedMarkdownContent';\nimport { FeedSkillContent } from '../FeedSkillContent';\nimport type { FeedListItem } from './types';\n\ndefineOptions({\n name: 'FeedListItemBody',\n});\n\ndefineProps<{\n item: FeedListItem;\n cardHostConfig?: Partial<IdwCardHostConfig>;\n}>();\n\nconst emit = defineEmits<{\n 'start-skill': [];\n 'skill-click': [];\n action: [event: IdwCardActionEvent];\n}>();\n</script>\n\n<template>\n <CardRenderer\n v-if=\"item.type === 'card'\"\n :source=\"item.source\"\n :host-config=\"cardHostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n <FeedFileContent\n v-else-if=\"item.type === 'file'\"\n :title=\"item.title\"\n :src=\"item.fileUrl\"\n />\n <FeedHtmlContent\n v-else-if=\"item.type === 'html'\"\n :title=\"item.title\"\n :content=\"item.content\"\n />\n <FeedSkillContent\n v-else-if=\"item.type === 'skill'\"\n :text=\"item.content\"\n :skill=\"item.skill\"\n :skill-background-url=\"item.skillBackgroundUrl\"\n :skill-card-size=\"item.skillCardSize\"\n :start-skill-label=\"item.startSkillLabel\"\n @start-skill=\"emit('start-skill')\"\n @skill-click=\"emit('skill-click')\"\n />\n <FeedMarkdownContent\n v-else\n :text=\"item.content\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { OrLoaderV3 } from '@onereach/ui-components';\nimport { computed, ref, useSlots } from 'vue';\n\nimport { FeedItemBase } from '../FeedItemBase';\nimport type { FeedItemControl } from '../FeedItemBase/types';\nimport type { IdwCardActionEvent } from '../../../idw-card';\nimport FeedListItemBody from './FeedListItemBody.vue';\nimport type { FeedListItem, FeedListProps } from './types';\n\ndefineOptions({\n name: 'FeedList',\n});\n\nconst props = withDefaults(defineProps<FeedListProps>(), {\n loading: false,\n loadingMore: false,\n emptyLabel: 'No posts yet',\n controlLabels: undefined,\n reachBottomOffset: 500,\n itemClass: undefined,\n});\n\nconst emit = defineEmits<{\n 'reach-bottom': [];\n fullscreen: [item: FeedListItem];\n 'start-skill': [item: FeedListItem];\n 'skill-click': [item: FeedListItem];\n action: [item: FeedListItem, event: IdwCardActionEvent];\n 'control-click': [item: FeedListItem, control: FeedItemControl];\n expand: [item: FeedListItem];\n collapse: [item: FeedListItem];\n 'update:item-expanded': [item: FeedListItem, expanded: boolean];\n}>();\n\nconst slots = useSlots();\n\nconst hasHeader = computed(() => Boolean(slots.header));\nconst hasEmptySlot = computed(() => Boolean(slots.empty));\nconst showEmpty = computed(() => !props.loading && props.items.length === 0);\n\n/** Edge-trigger: only emit when crossing into the near-bottom zone. */\nconst wasNearBottom = ref(false);\n\nfunction isHtmlOrFile(item: FeedListItem): boolean {\n return item.type === 'html' || item.type === 'file';\n}\n\nfunction itemFullscreenControl(item: FeedListItem): boolean {\n if (typeof item.fullscreenControl === 'boolean') {\n return item.fullscreenControl;\n }\n return isHtmlOrFile(item);\n}\n\nfunction itemClassFor(item: FeedListItem): string | undefined {\n const unconstrained = isHtmlOrFile(item)\n ? '[&_.feed-item-base__body]:!max-h-none'\n : undefined;\n if (props.itemClass && unconstrained) {\n return `${props.itemClass} ${unconstrained}`;\n }\n return props.itemClass ?? unconstrained;\n}\n\nfunction onScroll(event: Event) {\n const el = event.target as HTMLElement | null;\n if (!el || props.loading || props.loadingMore) {\n return;\n }\n\n const distanceFromBottom = el.scrollHeight - el.scrollTop - el.clientHeight;\n const nearBottom = distanceFromBottom <= props.reachBottomOffset;\n\n if (nearBottom && !wasNearBottom.value) {\n emit('reach-bottom');\n }\n\n wasNearBottom.value = nearBottom;\n}\n</script>\n\n<template>\n <section class=\"feed-list flex h-full min-h-0 flex-col overflow-hidden\">\n <div\n v-if=\"hasHeader\"\n class=\"feed-list__header shrink-0\"\n >\n <slot name=\"header\" />\n </div>\n\n <div\n class=\"feed-list__scroll flex min-h-0 flex-1 flex-col gap-y-md overflow-y-auto\"\n @scroll.passive=\"onScroll\"\n >\n <div\n v-if=\"loading\"\n class=\"flex flex-1 items-center justify-center py-xl\"\n >\n <slot name=\"loading\">\n <OrLoaderV3\n variant=\"circular\"\n color=\"primary\"\n size=\"s\"\n />\n </slot>\n </div>\n\n <template v-else>\n <div\n v-if=\"showEmpty\"\n class=\"py-xl text-center typography-headline-4 text-on-background dark:text-on-background-dark\"\n >\n <slot\n v-if=\"hasEmptySlot\"\n name=\"empty\"\n />\n <template v-else>\n {{ emptyLabel }}\n </template>\n </div>\n\n <FeedItemBase\n v-for=\"item in items\"\n :id=\"item.id\"\n :key=\"item.id\"\n :class=\"itemClassFor(item)\"\n :title=\"item.title\"\n :short-content=\"item.shortContent\"\n :timestamp=\"item.timestamp\"\n :timestamp-datetime=\"item.timestampDatetime\"\n :source=\"item.source\"\n :is-new=\"item.isNew\"\n :expandable=\"item.expandable !== false\"\n :fullscreen-control=\"itemFullscreenControl(item)\"\n :mention-control=\"item.mentionControl !== false\"\n :control-labels=\"controlLabels\"\n @fullscreen=\"emit('fullscreen', item)\"\n @control-click=\"(control) => emit('control-click', item, control)\"\n @expand=\"emit('expand', item)\"\n @collapse=\"emit('collapse', item)\"\n @update:expanded=\"(expanded) => emit('update:item-expanded', item, expanded)\"\n >\n <template #body>\n <FeedListItemBody\n :item=\"item\"\n :card-host-config=\"cardHostConfig\"\n @start-skill=\"emit('start-skill', item)\"\n @skill-click=\"emit('skill-click', item)\"\n @action=\"(event) => emit('action', item, event)\"\n />\n </template>\n\n <template\n v-if=\"$slots.actions\"\n #actions\n >\n <slot\n name=\"actions\"\n :item=\"item\"\n />\n </template>\n\n <template\n v-if=\"$slots.controls\"\n #controls\n >\n <slot\n name=\"controls\"\n :item=\"item\"\n />\n </template>\n\n <template\n v-if=\"$slots.footer\"\n #footer\n >\n <slot\n name=\"footer\"\n :item=\"item\"\n />\n </template>\n </FeedItemBase>\n\n <div\n v-if=\"loadingMore\"\n class=\"flex justify-center py-md\"\n >\n <slot name=\"loading-more\">\n <OrLoaderV3\n variant=\"circular\"\n color=\"primary\"\n size=\"s\"\n />\n </slot>\n </div>\n </template>\n </div>\n </section>\n</template>\n"],"names":["formatIdwSummary","summary","CardSize","CARD_SIZE","props","__props","sizeClasses","computed","cardImageStyles","rootClasses","classes","_createElementBlock","_openBlock","_hoisted_2","_createVNode","_unref","OrLoaderV3","_createElementVNode","_hoisted_3","_hoisted_4","_normalizeClass","_toDisplayString","_hoisted_5","_renderSlot","_ctx","FEED_EMBED_SANDBOX","FEED_EMBED_SIZE_CLASS","formatFeedReadingTime","text","words","minutes","hours","remainingMinutes","SHOW_MORE_LABEL","SHOW_LESS_LABEL","DEFAULT_CONTROL_LABELS","emit","__emit","slots","useSlots","isExpanded","ref","hasMountedBody","isBodyVisible","watch","visible","titleId","bodyId","shellClass","resolvedControlLabels","hasActions","hasFooter","hasBody","showExpandControl","showItemActions","showActionsRow","showFooter","setExpanded","next","toggleExpanded","onControlClick","control","onFullscreenClick","_hoisted_6","_hoisted_7","_createBlock","OrIconButtonV3","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_13","OrButtonV3","_hoisted_14","_hoisted_15","reactionCount","reactionEmojis","commentsCount","commentsLabel","readingTime","hasContent","_hoisted_1","_Fragment","_renderList","emoji","index","_createTextVNode","OrWebMarkdownRender","defaultSkillBandUrl","hasCustomSkillSlot","showSkillBand","showStartSkillButton","skillBandStyle","onStartSkill","onSkillClick","SkillCard","FeedMarkdownContent","iframeClass","hasSource","FeedEmbed","DEFAULT_IDW_CARD_HOST_CONFIG","IDW_SPACING_CLASS","IDW_TEXT_STYLE_CLASS","IDW_TONE_SURFACE_CLASS","resolveIdwCardHostConfig","overrides","IDW_CARD_FORM_KEY","useIdwCardForm","form","inject","mustResolve","templateId","data","result","resolveIdwCardSource","_a","cardFromMarkdown","MARKDOWN_TEMPLATE_ID","cardFromHtml","title","content","HTML_TEMPLATE_ID","cardFromFile","src","FILE_TEMPLATE_ID","cardFromSkill","input","SKILL_TEMPLATE_ID","idwCardActionButtonProps","style","onClick","action","_mergeProps","$event","IdwCardActionBar","_cache","toneClass","badgeClass","columnClass","width","column","columnIndex","child","IdwCardElementView","fact","FeedFileContent","FeedHtmlContent","OrIconV3","image","parseCardDate","value","parsed","pad","toDateValue","toTimeValue","toDateTimeValue","error","model","textType","textInputMode","stringValue","selectValue","radioValue","selectOptions","choice","location","set","toggleChoice","choiceValue","checked","current","item","setLocation","patch","OrTextareaV3","OrInputV3","OrSwitchV3","OrCheckboxV3","OrSelectV3","OrRadioV3","OrDatePickerV3","OrTimePickerV3","OrDateTimePickerV3","OrSliderV3","OrRangeSliderV3","OrRatingV3","toneColor","ProgressColor","color","type","ProgressType","OrProgressV3","FeedSkillContent","row","rowIndex","cell","cellIndex","contentClass","textStyle","tone","isHidden","spacingClass","spacing","inputElement","isIdwCardInputElement","InputElement","TextElement","ImageElement","FactSetElement","ContainerElement","ColumnSetElement","HtmlElement","FileElement","SkillElement","ActionSetElement","ProgressElement","BadgeElement","IconElement","ImageSetElement","MediaElement","TableElement","resolvedHostConfig","resolved","resolveCardRendererSource","card","values","reactive","errors","hiddenIds","openShowCards","resetForm","key","collectInitialInputValues","provide","name","id","isVisible","isElementVisible","errorMessage","validateRequired","valid","listIdwCardInputs","isInputEmpty","onAction","event","element","nestedCard","_component_CardRenderer","CardRenderer","hasHeader","hasEmptySlot","showEmpty","wasNearBottom","isHtmlOrFile","itemFullscreenControl","itemClassFor","unconstrained","onScroll","el","nearBottom","FeedItemBase","expanded","FeedListItemBody","$slots"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/format-idw-summary.ts","../../src/assets/skill-card-background.png","../../src/components/SkillCard/types.ts","../../src/components/SkillCard/SkillCard.vue","../../src/components/Feeds/feedEmbed.ts","../../src/components/Feeds/formatFeedReadingTime.ts","../../src/components/Feeds/FeedItemMetaFooter/FeedItemMetaFooter.vue","../../src/components/Feeds/FeedItemBase/FeedItemBase.vue","../../src/components/Feeds/FeedMarkdownContent/FeedMarkdownContent.vue","../../src/components/Feeds/FeedSkillContent/FeedSkillContent.vue","../../src/components/Feeds/FeedEmbed/FeedEmbed.vue","../../src/components/Feeds/FeedHtmlContent/FeedHtmlContent.vue","../../src/components/Feeds/FeedFileContent/FeedFileContent.vue","../../src/idw-card/host/hostConfig.ts","../../src/idw-card/form/formContext.ts","../../src/idw-card/templates/compile.ts","../../src/idw-card/renderer/actionStyle.ts","../../src/idw-card/renderer/IdwCardActionBar.vue","../../src/idw-card/renderer/elements/ActionSetElement.vue","../../src/idw-card/renderer/elements/BadgeElement.vue","../../src/idw-card/renderer/elements/ColumnSetElement.vue","../../src/idw-card/renderer/elements/ContainerElement.vue","../../src/idw-card/renderer/frameBorder.ts","../../src/idw-card/renderer/elements/FactSetElement.vue","../../src/idw-card/renderer/elements/FileElement.vue","../../src/idw-card/renderer/elements/HtmlElement.vue","../../src/idw-card/renderer/elements/IconElement.vue","../../src/idw-card/renderer/elements/ImageElement.vue","../../src/idw-card/renderer/elements/ImageSetElement.vue","../../src/idw-card/form/dates.ts","../../src/idw-card/renderer/sliderSpacing.ts","../../src/idw-card/renderer/elements/InputElement.vue","../../src/idw-card/renderer/mediaChrome.ts","../../src/idw-card/renderer/mediaControls.ts","../../src/idw-card/renderer/elements/MediaVolume.vue","../../src/idw-card/renderer/elements/MediaAudio.vue","../../src/idw-card/renderer/elements/MediaVideo.vue","../../src/idw-card/renderer/elements/MediaElement.vue","../../src/idw-card/renderer/elements/NoteElement.vue","../../src/idw-card/renderer/elements/NotificationElement.vue","../../src/idw-card/renderer/elements/ProgressElement.vue","../../src/idw-card/renderer/elements/SkillElement.vue","../../src/idw-card/renderer/elements/TableElement.vue","../../src/idw-card/renderer/elements/TextElement.vue","../../src/idw-card/renderer/IdwCardElementView.vue","../../src/idw-card/renderer/CardRenderer.vue","../../src/components/Feeds/FeedList/FeedListItemBody.vue","../../src/components/Feeds/FeedList/FeedList.vue"],"sourcesContent":["import type { IdwSummary } from '@onereach/idw-contracts';\n\n/**\n * Formats an IDW summary for display in the UI.\n * Replace with real component exports as the library grows.\n */\nexport function formatIdwSummary(summary: IdwSummary): string {\n return `${summary.name} (${summary.id})`;\n}\n","export default \"data:image/png;base64,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\"","import type { IdwCardSkillData } from '@onereach/idw-contracts';\n\nexport enum CardSize {\n XS = 'xs',\n S = 's',\n L = 'l',\n}\n\n/** Minimal skill fields required to render {@link SkillCard}. */\nexport type SkillCardData = IdwCardSkillData;\n\nexport type SkillCardProps = {\n skill: SkillCardData;\n selected?: boolean;\n disabled?: boolean;\n loading?: boolean;\n size?: CardSize;\n interactive?: boolean;\n};\n","<script setup lang=\"ts\">\nimport { OrLoaderV3 } from '@onereach/ui-components';\nimport { computed } from 'vue';\n\nimport defaultSkillCardBackground from '../../assets/skill-card-background.png';\nimport {\n CardSize,\n type SkillCardProps,\n} from './types';\n\ndefineOptions({\n name: 'SkillCard',\n});\n\nconst CARD_SIZE = {\n [CardSize.XS]: {\n container: ['w-[128px]', 'h-[128px]', 'p-md+', 'gap-[17px]'],\n domain: ['text-[12px] leading-[16px]'],\n title: ['text-[16px] leading-[20px] line-clamp-3'],\n },\n [CardSize.S]: {\n container: ['w-[163px]', 'h-[163px]', 'p-md+', 'gap-[17px]'],\n domain: ['typography-caption-regular'],\n title: ['text-[20px] leading-[24px] line-clamp-4'],\n },\n [CardSize.L]: {\n container: ['w-[240px]', 'h-[240px]', 'p-lg', 'gap-md+'],\n domain: ['typography-body-2-regular'],\n title: ['text-[30px] leading-[36px] line-clamp-5'],\n },\n};\n\nconst props = withDefaults(defineProps<SkillCardProps>(), {\n selected: false,\n disabled: false,\n loading: false,\n size: CardSize.L,\n interactive: true,\n});\n\nconst sizeClasses = computed(() => {\n return CARD_SIZE[props.size] || CARD_SIZE[CardSize.L];\n});\n\nconst cardImageStyles = computed(() => {\n if (props.disabled) {\n return undefined;\n }\n\n return {\n backgroundImage: `url(${defaultSkillCardBackground})`,\n backgroundPosition: 'center',\n backgroundSize: 'cover',\n };\n});\n\nconst rootClasses = computed(() => {\n const classes = [\n 'idw-skill-card overflow-hidden',\n 'bg-surface-1 dark:bg-surface-1-dark',\n 'shadow-card dark:shadow-card-dark',\n\n 'rounded-[24px]',\n ...sizeClasses.value.container,\n ];\n\n if (props.disabled) {\n classes.push(\n 'text-outline dark:text-outline-dark',\n 'select-none',\n );\n } else {\n classes.push(\n 'text-black dark:text-white',\n );\n\n if (props.interactive) {\n classes.push('cursor-pointer');\n }\n }\n\n return classes;\n});\n</script>\n\n<template>\n <div\n :class=\"rootClasses\"\n :data-interactive=\"props.interactive\"\n :data-disabled=\"props.disabled\"\n :data-selected=\"props.selected\"\n :style=\"cardImageStyles\"\n >\n <div\n v-if=\"props.loading\"\n class=\"absolute left-0 top-0 w-full h-full z-10 flex items-center justify-center bg-on-disabled-dark\"\n >\n <OrLoaderV3 type=\"circle\" />\n </div>\n\n <div class=\"layout-column justify-between h-full w-full relative z-[2]\">\n <div class=\"grid grid-cols-[1fr_auto] items-start gap-xs\">\n <span\n class=\"truncate idw-skill-card__domain\"\n :class=\"sizeClasses.domain\"\n >\n {{ skill.domain }}\n </span>\n <div class=\"idw-skill-card__actions\">\n <slot name=\"actions\" />\n </div>\n </div>\n\n <span\n class=\"idw-skill-card__title\"\n :class=\"sizeClasses.title\"\n >\n {{ skill.name }}\n </span>\n </div>\n </div>\n</template>\n\n<style>\n@import 'https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap';\n</style>\n\n<style scoped lang=\"scss\">\n.idw-skill-card {\n position: relative;\n z-index: 0;\n\n &__title,\n &__domain {\n font-family: Outfit, sans-serif !important;\n }\n\n &__title {\n font-weight: 700;\n }\n\n &::before {\n position: absolute;\n inset: 0;\n content: '';\n // stylelint-disable-next-line\n background: linear-gradient(to bottom, rgba(#000, 0.3), rgba(#000, 0));\n\n opacity: 0;\n transition: opacity 0.3s ease-in-out;\n }\n\n &:not([data-disabled=true]):not([data-interactive=false]) {\n &.selected::before,\n &[data-selected=true]::before,\n &:hover::before {\n opacity: 1;\n }\n\n &.selected::before,\n &[data-selected=true]::before {\n // stylelint-disable-next-line\n background: rgba(#000, 0.3);\n }\n\n &::after {\n position: absolute;\n inset: 0;\n content: '';\n\n border: 3px solid transparent;\n border-radius: 24px;\n transition: border-color 0.3s ease-in-out;\n }\n\n &.selected::after,\n &[data-selected=true]::after {\n border-color: var(--or-primary, #5b8def);\n }\n\n :global(.dark) &,\n :global([data-theme='dark']) & {\n &.selected::after,\n &[data-selected=true]::after {\n border-color: var(--or-primary-dark, #5b8def);\n }\n }\n }\n}\n</style>\n","/** Shared sandbox for feed HTML/file embeds (scripts + same-origin for app shells). */\nexport const FEED_EMBED_SANDBOX = 'allow-scripts allow-same-origin' as const;\n\n/**\n * Layout size for embed iframes.\n * - `list` — usable height inside a feed list card (viewport-based)\n * - `fill` — grow with a flex parent (detail / fullscreen panes)\n */\nexport type FeedEmbedSize = 'list' | 'fill';\n\nexport const FEED_EMBED_SIZE_CLASS: Record<FeedEmbedSize, string> = {\n /** Matches prior feed html/file iframe height in idw-ui (`h-[720px]`). */\n list: 'block w-full h-[720px] max-h-[720px] border-none',\n fill: 'block w-full h-full min-h-0 flex-1 border-none',\n};\n","/** Approximate reading-time label for feed bodies (same heuristic as idw-ui). */\nexport function formatFeedReadingTime(text = ''): string {\n const wordsPerMinute = 200;\n const words = text.trim() ? text.trim().split(/\\s+/).length : 0;\n const minutes = Math.max(Math.round(words / wordsPerMinute), words > 0 ? 1 : 0);\n\n if (minutes <= 0) {\n return '';\n }\n\n if (minutes >= 60) {\n const hours = Math.floor(minutes / 60);\n const remainingMinutes = minutes % 60;\n return remainingMinutes > 0\n ? `~${hours}h ${remainingMinutes} min`\n : `~${hours}h`;\n }\n\n return `~${minutes} min`;\n}\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport { formatFeedReadingTime } from '../formatFeedReadingTime';\nimport type { FeedItemMetaFooterProps } from './types';\n\ndefineOptions({\n name: 'FeedItemMetaFooter',\n});\n\nconst props = withDefaults(defineProps<FeedItemMetaFooterProps>(), {\n readingTimeSource: undefined,\n});\n\nconst emit = defineEmits<{\n 'open-reactions': [];\n 'open-comments': [];\n}>();\n\nconst reactionCount = computed(() => props.engagement.reactionCount ?? 0);\nconst reactionEmojis = computed(() => props.engagement.reactionEmojis ?? []);\nconst commentsCount = computed(() => props.engagement.commentsCount ?? 0);\nconst commentsLabel = computed(() => props.engagement.commentsLabel);\nconst readingTime = computed(() => {\n if (props.engagement.readingTime) {\n return props.engagement.readingTime;\n }\n if (props.readingTimeSource) {\n return formatFeedReadingTime(props.readingTimeSource);\n }\n return '';\n});\n\nconst hasContent = computed(\n () => reactionCount.value > 0\n || Boolean(readingTime.value)\n || (commentsCount.value > 0 && Boolean(commentsLabel.value)),\n);\n</script>\n\n<template>\n <span\n v-if=\"hasContent\"\n class=\"feed-item-meta-footer flex items-center justify-between gap-sm typography-caption-regular text-outline dark:text-outline-dark\"\n >\n <span class=\"flex items-center gap-xs\">\n <button\n v-if=\"reactionCount > 0\"\n type=\"button\"\n class=\"inline-flex cursor-pointer items-center gap-xs border-0 bg-transparent p-0 typography-caption-regular text-outline dark:text-outline-dark\"\n @click=\"emit('open-reactions')\"\n >\n <span\n v-if=\"reactionEmojis.length\"\n class=\"inline-flex items-center gap-xs text-on-background dark:text-on-background-dark\"\n aria-hidden=\"true\"\n >\n <span\n v-for=\"(emoji, index) in reactionEmojis\"\n :key=\"`${emoji}-${index}`\"\n class=\"inline-flex size-4 items-center justify-center text-[16px] leading-none\"\n >\n {{ emoji }}\n </span>\n </span>\n {{ reactionCount }}\n </button>\n <span\n v-if=\"readingTime\"\n class=\"typography-caption-regular text-outline dark:text-outline-dark\"\n >\n {{ readingTime }}\n </span>\n </span>\n <button\n v-if=\"commentsCount > 0 && commentsLabel\"\n type=\"button\"\n class=\"underline cursor-pointer bg-transparent border-0 p-0 typography-caption-regular text-outline dark:text-outline-dark\"\n @click=\"emit('open-comments')\"\n >\n {{ commentsLabel }}\n </button>\n </span>\n</template>\n","<script setup lang=\"ts\">\nimport { OrIconButtonV3, OrIconV3 as OrIcon } from '@onereach/ui-components';\nimport { computed, ref, useSlots, watch } from 'vue';\n\nimport FeedItemMetaFooter from '../FeedItemMetaFooter/FeedItemMetaFooter.vue';\nimport type { FeedItemEngagement } from '../FeedItemMetaFooter/types';\nimport {\n type FeedItemBaseProps,\n type FeedItemControl,\n type FeedStatusTone,\n} from './types';\n\ndefineOptions({\n name: 'FeedItemBase',\n});\n\nconst DEFAULT_CONTROL_LABELS = {\n mention: 'Mention',\n share: 'Share',\n more: 'More',\n fullscreen: 'Fullscreen',\n showMore: 'Show more',\n showLess: 'Show less',\n} as const;\n\nconst STATUS_DOT_CLASS: Record<FeedStatusTone, string> = {\n primary: 'bg-primary dark:bg-primary-dark',\n success: 'bg-success dark:bg-success-dark',\n warning: 'bg-warning dark:bg-warning-dark',\n error: 'bg-error dark:bg-error-dark',\n neutral: 'bg-outline dark:bg-outline-dark',\n secondary: 'bg-secondary dark:bg-secondary-dark',\n};\n\nconst props = withDefaults(defineProps<FeedItemBaseProps & {\n engagement?: FeedItemEngagement;\n}>(), {\n shortContent: undefined,\n timestamp: undefined,\n timestampDatetime: undefined,\n source: undefined,\n authorPrefix: 'By',\n typeLabel: undefined,\n status: undefined,\n mediaSrc: undefined,\n mediaAlt: '',\n summary: undefined,\n summaryLabel: 'Summary:',\n expandable: true,\n view: 'list',\n fullscreenControl: false,\n mentionControl: true,\n shareControl: true,\n moreControl: true,\n isNew: false,\n highlighted: false,\n controlLabels: undefined,\n engagement: undefined,\n});\n\nconst emit = defineEmits<{\n 'update:expanded': [expanded: boolean];\n expand: [];\n collapse: [];\n 'control-click': [control: FeedItemControl];\n fullscreen: [];\n}>();\n\nconst slots = useSlots();\n\nconst isExpanded = ref(false);\nconst hasMountedBody = ref(false);\nconst isFullscreen = computed(() => props.view === 'fullscreen');\n\n/** Non-expandable and fullscreen items always expose their body. */\nconst isBodyVisible = computed(() => isFullscreen.value || !props.expandable || isExpanded.value);\n\nwatch(\n isBodyVisible,\n (visible) => {\n if (visible) {\n hasMountedBody.value = true;\n }\n },\n { immediate: true },\n);\n\nconst titleId = computed(() => `feed-item-title-${props.id}`);\nconst bodyId = computed(() => `feed-item-body-${props.id}`);\n\nconst shellClass = computed(() => {\n if (props.isNew || props.highlighted) {\n return 'bg-primary-opacity-0-08 dark:bg-primary-opacity-0-08-dark';\n }\n return 'bg-surface-2 dark:bg-surface-2-dark';\n});\n\nconst resolvedControlLabels = computed(() => ({\n ...DEFAULT_CONTROL_LABELS,\n ...props.controlLabels,\n}));\n\nconst hasBody = computed(() => Boolean(slots.body));\nconst showItemActions = computed(() => Boolean(slots.actions) && isBodyVisible.value);\nconst showExpandControl = computed(() => !isFullscreen.value && props.expandable && hasBody.value);\nconst hasSummary = computed(() => {\n const summary = props.summary;\n if (!summary) {\n return false;\n }\n return Boolean(summary.text) || Boolean(summary.choices?.length);\n});\nconst showSummary = computed(() => hasSummary.value && !isBodyVisible.value);\nconst showMedia = computed(() => !isFullscreen.value && (Boolean(props.mediaSrc) || Boolean(slots.media)));\nconst authorLabel = computed(() => {\n const source = props.source?.trim();\n if (!source) {\n return undefined;\n }\n if (/^by\\s/i.test(source)) {\n return source;\n }\n return `${props.authorPrefix} ${source}`;\n});\nconst statusDotClass = computed(() => STATUS_DOT_CLASS[props.status?.tone ?? 'primary']);\nconst showEngagement = computed(() => Boolean(props.engagement));\nconst showFooter = computed(() => Boolean(slots.footer) && isBodyVisible.value && !isFullscreen.value);\n\nfunction setExpanded(next: boolean) {\n if (!props.expandable || isFullscreen.value || next === isExpanded.value) {\n return;\n }\n\n isExpanded.value = next;\n emit('update:expanded', next);\n if (next) {\n emit('expand');\n } else {\n emit('collapse');\n }\n}\n\nfunction toggleExpanded() {\n setExpanded(!isExpanded.value);\n}\n\nfunction onControlClick(control: FeedItemControl) {\n emit('control-click', control);\n}\n\nfunction onFullscreenClick() {\n emit('fullscreen');\n}\n</script>\n\n<template>\n <article\n class=\"feed-item-base relative flex min-w-0 flex-col overflow-hidden rounded-md border border-outline-opacity-0-12 dark:border-outline-opacity-0-12-dark\"\n :class=\"shellClass\"\n :aria-labelledby=\"titleId\"\n >\n <header\n class=\"flex w-full min-w-0 items-center gap-md px-md\"\n :class=\"isFullscreen ? 'justify-end py-sm' : 'pt-md pb-sm'\"\n >\n <div\n v-if=\"!isFullscreen\"\n class=\"flex min-w-0 flex-1 flex-wrap items-center gap-x-md gap-y-sm\"\n >\n <span\n v-if=\"typeLabel\"\n class=\"inline-flex shrink-0 items-center rounded-sm bg-primary px-sm typography-caption-regular text-on-primary dark:bg-primary-dark dark:text-on-primary-dark\"\n >\n {{ typeLabel }}\n </span>\n\n <span\n v-if=\"status\"\n class=\"inline-flex shrink-0 items-center gap-xs\"\n >\n <span\n class=\"size-2 shrink-0 rounded-full\"\n :class=\"statusDotClass\"\n aria-hidden=\"true\"\n />\n <span class=\"typography-caption-regular text-outline dark:text-outline-dark\">\n {{ status.label }}\n </span>\n </span>\n\n <time\n v-if=\"timestamp\"\n class=\"shrink-0 overflow-hidden text-ellipsis whitespace-nowrap typography-caption-regular text-outline dark:text-outline-dark\"\n :datetime=\"timestampDatetime || undefined\"\n >\n {{ timestamp }}\n </time>\n\n <span\n v-if=\"authorLabel\"\n class=\"shrink-0 overflow-hidden text-ellipsis whitespace-nowrap typography-caption-regular text-outline dark:text-outline-dark\"\n >\n {{ authorLabel }}\n </span>\n </div>\n\n <div class=\"flex shrink-0 items-center gap-md text-outline dark:text-outline-dark\">\n <slot name=\"controls\">\n <OrIconButtonV3\n v-if=\"fullscreenControl\"\n icon=\"open_in_full\"\n :tooltip=\"resolvedControlLabels.fullscreen\"\n @click=\"onFullscreenClick\"\n />\n <OrIconButtonV3\n v-if=\"mentionControl\"\n icon=\"alternate_email\"\n :tooltip=\"resolvedControlLabels.mention\"\n @click=\"onControlClick('mention')\"\n />\n <OrIconButtonV3\n v-if=\"shareControl && !isFullscreen\"\n icon=\"share\"\n :tooltip=\"resolvedControlLabels.share\"\n @click=\"onControlClick('share')\"\n />\n <OrIconButtonV3\n v-if=\"moreControl\"\n icon=\"more_vert\"\n :tooltip=\"resolvedControlLabels.more\"\n @click=\"onControlClick('more')\"\n />\n </slot>\n </div>\n </header>\n\n <div :class=\"isFullscreen ? 'mx-auto w-full max-w-[50rem] px-md pb-sm' : 'px-md py-sm'\">\n <div class=\"flex w-full min-w-0 items-center gap-md\">\n <div\n v-if=\"showMedia\"\n class=\"size-16 shrink-0 overflow-hidden rounded-md bg-surface-1 dark:bg-surface-1-dark\"\n >\n <slot name=\"media\">\n <img\n v-if=\"mediaSrc\"\n class=\"size-full object-cover\"\n :src=\"mediaSrc\"\n :alt=\"mediaAlt\"\n >\n </slot>\n </div>\n\n <div class=\"flex min-w-0 flex-1 flex-col items-start\">\n <h3\n :id=\"titleId\"\n class=\"m-0 w-full text-on-background dark:text-on-background-dark\"\n :class=\"isFullscreen ? 'typography-headline-1' : 'overflow-hidden text-ellipsis typography-headline-3'\"\n >\n {{ title }}\n </h3>\n <p\n v-if=\"shortContent && !isFullscreen\"\n class=\"m-0 line-clamp-2 w-full typography-body-2-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n >\n {{ shortContent }}\n </p>\n </div>\n </div>\n\n <div\n v-if=\"isFullscreen\"\n class=\"mt-sm flex w-full min-w-0 flex-wrap items-center justify-between gap-md\"\n >\n <div class=\"flex min-w-0 flex-1 flex-wrap items-center gap-x-md gap-y-sm\">\n <span\n v-if=\"typeLabel\"\n class=\"inline-flex shrink-0 items-center rounded-sm bg-primary px-sm typography-caption-regular text-on-primary dark:bg-primary-dark dark:text-on-primary-dark\"\n >\n {{ typeLabel }}\n </span>\n <span\n v-if=\"status\"\n class=\"inline-flex shrink-0 items-center gap-xs\"\n >\n <span\n class=\"size-2 shrink-0 rounded-full\"\n :class=\"statusDotClass\"\n aria-hidden=\"true\"\n />\n <span class=\"typography-caption-regular text-outline dark:text-outline-dark\">\n {{ status.label }}\n </span>\n </span>\n <span\n v-if=\"authorLabel\"\n class=\"typography-caption-regular text-outline dark:text-outline-dark\"\n >\n {{ authorLabel }}\n </span>\n <time\n v-if=\"timestamp\"\n class=\"typography-caption-regular text-outline dark:text-outline-dark\"\n :datetime=\"timestampDatetime || undefined\"\n >\n {{ timestamp }}\n </time>\n </div>\n\n <button\n v-if=\"shareControl\"\n type=\"button\"\n class=\"inline-flex shrink-0 items-center gap-xs rounded-full border-0 bg-surface-1 px-sm py-xs typography-body-2-regular text-on-background dark:bg-surface-1-dark dark:text-on-background-dark\"\n @click=\"onControlClick('share')\"\n >\n <OrIcon\n icon=\"share\"\n class=\"size-4\"\n />\n {{ resolvedControlLabels.share }}\n </button>\n </div>\n </div>\n\n <div\n v-if=\"hasMountedBody\"\n v-show=\"isBodyVisible\"\n :id=\"bodyId\"\n class=\"feed-item-base__body w-full min-w-0\"\n :class=\"isFullscreen ? '' : 'max-h-[37.875rem] overflow-y-auto'\"\n role=\"region\"\n :aria-label=\"title\"\n :aria-hidden=\"!isBodyVisible\"\n >\n <div :class=\"isFullscreen ? 'mx-auto w-full max-w-[50rem] px-md' : 'px-md'\">\n <slot name=\"body\" />\n <div\n v-if=\"showItemActions\"\n class=\"mt-sm flex flex-wrap items-center gap-sm empty:hidden\"\n >\n <slot name=\"actions\" />\n </div>\n </div>\n </div>\n\n <div\n v-if=\"!isFullscreen && (showSummary || showEngagement || showFooter || showExpandControl)\"\n class=\"flex w-full min-w-0 flex-col gap-sm px-md pb-sm+ pt-sm\"\n >\n <div\n v-if=\"showSummary\"\n class=\"flex w-full flex-col gap-xs rounded-md bg-surface-1 px-sm+ py-sm dark:bg-surface-1-dark\"\n >\n <p class=\"m-0 typography-caption-regular text-outline dark:text-outline-dark\">\n {{ summaryLabel }}\n </p>\n <p\n v-if=\"summary?.text\"\n class=\"m-0 typography-body-2-regular text-on-background dark:text-on-background-dark\"\n >\n {{ summary.text }}\n </p>\n <div\n v-if=\"summary?.choices?.length\"\n class=\"flex flex-wrap items-center gap-md\"\n >\n <span\n v-for=\"choice in summary.choices\"\n :key=\"choice\"\n class=\"inline-flex items-center gap-xs typography-body-2-bold text-on-background dark:text-on-background-dark\"\n >\n <OrIcon\n icon=\"check\"\n class=\"size-4\"\n />\n {{ choice }}\n </span>\n </div>\n </div>\n\n <FeedItemMetaFooter\n v-if=\"showEngagement && engagement\"\n :engagement=\"engagement\"\n />\n\n <footer\n v-if=\"showFooter\"\n class=\"w-full min-w-0 empty:hidden\"\n >\n <slot name=\"footer\" />\n </footer>\n\n <button\n v-if=\"showExpandControl\"\n type=\"button\"\n class=\"inline-flex w-fit items-center gap-xs border-0 bg-transparent p-0 typography-body-2-bold text-primary dark:text-primary-dark\"\n :aria-expanded=\"isBodyVisible\"\n :aria-controls=\"bodyId\"\n @click=\"toggleExpanded\"\n >\n {{ isBodyVisible ? resolvedControlLabels.showLess : resolvedControlLabels.showMore }}\n <OrIcon\n icon=\"keyboard_arrow_down\"\n class=\"size-4 transition-transform\"\n :class=\"isBodyVisible ? 'rotate-180' : ''\"\n />\n </button>\n </div>\n </article>\n</template>\n","<script setup lang=\"ts\">\nimport OrWebMarkdownRender from '@onereach/idw-markdown-renderer';\n\nimport type { FeedMarkdownContentProps } from './types';\n\ndefineOptions({\n name: 'FeedMarkdownContent',\n});\n\nwithDefaults(defineProps<FeedMarkdownContentProps>(), {\n contentClass: undefined,\n internalLinkPattern: undefined,\n});\n</script>\n\n<template>\n <OrWebMarkdownRender\n class=\"feed-markdown-content styled-content typography-body-2-regular text-on-background dark:text-on-background-dark\"\n :class=\"contentClass\"\n :text=\"text\"\n :internal-link-pattern=\"internalLinkPattern\"\n />\n</template>\n\n<style scoped>\n.styled-content {\n overflow-wrap: break-word;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { OrButtonV3 } from '@onereach/ui-components';\nimport { computed, useSlots } from 'vue';\n\nimport defaultSkillBandUrl from '../../../assets/skill-card-background.png';\nimport { CardSize, SkillCard } from '../../SkillCard';\nimport { FeedMarkdownContent } from '../FeedMarkdownContent';\nimport type { FeedSkillContentProps } from './types';\n\ndefineOptions({\n name: 'FeedSkillContent',\n});\n\nconst props = withDefaults(defineProps<FeedSkillContentProps>(), {\n skill: undefined,\n skillBackgroundUrl: undefined,\n skillCardSize: CardSize.S,\n showStartSkill: undefined,\n startSkillLabel: undefined,\n contentClass: undefined,\n internalLinkPattern: undefined,\n});\n\nconst emit = defineEmits<{\n 'start-skill': [];\n 'skill-click': [];\n}>();\n\nconst slots = useSlots();\n\nconst hasCustomSkillSlot = computed(() => Boolean(slots.skill));\nconst showSkillBand = computed(\n () => hasCustomSkillSlot.value || Boolean(props.skill),\n);\nconst showStartSkillButton = computed(\n () => props.showStartSkill !== false && Boolean(props.startSkillLabel),\n);\n\nconst skillBandStyle = computed(() => {\n if (!showSkillBand.value) {\n return undefined;\n }\n const url = props.skillBackgroundUrl ?? defaultSkillBandUrl;\n return {\n backgroundImage: `url(${url})`,\n };\n});\n\nfunction onStartSkill() {\n emit('start-skill');\n}\n\nfunction onSkillClick() {\n emit('skill-click');\n}\n</script>\n\n<template>\n <div class=\"feed-skill-content flex flex-col gap-md\">\n <div\n v-if=\"showSkillBand\"\n class=\"w-full overflow-hidden rounded-lg bg-surface-1 dark:bg-surface-1-dark\"\n :style=\"skillBandStyle\"\n >\n <slot name=\"skill\">\n <SkillCard\n v-if=\"skill\"\n :skill=\"skill\"\n :size=\"skillCardSize\"\n @click=\"onSkillClick\"\n />\n </slot>\n </div>\n\n <FeedMarkdownContent\n :text=\"text\"\n :content-class=\"contentClass\"\n :internal-link-pattern=\"internalLinkPattern\"\n />\n\n <OrButtonV3\n v-if=\"showStartSkillButton\"\n class=\"w-full md:w-auto\"\n variant=\"outlined\"\n color=\"primary\"\n @click=\"onStartSkill\"\n >\n {{ startSkillLabel }}\n </OrButtonV3>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport {\n FEED_EMBED_SANDBOX,\n FEED_EMBED_SIZE_CLASS,\n type FeedEmbedSize,\n} from '../feedEmbed';\n\ndefineOptions({\n name: 'FeedEmbed',\n});\n\nconst props = withDefaults(defineProps<{\n title: string;\n size?: FeedEmbedSize;\n /** URL for file embeds. Mutually exclusive with `srcdoc`. */\n src?: string;\n /** HTML document for html embeds. Mutually exclusive with `src`. */\n srcdoc?: string;\n}>(), {\n size: 'list',\n src: undefined,\n srcdoc: undefined,\n});\n\nconst iframeClass = computed(() => FEED_EMBED_SIZE_CLASS[props.size]);\nconst hasSource = computed(() => Boolean(props.src || props.srcdoc));\n</script>\n\n<template>\n <div\n v-if=\"hasSource\"\n class=\"feed-embed w-full overflow-hidden rounded-lg bg-surface-1 dark:bg-surface-1-dark\"\n :class=\"size === 'fill' ? 'flex h-full min-h-0 flex-1 flex-col' : undefined\"\n >\n <iframe\n :class=\"iframeClass\"\n :title=\"title\"\n :sandbox=\"FEED_EMBED_SANDBOX\"\n :src=\"src || undefined\"\n :srcdoc=\"srcdoc || undefined\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport FeedEmbed from '../FeedEmbed/FeedEmbed.vue';\nimport type { FeedHtmlContentProps } from './types';\n\ndefineOptions({\n name: 'FeedHtmlContent',\n});\n\nwithDefaults(defineProps<FeedHtmlContentProps>(), {\n size: 'list',\n});\n</script>\n\n<template>\n <FeedEmbed\n class=\"feed-html-content\"\n :title=\"title\"\n :size=\"size\"\n :srcdoc=\"content\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport FeedEmbed from '../FeedEmbed/FeedEmbed.vue';\nimport type { FeedFileContentProps } from './types';\n\ndefineOptions({\n name: 'FeedFileContent',\n});\n\nwithDefaults(defineProps<FeedFileContentProps>(), {\n size: 'list',\n});\n</script>\n\n<template>\n <FeedEmbed\n class=\"feed-file-content\"\n :title=\"title\"\n :size=\"size\"\n :src=\"src\"\n />\n</template>\n","import type { FeedEmbedSize } from '../../components/Feeds/feedEmbed';\nimport type { IdwSpacing, IdwTextStyle, IdwTone } from '../schema';\n\nexport type IdwCardTheme = 'dark' | 'light';\n\nexport type IdwCardHostConfig = {\n theme: IdwCardTheme;\n embedSize: FeedEmbedSize;\n};\n\nexport const DEFAULT_IDW_CARD_HOST_CONFIG: IdwCardHostConfig = {\n theme: 'dark',\n embedSize: 'list',\n};\n\n/** Sibling gap when an element omits `spacing`. The first item in a stack stays flush. */\nexport const DEFAULT_ELEMENT_SPACING: IdwSpacing = 'md';\n\nexport const IDW_SPACING_CLASS: Record<IdwSpacing, string> = {\n none: '',\n xs: 'mt-xs',\n sm: 'mt-sm',\n md: 'mt-md',\n lg: 'mt-lg',\n xl: 'mt-xl',\n};\n\nexport const IDW_TEXT_STYLE_CLASS: Record<IdwTextStyle, string> = {\n caption: 'typography-caption-regular text-on-surface-variant dark:text-on-surface-variant-dark',\n body: 'typography-body-2-regular text-on-background dark:text-on-background-dark',\n headline: 'typography-headline-3 text-on-background dark:text-on-background-dark',\n};\n\nexport const IDW_TONE_SURFACE_CLASS: Record<IdwTone, string> = {\n default: '',\n emphasis: 'bg-surface-2 dark:bg-surface-2-dark rounded-lg p-md',\n success: 'bg-success-container dark:bg-success-container-dark text-on-success-container dark:text-on-success-container-dark rounded-lg p-md',\n warning: 'bg-warning-container dark:bg-warning-container-dark text-on-warning-container dark:text-on-warning-container-dark rounded-lg p-md',\n attention: 'bg-primary-container dark:bg-primary-container-dark text-on-primary-container dark:text-on-primary-container-dark rounded-lg p-md',\n};\n\nexport function resolveIdwCardHostConfig(\n overrides?: Partial<IdwCardHostConfig>,\n): IdwCardHostConfig {\n return {\n ...DEFAULT_IDW_CARD_HOST_CONFIG,\n ...overrides,\n };\n}\n","import { inject, type InjectionKey } from 'vue';\n\nexport type IdwCardFormApi = {\n getValue: (name: string) => unknown;\n setValue: (name: string, value: unknown) => void;\n getError: (name: string) => string | undefined;\n isHidden: (id?: string, isVisible?: boolean) => boolean;\n};\n\nexport const IDW_CARD_FORM_KEY: InjectionKey<IdwCardFormApi> = Symbol('idwCardForm');\n\nexport function useIdwCardForm(): IdwCardFormApi {\n const form = inject(IDW_CARD_FORM_KEY);\n if (!form) {\n throw new Error('IdwCard form controls must be rendered inside CardRenderer');\n }\n return form;\n}\n","import {\n FILE_TEMPLATE_ID,\n HTML_TEMPLATE_ID,\n MARKDOWN_TEMPLATE_ID,\n resolveIdwCardSource,\n SKILL_TEMPLATE_ID,\n type IdwCard,\n} from '@onereach/idw-contracts';\n\nimport type { CardFromSkillInput } from './types';\n\nfunction mustResolve(templateId: string, data: unknown): IdwCard {\n const result = resolveIdwCardSource({\n templateId,\n data,\n });\n if (!result.success) {\n throw new Error(result.issues[0]?.message ?? `Invalid ${templateId} template data`);\n }\n return result.card;\n}\n\nexport function cardFromMarkdown(text: string): IdwCard {\n return mustResolve(MARKDOWN_TEMPLATE_ID, { text });\n}\n\nexport function cardFromHtml(title: string, content: string): IdwCard {\n return mustResolve(HTML_TEMPLATE_ID, {\n title,\n content,\n });\n}\n\nexport function cardFromFile(title: string, src: string): IdwCard {\n return mustResolve(FILE_TEMPLATE_ID, {\n title,\n src,\n });\n}\n\nexport function cardFromSkill(input: CardFromSkillInput): IdwCard {\n return mustResolve(SKILL_TEMPLATE_ID, {\n text: input.text,\n skill: input.skill,\n startSkillLabel: input.startSkillLabel,\n });\n}\n","import type { IdwButtonColor, IdwButtonVariant, IdwCardAction } from '../schema';\n\nconst STYLE_PROPS: Record<NonNullable<IdwCardAction['style']>, {\n variant: IdwButtonVariant;\n color: IdwButtonColor;\n}> = {\n primary: {\n variant: 'contained',\n color: 'primary',\n },\n destructive: {\n variant: 'outlined',\n color: 'danger',\n },\n default: {\n variant: 'outlined',\n color: 'primary',\n },\n};\n\nexport function idwCardActionButtonProps(action: IdwCardAction) {\n const fromStyle = STYLE_PROPS[action.style ?? 'default'];\n return {\n variant: action.variant ?? fromStyle.variant,\n color: action.color ?? fromStyle.color,\n disabled: action.disabled,\n };\n}\n","<script setup lang=\"ts\">\nimport { OrButtonV3, OrIconV3 } from '@onereach/ui-components';\n\nimport type { IdwCardAction } from '../schema';\n\nimport { idwCardActionButtonProps } from './actionStyle';\nimport type { IdwCardActionEvent } from './types';\n\ndefineOptions({\n name: 'IdwCardActionBar',\n});\n\ndefineProps<{\n actions: IdwCardAction[];\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n}>();\n\nfunction onClick(action: IdwCardAction) {\n emit('action', {\n verb: action.verb,\n title: action.title,\n data: action.data,\n url: action.url,\n skillId: action.skillId,\n targetIds: action.targetIds,\n card: action.card,\n });\n}\n</script>\n\n<template>\n <div class=\"idw-card-action-bar flex min-w-0 flex-wrap items-center gap-sm\">\n <OrButtonV3\n v-for=\"(action, index) in actions\"\n :key=\"action.title + index\"\n v-bind=\"idwCardActionButtonProps(action)\"\n type=\"button\"\n @click=\"onClick(action)\"\n >\n <OrIconV3\n v-if=\"action.icon\"\n :icon=\"action.icon\"\n />\n {{ action.title }}\n </OrButtonV3>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwActionSetElement } from '../../schema';\nimport IdwCardActionBar from '../IdwCardActionBar.vue';\nimport type { IdwCardActionEvent } from '../types';\n\ndefineOptions({\n name: 'IdwCardActionSetElement',\n});\n\ndefineProps<{\n element: IdwActionSetElement;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n}>();\n</script>\n\n<template>\n <IdwCardActionBar\n :actions=\"element.actions\"\n @action=\"emit('action', $event)\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport type { IdwBadgeElement, IdwTone } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardBadgeElement',\n});\n\nconst props = defineProps<{\n element: IdwBadgeElement;\n}>();\n\nconst toneClass: Record<IdwTone, string> = {\n default: 'bg-surface-2 dark:bg-surface-2-dark text-on-surface dark:text-on-surface-dark',\n emphasis: 'bg-surface-2 dark:bg-surface-2-dark text-on-surface dark:text-on-surface-dark',\n success: 'bg-success-container dark:bg-success-container-dark text-on-success-container dark:text-on-success-container-dark',\n warning: 'bg-warning-container dark:bg-warning-container-dark text-on-warning-container dark:text-on-warning-container-dark',\n attention: 'bg-primary-container dark:bg-primary-container-dark text-on-primary-container dark:text-on-primary-container-dark',\n};\n\nconst badgeClass = computed(() => [\n 'inline-flex w-fit items-center rounded-md px-sm py-xs typography-caption-semibold',\n toneClass[props.element.tone ?? 'emphasis'],\n]);\n</script>\n\n<template>\n <span :class=\"badgeClass\">\n {{ element.text }}\n </span>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport type { IdwCardHostConfig } from '../../host';\nimport type { IdwCardElement, IdwColumnSetElement } from '../../schema';\nimport IdwCardElementView from '../IdwCardElementView.vue';\nimport type { IdwCardActionEvent } from '../types';\n\ndefineOptions({\n name: 'IdwCardColumnSetElement',\n});\n\nconst props = defineProps<{\n element: IdwColumnSetElement;\n hostConfig: IdwCardHostConfig;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n\nconst sharesRows = computed(() => {\n const counts = props.element.columns.map((column) => column.items.length);\n const count = counts[0] ?? 0;\n return count > 0 && counts.every((itemCount) => itemCount === count);\n});\n\nconst gridStyle = computed(() => {\n if (!sharesRows.value) {\n return undefined;\n }\n return {\n display: 'grid',\n gridTemplateColumns: props.element.columns\n .map((column) => (column.width === 'auto' ? 'max-content' : 'minmax(0, 1fr)'))\n .join(' '),\n gridTemplateRows: `repeat(${props.element.columns[0]?.items.length ?? 0}, auto)`,\n rowGap: '0',\n };\n});\n\nconst columnGridStyle = {\n display: 'grid',\n gridRow: '1 / -1',\n gridTemplateRows: 'subgrid',\n};\n\nfunction columnClass(width?: 'auto' | 'stretch') {\n return width === 'auto' ? 'min-w-0 shrink' : 'min-w-0 flex-1';\n}\n\nfunction itemStyle(element: IdwCardElement) {\n if (!sharesRows.value) {\n return undefined;\n }\n if (element.type === 'Input.Toggle' || element.type === 'Input.Checkbox') {\n return { alignSelf: 'center' };\n }\n return undefined;\n}\n</script>\n\n<template>\n <div\n class=\"idw-card-column-set min-w-0 gap-sm\"\n :class=\"sharesRows ? undefined : 'flex flex-wrap items-stretch'\"\n :style=\"gridStyle\"\n >\n <div\n v-for=\"(column, columnIndex) in element.columns\"\n :key=\"columnIndex\"\n :class=\"sharesRows ? 'min-w-0' : ['flex flex-col', columnClass(column.width)]\"\n :style=\"sharesRows ? columnGridStyle : undefined\"\n >\n <IdwCardElementView\n v-for=\"(child, index) in column.items\"\n :key=\"child.id || index\"\n :element=\"child\"\n :host-config=\"hostConfig\"\n :style=\"itemStyle(child)\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwCardHostConfig } from '../../host';\nimport type { IdwContainerElement } from '../../schema';\nimport IdwCardElementView from '../IdwCardElementView.vue';\nimport type { IdwCardActionEvent } from '../types';\n\ndefineOptions({\n name: 'IdwCardContainerElement',\n});\n\ndefineProps<{\n element: IdwContainerElement;\n hostConfig: IdwCardHostConfig;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n</script>\n\n<template>\n <div class=\"idw-card-container flex min-h-0 min-w-0 flex-1 flex-col\">\n <IdwCardElementView\n v-for=\"(child, index) in element.items\"\n :key=\"child.id || index\"\n :element=\"child\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n </div>\n</template>\n","const STYLE_ID = 'idw-card-frame-border';\n\nconst CSS = `\n.idw-card-frame {\n border: 1px solid var(--or-c-disabled-light);\n border-radius: 8px;\n}\n.dark .idw-card-frame,\n[data-theme='dark'] .idw-card-frame {\n border-color: var(--or-c-disabled-dark);\n}\n.idw-card-frame-line {\n border-bottom: 1px solid var(--or-c-disabled-light);\n}\n.dark .idw-card-frame-line,\n[data-theme='dark'] .idw-card-frame-line {\n border-bottom-color: var(--or-c-disabled-dark);\n}\n.idw-card-frame-line-top {\n border-top: 1px solid var(--or-c-disabled-light);\n}\n.dark .idw-card-frame-line-top,\n[data-theme='dark'] .idw-card-frame-line-top {\n border-top-color: var(--or-c-disabled-dark);\n}\n`;\n\n/** Host Tailwind does not always emit library-only border utilities. */\nexport function installIdwCardFrameBorder(): void {\n if (typeof document === 'undefined' || document.getElementById(STYLE_ID)) {\n return;\n }\n\n const style = document.createElement('style');\n style.id = STYLE_ID;\n style.textContent = CSS;\n document.head.appendChild(style);\n}\n","<script setup lang=\"ts\">\nimport { OrProgressV3, ProgressColor, ProgressType } from '@onereach/ui-components';\n\nimport type { IdwFactSetElement, IdwProgressColor, IdwProgressVariant } from '../../schema';\nimport { installIdwCardFrameBorder } from '../frameBorder';\n\ndefineOptions({\n name: 'IdwCardFactSetElement',\n});\n\ndefineProps<{\n element: IdwFactSetElement;\n}>();\n\ninstallIdwCardFrameBorder();\n\nconst progressColor: Record<IdwProgressColor, ProgressColor> = {\n auto: ProgressColor.Auto,\n primary: ProgressColor.Primary,\n success: ProgressColor.Success,\n warning: ProgressColor.Warning,\n error: ProgressColor.Error,\n};\n\nconst progressType: Record<IdwProgressVariant, ProgressType> = {\n linear: ProgressType.Linear,\n circle: ProgressType.Circle,\n};\n\nfunction factTitle(title: string) {\n return title.endsWith(':') ? title : `${title}:`;\n}\n\nfunction progressMax(progress: NonNullable<IdwFactSetElement['progress']>) {\n return progress.maxValue ?? progress.max ?? 100;\n}\n</script>\n\n<template>\n <div\n v-if=\"element.facts.length || element.progress\"\n class=\"idw-card-fact-set idw-card-frame overflow-hidden\"\n >\n <div\n v-if=\"element.facts.length\"\n class=\"idw-card-fact-set__facts\"\n style=\"display: grid; grid-template-columns: max-content minmax(0, 1fr); column-gap: 16px; row-gap: 8px; padding: 16px;\"\n >\n <template\n v-for=\"(fact, index) in element.facts\"\n :key=\"`${fact.title}-${index}`\"\n >\n <p\n class=\"idw-card-fact-set__label typography-body-2-semibold text-on-background dark:text-on-background-dark\"\n style=\"margin: 0; white-space: nowrap;\"\n >\n {{ factTitle(fact.title) }}\n </p>\n <p\n class=\"idw-card-fact-set__value typography-body-2-regular text-on-background dark:text-on-background-dark\"\n style=\"margin: 0; min-width: 0; overflow-wrap: break-word;\"\n >\n {{ fact.value }}\n </p>\n </template>\n </div>\n <div\n v-if=\"element.progress\"\n class=\"idw-card-fact-set__progress idw-card-frame-line-top flex flex-col gap-xs px-md pb-sm+ pt-md\"\n >\n <p\n v-if=\"element.progress.label\"\n class=\"idw-card-fact-set__progress-label typography-caption-bold text-on-background dark:text-on-background-dark\"\n style=\"margin: 0;\"\n >\n {{ element.progress.label }}\n </p>\n <OrProgressV3\n :class=\"(element.progress.variant ?? 'linear') === 'circle' ? undefined : 'w-full'\"\n :style=\"(element.progress.variant ?? 'linear') === 'circle' ? { display: 'inline-block', width: 'fit-content' } : undefined\"\n :value=\"element.progress.value\"\n :max-value=\"progressMax(element.progress)\"\n :type=\"progressType[element.progress.variant ?? 'linear']\"\n :color=\"progressColor[element.progress.color ?? 'success']\"\n />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { OrIconButtonV3, OrIconV3, OrMenuItemV3, OrMenuV3 } from '@onereach/ui-components';\nimport { ref } from 'vue';\n\nimport type { IdwFileElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardFileElement',\n});\n\nconst props = defineProps<{\n element: IdwFileElement;\n}>();\n\nconst menuButton = ref<{ root?: HTMLElement }>();\nconst menuOpen = ref(false);\n\nfunction openFile() {\n menuOpen.value = false;\n window.open(props.element.src, '_blank', 'noopener,noreferrer');\n}\n\nfunction downloadFile() {\n menuOpen.value = false;\n const link = document.createElement('a');\n link.href = props.element.src;\n link.download = props.element.title;\n link.rel = 'noopener noreferrer';\n link.target = '_blank';\n document.body.appendChild(link);\n link.click();\n link.remove();\n}\n</script>\n\n<template>\n <div\n class=\"idw-card-file flex w-full min-w-0 items-center gap-md rounded-lg bg-primary-opacity-0-08 py-sm pl-sm pr-md text-on-background dark:bg-primary-opacity-0-08-dark dark:text-on-background-dark\"\n >\n <span class=\"flex size-2xl shrink-0 items-center justify-center rounded-md bg-primary-opacity-0-08 dark:bg-primary-opacity-0-08-dark\">\n <OrIconV3\n icon=\"description\"\n size=\"xl\"\n />\n </span>\n <span class=\"flex min-w-0 flex-1 flex-col\">\n <span class=\"truncate typography-body-2-regular\">{{ element.title }}</span>\n <span\n v-if=\"element.size\"\n class=\"typography-caption-regular text-outline dark:text-outline-dark\"\n >\n {{ element.size }}\n </span>\n </span>\n <OrIconButtonV3\n ref=\"menuButton\"\n class=\"shrink-0\"\n icon=\"more_vert\"\n size=\"m\"\n tooltip=\"File actions\"\n @click.stop=\"menuOpen = !menuOpen\"\n />\n </div>\n <OrMenuV3\n :is-open=\"menuOpen\"\n :trigger=\"menuButton?.root\"\n placement=\"bottom-end\"\n @close=\"menuOpen = false\"\n >\n <OrMenuItemV3\n icon=\"open_in_new\"\n @click=\"openFile\"\n >\n Open\n </OrMenuItemV3>\n <OrMenuItemV3\n icon=\"download\"\n @click=\"downloadFile\"\n >\n Download\n </OrMenuItemV3>\n </OrMenuV3>\n</template>\n","<script setup lang=\"ts\">\nimport { FeedHtmlContent } from '../../../components/Feeds/FeedHtmlContent';\nimport type { IdwCardHostConfig } from '../../host';\nimport type { IdwHtmlElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardHtmlElement',\n});\n\ndefineProps<{\n element: IdwHtmlElement;\n hostConfig: IdwCardHostConfig;\n}>();\n</script>\n\n<template>\n <FeedHtmlContent\n :title=\"element.title\"\n :content=\"element.content\"\n :size=\"hostConfig.embedSize\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { OrIconV3 } from '@onereach/ui-components';\n\nimport type { IdwIconElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardIconElement',\n});\n\ndefineProps<{\n element: IdwIconElement;\n}>();\n</script>\n\n<template>\n <OrIconV3\n :icon=\"element.icon\"\n class=\"text-on-background dark:text-on-background-dark\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport type { IdwImageElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardImageElement',\n});\n\nconst props = defineProps<{\n element: IdwImageElement;\n}>();\n\nconst aspectClass = computed(() => (\n props.element.aspect === 'square' ? 'aspect-square' : 'aspect-video'\n));\n</script>\n\n<template>\n <img\n class=\"idw-card-image w-full rounded-xl bg-surface-1 object-cover dark:bg-surface-1-dark\"\n :class=\"aspectClass\"\n :src=\"element.url\"\n :alt=\"element.alt\"\n >\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport type { IdwImageSetElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardImageSetElement',\n});\n\nconst props = defineProps<{\n element: IdwImageSetElement;\n}>();\n\nconst gridClass = computed(() => (\n props.element.images.length <= 1 ? 'grid-cols-1' : 'grid-cols-2'\n));\n\nfunction spansWidth(index: number) {\n const count = props.element.images.length;\n if (count === 3) {\n return index === 0;\n }\n if (count === 5) {\n return index === 2;\n }\n return false;\n}\n</script>\n\n<template>\n <div\n class=\"idw-card-image-set grid min-w-0 gap-sm\"\n :class=\"gridClass\"\n >\n <img\n v-for=\"(image, index) in element.images\"\n :key=\"`${image.url}-${index}`\"\n class=\"w-full bg-surface-1 object-cover dark:bg-surface-1-dark\"\n :class=\"spansWidth(index) ? 'col-span-2 aspect-[2/1] rounded-xl' : 'aspect-square rounded-xl'\"\n :src=\"image.url\"\n :alt=\"image.alt\"\n >\n </div>\n</template>\n","export function parseCardDate(value: unknown): Date | undefined {\n if (value instanceof Date && !Number.isNaN(value.getTime())) {\n return value;\n }\n if (typeof value !== 'string' || !value.trim()) {\n return undefined;\n }\n if (/^\\d{2}:\\d{2}$/.test(value)) {\n const [hours, minutes] = value.split(':').map(Number);\n const parsed = new Date();\n parsed.setHours(hours, minutes, 0, 0);\n return parsed;\n }\n const parsed = new Date(value);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n}\n\nfunction pad(value: number) {\n return String(value).padStart(2, '0');\n}\n\nexport function toDateValue(value: Date | null | undefined): string {\n if (!value || Number.isNaN(value.getTime())) {\n return '';\n }\n return `${value.getFullYear()}-${pad(value.getMonth() + 1)}-${pad(value.getDate())}`;\n}\n\nexport function toTimeValue(value: Date | null | undefined): string {\n if (!value || Number.isNaN(value.getTime())) {\n return '';\n }\n return `${pad(value.getHours())}:${pad(value.getMinutes())}`;\n}\n\nexport function toDateTimeValue(value: Date | null | undefined): string {\n if (!value || Number.isNaN(value.getTime())) {\n return '';\n }\n return value.toISOString();\n}\n","const STYLE_ID = 'idw-card-slider-spacing';\n\nconst CSS = `\n.idw-card-slider {\n padding-bottom: 8px;\n}\n@media (min-width: 768px) {\n .idw-card-slider {\n padding-bottom: 16px;\n }\n}\n`;\n\n/** Value labels sit outside the slider. Desktop grouping leaves 16px under them. */\nexport function installIdwCardSliderSpacing(): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n const style = document.getElementById(STYLE_ID) ?? document.createElement('style');\n style.id = STYLE_ID;\n style.textContent = CSS;\n if (!style.parentNode) {\n document.head.appendChild(style);\n }\n}\n","<script setup lang=\"ts\">\nimport {\n OrCheckboxGroupV3,\n OrCheckboxV3,\n OrDatePickerV3,\n OrDateTimePickerV3,\n OrInputV3,\n OrRadioGroupV3,\n OrRangeSliderV3,\n OrRatingV3,\n OrSelectV3,\n OrSliderV3,\n OrSwitchV3,\n OrTextareaV3,\n OrTimePickerV3,\n} from '@onereach/ui-components';\nimport { computed } from 'vue';\n\nimport { parseCardDate, toDateTimeValue, toDateValue, toTimeValue } from '../../form/dates';\nimport { useIdwCardForm } from '../../form/formContext';\nimport { installIdwCardSliderSpacing } from '../sliderSpacing';\nimport type {\n IdwCardInputElement,\n IdwChoice,\n IdwInputCheckboxGroupElement,\n IdwInputChoiceSetElement,\n IdwInputRadioGroupElement,\n IdwInputRangeElement,\n IdwInputSelectElement,\n IdwInputSliderElement,\n IdwLocationValue,\n IdwOption,\n} from '../../schema';\n\ndefineOptions({\n name: 'IdwCardInputElement',\n});\n\nconst props = defineProps<{\n element: IdwCardInputElement;\n}>();\n\ninstallIdwCardSliderSpacing();\n\nconst form = useIdwCardForm();\n\nconst error = computed(() => form.getError(props.element.name));\nconst model = computed(() => form.getValue(props.element.name));\n\nconst textType = computed(() => (\n props.element.type === 'Input.Text' && props.element.style === 'password' ? 'password' : 'text'\n));\n\nconst textInputMode = computed(() => {\n if (props.element.type !== 'Input.Text') {\n return undefined;\n }\n if (props.element.style === 'email') {\n return 'email';\n }\n if (props.element.style === 'url') {\n return 'url';\n }\n if (props.element.style === 'tel') {\n return 'tel';\n }\n return undefined;\n});\n\nconst stringValue = computed(() => (typeof model.value === 'string' ? model.value : ''));\nconst numberValue = computed(() => (\n typeof model.value === 'number' || typeof model.value === 'string' ? model.value : undefined\n));\nconst selectValue = computed(() => model.value as string | string[] | undefined);\nconst radioValue = computed(() => (\n typeof model.value === 'string' || typeof model.value === 'number' ? model.value : undefined\n));\n\nfunction optionLabel(option: IdwChoice | IdwOption) {\n return ('title' in option ? option.label || option.title : option.label) || option.value;\n}\n\nfunction elementOptions(element: IdwInputSelectElement\n | IdwInputRadioGroupElement\n | IdwInputCheckboxGroupElement\n | IdwInputChoiceSetElement) {\n return element.type === 'Input.ChoiceSet' ? element.choices : element.options;\n}\n\nfunction isChoiceElement(\n element: IdwCardInputElement,\n): element is IdwInputSelectElement\n | IdwInputRadioGroupElement\n | IdwInputCheckboxGroupElement\n | IdwInputChoiceSetElement {\n return element.type === 'Input.Select'\n || element.type === 'Input.RadioGroup'\n || element.type === 'Input.CheckboxGroup'\n || element.type === 'Input.ChoiceSet';\n}\n\nconst selectOptions = computed(() => {\n if (!isChoiceElement(props.element)) {\n return [];\n }\n return elementOptions(props.element).map((option) => ({\n label: optionLabel(option),\n value: option.value,\n disabled: option.disabled,\n }));\n});\n\nconst selectMultiple = computed(() => {\n if (props.element.type === 'Input.Select') {\n return Boolean(props.element.multiple);\n }\n if (props.element.type === 'Input.ChoiceSet') {\n return Boolean(props.element.multiple ?? props.element.multi);\n }\n return false;\n});\n\nconst selectSearch = computed(() => {\n if (props.element.type === 'Input.Select') {\n return Boolean(props.element.enableSearch);\n }\n return props.element.type === 'Input.ChoiceSet'\n && Boolean(props.element.enableSearch || props.element.style === 'filtered');\n});\n\nconst groupDirection = computed(() => (\n props.element.type === 'Input.RadioGroup' || props.element.type === 'Input.CheckboxGroup'\n ? props.element.direction\n : undefined\n));\n\nconst groupReadonly = computed(() => (\n props.element.type === 'Input.RadioGroup' || props.element.type === 'Input.CheckboxGroup'\n ? props.element.readonly\n : undefined\n));\n\nconst location = computed<IdwLocationValue>(() => {\n const value = model.value;\n if (value && typeof value === 'object') {\n return value as IdwLocationValue;\n }\n return { address: '' };\n});\n\nfunction set(value: unknown) {\n form.setValue(props.element.name, value);\n}\n\nfunction setLocation(patch: IdwLocationValue) {\n set({\n ...location.value,\n ...patch,\n });\n}\n\nfunction sliderProps(element: IdwInputSliderElement | IdwInputRangeElement) {\n return {\n minValue: element.minValue ?? element.min,\n maxValue: element.maxValue ?? element.max,\n ...(element.step != null ? { step: element.step } : {}),\n ...(element.breakpoints ? { breakpoints: element.breakpoints } : {}),\n ...(element.color ? { color: element.color } : {}),\n ...(element.orientation ? { orientation: element.orientation } : {}),\n disabled: element.disabled,\n };\n}\n</script>\n\n<template>\n <div class=\"idw-card-input flex min-w-0 flex-col gap-xs\">\n <OrTextareaV3\n v-if=\"element.type === 'Input.Textarea' || (element.type === 'Input.Text' && element.multiline)\"\n :model-value=\"stringValue\"\n :label=\"element.label\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n :rows=\"element.rows || 3\"\n @update:model-value=\"set\"\n />\n <OrInputV3\n v-else-if=\"element.type === 'Input.Text'\"\n :model-value=\"stringValue\"\n :type=\"textType\"\n :inputmode=\"textInputMode\"\n :label=\"element.label\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <OrInputV3\n v-else-if=\"element.type === 'Input.Number'\"\n :model-value=\"numberValue\"\n type=\"number\"\n :label=\"element.label\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set($event === '' || $event == null ? undefined : Number($event))\"\n />\n <OrSwitchV3\n v-else-if=\"element.type === 'Input.Toggle'\"\n :model-value=\"Boolean(model)\"\n :label=\"element.label\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <OrCheckboxV3\n v-else-if=\"element.type === 'Input.Checkbox'\"\n :model-value=\"Boolean(model)\"\n :label=\"element.label\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <OrSelectV3\n v-else-if=\"element.type === 'Input.Select' || (element.type === 'Input.ChoiceSet' && element.style !== 'expanded')\"\n :model-value=\"selectValue\"\n :options=\"selectOptions\"\n :multiple=\"selectMultiple\"\n :enable-search=\"selectSearch\"\n :enable-clear=\"element.type === 'Input.Select' ? element.enableClear : undefined\"\n :label=\"element.label\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <OrCheckboxGroupV3\n v-else-if=\"element.type === 'Input.CheckboxGroup' || (element.type === 'Input.ChoiceSet' && element.style === 'expanded' && selectMultiple)\"\n :model-value=\"Array.isArray(model) ? model : []\"\n :options=\"selectOptions\"\n :direction=\"groupDirection\"\n :readonly=\"groupReadonly\"\n :label=\"element.label\"\n :hint=\"element.hint\"\n :error=\"error\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <OrRadioGroupV3\n v-else-if=\"element.type === 'Input.RadioGroup' || element.type === 'Input.ChoiceSet'\"\n :model-value=\"radioValue\"\n :options=\"selectOptions\"\n :direction=\"groupDirection\"\n :readonly=\"groupReadonly\"\n :label=\"element.label\"\n :hint=\"element.hint\"\n :error=\"error\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <OrDatePickerV3\n v-else-if=\"element.type === 'Input.Date'\"\n :model-value=\"parseCardDate(model)\"\n :label=\"element.label\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set(toDateValue($event))\"\n />\n <OrTimePickerV3\n v-else-if=\"element.type === 'Input.Time'\"\n :model-value=\"parseCardDate(model)\"\n :label=\"element.label\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set(toTimeValue($event))\"\n />\n <OrDateTimePickerV3\n v-else-if=\"element.type === 'Input.DateTime'\"\n :model-value=\"parseCardDate(model)\"\n :label=\"element.label\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set(toDateTimeValue($event))\"\n />\n <div\n v-else-if=\"element.type === 'Input.Slider'\"\n class=\"idw-card-slider\"\n >\n <OrSliderV3\n v-bind=\"sliderProps(element)\"\n :model-value=\"Number(model ?? element.minValue ?? element.min ?? 0)\"\n @update:model-value=\"set\"\n />\n </div>\n <div\n v-else-if=\"element.type === 'Input.Range'\"\n class=\"idw-card-slider\"\n >\n <OrRangeSliderV3\n v-bind=\"sliderProps(element)\"\n :model-value=\"(Array.isArray(model) ? model : [\n element.minValue ?? element.min ?? 0,\n element.maxValue ?? element.max ?? 100,\n ]) as [number, number]\"\n @update:model-value=\"set\"\n />\n </div>\n <OrRatingV3\n v-else-if=\"element.type === 'Input.Rating'\"\n :model-value=\"Number(model ?? 0)\"\n :variant=\"element.variant\"\n :readonly=\"element.readonly\"\n :disabled=\"element.disabled\"\n @update:model-value=\"set\"\n />\n <div\n v-else-if=\"element.type === 'Input.Location'\"\n class=\"flex flex-col gap-sm\"\n >\n <OrInputV3\n :model-value=\"location.address || ''\"\n :label=\"element.label || 'Location'\"\n :placeholder=\"element.placeholder\"\n :hint=\"element.hint\"\n :error=\"error\"\n :required=\"element.required\"\n :disabled=\"element.disabled\"\n @update:model-value=\"setLocation({ address: String($event || '') })\"\n />\n <div\n v-if=\"element.includeCoordinates\"\n class=\"grid grid-cols-2 gap-sm\"\n >\n <OrInputV3\n :model-value=\"location.lat\"\n type=\"number\"\n label=\"Latitude\"\n :disabled=\"element.disabled\"\n @update:model-value=\"setLocation({ lat: $event === '' || $event == null ? undefined : Number($event) })\"\n />\n <OrInputV3\n :model-value=\"location.lng\"\n type=\"number\"\n label=\"Longitude\"\n :disabled=\"element.disabled\"\n @update:model-value=\"setLocation({ lng: $event === '' || $event == null ? undefined : Number($event) })\"\n />\n </div>\n </div>\n </div>\n</template>\n","const STYLE_ID = 'idw-card-media-chrome';\n\nconst CSS = `\n.idw-card-media button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n appearance: none;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n box-shadow: none;\n color: inherit;\n line-height: 0;\n cursor: pointer;\n}\n.idw-card-media button:focus {\n outline: none;\n}\n.idw-card-media button:focus-visible {\n outline: 2px solid var(--or-c-primary-light);\n outline-offset: 2px;\n}\n.idw-card-media .or-icon-v3 {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n font-size: 16px;\n line-height: 1;\n color: inherit;\n}\n.idw-card-media .idw-card-video-play {\n width: 36px;\n height: 36px;\n border-radius: 999px;\n background: var(--or-c-background-light);\n color: var(--or-c-on-background-light);\n}\n.idw-card-media .idw-card-video-play:hover {\n width: 40px;\n height: 40px;\n}\n.idw-card-video-controls {\n color: var(--or-c-background-light);\n}\n.idw-card-video-track {\n position: relative;\n height: 4px;\n width: 100%;\n border-radius: 2px;\n background: var(--or-c-outline-light);\n cursor: pointer;\n}\n.idw-card-video-track-fill {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n border-radius: 2px;\n background: var(--or-c-background-light);\n}\n.idw-card-media .idw-card-audio-play {\n width: 32px;\n height: 32px;\n border-radius: 999px;\n background: var(--or-c-on-background-light);\n color: var(--or-c-background-light);\n}\n.dark .idw-card-media .idw-card-audio-play,\n[data-theme='dark'] .idw-card-media .idw-card-audio-play {\n background: var(--or-c-on-background-dark);\n color: var(--or-c-background-dark);\n}\n.idw-card-media .idw-card-audio-play.is-unavailable {\n background: var(--or-c-disabled-light);\n color: var(--or-c-outline-light);\n}\n.dark .idw-card-media .idw-card-audio-play.is-unavailable,\n[data-theme='dark'] .idw-card-media .idw-card-audio-play.is-unavailable {\n background: var(--or-c-disabled-dark);\n color: var(--or-c-outline-dark);\n}\n.idw-card-audio-track {\n position: relative;\n height: 12px;\n min-width: 0;\n flex: 1;\n cursor: pointer;\n}\n.idw-card-audio-rail,\n.idw-card-audio-buffer,\n.idw-card-audio-fill {\n position: absolute;\n top: 50%;\n left: 0;\n height: 4px;\n border-radius: 2px;\n transform: translateY(-50%);\n}\n.idw-card-audio-rail {\n right: 0;\n background: var(--or-c-surface-1-light);\n}\n.dark .idw-card-audio-rail,\n[data-theme='dark'] .idw-card-audio-rail {\n background: var(--or-c-surface-1-dark);\n}\n.idw-card-audio-buffer {\n background: var(--or-c-secondary-container-light);\n}\n.dark .idw-card-audio-buffer,\n[data-theme='dark'] .idw-card-audio-buffer {\n background: var(--or-c-secondary-container-dark);\n}\n.idw-card-audio-fill,\n.idw-card-audio-thumb {\n background: var(--or-c-on-background-light);\n}\n.dark .idw-card-audio-fill,\n.dark .idw-card-audio-thumb,\n[data-theme='dark'] .idw-card-audio-fill,\n[data-theme='dark'] .idw-card-audio-thumb {\n background: var(--or-c-on-background-dark);\n}\n.idw-card-audio-thumb {\n position: absolute;\n top: 50%;\n width: 12px;\n height: 12px;\n border-radius: 999px;\n transform: translate(-50%, -50%);\n box-shadow: 0 1px 2px rgba(24, 28, 34, 0.15), 0 0 5px rgba(0, 0, 0, 0.05);\n}\n.idw-card-volume {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n flex: 0 0 16px;\n}\n.idw-card-volume-popup {\n position: absolute;\n z-index: 5;\n bottom: calc(100% + 4px);\n left: 50%;\n width: 24px;\n height: 80px;\n transform: translateX(-50%);\n border-radius: 8px;\n background: var(--or-c-surface-1-light);\n box-shadow: inset 0 0 1px rgba(255, 255, 255, 0.4), -1px 0 20px rgba(24, 28, 34, 0.05), 0 4px 4px rgba(0, 0, 0, 0.25);\n cursor: pointer;\n}\n.dark .idw-card-volume-popup,\n[data-theme='dark'] .idw-card-volume-popup {\n background: var(--or-c-surface-1-dark);\n}\n.idw-card-volume-track {\n position: absolute;\n top: 10px;\n right: 0;\n bottom: 10px;\n left: 0;\n}\n.idw-card-volume-rail,\n.idw-card-volume-fill {\n position: absolute;\n left: 50%;\n width: 4px;\n border-radius: 2px;\n transform: translateX(-50%);\n}\n.idw-card-volume-rail {\n top: 0;\n bottom: 0;\n background: var(--or-c-outline-light);\n}\n.dark .idw-card-volume-rail,\n[data-theme='dark'] .idw-card-volume-rail {\n background: var(--or-c-outline-dark);\n}\n.idw-card-volume-fill {\n bottom: 0;\n background: var(--or-c-on-background-light);\n}\n.dark .idw-card-volume-fill,\n[data-theme='dark'] .idw-card-volume-fill {\n background: var(--or-c-on-background-dark);\n}\n.idw-card-volume-thumb {\n position: absolute;\n left: 50%;\n width: 12px;\n height: 12px;\n border-radius: 999px;\n background: var(--or-c-on-background-light);\n transform: translate(-50%, 50%);\n box-shadow: 0 1px 2px rgba(24, 28, 34, 0.15), 0 0 5px rgba(0, 0, 0, 0.05);\n}\n.dark .idw-card-volume-thumb,\n[data-theme='dark'] .idw-card-volume-thumb {\n background: var(--or-c-on-background-dark);\n}\n`;\n\n/** Host Tailwind does not emit several player sizes and token colors. */\nexport function installIdwCardMediaChrome(): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n style.textContent = CSS;\n}\n","import {\n computed,\n onBeforeUnmount,\n ref,\n watch,\n type Ref,\n} from 'vue';\n\nexport function formatMediaTime(seconds: number) {\n if (!Number.isFinite(seconds) || seconds < 0) {\n return '0:00';\n }\n\n const total = Math.floor(seconds);\n const hours = Math.floor(total / 3600);\n const minutes = Math.floor((total % 3600) / 60);\n const secs = String(total % 60).padStart(2, '0');\n\n if (hours > 0) {\n return `${hours}:${String(minutes).padStart(2, '0')}:${secs}`;\n }\n\n return `${minutes}:${secs}`;\n}\n\nexport function useMediaControls(source: Ref<string>) {\n const media = ref<HTMLMediaElement>();\n const playing = ref(false);\n const current = ref(0);\n const duration = ref(0);\n const muted = ref(false);\n const volume = ref(1);\n const unavailable = ref(!source.value);\n const buffered = ref(0);\n\n const progress = computed(() => (\n duration.value > 0 ? Math.min(1, current.value / duration.value) : 0\n ));\n\n const timeLabel = computed(() => (\n `${formatMediaTime(current.value)} / ${formatMediaTime(duration.value)}`\n ));\n\n function sync() {\n const element = media.value;\n\n if (!element) {\n return;\n }\n\n current.value = element.currentTime || 0;\n duration.value = Number.isFinite(element.duration) ? element.duration : 0;\n muted.value = element.muted || element.volume === 0;\n volume.value = element.muted ? 0 : element.volume;\n playing.value = !element.paused;\n\n if (element.buffered.length > 0 && duration.value > 0) {\n const end = element.buffered.end(element.buffered.length - 1);\n buffered.value = Math.min(1, end / duration.value);\n }\n }\n\n function toggle() {\n const element = media.value;\n\n if (!element || unavailable.value) {\n return;\n }\n\n if (element.paused) {\n void element.play().catch(() => {\n playing.value = false;\n });\n return;\n }\n\n element.pause();\n }\n\n function setVolume(ratio: number) {\n const element = media.value;\n const next = Math.min(1, Math.max(0, ratio));\n\n volume.value = next;\n muted.value = next === 0;\n\n if (!element) {\n return;\n }\n\n element.volume = next;\n element.muted = next === 0;\n }\n\n function seekRatio(ratio: number) {\n const element = media.value;\n\n if (!element || !Number.isFinite(element.duration) || element.duration <= 0) {\n return;\n }\n\n element.currentTime = Math.min(1, Math.max(0, ratio)) * element.duration;\n current.value = element.currentTime;\n }\n\n function nudge(seconds: number) {\n const element = media.value;\n\n if (!element || !Number.isFinite(element.duration)) {\n return;\n }\n\n element.currentTime = Math.min(\n element.duration,\n Math.max(0, element.currentTime + seconds),\n );\n current.value = element.currentTime;\n }\n\n function onSeek(event: PointerEvent) {\n const track = event.currentTarget as HTMLElement;\n const apply = (point: PointerEvent) => {\n const rect = track.getBoundingClientRect();\n const ratio = rect.width > 0 ? (point.clientX - rect.left) / rect.width : 0;\n seekRatio(ratio);\n };\n\n apply(event);\n\n const move = (point: PointerEvent) => apply(point);\n const stop = () => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', stop);\n };\n\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', stop);\n }\n\n function onError() {\n unavailable.value = true;\n playing.value = false;\n }\n\n watch(source, (url) => {\n unavailable.value = !url;\n current.value = 0;\n duration.value = 0;\n buffered.value = 0;\n playing.value = false;\n });\n\n onBeforeUnmount(() => {\n media.value?.pause();\n });\n\n return {\n media,\n playing,\n current,\n duration,\n muted,\n volume,\n unavailable,\n buffered,\n progress,\n timeLabel,\n sync,\n toggle,\n setVolume,\n nudge,\n onSeek,\n onError,\n };\n}\n","<script setup lang=\"ts\">\nimport { OrIconV3 } from '@onereach/ui-components';\nimport { computed, onBeforeUnmount, ref, watch } from 'vue';\n\ndefineOptions({\n name: 'IdwCardMediaVolume',\n});\n\nconst props = defineProps<{\n volume: number;\n muted: boolean;\n disabled?: boolean;\n}>();\n\nconst emit = defineEmits<{\n volume: [ratio: number];\n}>();\n\nconst root = ref<HTMLElement>();\nconst slider = ref<HTMLElement>();\nconst open = ref(false);\nconst level = computed(() => (props.muted ? 0 : props.volume));\nconst fill = computed(() => `${level.value * 100}%`);\nconst icon = computed(() => (level.value === 0 ? 'volume_off' : 'volume_up'));\n\nfunction applyPointer(point: PointerEvent) {\n const track = slider.value;\n\n if (!track) {\n return;\n }\n\n const rect = track.getBoundingClientRect();\n const ratio = rect.height > 0 ? (rect.bottom - point.clientY) / rect.height : 0;\n emit('volume', ratio);\n}\n\nfunction onPointerDown(event: PointerEvent) {\n applyPointer(event);\n\n const move = (point: PointerEvent) => applyPointer(point);\n const stop = () => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', stop);\n };\n\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', stop);\n}\n\nfunction onDocumentPointerDown(event: PointerEvent) {\n if (!root.value?.contains(event.target as Node)) {\n open.value = false;\n }\n}\n\nwatch(open, (isOpen) => {\n if (isOpen) {\n document.addEventListener('pointerdown', onDocumentPointerDown);\n return;\n }\n\n document.removeEventListener('pointerdown', onDocumentPointerDown);\n});\n\nonBeforeUnmount(() => {\n document.removeEventListener('pointerdown', onDocumentPointerDown);\n});\n</script>\n\n<template>\n <div\n ref=\"root\"\n class=\"idw-card-volume\"\n >\n <button\n type=\"button\"\n aria-label=\"Volume\"\n :aria-expanded=\"open\"\n :disabled=\"disabled\"\n @click=\"open = !open\"\n >\n <OrIconV3\n :icon=\"icon\"\n size=\"m\"\n variant=\"inherit\"\n />\n </button>\n <div\n v-if=\"open\"\n class=\"idw-card-volume-popup\"\n @pointerdown=\"onPointerDown\"\n >\n <div\n ref=\"slider\"\n class=\"idw-card-volume-track\"\n role=\"slider\"\n tabindex=\"0\"\n aria-label=\"Volume level\"\n aria-orientation=\"vertical\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"100\"\n :aria-valuenow=\"Math.round(level * 100)\"\n @keydown.up.prevent=\"emit('volume', level + 0.05)\"\n @keydown.down.prevent=\"emit('volume', level - 0.05)\"\n >\n <span class=\"idw-card-volume-rail\" />\n <span\n class=\"idw-card-volume-fill\"\n :style=\"{ height: fill }\"\n />\n <span\n class=\"idw-card-volume-thumb\"\n :style=\"{ bottom: fill }\"\n />\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { OrIconV3 } from '@onereach/ui-components';\nimport { computed, toRef } from 'vue';\n\nimport { useMediaControls } from '../mediaControls';\n\nimport MediaVolume from './MediaVolume.vue';\n\ndefineOptions({\n name: 'IdwCardMediaAudio',\n});\n\nconst props = defineProps<{\n url: string;\n title?: string;\n}>();\n\nconst {\n media,\n playing,\n current,\n duration,\n muted,\n volume,\n unavailable,\n progress,\n buffered: bufferedRatio,\n timeLabel,\n sync,\n toggle,\n setVolume,\n nudge,\n onSeek,\n onError,\n} = useMediaControls(toRef(props, 'url'));\nconst played = computed(() => `${progress.value * 100}%`);\nconst buffered = computed(() => `${bufferedRatio.value * 100}%`);\nconst playIcon = computed(() => {\n if (unavailable.value) {\n return 'play_disabled';\n }\n\n return playing.value ? 'pause' : 'play_arrow';\n});\n</script>\n\n<template>\n <div\n class=\"idw-card-media idw-card-audio flex items-center rounded-lg bg-primary-opacity-0-08 py-sm pl-sm pr-md dark:bg-primary-opacity-0-08-dark\"\n style=\"column-gap: 10px;\"\n >\n <audio\n ref=\"media\"\n class=\"hidden\"\n :src=\"url\"\n :title=\"title\"\n @timeupdate=\"sync\"\n @loadedmetadata=\"sync\"\n @progress=\"sync\"\n @play=\"sync\"\n @pause=\"sync\"\n @ended=\"sync\"\n @volumechange=\"sync\"\n @error=\"onError\"\n />\n <button\n type=\"button\"\n class=\"idw-card-audio-play flex shrink-0 items-center justify-center\"\n :class=\"{ 'is-unavailable': unavailable }\"\n :aria-label=\"playing ? 'Pause' : 'Play'\"\n :disabled=\"unavailable\"\n @click=\"toggle\"\n >\n <OrIconV3\n :icon=\"playIcon\"\n size=\"m\"\n variant=\"filled\"\n />\n </button>\n <p\n v-if=\"unavailable\"\n class=\"typography-caption-regular min-w-0 flex-1 text-center text-on-background dark:text-on-background-dark\"\n >\n No audio available\n </p>\n <div\n v-else\n class=\"flex min-w-0 flex-1 items-center gap-md\"\n >\n <div class=\"flex min-w-0 flex-1 items-center gap-sm\">\n <p class=\"typography-caption-regular shrink-0 text-on-background dark:text-on-background-dark\">\n {{ timeLabel }}\n </p>\n <div\n role=\"slider\"\n tabindex=\"0\"\n class=\"idw-card-audio-track\"\n aria-label=\"Seek\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"Math.round(duration)\"\n :aria-valuenow=\"Math.round(current)\"\n @pointerdown=\"onSeek\"\n @keydown.left.prevent=\"nudge(-5)\"\n @keydown.right.prevent=\"nudge(5)\"\n >\n <span class=\"idw-card-audio-rail\" />\n <span\n class=\"idw-card-audio-buffer\"\n :style=\"{ width: buffered }\"\n />\n <span\n class=\"idw-card-audio-fill\"\n :style=\"{ width: played }\"\n />\n <span\n class=\"idw-card-audio-thumb\"\n :style=\"{ left: played }\"\n />\n </div>\n </div>\n <MediaVolume\n class=\"shrink-0 text-on-background dark:text-on-background-dark\"\n :volume=\"volume\"\n :muted=\"muted\"\n @volume=\"setVolume\"\n />\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { OrIconV3 } from '@onereach/ui-components';\nimport { computed, onBeforeUnmount, onMounted, ref, toRef } from 'vue';\n\nimport { useMediaControls } from '../mediaControls';\n\nimport MediaVolume from './MediaVolume.vue';\n\ndefineOptions({\n name: 'IdwCardMediaVideo',\n});\n\nconst props = defineProps<{\n url: string;\n poster?: string;\n title?: string;\n}>();\n\nconst frame = ref<HTMLElement>();\nconst fullscreen = ref(false);\nconst {\n media,\n playing,\n current,\n duration,\n muted,\n volume,\n unavailable,\n progress,\n timeLabel,\n sync,\n toggle,\n setVolume,\n nudge,\n onSeek,\n onError,\n} = useMediaControls(toRef(props, 'url'));\nconst played = computed(() => `${progress.value * 100}%`);\n\nfunction toggleFullscreen() {\n const element = frame.value;\n\n if (!element?.requestFullscreen) {\n return;\n }\n\n if (document.fullscreenElement === element) {\n void document.exitFullscreen?.();\n return;\n }\n\n void element.requestFullscreen();\n}\n\nfunction onFullscreenChange() {\n fullscreen.value = document.fullscreenElement === frame.value;\n}\n\nonMounted(() => {\n document.addEventListener('fullscreenchange', onFullscreenChange);\n});\n\nonBeforeUnmount(() => {\n document.removeEventListener('fullscreenchange', onFullscreenChange);\n});\n</script>\n\n<template>\n <div\n ref=\"frame\"\n class=\"idw-card-media idw-card-video relative w-full overflow-hidden rounded-xl bg-surface-1 dark:bg-surface-1-dark\"\n :class=\"fullscreen ? 'h-full' : 'aspect-video'\"\n >\n <video\n ref=\"media\"\n class=\"absolute inset-0 size-full object-cover\"\n :src=\"url\"\n :poster=\"poster\"\n :title=\"title\"\n playsinline\n @click=\"toggle\"\n @timeupdate=\"sync\"\n @loadedmetadata=\"sync\"\n @play=\"sync\"\n @pause=\"sync\"\n @ended=\"sync\"\n @volumechange=\"sync\"\n @error=\"onError\"\n />\n <div class=\"pointer-events-none absolute inset-0 bg-on-background opacity-50\" />\n <div\n class=\"absolute inset-x-0 bottom-0 flex flex-col justify-end px-md\"\n style=\"height: 100px; padding-bottom: 10px; background-image: linear-gradient(to bottom, transparent, rgba(30, 35, 43, 0.8));\"\n >\n <div class=\"flex flex-col gap-sm\">\n <div class=\"flex items-center justify-between\">\n <div class=\"idw-card-video-controls flex items-center gap-sm\">\n <button\n type=\"button\"\n :aria-label=\"playing ? 'Pause' : 'Play'\"\n :disabled=\"unavailable\"\n @click=\"toggle\"\n >\n <OrIconV3\n :icon=\"playing ? 'pause' : 'play_arrow'\"\n size=\"m\"\n variant=\"filled\"\n />\n </button>\n <p class=\"typography-caption-regular\">\n {{ timeLabel }}\n </p>\n </div>\n <div class=\"idw-card-video-controls flex items-center gap-md\">\n <MediaVolume\n :volume=\"volume\"\n :muted=\"muted\"\n :disabled=\"unavailable\"\n @volume=\"setVolume\"\n />\n <button\n type=\"button\"\n :aria-label=\"fullscreen ? 'Exit full screen' : 'Full screen'\"\n @click=\"toggleFullscreen\"\n >\n <OrIconV3\n :icon=\"fullscreen ? 'fullscreen_exit' : 'fullscreen'\"\n size=\"m\"\n variant=\"inherit\"\n />\n </button>\n </div>\n </div>\n <div\n role=\"slider\"\n tabindex=\"0\"\n class=\"idw-card-video-track\"\n aria-label=\"Seek\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"Math.round(duration)\"\n :aria-valuenow=\"Math.round(current)\"\n :aria-disabled=\"unavailable\"\n @pointerdown=\"onSeek\"\n @keydown.left.prevent=\"nudge(-5)\"\n @keydown.right.prevent=\"nudge(5)\"\n >\n <span\n class=\"idw-card-video-track-fill\"\n :style=\"{ width: played }\"\n />\n </div>\n </div>\n </div>\n <p\n v-if=\"unavailable\"\n class=\"typography-caption-regular pointer-events-none absolute inset-0 flex items-center justify-center text-background\"\n >\n No video available\n </p>\n <button\n v-else\n type=\"button\"\n class=\"idw-card-video-play absolute left-1/2 top-1/2 z-10 flex -translate-x-1/2 -translate-y-1/2 items-center justify-center\"\n :aria-label=\"playing ? 'Pause' : 'Play'\"\n @click=\"toggle\"\n >\n <OrIconV3\n :icon=\"playing ? 'pause' : 'play_arrow'\"\n size=\"m\"\n variant=\"filled\"\n />\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwMediaElement } from '../../schema';\nimport { installIdwCardMediaChrome } from '../mediaChrome';\n\nimport MediaAudio from './MediaAudio.vue';\nimport MediaVideo from './MediaVideo.vue';\n\ndefineOptions({\n name: 'IdwCardMediaElement',\n});\n\ninstallIdwCardMediaChrome();\n\nconst props = defineProps<{\n element: IdwMediaElement;\n}>();\n</script>\n\n<template>\n <MediaVideo\n v-if=\"(props.element.mediaType || 'video') === 'video'\"\n :url=\"props.element.url\"\n :poster=\"props.element.poster\"\n :title=\"props.element.title\"\n />\n <MediaAudio\n v-else\n :url=\"props.element.url\"\n :title=\"props.element.title\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { OrIconV3 } from '@onereach/ui-components';\n\nimport type { IdwNoteElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardNoteElement',\n});\n\ndefineProps<{\n element: IdwNoteElement;\n}>();\n</script>\n\n<template>\n <div class=\"idw-card-note flex items-start gap-sm rounded-xl bg-primary-opacity-0-08 p-md dark:bg-primary-opacity-0-08-dark\">\n <OrIconV3\n :icon=\"element.icon || 'sticky_note_2'\"\n class=\"shrink-0 text-on-background dark:text-on-background-dark\"\n />\n <p class=\"m-0 min-w-0 flex-1 typography-body-2-regular text-on-background dark:text-on-background-dark\">\n <span class=\"typography-body-2-semibold\">{{ element.label || 'Notes:' }}</span>\n {{ element.text }}\n </p>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { OrNotificationV3 } from '@onereach/ui-components';\nimport { ref } from 'vue';\n\nimport type { IdwNotificationElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardNotificationElement',\n});\n\ndefineProps<{\n element: IdwNotificationElement;\n}>();\n\nconst closed = ref(false);\n</script>\n\n<template>\n <OrNotificationV3\n v-if=\"!closed\"\n class=\"idw-card-notification\"\n :variant=\"element.variant ?? 'info'\"\n :message=\"element.message\"\n :disable-close=\"element.disableClose ?? false\"\n @close=\"closed = true\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { OrProgressV3, ProgressColor, ProgressType } from '@onereach/ui-components';\nimport { computed } from 'vue';\n\nimport type { IdwProgressColor, IdwProgressElement, IdwTone } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardProgressElement',\n});\n\nconst props = defineProps<{\n element: IdwProgressElement;\n}>();\n\nconst toneColor: Record<IdwTone, ProgressColor> = {\n default: ProgressColor.Primary,\n emphasis: ProgressColor.Primary,\n success: ProgressColor.Success,\n warning: ProgressColor.Warning,\n attention: ProgressColor.Error,\n};\n\nconst progressColor: Record<IdwProgressColor, ProgressColor> = {\n auto: ProgressColor.Auto,\n primary: ProgressColor.Primary,\n success: ProgressColor.Success,\n warning: ProgressColor.Warning,\n error: ProgressColor.Error,\n};\n\nconst color = computed(() => (\n props.element.color\n ? progressColor[props.element.color]\n : toneColor[props.element.tone ?? 'default']\n));\nconst type = computed(() => (\n props.element.variant === 'circle' ? ProgressType.Circle : ProgressType.Linear\n));\nconst maxValue = computed(() => props.element.maxValue ?? props.element.max ?? 100);\nconst progressAttrs = computed(() => ({\n ...(props.element.precision != null ? { precision: props.element.precision } : {}),\n ...(props.element.loading ? { loading: true } : {}),\n}));\n</script>\n\n<template>\n <OrProgressV3\n class=\"idw-card-progress\"\n :class=\"element.variant === 'circle' ? undefined : 'w-full'\"\n :style=\"element.variant === 'circle' ? { display: 'inline-block', width: 'fit-content' } : undefined\"\n :value=\"element.value\"\n :max-value=\"maxValue\"\n :type=\"type\"\n :color=\"color\"\n v-bind=\"progressAttrs\"\n >\n <template\n v-if=\"element.label\"\n #label\n >\n {{ element.label }}\n </template>\n </OrProgressV3>\n</template>\n","<script setup lang=\"ts\">\nimport { OrButtonV3 } from '@onereach/ui-components';\n\nimport defaultSkillBandUrl from '../../../assets/skill-card-background.png';\nimport { FeedMarkdownContent } from '../../../components/Feeds/FeedMarkdownContent';\nimport { CardSize, SkillCard } from '../../../components/SkillCard';\nimport type { IdwSkillElement } from '../../schema';\nimport type { IdwCardActionEvent } from '../types';\n\ndefineOptions({\n name: 'IdwCardSkillElement',\n});\n\nconst props = defineProps<{\n element: IdwSkillElement;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n\nconst bandStyle = {\n backgroundImage: `url(${defaultSkillBandUrl})`,\n};\n\nfunction onStartSkill() {\n emit('action', {\n verb: 'start-skill',\n title: props.element.startSkillLabel || 'Start skill',\n skillId: props.element.skill?.id,\n });\n}\n</script>\n\n<template>\n <div class=\"idw-card-skill flex flex-col gap-md\">\n <div\n v-if=\"element.skill\"\n class=\"flex h-[12.5rem] w-full items-center justify-center overflow-hidden rounded-xl bg-cover bg-center\"\n :style=\"bandStyle\"\n >\n <SkillCard\n :skill=\"element.skill\"\n :size=\"CardSize.S\"\n @click=\"emit('skill-click')\"\n />\n </div>\n <FeedMarkdownContent\n v-if=\"element.text\"\n :text=\"element.text\"\n />\n <OrButtonV3\n v-if=\"element.startSkillLabel\"\n class=\"w-full md:w-auto\"\n variant=\"outlined\"\n color=\"primary\"\n @click=\"onStartSkill\"\n >\n {{ element.startSkillLabel }}\n </OrButtonV3>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { IdwTableElement } from '../../schema';\nimport { installIdwCardFrameBorder } from '../frameBorder';\n\ndefineOptions({\n name: 'IdwCardTableElement',\n});\n\ndefineProps<{\n element: IdwTableElement;\n}>();\n\ninstallIdwCardFrameBorder();\n</script>\n\n<template>\n <div class=\"idw-card-table idw-card-frame w-full min-w-0 overflow-auto\">\n <table class=\"w-full border-collapse\">\n <thead>\n <tr>\n <th\n v-for=\"column in element.columns\"\n :key=\"column.title\"\n class=\"idw-card-frame-line text-left typography-body-2-bold text-on-background dark:text-on-background-dark\"\n style=\"padding: 12px;\"\n >\n {{ column.title }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n v-for=\"(row, rowIndex) in element.rows\"\n :key=\"rowIndex\"\n >\n <td\n v-for=\"(cell, cellIndex) in row\"\n :key=\"cellIndex\"\n class=\"typography-body-2-regular text-on-background dark:text-on-background-dark\"\n :class=\"{ 'idw-card-frame-line': rowIndex < element.rows.length - 1 }\"\n style=\"padding: 12px;\"\n >\n {{ cell }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport { FeedMarkdownContent } from '../../../components/Feeds/FeedMarkdownContent';\nimport { IDW_TEXT_STYLE_CLASS, IDW_TONE_SURFACE_CLASS } from '../../host';\nimport type { IdwTextElement } from '../../schema';\n\ndefineOptions({\n name: 'IdwCardTextElement',\n});\n\nconst props = defineProps<{\n element: IdwTextElement;\n}>();\n\nconst contentClass = computed(() => {\n const textStyle = props.element.textStyle ?? 'body';\n const tone = props.element.tone ?? 'default';\n return [\n IDW_TEXT_STYLE_CLASS[textStyle],\n IDW_TONE_SURFACE_CLASS[tone],\n '[&_:where(p,ul,ol,h1,h2,h3,h4)]:m-0 [&_p+_p]:mt-sm',\n ].filter(Boolean).join(' ');\n});\n</script>\n\n<template>\n <FeedMarkdownContent\n :text=\"element.text\"\n :content-class=\"contentClass\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport { useIdwCardForm } from '../form/formContext';\nimport {\n DEFAULT_ELEMENT_SPACING,\n IDW_SPACING_CLASS,\n IDW_TONE_SURFACE_CLASS,\n type IdwCardHostConfig,\n} from '../host';\nimport { isIdwCardInputElement, type IdwAlignment, type IdwCardElement } from '../schema';\n\nimport ActionSetElement from './elements/ActionSetElement.vue';\nimport BadgeElement from './elements/BadgeElement.vue';\nimport ColumnSetElement from './elements/ColumnSetElement.vue';\nimport ContainerElement from './elements/ContainerElement.vue';\nimport FactSetElement from './elements/FactSetElement.vue';\nimport FileElement from './elements/FileElement.vue';\nimport HtmlElement from './elements/HtmlElement.vue';\nimport IconElement from './elements/IconElement.vue';\nimport ImageElement from './elements/ImageElement.vue';\nimport ImageSetElement from './elements/ImageSetElement.vue';\nimport InputElement from './elements/InputElement.vue';\nimport MediaElement from './elements/MediaElement.vue';\nimport NoteElement from './elements/NoteElement.vue';\nimport NotificationElement from './elements/NotificationElement.vue';\nimport ProgressElement from './elements/ProgressElement.vue';\nimport SkillElement from './elements/SkillElement.vue';\nimport TableElement from './elements/TableElement.vue';\nimport TextElement from './elements/TextElement.vue';\nimport { installIdwCardFrameBorder } from './frameBorder';\nimport type { IdwCardActionEvent } from './types';\n\ndefineOptions({\n name: 'IdwCardElementView',\n});\n\nconst props = defineProps<{\n element: IdwCardElement;\n hostConfig: IdwCardHostConfig;\n}>();\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n\nconst form = useIdwCardForm();\n\nconst isHidden = computed(() => form.isHidden(props.element.id, props.element.isVisible));\n\nconst spacingClass = computed(() => {\n const spacing = props.element.spacing ?? DEFAULT_ELEMENT_SPACING;\n return IDW_SPACING_CLASS[spacing];\n});\n\nconst toneClass = computed(() => {\n if (props.element.type !== 'Container') {\n return '';\n }\n return IDW_TONE_SURFACE_CLASS[props.element.tone ?? 'default'];\n});\n\nconst inputElement = computed(() => (\n isIdwCardInputElement(props.element) ? props.element : undefined\n));\n\nconst HORIZONTAL_CLASS: Record<Exclude<IdwAlignment, 'start'>, string> = {\n center: 'justify-center',\n end: 'justify-end',\n};\n\nconst VERTICAL_CLASS: Record<Exclude<IdwAlignment, 'start'>, string> = {\n center: 'justify-center',\n end: 'justify-end',\n};\n\nconst fillsHost = computed(() => (\n props.element.type === 'Html' && props.hostConfig.embedSize === 'fill'\n));\n\nconst alignmentClass = computed(() => {\n if (fillsHost.value) {\n return 'min-h-0 flex-1 flex-col';\n }\n\n const horizontal = props.element.horizontalAlignment ?? 'start';\n const vertical = props.element.verticalAlignment ?? 'start';\n\n if (vertical === 'center' || vertical === 'end') {\n const crossAxis = horizontal === 'center'\n ? 'items-center'\n : horizontal === 'end'\n ? 'items-end'\n : '';\n\n return ['flex flex-1 flex-col', VERTICAL_CLASS[vertical], crossAxis];\n }\n\n if (horizontal === 'center' || horizontal === 'end') {\n return ['flex', HORIZONTAL_CLASS[horizontal]];\n }\n\n return '';\n});\n\ninstallIdwCardFrameBorder();\n\nconst separatorClass = 'idw-card-frame-line-top pt-md';\n</script>\n\n<template>\n <div\n v-if=\"!isHidden\"\n class=\"idw-card-element w-full min-w-0\"\n :class=\"[\n spacingClass,\n 'first:mt-0',\n toneClass,\n element.separator ? separatorClass : '',\n alignmentClass,\n ]\"\n :data-element-type=\"element.type\"\n >\n <InputElement\n v-if=\"inputElement\"\n :element=\"inputElement\"\n />\n <TextElement\n v-else-if=\"element.type === 'Text'\"\n :element=\"element\"\n />\n <ImageElement\n v-else-if=\"element.type === 'Image'\"\n :element=\"element\"\n />\n <FactSetElement\n v-else-if=\"element.type === 'FactSet'\"\n :element=\"element\"\n />\n <ContainerElement\n v-else-if=\"element.type === 'Container'\"\n :element=\"element\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n <ColumnSetElement\n v-else-if=\"element.type === 'ColumnSet'\"\n :element=\"element\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n <HtmlElement\n v-else-if=\"element.type === 'Html'\"\n :element=\"element\"\n :host-config=\"hostConfig\"\n />\n <FileElement\n v-else-if=\"element.type === 'File'\"\n :element=\"element\"\n />\n <NoteElement\n v-else-if=\"element.type === 'Note'\"\n :element=\"element\"\n />\n <NotificationElement\n v-else-if=\"element.type === 'Notification'\"\n :element=\"element\"\n />\n <SkillElement\n v-else-if=\"element.type === 'Skill'\"\n :element=\"element\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n <ActionSetElement\n v-else-if=\"element.type === 'ActionSet'\"\n :element=\"element\"\n @action=\"emit('action', $event)\"\n />\n <ProgressElement\n v-else-if=\"element.type === 'Progress'\"\n :element=\"element\"\n />\n <BadgeElement\n v-else-if=\"element.type === 'Badge'\"\n :element=\"element\"\n />\n <IconElement\n v-else-if=\"element.type === 'Icon'\"\n :element=\"element\"\n />\n <ImageSetElement\n v-else-if=\"element.type === 'ImageSet'\"\n :element=\"element\"\n />\n <MediaElement\n v-else-if=\"element.type === 'Media'\"\n :element=\"element\"\n />\n <TableElement\n v-else-if=\"element.type === 'Table'\"\n :element=\"element\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, provide, reactive, ref, watch } from 'vue';\n\nimport { IDW_CARD_FORM_KEY } from '../form/formContext';\nimport { resolveIdwCardHostConfig, type IdwCardHostConfig } from '../host';\nimport {\n collectInitialInputValues,\n isElementVisible,\n isInputEmpty,\n listIdwCardInputs,\n type IdwCard,\n} from '../schema';\nimport type { CardRendererSource } from '../templates';\nimport { resolveCardRendererSource } from '../templates';\nimport IdwCardActionBar from './IdwCardActionBar.vue';\nimport IdwCardElementView from './IdwCardElementView.vue';\nimport type { IdwCardActionEvent } from './types';\n\ndefineOptions({\n name: 'CardRenderer',\n});\n\nconst props = withDefaults(defineProps<{\n source: CardRendererSource;\n hostConfig?: Partial<IdwCardHostConfig>;\n}>(), {\n hostConfig: undefined,\n});\n\nconst emit = defineEmits<{\n action: [event: IdwCardActionEvent];\n 'skill-click': [];\n}>();\n\nconst resolvedHostConfig = computed(() => resolveIdwCardHostConfig(props.hostConfig));\nconst resolved = computed(() => resolveCardRendererSource(props.source));\nconst card = computed(() => (resolved.value.success ? resolved.value.card : undefined));\n\nconst values = reactive<Record<string, unknown>>({});\nconst errors = reactive<Record<string, string>>({});\nconst hiddenIds = ref(new Set<string>());\nconst openShowCards = ref<Record<string, IdwCard>>({});\n\nfunction resetForm() {\n Object.keys(values).forEach((key) => {\n delete values[key];\n });\n Object.keys(errors).forEach((key) => {\n delete errors[key];\n });\n hiddenIds.value = new Set();\n openShowCards.value = {};\n if (!card.value) {\n return;\n }\n Object.assign(values, collectInitialInputValues(card.value.body));\n}\n\nwatch(card, resetForm, { immediate: true });\n\nprovide(IDW_CARD_FORM_KEY, {\n getValue: (name) => values[name],\n setValue: (name, value) => {\n values[name] = value;\n delete errors[name];\n },\n getError: (name) => errors[name],\n isHidden: (id, isVisible) => !isElementVisible({ id, isVisible }, hiddenIds.value),\n});\n\nconst errorMessage = computed(() => {\n if (resolved.value.success) {\n return undefined;\n }\n return resolved.value.fallbackText || 'This card could not be displayed.';\n});\n\nfunction validateRequired(): boolean {\n if (!card.value) {\n return true;\n }\n let valid = true;\n for (const input of listIdwCardInputs(card.value.body, hiddenIds.value)) {\n if (!input.visible || !input.required) {\n continue;\n }\n if (isInputEmpty(values[input.name])) {\n errors[input.name] = input.errorMessage || 'This field is required.';\n valid = false;\n }\n }\n return valid;\n}\n\nfunction onAction(event: IdwCardActionEvent) {\n if (event.verb === 'toggle-visibility' && event.targetIds?.length) {\n const next = new Set(hiddenIds.value);\n for (const id of event.targetIds) {\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n }\n hiddenIds.value = next;\n }\n\n if (event.verb === 'show-card' && event.card) {\n const next = { ...openShowCards.value };\n if (next[event.title]) {\n delete next[event.title];\n } else {\n next[event.title] = event.card;\n }\n openShowCards.value = next;\n }\n\n if (event.verb === 'submit' || event.verb === 'approve' || event.verb === 'reject') {\n if (!validateRequired()) {\n return;\n }\n }\n\n emit('action', {\n ...event,\n inputs: { ...values },\n });\n}\n</script>\n\n<template>\n <section\n class=\"idw-card flex min-w-0 flex-col bg-surface dark:bg-surface-dark text-on-surface dark:text-on-surface-dark\"\n :class=\"[\n resolvedHostConfig.theme === 'dark' ? 'dark' : undefined,\n resolvedHostConfig.embedSize === 'fill' ? 'flex-1 min-h-0' : undefined,\n ]\"\n data-testid=\"idw-card\"\n >\n <template v-if=\"card\">\n <IdwCardElementView\n v-for=\"(element, index) in card.body\"\n :key=\"element.id || index\"\n :element=\"element\"\n :host-config=\"resolvedHostConfig\"\n @action=\"onAction\"\n @skill-click=\"emit('skill-click')\"\n />\n <IdwCardActionBar\n v-if=\"card.actions?.length\"\n class=\"mt-md\"\n :actions=\"card.actions\"\n @action=\"onAction\"\n />\n <CardRenderer\n v-for=\"(nestedCard, title) in openShowCards\"\n :key=\"`show-${title}`\"\n class=\"mt-md\"\n :source=\"{ card: nestedCard }\"\n :host-config=\"hostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n </template>\n <p\n v-else\n class=\"m-0 typography-body-2-regular text-on-surface-variant dark:text-on-surface-variant-dark\"\n data-testid=\"idw-card-fallback\"\n >\n {{ errorMessage }}\n </p>\n </section>\n</template>\n","<script setup lang=\"ts\">\nimport { CardRenderer, type IdwCardActionEvent, type IdwCardHostConfig } from '../../../idw-card';\nimport { FeedFileContent } from '../FeedFileContent';\nimport { FeedHtmlContent } from '../FeedHtmlContent';\nimport { FeedMarkdownContent } from '../FeedMarkdownContent';\nimport { FeedSkillContent } from '../FeedSkillContent';\nimport type { FeedListItem } from './types';\n\ndefineOptions({\n name: 'FeedListItemBody',\n});\n\ndefineProps<{\n item: FeedListItem;\n cardHostConfig?: Partial<IdwCardHostConfig>;\n}>();\n\nconst emit = defineEmits<{\n 'start-skill': [];\n 'skill-click': [];\n action: [event: IdwCardActionEvent];\n}>();\n</script>\n\n<template>\n <CardRenderer\n v-if=\"item.type === 'card'\"\n :source=\"item.source\"\n :host-config=\"cardHostConfig\"\n @action=\"emit('action', $event)\"\n @skill-click=\"emit('skill-click')\"\n />\n <FeedFileContent\n v-else-if=\"item.type === 'file'\"\n :title=\"item.title\"\n :src=\"item.fileUrl\"\n />\n <FeedHtmlContent\n v-else-if=\"item.type === 'html'\"\n :title=\"item.title\"\n :content=\"item.content\"\n />\n <FeedSkillContent\n v-else-if=\"item.type === 'skill'\"\n :text=\"item.content\"\n :skill=\"item.skill\"\n :skill-background-url=\"item.skillBackgroundUrl\"\n :skill-card-size=\"item.skillCardSize\"\n :start-skill-label=\"item.startSkillLabel\"\n @start-skill=\"emit('start-skill')\"\n @skill-click=\"emit('skill-click')\"\n />\n <FeedMarkdownContent\n v-else\n :text=\"item.content\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { OrLoaderV3 } from '@onereach/ui-components';\nimport { computed, ref, useSlots } from 'vue';\n\nimport { FeedItemBase } from '../FeedItemBase';\nimport type { FeedItemControl } from '../FeedItemBase/types';\nimport type { IdwCardActionEvent } from '../../../idw-card';\nimport FeedListItemBody from './FeedListItemBody.vue';\nimport type { FeedListItem, FeedListProps } from './types';\n\ndefineOptions({\n name: 'FeedList',\n});\n\nconst props = withDefaults(defineProps<FeedListProps>(), {\n loading: false,\n loadingMore: false,\n emptyLabel: 'No posts yet',\n controlLabels: undefined,\n reachBottomOffset: 500,\n itemClass: undefined,\n});\n\nconst emit = defineEmits<{\n 'reach-bottom': [];\n fullscreen: [item: FeedListItem];\n 'start-skill': [item: FeedListItem];\n 'skill-click': [item: FeedListItem];\n action: [item: FeedListItem, event: IdwCardActionEvent];\n 'control-click': [item: FeedListItem, control: FeedItemControl];\n expand: [item: FeedListItem];\n collapse: [item: FeedListItem];\n 'update:item-expanded': [item: FeedListItem, expanded: boolean];\n}>();\n\nconst slots = useSlots();\n\nconst hasHeader = computed(() => Boolean(slots.header));\nconst hasEmptySlot = computed(() => Boolean(slots.empty));\nconst showEmpty = computed(() => !props.loading && props.items.length === 0);\n\n/** Edge-trigger: only emit when crossing into the near-bottom zone. */\nconst wasNearBottom = ref(false);\n\nfunction isHtmlOrFile(item: FeedListItem): boolean {\n return item.type === 'html' || item.type === 'file';\n}\n\nfunction itemFullscreenControl(item: FeedListItem): boolean {\n if (typeof item.fullscreenControl === 'boolean') {\n return item.fullscreenControl;\n }\n return isHtmlOrFile(item);\n}\n\nfunction itemMediaSrc(item: FeedListItem): string | undefined {\n if (item.mediaSrc) {\n return item.mediaSrc;\n }\n if (item.type === 'skill' && item.skill?.image) {\n return item.skill.image;\n }\n return undefined;\n}\n\nfunction itemClassFor(item: FeedListItem): string | undefined {\n const unconstrained = isHtmlOrFile(item)\n ? '[&_.feed-item-base__body]:!max-h-none'\n : undefined;\n if (props.itemClass && unconstrained) {\n return `${props.itemClass} ${unconstrained}`;\n }\n return props.itemClass ?? unconstrained;\n}\n\nfunction onScroll(event: Event) {\n const el = event.target as HTMLElement | null;\n if (!el || props.loading || props.loadingMore) {\n return;\n }\n\n const distanceFromBottom = el.scrollHeight - el.scrollTop - el.clientHeight;\n const nearBottom = distanceFromBottom <= props.reachBottomOffset;\n\n if (nearBottom && !wasNearBottom.value) {\n emit('reach-bottom');\n }\n\n wasNearBottom.value = nearBottom;\n}\n</script>\n\n<template>\n <section class=\"feed-list flex h-full min-h-0 flex-col overflow-hidden\">\n <div\n v-if=\"hasHeader\"\n class=\"feed-list__header shrink-0\"\n >\n <slot name=\"header\" />\n </div>\n\n <div\n class=\"feed-list__scroll flex min-h-0 flex-1 flex-col gap-y-md overflow-y-auto\"\n @scroll.passive=\"onScroll\"\n >\n <div\n v-if=\"loading\"\n class=\"flex flex-1 items-center justify-center py-xl\"\n >\n <slot name=\"loading\">\n <OrLoaderV3\n variant=\"circular\"\n color=\"primary\"\n size=\"s\"\n />\n </slot>\n </div>\n\n <template v-else>\n <div\n v-if=\"showEmpty\"\n class=\"py-xl text-center typography-headline-4 text-on-background dark:text-on-background-dark\"\n >\n <slot\n v-if=\"hasEmptySlot\"\n name=\"empty\"\n />\n <template v-else>\n {{ emptyLabel }}\n </template>\n </div>\n\n <FeedItemBase\n v-for=\"item in items\"\n :id=\"item.id\"\n :key=\"item.id\"\n :class=\"itemClassFor(item)\"\n :title=\"item.title\"\n :short-content=\"item.shortContent\"\n :timestamp=\"item.timestamp\"\n :timestamp-datetime=\"item.timestampDatetime\"\n :source=\"item.source\"\n :author-prefix=\"item.authorPrefix\"\n :type-label=\"item.typeLabel\"\n :status=\"item.status\"\n :media-src=\"itemMediaSrc(item)\"\n :media-alt=\"item.mediaAlt\"\n :summary=\"item.summary\"\n :summary-label=\"item.summaryLabel\"\n :engagement=\"item.engagement\"\n :is-new=\"item.isNew\"\n :highlighted=\"item.highlighted\"\n :expandable=\"item.expandable !== false\"\n :fullscreen-control=\"itemFullscreenControl(item)\"\n :mention-control=\"item.mentionControl !== false\"\n :share-control=\"item.shareControl !== false\"\n :more-control=\"item.moreControl !== false\"\n :control-labels=\"controlLabels\"\n @fullscreen=\"emit('fullscreen', item)\"\n @control-click=\"(control) => emit('control-click', item, control)\"\n @expand=\"emit('expand', item)\"\n @collapse=\"emit('collapse', item)\"\n @update:expanded=\"(expanded) => emit('update:item-expanded', item, expanded)\"\n >\n <template #body>\n <FeedListItemBody\n :item=\"item\"\n :card-host-config=\"cardHostConfig\"\n @start-skill=\"emit('start-skill', item)\"\n @skill-click=\"emit('skill-click', item)\"\n @action=\"(event) => emit('action', item, event)\"\n />\n </template>\n\n <template\n v-if=\"$slots.actions\"\n #actions\n >\n <slot\n name=\"actions\"\n :item=\"item\"\n />\n </template>\n\n <template\n v-if=\"$slots.controls\"\n #controls\n >\n <slot\n name=\"controls\"\n :item=\"item\"\n />\n </template>\n\n <template\n v-if=\"$slots.footer\"\n #footer\n >\n <slot\n name=\"footer\"\n :item=\"item\"\n />\n </template>\n </FeedItemBase>\n\n <div\n v-if=\"loadingMore\"\n class=\"flex justify-center py-md\"\n >\n <slot name=\"loading-more\">\n <OrLoaderV3\n variant=\"circular\"\n color=\"primary\"\n size=\"s\"\n />\n </slot>\n </div>\n </template>\n </div>\n </section>\n</template>\n"],"names":["formatIdwSummary","summary","defaultSkillBandUrl","CardSize","CARD_SIZE","props","__props","sizeClasses","computed","cardImageStyles","defaultSkillCardBackground","rootClasses","classes","_createElementBlock","_openBlock","_hoisted_2","_createVNode","_unref","OrLoaderV3","_createElementVNode","_hoisted_3","_hoisted_4","_normalizeClass","_toDisplayString","_hoisted_5","_renderSlot","_ctx","FEED_EMBED_SANDBOX","FEED_EMBED_SIZE_CLASS","formatFeedReadingTime","text","words","minutes","hours","remainingMinutes","emit","__emit","reactionCount","reactionEmojis","commentsCount","commentsLabel","readingTime","hasContent","_hoisted_1","_Fragment","_renderList","emoji","index","_createTextVNode","DEFAULT_CONTROL_LABELS","STATUS_DOT_CLASS","slots","useSlots","isExpanded","ref","hasMountedBody","isFullscreen","isBodyVisible","watch","visible","titleId","bodyId","shellClass","resolvedControlLabels","hasBody","showItemActions","showExpandControl","hasSummary","_a","showSummary","showMedia","authorLabel","source","statusDotClass","showEngagement","showFooter","setExpanded","next","toggleExpanded","onControlClick","control","onFullscreenClick","_hoisted_6","_hoisted_7","_hoisted_8","_createBlock","OrIconButtonV3","_hoisted_9","_hoisted_10","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","OrIcon","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_c","_b","_hoisted_28","choice","FeedItemMetaFooter","_hoisted_29","OrWebMarkdownRender","hasCustomSkillSlot","showSkillBand","showStartSkillButton","skillBandStyle","onStartSkill","onSkillClick","SkillCard","FeedMarkdownContent","OrButtonV3","iframeClass","hasSource","FeedEmbed","DEFAULT_IDW_CARD_HOST_CONFIG","DEFAULT_ELEMENT_SPACING","IDW_SPACING_CLASS","IDW_TEXT_STYLE_CLASS","IDW_TONE_SURFACE_CLASS","resolveIdwCardHostConfig","overrides","IDW_CARD_FORM_KEY","useIdwCardForm","form","inject","mustResolve","templateId","data","result","resolveIdwCardSource","cardFromMarkdown","MARKDOWN_TEMPLATE_ID","cardFromHtml","title","content","HTML_TEMPLATE_ID","cardFromFile","src","FILE_TEMPLATE_ID","cardFromSkill","input","SKILL_TEMPLATE_ID","STYLE_PROPS","idwCardActionButtonProps","action","fromStyle","onClick","_mergeProps","$event","OrIconV3","IdwCardActionBar","_cache","toneClass","badgeClass","sharesRows","counts","column","count","itemCount","gridStyle","columnGridStyle","columnClass","width","itemStyle","element","columnIndex","_normalizeStyle","child","IdwCardElementView","STYLE_ID","CSS","installIdwCardFrameBorder","style","progressColor","ProgressColor","progressType","ProgressType","factTitle","progressMax","progress","fact","OrProgressV3","menuButton","menuOpen","openFile","downloadFile","link","_withModifiers","OrMenuV3","OrMenuItemV3","FeedHtmlContent","aspectClass","gridClass","spansWidth","image","parseCardDate","value","parsed","pad","toDateValue","toTimeValue","toDateTimeValue","installIdwCardSliderSpacing","error","model","textType","textInputMode","stringValue","numberValue","selectValue","radioValue","optionLabel","option","elementOptions","isChoiceElement","selectOptions","selectMultiple","selectSearch","groupDirection","groupReadonly","location","set","setLocation","patch","sliderProps","OrTextareaV3","OrInputV3","OrSwitchV3","OrCheckboxV3","OrSelectV3","OrCheckboxGroupV3","OrRadioGroupV3","OrDatePickerV3","OrTimePickerV3","OrDateTimePickerV3","OrSliderV3","OrRangeSliderV3","OrRatingV3","installIdwCardMediaChrome","formatMediaTime","seconds","total","secs","useMediaControls","media","playing","current","duration","muted","volume","unavailable","buffered","timeLabel","sync","end","toggle","setVolume","ratio","seekRatio","nudge","onSeek","event","track","apply","point","rect","move","stop","onError","url","onBeforeUnmount","root","slider","open","level","fill","icon","applyPointer","onPointerDown","onDocumentPointerDown","isOpen","_withKeys","bufferedRatio","toRef","played","playIcon","args","MediaVolume","frame","fullscreen","toggleFullscreen","onFullscreenChange","onMounted","_hoisted_11","MediaVideo","MediaAudio","closed","OrNotificationV3","toneColor","color","type","maxValue","progressAttrs","_createSlots","bandStyle","row","rowIndex","cell","cellIndex","contentClass","textStyle","tone","separatorClass","isHidden","spacingClass","spacing","inputElement","isIdwCardInputElement","HORIZONTAL_CLASS","VERTICAL_CLASS","fillsHost","alignmentClass","horizontal","vertical","crossAxis","InputElement","TextElement","ImageElement","FactSetElement","ContainerElement","ColumnSetElement","HtmlElement","FileElement","NoteElement","NotificationElement","SkillElement","ActionSetElement","ProgressElement","BadgeElement","IconElement","ImageSetElement","MediaElement","TableElement","resolvedHostConfig","resolved","resolveCardRendererSource","card","values","reactive","errors","hiddenIds","openShowCards","resetForm","key","collectInitialInputValues","provide","name","id","isVisible","isElementVisible","errorMessage","validateRequired","valid","listIdwCardInputs","isInputEmpty","onAction","nestedCard","_component_CardRenderer","CardRenderer","FeedFileContent","FeedSkillContent","hasHeader","hasEmptySlot","showEmpty","wasNearBottom","isHtmlOrFile","item","itemFullscreenControl","itemMediaSrc","itemClassFor","unconstrained","onScroll","el","nearBottom","FeedItemBase","expanded","FeedListItemBody","$slots"],"mappings":"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"}