@meduza/ui-kit-2 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Image/Image.types.d.ts +2 -2
- package/dist/MaterialNote/MaterialNote.stories.d.ts +2 -1
- package/dist/MaterialNote/MaterialNote.types.d.ts +2 -1
- package/dist/MaterialTitle/MaterialTitle.types.d.ts +2 -2
- package/dist/Popover/Popover.types.d.ts +2 -2
- package/dist/Tag/Tag.types.d.ts +2 -2
- package/dist/ui-kit-2.cjs.development.js +83 -79
- package/dist/ui-kit-2.cjs.development.js.map +1 -1
- package/dist/ui-kit-2.cjs.production.min.js +1 -1
- package/dist/ui-kit-2.cjs.production.min.js.map +1 -1
- package/dist/ui-kit-2.esm.js +83 -79
- package/dist/ui-kit-2.esm.js.map +1 -1
- package/dist/ui-kit.css +446 -446
- package/dist/utils/DangerousHtml.d.ts +3 -3
- package/dist/utils/makeClassName.d.ts +2 -1
- package/dist/utils/makeStyleContext.d.ts +2 -1
- package/package.json +12 -4
- package/src/BookmarkButton/BookmarkButton.stories.tsx +1 -1
- package/src/BookmarkButton/index.tsx +2 -4
- package/src/Button/Button.stories.tsx +2 -2
- package/src/Button/Button.test.tsx +3 -3
- package/src/Button/index.tsx +3 -3
- package/src/CardTitle/CardTitle.stories.tsx +1 -1
- package/src/CardTitle/CardTitle.test.tsx +1 -1
- package/src/CardTitle/index.tsx +1 -2
- package/src/ChapterBlock/ChapterBlock.stories.tsx +1 -1
- package/src/ChapterBlock/ChapterBlock.test.tsx +1 -1
- package/src/ChapterBlock/index.tsx +4 -8
- package/src/Cover/Cover.stories.tsx +1 -1
- package/src/Cover/Cover.test.tsx +1 -1
- package/src/Cover/index.tsx +5 -6
- package/src/DocumentItemsCount/DocumentItemsCount.stories.tsx +2 -2
- package/src/DocumentItemsCount/DocumentItemsCount.test.tsx +1 -1
- package/src/DocumentItemsCount/index.tsx +0 -1
- package/src/DotsOnImage/DotsOnImage.stories.tsx +1 -1
- package/src/DotsOnImage/DotsOnImage.test.tsx +1 -0
- package/src/DotsOnImage/index.tsx +1 -2
- package/src/Dropdown/index.tsx +2 -2
- package/src/EmbedBlock/EmbedBlock.stories.tsx +2 -2
- package/src/EmbedBlock/EmbedBlock.test.tsx +1 -1
- package/src/EmbedBlock/EmbedBlock.tsx +3 -8
- package/src/EmbedBlock/EmbedGif.tsx +0 -3
- package/src/EmbedBlock/IframeBlock.tsx +0 -1
- package/src/EmbedBlock/index.tsx +0 -1
- package/src/GroupedBlock/GroupedBlock.stories.tsx +2 -2
- package/src/GroupedBlock/GroupedBlock.test.tsx +1 -1
- package/src/GroupedBlock/GroupedBlock.types.ts +1 -1
- package/src/GroupedBlock/index.tsx +4 -6
- package/src/HalfBlock/HalfBlock.stories.tsx +1 -1
- package/src/HalfBlock/HalfBlock.test.tsx +1 -1
- package/src/HalfBlock/HalfBlock.types.ts +1 -1
- package/src/HalfBlock/index.tsx +3 -5
- package/src/Image/Image.stories.tsx +1 -1
- package/src/Image/Image.test.tsx +1 -1
- package/src/Image/Image.types.ts +2 -2
- package/src/Image/RenderPicture.tsx +1 -2
- package/src/Image/index.tsx +1 -6
- package/src/ImportantLead/ImportantLead.stories.tsx +1 -1
- package/src/ImportantLead/ImportantLead.test.tsx +1 -1
- package/src/ImportantLead/index.tsx +3 -5
- package/src/Lazy/Lazy.stories.tsx +3 -2
- package/src/Lazy/Lazy.test.tsx +1 -1
- package/src/Lazy/index.tsx +2 -4
- package/src/ListBlock/ListBlock.stories.tsx +3 -3
- package/src/ListBlock/ListBlock.test.tsx +1 -1
- package/src/ListBlock/index.tsx +3 -5
- package/src/MaterialNote/MaterialNote.stories.tsx +4 -3
- package/src/MaterialNote/MaterialNote.test.tsx +1 -1
- package/src/MaterialNote/MaterialNote.types.ts +2 -1
- package/src/MaterialNote/index.tsx +3 -3
- package/src/MaterialTitle/MaterialTitle.stories.tsx +1 -1
- package/src/MaterialTitle/MaterialTitle.test.tsx +1 -1
- package/src/MaterialTitle/MaterialTitle.types.ts +2 -1
- package/src/MediaCaption/MediaCaption.stories.tsx +1 -1
- package/src/MediaCaption/MediaCaption.test.tsx +1 -1
- package/src/MediaCaption/MediaCaption.types.ts +2 -2
- package/src/MediaCaption/index.tsx +2 -2
- package/src/Meta/Meta.stories.tsx +2 -2
- package/src/Meta/Meta.test.tsx +1 -1
- package/src/Meta/MetaContainer.tsx +2 -4
- package/src/Meta/index.tsx +2 -3
- package/src/MetaItem/MetaItem.stories.tsx +2 -2
- package/src/MetaItem/MetaItem.test.tsx +1 -1
- package/src/MetaItem/index.tsx +1 -3
- package/src/MetaItemLive/MetaItemLive.stories.tsx +2 -2
- package/src/MetaItemLive/MetaItemLive.test.tsx +1 -1
- package/src/MetaItemLive/index.tsx +1 -3
- package/src/Popover/Popover.stories.tsx +1 -1
- package/src/Popover/Popover.test.tsx +1 -1
- package/src/Popover/Popover.types.ts +2 -1
- package/src/Popover/index.tsx +1 -2
- package/src/QuoteBlock/QuoteBlock.stories.tsx +1 -1
- package/src/QuoteBlock/QuoteBlock.test.tsx +1 -1
- package/src/QuoteBlock/index.tsx +2 -3
- package/src/RawHtmlBlock/RawHtmlBlock.stories.tsx +2 -2
- package/src/RawHtmlBlock/RawHtmlBlock.test.tsx +1 -1
- package/src/RawHtmlBlock/index.tsx +0 -2
- package/src/RelatedBlock/RelatedBlock.stories.tsx +1 -1
- package/src/RelatedBlock/RelatedBlock.test.tsx +1 -1
- package/src/RelatedBlock/index.tsx +2 -3
- package/src/RenderBlocks/RenderBlocks.stories.tsx +1 -1
- package/src/RenderBlocks/RenderBlocks.test.tsx +1 -1
- package/src/RenderBlocks/index.tsx +0 -1
- package/src/RichTitle/RichTitle.stories.tsx +1 -1
- package/src/RichTitle/RichTitle.test.tsx +1 -1
- package/src/RichTitle/index.tsx +2 -3
- package/src/SimpleBlock/SimpleBlock.stories.tsx +2 -2
- package/src/SimpleBlock/SimpleBlock.test.tsx +1 -1
- package/src/SimpleBlock/index.tsx +8 -11
- package/src/SimpleTitle/SimpleTitle.stories.tsx +1 -1
- package/src/SimpleTitle/SimpleTitle.test.tsx +1 -1
- package/src/SimpleTitle/index.tsx +2 -2
- package/src/SourceBlock/SourceBlock.stories.tsx +6 -6
- package/src/SourceBlock/SourceBlock.test.tsx +1 -1
- package/src/SourceBlock/index.tsx +7 -6
- package/src/SourceBlock/mock.json +15 -0
- package/src/Spoiler/Spoiler.stories.tsx +1 -1
- package/src/Spoiler/Spoiler.test.tsx +1 -1
- package/src/Spoiler/index.tsx +4 -5
- package/src/SvgSymbol/SvgSymbol.stories.tsx +6 -6
- package/src/SvgSymbol/SvgSymbol.test.tsx +1 -1
- package/src/SvgSymbol/index.tsx +2 -2
- package/src/Switcher/Switcher.stories.tsx +4 -4
- package/src/Switcher/Switcher.test.tsx +1 -1
- package/src/Switcher/index.tsx +1 -2
- package/src/Table/Table.stories.tsx +1 -1
- package/src/Table/Table.test.tsx +1 -1
- package/src/Table/index.tsx +2 -2
- package/src/Tag/Tag.stories.tsx +1 -3
- package/src/Tag/Tag.test.tsx +4 -4
- package/src/Tag/Tag.types.ts +3 -1
- package/src/Tag/index.tsx +2 -2
- package/src/Timestamp/Timestamp.stories.tsx +1 -1
- package/src/Timestamp/Timestamp.test.tsx +1 -1
- package/src/Timestamp/index.tsx +0 -2
- package/src/Toolbar/Toolbar.stories.tsx +0 -2
- package/src/Toolbar/Toolbar.test.tsx +1 -1
- package/src/Toolbar/index.tsx +2 -3
- package/src/ToolbarButton/ToolbarButton.stories.tsx +2 -2
- package/src/ToolbarButton/ToolbarButton.test.tsx +1 -1
- package/src/ToolbarButton/index.tsx +2 -3
- package/src/_storybook/PreviewWrapper/index.tsx +1 -1
- package/src/utils/DangerousHtml.tsx +26 -18
- package/src/utils/generateGradient.ts +1 -1
- package/src/utils/makeClassName.ts +3 -1
- package/src/utils/makeStyleContext.ts +8 -4
- package/src/utils/toCamel.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-kit-2.cjs.production.min.js","sources":["../src/utils/makeClassName.ts","../src/Button/loader.tsx","../src/Button/index.tsx","../src/SvgSymbol/icons.ts","../src/SvgSymbol/index.tsx","../src/utils/BlockContext.ts","../src/utils/viewportSize.ts","../src/utils/postMessage.ts","../src/constants.ts","../src/Lazy/index.tsx","../src/Image/RenderPicture.tsx","../src/utils/toCamel.ts","../src/Image/index.tsx","../src/DotsOnImage/index.tsx","../src/utils/makeStyleContext.ts","../src/Tag/index.tsx","../src/MediaCaption/index.tsx","../src/Table/index.tsx","../src/MaterialNote/index.tsx","../src/BookmarkButton/index.tsx","../src/Popover/index.tsx","../src/Meta/index.tsx","../src/Timestamp/index.tsx","../src/utils/DangerousHtml.tsx","../src/EmbedBlock/EmbedGif.tsx","../src/EmbedBlock/EmbedBlock.tsx","../src/EmbedBlock/IframeBlock.tsx","../src/EmbedBlock/index.tsx","../src/QuoteBlock/index.tsx","../src/CardTitle/index.tsx","../src/ChapterBlock/index.tsx","../src/SimpleTitle/index.tsx","../src/RichTitle/index.tsx","../src/SimpleBlock/index.tsx","../src/ListBlock/index.tsx","../src/RelatedBlock/index.tsx","../src/SourceBlock/index.tsx","../src/GroupedBlock/index.tsx","../src/MetaItem/index.tsx","../src/MetaItemLive/index.tsx","../src/DocumentItemsCount/index.tsx","../src/utils/pluralize.ts","../src/Meta/MetaContainer.tsx","../src/RenderBlocks/index.tsx","../src/Cover/index.tsx","../src/utils/generateGradient.ts","../src/HalfBlock/index.tsx","../src/ImportantLead/index.tsx","../src/Spoiler/index.tsx","../src/Dropdown/index.tsx","../src/MaterialTitle/index.tsx","../src/RawHtmlBlock/index.tsx","../src/Switcher/index.tsx","../src/Toolbar/index.tsx","../src/ToolbarButton/index.tsx"],"sourcesContent":["const makeClassName = (list: (string[] | string | boolean)[][]): string => {\n return list\n .filter(([, active]) => active)\n .map(([className]) => className)\n .join(' ')\n}\n\nexport default makeClassName\n","import React from 'react'\n\nconst Loader: React.FC = () => (\n <svg\n width=\"30px\"\n height=\"30px\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g>\n <path\n d=\"M15 0C6.716 0 0 6.716 0 15c0 8.284 6.716 15 15 15 8.284 0 15-6.716 15-15 0-8.284-6.716-15-15-15zm0 2c7.18 0 13 5.82 13 13s-5.82 13-13 13S2 22.18 2 15 7.82 2 15 2z\"\n opacity=\"0.3\"\n />\n </g>\n <g fillRule=\"evenodd\">\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 15 15\"\n to=\"360 15 15\"\n dur=\"1000ms\"\n repeatCount=\"indefinite\"\n />\n <path d=\"M15 0c8.18 0 14.83 6.547 14.997 14.686L30 15h-2c0-7.077-5.655-12.833-12.693-12.996L15 2V0z\" />\n </g>\n </svg>\n)\n\nexport default Loader\n","import React, { FC } from 'react'\n\nimport makeClassName from '../utils/makeClassName'\nimport Loader from './loader'\nimport styles from './Button.module.css'\nimport { ButtonProps } from './Button.types'\n\nexport const Button: FC<ButtonProps> = ({\n theme = 'gold',\n size = 'default',\n state = 'isDefault',\n styleContext = 'isInToolbar',\n disabled = false,\n onClick,\n children\n}) => {\n const handleClick = (): void => {\n if (disabled || !onClick) {\n return\n }\n\n onClick()\n }\n\n return (\n <button\n data-testid=\"button\"\n className={makeClassName([\n [styles.root, true],\n [styles[size], !!size],\n [styles[theme], !!theme],\n [styles[state], !!state && !!styles[state]],\n [styles[styleContext], !!styleContext]\n ])}\n disabled={disabled}\n onClick={handleClick}\n type=\"button\"\n >\n {state === 'isLoading' ? (\n <span className={styles.loader}>\n <Loader />\n </span>\n ) : (\n children\n )}\n </button>\n )\n}\n","export const icons = {\n meduzaLogo: {\n width: 544,\n height: 115,\n content:\n '<path d=\"M59.1008614,49.65632 L59.1008614,106.01472 L84.9480411,114.24 L84.9480411,49.65632 L101.574882,49.65632 L101.574882,106.01472 L127.270909,114.24 L144.048902,91.392 L127.422062,91.392 L127.422062,35.7952 L101.726035,26.80832 L84.9480411,46.60992 L84.9480411,35.7952 L59.2520145,26.80832 L42.4740206,46.60992 L42.4740206,35.7952 L16.7779939,26.80832 L0,49.65632 L16.6268408,49.65632 L16.6268408,106.01472 L42.4740206,114.24 L42.4740206,49.65632 L59.1008614,49.65632 L59.1008614,49.65632 Z M336.61795,91.392 L336.61795,35.0336 L310.770769,26.80832 L310.770769,105.25312 L336.466796,114.24 L353.24479,94.4384 L353.24479,105.25312 L378.940817,114.24 L395.71881,91.392 L379.091969,91.392 L379.091969,35.0336 L353.24479,26.80832 L353.24479,91.392 L336.61795,91.392 L336.61795,91.392 Z M527.373159,38.08 L502.130592,26.80832 L472.202278,41.1264 L502.130592,52.39808 L461.016949,72.352 L461.016949,104.94848 L486.86413,114.24 L502.130592,94.28608 L502.130592,105.25312 L527.977771,114.24 L544,91.23968 L527.373159,91.23968 L527.373159,38.08 L527.373159,38.08 Z M177.453737,114.24 L207.079744,102.35904 L177.453737,91.23968 L177.453737,75.24608 L216.300083,56.3584 L194.231731,26.80832 L151.606557,47.37152 L151.606557,103.12064 L177.453737,114.24 L177.453737,114.24 Z M455.424284,89.56416 L423.984441,79.968 L453.459295,42.19264 L416.577937,26.80832 L397.230341,51.48416 L428.821339,61.23264 L398.741873,98.85568 L436.076687,114.24 L455.424284,89.56416 L455.424284,89.56416 Z M486.86413,91.392 L486.86413,68.84864 L502.130592,61.53728 L502.130592,91.392 L486.86413,91.392 L486.86413,91.392 Z M177.453737,41.58336 L190.452904,59.55712 L177.453737,65.80224 L177.453737,41.58336 L177.453737,41.58336 Z M222.95082,103.12064 L248.797999,114.24 L291.27202,97.18016 L291.27202,29.7024 L222.95082,0 L222.95082,26.30784 L265.424841,43.21536 L265.424841,97.33248 L248.797999,91.23968 L248.797999,43.71584 L222.95082,51.94112 L222.95082,103.12064 L222.95082,103.12064 Z\" />'\n },\n\n menu: {\n width: 24,\n height: 24,\n content:\n '<path d=\"M2 21h20M2 12h20M2 3h20\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" vector-effect=\"non-scaling-stroke\" />'\n },\n\n fb: {\n width: 16,\n height: 18,\n content:\n '<path d=\"M15.117 1H.883A.883.883 0 0 0 0 1.883v14.234A.883.883 0 0 0 .883 17h7.663v-6.196H6.461V8.389h2.085V6.61a2.91 2.91 0 0 1 3.106-3.192c.622-.003 1.244.03 1.863.095v2.16h-1.279c-1.002 0-1.196.476-1.196 1.176v1.541h2.39l-.31 2.415h-2.08V17h4.077a.883.883 0 0 0 .883-.883V1.883A.883.883 0 0 0 15.117 1\" />'\n },\n\n tw: {\n width: 20,\n height: 18,\n content:\n '<path d=\"M20 3.1c-.7.3-1.5.6-2.4.7.8-.5 1.5-1.4 1.8-2.4-.8.5-1.7.8-2.6 1-.7-.8-1.8-1.4-3-1.4-2.3 0-4.1 1.9-4.1 4.3 0 .3 0 .7.1 1-3.3-.1-6.4-1.8-8.4-4.4-.3.6-.5 1.4-.5 2.2 0 1.5.7 2.8 1.8 3.6-.7 0-1.3-.2-1.9-.5v.1c0 2.1 1.4 3.8 3.3 4.2-.3.1-.7.2-1.1.2-.3 0-.5 0-.8-.1.5 1.7 2 2.9 3.8 3-1.3 1-3.1 1.6-5 1.6-.3 0-.7 0-1-.1C1.8 17.3 4 18 6.3 18 13.8 18 18 11.5 18 5.8v-.6c.8-.5 1.5-1.2 2-2.1\" fill-rule=\"nonzero\"/>'\n },\n\n vk: {\n width: 20,\n height: 18,\n content:\n '<path d=\"M16.517 9.851s2.587-3.768 2.886-5.058c.1-.396-.1-.694-.498-.694h-2.288c-.498 0-.697.199-.896.595 0 0-1.194 2.678-2.686 4.364-.498.496-.697.694-.995.694-.2 0-.299-.198-.299-.694V4.793c0-.595-.1-.793-.597-.793H7.463c-.2 0-.398.198-.398.397 0 .595.796.694.796 2.28v3.174c0 .595 0 .893-.299.893-.796 0-2.686-2.777-3.681-5.851-.2-.595-.398-.794-.995-.794H.597C.299 4.1 0 4.298 0 4.694c0 .595.697 3.471 3.483 7.34C5.373 14.611 7.86 16 10.05 16c1.393 0 1.691-.198 1.691-.793v-1.984c0-.496.2-.694.498-.694s.895.1 2.189 1.388C15.92 15.405 16.02 16 16.915 16h2.587c.299 0 .498-.1.498-.595 0-.595-.796-1.587-1.89-2.876-.498-.595-1.195-1.29-1.493-1.686-.398-.397-.299-.595-.1-.992\" fill-rule=\"nonzero\"/>'\n },\n\n ok: {\n width: 9,\n height: 18,\n content:\n '<path d=\"M4.5 2c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4m0 5.7c-.9 0-1.6-.8-1.6-1.7 0-.9.7-1.6 1.6-1.6.9 0 1.7.7 1.7 1.7 0 .8-.8 1.6-1.7 1.6\" fill-rule=\"nonzero\"/> <path d=\"M6.127 12.982a9.194 9.194 0 0 0 2.307-.904c.602-.301.703-1.004.402-1.507-.301-.502-1.104-.703-1.605-.401-1.605 1.004-3.812 1.004-5.417 0-.502-.302-1.304-.201-1.605.3-.401.604-.2 1.206.401 1.608a9.194 9.194 0 0 0 2.307.904L.61 15.092c-.502.401-.502 1.104 0 1.607a1.357 1.357 0 0 0 1.705 0l2.207-2.11L6.73 16.7a1.357 1.357 0 0 0 1.705 0c.502-.402.502-1.105 0-1.608l-2.307-2.109\" fill-rule=\"nonzero\"/>'\n },\n\n tg: {\n width: 18,\n height: 18,\n content:\n '<path d=\"M9 18c-5 0-9-4-9-9s4-9 9-9 9 4 9 9-4 9-9 9zm-1.5-7.4c1.1 1 2 3.3 2 3.3.4.2.7.1.8-.4l2.1-7.4c.1-.6-.2-.8-.6-.7L4 8.3c-.6.2-.6.5-.1.7 0 .1 2.4.6 3.6 1.6z\" fill-rule=\"nonzero\"/>'\n },\n\n meduzaSymbol: {\n width: 24,\n height: 18,\n content:\n '<path d=\"M10.026233,17.0968697 L13.9737671,18.3530831 L13.9737671,10.9855851 L13.9737671,8.48948164 L16.5131165,8.48948164 L16.5131165,17.0968697 L20.4375656,18.3530831 L23,14.8636014 L20.4606507,14.8636014 L20.4606507,6.37252945 L16.5362015,5 L13.9737671,8.02421743 L13.9737671,6.37252945 L10.049318,5 L7.48688354,8.02421743 L7.48688354,6.37252945 L3.56243443,5 L1,8.48948164 L3.53934943,8.48948164 L3.53934943,17.0968697 L7.48688354,18.3530831 L7.48688354,8.48948164 L10.026233,8.48948164 L10.026233,17.0968697 Z\" />'\n },\n\n backward: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M13 0v2.01c6.672.263 12 5.754 12 12.49C25 21.404 19.404 27 12.5 27S0 21.404 0 14.5c0-3.493 1.441-6.758 3.936-9.105a.75.75 0 111.028 1.092A10.965 10.965 0 001.5 14.5c0 6.075 4.925 11 11 11s11-4.925 11-11c0-5.907-4.656-10.727-10.499-10.989L13 6 8 3l5-3zm3.295 11.33v1.25h-3.16v1.63c.32-.32.86-.56 1.47-.56 1.13 0 2.14.81 2.14 2.16 0 1.42-1.06 2.31-2.67 2.31-1.16 0-2-.38-2.57-1l.79-.99c.45.47 1.07.73 1.77.73.79 0 1.24-.45 1.24-.99 0-.59-.44-.99-1.2-.99-.55 0-1 .16-1.4.54l-.99-.26v-3.83h4.58zm-5.94 0V18h-1.42v-4.84l-1.11 1.13-.81-.85 2.1-2.11h1.24z\" fill-rule=\"nonzero\"/>'\n },\n\n forward: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M12 0l5 3-5 3V3.511C6.157 3.773 1.5 8.592 1.5 14.5c0 6.075 4.925 11 11 11s11-4.925 11-11c0-3.075-1.267-5.946-3.464-8.013a.75.75 0 011.028-1.092A12.465 12.465 0 0125 14.5C25 21.404 19.404 27 12.5 27S0 21.404 0 14.5C0 7.764 5.328 2.272 12 2.01V0zm4.295 11.33v1.25h-3.16v1.63c.32-.32.86-.56 1.47-.56 1.13 0 2.14.81 2.14 2.16 0 1.42-1.06 2.31-2.67 2.31-1.16 0-2-.38-2.57-1l.79-.99c.45.47 1.07.73 1.77.73.79 0 1.24-.45 1.24-.99 0-.59-.44-.99-1.2-.99-.55 0-1 .16-1.4.54l-.99-.26v-3.83h4.58zm-5.94 0V18h-1.42v-4.84l-1.11 1.13-.81-.85 2.1-2.11h1.24z\" fill-rule=\"nonzero\"/>'\n },\n\n download: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M12.5 2C19.404 2 25 7.596 25 14.5S19.404 27 12.5 27 0 21.404 0 14.5 5.596 2 12.5 2zm0 1.5c-6.075 0-11 4.925-11 11s4.925 11 11 11 11-4.925 11-11-4.925-11-11-11zm6 15.75a.75.75 0 01.102 1.493l-.102.007h-12a.75.75 0 01-.102-1.493l.102-.007h12zm-6-12a.75.75 0 01.743.648L13.25 8v7.598l1.834-1.222a.75.75 0 11.832 1.248l-3 2a.75.75 0 01-.832 0l-3-2a.75.75 0 11.832-1.248l1.834 1.223V8a.75.75 0 01.648-.743l.102-.007z\" fill-rule=\"nonzero\" fill=\"currentColor\" />'\n },\n\n play: {\n width: 62,\n height: 62,\n content:\n '<path d=\"M24.35 41.772a.5.5 0 0 1-.739-.439V20.667a.5.5 0 0 1 .74-.44l18.944 10.334a.5.5 0 0 1 0 .878L24.351 41.772z\" fill-rule=\"nonzero\"/>'\n },\n\n pause: {\n width: 22,\n height: 22,\n content:\n '<path d=\"M12.832 4h2.8c.276 0 .5.224.5.5v12.394c0 .277-.224.5-.5.5h-2.8c-.276 0-.5-.223-.5-.5V4.5c0-.276.224-.5.5-.5zM6.5 4h2.8c.277 0 .5.224.5.5v12.394c0 .277-.223.5-.5.5H6.5c-.276 0-.5-.223-.5-.5V4.5c0-.276.224-.5.5-.5z\" />'\n },\n\n speedHalf: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M7.212 15.198V12.29l-.676.724L6 12.406 7.35 11h.825v4.198h-.963zM8.056 18H7.3l4.23-7h.765l-4.24 7zm2.99 0v-.735c1.717-1.27 2.134-1.679 2.134-2.14 0-.389-.288-.578-.665-.578-.467 0-.884.263-1.083.525l-.496-.64c.417-.493 1.053-.693 1.599-.693.913 0 1.599.462 1.599 1.312 0 .682-.556 1.28-1.708 2.14h1.737V18h-3.118zm5.998-2.918l-1.39 1.48-.567-.577 1.4-1.49-1.4-1.48.566-.588 1.39 1.49 1.4-1.49.557.588-1.4 1.48 1.4 1.49-.556.577-1.4-1.48z\" /><path d=\"M12.5 27C19.404 27 25 21.404 25 14.5S19.404 2 12.5 2 0 7.596 0 14.5 5.596 27 12.5 27zm0-1.5c-6.075 0-11-4.925-11-11s4.925-11 11-11 11 4.925 11 11-4.925 11-11 11z\" />'\n },\n\n speedOne: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M9.955 18v-4.84l-1.11 1.13-.81-.85 2.1-2.11h1.24V18h-1.42zm4.6-2.78l-1.4 1.41-.57-.55 1.41-1.42-1.41-1.41.57-.56 1.4 1.42 1.41-1.42.56.56-1.41 1.41 1.41 1.42-.56.55-1.41-1.41z\" fill-rule=\"nonzero\"/><path d=\"M12.5 27C19.404 27 25 21.404 25 14.5S19.404 2 12.5 2 0 7.596 0 14.5 5.596 27 12.5 27zm0-1.5c-6.075 0-11-4.925-11-11s4.925-11 11-11 11 4.925 11 11-4.925 11-11 11z\" fill-rule=\"nonzero\"/>'\n },\n\n speedOneHalf: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M5.62 18v-4.84l-1.11 1.13-.81-.85 2.1-2.11h1.24V18H5.62zm3.37-2.67v-2.77l-.68.69-.54-.58 1.36-1.34h.83v4h-.97zM9.84 18h-.76l4.26-6.67h.77L9.84 18zm3.01 0v-.7c1.73-1.21 2.15-1.6 2.15-2.04 0-.37-.29-.55-.67-.55-.47 0-.89.25-1.09.5l-.5-.61c.42-.47 1.06-.66 1.61-.66.92 0 1.61.44 1.61 1.25 0 .65-.56 1.22-1.72 2.04h1.75V18h-3.14zm6.04-2.78l-1.4 1.41-.57-.55 1.41-1.42-1.41-1.41.57-.56 1.4 1.42 1.41-1.42.56.56-1.41 1.41 1.41 1.42-.56.55-1.41-1.41z\" fill-rule=\"nonzero\"/><path d=\"M12.5 27C19.404 27 25 21.404 25 14.5S19.404 2 12.5 2 0 7.596 0 14.5 5.596 27 12.5 27zm0-1.5c-6.075 0-11-4.925-11-11s4.925-11 11-11 11 4.925 11 11-4.925 11-11 11z\" fill-rule=\"nonzero\"/>'\n },\n\n speedTwo: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M7.147 18v-1.158c2.685-2.078 3.471-2.792 3.471-3.64 0-.6-.52-.9-1.061-.9-.748 0-1.318.311-1.76.797L7 12.127C7.64 11.352 8.613 11 9.527 11c1.396 0 2.507.827 2.507 2.202 0 1.18-.924 2.203-2.625 3.506h2.675V18H7.147zm7.916-2.874l-1.377 1.457-.56-.568 1.386-1.468-1.386-1.458.56-.58 1.377 1.469 1.386-1.468.551.579-1.386 1.458L17 16.015l-.55.568-1.387-1.457z\" fill-rule=\"nonzero\"/><path d=\"M12.5 27C19.404 27 25 21.404 25 14.5S19.404 2 12.5 2 0 7.596 0 14.5 5.596 27 12.5 27zm0-1.5c-6.075 0-11-4.925-11-11s4.925-11 11-11 11 4.925 11 11-4.925 11-11 11z\" fill-rule=\"nonzero\"/>'\n },\n\n podcastBookmark: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M12.5 27C19.404 27 25 21.404 25 14.5S19.404 2 12.5 2 0 7.596 0 14.5 5.596 27 12.5 27zm0-1.5c-6.075 0-11-4.925-11-11s4.925-11 11-11 11 4.925 11 11-4.925 11-11 11z\" /> <path d=\"M17.071 8.25H8a.75.75 0 00-.75.75v11.545l.007.104a.75.75 0 001.228.468l4.05-3.437 4.051 3.437a.75.75 0 001.235-.572V9a.75.75 0 00-.75-.75zm-.75 1.499v9.176l-3.3-2.8-.098-.07a.75.75 0 00-.873.07l-3.3 2.799V9.749h7.571z\" data-stroke=\"true\" /> <path d=\"M17.071 8.25H8a.75.75 0 00-.75.75v11.545l.007.104a.75.75 0 001.228.468l4.05-3.437 4.051 3.437a.75.75 0 001.235-.572V9a.75.75 0 00-.75-.75z\" data-fill=\"true\" />'\n },\n\n reaction: {\n width: 16,\n height: 16,\n content:\n '<path data-theme=\"light\" fill=\"#D09959\" d=\"M1 2h14v12H1z\"/> <path d=\"M0 1.778C0 .8.8 0 1.778 0h12.444C15.2 0 16 .8 16 1.778v12.444C16 15.2 15.2 16 14.222 16H1.778C.8 16 0 15.2 0 14.222V1.778zM6.8 11.7l2.5.8V6.2h1.6v5.5l2.5.8 1.6-2.3h-1.6V4.8L10.9 4 9.3 5.9V4.8L6.8 4 5.1 5.9V4.8L2.6 4 1 6.2h1.6v5.5l2.5.8V6.2h1.7v5.5z\" />'\n },\n\n cross: {\n width: 18,\n height: 18,\n content:\n '<path fill=\"none\" fill-rule=\"evenodd\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" vector-effect=\"non-scaling-stroke\" d=\"M2 2l14 14M16 2L2 16\" />'\n },\n\n link: {\n width: 24,\n height: 24,\n content:\n '<path d=\"M9.158 18.928c-1.065 0-2.13-.405-2.94-1.215-1.624-1.623-1.624-4.262 0-5.884l.643-.645c.327-.326.854-.326 1.18 0 .325.326.325.853 0 1.178l-.645.645c-.972.972-.972 2.554 0 3.526.973.972 2.554.973 3.526 0l2.842-2.84c.97-.972.97-2.555 0-3.527-.325-.325-.325-.854 0-1.18.325-.324.853-.324 1.178 0 1.623 1.625 1.623 4.264 0 5.885l-2.84 2.84c-.81.81-1.877 1.216-2.942 1.216\" /> <path d=\"M10.578 14.184c-.213 0-.426-.082-.59-.244-.784-.785-1.217-1.83-1.217-2.94 0-1.113.433-2.158 1.22-2.944l2.84-2.84c1.622-1.62 4.26-1.62 5.883 0 1.622 1.623 1.622 4.262 0 5.883l-.645.643c-.325.326-.852.326-1.178 0-.325-.325-.325-.852 0-1.178l.645-.644c.972-.97.972-2.554 0-3.526s-2.556-.972-3.527 0l-2.84 2.842c-.47.47-.73 1.096-.73 1.762 0 .667.26 1.293.73 1.763.325.327.325.854 0 1.18-.163.162-.376.244-.59.244\" />'\n },\n\n search: {\n width: 16,\n height: 16,\n content:\n '<g transform=\"translate(2 1)\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" vector-effect=\"non-scaling-stroke\"><circle cx=\"5.5\" cy=\"5.5\" r=\"5.5\"/><path d=\"M11.37 13.442l-.995-1.272\"/></g>'\n },\n\n card: {\n width: 15,\n height: 15,\n content:\n '<path d=\"M9 5.5a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5H4a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5h5zm-.5 1h-4v4h4v-4zm2.5-3a.5.5 0 0 1 .5.5v5a.5.5 0 1 1-1 0V4.5H6a.5.5 0 0 1 0-1h5z\" fill-rule=\"nonzero\"/>'\n },\n\n podcast: {\n width: 15,\n height: 15,\n content:\n '<path d=\"M5.252 11.432A.5.5 0 0 1 4.5 11V4a.5.5 0 0 1 .752-.432l6 3.5a.5.5 0 0 1 0 .864l-6 3.5zm.248-1.303L10.008 7.5 5.5 4.87v5.26z\" fill-rule=\"nonzero\" />'\n },\n\n arrow: {\n width: 12,\n height: 12,\n content:\n '<path d=\"M3 7l3 3.5L9 7M6 10V1\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.2\" vector-effect=\"non-scaling-stroke\" />'\n },\n\n brent: {\n width: 9,\n height: 12,\n content:\n '<g fill=\"#999\" fill-rule=\"nonzero\"><path d=\"M4.332 0l.528.606c2.528 2.902 3.804 5.07 3.804 6.634A4.332 4.332 0 110 7.24C0 5.676 1.276 3.508 3.804.606L4.332 0zm0 2.143l-.176.212C2.313 4.589 1.4 6.248 1.4 7.24a2.932 2.932 0 105.864 0c0-.992-.914-2.651-2.756-4.885l-.176-.212z\"/><path d=\"M2.973 7.475c0 .415.417.863.835.924l.097.008v.7c-.79 0-1.548-.716-1.626-1.5l-.006-.132h.7z\"/></g> '\n },\n\n user: {\n width: 16,\n height: 16,\n content:\n '<path fill=\"currentColor\" fill-rule=\"nonzero\" d=\"M8 1a4.25 4.25 0 012.676 7.552 6.751 6.751 0 014.074 6.198.75.75 0 11-1.5 0 5.25 5.25 0 00-10.5 0 .75.75 0 11-1.5 0 6.752 6.752 0 014.074-6.199A4.25 4.25 0 018 1zm0 1.5A2.75 2.75 0 108 8a2.75 2.75 0 000-5.5z\" />'\n },\n\n bookmark: {\n width: 17,\n height: 21,\n content:\n '<path d=\"M16 20l-7.5-6.333L1 20V1h15z\" stroke=\"currentColor\" fill-rule=\"evenodd\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>'\n },\n\n receipt: {\n width: 10,\n height: 13,\n content:\n '<g fill=\"currentColor\" fill-rule=\"nonzero\"><path d=\"M10 0H0v13l2-1.74 1.5 1.305L5 11.26l1.5 1.305L8 11.26 10 13V0zM9 .997v9.81l-1-.87-1.5 1.304L5 9.937 3.5 11.24 2 9.937l-1 .87V.996h8z\"/><path d=\"M7 3v1H3V3zM7 6v1H3V6z\"/></g>'\n },\n\n read: {\n width: 15,\n height: 15,\n content:\n '<g fill=\"none\" fill-rule=\"evenodd\"><path opacity=\".98\" d=\"M0 0h15v15H0z\"/><path d=\"M13.085 1.694a.513.513 0 01.855.56l-.051.077-3.163 3.975a.514.514 0 01-.73.075l-.068-.069-1.812-2.208a.512.512 0 01.729-.716l.065.066 1.409 1.718 2.766-3.478z\" fill=\"#6EAC65\" fill-rule=\"nonzero\"/><path d=\"M6.454 12.997l-.06-.01-.078-.023a.49.49 0 01-.266-.24l.011.015a2.349 2.349 0 00-.535-.607c-.89-.745-2.117-.917-3.813-.12a.5.5 0 01-.706-.37L1 11.558V4.568a.5.5 0 01.287-.453c2.053-.963 3.695-.733 4.88.26.327.272.556.548.698.77l.084.144.018.04.022.076.01.071L7 11.233l.126-.09c.95-.656 2.16-.857 3.608-.417l.266.087v-2.81a.5.5 0 01.41-.491l.09-.008a.5.5 0 01.492.41l.008.09v3.555a.5.5 0 01-.713.452c-1.696-.796-2.922-.624-3.813.12a2.533 2.533 0 00-.497.544l-.038.064a.486.486 0 01-.485.258zm-4.29-8.17L2 4.892v5.92c1.637-.572 2.977-.348 4 .42l.002-5.58a2.605 2.605 0 00-.476-.513c-.81-.677-1.897-.88-3.362-.314z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></g>'\n },\n listened: {\n width: 15,\n height: 15,\n content:\n '<g fill-rule=\"nonzero\"><path d=\"M4.978 4.354a.5.5 0 01-.332.624c-1.197.367-2.064 1.527-2.14 2.897l-.005.167a.749.749 0 01.999.708v3a.75.75 0 01-1.458.248L2 12a1 1 0 01-1-1v-1a1 1 0 01.5-.866V8.072c0-1.886 1.172-3.535 2.854-4.05a.5.5 0 01.624.332zM10 7a.5.5 0 01.492.41l.008.09.001 1.634a1 1 0 01.492.745L11 10v1a1 1 0 01-.883.993L10 12l-.042-.002a.75.75 0 01-1.451-.146L8.5 11.75v-3a.75.75 0 011.001-.707L9.5 7.5l.008-.09A.5.5 0 0110 7z\" fill=\"currentColor\" /><path d=\"M11.585 1.194a.513.513 0 01.855.56l-.051.077-3.163 3.975a.514.514 0 01-.73.075l-.068-.069-1.812-2.208a.512.512 0 01.729-.716l.065.066 1.409 1.718 2.766-3.478z\" fill=\"#6EAC65\" /></g>'\n }\n}\n","import React from 'react'\nimport { SvgSymbolProps } from './SvgSymbol.types'\nimport makeClassName from '../utils/makeClassName'\n\nimport styles from './SvgSymbol.module.css'\nimport { icons } from './icons'\n\nexport const SvgSymbol: React.FC<SvgSymbolProps> = ({\n icon,\n size,\n styleContext\n}) => {\n const data = icons[icon]\n\n return (\n <svg\n data-testid=\"svg-symbol\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n className={makeClassName([\n [styles.root, true],\n [styles[size], !!styles[size]],\n [styles[icon], !!styles[icon]],\n [styles[styleContext], !!styles[styleContext]]\n ])}\n width={data.width}\n height={data.height}\n viewBox={`0 0 ${data.width} ${data.height}`}\n dangerouslySetInnerHTML={{ __html: data.content }}\n />\n )\n}\n","import React from 'react'\n\nconst BlockContext = React.createContext({ lightBox: null })\n\nexport const BlockProvider = BlockContext.Provider\n\nexport default BlockContext\n","type viewportSize = {\n width: number\n height: number\n}\n\nexport default (): viewportSize => ({\n width:\n window.innerWidth ||\n document.documentElement.clientWidth ||\n document.body.clientWidth,\n height:\n window.innerHeight ||\n document.documentElement.clientHeight ||\n document.body.clientHeight\n})\n","const POST_MESSAGE_PREFIX = 'mdzKitMsg'\n\nconst postMessage = (element: string, action: string): void => {\n const target = window.top\n\n const msg = `${POST_MESSAGE_PREFIX}=${JSON.stringify({\n element,\n action\n })}`\n\n if (typeof target !== 'undefined') {\n target.postMessage(msg, '*')\n }\n}\n\nexport default postMessage\n","export const MediaQuerySizes = {\n MOBILE: 512,\n PORTRAIT_TABLET: 768,\n LANDSCAPE_TABLET: 1024,\n DESKTOP: 1010,\n WIDE_DESKTOP: 1200\n}\n\nexport const imageBreakpoints = {\n 325: '(min-width: 0)',\n 520: '(min-width: 325px)',\n 600: '(min-width: 600px)',\n 650: '(min-width: 650px)',\n 980: '(min-width: 1000px)',\n 1335: '(min-width: 1000px)'\n}\n\nexport const imageConditionalKeys = {\n xs: [325],\n superFull: [1335, 650, 520, 325],\n full: [980, 650, 520, 325],\n default: [650, 520, 325],\n narrow: [600, 325]\n}\n","import React, { useState, useEffect } from 'react'\nimport { useInView } from 'react-intersection-observer'\n\nimport makeClassName from '../utils/makeClassName'\n\nimport styles from './Lazy.module.css'\n\nimport { LazyProps } from './Lazy.types'\n\nexport const Lazy: React.FC<LazyProps> = ({ children, threshold }) => {\n const [ref, inView, entry] = useInView({\n threshold: threshold || 0\n })\n\n const [visible, setVisible] = useState(false)\n\n useEffect(() => {\n if (entry && entry.boundingClientRect && entry.boundingClientRect.y < 0) {\n setVisible(true)\n }\n }, [entry])\n\n useEffect(() => {\n if (inView) {\n setVisible(true)\n }\n }, [inView])\n\n return (\n <div\n className={makeClassName([\n [styles.root, true],\n [styles.visible, visible]\n ])}\n ref={ref}\n data-testid=\"lazy\"\n >\n {visible && children}\n </div>\n )\n}\n","import React, { useState, useEffect } from 'react'\nimport { PictureProps } from './Image.types'\n\nimport { imageBreakpoints, imageConditionalKeys } from '../constants'\nimport { toCamel } from '../utils/toCamel'\n\nexport const RenderPicture: React.FC<PictureProps> = ({\n source,\n fallbackSource,\n optimized,\n alt,\n display\n}) => {\n const [fallback, setFallback] = useState(false)\n\n useEffect(() => {\n setFallback(!window.HTMLPictureElement)\n }, [])\n\n const keys =\n imageConditionalKeys[toCamel(display)] || imageConditionalKeys.default\n\n return (\n <picture>\n {source && (\n <source media=\"(min-width: 325px)\" srcSet={`${source[1]} 2x`} />\n )}\n\n {optimized && !optimized.w325 && (\n <source media=\"(min-width: 0)\" srcSet={`${optimized.original}`} />\n )}\n\n {optimized &&\n keys.map(key => {\n const breakpoint = optimized[`w${key}`]\n\n if (!breakpoint) {\n return null\n }\n\n return (\n <React.Fragment key={key}>\n <source\n type=\"image/webp\"\n media={imageBreakpoints[key]}\n srcSet={`${breakpoint['2x_webp']} 2x, ${breakpoint['1x_webp']} 1x `}\n />\n\n <source\n type=\"image/png\"\n media={imageBreakpoints[key]}\n srcSet={`${breakpoint['2x']} 2x, ${breakpoint['1x']} 1x `}\n />\n </React.Fragment>\n )\n })}\n\n <img\n src={\n fallback\n ? fallbackSource\n : 'data:image/gif;base64,R0lGODlhAQABAPAAAPLy8gAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=='\n }\n alt={alt}\n />\n </picture>\n )\n}\n\nexport default RenderPicture\n","export const toCamel = (s: string): string =>\n s.replace(/([_][a-z])/gi, str => str.toUpperCase().replace('_', ''))\n","import React, { useContext } from 'react'\nimport { ImageProps } from './Image.types'\n\nimport makeClassName from '../utils/makeClassName'\n\nimport BlockContext from '../utils/BlockContext'\nimport viewportSize from '../utils/viewportSize'\nimport postMessage from '../utils/postMessage'\nimport { MediaQuerySizes } from '../constants'\n\nimport { Lazy } from '../Lazy'\nimport RenderPicture from './RenderPicture'\n\nimport styles from './Image.module.css'\n\nexport const Image: React.FC<ImageProps> = ({\n alt,\n display,\n optimized,\n width,\n height,\n source,\n lazy,\n fullscreen,\n ratio\n}) => {\n const { lightBox } = useContext(BlockContext)\n\n console.log(useContext(BlockContext))\n\n const handleClick = (): void => {\n const { width: viewportWidth } = viewportSize()\n\n if (\n (optimized && !optimized.original) ||\n !lightBox ||\n (viewportWidth >= MediaQuerySizes.LANDSCAPE_TABLET && !fullscreen)\n ) {\n return\n }\n\n postMessage('fullscreen_click', 'click')\n lightBox.show(optimized, width, height, alt)\n }\n\n const pictureStyles = {\n paddingBottom: `${100 / (ratio || width / height)}%`\n }\n\n const blockStyles = {\n maxWidth: width <= 649 ? width : '100%'\n }\n\n /* fallback w325 url until w6 was released */\n const fallbackSource =\n (source && source[0]) ||\n (optimized.w325 && optimized.w325['1x']) ||\n optimized.original\n\n return (\n <div\n className={makeClassName([\n [styles.root, true],\n [styles.fullscreen, fullscreen]\n ])}\n style={blockStyles}\n data-testid=\"image\"\n >\n <div\n className={styles.wrapper}\n style={pictureStyles}\n onClick={(): void => handleClick()}\n onKeyPress={(): void => handleClick()}\n role=\"button\"\n tabIndex={0}\n >\n {lazy ? (\n <>\n <Lazy threshold={0.25}>\n <RenderPicture\n fallbackSource={fallbackSource}\n source={source}\n optimized={optimized}\n alt={alt}\n display={display}\n />\n </Lazy>\n <noscript>\n <img src={fallbackSource} alt={alt} />\n </noscript>\n </>\n ) : (\n <RenderPicture\n fallbackSource={fallbackSource}\n source={source}\n optimized={optimized}\n alt={alt}\n display={display}\n />\n )}\n </div>\n </div>\n )\n}\n","import React, { useState } from 'react'\nimport { PopoverData, DotsOnImageProps, SingleDot } from './DotsOnImage.types'\n\nimport { Image } from '../Image'\nimport { SvgSymbol } from '../SvgSymbol'\n\nimport styles from './DotsOnImage.module.css'\n\nexport const DotsOnImage: React.FC<DotsOnImageProps> = ({\n block: { optimized, width, height, credit, display, dots }\n}) => {\n const [popover, setPopover] = useState<PopoverData>({\n title: null,\n body: null,\n show: false,\n id: null\n })\n\n const handleDotClick = (dot: SingleDot): void => {\n const shouldShow = dot.id !== popover.id\n\n setPopover({\n title: dot.title,\n body: dot.body,\n show: shouldShow,\n id: shouldShow ? dot.id : null\n })\n }\n\n return (\n <div data-testid=\"dots-on-image\" className={styles.root}>\n <div className={styles.dots}>\n {dots.map(dot => (\n <button\n className={styles.dot}\n type=\"button\"\n key={dot.id}\n style={{\n top: `${dot.position.y}%`,\n left: `${dot.position.x}%`,\n backgroundColor: dot.icon.color\n }}\n onClick={(): void => handleDotClick(dot)}\n >\n {dot.icon.type === 'svg' && (\n <div\n className={styles.icon}\n dangerouslySetInnerHTML={{ __html: dot.icon.svg_string }}\n />\n )}\n {dot.icon.type === 'number' && dot.icon.number}\n </button>\n ))}\n </div>\n <div className={styles.image}>\n <Image\n optimized={optimized}\n width={width}\n height={height}\n alt={credit}\n display={display}\n />\n </div>\n\n {popover.show && (\n <div className={styles.popover}>\n <button\n className={styles.dismiss}\n type=\"button\"\n onClick={(): void => setPopover({ show: false })}\n >\n <SvgSymbol icon=\"cross\" size=\"unset\" />\n </button>\n <div className={styles.popoverTitle}>{popover.title}</div>\n <div\n className={styles.popoverBody}\n dangerouslySetInnerHTML={{ __html: popover.body }}\n />\n </div>\n )}\n </div>\n )\n}\n","const makeStyleContext = (\n classNames: (string[] | string | boolean)[][],\n styleContext: string[] | string,\n styles\n): (string[] | string | boolean)[][] => {\n const context = Array.isArray(styleContext)\n ? styleContext.filter(ctx => styles[ctx]).map(ctx => [[styles[ctx]], true])\n : [[styles[styleContext], !!styleContext && !!styles[styleContext]]]\n\n return classNames.concat(context)\n}\n\nexport default makeStyleContext\n","import React from 'react'\nimport { TagProps } from './Tag.types'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport makeClassName from '../utils/makeClassName'\n\nimport styles from './Tag.module.css'\n\nexport const Tag: React.FC<TagProps> = ({\n children,\n size = 'small',\n theme = 'gold',\n styleContext,\n correlation,\n onlyOn\n}) => {\n let classNames: (string[] | string | boolean)[][] = [\n [styles.root, true],\n [styles[size], !!size && !!styles[size]],\n [styles[theme], !!theme && !!styles[theme]],\n [styles[onlyOn], !!onlyOn && !!styles[onlyOn]],\n [styles[correlation], !!correlation && !!styles[correlation]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"tag\" className={makeClassName(classNames)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { MediaCaptionProps } from './MediaCaption.types'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport makeClassName from '../utils/makeClassName'\n\nimport styles from './MediaCaption.module.css'\n\nexport const MediaCaption: React.FC<MediaCaptionProps> = ({\n credit,\n caption,\n styleContext\n}) => {\n let classNames: (string[] | string | boolean)[][] = [[styles.root, true]]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"media-caption\" className={makeClassName(classNames)}>\n {caption && (\n <div\n className={styles.caption}\n dangerouslySetInnerHTML={{ __html: caption }}\n />\n )}\n {credit && (\n <div\n className={styles.credit}\n dangerouslySetInnerHTML={{ __html: credit }}\n />\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { TableProps } from './Table.types'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport makeClassName from '../utils/makeClassName'\n\nimport { MediaCaption } from '../MediaCaption'\n\nimport styles from './Table.module.css'\n\nexport const Table: React.FC<TableProps> = ({\n styleContext,\n block: {\n rows,\n options,\n display,\n columns_widths: columnsWidth,\n table_credit: tableCredit\n }\n}) => {\n const colors = {\n '#ffffff': 'white',\n '#f5f5f5': 'gray',\n '#feeeee': 'pink',\n '#e6f3ff': 'blue',\n '#fffde6': 'yellow',\n '#fff9f2': 'orange',\n '#e7f2ef': 'green',\n '#f4f0f8': 'violet'\n }\n\n let classNames: (string[] | string | boolean)[][] = [\n [styles.root, true],\n [styles[display], !!display && !!styles[display]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"table\" className={makeClassName(classNames)}>\n <div className={styles.wrapper}>\n <div className={styles.table}>\n <div className={styles.tracks}>\n {rows.map((row, i) => {\n return (\n <div key={row.key} className={styles.row}>\n {row.cells.map((cell, j) => (\n <div\n key={cell.key}\n className={makeClassName([\n [styles.cell, true],\n [styles.header, options.header && i === 0],\n [styles[colors[cell.color]], true],\n [styles[columnsWidth[j]], true],\n [\n styles.fixedColumn,\n options.fixed_first_column && j === 0\n ]\n ])}\n dangerouslySetInnerHTML={{ __html: cell.val }}\n />\n ))}\n </div>\n )\n })}\n </div>\n </div>\n </div>\n\n {tableCredit && (\n <MediaCaption credit={tableCredit} styleContext={styleContext} />\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { MaterialNoteProps } from './MaterialNote.types'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport makeClassName from '../utils/makeClassName'\n\nimport styles from './MaterialNote.module.css'\n\nexport const MaterialNote: React.FC<MaterialNoteProps> = ({\n block: { data },\n styleContext\n}) => {\n let classNames: (string[] | string | boolean)[][] = [[styles.root, true]]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"material-note\" className={makeClassName(classNames)}>\n {data &&\n data.map(item => (\n <p\n className={styles[item.type]}\n key={item.id}\n dangerouslySetInnerHTML={{ __html: item.data }}\n />\n ))}\n </div>\n )\n}\n","import React from 'react'\nimport { BookmarkButtonProps } from './BookmarkButton.types'\nimport makeClassName from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport { SvgSymbol } from '../SvgSymbol'\n\nimport styles from './BookmarkButton.module.css'\n\nexport const BookmarkButton: React.FC<BookmarkButtonProps> = ({\n styleContext,\n theme,\n isInBookmarks,\n onClick\n}) => {\n let classNames: (string[] | string | boolean)[][] = [\n [styles.root, true],\n [styles.isInBookmarks, isInBookmarks],\n [styles[theme], !!theme && !!styles[theme]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"bookmark-button\" className={makeClassName(classNames)}>\n <button\n className={styles.control}\n onClick={(): void => onClick()}\n type=\"button\"\n >\n <SvgSymbol icon=\"bookmark\" size=\"unset\" />\n </button>\n </div>\n )\n}\n","import React, { useState, useEffect } from 'react'\nimport { PopoverProps } from './Popover.types'\nimport makeClassName from '../utils/makeClassName'\n\nimport styles from './Popover.module.css'\n\nexport const Popover: React.FC<PopoverProps> = ({ children, onClose }) => {\n const [visible, setVisible] = useState(true)\n\n const handleClose = (): void => {\n setVisible(false)\n setTimeout(onClose, 350)\n }\n\n const handleScroll = (): void => {\n handleClose()\n }\n\n const escFunction = (event: KeyboardEvent): void => {\n if (event.key === 'Escape') {\n handleClose()\n }\n }\n\n useEffect(() => {\n window.addEventListener('keydown', escFunction, false)\n window.addEventListener('scroll', handleScroll, false)\n\n return () => {\n window.removeEventListener('keydown', escFunction, false)\n window.removeEventListener('scroll', handleScroll, false)\n }\n }, [visible])\n\n /* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */\n return (\n <div\n data-testid=\"popover\"\n className={makeClassName([\n [styles.root, true],\n [styles.visible, visible]\n ])}\n >\n <div className={styles.overlay} onClick={(): void => handleClose()} />\n\n <div className={styles.container}>\n <button\n type=\"button\"\n className={styles.dismiss}\n onClick={(): void => handleClose()}\n aria-label=\"dismiss\"\n />\n <svg width=\"100%\" className={styles.background}>\n <defs>\n <mask id=\"myMask\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">\n <rect fill=\"white\" y=\"0\" width=\"100%\" height=\"100%\" x=\"0\" />\n <svg x=\"50%\" overflow=\"visible\">\n <g transform=\"translate(-12 0)\">\n <path d=\"M4.61852778e-14,9.76996262e-15 L9.84597532,5.80270273 C11.0992017,6.54128882 12.6546044,6.54128882 13.9078308,5.80270273 L23.7538061,9.76996262e-15 L4.61852778e-14,9.76996262e-15 Z\" />\n </g>\n </svg>\n </mask>\n </defs>\n <rect\n fill=\"#F7F7F7\"\n id=\"base-mask\"\n mask=\"url(#myMask)\"\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n />\n </svg>\n {children}\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { MetaProps } from './Meta.types'\n\nimport makeStyleContext from '../utils/makeStyleContext'\nimport makeClassName from '../utils/makeClassName'\n\nimport styles from './Meta.module.css'\n\nexport const Meta: React.FC<MetaProps> = ({\n hasSource,\n theme,\n children,\n onlyOn,\n styleContext\n}) => {\n let classNames: (string[] | string | boolean)[][] = [\n [styles.root, true],\n [styles[theme], !!theme && !!styles[theme]],\n [styles[onlyOn], !!onlyOn],\n [styles.hasSource, hasSource]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"meta\" className={makeClassName(classNames)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { TimestampProps } from './Timestamp.types'\n\nimport dayjs from 'dayjs'\nimport 'dayjs/locale/ru'\n\nimport relativeTime from 'dayjs/plugin/relativeTime'\n\nimport styles from './Timestamp.module.css'\n\nexport const Timestamp: React.FC<TimestampProps> = ({\n publishedAt,\n locale = 'ru',\n type\n}) => {\n let published\n const timeFormat =\n locale === 'ru' ? 'HH:mm, D MMMM YYYY' : 'h:mm a, MMMM D, YYYY'\n\n const preparedPublishedAt = publishedAt * 1000\n\n dayjs.locale(locale)\n dayjs.extend(relativeTime)\n\n if (type === 'fromNow') {\n published = dayjs(preparedPublishedAt).fromNow()\n } else if (type === 'format') {\n published = dayjs(preparedPublishedAt).format('HH:mm')\n } else if (type === 'date') {\n published = dayjs(preparedPublishedAt).format(timeFormat)\n } else {\n throw new Error('Unknown time type')\n }\n\n return (\n <time data-testid=\"timestamp\" className={styles.root}>\n {published}\n </time>\n )\n}\n","import React, { useCallback, useEffect, useRef, useState } from 'react'\n\ninterface DangerousHtmlProps {\n className?: string\n html: string\n tagName?: string\n}\n\nconst DangerousHTML: React.FC<DangerousHtmlProps> = ({\n className = '',\n tagName: TagName = 'div',\n html\n}) => {\n const element = useRef<HTMLElement | null>(null)\n const [canRenderHtml, setCanRenderHtml] = useState(false)\n\n useEffect(() => {\n setCanRenderHtml(true)\n }, [])\n\n const replaceScriptElementsRecursive = useCallback(node => {\n if (\n node.tagName === 'SCRIPT' &&\n (!node.id || node.id.indexOf('script-') !== 0)\n ) {\n const script = document.createElement('script')\n\n script.id = `script-${Math.random()\n .toString(16)\n .slice(2)}`\n script.innerHTML = node.innerHTML\n\n const attrs = node.attributes\n\n for (let i = 0; i < attrs.length; i += 1) {\n const { name, value } = attrs[i]\n\n script.setAttribute(name, value)\n }\n\n node.parentElement.replaceChild(script, node)\n } else {\n let i = 0\n const children = node.childNodes\n\n while (i < children.length) {\n replaceScriptElementsRecursive(children[i])\n i += 1\n }\n }\n }, [])\n\n const prepareAnchors = useCallback(() => {\n const anchors = Array.from(element.current.querySelectorAll('a'))\n\n anchors.forEach(a => {\n a.setAttribute('target', '_blank')\n })\n }, [])\n\n useEffect(() => {\n if (canRenderHtml && html.indexOf('script') > -1 && element.current) {\n element.current.innerHTML = html\n replaceScriptElementsRecursive(element.current)\n prepareAnchors()\n }\n }, [canRenderHtml, element, html])\n\n return (\n <TagName\n // @ts-ignore\n ref={element}\n className={className}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n )\n}\n\nexport default DangerousHTML\n","import React, { useState, useEffect, useRef } from 'react'\n\nimport enableInlineVideo from 'iphone-inline-video'\n\nimport viewportSize from '../utils/viewportSize'\nimport { MediaQuerySizes } from '../constants'\n\nimport { EmbedGifProps } from './EmbedBlock.types'\n\nimport styles from './EmbedBlock.module.css'\n\nexport const EmbedGif: React.FC<EmbedGifProps> = ({ gif, mp4Url, style }) => {\n const [videoFrozen, setVideoFrozen] = useState(false)\n const videoElem = useRef(null)\n\n const handleVideoTouch = (): void => {\n videoElem.current.play()\n setVideoFrozen(false)\n }\n\n const handleVideoError = (): void => {\n const video = videoElem.current\n\n video.setAttribute('poster', video.dataset.gif)\n\n setVideoFrozen(false)\n }\n\n useEffect(() => {\n const video = videoElem.current\n const { width: viewportWidth } = viewportSize()\n\n enableInlineVideo(video)\n\n if (viewportWidth >= MediaQuerySizes.MOBILE) {\n video.setAttribute('autoplay', true)\n video.play()\n } else {\n setVideoFrozen(true)\n video.pause()\n video.addEventListener('touchstart', handleVideoTouch)\n }\n\n video.addEventListener('error', handleVideoError)\n\n return (): void => {\n video.removeEventListener('touchstart', handleVideoTouch)\n video.removeEventListener('error', handleVideoError)\n }\n }, [])\n\n return (\n <div className={styles.figure}>\n <div\n className={styles.objectWrap}\n style={style}\n data-frozen={videoFrozen}\n >\n <video\n playsInline\n muted\n loop\n autoPlay\n preload=\"metadata\"\n data-gif={gif}\n ref={videoElem}\n >\n <source src={`https://meduza.io${mp4Url}`} type=\"video/mp4\" />\n </video>\n </div>\n </div>\n )\n}\n","import React, { useState } from 'react'\n\nimport { Image } from '../Image'\nimport { Popover } from '../Popover'\nimport { MediaCaption } from '../MediaCaption'\nimport { DotsOnImage } from '../DotsOnImage'\n\nimport makeClassName from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport DangerousHTML from '../utils/DangerousHtml'\n\nimport { EmbedGif } from './EmbedGif'\n\nimport { EmbedBlockProps } from './EmbedBlock.types'\n\nimport styles from './EmbedBlock.module.css'\n\nexport const EmbedBlock: React.FC<EmbedBlockProps> = ({\n block,\n block: {\n data,\n data: {\n html,\n display,\n only_on: onlyOn,\n provider,\n cc,\n optimized,\n small_url: small,\n large_url: large,\n gif_url: gifUrl,\n mp4_url: mp4Url\n }\n },\n styleContext,\n children\n}) => {\n const [isPopoverShown, setIsPopoverShown] = useState(false)\n const style: React.CSSProperties = {}\n const isProportional = block.data.height && block.data.width\n\n const fullWidthProviders = [\n 'youtube',\n 'vimeo',\n 'onetv',\n 'coub',\n 'facebook_video'\n ]\n\n const mobileFullwidth =\n fullWidthProviders.indexOf(provider) || block.type === 'dots_on_image'\n\n const renderCC = (context?: string | string[]): JSX.Element => (\n <MediaCaption\n credit={data.credit}\n caption={data.caption}\n styleContext={context || styleContext}\n />\n )\n\n const renderEmbed = (style: React.CSSProperties): JSX.Element => {\n switch (block.type) {\n case 'gif': {\n return <EmbedGif gif={gifUrl} mp4Url={mp4Url} style={style} />\n }\n case 'image': {\n return (\n <div className={styles.figure}>\n {(small || optimized) && (\n <Image\n fullscreen={block.data.fullscreen}\n source={!optimized && [small, large]}\n optimized={block.data.optimized}\n width={block.data.width}\n height={block.data.height}\n alt={block.data.caption}\n display={block.data.display}\n lazy={block.data.lazy}\n />\n )}\n </div>\n )\n }\n case 'game_embed': {\n return (\n <div className={styles.gameEmbed}>\n <iframe\n src={block.data.game_src}\n id={block.data.game_id}\n title=\"Game embed\"\n />\n </div>\n )\n }\n case 'dots_on_image': {\n return (\n <div className={styles.figure}>\n <DotsOnImage block={data} />\n </div>\n )\n }\n\n default: {\n return (\n <div className={styles.object}>\n <div className={styles.wrapper} style={style}>\n <DangerousHTML className={styles.objectWrap} html={html} />\n </div>\n </div>\n )\n }\n }\n }\n\n if (isProportional) {\n style.paddingBottom = `${(block.data.height / block.data.width) * 100}%`\n style.height = 0\n }\n\n let classNames: (string[] | string | boolean)[][] = [\n [styles.root, true],\n [styles.cc, cc],\n [styles[display], !!display && styles[display]],\n [styles[provider], !!provider && !!styles[provider]],\n [styles[onlyOn], !!onlyOn && styles[onlyOn]],\n [styles.mobileFullwidth, mobileFullwidth],\n [styles.proportional, isProportional]\n ]\n\n // Убираем из контекста все, что не начинается с приставки isIn,\n // чтобы не применились лишние модификаторы\n // TODO: в w6 модификаторы должны передаваться явно\n\n if (styleContext) {\n const filteredContext = Object.keys(styleContext)\n .filter(key => key.startsWith('isIn') && styles[key])\n .reduce((acc, key) => {\n acc.push([styles[key], true])\n\n return acc\n }, [])\n classNames = makeStyleContext(classNames, filteredContext, styles)\n }\n\n return (\n <figure className={makeClassName(classNames)}>\n {children && (\n <div className={styles.object}>\n <div className={styles.wrapper} style={style}>\n <div className={styles.objectWrap}>{children}</div>\n </div>\n </div>\n )}\n\n {!children && renderEmbed(style)}\n\n {cc === 'default' && <figcaption>{renderCC()}</figcaption>}\n\n {cc === 'button' && (\n <button\n className={styles.control}\n type=\"button\"\n aria-label=\"Open\"\n onClick={(): void => {\n setIsPopoverShown(!isPopoverShown)\n }}\n />\n )}\n\n {cc === 'button' && isPopoverShown && (\n <Popover\n onClose={(): void => {\n setIsPopoverShown(false)\n }}\n >\n {renderCC('isInPopover')}\n </Popover>\n )}\n </figure>\n )\n}\n","import React, { useEffect, useRef } from 'react'\nimport { EmbedBlockProps } from './EmbedBlock.types'\n\nimport { EmbedBlock } from './EmbedBlock'\n\nexport const IframeBlock: React.FC<EmbedBlockProps> = ({\n block,\n block: { id },\n styleContext,\n lang = 'ru'\n}) => {\n const element = useRef(null)\n\n const renderIframe = (): void => {\n const rootEl = document.createElement('div')\n const contentEl = document.createElement('div')\n const scriptEl = document.createElement('script')\n const style = document.createElement('style')\n const range = document.createRange()\n\n range.setStart(contentEl, 0)\n contentEl.setAttribute('id', 'content')\n scriptEl.textContent = `\n function getDocHeight() {\n var doc = document;\n var body = doc.body;\n var html = doc.documentElement;\n var height = Math.max( body.scrollHeight, body.offsetHeight,\n html.clientHeight, html.scrollHeight, html.offsetHeight );\n\n doc.body.style.margin=\"0\";\n\n return document.getElementById('content') ? document.getElementById('content').offsetHeight : height;\n }\n\n function sendDocHeightMsg() {\n var height = getDocHeight();\n var message = JSON.stringify({\n action: {\n type: \"UPDATE_HEIGHT\",\n payload: {\n id: \"${block.id}\",\n height: height\n }\n }\n });\n parent.postMessage(\"mdzMaterialEmbedHeight=\" + message, '*');\n }\n\n setInterval(sendDocHeightMsg, 300);\n `\n\n style.type = 'text/css'\n style.innerHTML =\n block.type === 'embed_code'\n ? '.twitter-tweet { padding-top: 15px; margin: 0 !important; }'\n : '.twitter-tweet { margin: 0 !important; } .fb-post { display: block; } .instagram-media { min-width: 0 !important; }'\n\n contentEl.appendChild(range.createContextualFragment(block.data.html))\n rootEl.appendChild(scriptEl)\n rootEl.appendChild(contentEl)\n contentEl.appendChild(style)\n\n const frame = element.current.querySelector('iframe').contentDocument\n\n frame.open()\n frame.close()\n frame.documentElement.setAttribute('lang', lang)\n frame.body.appendChild(rootEl)\n }\n\n useEffect(() => {\n renderIframe()\n }, [])\n\n return (\n <EmbedBlock block={block} styleContext={styleContext}>\n <div\n ref={element}\n dangerouslySetInnerHTML={{\n __html: `<iframe id=${id} frameBorder=\"0\" scrolling=\"no\"></iframe>`\n }}\n />\n </EmbedBlock>\n )\n}\n","import React from 'react'\nimport { EmbedBlockProps } from './EmbedBlock.types'\n\nimport { EmbedBlock } from './EmbedBlock'\nimport { IframeBlock } from './IframeBlock'\n\nexport const EmbedBlockContainer: React.FC<EmbedBlockProps> = ({\n block,\n styleContext,\n lang\n}) => {\n if (block.data.wrap_with_iframe) {\n return <IframeBlock block={block} styleContext={styleContext} lang={lang} />\n }\n return <EmbedBlock block={block} styleContext={styleContext} />\n}\n","import React from 'react'\nimport { QuoteBlockProps } from './QuoteBlock.types'\n\nimport makeClassName from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './QuoteBlock.module.css'\n\nexport const QuoteBlock: React.FC<QuoteBlockProps> = ({\n block: { data },\n styleContext\n}) => {\n let classNames: (string[] | string | boolean)[][] = [[styles.root, true]]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"quote-block\" className={makeClassName(classNames)}>\n <p dangerouslySetInnerHTML={{ __html: data }} />\n </div>\n )\n}\n","import React from 'react'\nimport { CardTitleProps } from './CardTitle.types'\nimport makeClassName from '../utils/makeClassName'\n\nimport styles from './CardTitle.module.css'\n\nexport const CardTitle: React.FC<CardTitleProps> = ({\n block: {\n data: { only_on: onlyOn, index, text }\n },\n styleContext\n}) => {\n return (\n <div\n data-testid=\"card-title\"\n className={makeClassName([\n [styles.root, true],\n [styles[onlyOn], !!onlyOn],\n [styles[styleContext], !!styleContext && !!styles[styleContext]]\n ])}\n >\n <div className={styles.index}>{index}</div>\n <h3 className={styles.title}>{text}</h3>\n </div>\n )\n}\n","import React from 'react'\nimport { ChapterBlockProps } from './ChapterBlock.types'\nimport makeClassName from '../utils/makeClassName'\n\nimport DangerousHTML from '../utils/DangerousHtml'\n\nimport styles from './ChapterBlock.module.css'\n\nexport const ChapterBlock: React.FC<ChapterBlockProps> = ({\n block,\n block: { only_on: onlyOn },\n styleContext\n}) => {\n return (\n <div\n data-testid=\"chapter-block\"\n className={makeClassName([\n [styles.root, true],\n [styles[onlyOn], !!onlyOn]\n ])}\n >\n <DangerousHTML\n className={makeClassName([\n [styles.subtitle, true],\n [styles[styleContext], !!styleContext && !!styles[styleContext]]\n ])}\n html={block.data}\n />\n </div>\n )\n}\n","import React from 'react'\nimport { SimpleTitleProps } from './SimpleTitle.types'\nimport makeClassName from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './SimpleTitle.module.css'\n\nexport const SimpleTitle: React.FC<SimpleTitleProps> = ({\n block: {\n data: { first },\n only_on: onlyOn\n },\n styleContext\n}) => {\n let classNames: (string[] | string | boolean)[][] = [\n [styles.root, true],\n [styles[onlyOn], true]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"simple-title\" className={makeClassName(classNames)}>\n {first}\n </div>\n )\n}\n","import React from 'react'\nimport { RichTitleProps } from './RichTitle.types'\n\nimport makeClassName from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './RichTitle.module.css'\n\nexport const RichTitle: React.FC<RichTitleProps> = ({\n block: {\n only_on: onlyOn,\n data: { featured, first, second }\n },\n styleContext\n}) => {\n let classNames: (string[] | string | boolean)[][] = [\n [styles.root, true],\n [styles[onlyOn], true],\n [styles.featured, !!featured]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <h1 data-testid=\"rich-title\" className={makeClassName(classNames)}>\n {first}\n {second && <span> {second}</span>}\n </h1>\n )\n}\n","import React from 'react'\nimport { SimpleBlockProps } from './SimpleBlock.types'\n\nimport makeClassName from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport DangerousHTML from '../utils/DangerousHtml'\n\nimport styles from './SimpleBlock.module.css'\n\nexport const SimpleBlock: React.FC<SimpleBlockProps> = ({\n block: { data, type, only_on: onlyOn },\n styleContext\n}) => {\n let tagName\n\n let classNames: (string[] | string | boolean)[][] = [\n [styles[type], !!type && !!styles[type]],\n [styles[onlyOn], true]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n switch (type) {\n case 'context_p':\n case 'lead':\n case 'note_caption':\n case 'note_credit': {\n tagName = 'p'\n break\n }\n case 'lead_hr': {\n tagName = 'div'\n break\n }\n default:\n tagName = type\n }\n return (\n <DangerousHTML\n className={makeClassName(classNames)}\n html={data || ''}\n tagName={tagName}\n />\n )\n}\n","import React from 'react'\nimport { ListBlockProps } from './ListBlock.types'\n\nimport makeClassName from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport DangerousHTML from '../utils/DangerousHtml'\n\nimport styles from './ListBlock.module.css'\n\nexport const ListBlock: React.FC<ListBlockProps> = ({\n block: { type, data, only_on: onlyOn },\n styleContext\n}) => {\n const TagName = type\n\n let classNames: (string[] | string | boolean)[][] = [\n [styles.root, true],\n [styles[onlyOn], true],\n [styles[type], !!type && !!styles[type]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <TagName className={makeClassName(classNames)}>\n {data.map((item, index) => (\n <DangerousHTML key={index} html={item} tagName=\"li\" />\n ))}\n </TagName>\n )\n}\n","import React from 'react'\nimport { RelatedBlockProps } from './RelatedBlock.types'\n\nimport makeClassName from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './RelatedBlock.module.css'\n\nexport const RelatedBlock: React.FC<RelatedBlockProps> = ({\n block: {\n data: { title, related },\n only_on: onlyOn\n },\n styleContext\n}) => {\n let classNames: (string[] | string | boolean)[][] = [\n [styles.root, true],\n [styles[onlyOn], true]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"related-block\" className={makeClassName(classNames)}>\n <h3 className={styles.header}>{title}</h3>\n <ul className={styles.items}>\n {related.map((item, index) => (\n <li key={item.id || index} className={styles[item.layout]}>\n <a\n href={item.full_url || `/${item.url}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span className={styles.first}>{item.title}</span>\n {item.second_title && ' '}\n {item.second_title && <span>{item.second_title}</span>}\n </a>\n </li>\n ))}\n </ul>\n </div>\n )\n}\n","import React from 'react'\nimport { SourceBlockProps } from './SourceBlock.types'\n\nimport makeClassName from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport DangerousHTML from '../utils/DangerousHtml'\n\nimport styles from './SourceBlock.module.css'\n\nexport const SourceBlock: React.FC<SourceBlockProps> = ({\n block: { only_on: onlyOn, quote, origin, url },\n styleContext\n}) => {\n let classNames: (string[] | string | boolean)[][] = [\n [styles.root, true],\n [styles[onlyOn], true]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <blockquote\n data-testid=\"source-block\"\n cite={url}\n className={makeClassName(classNames)}\n >\n <a\n className={styles.text}\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {quote.map((item, index) => (\n <DangerousHTML key={index} html={item.data} tagName=\"p\" />\n ))}\n <footer>\n <cite className={styles.origin}>{origin}</cite>\n </footer>\n </a>\n </blockquote>\n )\n}\n","import React from 'react'\nimport { GroupedBlockProps } from './GroupedBlock.types'\n\nimport makeClassName from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport { EmbedBlockContainer } from '../EmbedBlock'\nimport { MediaCaption } from '../MediaCaption'\n\nimport styles from './GroupedBlock.module.css'\n\nexport const GroupedBlock: React.FC<GroupedBlockProps> = ({\n block,\n block: { only_on: onlyOn },\n styleContext\n}) => {\n const maxHeight = Math.min(...block.data.map(item => item.data.height))\n\n const normalizedBoxesWidth = block.data.map(\n item => item.data.width / (item.data.height / maxHeight)\n )\n\n const sumWidth = normalizedBoxesWidth.reduce((sum, x) => sum + x)\n\n let classNames: (string[] | string | boolean)[][] = [\n [styles.root, true],\n [styles[onlyOn], true],\n [styles.hasFigcaption, block.cc === 'default'],\n [styles[block.display], !!block.display && styles[block.display]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"grouped-block\" className={makeClassName(classNames)}>\n <div className={styles.items}>\n {block.data.map((item, index) => {\n const percentWidth = (normalizedBoxesWidth[index] / sumWidth) * 100\n\n return (\n <div\n className={styles.item}\n key={item.id}\n style={{ width: `${percentWidth}%` }}\n >\n <EmbedBlockContainer\n block={item}\n styleContext=\"isInGroupedBlock\"\n />\n </div>\n )\n })}\n </div>\n {block.cc && (\n <figcaption className={styles.figcaption}>\n <MediaCaption\n credit={block.credit}\n caption={block.caption}\n styleContext={styleContext}\n />\n </figcaption>\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { MetaItemProps } from './MetaItem.types'\n\nimport makeClassName from '../utils/makeClassName'\n\nimport styles from './MetaItem.module.css'\n\nexport const MetaItem: React.FC<MetaItemProps> = ({\n hasSource,\n type,\n children,\n bullets\n}) => {\n const classNames = [\n [styles.root, true],\n [styles[type], !!type && !!styles[type]],\n [styles.hasSource, !!hasSource],\n [styles.hasBullets, !!bullets]\n ]\n\n return (\n <div data-testid=\"meta-item\" className={makeClassName(classNames)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { MetaItemLiveProps } from './MetaItemLive.types'\n\nimport makeClassName from '../utils/makeClassName'\n\nimport styles from './MetaItemLive.module.css'\n\nexport const MetaItemLive: React.FC<MetaItemLiveProps> = ({\n theme = 'gold'\n}) => {\n const classNames = [\n [styles.root, true],\n [styles[theme], !!theme && styles[theme]]\n ]\n\n return (\n <div\n data-testid=\"meta-item-live\"\n data-meta=\"live\"\n className={makeClassName(classNames)}\n >\n <div className={styles.frame} />\n </div>\n )\n}\n","import React from 'react'\nimport { DocumentItemsCountProps } from './DocumentItemsCount.types'\n\nimport pluralize from '../utils/pluralize'\n\nimport styles from './DocumentItemsCount.module.css'\n\nexport const DocumentItemsCount: React.FC<DocumentItemsCountProps> = ({\n type,\n lang = 'ru',\n items,\n children\n}) => {\n const i18n = {\n ru: {\n card: {\n one: 'карточка',\n two: 'карточки',\n five: 'карточек'\n },\n podcast: {\n one: 'эпизод',\n two: 'эпизода',\n five: 'эпизодов'\n }\n },\n en: {\n card: {\n one: 'card',\n two: 'cards',\n five: 'cards'\n },\n podcast: {\n one: 'episode',\n two: 'episodes',\n five: 'episodes'\n }\n }\n }\n\n const itemsCount = `${items} ${pluralize(\n items,\n i18n[lang][type].one,\n i18n[lang][type].two,\n i18n[lang][type].five\n )}`\n\n return (\n <div data-testid=\"document-items-count\" className={styles.root}>\n {children}\n <span className={styles.items}>{itemsCount}</span>\n </div>\n )\n}\n","const pluralize = (\n number: number,\n one: string,\n two: string,\n five: string\n): string => {\n let n = Math.abs(number)\n n %= 100\n\n if (n >= 5 && n <= 20) {\n return five\n }\n\n n %= 10\n\n if (n === 1) {\n return one\n }\n\n if (n >= 2 && n <= 4) {\n return two\n }\n\n return five\n}\n\nexport default pluralize\n","import React from 'react'\nimport { MetaContainerProps } from './Meta.types'\n\nimport { Meta } from './'\nimport { MetaItem } from '../MetaItem'\nimport { MetaItemLive } from '../MetaItemLive'\nimport { DocumentItemsCount } from '../DocumentItemsCount'\n\nimport { BookmarkButton } from '../BookmarkButton'\nimport { Timestamp } from '../Timestamp'\nimport { SvgSymbol } from '../SvgSymbol'\n\nimport styles from './Meta.module.css'\n\nexport const MetaContainer: React.FC<MetaContainerProps> = ({\n lang,\n block,\n isRead,\n isListened,\n bookmarkAction,\n isInBookmarks,\n block: {\n data: { components, theme }\n },\n styleContext\n}) => {\n const themeColor =\n styleContext && styleContext.indexOf('dark') !== -1 ? 'light' : 'unset'\n const isPodcast = styleContext && styleContext.indexOf('podcast') !== -1\n const isSlides = styleContext && styleContext.indexOf('slide') !== -1\n\n const hasSource = !!components.find(item => item.type === 'source_name')\n\n return (\n <Meta\n styleContext={styleContext}\n theme={theme || themeColor}\n onlyOn={block.only_on}\n hasSource={hasSource}\n >\n {components.map(component => {\n switch (component.type) {\n case 'source_name': {\n return (\n <MetaItem hasSource={hasSource} bullets key={component.id}>\n <>\n {lang === 'ru' ? 'Источник: ' : 'Source: '}\n {component.url && (\n <a\n href={component.url}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {component.text}\n </a>\n )}\n {!component.url && component.text}\n </>\n </MetaItem>\n )\n }\n case 'duration': {\n return (\n <MetaItem hasSource={hasSource} bullets key={component.id}>\n <>\n <SvgSymbol icon=\"podcast\" size=\"small\" />\n {component.text}\n </>\n </MetaItem>\n )\n }\n case 'datetime': {\n return (\n <MetaItem\n hasSource={hasSource}\n bullets\n key={component.id}\n type=\"datetime\"\n >\n <Timestamp\n publishedAt={component.datetime}\n type=\"date\"\n locale={lang}\n />\n </MetaItem>\n )\n }\n\n case 'items_count': {\n return (\n <MetaItem hasSource={hasSource} bullets key={component.id}>\n <DocumentItemsCount\n items={component.count}\n type={isPodcast ? 'podcast' : 'card'}\n lang={lang}\n >\n <SvgSymbol icon=\"card\" size=\"unset\" />\n </DocumentItemsCount>\n </MetaItem>\n )\n }\n case 'broadcast_active': {\n return (\n <MetaItem hasSource={hasSource} bullets key={component.id}>\n <>\n <MetaItemLive /> Прямой эфир\n </>\n </MetaItem>\n )\n }\n case 'broadcast': {\n return (\n <MetaItem hasSource={hasSource} bullets key={component.id}>\n <>\n {component.with_icon && <MetaItemLive />}\n\n {component.label}\n </>\n </MetaItem>\n )\n }\n\n default: {\n return null\n }\n }\n })}\n {(isRead || isListened) && (\n <MetaItem\n hasSource={hasSource}\n bullets\n type={isListened ? 'listened' : 'read'}\n >\n <SvgSymbol icon={isListened ? 'listened' : 'read'} size=\"unset\" />\n </MetaItem>\n )}\n\n {isSlides && lang === 'ru' && (\n <div className={styles.bookmark}>\n <BookmarkButton\n isInBookmarks={isInBookmarks}\n onClick={(): void => bookmarkAction('bookmark', 'top')}\n />\n </div>\n )}\n </Meta>\n )\n}\n","import React from 'react'\nimport { RenderBlocksProps } from './RenderBlocks.types'\n\nimport { Tag } from '../Tag'\nimport { SimpleTitle } from '../SimpleTitle'\nimport { RichTitle } from '../RichTitle'\nimport { SimpleBlock } from '../SimpleBlock'\nimport { ListBlock } from '../ListBlock'\nimport { ChapterBlock } from '../ChapterBlock'\nimport { QuoteBlock } from '../QuoteBlock'\nimport { CardTitle } from '../CardTitle'\nimport { RelatedBlock } from '../RelatedBlock'\nimport { SourceBlock } from '../SourceBlock'\nimport { EmbedBlockContainer } from '../EmbedBlock'\nimport { GroupedBlock } from '../GroupedBlock'\nimport { MetaContainer } from '../Meta/MetaContainer'\nimport { Table } from '../Table'\nimport { MaterialNote } from '../MaterialNote'\n\nexport const RenderBlocks: React.FC<RenderBlocksProps> = ({\n block,\n styleContext,\n lang,\n isRead,\n isListened,\n bookmarkAction,\n isInBookmarks\n}) => {\n switch (block.type) {\n case 'tag': {\n return (\n <Tag\n size=\"large\"\n onlyOn={block.only_on}\n theme={block.data.theme}\n styleContext={styleContext}\n >\n {block.data.text}\n </Tag>\n )\n }\n\n case 'simple_title': {\n return <SimpleTitle block={block} styleContext={styleContext} />\n }\n\n case 'rich_title': {\n return <RichTitle block={block} styleContext={styleContext} />\n }\n\n case 'meta': {\n return (\n <MetaContainer\n block={block}\n lang={block.data.lang}\n styleContext={styleContext}\n isRead={isRead}\n isListened={isListened}\n isInBookmarks={isInBookmarks}\n bookmarkAction={bookmarkAction}\n />\n )\n }\n\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'blockquote':\n case 'p':\n case 'context_p':\n case 'lead':\n case 'lead_hr': {\n return <SimpleBlock block={block} styleContext={styleContext} />\n }\n\n case 'quote':\n return <QuoteBlock block={block} styleContext={styleContext} />\n\n case 'ol':\n case 'ul': {\n return <ListBlock block={block} styleContext={styleContext} />\n }\n\n case 'chapter-subtitle': {\n return <ChapterBlock block={block} styleContext={styleContext} />\n }\n\n case 'card_title': {\n return <CardTitle block={block} styleContext={styleContext} />\n }\n\n case 'related': {\n return <RelatedBlock block={block} styleContext={styleContext} />\n }\n\n case 'source':\n return <SourceBlock block={block} styleContext={styleContext} />\n\n case 'table':\n return <Table block={block} styleContext={styleContext} />\n\n case 'embed':\n case 'embed_code':\n case 'game_embed':\n case 'image':\n case 'dots_on_image':\n case 'gif':\n return (\n <EmbedBlockContainer\n block={block}\n styleContext={styleContext}\n lang={lang}\n />\n )\n case 'grouped':\n return <GroupedBlock block={block} styleContext={styleContext} />\n\n case 'material_note':\n return <MaterialNote block={block} styleContext={styleContext} />\n\n default: {\n return null\n }\n }\n}\n","import React, { useState } from 'react'\nimport { CoverProps } from './Cover.types'\nimport makeClassName from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport generateGradient from '../utils/generateGradient'\n\nimport styles from './Cover.module.css'\n\nimport { RenderBlocks } from '../RenderBlocks'\nimport { MediaCaption } from '../MediaCaption'\nimport { Image } from '../Image'\nimport { Popover } from '../Popover'\n\nexport const Cover: React.FC<CoverProps> = ({\n block: {\n only_on: onlyOn,\n data: {\n blocks,\n cover: { credit, caption, urls, mobile_ratio: mobileRatio, gradients, cc }\n }\n },\n styleContext\n}) => {\n const [isPopoverShown, setIsPopoverShown] = useState(false)\n\n const style: React.CSSProperties = {}\n\n let classNames: (string[] | string | boolean)[][] = [\n [styles.root, true],\n [styles[onlyOn], !!onlyOn && !!styles[onlyOn]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n if (gradients) {\n const theme = [gradients.text_rgb === '0,0,0' ? 'dark' : 'light']\n\n classNames = makeStyleContext(classNames, theme, styles)\n\n style.backgroundImage = generateGradient(gradients.bg_rgb)\n }\n\n const renderCC = (context?: string): JSX.Element => (\n <MediaCaption\n credit={credit}\n caption={caption}\n styleContext={context || styleContext}\n />\n )\n\n return (\n <div data-testid=\"cover\" className={makeClassName(classNames)}>\n <div className={styles.image}>\n <Image optimized={urls} ratio={mobileRatio} display=\"narrow\" />\n </div>\n <div className={styles.body} style={style}>\n {blocks.map(item => (\n <RenderBlocks\n key={item.id}\n block={item}\n styleContext={styleContext}\n />\n ))}\n </div>\n {cc === 'button' && (\n <button\n className={styles.control}\n type=\"button\"\n aria-label=\"Open\"\n onClick={(): void => {\n setIsPopoverShown(!isPopoverShown)\n }}\n />\n )}\n\n {cc === 'button' && isPopoverShown && (\n <Popover\n onClose={(): void => {\n setIsPopoverShown(false)\n }}\n >\n {renderCC('isInPopover')}\n </Popover>\n )}\n </div>\n )\n}\n","const generateGradient = (color: string): string => {\n const gradientSteps = [\n [0, 7],\n [0.08, 12],\n [0.16, 17],\n [0.22, 21],\n [0.32, 26],\n [0.42, 32],\n [0.52, 38],\n [0.62, 47],\n [0.72, 57],\n [0.82, 65],\n [1, 82]\n ]\n\n const gradient = gradientSteps.map(i => `rgba(${color}, ${i[0]}) ${i[1]}%`)\n\n return `linear-gradient(-180deg, ${gradient})`\n}\n\nexport default generateGradient\n","import React from 'react'\nimport { HalfBlockProps } from './HalfBlock.types'\n\nimport makeClassName from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport { RenderBlocks } from '../RenderBlocks'\nimport { Image } from '../Image'\nimport { MediaCaption } from '../MediaCaption'\n\nimport styles from './HalfBlock.module.css'\n\nexport const HalfBlock: React.FC<HalfBlockProps> = ({\n block: {\n only_on: onlyOn,\n data,\n data: {\n cover: { optimized, ratio, credit, caption }\n }\n },\n styleContext\n}) => {\n let classNames: (string[] | string | boolean)[][] = [\n [styles.root, true],\n [styles[onlyOn], true]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"half-block\" className={makeClassName(classNames)}>\n <div className={styles.main}>\n <div className={styles.image}>\n <Image optimized={optimized} ratio={ratio} display=\"super_full\" />\n </div>\n <div className={styles.body}>\n {data.blocks.map(item => (\n <RenderBlocks key={item.id} block={item} styleContext={['rich']} />\n ))}\n </div>\n </div>\n <div className={styles.footer}>\n <MediaCaption\n credit={credit}\n caption={caption}\n styleContext={styleContext}\n />\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { ImportantLeadProps } from './ImportantLead.types'\n\nimport makeClassName from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport { RenderBlocks } from '../RenderBlocks'\n\nimport styles from './ImportantLead.module.css'\n\nexport const ImportantLead: React.FC<ImportantLeadProps> = ({\n block: { only_on: onlyOn, data },\n styleContext\n}) => {\n let classNames: (string[] | string | boolean)[][] = [\n [styles.root, true],\n [styles[onlyOn], !!onlyOn]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"important-lead\" className={makeClassName(classNames)}>\n {data.map(item => (\n <RenderBlocks\n key={item.id}\n block={item}\n styleContext=\"isInImportantLead\"\n />\n ))}\n </div>\n )\n}\n","import React, { useState, useRef } from 'react'\nimport { SpoilerProps } from './Spoiler.types'\n\nimport makeClassName from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport postMessage from '../utils/postMessage'\n\nimport { RenderBlocks } from '../RenderBlocks'\nimport { Button } from '../Button'\nimport { SvgSymbol } from '../SvgSymbol'\n\nimport styles from './Spoiler.module.css'\n\nexport const Spoiler: React.FC<SpoilerProps> = ({\n block: {\n display,\n button,\n only_on: onlyOn,\n btn_title: buttonTitle,\n title,\n blocks\n },\n styleContext\n}) => {\n const [spoiled, setSpoiled] = useState(false)\n const ref = useRef(null)\n\n const handleButtonClick = (): void => {\n setSpoiled(!spoiled)\n\n if (spoiled) {\n postMessage('closeSpoiler', 'click')\n const rect = ref.current.getBoundingClientRect()\n if (rect.top < 0) {\n ref.current.scrollIntoView({ behavior: 'smooth' })\n }\n } else {\n postMessage('openSpoiler', 'click')\n }\n }\n\n let classNames: (string[] | string | boolean)[][] = [\n [styles.root, true],\n [styles[onlyOn], !!onlyOn],\n [styles[display], !!display && styles[display]],\n [[styles.spoiled], !!spoiled]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n const buttonCollapse = button ? button.collapse : 'Свернуть'\n const buttonExpande = button ? button.expand : buttonTitle\n\n return (\n <div ref={ref} className={makeClassName(classNames)} data-testid=\"spoiler\">\n <div className={styles.header}>{title && <h3>{title}</h3>}</div>\n <div className={styles.body}>\n {blocks.map(item => (\n <RenderBlocks\n key={item.id}\n block={item}\n styleContext={styleContext}\n />\n ))}\n </div>\n <div className={styles.footer}>\n <Button\n size=\"default\"\n theme=\"gray\"\n onClick={(): void => handleButtonClick()}\n styleContext=\"isInSpoiler\"\n >\n {spoiled ? buttonCollapse : buttonExpande}\n <SvgSymbol icon=\"arrow\" />\n </Button>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { DropdownProps } from './Dropdown.types'\nimport makeClassName from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './Dropdown.module.css'\n\nexport const Menu: React.FC<DropdownProps> = ({ children }) => {\n return (\n <div data-testid=\"dropdown\" className={styles.menu}>\n {children}\n </div>\n )\n}\n\nexport const Dropdown: React.FC<DropdownProps> = ({\n children,\n active,\n styleContext\n}) => {\n let classNames: (string[] | string | boolean)[][] = [\n [styles.root, true],\n [styles.active, !!active && !!styles.active]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"dropdown\" className={makeClassName(classNames)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { MaterialTitleProps } from './MaterialTitle.types'\n\nimport styles from './MaterialTitle.module.css'\n\nexport const Primary: React.FC<MaterialTitleProps> = ({ children }) => {\n return <span className={styles.primary}>{children}</span>\n}\n\nexport const Secondary: React.FC<MaterialTitleProps> = ({ children }) => {\n return <span className={styles.secondary}>{children}</span>\n}\n\nexport const MaterialTitle: React.FC<MaterialTitleProps> = ({ children }) => {\n return (\n <h1 className={styles.root} data-testid=\"material-title\">\n {children}\n </h1>\n )\n}\n","import React from 'react'\nimport { RawHtmlBlockProps } from './RawHtmlBlock.types'\n\nimport { ImportantLead } from '../ImportantLead'\nimport { RenderBlocks } from '../RenderBlocks'\nimport { Spoiler } from '../Spoiler'\nimport { HalfBlock } from '../HalfBlock'\nimport { Cover } from '../Cover'\n\nimport { BlockProvider } from '../utils/BlockContext'\n\nexport const RawHtmlBlock: React.FC<RawHtmlBlockProps> = ({\n block,\n styleContext,\n isRead,\n isListened,\n isInBookmarks,\n bookmarkAction,\n lightBox\n}) => {\n const context = {\n lightBox: lightBox || null\n }\n\n switch (block.type) {\n case 'important_lead': {\n return <ImportantLead block={block} styleContext={styleContext} />\n }\n\n case 'spoiler': {\n return (\n <BlockProvider value={context}>\n <Spoiler block={block} styleContext={styleContext} />\n </BlockProvider>\n )\n }\n\n case 'cover': {\n return <Cover block={block} styleContext={styleContext} />\n }\n\n case 'half': {\n return <HalfBlock block={block} styleContext={styleContext} />\n }\n\n default: {\n return (\n <BlockProvider value={context}>\n <RenderBlocks\n block={block}\n styleContext={styleContext}\n isRead={isRead}\n isListened={isListened}\n isInBookmarks={isInBookmarks}\n bookmarkAction={bookmarkAction}\n />\n </BlockProvider>\n )\n }\n }\n}\n","import React from 'react'\nimport { SwitcherProps } from './Switcher.types'\nimport makeClassName from '../utils/makeClassName'\n\nimport styles from './Switcher.module.css'\n\nexport const Switcher: React.FC<SwitcherProps> = ({\n enabled,\n children,\n childrenPosition = 'left',\n onChange,\n styleContext,\n theme = 'light'\n}) => (\n <label\n data-testid=\"switcher\"\n className={makeClassName([\n [styles.root, true],\n [styles[theme], !!styles[theme]],\n [styles[styleContext], !!styles[styleContext]]\n ])}\n >\n {children && childrenPosition === 'left' && (\n <div\n className={makeClassName([\n [styles.children, true],\n [styles.left, true]\n ])}\n >\n {children}\n </div>\n )}\n <input\n className={styles.input}\n type=\"checkbox\"\n checked={enabled}\n onChange={onChange}\n />\n <span className={styles.control}>\n <span className={styles.knob} />\n </span>\n {children && childrenPosition === 'right' && (\n <div\n className={makeClassName([\n [styles.children, true],\n [styles.right, true]\n ])}\n >\n {children}\n </div>\n )}\n </label>\n)\n","import React, { Children } from 'react'\nimport { ToolbarProps } from './Toolbar.types'\n\nimport makeStyleContext from '../utils/makeStyleContext'\nimport makeClassName from '../utils/makeClassName'\n\nimport styles from './Toolbar.module.css'\n\nexport const Toolbar: React.FC<ToolbarProps> = ({ children, styleContext }) => {\n let classNames: (string[] | string | boolean)[][] = [[styles.root, true]]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n const renderItems = (): JSX.Element[] =>\n Children.map(children, (item: JSX.Element, index) => (\n <li className={styles.item} key={`${index}-${item.props.type}`}>\n {React.cloneElement(item)}\n </li>\n ))\n\n return (\n <div data-testid=\"toolbar\" className={makeClassName(classNames)}>\n <ul className={styles.list}>{renderItems()}</ul>\n </div>\n )\n}\n","import React from 'react'\nimport { ToolbarButtonProps } from './ToolbarButton.types'\n\nimport { SvgSymbol } from '../SvgSymbol/'\nimport makeClassName from '../utils/makeClassName'\n\nimport styles from './ToolbarButton.module.css'\n\nexport const ToolbarButton: React.FC<ToolbarButtonProps> = ({\n children,\n type,\n theme,\n isActive,\n onClick\n}) => {\n const classNames: (string[] | string | boolean)[][] = [\n [styles.root, true],\n [styles[type], !!styles[type]],\n [styles[theme], !!styles[theme] && !!theme],\n [styles.isActive, !!isActive]\n ]\n\n return (\n <button\n data-testid=\"toolbar-button\"\n className={makeClassName(classNames)}\n type=\"button\"\n onClick={(): void => onClick(type)}\n >\n <SvgSymbol size=\"medium\" icon={type} styleContext=\"isInToolbar\" />\n {children && <span className={styles.text}>{children}</span>}\n </button>\n )\n}\n"],"names":["makeClassName","list","filter","map","join","Loader","React","width","height","viewBox","xmlns","d","opacity","fillRule","attributeName","type","from","to","dur","repeatCount","Button","theme","size","state","styleContext","disabled","onClick","children","className","styles","root","loader","icons","meduzaLogo","content","menu","fb","tw","vk","ok","tg","meduzaSymbol","backward","forward","download","play","pause","speedHalf","speedOne","speedOneHalf","speedTwo","podcastBookmark","reaction","cross","link","search","card","podcast","arrow","brent","user","bookmark","receipt","read","listened","SvgSymbol","icon","data","xmlnsXlink","dangerouslySetInnerHTML","__html","BlockContext","createContext","lightBox","BlockProvider","Provider","window","innerWidth","document","documentElement","clientWidth","body","innerHeight","clientHeight","postMessage","element","action","target","top","msg","POST_MESSAGE_PREFIX","JSON","stringify","imageBreakpoints","imageConditionalKeys","xs","superFull","full","narrow","Lazy","useInView","threshold","ref","inView","entry","useState","visible","setVisible","useEffect","boundingClientRect","y","RenderPicture","source","fallbackSource","optimized","alt","display","fallback","setFallback","HTMLPictureElement","s","keys","replace","str","toUpperCase","media","srcSet","w325","original","key","breakpoint","Fragment","src","Image","lazy","fullscreen","ratio","useContext","console","log","handleClick","viewportSize","show","pictureStyles","paddingBottom","blockStyles","maxWidth","style","onKeyPress","role","tabIndex","DotsOnImage","block","credit","dots","title","id","popover","setPopover","dot","position","left","x","backgroundColor","color","shouldShow","handleDotClick","svg_string","number","image","dismiss","popoverTitle","popoverBody","makeStyleContext","classNames","context","Array","isArray","ctx","concat","Tag","correlation","onlyOn","MediaCaption","caption","Table","rows","options","columnsWidth","columns_widths","tableCredit","table_credit","colors","wrapper","table","tracks","row","i","cells","cell","j","header","fixedColumn","fixed_first_column","val","MaterialNote","item","BookmarkButton","isInBookmarks","control","Popover","onClose","handleClose","setTimeout","handleScroll","escFunction","event","addEventListener","removeEventListener","fill","overflow","transform","mask","Meta","hasSource","Timestamp","published","locale","timeFormat","preparedPublishedAt","publishedAt","dayjs","extend","relativeTime","fromNow","format","Error","DangerousHTML","tagName","TagName","html","useRef","canRenderHtml","setCanRenderHtml","replaceScriptElementsRecursive","useCallback","node","indexOf","childNodes","length","script","createElement","Math","random","toString","slice","innerHTML","attrs","attributes","setAttribute","name","value","parentElement","replaceChild","prepareAnchors","current","querySelectorAll","forEach","a","EmbedGif","gif","mp4Url","videoFrozen","setVideoFrozen","videoElem","handleVideoTouch","handleVideoError","video","dataset","viewportWidth","enableInlineVideo","figure","objectWrap","playsInline","muted","loop","autoPlay","preload","EmbedBlock","only_on","provider","cc","small","small_url","large","large_url","gifUrl","gif_url","mp4_url","isPopoverShown","setIsPopoverShown","isProportional","mobileFullwidth","renderCC","proportional","filteredContext","Object","startsWith","reduce","acc","push","object","gameEmbed","game_src","game_id","renderEmbed","IframeBlock","lang","rootEl","contentEl","scriptEl","range","createRange","setStart","textContent","appendChild","createContextualFragment","frame","querySelector","contentDocument","open","close","renderIframe","EmbedBlockContainer","wrap_with_iframe","QuoteBlock","CardTitle","index","text","ChapterBlock","subtitle","SimpleTitle","first","RichTitle","second","featured","SimpleBlock","ListBlock","RelatedBlock","related","items","layout","href","full_url","url","rel","second_title","SourceBlock","quote","origin","cite","GroupedBlock","maxHeight","min","normalizedBoxesWidth","sumWidth","sum","hasFigcaption","figcaption","MetaItem","hasBullets","bullets","MetaItemLive","DocumentItemsCount","one","two","five","n","i18n","ru","en","itemsCount","abs","MetaContainer","isRead","isListened","bookmarkAction","components","themeColor","isPodcast","isSlides","find","component","datetime","count","with_icon","label","RenderBlocks","Cover","blocks","cover","urls","mobileRatio","mobile_ratio","gradients","text_rgb","backgroundImage","bg_rgb","HalfBlock","main","footer","ImportantLead","Spoiler","button","buttonTitle","btn_title","spoiled","setSpoiled","buttonCollapse","collapse","buttonExpande","expand","getBoundingClientRect","scrollIntoView","behavior","active","enabled","childrenPosition","onChange","input","checked","knob","right","Children","props","cloneElement","isActive"],"mappings":"oVAAMA,EAAgB,SAACC,UACdA,EACJC,QAAO,2BACPC,KAAI,2BACJC,KAAK,MCFJC,EAAmB,kBACvBC,uBACEC,MAAM,OACNC,OAAO,OACPC,QAAQ,YACRC,MAAM,8BAENJ,yBACEA,wBACEK,EAAE,qKACFC,QAAQ,SAGZN,qBAAGO,SAAS,WACVP,oCACEQ,cAAc,YACdC,KAAK,SACLC,KAAK,UACLC,GAAG,YACHC,IAAI,SACJC,YAAY,eAEdb,wBAAMK,EAAE,0mBCjBDS,EAA0B,oBACrCC,MAAAA,aAAQ,aACRC,KAAAA,aAAO,gBACPC,MAAAA,aAAQ,kBACRC,aAAAA,aAAe,oBACfC,SAAAA,gBACAC,IAAAA,QACAC,IAAAA,gBAWErB,wCACc,SACZsB,UAAW5B,EAAc,CACvB,CAAC6B,EAAOC,MAAM,GACd,CAACD,EAAOP,KAASA,GACjB,CAACO,EAAOR,KAAUA,GAClB,CAACQ,EAAON,KAAUA,KAAWM,EAAON,IACpC,CAACM,EAAOL,KAAiBA,KAE3BC,SAAUA,EACVC,QAnBgB,YACdD,GAAaC,GAIjBA,KAeEX,KAAK,UAEM,cAAVQ,EACCjB,wBAAMsB,UAAWC,EAAOE,QACtBzB,gBAACD,SAGHsB,spDC3CKK,EAAQ,CACnBC,WAAY,CACV1B,MAAO,IACPC,OAAQ,IACR0B,QACE,86DAGJC,KAAM,CACJ5B,MAAO,GACPC,OAAQ,GACR0B,QACE,iKAGJE,GAAI,CACF7B,MAAO,GACPC,OAAQ,GACR0B,QACE,wTAGJG,GAAI,CACF9B,MAAO,GACPC,OAAQ,GACR0B,QACE,8ZAGJI,GAAI,CACF/B,MAAO,GACPC,OAAQ,GACR0B,QACE,gsBAGJK,GAAI,CACFhC,MAAO,EACPC,OAAQ,GACR0B,QACE,qkBAGJM,GAAI,CACFjC,MAAO,GACPC,OAAQ,GACR0B,QACE,2LAGJO,aAAc,CACZlC,MAAO,GACPC,OAAQ,GACR0B,QACE,0gBAGJQ,SAAU,CACRnC,MAAO,GACPC,OAAQ,GACR0B,QACE,wkBAGJS,QAAS,CACPpC,MAAO,GACPC,OAAQ,GACR0B,QACE,ikBAGJU,SAAU,CACRrC,MAAO,GACPC,OAAQ,GACR0B,QACE,odAGJW,KAAM,CACJtC,MAAO,GACPC,OAAQ,GACR0B,QACE,+IAGJY,MAAO,CACLvC,MAAO,GACPC,OAAQ,GACR0B,QACE,qOAGJa,UAAW,CACTxC,MAAO,GACPC,OAAQ,GACR0B,QACE,onBAGJc,SAAU,CACRzC,MAAO,GACPC,OAAQ,GACR0B,QACE,oZAGJe,aAAc,CACZ1C,MAAO,GACPC,OAAQ,GACR0B,QACE,gqBAGJgB,SAAU,CACR3C,MAAO,GACPC,OAAQ,GACR0B,QACE,ukBAGJiB,gBAAiB,CACf5C,MAAO,GACPC,OAAQ,GACR0B,QACE,qlBAGJkB,SAAU,CACR7C,MAAO,GACPC,OAAQ,GACR0B,QACE,qUAGJmB,MAAO,CACL9C,MAAO,GACPC,OAAQ,GACR0B,QACE,gMAGJoB,KAAM,CACJ/C,MAAO,GACPC,OAAQ,GACR0B,QACE,syBAGJqB,OAAQ,CACNhD,MAAO,GACPC,OAAQ,GACR0B,QACE,qPAGJsB,KAAM,CACJjD,MAAO,GACPC,OAAQ,GACR0B,QACE,qMAGJuB,QAAS,CACPlD,MAAO,GACPC,OAAQ,GACR0B,QACE,gKAGJwB,MAAO,CACLnD,MAAO,GACPC,OAAQ,GACR0B,QACE,6KAGJyB,MAAO,CACLpD,MAAO,EACPC,OAAQ,GACR0B,QACE,mYAGJ0B,KAAM,CACJrD,MAAO,GACPC,OAAQ,GACR0B,QACE,wQAGJ2B,SAAU,CACRtD,MAAO,GACPC,OAAQ,GACR0B,QACE,qIAGJ4B,QAAS,CACPvD,MAAO,GACPC,OAAQ,GACR0B,QACE,qOAGJ6B,KAAM,CACJxD,MAAO,GACPC,OAAQ,GACR0B,QACE,q7BAEJ8B,SAAU,CACRzD,MAAO,GACPC,OAAQ,GACR0B,QACE,+oBC/MO+B,EAAsC,gBACjDC,IAAAA,KACA5C,IAAAA,KACAE,IAAAA,aAEM2C,EAAOnC,EAAMkC,UAGjB5D,qCACc,aACZI,MAAM,6BACN0D,WAAW,+BACXxC,UAAW5B,EAAc,CACvB,CAAC6B,EAAOC,MAAM,GACd,CAACD,EAAOP,KAASO,EAAOP,IACxB,CAACO,EAAOqC,KAASrC,EAAOqC,IACxB,CAACrC,EAAOL,KAAiBK,EAAOL,MAElCjB,MAAO4D,EAAK5D,MACZC,OAAQ2D,EAAK3D,OACbC,eAAgB0D,EAAK5D,UAAS4D,EAAK3D,OACnC6D,wBAAyB,CAAEC,OAAQH,EAAKjC,6bC1BxCqC,EAAejE,EAAMkE,cAAc,CAAEC,SAAU,OAExCC,EAAgBH,EAAaI,4BCCN,CAClCpE,MACEqE,OAAOC,YACPC,SAASC,gBAAgBC,aACzBF,SAASG,KAAKD,YAChBxE,OACEoE,OAAOM,aACPJ,SAASC,gBAAgBI,cACzBL,SAASG,KAAKE,eCXZC,EAAc,SAACC,EAAiBC,OAC9BC,EAASX,OAAOY,IAEhBC,EAASC,aAAuBC,KAAKC,UAAU,CACnDP,QAAAA,EACAC,OAAAA,SAGoB,IAAXC,GACTA,EAAOH,YAAYK,EAAK,MCHfI,EAAmB,KACzB,qBACA,yBACA,yBACA,yBACA,2BACC,uBAGKC,EAAuB,CAClCC,GAAI,CAAC,KACLC,UAAW,CAAC,KAAM,IAAK,IAAK,KAC5BC,KAAM,CAAC,IAAK,IAAK,IAAK,aACb,CAAC,IAAK,IAAK,KACpBC,OAAQ,CAAC,IAAK,MCbHC,EAA4B,gBAAGxE,IAAAA,WACbyE,YAAU,CACrCC,YAFkDA,WAE1B,IADnBC,OAAKC,OAAQC,SAIUC,YAAS,GAAhCC,OAASC,cAEhBC,aAAU,WACJJ,GAASA,EAAMK,oBAAsBL,EAAMK,mBAAmBC,EAAI,GACpEH,GAAW,KAEZ,CAACH,IAEJI,aAAU,WACJL,GACFI,GAAW,KAEZ,CAACJ,IAGFjG,uBACEsB,UAAW5B,EAAc,CACvB,4BAAc,GACd,8BAAiB0G,KAEnBJ,IAAKA,gBACO,QAEXI,GAAW/E,IC/BLoF,EAAwC,gBACnDC,IAAAA,OACAC,IAAAA,eACAC,IAAAA,UACAC,IAAAA,IACAC,IAAAA,UAEgCX,YAAS,GAAlCY,OAAUC,OAEjBV,aAAU,WACRU,GAAa1C,OAAO2C,sBACnB,QCjBmBC,EDmBhBC,EACJ3B,GCpBoB0B,EDoBSJ,ECnB/BI,EAAEE,QAAQ,gBAAgB,SAAAC,UAAOA,EAAIC,cAAcF,QAAQ,IAAK,UDmBpB5B,iBAG1CxF,+BACG0G,GACC1G,0BAAQuH,MAAM,qBAAqBC,OAAWd,EAAO,WAGtDE,IAAcA,EAAUa,MACvBzH,0BAAQuH,MAAM,iBAAiBC,UAAWZ,EAAUc,WAGrDd,GACCO,EAAKtH,KAAI,SAAA8H,OACDC,EAAahB,MAAce,UAE5BC,EAKH5H,gBAACA,EAAM6H,UAASF,IAAKA,GACnB3H,0BACES,KAAK,aACL8G,MAAOhC,EAAiBoC,GACxBH,OAAWI,EAAW,mBAAkBA,EAAW,oBAGrD5H,0BACES,KAAK,YACL8G,MAAOhC,EAAiBoC,GACxBH,OAAWI,EAAW,cAAaA,EAAW,gBAd3C,QAoBb5H,uBACE8H,IACEf,EACIJ,EACA,qFAENE,IAAKA,MEhDAkB,EAA8B,gBACzClB,IAAAA,IACAC,IAAAA,QACAF,IAAAA,UACA3G,IAAAA,MACAC,IAAAA,OACAwG,IAAAA,OACAsB,IAAAA,KACAC,IAAAA,WACAC,IAAAA,MAEQ/D,EAAagE,aAAWlE,GAAxBE,SAERiE,QAAQC,IAAIF,aAAWlE,QAEjBqE,EAAc,iBACeC,IAG9B3B,IAAcA,EAAUc,WACxBvD,KAJKlE,OJ5BQ,OIiCyCgI,IAKzDnD,EAAY,mBAAoB,SAChCX,EAASqE,KAAK5B,EAAW3G,EAAOC,EAAQ2G,KAGpC4B,EAAgB,CACpBC,cAAkB,KAAOR,GAASjI,EAAQC,QAGtCyI,EAAc,CAClBC,SAAU3I,GAAS,IAAMA,EAAQ,QAI7B0G,EACHD,GAAUA,EAAO,IACjBE,EAAUa,MAAQb,EAAUa,KAAK,OAClCb,EAAUc,gBAGV1H,uBACEsB,UAAW5B,EAAc,CACvB,6BAAc,GACd,kCAAoBuI,KAEtBY,MAAOF,gBACK,SAEZ3I,uBACEsB,wCACAuH,MAAOJ,EACPrH,QAAS,kBAAYkH,KACrBQ,WAAY,kBAAYR,KACxBS,KAAK,SACLC,SAAU,GAEThB,EACChI,gCACEA,gBAAC6F,GAAKE,UAAW,KACf/F,gBAACyG,GACCE,eAAgBA,EAChBD,OAAQA,EACRE,UAAWA,EACXC,IAAKA,EACLC,QAASA,KAGb9G,gCACEA,uBAAK8H,IAAKnB,EAAgBE,IAAKA,MAInC7G,gBAACyG,GACCE,eAAgBA,EAChBD,OAAQA,EACRE,UAAWA,EACXC,IAAKA,EACLC,QAASA,mOCzFRmC,EAA0C,oBACrDC,MAAStC,IAAAA,UAAW3G,IAAAA,MAAOC,IAAAA,OAAQiJ,IAAAA,OAAQrC,IAAAA,QAASsC,IAAAA,OAEtBjD,WAAsB,CAClDkD,MAAO,KACP1E,KAAM,KACN6D,MAAM,EACNc,GAAI,OAJCC,OAASC,cAmBdxJ,qCAAiB,gBAAgBsB,UAAWC,EAAOC,MACjDxB,uBAAKsB,UAAWC,EAAO6H,MACpBA,EAAKvJ,KAAI,SAAA4J,UACRzJ,0BACEsB,UAAWC,EAAOkI,IAClBhJ,KAAK,SACLkH,IAAK8B,EAAIH,GACTT,MAAO,CACL3D,IAAQuE,EAAIC,SAASlD,MACrBmD,KAASF,EAAIC,SAASE,MACtBC,gBAAiBJ,EAAI7F,KAAKkG,OAE5B1I,QAAS,kBAxBI,SAACqI,OAChBM,EAAaN,EAAIH,KAAOC,EAAQD,GAEtCE,EAAW,CACTH,MAAOI,EAAIJ,MACX1E,KAAM8E,EAAI9E,KACV6D,KAAMuB,EACNT,GAAIS,EAAaN,EAAIH,GAAK,OAiBCU,CAAeP,KAEjB,QAAlBA,EAAI7F,KAAKnD,MACRT,uBACEsB,UAAWC,EAAOqC,KAClBG,wBAAyB,CAAEC,OAAQyF,EAAI7F,KAAKqG,cAG7B,WAAlBR,EAAI7F,KAAKnD,MAAqBgJ,EAAI7F,KAAKsG,YAI9ClK,uBAAKsB,UAAWC,EAAO4I,OACrBnK,gBAAC+H,GACCnB,UAAWA,EACX3G,MAAOA,EACPC,OAAQA,EACR2G,IAAKsC,EACLrC,QAASA,KAIZyC,EAAQf,MACPxI,uBAAKsB,UAAWC,EAAOgI,SACrBvJ,0BACEsB,UAAWC,EAAO6I,QAClB3J,KAAK,SACLW,QAAS,kBAAYoI,EAAW,CAAEhB,MAAM,MAExCxI,gBAAC2D,GAAUC,KAAK,QAAQ5C,KAAK,WAE/BhB,uBAAKsB,UAAWC,EAAO8I,cAAed,EAAQF,OAC9CrJ,uBACEsB,UAAWC,EAAO+I,YAClBvG,wBAAyB,CAAEC,OAAQuF,EAAQ5E,WC5EjD4F,EAAmB,SACvBC,EACAtJ,EACAK,OAEMkJ,EAAUC,MAAMC,QAAQzJ,GAC1BA,EAAatB,QAAO,SAAAgL,UAAOrJ,EAAOqJ,MAAM/K,KAAI,SAAA+K,SAAO,CAAC,CAACrJ,EAAOqJ,KAAO,MACnE,CAAC,CAACrJ,EAAOL,KAAiBA,KAAkBK,EAAOL,YAEhDsJ,EAAWK,OAAOJ,0xBCFdK,EAA0B,gBACrCzJ,IAAAA,aACAL,KAAAA,aAAO,cACPD,MAAAA,aAAQ,SACRG,IAAAA,aACA6J,IAAAA,YACAC,IAAAA,OAEIR,EAAgD,CAClD,CAACjJ,EAAOC,MAAM,GACd,CAACD,EAAOP,KAASA,KAAUO,EAAOP,IAClC,CAACO,EAAOR,KAAUA,KAAWQ,EAAOR,IACpC,CAACQ,EAAOyJ,KAAWA,KAAYzJ,EAAOyJ,IACtC,CAACzJ,EAAOwJ,KAAgBA,KAAiBxJ,EAAOwJ,YAG9C7J,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,IAIxDvB,qCAAiB,MAAMsB,UAAW5B,EAAc8K,IAC7CnJ,iTCtBM4J,EAA4C,gBACvD9B,IAAAA,OACA+B,IAAAA,QACAhK,IAAAA,aAEIsJ,EAAgD,CAAC,CAACjJ,EAAOC,MAAM,WAE/DN,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,IAIxDvB,qCAAiB,gBAAgBsB,UAAW5B,EAAc8K,IACvDU,GACClL,uBACEsB,UAAWC,EAAO2J,QAClBnH,wBAAyB,CAAEC,OAAQkH,KAGtC/B,GACCnJ,uBACEsB,UAAWC,EAAO4H,OAClBpF,wBAAyB,CAAEC,OAAQmF,yyBCpBhCgC,EAA8B,gBACzCjK,IAAAA,iBACAgI,MACEkC,IAAAA,KACAC,IAAAA,QACAvE,IAAAA,QACgBwE,IAAhBC,eACcC,IAAdC,aAGIC,EAAS,WACF,kBACA,iBACA,iBACA,iBACA,mBACA,mBACA,kBACA,UAGTlB,EAAgD,CAClD,CAACjJ,EAAOC,MAAM,GACd,CAACD,EAAOuF,KAAYA,KAAavF,EAAOuF,YAGtC5F,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,IAIxDvB,qCAAiB,QAAQsB,UAAW5B,EAAc8K,IAChDxK,uBAAKsB,UAAWC,EAAOoK,SACrB3L,uBAAKsB,UAAWC,EAAOqK,OACrB5L,uBAAKsB,UAAWC,EAAOsK,QACpBT,EAAKvL,KAAI,SAACiM,EAAKC,UAEZ/L,uBAAK2H,IAAKmE,EAAInE,IAAKrG,UAAWC,EAAOuK,KAClCA,EAAIE,MAAMnM,KAAI,SAACoM,EAAMC,UACpBlM,uBACE2H,IAAKsE,EAAKtE,IACVrG,UAAW5B,EAAc,CACvB,CAAC6B,EAAO0K,MAAM,GACd,CAAC1K,EAAO4K,OAAQd,EAAQc,QAAgB,IAANJ,GAClC,CAACxK,EAAOmK,EAAOO,EAAKnC,SAAS,GAC7B,CAACvI,EAAO+J,EAAaY,KAAK,GAC1B,CACE3K,EAAO6K,YACPf,EAAQgB,oBAA4B,IAANH,KAGlCnI,wBAAyB,CAAEC,OAAQiI,EAAKK,iBAUvDd,GACCxL,gBAACiL,GAAa9B,OAAQqC,EAAatK,aAAcA,scChE5CqL,EAA4C,gBAC9C1I,IAATqF,MAASrF,KACT3C,IAAAA,aAEIsJ,EAAgD,CAAC,CAACjJ,EAAOC,MAAM,WAE/DN,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,IAIxDvB,qCAAiB,gBAAgBsB,UAAW5B,EAAc8K,IACvD3G,GACCA,EAAKhE,KAAI,SAAA2M,UACPxM,qBACEsB,UAAWC,EAAOiL,EAAK/L,MACvBkH,IAAK6E,EAAKlD,GACVvF,wBAAyB,CAAEC,OAAQwI,EAAK3I,ySCfvC4I,EAAgD,gBAC3DvL,IAAAA,aACAH,IAAAA,MAEAK,IAAAA,QAEIoJ,EAAgD,CAClD,CAACjJ,EAAOC,MAAM,GACd,CAACD,EAAOmL,gBALVA,eAME,CAACnL,EAAOR,KAAUA,KAAWQ,EAAOR,YAGlCG,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,IAIxDvB,qCAAiB,kBAAkBsB,UAAW5B,EAAc8K,IAC1DxK,0BACEsB,UAAWC,EAAOoL,QAClBvL,QAAS,kBAAYA,KACrBX,KAAK,UAELT,gBAAC2D,GAAUC,KAAK,WAAW5C,KAAK,qeC1B3B4L,EAAkC,gBAAGvL,IAAAA,SAAUwL,IAAAA,UAC5B1G,YAAS,GAAhCC,OAASC,OAEVyG,EAAc,WAClBzG,GAAW,GACX0G,WAAWF,EAAS,MAGhBG,EAAe,WACnBF,KAGIG,EAAc,SAACC,GACD,WAAdA,EAAMvF,KACRmF,YAIJxG,aAAU,kBACRhC,OAAO6I,iBAAiB,UAAWF,GAAa,GAChD3I,OAAO6I,iBAAiB,SAAUH,GAAc,GAEzC,WACL1I,OAAO8I,oBAAoB,UAAWH,GAAa,GACnD3I,OAAO8I,oBAAoB,SAAUJ,GAAc,MAEpD,CAAC5G,IAIFpG,qCACc,UACZsB,UAAW5B,EAAc,CACvB,+BAAc,GACd,iCAAiB0G,MAGnBpG,uBAAKsB,0CAA2BF,QAAS,kBAAY0L,OAErD9M,uBAAKsB,6CACHtB,0BACES,KAAK,SACLa,0CACAF,QAAS,kBAAY0L,kBACV,YAEb9M,uBAAKC,MAAM,OAAOqB,8CAChBtB,4BACEA,wBAAMsJ,GAAG,SAASM,EAAE,IAAIpD,EAAE,IAAIvG,MAAM,OAAOC,OAAO,QAChDF,wBAAMqN,KAAK,QAAQ7G,EAAE,IAAIvG,MAAM,OAAOC,OAAO,OAAO0J,EAAE,MACtD5J,uBAAK4J,EAAE,MAAM0D,SAAS,WACpBtN,qBAAGuN,UAAU,oBACXvN,wBAAMK,EAAE,6LAKhBL,wBACEqN,KAAK,UACL/D,GAAG,YACHkE,KAAK,eACL5D,EAAE,IACFpD,EAAE,IACFvG,MAAM,OACNC,OAAO,UAGVmB,+oBCjEIoM,EAA4B,gBAEvC1M,IAAAA,MACAM,IAAAA,SACA2J,IAAAA,OACA9J,IAAAA,aAEIsJ,EAAgD,CAClD,CAACjJ,EAAOC,MAAM,GACd,CAACD,EAAOR,KAAUA,KAAWQ,EAAOR,IACpC,CAACQ,EAAOyJ,KAAWA,GACnB,CAACzJ,EAAOmM,YAVVA,mBAaIxM,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,IAIxDvB,qCAAiB,OAAOsB,UAAW5B,EAAc8K,IAC9CnJ,IClBMsM,EAAsC,gBAK7CC,MAHJC,OAAAA,aAAS,OACTpN,IAAAA,KAGMqN,EACO,OAAXD,EAAkB,qBAAuB,uBAErCE,EAAoC,MAR1CC,eAUAC,EAAMJ,OAAOA,GACbI,EAAMC,OAAOC,GAEA,YAAT1N,EACFmN,EAAYK,EAAMF,GAAqBK,eAClC,GAAa,WAAT3N,EACTmN,EAAYK,EAAMF,GAAqBM,OAAO,aACzC,CAAA,GAAa,SAAT5N,QAGH,IAAI6N,MAAM,qBAFhBV,EAAYK,EAAMF,GAAqBM,OAAOP,UAM9C9N,sCAAkB,YAAYsB,0CAC3BsM,IC5BDW,EAA8C,oBAClDjN,UAAAA,aAAY,SACZkN,QAASC,aAAU,QACnBC,IAAAA,KAEM3J,EAAU4J,SAA2B,QACDxI,YAAS,GAA5CyI,OAAeC,OAEtBvI,aAAU,WACRuI,GAAiB,KAChB,QAEGC,EAAiCC,eAAY,SAAAC,MAE9B,WAAjBA,EAAKR,SACHQ,EAAK1F,IAAqC,IAA/B0F,EAAK1F,GAAG2F,QAAQ,mBAmBzBlD,EAAI,EACF1K,EAAW2N,EAAKE,WAEfnD,EAAI1K,EAAS8N,QAClBL,EAA+BzN,EAAS0K,IACxCA,GAAK,MAvBP,KACMqD,EAAS5K,SAAS6K,cAAc,UAEtCD,EAAO9F,aAAegG,KAAKC,SACxBC,SAAS,IACTC,MAAM,GACTL,EAAOM,UAAYV,EAAKU,kBAElBC,EAAQX,EAAKY,WAEV7D,EAAI,EAAGA,EAAI4D,EAAMR,OAAQpD,GAAK,EAAG,OAChB4D,EAAM5D,GAE9BqD,EAAOS,eAFCC,OAAMC,OAKhBf,EAAKgB,cAAcC,aAAab,EAAQJ,MAUzC,IAEGkB,EAAiBnB,eAAY,WACjBrE,MAAMhK,KAAKqE,EAAQoL,QAAQC,iBAAiB,MAEpDC,SAAQ,SAAAC,GACdA,EAAET,aAAa,SAAU,eAE1B,WAEHvJ,aAAU,WACJsI,GAAiBF,EAAKO,QAAQ,WAAa,GAAKlK,EAAQoL,UAC1DpL,EAAQoL,QAAQT,UAAYhB,EAC5BI,EAA+B/J,EAAQoL,SACvCD,OAED,CAACtB,EAAe7J,EAAS2J,IAG1B1O,gBAACyO,GAECzI,IAAKjB,EACLzD,UAAWA,EACXyC,wBAAyB,CAAEC,OAAQ0K,siCC9D5B6B,EAAoC,gBAAGC,IAAAA,IAAKC,IAAAA,OAAQ5H,IAAAA,QACzB1C,YAAS,GAAxCuK,OAAaC,OACdC,EAAYjC,SAAO,MAEnBkC,EAAmB,WACvBD,EAAUT,QAAQ5N,OAClBoO,GAAe,IAGXG,EAAmB,eACjBC,EAAQH,EAAUT,QAExBY,EAAMlB,aAAa,SAAUkB,EAAMC,QAAQR,KAE3CG,GAAe,WAGjBrK,aAAU,eACFyK,EAAQH,EAAUT,QACTc,EAAkB1I,IAAzBtI,aAERiR,EAAkBH,GAEdE,GhBjCE,KgBkCJF,EAAMlB,aAAa,YAAY,GAC/BkB,EAAMxO,SAENoO,GAAe,GACfI,EAAMvO,QACNuO,EAAM5D,iBAAiB,aAAc0D,IAGvCE,EAAM5D,iBAAiB,QAAS2D,GAEzB,WACLC,EAAM3D,oBAAoB,aAAcyD,GACxCE,EAAM3D,oBAAoB,QAAS0D,MAEpC,IAGD9Q,uBAAKsB,UAAWC,EAAO4P,QACrBnR,uBACEsB,UAAWC,EAAO6P,WAClBvI,MAAOA,gBACM6H,GAEb1Q,yBACEqR,eACAC,SACAC,QACAC,YACAC,QAAQ,sBACEjB,EACVxK,IAAK4K,GAEL5Q,0BAAQ8H,wBAAyB2I,EAAUhQ,KAAK,kBCjD7CiR,EAAwC,gBACnDxI,IAAAA,UACAA,MACErF,IAAAA,SACAA,KACE6K,IAAAA,KACA5H,IAAAA,QACSkE,IAAT2G,QACAC,IAAAA,SACAC,IAAAA,GACAjL,IAAAA,UACWkL,IAAXC,UACWC,IAAXC,UACSC,IAATC,QACS1B,IAAT2B,QAGJlR,IAAAA,aACAG,IAAAA,WAE4C8E,YAAS,GAA9CkM,OAAgBC,OACjBzJ,EAA6B,GAC7B0J,EAAiBrJ,EAAMrF,KAAK3D,QAAUgJ,EAAMrF,KAAK5D,MAUjDuS,EARqB,CACzB,UACA,QACA,QACA,OACA,kBAImBvD,QAAQ2C,IAA4B,kBAAf1I,EAAMzI,KAE1CgS,EAAW,SAAChI,UAChBzK,gBAACiL,GACC9B,OAAQtF,EAAKsF,OACb+B,QAASrH,EAAKqH,QACdhK,aAAcuJ,GAAWvJ,KA0DzBqR,IACF1J,EAAMH,cAAoBQ,EAAMrF,KAAK3D,OAASgJ,EAAMrF,KAAK5D,MAAS,QAClE4I,EAAM3I,OAAS,OAGbsK,EAAgD,CAClD,CAACjJ,EAAOC,MAAM,GACd,CAACD,EAAOsQ,GAAIA,GACZ,CAACtQ,EAAOuF,KAAYA,GAAWvF,EAAOuF,IACtC,CAACvF,EAAOqQ,KAAaA,KAAcrQ,EAAOqQ,IAC1C,CAACrQ,EAAOyJ,KAAWA,GAAUzJ,EAAOyJ,IACpC,CAACzJ,EAAOiR,gBAAiBA,GACzB,CAACjR,EAAOmR,aAAcH,OAOpBrR,EAAc,KACVyR,EAAkBC,OAAOzL,KAAKjG,GACjCtB,QAAO,SAAA+H,UAAOA,EAAIkL,WAAW,SAAWtR,EAAOoG,MAC/CmL,QAAO,SAACC,EAAKpL,UACZoL,EAAIC,KAAK,CAACzR,EAAOoG,IAAM,IAEhBoL,IACN,IACLvI,EAAaD,EAAiBC,EAAYmI,EAAiBpR,UAI3DvB,0BAAQsB,UAAW5B,EAAc8K,IAC9BnJ,GACCrB,uBAAKsB,UAAWC,EAAO0R,QACrBjT,uBAAKsB,UAAWC,EAAOoK,QAAS9C,MAAOA,GACrC7I,uBAAKsB,UAAWC,EAAO6P,YAAa/P,MAKxCA,GA9Fc,SAACwH,UACXK,EAAMzI,UACP,aACIT,gBAACuQ,GAASC,IAAK0B,EAAQzB,OAAQA,EAAQ5H,MAAOA,QAElD,eAED7I,uBAAKsB,UAAWC,EAAO4P,SACnBW,GAASlL,IACT5G,gBAAC+H,GACCE,WAAYiB,EAAMrF,KAAKoE,WACvBvB,QAASE,GAAa,CAACkL,EAAOE,GAC9BpL,UAAWsC,EAAMrF,KAAK+C,UACtB3G,MAAOiJ,EAAMrF,KAAK5D,MAClBC,OAAQgJ,EAAMrF,KAAK3D,OACnB2G,IAAKqC,EAAMrF,KAAKqH,QAChBpE,QAASoC,EAAMrF,KAAKiD,QACpBkB,KAAMkB,EAAMrF,KAAKmE,YAMtB,oBAEDhI,uBAAKsB,UAAWC,EAAO2R,WACrBlT,0BACE8H,IAAKoB,EAAMrF,KAAKsP,SAChB7J,GAAIJ,EAAMrF,KAAKuP,QACf/J,MAAM,oBAKT,uBAEDrJ,uBAAKsB,UAAWC,EAAO4P,QACrBnR,gBAACiJ,GAAYC,MAAOrF,oBAOtB7D,uBAAKsB,UAAWC,EAAO0R,QACrBjT,uBAAKsB,UAAWC,EAAOoK,QAAS9C,MAAOA,GACrC7I,gBAACuO,GAAcjN,UAAWC,EAAO6P,WAAY1C,KAAMA,OAgD7C2E,CAAYxK,GAElB,YAAPgJ,GAAoB7R,kCAAayS,KAE1B,WAAPZ,GACC7R,0BACEsB,UAAWC,EAAOoL,QAClBlM,KAAK,sBACM,OACXW,QAAS,WACPkR,GAAmBD,MAKjB,WAAPR,GAAmBQ,GAClBrS,gBAAC4M,GACCC,QAAS,WACPyF,GAAkB,KAGnBG,EAAS,kBC3KPa,EAAyC,gBACpDpK,IAAAA,MACSI,IAATJ,MAASI,GACTpI,IAAAA,iBACAqS,KAAAA,aAAO,OAEDxO,EAAU4J,SAAO,aA4DvBrI,aAAU,YA1DW,eACbkN,EAAShP,SAAS6K,cAAc,OAChCoE,EAAYjP,SAAS6K,cAAc,OACnCqE,EAAWlP,SAAS6K,cAAc,UAClCxG,EAAQrE,SAAS6K,cAAc,SAC/BsE,EAAQnP,SAASoP,cAEvBD,EAAME,SAASJ,EAAW,GAC1BA,EAAU5D,aAAa,KAAM,WAC7B6D,EAASI,2uBAmBkB5K,EAAMI,4PAWjCT,EAAMpI,KAAO,WACboI,EAAM6G,UACW,eAAfxG,EAAMzI,KACF,8DACA,sHAENgT,EAAUM,YAAYJ,EAAMK,yBAAyB9K,EAAMrF,KAAK6K,OAChE8E,EAAOO,YAAYL,GACnBF,EAAOO,YAAYN,GACnBA,EAAUM,YAAYlL,OAEhBoL,EAAQlP,EAAQoL,QAAQ+D,cAAc,UAAUC,gBAEtDF,EAAMG,OACNH,EAAMI,QACNJ,EAAMxP,gBAAgBoL,aAAa,OAAQ0D,GAC3CU,EAAMtP,KAAKoP,YAAYP,GAIvBc,KACC,IAGDtU,gBAAC0R,GAAWxI,MAAOA,EAAOhI,aAAcA,GACtClB,uBACEgG,IAAKjB,EACLhB,wBAAyB,CACvBC,qBAAsBsF,mDC1EnBiL,EAAiD,gBAC5DrL,IAAAA,MACAhI,IAAAA,oBAGIgI,EAAMrF,KAAK2Q,iBACNxU,gBAACsT,GAAYpK,MAAOA,EAAOhI,aAAcA,EAAcqS,OAHhEA,OAKOvT,gBAAC0R,GAAWxI,MAAOA,EAAOhI,aAAcA,uFCNpCuT,EAAwC,gBAC1C5Q,IAATqF,MAASrF,KACT3C,IAAAA,aAEIsJ,EAAgD,CAAC,CAACjJ,EAAOC,MAAM,WAE/DN,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,IAIxDvB,qCAAiB,cAAcsB,UAAW5B,EAAc8K,IACtDxK,qBAAG+D,wBAAyB,CAAEC,OAAQH,6MCd/B6Q,EAAsC,oBACjDxL,MACErF,KAAiBmH,IAAT2G,QAAiBgD,IAAAA,MAAOC,IAAAA,KAElC1T,IAAAA,oBAGElB,qCACc,aACZsB,UAAW5B,EAAc,CACvB,CAAC6B,EAAOC,MAAM,GACd,CAACD,EAAOyJ,KAAWA,GACnB,CAACzJ,EAAOL,KAAiBA,KAAkBK,EAAOL,OAGpDlB,uBAAKsB,UAAWC,EAAOoT,OAAQA,GAC/B3U,sBAAIsB,UAAWC,EAAO8H,OAAQuL,uLCdvBC,GAA4C,gBACvD3L,IAAAA,MACkB8B,IAAlB9B,MAASyI,QACTzQ,IAAAA,oBAGElB,qCACc,gBACZsB,UAAW5B,EAAc,CACvB,CAAC6B,EAAOC,MAAM,GACd,CAACD,EAAOyJ,KAAWA,MAGrBhL,gBAACuO,GACCjN,UAAW5B,EAAc,CACvB,CAAC6B,EAAOuT,UAAU,GAClB,CAACvT,EAAOL,KAAiBA,KAAkBK,EAAOL,MAEpDwN,KAAMxF,EAAMrF,2fCnBPkR,GAA0C,oBACrD7L,MACU8L,IAARnR,KAAQmR,MAGV9T,IAAAA,aAEIsJ,EAAgD,CAClD,CAACjJ,GAAOC,MAAM,GACd,CAACD,KANDoQ,UAMiB,WAGfzQ,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,KAIxDvB,qCAAiB,eAAesB,UAAW5B,EAAc8K,IACtDwK,yRCjBMC,GAAsC,oBACjD/L,UAEErF,KAAkBmR,IAAAA,MAAOE,IAAAA,OAE3BhU,IAAAA,aAEIsJ,EAAgD,CAClD,CAACjJ,GAAOC,MAAM,GACd,CAACD,KAPDoQ,UAOiB,GACjB,CAACpQ,GAAO4T,aAPAA,kBAUNjU,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,KAIxDvB,oCAAgB,aAAasB,UAAW5B,EAAc8K,IACnDwK,EACAE,GAAUlV,gCAAQkV,0tBCnBZE,GAA0C,gBAIjD5G,MAHJtF,MAASrF,IAAAA,KAAMpD,IAAAA,KACfS,IAAAA,aAIIsJ,EAAgD,CAClD,CAACjJ,GAAOd,KAASA,KAAUc,GAAOd,IAClC,CAACc,KAPkBoQ,UAOF,WAGfzQ,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,KAGlDd,OACD,gBACA,WACA,mBACA,cACH+N,EAAU,cAGP,UACHA,EAAU,oBAIVA,EAAU/N,SAGZT,gBAACuO,GACCjN,UAAW5B,EAAc8K,GACzBkE,KAAM7K,GAAQ,GACd2K,QAASA,0UClCF6G,GAAsC,oBACjDnM,MAASzI,IAAAA,KAAMoD,IAAAA,KACf3C,IAAAA,aAEMuN,EAAUhO,EAEZ+J,EAAgD,CAClD,CAACjJ,GAAOC,MAAM,GACd,CAACD,KAPkBoQ,UAOF,GACjB,CAACpQ,GAAOd,KAASA,KAAUc,GAAOd,YAGhCS,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,KAIxDvB,gBAACyO,GAAQnN,UAAW5B,EAAc8K,IAC/B3G,EAAKhE,KAAI,SAAC2M,EAAMmI,UACf3U,gBAACuO,GAAc5G,IAAKgN,EAAOjG,KAAMlC,EAAMgC,QAAQ,2cCpB1C8G,GAA4C,oBACvDpM,UACErF,KAAQwF,IAAAA,MAAOkM,IAAAA,QAGjBrU,IAAAA,aAEIsJ,EAAgD,CAClD,CAACjJ,GAAOC,MAAM,GACd,CAACD,KANDoQ,UAMiB,WAGfzQ,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,KAIxDvB,qCAAiB,gBAAgBsB,UAAW5B,EAAc8K,IACxDxK,sBAAIsB,UAAWC,GAAO4K,QAAS9C,GAC/BrJ,sBAAIsB,UAAWC,GAAOiU,OACnBD,EAAQ1V,KAAI,SAAC2M,EAAMmI,UAClB3U,sBAAI2H,IAAK6E,EAAKlD,IAAMqL,EAAOrT,UAAWC,GAAOiL,EAAKiJ,SAChDzV,qBACE0V,KAAMlJ,EAAKmJ,cAAgBnJ,EAAKoJ,IAChC3Q,OAAO,SACP4Q,IAAI,uBAEJ7V,wBAAMsB,UAAWC,GAAOyT,OAAQxI,EAAKnD,OACpCmD,EAAKsJ,cAAgB,IACrBtJ,EAAKsJ,cAAgB9V,4BAAOwM,EAAKsJ,iRC5BnCC,GAA0C,oBACrD7M,MAA0B8M,IAAAA,MAAOC,IAAAA,OAAQL,IAAAA,IACzC1U,IAAAA,aAEIsJ,EAAgD,CAClD,CAACjJ,GAAOC,MAAM,GACd,CAACD,KALMoQ,UAKU,WAGfzQ,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,KAIxDvB,4CACc,eACZkW,KAAMN,EACNtU,UAAW5B,EAAc8K,IAEzBxK,qBACEsB,UAAWC,GAAOqT,KAClBc,KAAME,EACN3Q,OAAO,SACP4Q,IAAI,uBAEHG,EAAMnW,KAAI,SAAC2M,EAAMmI,UAChB3U,gBAACuO,GAAc5G,IAAKgN,EAAOjG,KAAMlC,EAAK3I,KAAM2K,QAAQ,SAEtDxO,8BACEA,wBAAMsB,UAAWC,GAAO0U,QAASA,8cC3B9BE,GAA4C,gBACvDjN,IAAAA,MACkB8B,IAAlB9B,MAASyI,QACTzQ,IAAAA,aAEMkV,EAAY9G,KAAK+G,UAAL/G,KAAYpG,EAAMrF,KAAKhE,KAAI,SAAA2M,UAAQA,EAAK3I,KAAK3D,WAEzDoW,EAAuBpN,EAAMrF,KAAKhE,KACtC,SAAA2M,UAAQA,EAAK3I,KAAK5D,OAASuM,EAAK3I,KAAK3D,OAASkW,MAG1CG,EAAWD,EAAqBxD,QAAO,SAAC0D,EAAK5M,UAAM4M,EAAM5M,KAE3DY,EAAgD,CAClD,CAACjJ,GAAOC,MAAM,GACd,CAACD,GAAOyJ,IAAS,GACjB,CAACzJ,GAAOkV,cAA4B,YAAbvN,EAAM2I,IAC7B,CAACtQ,GAAO2H,EAAMpC,WAAYoC,EAAMpC,SAAWvF,GAAO2H,EAAMpC,kBAGtD5F,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,KAIxDvB,qCAAiB,gBAAgBsB,UAAW5B,EAAc8K,IACxDxK,uBAAKsB,UAAWC,GAAOiU,OACpBtM,EAAMrF,KAAKhE,KAAI,SAAC2M,EAAMmI,UAInB3U,uBACEsB,UAAWC,GAAOiL,KAClB7E,IAAK6E,EAAKlD,GACVT,MAAO,CAAE5I,MANSqW,EAAqB3B,GAAS4B,EAAY,UAQ5DvW,gBAACuU,GACCrL,MAAOsD,EACPtL,aAAa,0BAMtBgI,EAAM2I,IACL7R,8BAAYsB,UAAWC,GAAOmV,YAC5B1W,gBAACiL,GACC9B,OAAQD,EAAMC,OACd+B,QAAShC,EAAMgC,QACfhK,aAAcA,oQCrDbyV,GAAoC,gBAE/ClW,IAAAA,KACAY,IAAAA,gBAWErB,qCAAiB,YAAYsB,UAAW5B,EARvB,CACjB,CAAC6B,GAAOC,MAAM,GACd,CAACD,GAAOd,KAASA,KAAUc,GAAOd,IAClC,CAACc,GAAOmM,cARVA,WASE,CAACnM,GAAOqV,eANVC,YAWKxV,uSCfMyV,GAA4C,oBACvD/V,MAAAA,aAAQ,gBAQNf,qCACc,6BACF,OACVsB,UAAW5B,EATI,CACjB,CAAC6B,GAAOC,MAAM,GACd,CAACD,GAAOR,KAAUA,GAASQ,GAAOR,OAShCf,uBAAKsB,UAAWC,GAAO0S,UCdhB8C,GAAwD,gBCLnEC,EACAC,EACAC,EAEIC,EDEJ1W,IAAAA,SACA8S,KAAAA,aAAO,OACPiC,IAAAA,MACAnU,IAAAA,SAEM+V,EAAO,CACXC,GAAI,CACFnU,KAAM,CACJ8T,IAAK,WACLC,IAAK,WACLC,KAAM,YAER/T,QAAS,CACP6T,IAAK,SACLC,IAAK,UACLC,KAAM,aAGVI,GAAI,CACFpU,KAAM,CACJ8T,IAAK,OACLC,IAAK,QACLC,KAAM,SAER/T,QAAS,CACP6T,IAAK,UACLC,IAAK,WACLC,KAAM,cAKNK,EAAgB/B,OCtCtBwB,EDwCEI,EAAK7D,GAAM9S,GAAMuW,ICvCnBC,EDwCEG,EAAK7D,GAAM9S,GAAMwW,ICvCnBC,EDwCEE,EAAK7D,GAAM9S,GAAMyW,KCtCfC,EAAI7H,KAAKkI,IDmCXhC,IClCF2B,GAAK,MAEI,GAAKA,GAAK,GACVD,EAKC,IAFVC,GAAK,IAGIH,EAGLG,GAAK,GAAKA,GAAK,EACVF,EAGFC,UDyBLlX,qCAAiB,uBAAuBsB,mDACrCD,EACDrB,wBAAMsB,oDAA0BiW,KEpCzBE,GAA8C,gBACzDlE,IAAAA,KACArK,IAAAA,MACAwO,IAAAA,OACAC,IAAAA,WACAC,IAAAA,eACAlL,IAAAA,kBACAxD,MACErF,KAAQgU,IAAAA,WAAY9W,IAAAA,MAEtBG,IAAAA,aAEM4W,EACJ5W,IAAkD,IAAlCA,EAAa+N,QAAQ,QAAiB,QAAU,QAC5D8I,EAAY7W,IAAqD,IAArCA,EAAa+N,QAAQ,WACjD+I,EAAW9W,IAAmD,IAAnCA,EAAa+N,QAAQ,SAEhDvB,IAAcmK,EAAWI,MAAK,SAAAzL,SAAsB,gBAAdA,EAAK/L,eAG/CT,gBAACyN,GACCvM,aAAcA,EACdH,MAAOA,GAAS+W,EAChB9M,OAAQ9B,EAAMyI,QACdjE,UAAWA,GAEVmK,EAAWhY,KAAI,SAAAqY,UACNA,EAAUzX,UACX,qBAEDT,gBAAC2W,IAASjJ,UAAWA,EAAWmJ,WAAQlP,IAAKuQ,EAAU5O,IACrDtJ,gCACY,OAATuT,EAAgB,aAAe,WAC/B2E,EAAUtC,KACT5V,qBACE0V,KAAMwC,EAAUtC,IAChBC,IAAI,sBACJ5Q,OAAO,UAENiT,EAAUtD,OAGbsD,EAAUtC,KAAOsC,EAAUtD,WAKhC,kBAED5U,gBAAC2W,IAASjJ,UAAWA,EAAWmJ,WAAQlP,IAAKuQ,EAAU5O,IACrDtJ,gCACEA,gBAAC2D,GAAUC,KAAK,UAAU5C,KAAK,UAC9BkX,EAAUtD,WAKd,kBAED5U,gBAAC2W,IACCjJ,UAAWA,EACXmJ,WACAlP,IAAKuQ,EAAU5O,GACf7I,KAAK,YAELT,gBAAC2N,GACCK,YAAakK,EAAUC,SACvB1X,KAAK,OACLoN,OAAQ0F,SAMX,qBAEDvT,gBAAC2W,IAASjJ,UAAWA,EAAWmJ,WAAQlP,IAAKuQ,EAAU5O,IACrDtJ,gBAAC+W,IACCvB,MAAO0C,EAAUE,MACjB3X,KAAMsX,EAAY,UAAY,OAC9BxE,KAAMA,GAENvT,gBAAC2D,GAAUC,KAAK,OAAO5C,KAAK,gBAK/B,0BAEDhB,gBAAC2W,IAASjJ,UAAWA,EAAWmJ,WAAQlP,IAAKuQ,EAAU5O,IACrDtJ,gCACEA,gBAAC8W,8BAKJ,mBAED9W,gBAAC2W,IAASjJ,UAAWA,EAAWmJ,WAAQlP,IAAKuQ,EAAU5O,IACrDtJ,gCACGkY,EAAUG,WAAarY,gBAAC8W,SAExBoB,EAAUI,uBAOV,UAIXZ,GAAUC,IACV3X,gBAAC2W,IACCjJ,UAAWA,EACXmJ,WACApW,KAAMkX,EAAa,WAAa,QAEhC3X,gBAAC2D,GAAUC,KAAM+T,EAAa,WAAa,OAAQ3W,KAAK,WAI3DgX,GAAqB,OAATzE,GACXvT,uBAAKsB,UAAWC,EAAOgC,UACrBvD,gBAACyM,GACCC,cAAeA,EACftL,QAAS,kBAAYwW,EAAe,WAAY,aC1H/CW,GAA4C,gBACvDrP,IAAAA,MACAhI,IAAAA,aACAqS,IAAAA,KACAmE,IAAAA,OACAC,IAAAA,WACAC,IAAAA,eACAlL,IAAAA,qBAEQxD,EAAMzI,UACP,aAEDT,gBAAC8K,GACC9J,KAAK,QACLgK,OAAQ9B,EAAMyI,QACd5Q,MAAOmI,EAAMrF,KAAK9C,MAClBG,aAAcA,GAEbgI,EAAMrF,KAAK+Q,UAKb,sBACI5U,gBAAC+U,IAAY7L,MAAOA,EAAOhI,aAAcA,QAG7C,oBACIlB,gBAACiV,IAAU/L,MAAOA,EAAOhI,aAAcA,QAG3C,cAEDlB,gBAACyX,IACCvO,MAAOA,EACPqK,KAAMrK,EAAMrF,KAAK0P,KACjBrS,aAAcA,EACdwW,OAAQA,EACRC,WAAYA,EACZjL,cAAeA,EACfkL,eAAgBA,QAKjB,SACA,SACA,SACA,SACA,iBACA,QACA,gBACA,WACA,iBACI5X,gBAACoV,IAAYlM,MAAOA,EAAOhI,aAAcA,QAG7C,eACIlB,gBAACyU,GAAWvL,MAAOA,EAAOhI,aAAcA,QAE5C,SACA,YACIlB,gBAACqV,IAAUnM,MAAOA,EAAOhI,aAAcA,QAG3C,0BACIlB,gBAAC6U,IAAa3L,MAAOA,EAAOhI,aAAcA,QAG9C,oBACIlB,gBAAC0U,GAAUxL,MAAOA,EAAOhI,aAAcA,QAG3C,iBACIlB,gBAACsV,IAAapM,MAAOA,EAAOhI,aAAcA,QAG9C,gBACIlB,gBAAC+V,IAAY7M,MAAOA,EAAOhI,aAAcA,QAE7C,eACIlB,gBAACmL,GAAMjC,MAAOA,EAAOhI,aAAcA,QAEvC,YACA,iBACA,iBACA,YACA,oBACA,aAEDlB,gBAACuU,GACCrL,MAAOA,EACPhI,aAAcA,EACdqS,KAAMA,QAGP,iBACIvT,gBAACmW,IAAajN,MAAOA,EAAOhI,aAAcA,QAE9C,uBACIlB,gBAACuM,GAAarD,MAAOA,EAAOhI,aAAcA,mBAG1C,OC7GAsX,GAA8B,gBCbjB1O,MDcxBZ,MACW8B,IAAT2G,YACA9N,KACE4U,IAAAA,WACAC,MAASvP,IAAAA,OAAQ+B,IAAAA,QAASyN,IAAAA,KAAoBC,IAAdC,aAA2BC,IAAAA,UAAWjH,IAAAA,GAG1E3Q,IAAAA,eAE4CiF,YAAS,GAA9CkM,OAAgBC,OAEjBzJ,EAA6B,GAE/B2B,EAAgD,CAClD,CAACjJ,GAAOC,MAAM,GACd,CAACD,GAAOyJ,KAAWA,KAAYzJ,GAAOyJ,YAGpC9J,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,KAGtDuX,IAGFtO,EAAaD,EAAiBC,EAFhB,CAAwB,UAAvBsO,EAAUC,SAAuB,OAAS,SAERxX,IAEjDsH,EAAMmQ,iBCzCgBlP,EDyCmBgP,EAAUG,mCCxC/B,CACpB,CAAC,EAAG,GACJ,CAAC,IAAM,IACP,CAAC,IAAM,IACP,CAAC,IAAM,IACP,CAAC,IAAM,IACP,CAAC,IAAM,IACP,CAAC,IAAM,IACP,CAAC,IAAM,IACP,CAAC,IAAM,IACP,CAAC,IAAM,IACP,CAAC,EAAG,KAGyBpZ,KAAI,SAAAkM,iBAAajC,OAAUiC,EAAE,QAAOA,EAAE,gBDsCnE/L,qCAAiB,QAAQsB,UAAW5B,EAAc8K,IAChDxK,uBAAKsB,UAAWC,GAAO4I,OACrBnK,gBAAC+H,GAAMnB,UAAW+R,EAAMzQ,MAAO0Q,EAAa9R,QAAQ,YAEtD9G,uBAAKsB,UAAWC,GAAOoD,KAAMkE,MAAOA,GACjC4P,EAAO5Y,KAAI,SAAA2M,UACVxM,gBAACuY,IACC5Q,IAAK6E,EAAKlD,GACVJ,MAAOsD,EACPtL,aAAcA,QAIZ,WAAP2Q,GACC7R,0BACEsB,UAAWC,GAAOoL,QAClBlM,KAAK,sBACM,OACXW,QAAS,WACPkR,GAAmBD,MAKjB,WAAPR,GAAmBQ,GAClBrS,gBAAC4M,GACCC,QAAS,WACPyF,GAAkB,KAnC1BtS,gBAACiL,GACC9B,OAAQA,EACR+B,QAASA,EACThK,aAmCc,oSEvEPgY,GAAsC,oBACjDhQ,MAEErF,IAAAA,SACAA,KACE6U,MAAS9R,IAAAA,UAAWsB,IAAAA,MAAOiB,IAAAA,OAAQ+B,IAAAA,QAGvChK,IAAAA,aAEIsJ,EAAgD,CAClD,CAACjJ,GAAOC,MAAM,GACd,CAACD,KAVDoQ,UAUiB,WAGfzQ,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,KAIxDvB,qCAAiB,aAAasB,UAAW5B,EAAc8K,IACrDxK,uBAAKsB,UAAWC,GAAO4X,MACrBnZ,uBAAKsB,UAAWC,GAAO4I,OACrBnK,gBAAC+H,GAAMnB,UAAWA,EAAWsB,MAAOA,EAAOpB,QAAQ,gBAErD9G,uBAAKsB,UAAWC,GAAOoD,MACpBd,EAAK4U,OAAO5Y,KAAI,SAAA2M,UACfxM,gBAACuY,IAAa5Q,IAAK6E,EAAKlD,GAAIJ,MAAOsD,EAAMtL,aAAc,CAAC,eAI9DlB,uBAAKsB,UAAWC,GAAO6X,QACrBpZ,gBAACiL,GACC9B,OAAQA,EACR+B,QAASA,EACThK,aAAcA,wLCrCXmY,GAA8C,oBACzDnQ,MAAkB8B,IAAT2G,QAAiB9N,IAAAA,KAC1B3C,IAAAA,aAEIsJ,EAAgD,CAClD,CAACjJ,GAAOC,MAAM,GACd,CAACD,GAAOyJ,KAAWA,WAGjB9J,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,KAIxDvB,qCAAiB,iBAAiBsB,UAAW5B,EAAc8K,IACxD3G,EAAKhE,KAAI,SAAA2M,UACRxM,gBAACuY,IACC5Q,IAAK6E,EAAKlD,GACVJ,MAAOsD,EACPtL,aAAa,0cChBVoY,GAAkC,oBAC7CpQ,MACEpC,IAAAA,QACAyS,IAAAA,OACSvO,IAAT2G,QACW6H,IAAXC,UACApQ,IAAAA,MACAoP,IAAAA,OAEFvX,IAAAA,eAE8BiF,YAAS,GAAhCuT,OAASC,OACV3T,EAAM2I,SAAO,MAgBfnE,EAAgD,CAClD,CAACjJ,GAAOC,MAAM,GACd,CAACD,GAAOyJ,KAAWA,GACnB,CAACzJ,GAAOuF,KAAYA,GAAWvF,GAAOuF,IACtC,CAAC,CAACvF,GAAOmY,WAAYA,IAGnBxY,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,SAGpDqY,EAAiBL,EAASA,EAAOM,SAAW,WAC5CC,EAAgBP,EAASA,EAAOQ,OAASP,SAG7CxZ,uBAAKgG,IAAKA,EAAK1E,UAAW5B,EAAc8K,iBAAyB,WAC/DxK,uBAAKsB,UAAWC,GAAO4K,QAAS9C,GAASrJ,0BAAKqJ,IAC9CrJ,uBAAKsB,UAAWC,GAAOoD,MACpB8T,EAAO5Y,KAAI,SAAA2M,UACVxM,gBAACuY,IACC5Q,IAAK6E,EAAKlD,GACVJ,MAAOsD,EACPtL,aAAcA,QAIpBlB,uBAAKsB,UAAWC,GAAO6X,QACrBpZ,gBAACc,GACCE,KAAK,UACLD,MAAM,OACNK,QAAS,WA3CfuY,GAAYD,GAERA,GACF5U,EAAY,eAAgB,SACfkB,EAAImK,QAAQ6J,wBAChB9U,IAAM,GACbc,EAAImK,QAAQ8J,eAAe,CAAEC,SAAU,YAGzCpV,EAAY,cAAe,UAmCvB5D,aAAa,eAEZwY,EAAUE,EAAiBE,EAC5B9Z,gBAAC2D,GAAUC,KAAK,uZC5DuB,gBAC/CvC,IAAAA,SAEAH,IAAAA,aAEIsJ,EAAgD,CAClD,CAACjJ,EAAOC,MAAM,GACd,CAACD,EAAO4Y,WALVA,UAKgC5Y,EAAO4Y,gBAGnCjZ,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,IAIxDvB,qCAAiB,WAAWsB,UAAW5B,EAAc8K,IAClDnJ,yMClBoD,mBAEvDrB,sBAAIsB,2DAAoC,oBAFkBD,+CDNjB,mBAEzCrB,qCAAiB,WAAWsB,UAAWC,EAAOM,QAFFR,wGCFK,mBAC5CrB,wBAAMsB,mDADyCD,qDCMC,gBACvD6H,IAAAA,MACAhI,IAAAA,aACAwW,IAAAA,OACAC,IAAAA,WACAjL,IAAAA,cACAkL,IAAAA,eAGMnN,EAAU,CACdtG,WAHFA,UAGwB,aAGhB+E,EAAMzI,UACP,wBACIT,gBAACqZ,IAAcnQ,MAAOA,EAAOhI,aAAcA,QAG/C,iBAEDlB,gBAACoE,GAAc2L,MAAOtF,GACpBzK,gBAACsZ,IAAQpQ,MAAOA,EAAOhI,aAAcA,SAKtC,eACIlB,gBAACwY,IAAMtP,MAAOA,EAAOhI,aAAcA,QAGvC,cACIlB,gBAACkZ,IAAUhQ,MAAOA,EAAOhI,aAAcA,mBAK5ClB,gBAACoE,GAAc2L,MAAOtF,GACpBzK,gBAACuY,IACCrP,MAAOA,EACPhI,aAAcA,EACdwW,OAAQA,EACRC,WAAYA,EACZjL,cAAeA,EACfkL,eAAgBA,8FD7C2B,mBAC9C5X,wBAAMsB,qDAD2CD,wIEHT,gBAC/C+Y,IAAAA,QACA/Y,IAAAA,aACAgZ,iBAAAA,aAAmB,SACnBC,IAAAA,SACApZ,IAAAA,iBACAH,MAAAA,aAAQ,iBAERf,uCACc,WACZsB,UAAW5B,EAAc,CACvB,CAAC6B,EAAOC,MAAM,GACd,CAACD,EAAOR,KAAUQ,EAAOR,IACzB,CAACQ,EAAOL,KAAiBK,EAAOL,OAGjCG,GAAiC,SAArBgZ,GACXra,uBACEsB,UAAW5B,EAAc,CACvB,CAAC6B,EAAOF,UAAU,GAClB,CAACE,EAAOoI,MAAM,MAGftI,GAGLrB,yBACEsB,UAAWC,EAAOgZ,MAClB9Z,KAAK,WACL+Z,QAASJ,EACTE,SAAUA,IAEZta,wBAAMsB,UAAWC,EAAOoL,SACtB3M,wBAAMsB,UAAWC,EAAOkZ,QAEzBpZ,GAAiC,UAArBgZ,GACXra,uBACEsB,UAAW5B,EAAc,CACvB,CAAC6B,EAAOF,UAAU,GAClB,CAACE,EAAOmZ,OAAO,MAGhBrZ,uECxCsC,gBAAGA,IAAAA,SAAUH,IAAAA,aACtDsJ,EAAgD,CAAC,CAACjJ,EAAOC,MAAM,WAE/DN,IACFsJ,EAAaD,EAAiBC,EAAYtJ,EAAcK,IAWxDvB,qCAAiB,UAAUsB,UAAW5B,EAAc8K,IAClDxK,sBAAIsB,UAAWC,EAAO5B,MARxBgb,WAAS9a,IAAIwB,GAAU,SAACmL,EAAmBmI,UACzC3U,sBAAIsB,UAAWC,EAAOiL,KAAM7E,IAAQgN,MAASnI,EAAKoO,MAAMna,MACrDT,EAAM6a,aAAarO,gCCV+B,gBACzDnL,IAAAA,SACAZ,IAAAA,KACAM,IAAAA,MAEAK,IAAAA,eAUEpB,wCACc,iBACZsB,UAAW5B,EAVuC,CACpD,CAAC6B,GAAOC,MAAM,GACd,CAACD,GAAOd,KAASc,GAAOd,IACxB,CAACc,GAAOR,KAAUQ,GAAOR,MAAYA,GACrC,CAACQ,GAAOuZ,aAPVA,YAcIra,KAAK,SACLW,QAAS,kBAAYA,EAAQX,KAE7BT,gBAAC2D,GAAU3C,KAAK,SAAS4C,KAAMnD,EAAMS,aAAa,gBACjDG,GAAYrB,wBAAMsB,UAAWC,GAAOqT,MAAOvT"}
|
|
1
|
+
{"version":3,"file":"ui-kit-2.cjs.production.min.js","sources":["../src/utils/makeClassName.ts","../src/Button/loader.tsx","../src/Button/index.tsx","../src/SvgSymbol/icons.ts","../src/SvgSymbol/index.tsx","../src/utils/BlockContext.ts","../src/utils/viewportSize.ts","../src/utils/postMessage.ts","../src/constants.ts","../src/Lazy/index.tsx","../src/Image/RenderPicture.tsx","../src/utils/toCamel.ts","../src/Image/index.tsx","../src/DotsOnImage/index.tsx","../src/utils/makeStyleContext.ts","../src/Tag/index.tsx","../src/MediaCaption/index.tsx","../src/Table/index.tsx","../src/MaterialNote/index.tsx","../src/BookmarkButton/index.tsx","../src/Popover/index.tsx","../src/Meta/index.tsx","../src/Timestamp/index.tsx","../src/utils/DangerousHtml.tsx","../src/EmbedBlock/EmbedGif.tsx","../src/EmbedBlock/EmbedBlock.tsx","../src/EmbedBlock/IframeBlock.tsx","../src/EmbedBlock/index.tsx","../src/QuoteBlock/index.tsx","../src/CardTitle/index.tsx","../src/ChapterBlock/index.tsx","../src/SimpleTitle/index.tsx","../src/RichTitle/index.tsx","../src/SimpleBlock/index.tsx","../src/ListBlock/index.tsx","../src/RelatedBlock/index.tsx","../src/SourceBlock/index.tsx","../src/GroupedBlock/index.tsx","../src/MetaItem/index.tsx","../src/MetaItemLive/index.tsx","../src/DocumentItemsCount/index.tsx","../src/utils/pluralize.ts","../src/Meta/MetaContainer.tsx","../src/RenderBlocks/index.tsx","../src/Cover/index.tsx","../src/utils/generateGradient.ts","../src/HalfBlock/index.tsx","../src/ImportantLead/index.tsx","../src/Spoiler/index.tsx","../src/Dropdown/index.tsx","../src/MaterialTitle/index.tsx","../src/RawHtmlBlock/index.tsx","../src/Switcher/index.tsx","../src/Toolbar/index.tsx","../src/ToolbarButton/index.tsx"],"sourcesContent":["export type ClassNames = (string[] | string | boolean)[][]\n\nexport const makeClassName = (list: ClassNames): string => {\n return list\n .filter(([, active]) => active)\n .map(([className]) => className)\n .join(' ')\n}\n\nexport default makeClassName\n","import React from 'react'\n\nconst Loader: React.FC = () => (\n <svg\n width=\"30px\"\n height=\"30px\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g>\n <path\n d=\"M15 0C6.716 0 0 6.716 0 15c0 8.284 6.716 15 15 15 8.284 0 15-6.716 15-15 0-8.284-6.716-15-15-15zm0 2c7.18 0 13 5.82 13 13s-5.82 13-13 13S2 22.18 2 15 7.82 2 15 2z\"\n opacity=\"0.3\"\n />\n </g>\n <g fillRule=\"evenodd\">\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 15 15\"\n to=\"360 15 15\"\n dur=\"1000ms\"\n repeatCount=\"indefinite\"\n />\n <path d=\"M15 0c8.18 0 14.83 6.547 14.997 14.686L30 15h-2c0-7.077-5.655-12.833-12.693-12.996L15 2V0z\" />\n </g>\n </svg>\n)\n\nexport default Loader\n","import React, { FC } from 'react'\nimport { makeClassName } from '../utils/makeClassName'\nimport Loader from './loader'\nimport { ButtonProps } from './Button.types'\n\nimport styles from './Button.module.css'\n\nexport const Button: FC<ButtonProps> = ({\n theme = 'gold',\n size = 'default',\n state = 'isDefault',\n styleContext = 'isInToolbar',\n disabled = false,\n onClick,\n children\n}) => {\n const handleClick = (): void => {\n if (disabled || !onClick) {\n return\n }\n\n onClick()\n }\n\n return (\n <button\n data-testid=\"button\"\n className={makeClassName([\n [styles.root, true],\n [styles[size], !!size],\n [styles[theme], !!theme],\n [styles[state], !!state && !!styles[state]],\n [styles[styleContext], !!styleContext]\n ])}\n disabled={disabled}\n onClick={handleClick}\n type=\"button\"\n >\n {state === 'isLoading' ? (\n <span className={styles.loader}>\n <Loader />\n </span>\n ) : (\n children\n )}\n </button>\n )\n}\n","export const icons = {\n meduzaLogo: {\n width: 544,\n height: 115,\n content:\n '<path d=\"M59.1008614,49.65632 L59.1008614,106.01472 L84.9480411,114.24 L84.9480411,49.65632 L101.574882,49.65632 L101.574882,106.01472 L127.270909,114.24 L144.048902,91.392 L127.422062,91.392 L127.422062,35.7952 L101.726035,26.80832 L84.9480411,46.60992 L84.9480411,35.7952 L59.2520145,26.80832 L42.4740206,46.60992 L42.4740206,35.7952 L16.7779939,26.80832 L0,49.65632 L16.6268408,49.65632 L16.6268408,106.01472 L42.4740206,114.24 L42.4740206,49.65632 L59.1008614,49.65632 L59.1008614,49.65632 Z M336.61795,91.392 L336.61795,35.0336 L310.770769,26.80832 L310.770769,105.25312 L336.466796,114.24 L353.24479,94.4384 L353.24479,105.25312 L378.940817,114.24 L395.71881,91.392 L379.091969,91.392 L379.091969,35.0336 L353.24479,26.80832 L353.24479,91.392 L336.61795,91.392 L336.61795,91.392 Z M527.373159,38.08 L502.130592,26.80832 L472.202278,41.1264 L502.130592,52.39808 L461.016949,72.352 L461.016949,104.94848 L486.86413,114.24 L502.130592,94.28608 L502.130592,105.25312 L527.977771,114.24 L544,91.23968 L527.373159,91.23968 L527.373159,38.08 L527.373159,38.08 Z M177.453737,114.24 L207.079744,102.35904 L177.453737,91.23968 L177.453737,75.24608 L216.300083,56.3584 L194.231731,26.80832 L151.606557,47.37152 L151.606557,103.12064 L177.453737,114.24 L177.453737,114.24 Z M455.424284,89.56416 L423.984441,79.968 L453.459295,42.19264 L416.577937,26.80832 L397.230341,51.48416 L428.821339,61.23264 L398.741873,98.85568 L436.076687,114.24 L455.424284,89.56416 L455.424284,89.56416 Z M486.86413,91.392 L486.86413,68.84864 L502.130592,61.53728 L502.130592,91.392 L486.86413,91.392 L486.86413,91.392 Z M177.453737,41.58336 L190.452904,59.55712 L177.453737,65.80224 L177.453737,41.58336 L177.453737,41.58336 Z M222.95082,103.12064 L248.797999,114.24 L291.27202,97.18016 L291.27202,29.7024 L222.95082,0 L222.95082,26.30784 L265.424841,43.21536 L265.424841,97.33248 L248.797999,91.23968 L248.797999,43.71584 L222.95082,51.94112 L222.95082,103.12064 L222.95082,103.12064 Z\" />'\n },\n\n menu: {\n width: 24,\n height: 24,\n content:\n '<path d=\"M2 21h20M2 12h20M2 3h20\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" vector-effect=\"non-scaling-stroke\" />'\n },\n\n fb: {\n width: 16,\n height: 18,\n content:\n '<path d=\"M15.117 1H.883A.883.883 0 0 0 0 1.883v14.234A.883.883 0 0 0 .883 17h7.663v-6.196H6.461V8.389h2.085V6.61a2.91 2.91 0 0 1 3.106-3.192c.622-.003 1.244.03 1.863.095v2.16h-1.279c-1.002 0-1.196.476-1.196 1.176v1.541h2.39l-.31 2.415h-2.08V17h4.077a.883.883 0 0 0 .883-.883V1.883A.883.883 0 0 0 15.117 1\" />'\n },\n\n tw: {\n width: 20,\n height: 18,\n content:\n '<path d=\"M20 3.1c-.7.3-1.5.6-2.4.7.8-.5 1.5-1.4 1.8-2.4-.8.5-1.7.8-2.6 1-.7-.8-1.8-1.4-3-1.4-2.3 0-4.1 1.9-4.1 4.3 0 .3 0 .7.1 1-3.3-.1-6.4-1.8-8.4-4.4-.3.6-.5 1.4-.5 2.2 0 1.5.7 2.8 1.8 3.6-.7 0-1.3-.2-1.9-.5v.1c0 2.1 1.4 3.8 3.3 4.2-.3.1-.7.2-1.1.2-.3 0-.5 0-.8-.1.5 1.7 2 2.9 3.8 3-1.3 1-3.1 1.6-5 1.6-.3 0-.7 0-1-.1C1.8 17.3 4 18 6.3 18 13.8 18 18 11.5 18 5.8v-.6c.8-.5 1.5-1.2 2-2.1\" fill-rule=\"nonzero\"/>'\n },\n\n vk: {\n width: 20,\n height: 18,\n content:\n '<path d=\"M16.517 9.851s2.587-3.768 2.886-5.058c.1-.396-.1-.694-.498-.694h-2.288c-.498 0-.697.199-.896.595 0 0-1.194 2.678-2.686 4.364-.498.496-.697.694-.995.694-.2 0-.299-.198-.299-.694V4.793c0-.595-.1-.793-.597-.793H7.463c-.2 0-.398.198-.398.397 0 .595.796.694.796 2.28v3.174c0 .595 0 .893-.299.893-.796 0-2.686-2.777-3.681-5.851-.2-.595-.398-.794-.995-.794H.597C.299 4.1 0 4.298 0 4.694c0 .595.697 3.471 3.483 7.34C5.373 14.611 7.86 16 10.05 16c1.393 0 1.691-.198 1.691-.793v-1.984c0-.496.2-.694.498-.694s.895.1 2.189 1.388C15.92 15.405 16.02 16 16.915 16h2.587c.299 0 .498-.1.498-.595 0-.595-.796-1.587-1.89-2.876-.498-.595-1.195-1.29-1.493-1.686-.398-.397-.299-.595-.1-.992\" fill-rule=\"nonzero\"/>'\n },\n\n ok: {\n width: 9,\n height: 18,\n content:\n '<path d=\"M4.5 2c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4m0 5.7c-.9 0-1.6-.8-1.6-1.7 0-.9.7-1.6 1.6-1.6.9 0 1.7.7 1.7 1.7 0 .8-.8 1.6-1.7 1.6\" fill-rule=\"nonzero\"/> <path d=\"M6.127 12.982a9.194 9.194 0 0 0 2.307-.904c.602-.301.703-1.004.402-1.507-.301-.502-1.104-.703-1.605-.401-1.605 1.004-3.812 1.004-5.417 0-.502-.302-1.304-.201-1.605.3-.401.604-.2 1.206.401 1.608a9.194 9.194 0 0 0 2.307.904L.61 15.092c-.502.401-.502 1.104 0 1.607a1.357 1.357 0 0 0 1.705 0l2.207-2.11L6.73 16.7a1.357 1.357 0 0 0 1.705 0c.502-.402.502-1.105 0-1.608l-2.307-2.109\" fill-rule=\"nonzero\"/>'\n },\n\n tg: {\n width: 18,\n height: 18,\n content:\n '<path d=\"M9 18c-5 0-9-4-9-9s4-9 9-9 9 4 9 9-4 9-9 9zm-1.5-7.4c1.1 1 2 3.3 2 3.3.4.2.7.1.8-.4l2.1-7.4c.1-.6-.2-.8-.6-.7L4 8.3c-.6.2-.6.5-.1.7 0 .1 2.4.6 3.6 1.6z\" fill-rule=\"nonzero\"/>'\n },\n\n meduzaSymbol: {\n width: 24,\n height: 18,\n content:\n '<path d=\"M10.026233,17.0968697 L13.9737671,18.3530831 L13.9737671,10.9855851 L13.9737671,8.48948164 L16.5131165,8.48948164 L16.5131165,17.0968697 L20.4375656,18.3530831 L23,14.8636014 L20.4606507,14.8636014 L20.4606507,6.37252945 L16.5362015,5 L13.9737671,8.02421743 L13.9737671,6.37252945 L10.049318,5 L7.48688354,8.02421743 L7.48688354,6.37252945 L3.56243443,5 L1,8.48948164 L3.53934943,8.48948164 L3.53934943,17.0968697 L7.48688354,18.3530831 L7.48688354,8.48948164 L10.026233,8.48948164 L10.026233,17.0968697 Z\" />'\n },\n\n backward: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M13 0v2.01c6.672.263 12 5.754 12 12.49C25 21.404 19.404 27 12.5 27S0 21.404 0 14.5c0-3.493 1.441-6.758 3.936-9.105a.75.75 0 111.028 1.092A10.965 10.965 0 001.5 14.5c0 6.075 4.925 11 11 11s11-4.925 11-11c0-5.907-4.656-10.727-10.499-10.989L13 6 8 3l5-3zm3.295 11.33v1.25h-3.16v1.63c.32-.32.86-.56 1.47-.56 1.13 0 2.14.81 2.14 2.16 0 1.42-1.06 2.31-2.67 2.31-1.16 0-2-.38-2.57-1l.79-.99c.45.47 1.07.73 1.77.73.79 0 1.24-.45 1.24-.99 0-.59-.44-.99-1.2-.99-.55 0-1 .16-1.4.54l-.99-.26v-3.83h4.58zm-5.94 0V18h-1.42v-4.84l-1.11 1.13-.81-.85 2.1-2.11h1.24z\" fill-rule=\"nonzero\"/>'\n },\n\n forward: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M12 0l5 3-5 3V3.511C6.157 3.773 1.5 8.592 1.5 14.5c0 6.075 4.925 11 11 11s11-4.925 11-11c0-3.075-1.267-5.946-3.464-8.013a.75.75 0 011.028-1.092A12.465 12.465 0 0125 14.5C25 21.404 19.404 27 12.5 27S0 21.404 0 14.5C0 7.764 5.328 2.272 12 2.01V0zm4.295 11.33v1.25h-3.16v1.63c.32-.32.86-.56 1.47-.56 1.13 0 2.14.81 2.14 2.16 0 1.42-1.06 2.31-2.67 2.31-1.16 0-2-.38-2.57-1l.79-.99c.45.47 1.07.73 1.77.73.79 0 1.24-.45 1.24-.99 0-.59-.44-.99-1.2-.99-.55 0-1 .16-1.4.54l-.99-.26v-3.83h4.58zm-5.94 0V18h-1.42v-4.84l-1.11 1.13-.81-.85 2.1-2.11h1.24z\" fill-rule=\"nonzero\"/>'\n },\n\n download: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M12.5 2C19.404 2 25 7.596 25 14.5S19.404 27 12.5 27 0 21.404 0 14.5 5.596 2 12.5 2zm0 1.5c-6.075 0-11 4.925-11 11s4.925 11 11 11 11-4.925 11-11-4.925-11-11-11zm6 15.75a.75.75 0 01.102 1.493l-.102.007h-12a.75.75 0 01-.102-1.493l.102-.007h12zm-6-12a.75.75 0 01.743.648L13.25 8v7.598l1.834-1.222a.75.75 0 11.832 1.248l-3 2a.75.75 0 01-.832 0l-3-2a.75.75 0 11.832-1.248l1.834 1.223V8a.75.75 0 01.648-.743l.102-.007z\" fill-rule=\"nonzero\" fill=\"currentColor\" />'\n },\n\n play: {\n width: 62,\n height: 62,\n content:\n '<path d=\"M24.35 41.772a.5.5 0 0 1-.739-.439V20.667a.5.5 0 0 1 .74-.44l18.944 10.334a.5.5 0 0 1 0 .878L24.351 41.772z\" fill-rule=\"nonzero\"/>'\n },\n\n pause: {\n width: 22,\n height: 22,\n content:\n '<path d=\"M12.832 4h2.8c.276 0 .5.224.5.5v12.394c0 .277-.224.5-.5.5h-2.8c-.276 0-.5-.223-.5-.5V4.5c0-.276.224-.5.5-.5zM6.5 4h2.8c.277 0 .5.224.5.5v12.394c0 .277-.223.5-.5.5H6.5c-.276 0-.5-.223-.5-.5V4.5c0-.276.224-.5.5-.5z\" />'\n },\n\n speedHalf: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M7.212 15.198V12.29l-.676.724L6 12.406 7.35 11h.825v4.198h-.963zM8.056 18H7.3l4.23-7h.765l-4.24 7zm2.99 0v-.735c1.717-1.27 2.134-1.679 2.134-2.14 0-.389-.288-.578-.665-.578-.467 0-.884.263-1.083.525l-.496-.64c.417-.493 1.053-.693 1.599-.693.913 0 1.599.462 1.599 1.312 0 .682-.556 1.28-1.708 2.14h1.737V18h-3.118zm5.998-2.918l-1.39 1.48-.567-.577 1.4-1.49-1.4-1.48.566-.588 1.39 1.49 1.4-1.49.557.588-1.4 1.48 1.4 1.49-.556.577-1.4-1.48z\" /><path d=\"M12.5 27C19.404 27 25 21.404 25 14.5S19.404 2 12.5 2 0 7.596 0 14.5 5.596 27 12.5 27zm0-1.5c-6.075 0-11-4.925-11-11s4.925-11 11-11 11 4.925 11 11-4.925 11-11 11z\" />'\n },\n\n speedOne: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M9.955 18v-4.84l-1.11 1.13-.81-.85 2.1-2.11h1.24V18h-1.42zm4.6-2.78l-1.4 1.41-.57-.55 1.41-1.42-1.41-1.41.57-.56 1.4 1.42 1.41-1.42.56.56-1.41 1.41 1.41 1.42-.56.55-1.41-1.41z\" fill-rule=\"nonzero\"/><path d=\"M12.5 27C19.404 27 25 21.404 25 14.5S19.404 2 12.5 2 0 7.596 0 14.5 5.596 27 12.5 27zm0-1.5c-6.075 0-11-4.925-11-11s4.925-11 11-11 11 4.925 11 11-4.925 11-11 11z\" fill-rule=\"nonzero\"/>'\n },\n\n speedOneHalf: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M5.62 18v-4.84l-1.11 1.13-.81-.85 2.1-2.11h1.24V18H5.62zm3.37-2.67v-2.77l-.68.69-.54-.58 1.36-1.34h.83v4h-.97zM9.84 18h-.76l4.26-6.67h.77L9.84 18zm3.01 0v-.7c1.73-1.21 2.15-1.6 2.15-2.04 0-.37-.29-.55-.67-.55-.47 0-.89.25-1.09.5l-.5-.61c.42-.47 1.06-.66 1.61-.66.92 0 1.61.44 1.61 1.25 0 .65-.56 1.22-1.72 2.04h1.75V18h-3.14zm6.04-2.78l-1.4 1.41-.57-.55 1.41-1.42-1.41-1.41.57-.56 1.4 1.42 1.41-1.42.56.56-1.41 1.41 1.41 1.42-.56.55-1.41-1.41z\" fill-rule=\"nonzero\"/><path d=\"M12.5 27C19.404 27 25 21.404 25 14.5S19.404 2 12.5 2 0 7.596 0 14.5 5.596 27 12.5 27zm0-1.5c-6.075 0-11-4.925-11-11s4.925-11 11-11 11 4.925 11 11-4.925 11-11 11z\" fill-rule=\"nonzero\"/>'\n },\n\n speedTwo: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M7.147 18v-1.158c2.685-2.078 3.471-2.792 3.471-3.64 0-.6-.52-.9-1.061-.9-.748 0-1.318.311-1.76.797L7 12.127C7.64 11.352 8.613 11 9.527 11c1.396 0 2.507.827 2.507 2.202 0 1.18-.924 2.203-2.625 3.506h2.675V18H7.147zm7.916-2.874l-1.377 1.457-.56-.568 1.386-1.468-1.386-1.458.56-.58 1.377 1.469 1.386-1.468.551.579-1.386 1.458L17 16.015l-.55.568-1.387-1.457z\" fill-rule=\"nonzero\"/><path d=\"M12.5 27C19.404 27 25 21.404 25 14.5S19.404 2 12.5 2 0 7.596 0 14.5 5.596 27 12.5 27zm0-1.5c-6.075 0-11-4.925-11-11s4.925-11 11-11 11 4.925 11 11-4.925 11-11 11z\" fill-rule=\"nonzero\"/>'\n },\n\n podcastBookmark: {\n width: 25,\n height: 27,\n content:\n '<path d=\"M12.5 27C19.404 27 25 21.404 25 14.5S19.404 2 12.5 2 0 7.596 0 14.5 5.596 27 12.5 27zm0-1.5c-6.075 0-11-4.925-11-11s4.925-11 11-11 11 4.925 11 11-4.925 11-11 11z\" /> <path d=\"M17.071 8.25H8a.75.75 0 00-.75.75v11.545l.007.104a.75.75 0 001.228.468l4.05-3.437 4.051 3.437a.75.75 0 001.235-.572V9a.75.75 0 00-.75-.75zm-.75 1.499v9.176l-3.3-2.8-.098-.07a.75.75 0 00-.873.07l-3.3 2.799V9.749h7.571z\" data-stroke=\"true\" /> <path d=\"M17.071 8.25H8a.75.75 0 00-.75.75v11.545l.007.104a.75.75 0 001.228.468l4.05-3.437 4.051 3.437a.75.75 0 001.235-.572V9a.75.75 0 00-.75-.75z\" data-fill=\"true\" />'\n },\n\n reaction: {\n width: 16,\n height: 16,\n content:\n '<path data-theme=\"light\" fill=\"#D09959\" d=\"M1 2h14v12H1z\"/> <path d=\"M0 1.778C0 .8.8 0 1.778 0h12.444C15.2 0 16 .8 16 1.778v12.444C16 15.2 15.2 16 14.222 16H1.778C.8 16 0 15.2 0 14.222V1.778zM6.8 11.7l2.5.8V6.2h1.6v5.5l2.5.8 1.6-2.3h-1.6V4.8L10.9 4 9.3 5.9V4.8L6.8 4 5.1 5.9V4.8L2.6 4 1 6.2h1.6v5.5l2.5.8V6.2h1.7v5.5z\" />'\n },\n\n cross: {\n width: 18,\n height: 18,\n content:\n '<path fill=\"none\" fill-rule=\"evenodd\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" vector-effect=\"non-scaling-stroke\" d=\"M2 2l14 14M16 2L2 16\" />'\n },\n\n link: {\n width: 24,\n height: 24,\n content:\n '<path d=\"M9.158 18.928c-1.065 0-2.13-.405-2.94-1.215-1.624-1.623-1.624-4.262 0-5.884l.643-.645c.327-.326.854-.326 1.18 0 .325.326.325.853 0 1.178l-.645.645c-.972.972-.972 2.554 0 3.526.973.972 2.554.973 3.526 0l2.842-2.84c.97-.972.97-2.555 0-3.527-.325-.325-.325-.854 0-1.18.325-.324.853-.324 1.178 0 1.623 1.625 1.623 4.264 0 5.885l-2.84 2.84c-.81.81-1.877 1.216-2.942 1.216\" /> <path d=\"M10.578 14.184c-.213 0-.426-.082-.59-.244-.784-.785-1.217-1.83-1.217-2.94 0-1.113.433-2.158 1.22-2.944l2.84-2.84c1.622-1.62 4.26-1.62 5.883 0 1.622 1.623 1.622 4.262 0 5.883l-.645.643c-.325.326-.852.326-1.178 0-.325-.325-.325-.852 0-1.178l.645-.644c.972-.97.972-2.554 0-3.526s-2.556-.972-3.527 0l-2.84 2.842c-.47.47-.73 1.096-.73 1.762 0 .667.26 1.293.73 1.763.325.327.325.854 0 1.18-.163.162-.376.244-.59.244\" />'\n },\n\n search: {\n width: 16,\n height: 16,\n content:\n '<g transform=\"translate(2 1)\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" vector-effect=\"non-scaling-stroke\"><circle cx=\"5.5\" cy=\"5.5\" r=\"5.5\"/><path d=\"M11.37 13.442l-.995-1.272\"/></g>'\n },\n\n card: {\n width: 15,\n height: 15,\n content:\n '<path d=\"M9 5.5a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5H4a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5h5zm-.5 1h-4v4h4v-4zm2.5-3a.5.5 0 0 1 .5.5v5a.5.5 0 1 1-1 0V4.5H6a.5.5 0 0 1 0-1h5z\" fill-rule=\"nonzero\"/>'\n },\n\n podcast: {\n width: 15,\n height: 15,\n content:\n '<path d=\"M5.252 11.432A.5.5 0 0 1 4.5 11V4a.5.5 0 0 1 .752-.432l6 3.5a.5.5 0 0 1 0 .864l-6 3.5zm.248-1.303L10.008 7.5 5.5 4.87v5.26z\" fill-rule=\"nonzero\" />'\n },\n\n arrow: {\n width: 12,\n height: 12,\n content:\n '<path d=\"M3 7l3 3.5L9 7M6 10V1\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.2\" vector-effect=\"non-scaling-stroke\" />'\n },\n\n brent: {\n width: 9,\n height: 12,\n content:\n '<g fill=\"#999\" fill-rule=\"nonzero\"><path d=\"M4.332 0l.528.606c2.528 2.902 3.804 5.07 3.804 6.634A4.332 4.332 0 110 7.24C0 5.676 1.276 3.508 3.804.606L4.332 0zm0 2.143l-.176.212C2.313 4.589 1.4 6.248 1.4 7.24a2.932 2.932 0 105.864 0c0-.992-.914-2.651-2.756-4.885l-.176-.212z\"/><path d=\"M2.973 7.475c0 .415.417.863.835.924l.097.008v.7c-.79 0-1.548-.716-1.626-1.5l-.006-.132h.7z\"/></g> '\n },\n\n user: {\n width: 16,\n height: 16,\n content:\n '<path fill=\"currentColor\" fill-rule=\"nonzero\" d=\"M8 1a4.25 4.25 0 012.676 7.552 6.751 6.751 0 014.074 6.198.75.75 0 11-1.5 0 5.25 5.25 0 00-10.5 0 .75.75 0 11-1.5 0 6.752 6.752 0 014.074-6.199A4.25 4.25 0 018 1zm0 1.5A2.75 2.75 0 108 8a2.75 2.75 0 000-5.5z\" />'\n },\n\n bookmark: {\n width: 17,\n height: 21,\n content:\n '<path d=\"M16 20l-7.5-6.333L1 20V1h15z\" stroke=\"currentColor\" fill-rule=\"evenodd\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>'\n },\n\n receipt: {\n width: 10,\n height: 13,\n content:\n '<g fill=\"currentColor\" fill-rule=\"nonzero\"><path d=\"M10 0H0v13l2-1.74 1.5 1.305L5 11.26l1.5 1.305L8 11.26 10 13V0zM9 .997v9.81l-1-.87-1.5 1.304L5 9.937 3.5 11.24 2 9.937l-1 .87V.996h8z\"/><path d=\"M7 3v1H3V3zM7 6v1H3V6z\"/></g>'\n },\n\n read: {\n width: 15,\n height: 15,\n content:\n '<g fill=\"none\" fill-rule=\"evenodd\"><path opacity=\".98\" d=\"M0 0h15v15H0z\"/><path d=\"M13.085 1.694a.513.513 0 01.855.56l-.051.077-3.163 3.975a.514.514 0 01-.73.075l-.068-.069-1.812-2.208a.512.512 0 01.729-.716l.065.066 1.409 1.718 2.766-3.478z\" fill=\"#6EAC65\" fill-rule=\"nonzero\"/><path d=\"M6.454 12.997l-.06-.01-.078-.023a.49.49 0 01-.266-.24l.011.015a2.349 2.349 0 00-.535-.607c-.89-.745-2.117-.917-3.813-.12a.5.5 0 01-.706-.37L1 11.558V4.568a.5.5 0 01.287-.453c2.053-.963 3.695-.733 4.88.26.327.272.556.548.698.77l.084.144.018.04.022.076.01.071L7 11.233l.126-.09c.95-.656 2.16-.857 3.608-.417l.266.087v-2.81a.5.5 0 01.41-.491l.09-.008a.5.5 0 01.492.41l.008.09v3.555a.5.5 0 01-.713.452c-1.696-.796-2.922-.624-3.813.12a2.533 2.533 0 00-.497.544l-.038.064a.486.486 0 01-.485.258zm-4.29-8.17L2 4.892v5.92c1.637-.572 2.977-.348 4 .42l.002-5.58a2.605 2.605 0 00-.476-.513c-.81-.677-1.897-.88-3.362-.314z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></g>'\n },\n listened: {\n width: 15,\n height: 15,\n content:\n '<g fill-rule=\"nonzero\"><path d=\"M4.978 4.354a.5.5 0 01-.332.624c-1.197.367-2.064 1.527-2.14 2.897l-.005.167a.749.749 0 01.999.708v3a.75.75 0 01-1.458.248L2 12a1 1 0 01-1-1v-1a1 1 0 01.5-.866V8.072c0-1.886 1.172-3.535 2.854-4.05a.5.5 0 01.624.332zM10 7a.5.5 0 01.492.41l.008.09.001 1.634a1 1 0 01.492.745L11 10v1a1 1 0 01-.883.993L10 12l-.042-.002a.75.75 0 01-1.451-.146L8.5 11.75v-3a.75.75 0 011.001-.707L9.5 7.5l.008-.09A.5.5 0 0110 7z\" fill=\"currentColor\" /><path d=\"M11.585 1.194a.513.513 0 01.855.56l-.051.077-3.163 3.975a.514.514 0 01-.73.075l-.068-.069-1.812-2.208a.512.512 0 01.729-.716l.065.066 1.409 1.718 2.766-3.478z\" fill=\"#6EAC65\" /></g>'\n }\n}\n","import React from 'react'\nimport { SvgSymbolProps } from './SvgSymbol.types'\nimport { makeClassName } from '../utils/makeClassName'\nimport { icons } from './icons'\n\nimport styles from './SvgSymbol.module.css'\n\nexport const SvgSymbol: React.FC<SvgSymbolProps> = ({\n icon,\n size,\n styleContext\n}) => {\n const data = icons[icon]\n\n return (\n <svg\n data-testid=\"svg-symbol\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n className={makeClassName([\n [styles.root, true],\n [styles[size], !!styles[size]],\n [styles[icon], !!styles[icon]],\n [styles[styleContext], !!styles[styleContext]]\n ])}\n width={data.width}\n height={data.height}\n viewBox={`0 0 ${data.width} ${data.height}`}\n dangerouslySetInnerHTML={{ __html: data.content }}\n />\n )\n}\n","import React from 'react'\n\nconst BlockContext = React.createContext({ lightBox: null })\n\nexport const BlockProvider = BlockContext.Provider\n\nexport default BlockContext\n","type viewportSize = {\n width: number\n height: number\n}\n\nexport default (): viewportSize => ({\n width:\n window.innerWidth ||\n document.documentElement.clientWidth ||\n document.body.clientWidth,\n height:\n window.innerHeight ||\n document.documentElement.clientHeight ||\n document.body.clientHeight\n})\n","const POST_MESSAGE_PREFIX = 'mdzKitMsg'\n\nconst postMessage = (element: string, action: string): void => {\n const target = window.top\n\n const msg = `${POST_MESSAGE_PREFIX}=${JSON.stringify({\n element,\n action\n })}`\n\n if (typeof target !== 'undefined') {\n target.postMessage(msg, '*')\n }\n}\n\nexport default postMessage\n","export const MediaQuerySizes = {\n MOBILE: 512,\n PORTRAIT_TABLET: 768,\n LANDSCAPE_TABLET: 1024,\n DESKTOP: 1010,\n WIDE_DESKTOP: 1200\n}\n\nexport const imageBreakpoints = {\n 325: '(min-width: 0)',\n 520: '(min-width: 325px)',\n 600: '(min-width: 600px)',\n 650: '(min-width: 650px)',\n 980: '(min-width: 1000px)',\n 1335: '(min-width: 1000px)'\n}\n\nexport const imageConditionalKeys = {\n xs: [325],\n superFull: [1335, 650, 520, 325],\n full: [980, 650, 520, 325],\n default: [650, 520, 325],\n narrow: [600, 325]\n}\n","import React, { useState, useEffect } from 'react'\nimport { useInView } from 'react-intersection-observer'\nimport { makeClassName } from '../utils/makeClassName'\nimport { LazyProps } from './Lazy.types'\n\nimport styles from './Lazy.module.css'\n\nexport const Lazy: React.FC<LazyProps> = ({ children, threshold }) => {\n const [ref, inView, entry] = useInView({\n threshold: threshold || 0\n })\n\n const [visible, setVisible] = useState(false)\n\n useEffect(() => {\n if (entry && entry.boundingClientRect && entry.boundingClientRect.y < 0) {\n setVisible(true)\n }\n }, [entry])\n\n useEffect(() => {\n if (inView) {\n setVisible(true)\n }\n }, [inView])\n\n return (\n <div\n className={makeClassName([\n [styles.root, true],\n [styles.visible, visible]\n ])}\n ref={ref}\n data-testid=\"lazy\"\n >\n {visible && children}\n </div>\n )\n}\n","import React, { useState, useEffect } from 'react'\nimport { PictureProps } from './Image.types'\nimport { imageBreakpoints, imageConditionalKeys } from '../constants'\nimport { toCamel } from '../utils/toCamel'\n\nexport const RenderPicture: React.FC<PictureProps> = ({\n source,\n fallbackSource,\n optimized,\n alt,\n display\n}) => {\n const [fallback, setFallback] = useState(false)\n\n useEffect(() => {\n setFallback(!window.HTMLPictureElement)\n }, [])\n\n const keys =\n imageConditionalKeys[toCamel(display)] || imageConditionalKeys.default\n\n return (\n <picture>\n {source && (\n <source media=\"(min-width: 325px)\" srcSet={`${source[1]} 2x`} />\n )}\n\n {optimized && !optimized.w325 && (\n <source media=\"(min-width: 0)\" srcSet={`${optimized.original}`} />\n )}\n\n {optimized &&\n keys.map((key) => {\n const breakpoint = optimized[`w${key}`]\n\n if (!breakpoint) {\n return null\n }\n\n return (\n <React.Fragment key={key}>\n <source\n type=\"image/webp\"\n media={imageBreakpoints[key]}\n srcSet={`${breakpoint['2x_webp']} 2x, ${breakpoint['1x_webp']} 1x `}\n />\n\n <source\n type=\"image/png\"\n media={imageBreakpoints[key]}\n srcSet={`${breakpoint['2x']} 2x, ${breakpoint['1x']} 1x `}\n />\n </React.Fragment>\n )\n })}\n\n <img\n src={\n fallback\n ? fallbackSource\n : 'data:image/gif;base64,R0lGODlhAQABAPAAAPLy8gAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=='\n }\n alt={alt}\n />\n </picture>\n )\n}\n\nexport default RenderPicture\n","export const toCamel = (s: string): string =>\n s.replace(/([_][a-z])/gi, (str) => str.toUpperCase().replace('_', ''))\n","import React, { useContext } from 'react'\nimport { ImageProps } from './Image.types'\nimport { makeClassName } from '../utils/makeClassName'\nimport BlockContext from '../utils/BlockContext'\nimport viewportSize from '../utils/viewportSize'\nimport postMessage from '../utils/postMessage'\nimport { MediaQuerySizes } from '../constants'\nimport { Lazy } from '../Lazy'\nimport RenderPicture from './RenderPicture'\n\nimport styles from './Image.module.css'\n\nexport const Image: React.FC<ImageProps> = ({\n alt,\n display,\n optimized,\n width,\n height,\n source,\n lazy,\n fullscreen,\n ratio\n}) => {\n const { lightBox } = useContext(BlockContext)\n\n const handleClick = (): void => {\n const { width: viewportWidth } = viewportSize()\n\n if (\n (optimized && !optimized.original) ||\n !lightBox ||\n (viewportWidth >= MediaQuerySizes.LANDSCAPE_TABLET && !fullscreen)\n ) {\n return\n }\n\n postMessage('fullscreen_click', 'click')\n lightBox.show(optimized, width, height, alt)\n }\n\n const pictureStyles = {\n paddingBottom: `${100 / (ratio || width / height)}%`\n }\n\n const blockStyles = {\n maxWidth: width <= 649 ? width : '100%'\n }\n\n /* fallback w325 url until w6 was released */\n const fallbackSource =\n (source && source[0]) ||\n (optimized.w325 && optimized.w325['1x']) ||\n optimized.original\n\n return (\n <div\n className={makeClassName([\n [styles.root, true],\n [styles.fullscreen, fullscreen]\n ])}\n style={blockStyles}\n data-testid=\"image\"\n >\n <div\n className={styles.wrapper}\n style={pictureStyles}\n onClick={(): void => handleClick()}\n onKeyPress={(): void => handleClick()}\n role=\"button\"\n tabIndex={0}\n >\n {lazy ? (\n <>\n <Lazy threshold={0.25}>\n <RenderPicture\n fallbackSource={fallbackSource}\n source={source}\n optimized={optimized}\n alt={alt}\n display={display}\n />\n </Lazy>\n <noscript>\n <img src={fallbackSource} alt={alt} />\n </noscript>\n </>\n ) : (\n <RenderPicture\n fallbackSource={fallbackSource}\n source={source}\n optimized={optimized}\n alt={alt}\n display={display}\n />\n )}\n </div>\n </div>\n )\n}\n","import React, { useState } from 'react'\nimport { PopoverData, DotsOnImageProps, SingleDot } from './DotsOnImage.types'\nimport { Image } from '../Image'\nimport { SvgSymbol } from '../SvgSymbol'\n\nimport styles from './DotsOnImage.module.css'\n\nexport const DotsOnImage: React.FC<DotsOnImageProps> = ({\n block: { optimized, width, height, credit, display, dots }\n}) => {\n const [popover, setPopover] = useState<PopoverData>({\n title: null,\n body: null,\n show: false,\n id: null\n })\n\n const handleDotClick = (dot: SingleDot): void => {\n const shouldShow = dot.id !== popover.id\n\n setPopover({\n title: dot.title,\n body: dot.body,\n show: shouldShow,\n id: shouldShow ? dot.id : null\n })\n }\n\n return (\n <div data-testid=\"dots-on-image\" className={styles.root}>\n <div className={styles.dots}>\n {dots.map((dot) => (\n <button\n className={styles.dot}\n type=\"button\"\n key={dot.id}\n style={{\n top: `${dot.position.y}%`,\n left: `${dot.position.x}%`,\n backgroundColor: dot.icon.color\n }}\n onClick={(): void => handleDotClick(dot)}\n >\n {dot.icon.type === 'svg' && (\n <div\n className={styles.icon}\n dangerouslySetInnerHTML={{ __html: dot.icon.svg_string }}\n />\n )}\n {dot.icon.type === 'number' && dot.icon.number}\n </button>\n ))}\n </div>\n <div className={styles.image}>\n <Image\n optimized={optimized}\n width={width}\n height={height}\n alt={credit}\n display={display}\n />\n </div>\n\n {popover.show && (\n <div className={styles.popover}>\n <button\n className={styles.dismiss}\n type=\"button\"\n onClick={(): void => setPopover({ show: false })}\n >\n <SvgSymbol icon=\"cross\" size=\"unset\" />\n </button>\n <div className={styles.popoverTitle}>{popover.title}</div>\n <div\n className={styles.popoverBody}\n dangerouslySetInnerHTML={{ __html: popover.body }}\n />\n </div>\n )}\n </div>\n )\n}\n","import { ClassNames } from './makeClassName'\n\nconst makeStyleContext = (\n classNames: ClassNames,\n styleContext: string[] | string,\n styles: Record<string, string>\n): ClassNames => {\n const context = Array.isArray(styleContext)\n ? styleContext\n .filter((ctx) => styles[ctx])\n .map((ctx) => [[styles[ctx]], true])\n : [[styles[styleContext], !!styleContext && !!styles[styleContext]]]\n\n return classNames.concat(context)\n}\n\nexport default makeStyleContext\n","import React from 'react'\nimport { TagProps } from './Tag.types'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\n\nimport styles from './Tag.module.css'\n\nexport const Tag: React.FC<TagProps> = ({\n children,\n size = 'small',\n theme = 'gold',\n styleContext,\n correlation,\n onlyOn\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[size], !!size && !!styles[size]],\n [styles[theme], !!theme && !!styles[theme]],\n [styles[onlyOn], !!onlyOn && !!styles[onlyOn]],\n [styles[correlation], !!correlation && !!styles[correlation]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"tag\" className={makeClassName(classNames)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { MediaCaptionProps } from './MediaCaption.types'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\n\nimport styles from './MediaCaption.module.css'\n\nexport const MediaCaption: React.FC<MediaCaptionProps> = ({\n credit,\n caption,\n styleContext\n}) => {\n let classNames: ClassNames = [[styles.root, true]]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"media-caption\" className={makeClassName(classNames)}>\n {caption && (\n <div\n className={styles.caption}\n dangerouslySetInnerHTML={{ __html: caption }}\n />\n )}\n {credit && (\n <div\n className={styles.credit}\n dangerouslySetInnerHTML={{ __html: credit }}\n />\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { TableProps } from './Table.types'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\n\nimport { MediaCaption } from '../MediaCaption'\n\nimport styles from './Table.module.css'\n\nexport const Table: React.FC<TableProps> = ({\n styleContext,\n block: {\n rows,\n options,\n display,\n columns_widths: columnsWidth,\n table_credit: tableCredit\n }\n}) => {\n const colors = {\n '#ffffff': 'white',\n '#f5f5f5': 'gray',\n '#feeeee': 'pink',\n '#e6f3ff': 'blue',\n '#fffde6': 'yellow',\n '#fff9f2': 'orange',\n '#e7f2ef': 'green',\n '#f4f0f8': 'violet'\n }\n\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[display], !!display && !!styles[display]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"table\" className={makeClassName(classNames)}>\n <div className={styles.wrapper}>\n <div className={styles.table}>\n <div className={styles.tracks}>\n {rows.map((row, i) => {\n return (\n <div key={row.key} className={styles.row}>\n {row.cells.map((cell, j) => (\n <div\n key={cell.key}\n className={makeClassName([\n [styles.cell, true],\n [styles.header, options.header && i === 0],\n [styles[colors[cell.color]], true],\n [styles[columnsWidth[j]], true],\n [\n styles.fixedColumn,\n options.fixed_first_column && j === 0\n ]\n ])}\n dangerouslySetInnerHTML={{ __html: cell.val }}\n />\n ))}\n </div>\n )\n })}\n </div>\n </div>\n </div>\n\n {tableCredit && (\n <MediaCaption credit={tableCredit} styleContext={styleContext} />\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { MaterialNoteProps } from './MaterialNote.types'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\n\nimport styles from './MaterialNote.module.css'\n\nexport const MaterialNote: React.FC<MaterialNoteProps> = ({\n block: { data },\n styleContext\n}) => {\n let classNames: ClassNames = [[styles.root, true]]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"material-note\" className={makeClassName(classNames)}>\n {data &&\n data.map((item) => (\n <p\n className={styles[item.type]}\n key={item.id}\n dangerouslySetInnerHTML={{ __html: item.data }}\n />\n ))}\n </div>\n )\n}\n","import React from 'react'\nimport { BookmarkButtonProps } from './BookmarkButton.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { SvgSymbol } from '../SvgSymbol'\nimport styles from './BookmarkButton.module.css'\n\nexport const BookmarkButton: React.FC<BookmarkButtonProps> = ({\n styleContext,\n theme,\n isInBookmarks,\n onClick\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles.isInBookmarks, isInBookmarks],\n [styles[theme], !!theme && !!styles[theme]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"bookmark-button\" className={makeClassName(classNames)}>\n <button\n className={styles.control}\n onClick={(): void => onClick()}\n type=\"button\"\n >\n <SvgSymbol icon=\"bookmark\" size=\"unset\" />\n </button>\n </div>\n )\n}\n","import React, { useState, useEffect } from 'react'\nimport { PopoverProps } from './Popover.types'\nimport { makeClassName } from '../utils/makeClassName'\nimport styles from './Popover.module.css'\n\nexport const Popover: React.FC<PopoverProps> = ({ children, onClose }) => {\n const [visible, setVisible] = useState(true)\n\n const handleClose = (): void => {\n setVisible(false)\n setTimeout(onClose, 350)\n }\n\n const handleScroll = (): void => {\n handleClose()\n }\n\n const escFunction = (event: KeyboardEvent): void => {\n if (event.key === 'Escape') {\n handleClose()\n }\n }\n\n useEffect(() => {\n window.addEventListener('keydown', escFunction, false)\n window.addEventListener('scroll', handleScroll, false)\n\n return () => {\n window.removeEventListener('keydown', escFunction, false)\n window.removeEventListener('scroll', handleScroll, false)\n }\n }, [visible])\n\n /* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */\n return (\n <div\n data-testid=\"popover\"\n className={makeClassName([\n [styles.root, true],\n [styles.visible, visible]\n ])}\n >\n <div className={styles.overlay} onClick={(): void => handleClose()} />\n\n <div className={styles.container}>\n <button\n type=\"button\"\n className={styles.dismiss}\n onClick={(): void => handleClose()}\n aria-label=\"dismiss\"\n />\n <svg width=\"100%\" className={styles.background}>\n <defs>\n <mask id=\"myMask\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">\n <rect fill=\"white\" y=\"0\" width=\"100%\" height=\"100%\" x=\"0\" />\n <svg x=\"50%\" overflow=\"visible\">\n <g transform=\"translate(-12 0)\">\n <path d=\"M4.61852778e-14,9.76996262e-15 L9.84597532,5.80270273 C11.0992017,6.54128882 12.6546044,6.54128882 13.9078308,5.80270273 L23.7538061,9.76996262e-15 L4.61852778e-14,9.76996262e-15 Z\" />\n </g>\n </svg>\n </mask>\n </defs>\n <rect\n fill=\"#F7F7F7\"\n id=\"base-mask\"\n mask=\"url(#myMask)\"\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n />\n </svg>\n {children}\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { MetaProps } from './Meta.types'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\n\nimport styles from './Meta.module.css'\n\nexport const Meta: React.FC<MetaProps> = ({\n hasSource,\n theme,\n children,\n onlyOn,\n styleContext\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[theme], !!theme && !!styles[theme]],\n [styles[onlyOn], !!onlyOn],\n [styles.hasSource, hasSource]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"meta\" className={makeClassName(classNames)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { TimestampProps } from './Timestamp.types'\nimport dayjs from 'dayjs'\nimport 'dayjs/locale/ru'\nimport relativeTime from 'dayjs/plugin/relativeTime'\n\nimport styles from './Timestamp.module.css'\n\nexport const Timestamp: React.FC<TimestampProps> = ({\n publishedAt,\n locale = 'ru',\n type\n}) => {\n let published\n const timeFormat =\n locale === 'ru' ? 'HH:mm, D MMMM YYYY' : 'h:mm a, MMMM D, YYYY'\n\n const preparedPublishedAt = publishedAt * 1000\n\n dayjs.locale(locale)\n dayjs.extend(relativeTime)\n\n if (type === 'fromNow') {\n published = dayjs(preparedPublishedAt).fromNow()\n } else if (type === 'format') {\n published = dayjs(preparedPublishedAt).format('HH:mm')\n } else if (type === 'date') {\n published = dayjs(preparedPublishedAt).format(timeFormat)\n } else {\n throw new Error('Unknown time type')\n }\n\n return (\n <time data-testid=\"timestamp\" className={styles.root}>\n {published}\n </time>\n )\n}\n","import React, { useCallback, useEffect, useRef, useState } from 'react'\n\ntype DangerousHtmlProps = {\n className?: string\n html: string\n tagName?: keyof JSX.IntrinsicElements\n}\n\nconst DangerousHTML: React.FC<DangerousHtmlProps> = ({\n className = '',\n tagName: TagName = 'div',\n html\n}) => {\n const element = useRef<HTMLDivElement>(null)\n const [canRenderHtml, setCanRenderHtml] = useState(false)\n\n useEffect(() => {\n setCanRenderHtml(true)\n }, [])\n\n const replaceScriptElementsRecursive = useCallback((node) => {\n if (\n node.tagName === 'SCRIPT' &&\n (!node.id || node.id.indexOf('script-') !== 0)\n ) {\n const script = document.createElement('script')\n\n script.id = `script-${Math.random().toString(16).slice(2)}`\n script.innerHTML = node.innerHTML\n\n const attrs = node.attributes\n\n for (let i = 0; i < attrs.length; i += 1) {\n const { name, value } = attrs[i]\n\n script.setAttribute(name, value)\n }\n\n node.parentElement.replaceChild(script, node)\n } else {\n let i = 0\n const children = node.childNodes\n\n while (i < children.length) {\n replaceScriptElementsRecursive(children[i])\n i += 1\n }\n }\n }, [])\n\n const prepareAnchors = useCallback(() => {\n const anchors = Array.from(element.current.querySelectorAll('a'))\n\n anchors.forEach((a) => {\n a.setAttribute('target', '_blank')\n })\n }, [])\n\n useEffect(() => {\n if (\n canRenderHtml &&\n html.indexOf('script') > -1 &&\n element.current.firstElementChild\n ) {\n element.current.firstElementChild.innerHTML = html\n replaceScriptElementsRecursive(element.current.firstElementChild)\n prepareAnchors()\n }\n }, [\n canRenderHtml,\n element,\n html,\n replaceScriptElementsRecursive,\n prepareAnchors\n ])\n\n return (\n <div ref={element}>\n <TagName\n className={className}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n </div>\n )\n}\n\nexport default DangerousHTML\n","import React, { useState, useEffect, useRef } from 'react'\nimport enableInlineVideo from 'iphone-inline-video'\nimport viewportSize from '../utils/viewportSize'\nimport { MediaQuerySizes } from '../constants'\nimport { EmbedGifProps } from './EmbedBlock.types'\n\nimport styles from './EmbedBlock.module.css'\n\nexport const EmbedGif: React.FC<EmbedGifProps> = ({ gif, mp4Url, style }) => {\n const [videoFrozen, setVideoFrozen] = useState(false)\n const videoElem = useRef(null)\n\n const handleVideoTouch = (): void => {\n videoElem.current.play()\n setVideoFrozen(false)\n }\n\n const handleVideoError = (): void => {\n const video = videoElem.current\n\n video.setAttribute('poster', video.dataset.gif)\n\n setVideoFrozen(false)\n }\n\n useEffect(() => {\n const video = videoElem.current\n const { width: viewportWidth } = viewportSize()\n\n enableInlineVideo(video)\n\n if (viewportWidth >= MediaQuerySizes.MOBILE) {\n video.setAttribute('autoplay', true)\n video.play()\n } else {\n setVideoFrozen(true)\n video.pause()\n video.addEventListener('touchstart', handleVideoTouch)\n }\n\n video.addEventListener('error', handleVideoError)\n\n return (): void => {\n video.removeEventListener('touchstart', handleVideoTouch)\n video.removeEventListener('error', handleVideoError)\n }\n }, [])\n\n return (\n <div className={styles.figure}>\n <div\n className={styles.objectWrap}\n style={style}\n data-frozen={videoFrozen}\n >\n <video\n playsInline\n muted\n loop\n autoPlay\n preload=\"metadata\"\n data-gif={gif}\n ref={videoElem}\n >\n <source src={`https://meduza.io${mp4Url}`} type=\"video/mp4\" />\n </video>\n </div>\n </div>\n )\n}\n","import React, { useState } from 'react'\nimport { Image } from '../Image'\nimport { Popover } from '../Popover'\nimport { MediaCaption } from '../MediaCaption'\nimport { DotsOnImage } from '../DotsOnImage'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport DangerousHTML from '../utils/DangerousHtml'\nimport { EmbedGif } from './EmbedGif'\nimport { EmbedBlockProps } from './EmbedBlock.types'\n\nimport styles from './EmbedBlock.module.css'\n\nexport const EmbedBlock: React.FC<EmbedBlockProps> = ({\n block,\n block: {\n data,\n data: {\n html,\n display,\n only_on: onlyOn,\n provider,\n cc,\n optimized,\n small_url: small,\n large_url: large,\n gif_url: gifUrl,\n mp4_url: mp4Url\n }\n },\n styleContext,\n children\n}) => {\n const [isPopoverShown, setIsPopoverShown] = useState(false)\n const style: React.CSSProperties = {}\n const isProportional = block.data.height && block.data.width\n\n const fullWidthProviders = [\n 'youtube',\n 'vimeo',\n 'onetv',\n 'coub',\n 'facebook_video'\n ]\n\n const mobileFullwidth =\n fullWidthProviders.indexOf(provider) || block.type === 'dots_on_image'\n\n const renderCC = (context?: string | string[]): JSX.Element => (\n <MediaCaption\n credit={data.credit}\n caption={data.caption}\n styleContext={context || styleContext}\n />\n )\n\n const renderEmbed = (style: React.CSSProperties): JSX.Element => {\n switch (block.type) {\n case 'gif': {\n return <EmbedGif gif={gifUrl} mp4Url={mp4Url} style={style} />\n }\n case 'image': {\n return (\n <div className={styles.figure}>\n {(small || optimized) && (\n <Image\n fullscreen={block.data.fullscreen}\n source={!optimized && [small, large]}\n optimized={block.data.optimized}\n width={block.data.width}\n height={block.data.height}\n alt={block.data.caption}\n display={block.data.display}\n lazy={block.data.lazy}\n />\n )}\n </div>\n )\n }\n case 'game_embed': {\n return (\n <div className={styles.gameEmbed}>\n <iframe\n src={block.data.game_src}\n id={block.data.game_id}\n title=\"Game embed\"\n />\n </div>\n )\n }\n case 'dots_on_image': {\n return (\n <div className={styles.figure}>\n <DotsOnImage block={data} />\n </div>\n )\n }\n\n default: {\n return (\n <div className={styles.object}>\n <div className={styles.wrapper} style={style}>\n <DangerousHTML className={styles.objectWrap} html={html} />\n </div>\n </div>\n )\n }\n }\n }\n\n if (isProportional) {\n style.paddingBottom = `${(block.data.height / block.data.width) * 100}%`\n style.height = 0\n }\n\n let classNames: ClassNames = [\n [styles.root, true],\n [styles.cc, cc],\n [styles[display], !!display && styles[display]],\n [styles[provider], !!provider && !!styles[provider]],\n [styles[onlyOn], !!onlyOn && styles[onlyOn]],\n [styles.mobileFullwidth, mobileFullwidth],\n [styles.proportional, isProportional]\n ]\n\n // Убираем из контекста все, что не начинается с приставки isIn,\n // чтобы не применились лишние модификаторы\n // TODO: в w6 модификаторы должны передаваться явно\n\n if (styleContext) {\n const filteredContext = Object.keys(styleContext)\n .filter((key) => key.startsWith('isIn') && styles[key])\n .reduce((acc, key) => {\n acc.push([styles[key], true])\n\n return acc\n }, [])\n classNames = makeStyleContext(classNames, filteredContext, styles)\n }\n\n return (\n <figure className={makeClassName(classNames)}>\n {children && (\n <div className={styles.object}>\n <div className={styles.wrapper} style={style}>\n <div className={styles.objectWrap}>{children}</div>\n </div>\n </div>\n )}\n\n {!children && renderEmbed(style)}\n\n {cc === 'default' && <figcaption>{renderCC()}</figcaption>}\n\n {cc === 'button' && (\n <button\n className={styles.control}\n type=\"button\"\n aria-label=\"Open\"\n onClick={(): void => {\n setIsPopoverShown(!isPopoverShown)\n }}\n />\n )}\n\n {cc === 'button' && isPopoverShown && (\n <Popover\n onClose={(): void => {\n setIsPopoverShown(false)\n }}\n >\n {renderCC('isInPopover')}\n </Popover>\n )}\n </figure>\n )\n}\n","import React, { useEffect, useRef } from 'react'\nimport { EmbedBlockProps } from './EmbedBlock.types'\nimport { EmbedBlock } from './EmbedBlock'\n\nexport const IframeBlock: React.FC<EmbedBlockProps> = ({\n block,\n block: { id },\n styleContext,\n lang = 'ru'\n}) => {\n const element = useRef(null)\n\n const renderIframe = (): void => {\n const rootEl = document.createElement('div')\n const contentEl = document.createElement('div')\n const scriptEl = document.createElement('script')\n const style = document.createElement('style')\n const range = document.createRange()\n\n range.setStart(contentEl, 0)\n contentEl.setAttribute('id', 'content')\n scriptEl.textContent = `\n function getDocHeight() {\n var doc = document;\n var body = doc.body;\n var html = doc.documentElement;\n var height = Math.max( body.scrollHeight, body.offsetHeight,\n html.clientHeight, html.scrollHeight, html.offsetHeight );\n\n doc.body.style.margin=\"0\";\n\n return document.getElementById('content') ? document.getElementById('content').offsetHeight : height;\n }\n\n function sendDocHeightMsg() {\n var height = getDocHeight();\n var message = JSON.stringify({\n action: {\n type: \"UPDATE_HEIGHT\",\n payload: {\n id: \"${block.id}\",\n height: height\n }\n }\n });\n parent.postMessage(\"mdzMaterialEmbedHeight=\" + message, '*');\n }\n\n setInterval(sendDocHeightMsg, 300);\n `\n\n style.type = 'text/css'\n style.innerHTML =\n block.type === 'embed_code'\n ? '.twitter-tweet { padding-top: 15px; margin: 0 !important; }'\n : '.twitter-tweet { margin: 0 !important; } .fb-post { display: block; } .instagram-media { min-width: 0 !important; }'\n\n contentEl.appendChild(range.createContextualFragment(block.data.html))\n rootEl.appendChild(scriptEl)\n rootEl.appendChild(contentEl)\n contentEl.appendChild(style)\n\n const frame = element.current.querySelector('iframe').contentDocument\n\n frame.open()\n frame.close()\n frame.documentElement.setAttribute('lang', lang)\n frame.body.appendChild(rootEl)\n }\n\n useEffect(() => {\n renderIframe()\n }, [])\n\n return (\n <EmbedBlock block={block} styleContext={styleContext}>\n <div\n ref={element}\n dangerouslySetInnerHTML={{\n __html: `<iframe id=${id} frameBorder=\"0\" scrolling=\"no\"></iframe>`\n }}\n />\n </EmbedBlock>\n )\n}\n","import React from 'react'\nimport { EmbedBlockProps } from './EmbedBlock.types'\nimport { EmbedBlock } from './EmbedBlock'\nimport { IframeBlock } from './IframeBlock'\n\nexport const EmbedBlockContainer: React.FC<EmbedBlockProps> = ({\n block,\n styleContext,\n lang\n}) => {\n if (block.data.wrap_with_iframe) {\n return <IframeBlock block={block} styleContext={styleContext} lang={lang} />\n }\n return <EmbedBlock block={block} styleContext={styleContext} />\n}\n","import React from 'react'\nimport { QuoteBlockProps } from './QuoteBlock.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './QuoteBlock.module.css'\n\nexport const QuoteBlock: React.FC<QuoteBlockProps> = ({\n block: { data },\n styleContext\n}) => {\n let classNames: ClassNames = [[styles.root, true]]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"quote-block\" className={makeClassName(classNames)}>\n <p dangerouslySetInnerHTML={{ __html: data }} />\n </div>\n )\n}\n","import React from 'react'\nimport { CardTitleProps } from './CardTitle.types'\nimport { makeClassName } from '../utils/makeClassName'\nimport styles from './CardTitle.module.css'\n\nexport const CardTitle: React.FC<CardTitleProps> = ({\n block: {\n data: { only_on: onlyOn, index, text }\n },\n styleContext\n}) => {\n return (\n <div\n data-testid=\"card-title\"\n className={makeClassName([\n [styles.root, true],\n [styles[onlyOn], !!onlyOn],\n [styles[styleContext], !!styleContext && !!styles[styleContext]]\n ])}\n >\n <div className={styles.index}>{index}</div>\n <h3 className={styles.title}>{text}</h3>\n </div>\n )\n}\n","import React from 'react'\nimport { ChapterBlockProps } from './ChapterBlock.types'\nimport { makeClassName } from '../utils/makeClassName'\nimport styles from './ChapterBlock.module.css'\n\nexport const ChapterBlock: React.FC<ChapterBlockProps> = ({\n block: { data, only_on: onlyOn },\n styleContext\n}) => {\n return (\n <div\n data-testid=\"chapter-block\"\n className={makeClassName([\n [styles.root, true],\n [styles[onlyOn], !!onlyOn]\n ])}\n >\n <div\n className={makeClassName([\n [styles.subtitle, true],\n [styles[styleContext], !!styleContext && !!styles[styleContext]]\n ])}\n dangerouslySetInnerHTML={{ __html: data }}\n />\n </div>\n )\n}\n","import React from 'react'\nimport { SimpleTitleProps } from './SimpleTitle.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './SimpleTitle.module.css'\n\nexport const SimpleTitle: React.FC<SimpleTitleProps> = ({\n block: {\n data: { first },\n only_on: onlyOn\n },\n styleContext\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], true]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"simple-title\" className={makeClassName(classNames)}>\n {first}\n </div>\n )\n}\n","import React from 'react'\nimport { RichTitleProps } from './RichTitle.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './RichTitle.module.css'\n\nexport const RichTitle: React.FC<RichTitleProps> = ({\n block: {\n only_on: onlyOn,\n data: { featured, first, second }\n },\n styleContext\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], true],\n [styles.featured, !!featured]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <h1 data-testid=\"rich-title\" className={makeClassName(classNames)}>\n {first}\n {second && <span> {second}</span>}\n </h1>\n )\n}\n","import React from 'react'\nimport { SimpleBlockProps } from './SimpleBlock.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './SimpleBlock.module.css'\n\nexport const SimpleBlock: React.FC<SimpleBlockProps> = ({\n block: { data, type, only_on: onlyOn },\n styleContext\n}) => {\n let TagName\n\n let classNames: ClassNames = [\n [styles[type], !!type && !!styles[type]],\n [styles[onlyOn], true]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n switch (type) {\n case 'context_p':\n case 'lead':\n case 'note_caption':\n case 'note_credit': {\n TagName = 'p'\n break\n }\n case 'lead_hr': {\n TagName = 'div'\n break\n }\n default:\n TagName = type\n }\n return (\n <TagName\n className={makeClassName(classNames)}\n dangerouslySetInnerHTML={{ __html: data }}\n />\n )\n}\n","import React from 'react'\nimport { ListBlockProps } from './ListBlock.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './ListBlock.module.css'\n\nexport const ListBlock: React.FC<ListBlockProps> = ({\n block: { type, data, only_on: onlyOn },\n styleContext\n}) => {\n const TagName = type\n\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], true],\n [styles[type], !!type && !!styles[type]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <TagName className={makeClassName(classNames)}>\n {data.map((item, index) => (\n <li key={index} dangerouslySetInnerHTML={{ __html: item }} />\n ))}\n </TagName>\n )\n}\n","import React from 'react'\nimport { RelatedBlockProps } from './RelatedBlock.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './RelatedBlock.module.css'\n\nexport const RelatedBlock: React.FC<RelatedBlockProps> = ({\n block: {\n data: { title, related },\n only_on: onlyOn\n },\n styleContext\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], true]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"related-block\" className={makeClassName(classNames)}>\n <h3 className={styles.header}>{title}</h3>\n <ul className={styles.items}>\n {related.map((item, index) => (\n <li key={item.id || index} className={styles[item.layout]}>\n <a\n href={item.full_url || `/${item.url}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span className={styles.first}>{item.title}</span>\n {item.second_title && ' '}\n {item.second_title && <span>{item.second_title}</span>}\n </a>\n </li>\n ))}\n </ul>\n </div>\n )\n}\n","import React from 'react'\nimport { SourceBlockProps } from './SourceBlock.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './SourceBlock.module.css'\n\nexport const SourceBlock: React.FC<SourceBlockProps> = ({\n block: {\n only_on: onlyOn,\n data: { quote, origin, url }\n },\n styleContext\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], true]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <blockquote\n data-testid=\"source-block\"\n cite={url}\n className={makeClassName(classNames)}\n >\n <a\n className={styles.text}\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {quote.map((item, index) => (\n <p key={index} dangerouslySetInnerHTML={{ __html: item.data }} />\n ))}\n <footer>\n <cite className={styles.origin}>{origin}</cite>\n </footer>\n </a>\n </blockquote>\n )\n}\n","import React from 'react'\nimport { GroupedBlockProps } from './GroupedBlock.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { EmbedBlockContainer } from '../EmbedBlock'\nimport { MediaCaption } from '../MediaCaption'\n\nimport styles from './GroupedBlock.module.css'\n\nexport const GroupedBlock: React.FC<GroupedBlockProps> = ({\n block,\n block: { only_on: onlyOn },\n styleContext\n}) => {\n const maxHeight = Math.min(...block.data.map((item) => item.data.height))\n\n const normalizedBoxesWidth = block.data.map(\n (item) => item.data.width / (item.data.height / maxHeight)\n )\n\n const sumWidth = normalizedBoxesWidth.reduce((sum, x) => sum + x)\n\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], true],\n [styles.hasFigcaption, block.cc === 'default'],\n [styles[block.display], !!block.display && styles[block.display]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"grouped-block\" className={makeClassName(classNames)}>\n <div className={styles.items}>\n {block.data.map((item, index) => {\n const percentWidth = (normalizedBoxesWidth[index] / sumWidth) * 100\n\n return (\n <div\n className={styles.item}\n key={item.id}\n style={{ width: `${percentWidth}%` }}\n >\n <EmbedBlockContainer\n block={item}\n styleContext=\"isInGroupedBlock\"\n />\n </div>\n )\n })}\n </div>\n {block.cc && (\n <figcaption className={styles.figcaption}>\n <MediaCaption\n credit={block.credit}\n caption={block.caption}\n styleContext={styleContext}\n />\n </figcaption>\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { MetaItemProps } from './MetaItem.types'\nimport { makeClassName } from '../utils/makeClassName'\nimport styles from './MetaItem.module.css'\n\nexport const MetaItem: React.FC<MetaItemProps> = ({\n hasSource,\n type,\n children,\n bullets\n}) => {\n const classNames = [\n [styles.root, true],\n [styles[type], !!type && !!styles[type]],\n [styles.hasSource, !!hasSource],\n [styles.hasBullets, !!bullets]\n ]\n\n return (\n <div data-testid=\"meta-item\" className={makeClassName(classNames)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { MetaItemLiveProps } from './MetaItemLive.types'\nimport { makeClassName } from '../utils/makeClassName'\nimport styles from './MetaItemLive.module.css'\n\nexport const MetaItemLive: React.FC<MetaItemLiveProps> = ({\n theme = 'gold'\n}) => {\n const classNames = [\n [styles.root, true],\n [styles[theme], !!theme && styles[theme]]\n ]\n\n return (\n <div\n data-testid=\"meta-item-live\"\n data-meta=\"live\"\n className={makeClassName(classNames)}\n >\n <div className={styles.frame} />\n </div>\n )\n}\n","import React from 'react'\nimport { DocumentItemsCountProps } from './DocumentItemsCount.types'\nimport pluralize from '../utils/pluralize'\n\nimport styles from './DocumentItemsCount.module.css'\n\nexport const DocumentItemsCount: React.FC<DocumentItemsCountProps> = ({\n type,\n lang = 'ru',\n items,\n children\n}) => {\n const i18n = {\n ru: {\n card: {\n one: 'карточка',\n two: 'карточки',\n five: 'карточек'\n },\n podcast: {\n one: 'эпизод',\n two: 'эпизода',\n five: 'эпизодов'\n }\n },\n en: {\n card: {\n one: 'card',\n two: 'cards',\n five: 'cards'\n },\n podcast: {\n one: 'episode',\n two: 'episodes',\n five: 'episodes'\n }\n }\n }\n\n const itemsCount = `${items} ${pluralize(\n items,\n i18n[lang][type].one,\n i18n[lang][type].two,\n i18n[lang][type].five\n )}`\n\n return (\n <div data-testid=\"document-items-count\" className={styles.root}>\n {children}\n <span className={styles.items}>{itemsCount}</span>\n </div>\n )\n}\n","const pluralize = (\n number: number,\n one: string,\n two: string,\n five: string\n): string => {\n let n = Math.abs(number)\n n %= 100\n\n if (n >= 5 && n <= 20) {\n return five\n }\n\n n %= 10\n\n if (n === 1) {\n return one\n }\n\n if (n >= 2 && n <= 4) {\n return two\n }\n\n return five\n}\n\nexport default pluralize\n","import React from 'react'\nimport { MetaContainerProps } from './Meta.types'\nimport { Meta } from './'\nimport { MetaItem } from '../MetaItem'\nimport { MetaItemLive } from '../MetaItemLive'\nimport { DocumentItemsCount } from '../DocumentItemsCount'\nimport { BookmarkButton } from '../BookmarkButton'\nimport { Timestamp } from '../Timestamp'\nimport { SvgSymbol } from '../SvgSymbol'\n\nimport styles from './Meta.module.css'\n\nexport const MetaContainer: React.FC<MetaContainerProps> = ({\n lang,\n block,\n isRead,\n isListened,\n bookmarkAction,\n isInBookmarks,\n block: {\n data: { components, theme }\n },\n styleContext\n}) => {\n const themeColor =\n styleContext && styleContext.indexOf('dark') !== -1 ? 'light' : 'unset'\n const isPodcast = styleContext && styleContext.indexOf('podcast') !== -1\n const isSlides = styleContext && styleContext.indexOf('slide') !== -1\n\n const hasSource = !!components.find((item) => item.type === 'source_name')\n\n return (\n <Meta\n styleContext={styleContext}\n theme={theme || themeColor}\n onlyOn={block.only_on}\n hasSource={hasSource}\n >\n {components.map((component) => {\n switch (component.type) {\n case 'source_name': {\n return (\n <MetaItem hasSource={hasSource} bullets key={component.id}>\n <>\n {lang === 'ru' ? 'Источник: ' : 'Source: '}\n {component.url && (\n <a\n href={component.url}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {component.text}\n </a>\n )}\n {!component.url && component.text}\n </>\n </MetaItem>\n )\n }\n case 'duration': {\n return (\n <MetaItem hasSource={hasSource} bullets key={component.id}>\n <>\n <SvgSymbol icon=\"podcast\" size=\"small\" />\n {component.text}\n </>\n </MetaItem>\n )\n }\n case 'datetime': {\n return (\n <MetaItem\n hasSource={hasSource}\n bullets\n key={component.id}\n type=\"datetime\"\n >\n <Timestamp\n publishedAt={component.datetime}\n type=\"date\"\n locale={lang}\n />\n </MetaItem>\n )\n }\n\n case 'items_count': {\n return (\n <MetaItem hasSource={hasSource} bullets key={component.id}>\n <DocumentItemsCount\n items={component.count}\n type={isPodcast ? 'podcast' : 'card'}\n lang={lang}\n >\n <SvgSymbol icon=\"card\" size=\"unset\" />\n </DocumentItemsCount>\n </MetaItem>\n )\n }\n case 'broadcast_active': {\n return (\n <MetaItem hasSource={hasSource} bullets key={component.id}>\n <>\n <MetaItemLive /> Прямой эфир\n </>\n </MetaItem>\n )\n }\n case 'broadcast': {\n return (\n <MetaItem hasSource={hasSource} bullets key={component.id}>\n <>\n {component.with_icon && <MetaItemLive />}\n\n {component.label}\n </>\n </MetaItem>\n )\n }\n\n default: {\n return null\n }\n }\n })}\n {(isRead || isListened) && (\n <MetaItem\n hasSource={hasSource}\n bullets\n type={isListened ? 'listened' : 'read'}\n >\n <SvgSymbol icon={isListened ? 'listened' : 'read'} size=\"unset\" />\n </MetaItem>\n )}\n\n {isSlides && lang === 'ru' && (\n <div className={styles.bookmark}>\n <BookmarkButton\n isInBookmarks={isInBookmarks}\n onClick={(): void => bookmarkAction('bookmark', 'top')}\n />\n </div>\n )}\n </Meta>\n )\n}\n","import React from 'react'\nimport { RenderBlocksProps } from './RenderBlocks.types'\nimport { Tag } from '../Tag'\nimport { SimpleTitle } from '../SimpleTitle'\nimport { RichTitle } from '../RichTitle'\nimport { SimpleBlock } from '../SimpleBlock'\nimport { ListBlock } from '../ListBlock'\nimport { ChapterBlock } from '../ChapterBlock'\nimport { QuoteBlock } from '../QuoteBlock'\nimport { CardTitle } from '../CardTitle'\nimport { RelatedBlock } from '../RelatedBlock'\nimport { SourceBlock } from '../SourceBlock'\nimport { EmbedBlockContainer } from '../EmbedBlock'\nimport { GroupedBlock } from '../GroupedBlock'\nimport { MetaContainer } from '../Meta/MetaContainer'\nimport { Table } from '../Table'\nimport { MaterialNote } from '../MaterialNote'\n\nexport const RenderBlocks: React.FC<RenderBlocksProps> = ({\n block,\n styleContext,\n lang,\n isRead,\n isListened,\n bookmarkAction,\n isInBookmarks\n}) => {\n switch (block.type) {\n case 'tag': {\n return (\n <Tag\n size=\"large\"\n onlyOn={block.only_on}\n theme={block.data.theme}\n styleContext={styleContext}\n >\n {block.data.text}\n </Tag>\n )\n }\n\n case 'simple_title': {\n return <SimpleTitle block={block} styleContext={styleContext} />\n }\n\n case 'rich_title': {\n return <RichTitle block={block} styleContext={styleContext} />\n }\n\n case 'meta': {\n return (\n <MetaContainer\n block={block}\n lang={block.data.lang}\n styleContext={styleContext}\n isRead={isRead}\n isListened={isListened}\n isInBookmarks={isInBookmarks}\n bookmarkAction={bookmarkAction}\n />\n )\n }\n\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'blockquote':\n case 'p':\n case 'context_p':\n case 'lead':\n case 'lead_hr': {\n return <SimpleBlock block={block} styleContext={styleContext} />\n }\n\n case 'quote':\n return <QuoteBlock block={block} styleContext={styleContext} />\n\n case 'ol':\n case 'ul': {\n return <ListBlock block={block} styleContext={styleContext} />\n }\n\n case 'chapter-subtitle': {\n return <ChapterBlock block={block} styleContext={styleContext} />\n }\n\n case 'card_title': {\n return <CardTitle block={block} styleContext={styleContext} />\n }\n\n case 'related': {\n return <RelatedBlock block={block} styleContext={styleContext} />\n }\n\n case 'source':\n return <SourceBlock block={block} styleContext={styleContext} />\n\n case 'table':\n return <Table block={block} styleContext={styleContext} />\n\n case 'embed':\n case 'embed_code':\n case 'game_embed':\n case 'image':\n case 'dots_on_image':\n case 'gif':\n return (\n <EmbedBlockContainer\n block={block}\n styleContext={styleContext}\n lang={lang}\n />\n )\n case 'grouped':\n return <GroupedBlock block={block} styleContext={styleContext} />\n\n case 'material_note':\n return <MaterialNote block={block} styleContext={styleContext} />\n\n default: {\n return null\n }\n }\n}\n","import React, { useState } from 'react'\nimport { CoverProps } from './Cover.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport generateGradient from '../utils/generateGradient'\nimport { RenderBlocks } from '../RenderBlocks'\nimport { MediaCaption } from '../MediaCaption'\nimport { Image } from '../Image'\nimport { Popover } from '../Popover'\n\nimport styles from './Cover.module.css'\n\nexport const Cover: React.FC<CoverProps> = ({\n block: {\n only_on: onlyOn,\n data: {\n blocks,\n cover: { credit, caption, urls, mobile_ratio: mobileRatio, gradients, cc }\n }\n },\n styleContext\n}) => {\n const [isPopoverShown, setIsPopoverShown] = useState(false)\n\n const style: React.CSSProperties = {}\n\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], !!onlyOn && !!styles[onlyOn]]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n if (gradients) {\n const theme = [gradients.text_rgb === '0,0,0' ? 'dark' : 'light']\n\n classNames = makeStyleContext(classNames, theme, styles)\n\n style.backgroundImage = generateGradient(gradients.bg_rgb)\n }\n\n const renderCC = (context?: string): JSX.Element => (\n <MediaCaption\n credit={credit}\n caption={caption}\n styleContext={context || styleContext}\n />\n )\n\n return (\n <div data-testid=\"cover\" className={makeClassName(classNames)}>\n <div className={styles.image}>\n <Image optimized={urls} ratio={mobileRatio} display=\"narrow\" />\n </div>\n <div className={styles.body} style={style}>\n {blocks.map((item) => (\n <RenderBlocks\n key={item.id}\n block={item}\n styleContext={styleContext}\n />\n ))}\n </div>\n {cc === 'button' && (\n <button\n className={styles.control}\n type=\"button\"\n aria-label=\"Open\"\n onClick={(): void => {\n setIsPopoverShown(!isPopoverShown)\n }}\n />\n )}\n\n {cc === 'button' && isPopoverShown && (\n <Popover\n onClose={(): void => {\n setIsPopoverShown(false)\n }}\n >\n {renderCC('isInPopover')}\n </Popover>\n )}\n </div>\n )\n}\n","const generateGradient = (color: string): string => {\n const gradientSteps = [\n [0, 7],\n [0.08, 12],\n [0.16, 17],\n [0.22, 21],\n [0.32, 26],\n [0.42, 32],\n [0.52, 38],\n [0.62, 47],\n [0.72, 57],\n [0.82, 65],\n [1, 82]\n ]\n\n const gradient = gradientSteps.map((i) => `rgba(${color}, ${i[0]}) ${i[1]}%`)\n\n return `linear-gradient(-180deg, ${gradient})`\n}\n\nexport default generateGradient\n","import React from 'react'\nimport { HalfBlockProps } from './HalfBlock.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { RenderBlocks } from '../RenderBlocks'\nimport { Image } from '../Image'\nimport { MediaCaption } from '../MediaCaption'\n\nimport styles from './HalfBlock.module.css'\n\nexport const HalfBlock: React.FC<HalfBlockProps> = ({\n block: {\n only_on: onlyOn,\n data,\n data: {\n cover: { optimized, ratio, credit, caption }\n }\n },\n styleContext\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], true]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"half-block\" className={makeClassName(classNames)}>\n <div className={styles.main}>\n <div className={styles.image}>\n <Image optimized={optimized} ratio={ratio} display=\"super_full\" />\n </div>\n <div className={styles.body}>\n {data.blocks.map((item) => (\n <RenderBlocks key={item.id} block={item} styleContext={['rich']} />\n ))}\n </div>\n </div>\n <div className={styles.footer}>\n <MediaCaption\n credit={credit}\n caption={caption}\n styleContext={styleContext}\n />\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { ImportantLeadProps } from './ImportantLead.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { RenderBlocks } from '../RenderBlocks'\n\nimport styles from './ImportantLead.module.css'\n\nexport const ImportantLead: React.FC<ImportantLeadProps> = ({\n block: { only_on: onlyOn, data },\n styleContext\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], !!onlyOn]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"important-lead\" className={makeClassName(classNames)}>\n {data.map((item) => (\n <RenderBlocks\n key={item.id}\n block={item}\n styleContext=\"isInImportantLead\"\n />\n ))}\n </div>\n )\n}\n","import React, { useState, useRef } from 'react'\nimport { SpoilerProps } from './Spoiler.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport postMessage from '../utils/postMessage'\nimport { RenderBlocks } from '../RenderBlocks'\nimport { Button } from '../Button'\nimport { SvgSymbol } from '../SvgSymbol'\n\nimport styles from './Spoiler.module.css'\n\nexport const Spoiler: React.FC<SpoilerProps> = ({\n block: {\n display,\n button,\n only_on: onlyOn,\n btn_title: buttonTitle,\n title,\n blocks\n },\n styleContext\n}) => {\n const [spoiled, setSpoiled] = useState(false)\n const ref = useRef(null)\n\n const handleButtonClick = (): void => {\n setSpoiled(!spoiled)\n\n if (spoiled) {\n postMessage('closeSpoiler', 'click')\n const rect = ref.current.getBoundingClientRect()\n if (rect.top < 0) {\n ref.current.scrollIntoView({ behavior: 'smooth' })\n }\n } else {\n postMessage('openSpoiler', 'click')\n }\n }\n\n let classNames: ClassNames = [\n [styles.root, true],\n [styles[onlyOn], !!onlyOn],\n [styles[display], !!display && styles[display]],\n [[styles.spoiled], !!spoiled]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n const buttonCollapse = button ? button.collapse : 'Свернуть'\n const buttonExpande = button ? button.expand : buttonTitle\n\n return (\n <div ref={ref} className={makeClassName(classNames)} data-testid=\"spoiler\">\n <div className={styles.header}>{title && <h3>{title}</h3>}</div>\n <div className={styles.body}>\n {blocks.map((item) => (\n <RenderBlocks\n key={item.id}\n block={item}\n styleContext={styleContext}\n />\n ))}\n </div>\n <div className={styles.footer}>\n <Button\n size=\"default\"\n theme=\"gray\"\n onClick={(): void => handleButtonClick()}\n styleContext=\"isInSpoiler\"\n >\n {spoiled ? buttonCollapse : buttonExpande}\n <SvgSymbol icon=\"arrow\" />\n </Button>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { DropdownProps } from './Dropdown.types'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\nimport makeStyleContext from '../utils/makeStyleContext'\n\nimport styles from './Dropdown.module.css'\n\nexport const Menu: React.FC<DropdownProps> = ({ children }) => {\n return (\n <div data-testid=\"dropdown\" className={styles.menu}>\n {children}\n </div>\n )\n}\n\nexport const Dropdown: React.FC<DropdownProps> = ({\n children,\n active,\n styleContext\n}) => {\n let classNames: ClassNames = [\n [styles.root, true],\n [styles.active, !!active && !!styles.active]\n ]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n return (\n <div data-testid=\"dropdown\" className={makeClassName(classNames)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { MaterialTitleProps } from './MaterialTitle.types'\n\nimport styles from './MaterialTitle.module.css'\n\nexport const Primary: React.FC<MaterialTitleProps> = ({ children }) => {\n return <span className={styles.primary}>{children}</span>\n}\n\nexport const Secondary: React.FC<MaterialTitleProps> = ({ children }) => {\n return <span className={styles.secondary}>{children}</span>\n}\n\nexport const MaterialTitle: React.FC<MaterialTitleProps> = ({ children }) => {\n return (\n <h1 className={styles.root} data-testid=\"material-title\">\n {children}\n </h1>\n )\n}\n","import React from 'react'\nimport { RawHtmlBlockProps } from './RawHtmlBlock.types'\nimport { ImportantLead } from '../ImportantLead'\nimport { RenderBlocks } from '../RenderBlocks'\nimport { Spoiler } from '../Spoiler'\nimport { HalfBlock } from '../HalfBlock'\nimport { Cover } from '../Cover'\nimport { BlockProvider } from '../utils/BlockContext'\n\nexport const RawHtmlBlock: React.FC<RawHtmlBlockProps> = ({\n block,\n styleContext,\n isRead,\n isListened,\n isInBookmarks,\n bookmarkAction,\n lightBox\n}) => {\n const context = {\n lightBox: lightBox || null\n }\n\n switch (block.type) {\n case 'important_lead': {\n return <ImportantLead block={block} styleContext={styleContext} />\n }\n\n case 'spoiler': {\n return (\n <BlockProvider value={context}>\n <Spoiler block={block} styleContext={styleContext} />\n </BlockProvider>\n )\n }\n\n case 'cover': {\n return <Cover block={block} styleContext={styleContext} />\n }\n\n case 'half': {\n return <HalfBlock block={block} styleContext={styleContext} />\n }\n\n default: {\n return (\n <BlockProvider value={context}>\n <RenderBlocks\n block={block}\n styleContext={styleContext}\n isRead={isRead}\n isListened={isListened}\n isInBookmarks={isInBookmarks}\n bookmarkAction={bookmarkAction}\n />\n </BlockProvider>\n )\n }\n }\n}\n","import React from 'react'\nimport { SwitcherProps } from './Switcher.types'\nimport { makeClassName } from '../utils/makeClassName'\nimport styles from './Switcher.module.css'\n\nexport const Switcher: React.FC<SwitcherProps> = ({\n enabled,\n children,\n childrenPosition = 'left',\n onChange,\n styleContext,\n theme = 'light'\n}) => (\n <label\n data-testid=\"switcher\"\n className={makeClassName([\n [styles.root, true],\n [styles[theme], !!styles[theme]],\n [styles[styleContext], !!styles[styleContext]]\n ])}\n >\n {children && childrenPosition === 'left' && (\n <div\n className={makeClassName([\n [styles.children, true],\n [styles.left, true]\n ])}\n >\n {children}\n </div>\n )}\n <input\n className={styles.input}\n type=\"checkbox\"\n checked={enabled}\n onChange={onChange}\n />\n <span className={styles.control}>\n <span className={styles.knob} />\n </span>\n {children && childrenPosition === 'right' && (\n <div\n className={makeClassName([\n [styles.children, true],\n [styles.right, true]\n ])}\n >\n {children}\n </div>\n )}\n </label>\n)\n","import React, { Children } from 'react'\nimport { ToolbarProps } from './Toolbar.types'\nimport makeStyleContext from '../utils/makeStyleContext'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\n\nimport styles from './Toolbar.module.css'\n\nexport const Toolbar: React.FC<ToolbarProps> = ({ children, styleContext }) => {\n let classNames: ClassNames = [[styles.root, true]]\n\n if (styleContext) {\n classNames = makeStyleContext(classNames, styleContext, styles)\n }\n\n const renderItems = (): JSX.Element[] =>\n Children.map(children, (item: JSX.Element, index) => (\n <li className={styles.item} key={`${index}-${item.props.type}`}>\n {React.cloneElement(item)}\n </li>\n ))\n\n return (\n <div data-testid=\"toolbar\" className={makeClassName(classNames)}>\n <ul className={styles.list}>{renderItems()}</ul>\n </div>\n )\n}\n","import React from 'react'\nimport { ToolbarButtonProps } from './ToolbarButton.types'\nimport { SvgSymbol } from '../SvgSymbol/'\nimport { makeClassName, ClassNames } from '../utils/makeClassName'\n\nimport styles from './ToolbarButton.module.css'\n\nexport const ToolbarButton: React.FC<ToolbarButtonProps> = ({\n children,\n type,\n theme,\n isActive,\n onClick\n}) => {\n const classNames: ClassNames = [\n [styles.root, true],\n [styles[type], !!styles[type]],\n [styles[theme], !!styles[theme] && !!theme],\n [styles.isActive, !!isActive]\n ]\n\n return (\n <button\n data-testid=\"toolbar-button\"\n className={makeClassName(classNames)}\n type=\"button\"\n onClick={(): void => onClick(type)}\n >\n <SvgSymbol size=\"medium\" icon={type} styleContext=\"isInToolbar\" />\n {children && <span className={styles.text}>{children}</span>}\n </button>\n )\n}\n"],"names":["makeClassName","list","filter","map","join","Loader","React","width","height","viewBox","xmlns","d","opacity","fillRule","attributeName","type","from","to","dur","repeatCount","Button","theme","size","state","styleContext","disabled","onClick","children","className","styles","root","loader","icons","meduzaLogo","content","menu","fb","tw","vk","ok","tg","meduzaSymbol","backward","forward","download","play","pause","speedHalf","speedOne","speedOneHalf","speedTwo","podcastBookmark","reaction","cross","link","search","card","podcast","arrow","brent","user","bookmark","receipt","read","listened","SvgSymbol","icon","data","xmlnsXlink","dangerouslySetInnerHTML","__html","BlockContext","createContext","lightBox","BlockProvider","Provider","window","innerWidth","document","documentElement","clientWidth","body","innerHeight","clientHeight","postMessage","element","action","target","top","msg","POST_MESSAGE_PREFIX","JSON","stringify","imageBreakpoints","imageConditionalKeys","xs","superFull","full","narrow","Lazy","useInView","threshold","ref","inView","entry","useState","visible","setVisible","useEffect","boundingClientRect","y","RenderPicture","source","fallbackSource","optimized","alt","display","fallback","setFallback","HTMLPictureElement","s","keys","replace","str","toUpperCase","media","srcSet","w325","original","key","breakpoint","Fragment","src","Image","lazy","fullscreen","ratio","useContext","handleClick","viewportSize","show","pictureStyles","paddingBottom","blockStyles","maxWidth","style","onKeyPress","role","tabIndex","DotsOnImage","block","credit","dots","title","id","popover","setPopover","dot","position","left","x","backgroundColor","color","shouldShow","handleDotClick","svg_string","number","image","dismiss","popoverTitle","popoverBody","makeStyleContext","classNames","context","Array","isArray","ctx","concat","Tag","correlation","onlyOn","MediaCaption","caption","Table","rows","options","columnsWidth","columns_widths","tableCredit","table_credit","colors","wrapper","table","tracks","row","i","cells","cell","j","header","fixedColumn","fixed_first_column","val","MaterialNote","item","BookmarkButton","isInBookmarks","control","Popover","onClose","handleClose","setTimeout","handleScroll","escFunction","event","addEventListener","removeEventListener","fill","overflow","transform","mask","Meta","hasSource","Timestamp","published","locale","timeFormat","preparedPublishedAt","publishedAt","dayjs","extend","relativeTime","fromNow","format","Error","DangerousHTML","tagName","TagName","html","useRef","canRenderHtml","setCanRenderHtml","replaceScriptElementsRecursive","useCallback","node","indexOf","childNodes","length","script","createElement","Math","random","toString","slice","innerHTML","attrs","attributes","setAttribute","name","value","parentElement","replaceChild","prepareAnchors","current","querySelectorAll","forEach","a","firstElementChild","EmbedGif","gif","mp4Url","videoFrozen","setVideoFrozen","videoElem","handleVideoTouch","handleVideoError","video","dataset","viewportWidth","enableInlineVideo","figure","objectWrap","playsInline","muted","loop","autoPlay","preload","EmbedBlock","only_on","provider","cc","small","small_url","large","large_url","gifUrl","gif_url","mp4_url","isPopoverShown","setIsPopoverShown","isProportional","mobileFullwidth","renderCC","proportional","filteredContext","Object","startsWith","reduce","acc","push","object","gameEmbed","game_src","game_id","renderEmbed","IframeBlock","lang","rootEl","contentEl","scriptEl","range","createRange","setStart","textContent","appendChild","createContextualFragment","frame","querySelector","contentDocument","open","close","renderIframe","EmbedBlockContainer","wrap_with_iframe","QuoteBlock","CardTitle","index","text","ChapterBlock","subtitle","SimpleTitle","first","RichTitle","second","featured","SimpleBlock","ListBlock","RelatedBlock","related","items","layout","href","full_url","url","rel","second_title","SourceBlock","quote","origin","cite","GroupedBlock","maxHeight","min","normalizedBoxesWidth","sumWidth","sum","hasFigcaption","figcaption","MetaItem","hasBullets","bullets","MetaItemLive","DocumentItemsCount","one","two","five","n","i18n","ru","en","itemsCount","abs","MetaContainer","isRead","isListened","bookmarkAction","components","themeColor","isPodcast","isSlides","find","component","datetime","count","with_icon","label","RenderBlocks","Cover","blocks","cover","urls","mobileRatio","mobile_ratio","gradients","text_rgb","backgroundImage","bg_rgb","HalfBlock","main","footer","ImportantLead","Spoiler","button","buttonTitle","btn_title","spoiled","setSpoiled","buttonCollapse","collapse","buttonExpande","expand","getBoundingClientRect","scrollIntoView","behavior","active","enabled","childrenPosition","onChange","input","checked","knob","right","Children","props","cloneElement","isActive"],"mappings":"oVAEaA,EAAgB,SAACC,UACrBA,EACJC,QAAO,2BACPC,KAAI,2BACJC,KAAK,MCJJC,EAAmB,kBACvBC,uBACEC,MAAM,OACNC,OAAO,OACPC,QAAQ,YACRC,MAAM,8BAENJ,yBACEA,wBACEK,EAAE,qKACFC,QAAQ,SAGZN,qBAAGO,SAAS,WACVP,oCACEQ,cAAc,YACdC,KAAK,SACLC,KAAK,UACLC,GAAG,YACHC,IAAI,SACJC,YAAY,eAEdb,wBAAMK,EAAE,0mBCjBDS,EAA0B,oBACrCC,MAAAA,aAAQ,aACRC,KAAAA,aAAO,gBACPC,MAAAA,aAAQ,kBACRC,aAAAA,aAAe,oBACfC,SAAAA,gBACAC,IAAAA,QACAC,IAAAA,gBAWErB,wCACc,SACZsB,UAAW5B,EAAc,CACvB,CAAC6B,EAAOC,MAAM,GACd,CAACD,EAAOP,KAASA,GACjB,CAACO,EAAOR,KAAUA,GAClB,CAACQ,EAAON,KAAUA,KAAWM,EAAON,IACpC,CAACM,EAAOL,KAAiBA,KAE3BC,SAAUA,EACVC,QAnBgB,YACdD,GAAaC,GAIjBA,KAeEX,KAAK,UAEM,cAAVQ,EACCjB,wBAAMsB,UAAWC,EAAOE,QACtBzB,gBAACD,SAGHsB,IC3CKK,EAAQ,CACnBC,WAAY,CACV1B,MAAO,IACPC,OAAQ,IACR0B,QACE,86DAGJC,KAAM,CACJ5B,MAAO,GACPC,OAAQ,GACR0B,QACE,iKAGJE,GAAI,CACF7B,MAAO,GACPC,OAAQ,GACR0B,QACE,wTAGJG,GAAI,CACF9B,MAAO,GACPC,OAAQ,GACR0B,QACE,8ZAGJI,GAAI,CACF/B,MAAO,GACPC,OAAQ,GACR0B,QACE,gsBAGJK,GAAI,CACFhC,MAAO,EACPC,OAAQ,GACR0B,QACE,qkBAGJM,GAAI,CACFjC,MAAO,GACPC,OAAQ,GACR0B,QACE,2LAGJO,aAAc,CACZlC,MAAO,GACPC,OAAQ,GACR0B,QACE,0gBAGJQ,SAAU,CACRnC,MAAO,GACPC,OAAQ,GACR0B,QACE,wkBAGJS,QAAS,CACPpC,MAAO,GACPC,OAAQ,GACR0B,QACE,ikBAGJU,SAAU,CACRrC,MAAO,GACPC,OAAQ,GACR0B,QACE,odAGJW,KAAM,CACJtC,MAAO,GACPC,OAAQ,GACR0B,QACE,+IAGJY,MAAO,CACLvC,MAAO,GACPC,OAAQ,GACR0B,QACE,qOAGJa,UAAW,CACTxC,MAAO,GACPC,OAAQ,GACR0B,QACE,onBAGJc,SAAU,CACRzC,MAAO,GACPC,OAAQ,GACR0B,QACE,oZAGJe,aAAc,CACZ1C,MAAO,GACPC,OAAQ,GACR0B,QACE,gqBAGJgB,SAAU,CACR3C,MAAO,GACPC,OAAQ,GACR0B,QACE,ukBAGJiB,gBAAiB,CACf5C,MAAO,GACPC,OAAQ,GACR0B,QACE,qlBAGJkB,SAAU,CACR7C,MAAO,GACPC,OAAQ,GACR0B,QACE,qUAGJmB,MAAO,CACL9C,MAAO,GACPC,OAAQ,GACR0B,QACE,gMAGJoB,KAAM,CACJ/C,MAAO,GACPC,OAAQ,GACR0B,QACE,syBAGJqB,OAAQ,CACNhD,MAAO,GACPC,OAAQ,GACR0B,QACE,qPAGJsB,KAAM,CACJjD,MAAO,GACPC,OAAQ,GACR0B,QACE,qMAGJuB,QAAS,CACPlD,MAAO,GACPC,OAAQ,GACR0B,QACE,gKAGJwB,MAAO,CACLnD,MAAO,GACPC,OAAQ,GACR0B,QACE,6KAGJyB,MAAO,CACLpD,MAAO,EACPC,OAAQ,GACR0B,QACE,mYAGJ0B,KAAM,CACJrD,MAAO,GACPC,OAAQ,GACR0B,QACE,wQAGJ2B,SAAU,CACRtD,MAAO,GACPC,OAAQ,GACR0B,QACE,qIAGJ4B,QAAS,CACPvD,MAAO,GACPC,OAAQ,GACR0B,QACE,qOAGJ6B,KAAM,CACJxD,MAAO,GACPC,OAAQ,GACR0B,QACE,q7BAEJ8B,SAAU,CACRzD,MAAO,GACPC,OAAQ,GACR0B,QACE,iyEC/MO+B,EAAsC,gBACjDC,IAAAA,KACA5C,IAAAA,KACAE,IAAAA,aAEM2C,EAAOnC,EAAMkC,UAGjB5D,qCACc,aACZI,MAAM,6BACN0D,WAAW,+BACXxC,UAAW5B,EAAc,CACvB,CAAC6B,EAAOC,MAAM,GACd,CAACD,EAAOP,KAASO,EAAOP,IACxB,CAACO,EAAOqC,KAASrC,EAAOqC,IACxB,CAACrC,EAAOL,KAAiBK,EAAOL,MAElCjB,MAAO4D,EAAK5D,MACZC,OAAQ2D,EAAK3D,OACbC,eAAgB0D,EAAK5D,UAAS4D,EAAK3D,OACnC6D,wBAAyB,CAAEC,OAAQH,EAAKjC,6bC1BxCqC,EAAejE,EAAMkE,cAAc,CAAEC,SAAU,OAExCC,EAAgBH,EAAaI,4BCCN,CAClCpE,MACEqE,OAAOC,YACPC,SAASC,gBAAgBC,aACzBF,SAASG,KAAKD,YAChBxE,OACEoE,OAAOM,aACPJ,SAASC,gBAAgBI,cACzBL,SAASG,KAAKE,eCXZC,EAAc,SAACC,EAAiBC,OAC9BC,EAASX,OAAOY,IAEhBC,EAASC,aAAuBC,KAAKC,UAAU,CACnDP,QAAAA,EACAC,OAAAA,SAGoB,IAAXC,GACTA,EAAOH,YAAYK,EAAK,MCHfI,EAAmB,KACzB,qBACA,yBACA,yBACA,yBACA,2BACC,uBAGKC,EAAuB,CAClCC,GAAI,CAAC,KACLC,UAAW,CAAC,KAAM,IAAK,IAAK,KAC5BC,KAAM,CAAC,IAAK,IAAK,IAAK,aACb,CAAC,IAAK,IAAK,KACpBC,OAAQ,CAAC,IAAK,MCfHC,EAA4B,gBAAGxE,IAAAA,WACbyE,YAAU,CACrCC,YAFkDA,WAE1B,IADnBC,OAAKC,OAAQC,SAIUC,YAAS,GAAhCC,OAASC,cAEhBC,aAAU,WACJJ,GAASA,EAAMK,oBAAsBL,EAAMK,mBAAmBC,EAAI,GACpEH,GAAW,KAEZ,CAACH,IAEJI,aAAU,WACJL,GACFI,GAAW,KAEZ,CAACJ,IAGFjG,uBACEsB,UAAW5B,EAAc,CACvB,4BAAc,GACd,8BAAiB0G,KAEnBJ,IAAKA,gBACO,QAEXI,GAAW/E,IC9BLoF,EAAwC,gBACnDC,IAAAA,OACAC,IAAAA,eACAC,IAAAA,UACAC,IAAAA,IACAC,IAAAA,UAEgCX,YAAS,GAAlCY,OAAUC,OAEjBV,aAAU,WACRU,GAAa1C,OAAO2C,sBACnB,QChBmBC,EDkBhBC,EACJ3B,GCnBoB0B,EDmBSJ,EClB/BI,EAAEE,QAAQ,gBAAgB,SAACC,UAAQA,EAAIC,cAAcF,QAAQ,IAAK,UDkBtB5B,iBAG1CxF,+BACG0G,GACC1G,0BAAQuH,MAAM,qBAAqBC,OAAWd,EAAO,WAGtDE,IAAcA,EAAUa,MACvBzH,0BAAQuH,MAAM,iBAAiBC,UAAWZ,EAAUc,WAGrDd,GACCO,EAAKtH,KAAI,SAAC8H,OACFC,EAAahB,MAAce,UAE5BC,EAKH5H,gBAACA,EAAM6H,UAASF,IAAKA,GACnB3H,0BACES,KAAK,aACL8G,MAAOhC,EAAiBoC,GACxBH,OAAWI,EAAW,mBAAkBA,EAAW,oBAGrD5H,0BACES,KAAK,YACL8G,MAAOhC,EAAiBoC,GACxBH,OAAWI,EAAW,cAAaA,EAAW,gBAd3C,QAoBb5H,uBACE8H,IACEf,EACIJ,EACA,qFAENE,IAAKA,MElDAkB,EAA8B,gBACzClB,IAAAA,IACAC,IAAAA,QACAF,IAAAA,UACA3G,IAAAA,MACAC,IAAAA,OACAwG,IAAAA,OACAsB,IAAAA,KACAC,IAAAA,WACAC,IAAAA,MAEQ/D,EAAagE,aAAWlE,GAAxBE,SAEFiE,EAAc,iBACeC,IAG9BzB,IAAcA,EAAUc,WACxBvD,KAJKlE,OJvBQ,OI4ByCgI,IAKzDnD,EAAY,mBAAoB,SAChCX,EAASmE,KAAK1B,EAAW3G,EAAOC,EAAQ2G,KAGpC0B,EAAgB,CACpBC,cAAkB,KAAON,GAASjI,EAAQC,QAGtCuI,EAAc,CAClBC,SAAUzI,GAAS,IAAMA,EAAQ,QAI7B0G,EACHD,GAAUA,EAAO,IACjBE,EAAUa,MAAQb,EAAUa,KAAK,OAClCb,EAAUc,gBAGV1H,uBACEsB,UAAW5B,EAAc,CACvB,6BAAc,GACd,kCAAoBuI,KAEtBU,MAAOF,gBACK,SAEZzI,uBACEsB,wCACAqH,MAAOJ,EACPnH,QAAS,kBAAYgH,KACrBQ,WAAY,kBAAYR,KACxBS,KAAK,SACLC,SAAU,GAETd,EACChI,gCACEA,gBAAC6F,GAAKE,UAAW,KACf/F,gBAACyG,GACCE,eAAgBA,EAChBD,OAAQA,EACRE,UAAWA,EACXC,IAAKA,EACLC,QAASA,KAGb9G,gCACEA,uBAAK8H,IAAKnB,EAAgBE,IAAKA,MAInC7G,gBAACyG,GACCE,eAAgBA,EAChBD,OAAQA,EACRE,UAAWA,EACXC,IAAKA,EACLC,QAASA,mOCrFRiC,EAA0C,oBACrDC,MAASpC,IAAAA,UAAW3G,IAAAA,MAAOC,IAAAA,OAAQ+I,IAAAA,OAAQnC,IAAAA,QAASoC,IAAAA,OAEtB/C,WAAsB,CAClDgD,MAAO,KACPxE,KAAM,KACN2D,MAAM,EACNc,GAAI,OAJCC,OAASC,cAmBdtJ,qCAAiB,gBAAgBsB,UAAWC,EAAOC,MACjDxB,uBAAKsB,UAAWC,EAAO2H,MACpBA,EAAKrJ,KAAI,SAAC0J,UACTvJ,0BACEsB,UAAWC,EAAOgI,IAClB9I,KAAK,SACLkH,IAAK4B,EAAIH,GACTT,MAAO,CACLzD,IAAQqE,EAAIC,SAAShD,MACrBiD,KAASF,EAAIC,SAASE,MACtBC,gBAAiBJ,EAAI3F,KAAKgG,OAE5BxI,QAAS,kBAxBI,SAACmI,OAChBM,EAAaN,EAAIH,KAAOC,EAAQD,GAEtCE,EAAW,CACTH,MAAOI,EAAIJ,MACXxE,KAAM4E,EAAI5E,KACV2D,KAAMuB,EACNT,GAAIS,EAAaN,EAAIH,GAAK,OAiBCU,CAAeP,KAEjB,QAAlBA,EAAI3F,KAAKnD,MACRT,uBACEsB,UAAWC,EAAOqC,KAClBG,wBAAyB,CAAEC,OAAQuF,EAAI3F,KAAKmG,cAG7B,WAAlBR,EAAI3F,KAAKnD,MAAqB8I,EAAI3F,KAAKoG,YAI9ChK,uBAAKsB,UAAWC,EAAO0I,OACrBjK,gBAAC+H,GACCnB,UAAWA,EACX3G,MAAOA,EACPC,OAAQA,EACR2G,IAAKoC,EACLnC,QAASA,KAIZuC,EAAQf,MACPtI,uBAAKsB,UAAWC,EAAO8H,SACrBrJ,0BACEsB,UAAWC,EAAO2I,QAClBzJ,KAAK,SACLW,QAAS,kBAAYkI,EAAW,CAAEhB,MAAM,MAExCtI,gBAAC2D,GAAUC,KAAK,QAAQ5C,KAAK,WAE/BhB,uBAAKsB,UAAWC,EAAO4I,cAAed,EAAQF,OAC9CnJ,uBACEsB,UAAWC,EAAO6I,YAClBrG,wBAAyB,CAAEC,OAAQqF,EAAQ1E,WCzEjD0F,EAAmB,SACvBC,EACApJ,EACAK,OAEMgJ,EAAUC,MAAMC,QAAQvJ,GAC1BA,EACGtB,QAAO,SAAC8K,UAAQnJ,EAAOmJ,MACvB7K,KAAI,SAAC6K,SAAQ,CAAC,CAACnJ,EAAOmJ,KAAO,MAChC,CAAC,CAACnJ,EAAOL,KAAiBA,KAAkBK,EAAOL,YAEhDoJ,EAAWK,OAAOJ,0xBCNdK,EAA0B,gBACrCvJ,IAAAA,aACAL,KAAAA,aAAO,cACPD,MAAAA,aAAQ,SACRG,IAAAA,aACA2J,IAAAA,YACAC,IAAAA,OAEIR,EAAyB,CAC3B,CAAC/I,EAAOC,MAAM,GACd,CAACD,EAAOP,KAASA,KAAUO,EAAOP,IAClC,CAACO,EAAOR,KAAUA,KAAWQ,EAAOR,IACpC,CAACQ,EAAOuJ,KAAWA,KAAYvJ,EAAOuJ,IACtC,CAACvJ,EAAOsJ,KAAgBA,KAAiBtJ,EAAOsJ,YAG9C3J,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,IAIxDvB,qCAAiB,MAAMsB,UAAW5B,EAAc4K,IAC7CjJ,iTCtBM0J,EAA4C,gBACvD9B,IAAAA,OACA+B,IAAAA,QACA9J,IAAAA,aAEIoJ,EAAyB,CAAC,CAAC/I,EAAOC,MAAM,WAExCN,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,IAIxDvB,qCAAiB,gBAAgBsB,UAAW5B,EAAc4K,IACvDU,GACChL,uBACEsB,UAAWC,EAAOyJ,QAClBjH,wBAAyB,CAAEC,OAAQgH,KAGtC/B,GACCjJ,uBACEsB,UAAWC,EAAO0H,OAClBlF,wBAAyB,CAAEC,OAAQiF,yyBCpBhCgC,EAA8B,gBACzC/J,IAAAA,iBACA8H,MACEkC,IAAAA,KACAC,IAAAA,QACArE,IAAAA,QACgBsE,IAAhBC,eACcC,IAAdC,aAGIC,EAAS,WACF,kBACA,iBACA,iBACA,iBACA,mBACA,mBACA,kBACA,UAGTlB,EAAyB,CAC3B,CAAC/I,EAAOC,MAAM,GACd,CAACD,EAAOuF,KAAYA,KAAavF,EAAOuF,YAGtC5F,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,IAIxDvB,qCAAiB,QAAQsB,UAAW5B,EAAc4K,IAChDtK,uBAAKsB,UAAWC,EAAOkK,SACrBzL,uBAAKsB,UAAWC,EAAOmK,OACrB1L,uBAAKsB,UAAWC,EAAOoK,QACpBT,EAAKrL,KAAI,SAAC+L,EAAKC,UAEZ7L,uBAAK2H,IAAKiE,EAAIjE,IAAKrG,UAAWC,EAAOqK,KAClCA,EAAIE,MAAMjM,KAAI,SAACkM,EAAMC,UACpBhM,uBACE2H,IAAKoE,EAAKpE,IACVrG,UAAW5B,EAAc,CACvB,CAAC6B,EAAOwK,MAAM,GACd,CAACxK,EAAO0K,OAAQd,EAAQc,QAAgB,IAANJ,GAClC,CAACtK,EAAOiK,EAAOO,EAAKnC,SAAS,GAC7B,CAACrI,EAAO6J,EAAaY,KAAK,GAC1B,CACEzK,EAAO2K,YACPf,EAAQgB,oBAA4B,IAANH,KAGlCjI,wBAAyB,CAAEC,OAAQ+H,EAAKK,iBAUvDd,GACCtL,gBAAC+K,GAAa9B,OAAQqC,EAAapK,aAAcA,scChE5CmL,EAA4C,gBAC9CxI,IAATmF,MAASnF,KACT3C,IAAAA,aAEIoJ,EAAyB,CAAC,CAAC/I,EAAOC,MAAM,WAExCN,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,IAIxDvB,qCAAiB,gBAAgBsB,UAAW5B,EAAc4K,IACvDzG,GACCA,EAAKhE,KAAI,SAACyM,UACRtM,qBACEsB,UAAWC,EAAO+K,EAAK7L,MACvBkH,IAAK2E,EAAKlD,GACVrF,wBAAyB,CAAEC,OAAQsI,EAAKzI,ySCjBvC0I,EAAgD,gBAC3DrL,IAAAA,aACAH,IAAAA,MAEAK,IAAAA,QAEIkJ,EAAyB,CAC3B,CAAC/I,EAAOC,MAAM,GACd,CAACD,EAAOiL,gBALVA,eAME,CAACjL,EAAOR,KAAUA,KAAWQ,EAAOR,YAGlCG,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,IAIxDvB,qCAAiB,kBAAkBsB,UAAW5B,EAAc4K,IAC1DtK,0BACEsB,UAAWC,EAAOkL,QAClBrL,QAAS,kBAAYA,KACrBX,KAAK,UAELT,gBAAC2D,GAAUC,KAAK,WAAW5C,KAAK,qeCzB3B0L,EAAkC,gBAAGrL,IAAAA,SAAUsL,IAAAA,UAC5BxG,YAAS,GAAhCC,OAASC,OAEVuG,EAAc,WAClBvG,GAAW,GACXwG,WAAWF,EAAS,MAGhBG,EAAe,WACnBF,KAGIG,EAAc,SAACC,GACD,WAAdA,EAAMrF,KACRiF,YAIJtG,aAAU,kBACRhC,OAAO2I,iBAAiB,UAAWF,GAAa,GAChDzI,OAAO2I,iBAAiB,SAAUH,GAAc,GAEzC,WACLxI,OAAO4I,oBAAoB,UAAWH,GAAa,GACnDzI,OAAO4I,oBAAoB,SAAUJ,GAAc,MAEpD,CAAC1G,IAIFpG,qCACc,UACZsB,UAAW5B,EAAc,CACvB,+BAAc,GACd,iCAAiB0G,MAGnBpG,uBAAKsB,0CAA2BF,QAAS,kBAAYwL,OAErD5M,uBAAKsB,6CACHtB,0BACES,KAAK,SACLa,0CACAF,QAAS,kBAAYwL,kBACV,YAEb5M,uBAAKC,MAAM,OAAOqB,8CAChBtB,4BACEA,wBAAMoJ,GAAG,SAASM,EAAE,IAAIlD,EAAE,IAAIvG,MAAM,OAAOC,OAAO,QAChDF,wBAAMmN,KAAK,QAAQ3G,EAAE,IAAIvG,MAAM,OAAOC,OAAO,OAAOwJ,EAAE,MACtD1J,uBAAK0J,EAAE,MAAM0D,SAAS,WACpBpN,qBAAGqN,UAAU,oBACXrN,wBAAMK,EAAE,6LAKhBL,wBACEmN,KAAK,UACL/D,GAAG,YACHkE,KAAK,eACL5D,EAAE,IACFlD,EAAE,IACFvG,MAAM,OACNC,OAAO,UAGVmB,+oBCjEIkM,EAA4B,gBAEvCxM,IAAAA,MACAM,IAAAA,SACAyJ,IAAAA,OACA5J,IAAAA,aAEIoJ,EAAyB,CAC3B,CAAC/I,EAAOC,MAAM,GACd,CAACD,EAAOR,KAAUA,KAAWQ,EAAOR,IACpC,CAACQ,EAAOuJ,KAAWA,GACnB,CAACvJ,EAAOiM,YAVVA,mBAaItM,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,IAIxDvB,qCAAiB,OAAOsB,UAAW5B,EAAc4K,IAC9CjJ,ICnBMoM,EAAsC,gBAK7CC,MAHJC,OAAAA,aAAS,OACTlN,IAAAA,KAGMmN,EACO,OAAXD,EAAkB,qBAAuB,uBAErCE,EAAoC,MAR1CC,eAUAC,EAAMJ,OAAOA,GACbI,EAAMC,OAAOC,GAEA,YAATxN,EACFiN,EAAYK,EAAMF,GAAqBK,eAClC,GAAa,WAATzN,EACTiN,EAAYK,EAAMF,GAAqBM,OAAO,aACzC,CAAA,GAAa,SAAT1N,QAGH,IAAI2N,MAAM,qBAFhBV,EAAYK,EAAMF,GAAqBM,OAAOP,UAM9C5N,sCAAkB,YAAYsB,0CAC3BoM,IC1BDW,EAA8C,oBAClD/M,UAAAA,aAAY,SACZgN,QAASC,aAAU,QACnBC,IAAAA,KAEMzJ,EAAU0J,SAAuB,QACGtI,YAAS,GAA5CuI,OAAeC,OAEtBrI,aAAU,WACRqI,GAAiB,KAChB,QAEGC,EAAiCC,eAAY,SAACC,MAE/B,WAAjBA,EAAKR,SACHQ,EAAK1F,IAAqC,IAA/B0F,EAAK1F,GAAG2F,QAAQ,mBAiBzBlD,EAAI,EACFxK,EAAWyN,EAAKE,WAEfnD,EAAIxK,EAAS4N,QAClBL,EAA+BvN,EAASwK,IACxCA,GAAK,MArBP,KACMqD,EAAS1K,SAAS2K,cAAc,UAEtCD,EAAO9F,aAAegG,KAAKC,SAASC,SAAS,IAAIC,MAAM,GACvDL,EAAOM,UAAYV,EAAKU,kBAElBC,EAAQX,EAAKY,WAEV7D,EAAI,EAAGA,EAAI4D,EAAMR,OAAQpD,GAAK,EAAG,OAChB4D,EAAM5D,GAE9BqD,EAAOS,eAFCC,OAAMC,OAKhBf,EAAKgB,cAAcC,aAAab,EAAQJ,MAUzC,IAEGkB,EAAiBnB,eAAY,WACjBrE,MAAM9J,KAAKqE,EAAQkL,QAAQC,iBAAiB,MAEpDC,SAAQ,SAACC,GACfA,EAAET,aAAa,SAAU,eAE1B,WAEHrJ,aAAU,WAENoI,GACAF,EAAKO,QAAQ,WAAa,GAC1BhK,EAAQkL,QAAQI,oBAEhBtL,EAAQkL,QAAQI,kBAAkBb,UAAYhB,EAC9CI,EAA+B7J,EAAQkL,QAAQI,mBAC/CL,OAED,CACDtB,EACA3J,EACAyJ,EACAI,EACAoB,IAIAhQ,uBAAKgG,IAAKjB,GACR/E,gBAACuO,GACCjN,UAAWA,EACXyC,wBAAyB,CAAEC,OAAQwK,uiCCxE9B8B,EAAoC,gBAAGC,IAAAA,IAAKC,IAAAA,OAAQ7H,IAAAA,QACzBxC,YAAS,GAAxCsK,OAAaC,OACdC,EAAYlC,SAAO,MAEnBmC,EAAmB,WACvBD,EAAUV,QAAQ1N,OAClBmO,GAAe,IAGXG,EAAmB,eACjBC,EAAQH,EAAUV,QAExBa,EAAMnB,aAAa,SAAUmB,EAAMC,QAAQR,KAE3CG,GAAe,WAGjBpK,aAAU,eACFwK,EAAQH,EAAUV,QACTe,EAAkB3I,IAAzBpI,aAERgR,EAAkBH,GAEdE,GhB9BE,KgB+BJF,EAAMnB,aAAa,YAAY,GAC/BmB,EAAMvO,SAENmO,GAAe,GACfI,EAAMtO,QACNsO,EAAM7D,iBAAiB,aAAc2D,IAGvCE,EAAM7D,iBAAiB,QAAS4D,GAEzB,WACLC,EAAM5D,oBAAoB,aAAc0D,GACxCE,EAAM5D,oBAAoB,QAAS2D,MAEpC,IAGD7Q,uBAAKsB,UAAWC,EAAO2P,QACrBlR,uBACEsB,UAAWC,EAAO4P,WAClBxI,MAAOA,gBACM8H,GAEbzQ,yBACEoR,eACAC,SACAC,QACAC,YACAC,QAAQ,sBACEjB,EACVvK,IAAK2K,GAEL3Q,0BAAQ8H,wBAAyB0I,EAAU/P,KAAK,kBCnD7CgR,EAAwC,gBACnDzI,IAAAA,UACAA,MACEnF,IAAAA,SACAA,KACE2K,IAAAA,KACA1H,IAAAA,QACSgE,IAAT4G,QACAC,IAAAA,SACAC,IAAAA,GACAhL,IAAAA,UACWiL,IAAXC,UACWC,IAAXC,UACSC,IAATC,QACS1B,IAAT2B,QAGJjR,IAAAA,aACAG,IAAAA,WAE4C8E,YAAS,GAA9CiM,OAAgBC,OACjB1J,EAA6B,GAC7B2J,EAAiBtJ,EAAMnF,KAAK3D,QAAU8I,EAAMnF,KAAK5D,MAUjDsS,EARqB,CACzB,UACA,QACA,QACA,OACA,kBAImBxD,QAAQ4C,IAA4B,kBAAf3I,EAAMvI,KAE1C+R,EAAW,SAACjI,UAChBvK,gBAAC+K,GACC9B,OAAQpF,EAAKoF,OACb+B,QAASnH,EAAKmH,QACd9J,aAAcqJ,GAAWrJ,KA0DzBoR,IACF3J,EAAMH,cAAoBQ,EAAMnF,KAAK3D,OAAS8I,EAAMnF,KAAK5D,MAAS,QAClE0I,EAAMzI,OAAS,OAGboK,EAAyB,CAC3B,CAAC/I,EAAOC,MAAM,GACd,CAACD,EAAOqQ,GAAIA,GACZ,CAACrQ,EAAOuF,KAAYA,GAAWvF,EAAOuF,IACtC,CAACvF,EAAOoQ,KAAaA,KAAcpQ,EAAOoQ,IAC1C,CAACpQ,EAAOuJ,KAAWA,GAAUvJ,EAAOuJ,IACpC,CAACvJ,EAAOgR,gBAAiBA,GACzB,CAAChR,EAAOkR,aAAcH,OAOpBpR,EAAc,KACVwR,EAAkBC,OAAOxL,KAAKjG,GACjCtB,QAAO,SAAC+H,UAAQA,EAAIiL,WAAW,SAAWrR,EAAOoG,MACjDkL,QAAO,SAACC,EAAKnL,UACZmL,EAAIC,KAAK,CAACxR,EAAOoG,IAAM,IAEhBmL,IACN,IACLxI,EAAaD,EAAiBC,EAAYoI,EAAiBnR,UAI3DvB,0BAAQsB,UAAW5B,EAAc4K,IAC9BjJ,GACCrB,uBAAKsB,UAAWC,EAAOyR,QACrBhT,uBAAKsB,UAAWC,EAAOkK,QAAS9C,MAAOA,GACrC3I,uBAAKsB,UAAWC,EAAO4P,YAAa9P,MAKxCA,GA9Fc,SAACsH,UACXK,EAAMvI,UACP,aACIT,gBAACsQ,GAASC,IAAK0B,EAAQzB,OAAQA,EAAQ7H,MAAOA,QAElD,eAED3I,uBAAKsB,UAAWC,EAAO2P,SACnBW,GAASjL,IACT5G,gBAAC+H,GACCE,WAAYe,EAAMnF,KAAKoE,WACvBvB,QAASE,GAAa,CAACiL,EAAOE,GAC9BnL,UAAWoC,EAAMnF,KAAK+C,UACtB3G,MAAO+I,EAAMnF,KAAK5D,MAClBC,OAAQ8I,EAAMnF,KAAK3D,OACnB2G,IAAKmC,EAAMnF,KAAKmH,QAChBlE,QAASkC,EAAMnF,KAAKiD,QACpBkB,KAAMgB,EAAMnF,KAAKmE,YAMtB,oBAEDhI,uBAAKsB,UAAWC,EAAO0R,WACrBjT,0BACE8H,IAAKkB,EAAMnF,KAAKqP,SAChB9J,GAAIJ,EAAMnF,KAAKsP,QACfhK,MAAM,oBAKT,uBAEDnJ,uBAAKsB,UAAWC,EAAO2P,QACrBlR,gBAAC+I,GAAYC,MAAOnF,oBAOtB7D,uBAAKsB,UAAWC,EAAOyR,QACrBhT,uBAAKsB,UAAWC,EAAOkK,QAAS9C,MAAOA,GACrC3I,gBAACqO,GAAc/M,UAAWC,EAAO4P,WAAY3C,KAAMA,OAgD7C4E,CAAYzK,GAElB,YAAPiJ,GAAoB5R,kCAAawS,KAE1B,WAAPZ,GACC5R,0BACEsB,UAAWC,EAAOkL,QAClBhM,KAAK,sBACM,OACXW,QAAS,WACPiR,GAAmBD,MAKjB,WAAPR,GAAmBQ,GAClBpS,gBAAC0M,GACCC,QAAS,WACP0F,GAAkB,KAGnBG,EAAS,kBCvKPa,EAAyC,gBACpDrK,IAAAA,MACSI,IAATJ,MAASI,GACTlI,IAAAA,iBACAoS,KAAAA,aAAO,OAEDvO,EAAU0J,SAAO,aA4DvBnI,aAAU,YA1DW,eACbiN,EAAS/O,SAAS2K,cAAc,OAChCqE,EAAYhP,SAAS2K,cAAc,OACnCsE,EAAWjP,SAAS2K,cAAc,UAClCxG,EAAQnE,SAAS2K,cAAc,SAC/BuE,EAAQlP,SAASmP,cAEvBD,EAAME,SAASJ,EAAW,GAC1BA,EAAU7D,aAAa,KAAM,WAC7B8D,EAASI,2uBAmBkB7K,EAAMI,4PAWjCT,EAAMlI,KAAO,WACbkI,EAAM6G,UACW,eAAfxG,EAAMvI,KACF,8DACA,sHAEN+S,EAAUM,YAAYJ,EAAMK,yBAAyB/K,EAAMnF,KAAK2K,OAChE+E,EAAOO,YAAYL,GACnBF,EAAOO,YAAYN,GACnBA,EAAUM,YAAYnL,OAEhBqL,EAAQjP,EAAQkL,QAAQgE,cAAc,UAAUC,gBAEtDF,EAAMG,OACNH,EAAMI,QACNJ,EAAMvP,gBAAgBkL,aAAa,OAAQ2D,GAC3CU,EAAMrP,KAAKmP,YAAYP,GAIvBc,KACC,IAGDrU,gBAACyR,GAAWzI,MAAOA,EAAO9H,aAAcA,GACtClB,uBACEgG,IAAKjB,EACLhB,wBAAyB,CACvBC,qBAAsBoF,mDC1EnBkL,EAAiD,gBAC5DtL,IAAAA,MACA9H,IAAAA,oBAGI8H,EAAMnF,KAAK0Q,iBACNvU,gBAACqT,GAAYrK,MAAOA,EAAO9H,aAAcA,EAAcoS,OAHhEA,OAKOtT,gBAACyR,GAAWzI,MAAOA,EAAO9H,aAAcA,uFCNpCsT,EAAwC,gBAC1C3Q,IAATmF,MAASnF,KACT3C,IAAAA,aAEIoJ,EAAyB,CAAC,CAAC/I,EAAOC,MAAM,WAExCN,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,IAIxDvB,qCAAiB,cAAcsB,UAAW5B,EAAc4K,IACtDtK,qBAAG+D,wBAAyB,CAAEC,OAAQH,6MCd/B4Q,EAAsC,oBACjDzL,MACEnF,KAAiBiH,IAAT4G,QAAiBgD,IAAAA,MAAOC,IAAAA,KAElCzT,IAAAA,oBAGElB,qCACc,aACZsB,UAAW5B,EAAc,CACvB,CAAC6B,EAAOC,MAAM,GACd,CAACD,EAAOuJ,KAAWA,GACnB,CAACvJ,EAAOL,KAAiBA,KAAkBK,EAAOL,OAGpDlB,uBAAKsB,UAAWC,EAAOmT,OAAQA,GAC/B1U,sBAAIsB,UAAWC,EAAO4H,OAAQwL,uLChBvBC,GAA4C,oBACvD5L,MAASnF,IAAAA,KAAeiH,IAAT4G,QACfxQ,IAAAA,oBAGElB,qCACc,gBACZsB,UAAW5B,EAAc,CACvB,CAAC6B,EAAOC,MAAM,GACd,CAACD,EAAOuJ,KAAWA,MAGrB9K,uBACEsB,UAAW5B,EAAc,CACvB,CAAC6B,EAAOsT,UAAU,GAClB,CAACtT,EAAOL,KAAiBA,KAAkBK,EAAOL,MAEpD6C,wBAAyB,CAAEC,OAAQH,wICf9BiR,GAA0C,oBACrD9L,MACU+L,IAARlR,KAAQkR,MAGV7T,IAAAA,aAEIoJ,EAAyB,CAC3B,CAAC/I,GAAOC,MAAM,GACd,CAACD,KANDmQ,UAMiB,WAGfxQ,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,KAIxDvB,qCAAiB,eAAesB,UAAW5B,EAAc4K,IACtDyK,yRClBMC,GAAsC,oBACjDhM,UAEEnF,KAAkBkR,IAAAA,MAAOE,IAAAA,OAE3B/T,IAAAA,aAEIoJ,EAAyB,CAC3B,CAAC/I,GAAOC,MAAM,GACd,CAACD,KAPDmQ,UAOiB,GACjB,CAACnQ,GAAO2T,aAPAA,kBAUNhU,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,KAIxDvB,oCAAgB,aAAasB,UAAW5B,EAAc4K,IACnDyK,EACAE,GAAUjV,gCAAQiV,0tBCpBZE,GAA0C,gBAIjD5G,MAHJvF,MAASnF,IAAAA,KAAMpD,IAAAA,KACfS,IAAAA,aAIIoJ,EAAyB,CAC3B,CAAC/I,GAAOd,KAASA,KAAUc,GAAOd,IAClC,CAACc,KAPkBmQ,UAOF,WAGfxQ,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,KAGlDd,OACD,gBACA,WACA,mBACA,cACH8N,EAAU,cAGP,UACHA,EAAU,oBAIVA,EAAU9N,SAGZT,gBAACuO,GACCjN,UAAW5B,EAAc4K,GACzBvG,wBAAyB,CAAEC,OAAQH,2UCjC5BuR,GAAsC,oBACjDpM,MAASvI,IAAAA,KAAMoD,IAAAA,KACf3C,IAAAA,aAEMqN,EAAU9N,EAEZ6J,EAAyB,CAC3B,CAAC/I,GAAOC,MAAM,GACd,CAACD,KAPkBmQ,UAOF,GACjB,CAACnQ,GAAOd,KAASA,KAAUc,GAAOd,YAGhCS,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,KAIxDvB,gBAACuO,GAAQjN,UAAW5B,EAAc4K,IAC/BzG,EAAKhE,KAAI,SAACyM,EAAMoI,UACf1U,sBAAI2H,IAAK+M,EAAO3Q,wBAAyB,CAAEC,OAAQsI,ycCnB9C+I,GAA4C,oBACvDrM,UACEnF,KAAQsF,IAAAA,MAAOmM,IAAAA,QAGjBpU,IAAAA,aAEIoJ,EAAyB,CAC3B,CAAC/I,GAAOC,MAAM,GACd,CAACD,KANDmQ,UAMiB,WAGfxQ,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,KAIxDvB,qCAAiB,gBAAgBsB,UAAW5B,EAAc4K,IACxDtK,sBAAIsB,UAAWC,GAAO0K,QAAS9C,GAC/BnJ,sBAAIsB,UAAWC,GAAOgU,OACnBD,EAAQzV,KAAI,SAACyM,EAAMoI,UAClB1U,sBAAI2H,IAAK2E,EAAKlD,IAAMsL,EAAOpT,UAAWC,GAAO+K,EAAKkJ,SAChDxV,qBACEyV,KAAMnJ,EAAKoJ,cAAgBpJ,EAAKqJ,IAChC1Q,OAAO,SACP2Q,IAAI,uBAEJ5V,wBAAMsB,UAAWC,GAAOwT,OAAQzI,EAAKnD,OACpCmD,EAAKuJ,cAAgB,IACrBvJ,EAAKuJ,cAAgB7V,4BAAOsM,EAAKuJ,iRC7BnCC,GAA0C,oBACrD9M,UAEEnF,KAAQkS,IAAAA,MAAOC,IAAAA,OAAQL,IAAAA,IAEzBzU,IAAAA,aAEIoJ,EAAyB,CAC3B,CAAC/I,GAAOC,MAAM,GACd,CAACD,KAPDmQ,UAOiB,WAGfxQ,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,KAIxDvB,4CACc,eACZiW,KAAMN,EACNrU,UAAW5B,EAAc4K,IAEzBtK,qBACEsB,UAAWC,GAAOoT,KAClBc,KAAME,EACN1Q,OAAO,SACP2Q,IAAI,uBAEHG,EAAMlW,KAAI,SAACyM,EAAMoI,UAChB1U,qBAAG2H,IAAK+M,EAAO3Q,wBAAyB,CAAEC,OAAQsI,EAAKzI,WAEzD7D,8BACEA,wBAAMsB,UAAWC,GAAOyU,QAASA,8cC9B9BE,GAA4C,gBACvDlN,IAAAA,MACkB8B,IAAlB9B,MAAS0I,QACTxQ,IAAAA,aAEMiV,EAAY/G,KAAKgH,UAALhH,KAAYpG,EAAMnF,KAAKhE,KAAI,SAACyM,UAASA,EAAKzI,KAAK3D,WAE3DmW,EAAuBrN,EAAMnF,KAAKhE,KACtC,SAACyM,UAASA,EAAKzI,KAAK5D,OAASqM,EAAKzI,KAAK3D,OAASiW,MAG5CG,EAAWD,EAAqBxD,QAAO,SAAC0D,EAAK7M,UAAM6M,EAAM7M,KAE3DY,EAAyB,CAC3B,CAAC/I,GAAOC,MAAM,GACd,CAACD,GAAOuJ,IAAS,GACjB,CAACvJ,GAAOiV,cAA4B,YAAbxN,EAAM4I,IAC7B,CAACrQ,GAAOyH,EAAMlC,WAAYkC,EAAMlC,SAAWvF,GAAOyH,EAAMlC,kBAGtD5F,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,KAIxDvB,qCAAiB,gBAAgBsB,UAAW5B,EAAc4K,IACxDtK,uBAAKsB,UAAWC,GAAOgU,OACpBvM,EAAMnF,KAAKhE,KAAI,SAACyM,EAAMoI,UAInB1U,uBACEsB,UAAWC,GAAO+K,KAClB3E,IAAK2E,EAAKlD,GACVT,MAAO,CAAE1I,MANSoW,EAAqB3B,GAAS4B,EAAY,UAQ5DtW,gBAACsU,GACCtL,MAAOsD,EACPpL,aAAa,0BAMtB8H,EAAM4I,IACL5R,8BAAYsB,UAAWC,GAAOkV,YAC5BzW,gBAAC+K,GACC9B,OAAQD,EAAMC,OACd+B,QAAShC,EAAMgC,QACf9J,aAAcA,oQCrDbwV,GAAoC,gBAE/CjW,IAAAA,KACAY,IAAAA,gBAWErB,qCAAiB,YAAYsB,UAAW5B,EARvB,CACjB,CAAC6B,GAAOC,MAAM,GACd,CAACD,GAAOd,KAASA,KAAUc,GAAOd,IAClC,CAACc,GAAOiM,cARVA,WASE,CAACjM,GAAOoV,eANVC,YAWKvV,uSCfMwV,GAA4C,oBACvD9V,MAAAA,aAAQ,gBAQNf,qCACc,6BACF,OACVsB,UAAW5B,EATI,CACjB,CAAC6B,GAAOC,MAAM,GACd,CAACD,GAAOR,KAAUA,GAASQ,GAAOR,OAShCf,uBAAKsB,UAAWC,GAAOyS,UCbhB8C,GAAwD,gBCJnEC,EACAC,EACAC,EAEIC,EDCJzW,IAAAA,SACA6S,KAAAA,aAAO,OACPiC,IAAAA,MACAlU,IAAAA,SAEM8V,EAAO,CACXC,GAAI,CACFlU,KAAM,CACJ6T,IAAK,WACLC,IAAK,WACLC,KAAM,YAER9T,QAAS,CACP4T,IAAK,SACLC,IAAK,UACLC,KAAM,aAGVI,GAAI,CACFnU,KAAM,CACJ6T,IAAK,OACLC,IAAK,QACLC,KAAM,SAER9T,QAAS,CACP4T,IAAK,UACLC,IAAK,WACLC,KAAM,cAKNK,EAAgB/B,OCrCtBwB,EDuCEI,EAAK7D,GAAM7S,GAAMsW,ICtCnBC,EDuCEG,EAAK7D,GAAM7S,GAAMuW,ICtCnBC,EDuCEE,EAAK7D,GAAM7S,GAAMwW,KCrCfC,EAAI9H,KAAKmI,IDkCXhC,ICjCF2B,GAAK,MAEI,GAAKA,GAAK,GACVD,EAKC,IAFVC,GAAK,IAGIH,EAGLG,GAAK,GAAKA,GAAK,EACVF,EAGFC,UDwBLjX,qCAAiB,uBAAuBsB,mDACrCD,EACDrB,wBAAMsB,oDAA0BgW,KErCzBE,GAA8C,gBACzDlE,IAAAA,KACAtK,IAAAA,MACAyO,IAAAA,OACAC,IAAAA,WACAC,IAAAA,eACAnL,IAAAA,kBACAxD,MACEnF,KAAQ+T,IAAAA,WAAY7W,IAAAA,MAEtBG,IAAAA,aAEM2W,EACJ3W,IAAkD,IAAlCA,EAAa6N,QAAQ,QAAiB,QAAU,QAC5D+I,EAAY5W,IAAqD,IAArCA,EAAa6N,QAAQ,WACjDgJ,EAAW7W,IAAmD,IAAnCA,EAAa6N,QAAQ,SAEhDvB,IAAcoK,EAAWI,MAAK,SAAC1L,SAAuB,gBAAdA,EAAK7L,eAGjDT,gBAACuN,GACCrM,aAAcA,EACdH,MAAOA,GAAS8W,EAChB/M,OAAQ9B,EAAM0I,QACdlE,UAAWA,GAEVoK,EAAW/X,KAAI,SAACoY,UACPA,EAAUxX,UACX,qBAEDT,gBAAC0W,IAASlJ,UAAWA,EAAWoJ,WAAQjP,IAAKsQ,EAAU7O,IACrDpJ,gCACY,OAATsT,EAAgB,aAAe,WAC/B2E,EAAUtC,KACT3V,qBACEyV,KAAMwC,EAAUtC,IAChBC,IAAI,sBACJ3Q,OAAO,UAENgT,EAAUtD,OAGbsD,EAAUtC,KAAOsC,EAAUtD,WAKhC,kBAED3U,gBAAC0W,IAASlJ,UAAWA,EAAWoJ,WAAQjP,IAAKsQ,EAAU7O,IACrDpJ,gCACEA,gBAAC2D,GAAUC,KAAK,UAAU5C,KAAK,UAC9BiX,EAAUtD,WAKd,kBAED3U,gBAAC0W,IACClJ,UAAWA,EACXoJ,WACAjP,IAAKsQ,EAAU7O,GACf3I,KAAK,YAELT,gBAACyN,GACCK,YAAamK,EAAUC,SACvBzX,KAAK,OACLkN,OAAQ2F,SAMX,qBAEDtT,gBAAC0W,IAASlJ,UAAWA,EAAWoJ,WAAQjP,IAAKsQ,EAAU7O,IACrDpJ,gBAAC8W,IACCvB,MAAO0C,EAAUE,MACjB1X,KAAMqX,EAAY,UAAY,OAC9BxE,KAAMA,GAENtT,gBAAC2D,GAAUC,KAAK,OAAO5C,KAAK,gBAK/B,0BAEDhB,gBAAC0W,IAASlJ,UAAWA,EAAWoJ,WAAQjP,IAAKsQ,EAAU7O,IACrDpJ,gCACEA,gBAAC6W,8BAKJ,mBAED7W,gBAAC0W,IAASlJ,UAAWA,EAAWoJ,WAAQjP,IAAKsQ,EAAU7O,IACrDpJ,gCACGiY,EAAUG,WAAapY,gBAAC6W,SAExBoB,EAAUI,uBAOV,UAIXZ,GAAUC,IACV1X,gBAAC0W,IACClJ,UAAWA,EACXoJ,WACAnW,KAAMiX,EAAa,WAAa,QAEhC1X,gBAAC2D,GAAUC,KAAM8T,EAAa,WAAa,OAAQ1W,KAAK,WAI3D+W,GAAqB,OAATzE,GACXtT,uBAAKsB,UAAWC,EAAOgC,UACrBvD,gBAACuM,GACCC,cAAeA,EACfpL,QAAS,kBAAYuW,EAAe,WAAY,aCzH/CW,GAA4C,gBACvDtP,IAAAA,MACA9H,IAAAA,aACAoS,IAAAA,KACAmE,IAAAA,OACAC,IAAAA,WACAC,IAAAA,eACAnL,IAAAA,qBAEQxD,EAAMvI,UACP,aAEDT,gBAAC4K,GACC5J,KAAK,QACL8J,OAAQ9B,EAAM0I,QACd3Q,MAAOiI,EAAMnF,KAAK9C,MAClBG,aAAcA,GAEb8H,EAAMnF,KAAK8Q,UAKb,sBACI3U,gBAAC8U,IAAY9L,MAAOA,EAAO9H,aAAcA,QAG7C,oBACIlB,gBAACgV,IAAUhM,MAAOA,EAAO9H,aAAcA,QAG3C,cAEDlB,gBAACwX,IACCxO,MAAOA,EACPsK,KAAMtK,EAAMnF,KAAKyP,KACjBpS,aAAcA,EACduW,OAAQA,EACRC,WAAYA,EACZlL,cAAeA,EACfmL,eAAgBA,QAKjB,SACA,SACA,SACA,SACA,iBACA,QACA,gBACA,WACA,iBACI3X,gBAACmV,IAAYnM,MAAOA,EAAO9H,aAAcA,QAG7C,eACIlB,gBAACwU,GAAWxL,MAAOA,EAAO9H,aAAcA,QAE5C,SACA,YACIlB,gBAACoV,IAAUpM,MAAOA,EAAO9H,aAAcA,QAG3C,0BACIlB,gBAAC4U,IAAa5L,MAAOA,EAAO9H,aAAcA,QAG9C,oBACIlB,gBAACyU,GAAUzL,MAAOA,EAAO9H,aAAcA,QAG3C,iBACIlB,gBAACqV,IAAarM,MAAOA,EAAO9H,aAAcA,QAG9C,gBACIlB,gBAAC8V,IAAY9M,MAAOA,EAAO9H,aAAcA,QAE7C,eACIlB,gBAACiL,GAAMjC,MAAOA,EAAO9H,aAAcA,QAEvC,YACA,iBACA,iBACA,YACA,oBACA,aAEDlB,gBAACsU,GACCtL,MAAOA,EACP9H,aAAcA,EACdoS,KAAMA,QAGP,iBACItT,gBAACkW,IAAalN,MAAOA,EAAO9H,aAAcA,QAE9C,uBACIlB,gBAACqM,GAAarD,MAAOA,EAAO9H,aAAcA,mBAG1C,wXC7GAqX,GAA8B,gBCZjB3O,MDaxBZ,MACW8B,IAAT4G,YACA7N,KACE2U,IAAAA,WACAC,MAASxP,IAAAA,OAAQ+B,IAAAA,QAAS0N,IAAAA,KAAoBC,IAAdC,aAA2BC,IAAAA,UAAWjH,IAAAA,GAG1E1Q,IAAAA,eAE4CiF,YAAS,GAA9CiM,OAAgBC,OAEjB1J,EAA6B,GAE/B2B,EAAyB,CAC3B,CAAC/I,GAAOC,MAAM,GACd,CAACD,GAAOuJ,KAAWA,KAAYvJ,GAAOuJ,YAGpC5J,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,KAGtDsX,IAGFvO,EAAaD,EAAiBC,EAFhB,CAAwB,UAAvBuO,EAAUC,SAAuB,OAAS,SAERvX,IAEjDoH,EAAMoQ,iBCxCgBnP,EDwCmBiP,EAAUG,mCCvC/B,CACpB,CAAC,EAAG,GACJ,CAAC,IAAM,IACP,CAAC,IAAM,IACP,CAAC,IAAM,IACP,CAAC,IAAM,IACP,CAAC,IAAM,IACP,CAAC,IAAM,IACP,CAAC,IAAM,IACP,CAAC,IAAM,IACP,CAAC,IAAM,IACP,CAAC,EAAG,KAGyBnZ,KAAI,SAACgM,iBAAcjC,OAAUiC,EAAE,QAAOA,EAAE,gBDqCrE7L,qCAAiB,QAAQsB,UAAW5B,EAAc4K,IAChDtK,uBAAKsB,UAAWC,GAAO0I,OACrBjK,gBAAC+H,GAAMnB,UAAW8R,EAAMxQ,MAAOyQ,EAAa7R,QAAQ,YAEtD9G,uBAAKsB,UAAWC,GAAOoD,KAAMgE,MAAOA,GACjC6P,EAAO3Y,KAAI,SAACyM,UACXtM,gBAACsY,IACC3Q,IAAK2E,EAAKlD,GACVJ,MAAOsD,EACPpL,aAAcA,QAIZ,WAAP0Q,GACC5R,0BACEsB,UAAWC,GAAOkL,QAClBhM,KAAK,sBACM,OACXW,QAAS,WACPiR,GAAmBD,MAKjB,WAAPR,GAAmBQ,GAClBpS,gBAAC0M,GACCC,QAAS,WACP0F,GAAkB,KAnC1BrS,gBAAC+K,GACC9B,OAAQA,EACR+B,QAASA,EACT9J,aAmCc,oSExEP+X,GAAsC,oBACjDjQ,MAEEnF,IAAAA,SACAA,KACE4U,MAAS7R,IAAAA,UAAWsB,IAAAA,MAAOe,IAAAA,OAAQ+B,IAAAA,QAGvC9J,IAAAA,aAEIoJ,EAAyB,CAC3B,CAAC/I,GAAOC,MAAM,GACd,CAACD,KAVDmQ,UAUiB,WAGfxQ,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,KAIxDvB,qCAAiB,aAAasB,UAAW5B,EAAc4K,IACrDtK,uBAAKsB,UAAWC,GAAO2X,MACrBlZ,uBAAKsB,UAAWC,GAAO0I,OACrBjK,gBAAC+H,GAAMnB,UAAWA,EAAWsB,MAAOA,EAAOpB,QAAQ,gBAErD9G,uBAAKsB,UAAWC,GAAOoD,MACpBd,EAAK2U,OAAO3Y,KAAI,SAACyM,UAChBtM,gBAACsY,IAAa3Q,IAAK2E,EAAKlD,GAAIJ,MAAOsD,EAAMpL,aAAc,CAAC,eAI9DlB,uBAAKsB,UAAWC,GAAO4X,QACrBnZ,gBAAC+K,GACC9B,OAAQA,EACR+B,QAASA,EACT9J,aAAcA,wLCrCXkY,GAA8C,oBACzDpQ,MAAkB8B,IAAT4G,QAAiB7N,IAAAA,KAC1B3C,IAAAA,aAEIoJ,EAAyB,CAC3B,CAAC/I,GAAOC,MAAM,GACd,CAACD,GAAOuJ,KAAWA,WAGjB5J,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,KAIxDvB,qCAAiB,iBAAiBsB,UAAW5B,EAAc4K,IACxDzG,EAAKhE,KAAI,SAACyM,UACTtM,gBAACsY,IACC3Q,IAAK2E,EAAKlD,GACVJ,MAAOsD,EACPpL,aAAa,0cCfVmY,GAAkC,oBAC7CrQ,MACElC,IAAAA,QACAwS,IAAAA,OACSxO,IAAT4G,QACW6H,IAAXC,UACArQ,IAAAA,MACAqP,IAAAA,OAEFtX,IAAAA,eAE8BiF,YAAS,GAAhCsT,OAASC,OACV1T,EAAMyI,SAAO,MAgBfnE,EAAyB,CAC3B,CAAC/I,GAAOC,MAAM,GACd,CAACD,GAAOuJ,KAAWA,GACnB,CAACvJ,GAAOuF,KAAYA,GAAWvF,GAAOuF,IACtC,CAAC,CAACvF,GAAOkY,WAAYA,IAGnBvY,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,SAGpDoY,EAAiBL,EAASA,EAAOM,SAAW,WAC5CC,EAAgBP,EAASA,EAAOQ,OAASP,SAG7CvZ,uBAAKgG,IAAKA,EAAK1E,UAAW5B,EAAc4K,iBAAyB,WAC/DtK,uBAAKsB,UAAWC,GAAO0K,QAAS9C,GAASnJ,0BAAKmJ,IAC9CnJ,uBAAKsB,UAAWC,GAAOoD,MACpB6T,EAAO3Y,KAAI,SAACyM,UACXtM,gBAACsY,IACC3Q,IAAK2E,EAAKlD,GACVJ,MAAOsD,EACPpL,aAAcA,QAIpBlB,uBAAKsB,UAAWC,GAAO4X,QACrBnZ,gBAACc,GACCE,KAAK,UACLD,MAAM,OACNK,QAAS,WA3CfsY,GAAYD,GAERA,GACF3U,EAAY,eAAgB,SACfkB,EAAIiK,QAAQ8J,wBAChB7U,IAAM,GACbc,EAAIiK,QAAQ+J,eAAe,CAAEC,SAAU,YAGzCnV,EAAY,cAAe,UAmCvB5D,aAAa,eAEZuY,EAAUE,EAAiBE,EAC5B7Z,gBAAC2D,GAAUC,KAAK,uZC3DuB,gBAC/CvC,IAAAA,SAEAH,IAAAA,aAEIoJ,EAAyB,CAC3B,CAAC/I,EAAOC,MAAM,GACd,CAACD,EAAO2Y,WALVA,UAKgC3Y,EAAO2Y,gBAGnChZ,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,IAIxDvB,qCAAiB,WAAWsB,UAAW5B,EAAc4K,IAClDjJ,yMClBoD,mBAEvDrB,sBAAIsB,2DAAoC,oBAFkBD,+CDNjB,mBAEzCrB,qCAAiB,WAAWsB,UAAWC,EAAOM,QAFFR,wGCFK,mBAC5CrB,wBAAMsB,mDADyCD,qDCIC,gBACvD2H,IAAAA,MACA9H,IAAAA,aACAuW,IAAAA,OACAC,IAAAA,WACAlL,IAAAA,cACAmL,IAAAA,eAGMpN,EAAU,CACdpG,WAHFA,UAGwB,aAGhB6E,EAAMvI,UACP,wBACIT,gBAACoZ,IAAcpQ,MAAOA,EAAO9H,aAAcA,QAG/C,iBAEDlB,gBAACoE,GAAcyL,MAAOtF,GACpBvK,gBAACqZ,IAAQrQ,MAAOA,EAAO9H,aAAcA,SAKtC,eACIlB,gBAACuY,IAAMvP,MAAOA,EAAO9H,aAAcA,QAGvC,cACIlB,gBAACiZ,IAAUjQ,MAAOA,EAAO9H,aAAcA,mBAK5ClB,gBAACoE,GAAcyL,MAAOtF,GACpBvK,gBAACsY,IACCtP,MAAOA,EACP9H,aAAcA,EACduW,OAAQA,EACRC,WAAYA,EACZlL,cAAeA,EACfmL,eAAgBA,8FD3C2B,mBAC9C3X,wBAAMsB,qDAD2CD,wIEJT,gBAC/C8Y,IAAAA,QACA9Y,IAAAA,aACA+Y,iBAAAA,aAAmB,SACnBC,IAAAA,SACAnZ,IAAAA,iBACAH,MAAAA,aAAQ,iBAERf,uCACc,WACZsB,UAAW5B,EAAc,CACvB,CAAC6B,EAAOC,MAAM,GACd,CAACD,EAAOR,KAAUQ,EAAOR,IACzB,CAACQ,EAAOL,KAAiBK,EAAOL,OAGjCG,GAAiC,SAArB+Y,GACXpa,uBACEsB,UAAW5B,EAAc,CACvB,CAAC6B,EAAOF,UAAU,GAClB,CAACE,EAAOkI,MAAM,MAGfpI,GAGLrB,yBACEsB,UAAWC,EAAO+Y,MAClB7Z,KAAK,WACL8Z,QAASJ,EACTE,SAAUA,IAEZra,wBAAMsB,UAAWC,EAAOkL,SACtBzM,wBAAMsB,UAAWC,EAAOiZ,QAEzBnZ,GAAiC,UAArB+Y,GACXpa,uBACEsB,UAAW5B,EAAc,CACvB,CAAC6B,EAAOF,UAAU,GAClB,CAACE,EAAOkZ,OAAO,MAGhBpZ,uECxCsC,gBAAGA,IAAAA,SAAUH,IAAAA,aACtDoJ,EAAyB,CAAC,CAAC/I,EAAOC,MAAM,WAExCN,IACFoJ,EAAaD,EAAiBC,EAAYpJ,EAAcK,IAWxDvB,qCAAiB,UAAUsB,UAAW5B,EAAc4K,IAClDtK,sBAAIsB,UAAWC,EAAO5B,MARxB+a,WAAS7a,IAAIwB,GAAU,SAACiL,EAAmBoI,UACzC1U,sBAAIsB,UAAWC,EAAO+K,KAAM3E,IAAQ+M,MAASpI,EAAKqO,MAAMla,MACrDT,EAAM4a,aAAatO,gCCV+B,gBACzDjL,IAAAA,SACAZ,IAAAA,KACAM,IAAAA,MAEAK,IAAAA,eAUEpB,wCACc,iBACZsB,UAAW5B,EAVgB,CAC7B,CAAC6B,GAAOC,MAAM,GACd,CAACD,GAAOd,KAASc,GAAOd,IACxB,CAACc,GAAOR,KAAUQ,GAAOR,MAAYA,GACrC,CAACQ,GAAOsZ,aAPVA,YAcIpa,KAAK,SACLW,QAAS,kBAAYA,EAAQX,KAE7BT,gBAAC2D,GAAU3C,KAAK,SAAS4C,KAAMnD,EAAMS,aAAa,gBACjDG,GAAYrB,wBAAMsB,UAAWC,GAAOoT,MAAOtT"}
|