@redneckz/wildless-cms-uni-blocks 0.2.78 → 0.2.82

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/bundle/blocks.schema.json +4 -1
  2. package/bundle/bundle.umd.js +48 -7
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/dist/ProjectSettings.d.ts +1 -0
  5. package/dist/ProjectSettings.js.map +1 -1
  6. package/dist/components/Accordion/Accordion.d.ts +5 -0
  7. package/dist/components/Accordion/Accordion.js +10 -0
  8. package/dist/components/Accordion/Accordion.js.map +1 -0
  9. package/dist/components/Accordion/AccordionBlocks.d.ts +4 -0
  10. package/dist/components/Accordion/AccordionBlocks.js +7 -0
  11. package/dist/components/Accordion/AccordionBlocks.js.map +1 -0
  12. package/dist/components/Accordion/AccordionContent.d.ts +14 -0
  13. package/dist/components/Accordion/AccordionContent.js +2 -0
  14. package/dist/components/Accordion/AccordionContent.js.map +1 -0
  15. package/dist/components/Accordion/AccordionItem.d.ts +5 -0
  16. package/dist/components/Accordion/AccordionItem.js +35 -0
  17. package/dist/components/Accordion/AccordionItem.js.map +1 -0
  18. package/dist/components/Blocks.d.ts +1 -0
  19. package/dist/components/Blocks.js +2 -0
  20. package/dist/components/Blocks.js.map +1 -1
  21. package/dist/components/CreditCalculator/CreditCalculator.d.ts +2 -1
  22. package/dist/components/CreditCalculator/CreditCalculator.js +39 -15
  23. package/dist/components/CreditCalculator/CreditCalculator.js.map +1 -1
  24. package/dist/components/CreditCalculator/CreditCalculatorContent.d.ts +15 -0
  25. package/dist/components/CreditCalculator/CreditCalculatorContent.js +2 -0
  26. package/dist/components/CreditCalculator/CreditCalculatorContent.js.map +1 -0
  27. package/dist/components/CreditCalculator/constants.d.ts +7 -0
  28. package/dist/components/CreditCalculator/constants.js +10 -0
  29. package/dist/components/CreditCalculator/constants.js.map +1 -0
  30. package/dist/components/CreditCalculator/getCalculatorParams.d.ts +7 -0
  31. package/dist/components/CreditCalculator/getCalculatorParams.js +11 -0
  32. package/dist/components/CreditCalculator/getCalculatorParams.js.map +1 -0
  33. package/dist/components/CreditCalculator/getCreditRate.d.ts +7 -0
  34. package/dist/components/CreditCalculator/getCreditRate.js +13 -0
  35. package/dist/components/CreditCalculator/getCreditRate.js.map +1 -0
  36. package/dist/components/CreditCalculator/getCreditTermYears.d.ts +1 -0
  37. package/dist/components/CreditCalculator/getCreditTermYears.js +15 -0
  38. package/dist/components/CreditCalculator/getCreditTermYears.js.map +1 -0
  39. package/dist/components/CreditCalculator/getMonthlyPayment.d.ts +11 -0
  40. package/dist/components/CreditCalculator/getMonthlyPayment.js +19 -0
  41. package/dist/components/CreditCalculator/getMonthlyPayment.js.map +1 -0
  42. package/dist/components/Footer/SocialMedia.js +11 -5
  43. package/dist/components/Footer/SocialMedia.js.map +1 -1
  44. package/dist/components/Header/HeaderSecondaryMenu.js +1 -1
  45. package/dist/components/Header/HeaderSecondaryMenu.js.map +1 -1
  46. package/dist/hooks/useCreditCalculatorData.d.ts +3 -0
  47. package/dist/hooks/useCreditCalculatorData.js +15 -0
  48. package/dist/hooks/useCreditCalculatorData.js.map +1 -0
  49. package/dist/ui-kit/Icon/Icon.js +1 -1
  50. package/dist/ui-kit/Icon/Icon.js.map +1 -1
  51. package/dist/ui-kit/Icon/IconProps.d.ts +4 -1
  52. package/dist/ui-kit/Icon/IconProps.js +3 -0
  53. package/dist/ui-kit/Icon/IconProps.js.map +1 -1
  54. package/dist/ui-kit/InputRange/InputRange.js +3 -2
  55. package/dist/ui-kit/InputRange/InputRange.js.map +1 -1
  56. package/dist/utils/addSpacesBetweenNumbers.d.ts +1 -0
  57. package/dist/utils/addSpacesBetweenNumbers.js +5 -0
  58. package/dist/utils/addSpacesBetweenNumbers.js.map +1 -0
  59. package/lib/ProjectSettings.d.ts +1 -0
  60. package/lib/ProjectSettings.js.map +1 -1
  61. package/lib/common.css +1 -1
  62. package/lib/components/Accordion/Accordion.d.ts +5 -0
  63. package/lib/components/Accordion/Accordion.fixture.d.ts +4 -0
  64. package/lib/components/Accordion/Accordion.js +8 -0
  65. package/lib/components/Accordion/Accordion.js.map +1 -0
  66. package/lib/components/Accordion/AccordionBlocks.d.ts +4 -0
  67. package/lib/components/Accordion/AccordionBlocks.js +6 -0
  68. package/lib/components/Accordion/AccordionBlocks.js.map +1 -0
  69. package/lib/components/Accordion/AccordionContent.d.ts +14 -0
  70. package/lib/components/Accordion/AccordionContent.js +2 -0
  71. package/lib/components/Accordion/AccordionContent.js.map +1 -0
  72. package/lib/components/Accordion/AccordionItem.d.ts +5 -0
  73. package/lib/components/Accordion/AccordionItem.js +30 -0
  74. package/lib/components/Accordion/AccordionItem.js.map +1 -0
  75. package/lib/components/BenefitsBlock/BenefitsBlock.fixture.d.ts +2 -0
  76. package/lib/components/Blocks.d.ts +1 -0
  77. package/lib/components/Blocks.js +2 -0
  78. package/lib/components/Blocks.js.map +1 -1
  79. package/lib/components/ComparisonTable/ComparisonTable.fixture.d.ts +8 -0
  80. package/lib/components/ContentPage/ContentPage.fixture.d.ts +6 -0
  81. package/lib/components/CreditCalculator/CreditCalculator.d.ts +2 -1
  82. package/lib/components/CreditCalculator/CreditCalculator.fixture.d.ts +2 -0
  83. package/lib/components/CreditCalculator/CreditCalculator.js +39 -15
  84. package/lib/components/CreditCalculator/CreditCalculator.js.map +1 -1
  85. package/lib/components/CreditCalculator/CreditCalculatorContent.d.ts +15 -0
  86. package/lib/components/CreditCalculator/CreditCalculatorContent.js +2 -0
  87. package/lib/components/CreditCalculator/CreditCalculatorContent.js.map +1 -0
  88. package/lib/components/CreditCalculator/constants.d.ts +7 -0
  89. package/lib/components/CreditCalculator/constants.js +8 -0
  90. package/lib/components/CreditCalculator/constants.js.map +1 -0
  91. package/lib/components/CreditCalculator/getCalculatorParams.d.ts +7 -0
  92. package/lib/components/CreditCalculator/getCalculatorParams.js +8 -0
  93. package/lib/components/CreditCalculator/getCalculatorParams.js.map +1 -0
  94. package/lib/components/CreditCalculator/getCreditRate.d.ts +7 -0
  95. package/lib/components/CreditCalculator/getCreditRate.js +10 -0
  96. package/lib/components/CreditCalculator/getCreditRate.js.map +1 -0
  97. package/lib/components/CreditCalculator/getCreditTermYears.d.ts +1 -0
  98. package/lib/components/CreditCalculator/getCreditTermYears.js +12 -0
  99. package/lib/components/CreditCalculator/getCreditTermYears.js.map +1 -0
  100. package/lib/components/CreditCalculator/getMonthlyPayment.d.ts +11 -0
  101. package/lib/components/CreditCalculator/getMonthlyPayment.js +16 -0
  102. package/lib/components/CreditCalculator/getMonthlyPayment.js.map +1 -0
  103. package/lib/components/ExchangeRateTile/ExchangeRateTile.fixture.d.ts +4 -0
  104. package/lib/components/Footer/Footer.fixture.d.ts +2 -0
  105. package/lib/components/Footer/SocialMedia.js +11 -5
  106. package/lib/components/Footer/SocialMedia.js.map +1 -1
  107. package/lib/components/Gallery/Gallery.fixture.d.ts +9 -0
  108. package/lib/components/Header/Header.fixture.d.ts +2 -0
  109. package/lib/components/Header/HeaderSecondaryMenu.js +1 -1
  110. package/lib/components/Header/HeaderSecondaryMenu.js.map +1 -1
  111. package/lib/components/LikeControl/LikeControl.fixture.d.ts +2 -0
  112. package/lib/components/MiniGallery/MiniGallery.fixture.d.ts +5 -0
  113. package/lib/components/MobileAppTile/MobileAppTile.fixture.d.ts +4 -0
  114. package/lib/components/Placeholder/Placeholder.fixture.d.ts +2 -0
  115. package/lib/components/ProductBlock/ProductBlock.fixture.d.ts +5 -0
  116. package/lib/components/ProductGallery/ProductGallery.fixture.d.ts +2 -0
  117. package/lib/components/ProductTile/ProductTile.fixture.d.ts +7 -0
  118. package/lib/components/PromoTile/PromoTile.fixture.d.ts +4 -0
  119. package/lib/components/StepsBlock/StepsBlock.fixture.d.ts +2 -0
  120. package/lib/components/TextBlock/TextBlock.fixture.d.ts +2 -0
  121. package/lib/components/Tile/Tile.fixture.d.ts +8 -0
  122. package/lib/cosmos.decorator.d.ts +4 -0
  123. package/lib/hooks/useCreditCalculatorData.d.ts +3 -0
  124. package/lib/hooks/useCreditCalculatorData.js +12 -0
  125. package/lib/hooks/useCreditCalculatorData.js.map +1 -0
  126. package/lib/setup-fixture.d.ts +3 -0
  127. package/lib/ui-kit/BlockItem/BlockItem.fixture.d.ts +3 -0
  128. package/lib/ui-kit/Button/Button.fixture.d.ts +13 -0
  129. package/lib/ui-kit/Button/LikeButton.fixture.d.ts +5 -0
  130. package/lib/ui-kit/HeaderItem/HeaderItem.fixture.d.ts +6 -0
  131. package/lib/ui-kit/Icon/Icon.fixture.d.ts +5 -0
  132. package/lib/ui-kit/Icon/Icon.js +2 -2
  133. package/lib/ui-kit/Icon/Icon.js.map +1 -1
  134. package/lib/ui-kit/Icon/IconProps.d.ts +4 -1
  135. package/lib/ui-kit/Icon/IconProps.js +3 -0
  136. package/lib/ui-kit/Icon/IconProps.js.map +1 -1
  137. package/lib/ui-kit/InputRange/InputRange.js +3 -2
  138. package/lib/ui-kit/InputRange/InputRange.js.map +1 -1
  139. package/lib/ui-kit/Logo/Logo.fixture.d.ts +3 -0
  140. package/lib/ui-kit/TopItem/TopItem.fixture.d.ts +6 -0
  141. package/lib/utils/addSpacesBetweenNumbers.d.ts +1 -0
  142. package/lib/utils/addSpacesBetweenNumbers.js +2 -0
  143. package/lib/utils/addSpacesBetweenNumbers.js.map +1 -0
  144. package/package.json +3 -2
  145. package/src/ProjectSettings.ts +1 -0
  146. package/src/components/Accordion/Accordion.fixture.tsx +62 -0
  147. package/src/components/Accordion/Accordion.tsx +22 -0
  148. package/src/components/Accordion/AccordionBlocks.tsx +7 -0
  149. package/src/components/Accordion/AccordionContent.ts +18 -0
  150. package/src/components/Accordion/AccordionItem.tsx +68 -0
  151. package/src/components/Blocks.ts +2 -0
  152. package/src/components/ContentPage/ContentPage.page.json +78 -0
  153. package/src/components/CreditCalculator/CreditCalculator.fixture.tsx +1 -1
  154. package/src/components/CreditCalculator/CreditCalculator.tsx +134 -85
  155. package/src/components/CreditCalculator/CreditCalculatorContent.ts +17 -0
  156. package/src/components/CreditCalculator/constants.ts +8 -0
  157. package/src/components/CreditCalculator/getCalculatorParams.ts +16 -0
  158. package/src/components/CreditCalculator/getCreditRate.ts +18 -0
  159. package/src/components/CreditCalculator/getCreditTermYears.spec.ts +10 -0
  160. package/src/components/CreditCalculator/getCreditTermYears.ts +15 -0
  161. package/src/components/CreditCalculator/getMonthlyPayment.ts +32 -0
  162. package/src/components/Footer/Footer.fixture.tsx +1 -1
  163. package/src/components/Footer/SocialMedia.tsx +26 -7
  164. package/src/components/Header/HeaderSecondaryMenu.tsx +6 -2
  165. package/src/hooks/useCreditCalculatorData.ts +23 -0
  166. package/src/icons/ActualBalanceIcon.svg +1 -0
  167. package/src/icons/AppleIcon.svg +1 -1
  168. package/src/icons/CalendarIcon.svg +1 -1
  169. package/src/icons/ClockIcon.svg +1 -0
  170. package/src/icons/ComfortableCompIcon.svg +1 -0
  171. package/src/icons/DocIcon.svg +5 -0
  172. package/src/icons/DollarIcon.svg +1 -1
  173. package/src/icons/EmptyWalletIcon.svg +1 -1
  174. package/src/icons/EuroIcon.svg +1 -1
  175. package/src/icons/GlassIcon.svg +1 -1
  176. package/src/icons/GridIcon.svg +2 -2
  177. package/src/icons/LoupeIcon.svg +1 -1
  178. package/src/icons/MinusIcon.svg +1 -0
  179. package/src/icons/NewDocIcon.svg +1 -0
  180. package/src/icons/OkIcon.svg +1 -2
  181. package/src/icons/PassSendIcon.svg +1 -0
  182. package/src/icons/PercentageSquareIcon.svg +1 -1
  183. package/src/icons/PlayMarketIcon.svg +1 -1
  184. package/src/icons/PlusIcon.svg +1 -0
  185. package/src/icons/ProfileIcon.svg +1 -1
  186. package/src/icons/SignDocsIcon.svg +1 -0
  187. package/src/icons/TelegramIcon.svg +1 -2
  188. package/src/icons/VKIcon.svg +1 -2
  189. package/src/ui-kit/Icon/Icon.tsx +8 -7
  190. package/src/ui-kit/Icon/IconProps.ts +3 -0
  191. package/src/ui-kit/InputRange/InputRange.tsx +3 -2
  192. package/src/utils/addSpacesBetweenNumbers.ts +2 -0
@@ -1,106 +1,155 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
+ import { useCreditCalculatorData } from '../../hooks/useCreditCalculatorData';
2
3
  import { UniBlockProps } from '../../types';
3
4
  import { Button } from '../../ui-kit/Button/Button';
4
5
  import { Checkbox } from '../../ui-kit/Checkbox/Checkbox';
5
6
  import { InputRange } from '../../ui-kit/InputRange/InputRange';
7
+ import { addSpacesBetweenNumbers } from '../../utils/addSpacesBetweenNumbers';
6
8
  import { clamp } from '../../utils/clamp';
9
+ import {
10
+ DEFAULT_MAX_MONTHS,
11
+ DEFAULT_MIN_MONTHS,
12
+ DEFAULT_MONTHS,
13
+ DEFAULT_SUM,
14
+ MONTHS_IN_YEAR,
15
+ } from './constants';
16
+ import { CreditCalculatorContent } from './CreditCalculatorContent';
17
+ import { getCalculatorParams } from './getCalculatorParams';
18
+ import { getCreditRate } from './getCreditRate';
19
+ import { getCreditTermYears } from './getCreditTermYears';
20
+ import { getMonthlyPayment } from './getMonthlyPayment';
7
21
 
8
- export interface CreditCalculatorProps extends UniBlockProps {}
22
+ export interface CreditCalculatorProps extends CreditCalculatorContent, UniBlockProps {}
23
+
24
+ const STEP_MONEY = 1000;
25
+ const STEP_MONTHS = 1;
26
+ const DEFAULT_PAYMENT_TYPE = 'annuity';
9
27
 
10
28
  const borderStyle = 'border-solid border-3 border-primary-main rounded-md';
11
29
 
12
- const MIN_MONEY = 50000;
13
- const MAX_MONEY = 3000000;
14
- const STEP_MONEY = 1000;
30
+ export const CreditCalculator = JSX<CreditCalculatorProps>(
31
+ ({ context, className, directoryName }) => {
32
+ const [moneyValue, setMoneyValue] = context.useState<number | undefined>(undefined);
33
+ const [monthsValue, setMonthsValue] = context.useState<number | undefined>(undefined);
34
+ const [isAnnuityChecked, setIsAnnuityChecked] = context.useState(true);
35
+ const [isInsuranceChecked, setIsInsuranceChecked] = context.useState(true);
15
36
 
16
- const CREDIT_TERM_YEARS = [2, 3, 4, 5, 6, 7];
37
+ const tableRows = useCreditCalculatorData(context.useAsyncData, directoryName).rows;
17
38
 
18
- const MIN_MONTHS = 1;
19
- const MAX_MONTHS = 84;
20
- const STEP_MONTHS = 1;
39
+ const calculatorParams = getCalculatorParams({ tableRows, isAnnuity: isAnnuityChecked });
21
40
 
22
- const MONTHS_IN_YEAR = 12;
41
+ const defaultSum =
42
+ calculatorParams.maxSum && calculatorParams.minSum
43
+ ? (calculatorParams.maxSum - calculatorParams.minSum) / 2
44
+ : DEFAULT_SUM;
23
45
 
24
- export const CreditCalculator = JSX<CreditCalculatorProps>(({ context, className }) => {
25
- const [moneyValue, setMoneyValue] = context.useState(350000);
26
- const [monthsValue, setMonthsValue] = context.useState(12);
27
- const [isAnnuityChecked, setIsAnnuityChecked] = context.useState(true);
28
- const [isInsuranceChecked, setIsInsuranceChecked] = context.useState(true);
46
+ const defaultMonths =
47
+ calculatorParams.maxMonths && calculatorParams.minMonths
48
+ ? Math.round((calculatorParams.maxMonths - calculatorParams.minMonths) / 2)
49
+ : DEFAULT_MONTHS;
29
50
 
30
- const handleButtonClick = (value: number) => {
31
- setMonthsValue(clamp(value * MONTHS_IN_YEAR, MIN_MONTHS, MAX_MONTHS));
32
- };
51
+ const rate = getCreditRate({ calculatorParams, isInsurance: isInsuranceChecked });
33
52
 
34
- return (
35
- <section className={`font-sans text-primary-text bg-white p-4 ${className}`}>
36
- <div className={`box-border p-12 flex flex-col justify-between ${borderStyle}`}>
37
- <div className="flex justify-between">
38
- <div className="grow mr-11">
39
- <InputRange
40
- title="Желаемая сумма кредита, ₽"
41
- items={['От 50 000 рублей', 'До 3 000 000 рублей']}
42
- min={MIN_MONEY}
43
- max={MAX_MONEY}
44
- step={STEP_MONEY}
45
- value={moneyValue}
46
- onChange={setMoneyValue}
47
- />
48
- <InputRange
49
- title="Срок кредита, месяцев"
50
- items={['Или выберите из предложенных вариантов ниже']}
51
- min={MIN_MONTHS}
52
- max={MAX_MONTHS}
53
- step={STEP_MONTHS}
54
- value={monthsValue}
55
- onChange={setMonthsValue}
56
- />
57
- <div className="flex mb-7">
58
- {CREDIT_TERM_YEARS.map((number, i) => renderButton(number, i, handleButtonClick))}
53
+ const montlyPayment = getMonthlyPayment({
54
+ calculatorParams,
55
+ paymentType: DEFAULT_PAYMENT_TYPE,
56
+ rate,
57
+ sum: moneyValue || defaultSum,
58
+ months: monthsValue || defaultMonths,
59
+ });
60
+
61
+ const creditTermYears = getCreditTermYears(
62
+ calculatorParams.minMonths || DEFAULT_MIN_MONTHS,
63
+ calculatorParams.maxMonths || DEFAULT_MAX_MONTHS,
64
+ );
65
+
66
+ function handleButtonClick(value: number) {
67
+ setMonthsValue(
68
+ clamp(
69
+ value * MONTHS_IN_YEAR,
70
+ calculatorParams?.minMonths || DEFAULT_MIN_MONTHS,
71
+ calculatorParams?.maxMonths || DEFAULT_MAX_MONTHS,
72
+ ),
73
+ );
74
+ }
75
+
76
+ return (
77
+ <section className={`font-sans text-primary-text bg-white p-4 ${className}`}>
78
+ <div className={`box-border p-12 flex flex-col justify-between ${borderStyle}`}>
79
+ <div className="flex justify-between">
80
+ <div className="grow mr-11">
81
+ <InputRange
82
+ title="Желаемая сумма кредита, ₽"
83
+ items={[
84
+ `От ${addSpacesBetweenNumbers(Number(calculatorParams.minSum))} рублей`,
85
+ `До ${addSpacesBetweenNumbers(Number(calculatorParams.maxSum))} рублей`,
86
+ ]}
87
+ min={calculatorParams?.minSum}
88
+ max={calculatorParams?.maxSum}
89
+ step={STEP_MONEY}
90
+ value={moneyValue || defaultSum}
91
+ onChange={setMoneyValue}
92
+ />
93
+ <InputRange
94
+ title="Срок кредита, месяцев"
95
+ items={['Или выберите из предложенных вариантов ниже']}
96
+ min={calculatorParams?.minMonths}
97
+ max={calculatorParams?.maxMonths}
98
+ step={STEP_MONTHS}
99
+ value={monthsValue || defaultMonths}
100
+ onChange={setMonthsValue}
101
+ />
102
+ <div className="flex mb-7">
103
+ {creditTermYears.map((number, i) => renderButton(number, i, handleButtonClick))}
104
+ </div>
105
+ <Checkbox
106
+ text="Получаю пенсию на карту Россельхозбанка"
107
+ checked={isAnnuityChecked}
108
+ onChange={setIsAnnuityChecked}
109
+ />
110
+ <Checkbox
111
+ className="mb-4"
112
+ text="Комплексная страховая защита"
113
+ checked={isInsuranceChecked}
114
+ onChange={setIsInsuranceChecked}
115
+ />
116
+ </div>
117
+ <div className="p-9 bg-primary-main rounded-md text-white">
118
+ <div className="text-base mb-5">Наше предложение</div>
119
+ <div className="text-sm opacity-60">Ежемесячный платёж</div>
120
+ <div className="text-lg mb-3">
121
+ {addSpacesBetweenNumbers(Math.round(montlyPayment))} ₽
122
+ </div>
123
+ <div className="text-sm opacity-60">Ставка</div>
124
+ <div className="text-lg">{rate} %</div>
59
125
  </div>
60
- <Checkbox
61
- text="Получаю пенсию на карту Россельхозбанка"
62
- checked={isAnnuityChecked}
63
- onChange={setIsAnnuityChecked}
64
- />
65
- <Checkbox
66
- className="mb-4"
67
- text="Комплексная страховая защита"
68
- checked={isInsuranceChecked}
69
- onChange={setIsInsuranceChecked}
70
- />
71
- </div>
72
- <div className="p-9 bg-primary-main rounded-md text-white">
73
- <div className="text-base mb-5">Наше предложение</div>
74
- <div className="text-sm opacity-60">Ежемесячный платёж</div>
75
- <div className="text-lg mb-3">26 827 ₽</div>
76
- <div className="text-sm opacity-60">Ставка</div>
77
- <div className="text-lg">16,9 %</div>
78
126
  </div>
79
- </div>
80
- <div className="flex items-center">
81
- <Button className="mr-3" text="Отправить заявку" version="primary" href="#" />
82
- <div
83
- className="w-80 text-xxs leading-4 text-secondary-text"
84
- aria-label="Соглашение на обработку персональных данных"
85
- >
86
- Отправляя заявку, вы соглашаетесь на обработку персональных данных соответственно
87
- требованиям ФЗ «О персональных данных»
127
+ <div className="flex items-center">
128
+ <Button className="mr-3" text="Отправить заявку" version="primary" href="#" />
129
+ <div
130
+ className="w-80 text-xxs leading-4 text-secondary-text"
131
+ aria-label="Соглашение на обработку персональных данных"
132
+ >
133
+ Отправляя заявку, вы соглашаетесь на обработку персональных данных соответственно
134
+ требованиям ФЗ «О персональных данных»
135
+ </div>
88
136
  </div>
89
137
  </div>
90
- </div>
91
- </section>
92
- );
93
- });
94
-
95
- const renderButton = (number: number, i: number, handleClick: (number: number) => void) => (
96
- <div
97
- key={String(i)}
98
- className="bg-secondary-light rounded-3xl h-10 w-[75px] box-border mr-2 flex items-center justify-center cursor-pointer"
99
- role="button"
100
- onClick={() => handleClick(number)}
101
- >
102
- <span className="font-medium text-sm">
103
- {number} {number > 4 ? 'лет' : 'года'}
104
- </span>
105
- </div>
138
+ </section>
139
+ );
140
+ },
106
141
  );
142
+
143
+ function renderButton(number: number, i: number, handleClick: (number: number) => void) {
144
+ return (
145
+ <button
146
+ key={String(i)}
147
+ className="bg-secondary-light rounded-3xl h-10 w-[75px] box-border mr-2 flex items-center justify-center cursor-pointer border-none"
148
+ onClick={() => handleClick(number)}
149
+ >
150
+ <span className="font-semibold text-sm">
151
+ {number} {number === 1 ? 'год' : number > 4 ? 'лет' : 'года'}
152
+ </span>
153
+ </button>
154
+ );
155
+ }
@@ -0,0 +1,17 @@
1
+ export interface CalculatorParams {
2
+ isAnnuity?: boolean;
3
+ minSum?: number;
4
+ maxSum?: number;
5
+ minMonths?: number;
6
+ maxMonths?: number;
7
+ rateWithInsurance?: number;
8
+ rateWithoutInsurance?: number;
9
+ }
10
+
11
+ export interface CreditCalculatorData {
12
+ rows?: CalculatorParams[];
13
+ }
14
+
15
+ export interface CreditCalculatorContent {
16
+ directoryName?: string;
17
+ }
@@ -0,0 +1,8 @@
1
+ export const DEFAULT_MIN_SUM = 30000;
2
+ export const DEFAULT_MAX_SUM = 3000000;
3
+ export const DEFAULT_SUM = (DEFAULT_MAX_SUM - DEFAULT_MIN_SUM) / 2;
4
+ export const DEFAULT_MIN_MONTHS = 1;
5
+ export const DEFAULT_MAX_MONTHS = 84;
6
+ export const DEFAULT_MONTHS = Math.round((DEFAULT_MAX_MONTHS - DEFAULT_MIN_MONTHS) / 2);
7
+
8
+ export const MONTHS_IN_YEAR = 12;
@@ -0,0 +1,16 @@
1
+ import { CalculatorParams } from './CreditCalculatorContent';
2
+
3
+ interface GetCalculatorParamsParams {
4
+ tableRows?: CalculatorParams[];
5
+ isAnnuity?: boolean;
6
+ }
7
+
8
+ export const getCalculatorParams = (params: GetCalculatorParamsParams) => {
9
+ const { tableRows, isAnnuity = false } = params;
10
+
11
+ if (!tableRows) return {};
12
+
13
+ const calculatorParams = tableRows.find((row) => row.isAnnuity === isAnnuity);
14
+
15
+ return calculatorParams || {};
16
+ };
@@ -0,0 +1,18 @@
1
+ import { CalculatorParams } from './CreditCalculatorContent';
2
+
3
+ const DEFAULT_RATE = 5;
4
+
5
+ interface GetCreditRateParams {
6
+ calculatorParams?: CalculatorParams;
7
+ isInsurance: boolean;
8
+ }
9
+
10
+ export const getCreditRate = (params: GetCreditRateParams) => {
11
+ const { calculatorParams, isInsurance } = params;
12
+
13
+ if (!calculatorParams) return DEFAULT_RATE;
14
+
15
+ return isInsurance
16
+ ? calculatorParams?.rateWithInsurance || DEFAULT_RATE
17
+ : calculatorParams?.rateWithoutInsurance || DEFAULT_RATE;
18
+ };
@@ -0,0 +1,10 @@
1
+ import { getCreditTermYears } from './getCreditTermYears';
2
+
3
+ describe('getCreditTermYears', () => {
4
+ it('should return array starts from min year plus one and ends with max year', () => {
5
+ const minMonths = 12;
6
+ const maxMonths = 96;
7
+ const items = [2, 3, 4, 5, 6, 8];
8
+ expect(getCreditTermYears(minMonths, maxMonths)).toEqual(items);
9
+ });
10
+ });
@@ -0,0 +1,15 @@
1
+ import { MONTHS_IN_YEAR } from './constants';
2
+
3
+ const MAX_YEARS_LENGTH = 5;
4
+
5
+ export const getCreditTermYears = (minMonths: number, maxMonths: number) => {
6
+ const totalYears = Math.ceil((maxMonths - minMonths) / 12);
7
+ const firstYear = Math.floor(minMonths / MONTHS_IN_YEAR) + 1;
8
+
9
+ const result = new Array(Math.min(totalYears - 1, MAX_YEARS_LENGTH))
10
+ .fill(0)
11
+ .map((_, i) => firstYear + i);
12
+
13
+ const maxYear = totalYears + firstYear - 1;
14
+ return result.concat(maxYear);
15
+ };
@@ -0,0 +1,32 @@
1
+ import { clamp } from '../../utils/clamp';
2
+ import { DEFAULT_MAX_SUM, DEFAULT_MIN_SUM, MONTHS_IN_YEAR } from './constants';
3
+ import { CalculatorParams } from './CreditCalculatorContent';
4
+
5
+ type PaymentType = 'annuity' | 'differentiated';
6
+
7
+ interface GetMonthlyPaymentParams {
8
+ calculatorParams?: CalculatorParams;
9
+ paymentType: PaymentType;
10
+ rate: number;
11
+ sum: number;
12
+ months: number;
13
+ }
14
+
15
+ export const getMonthlyPayment = (params: GetMonthlyPaymentParams) => {
16
+ const { calculatorParams, paymentType, rate, sum, months } = params;
17
+
18
+ if (!calculatorParams) return 0;
19
+
20
+ const finalSum = clamp(
21
+ sum,
22
+ calculatorParams.minSum || DEFAULT_MIN_SUM,
23
+ calculatorParams.maxSum || DEFAULT_MAX_SUM,
24
+ );
25
+
26
+ if (paymentType === 'annuity') {
27
+ const annuityCoef = Number(rate) / (MONTHS_IN_YEAR * 100);
28
+ return finalSum * (annuityCoef + annuityCoef / (Math.pow(1 + annuityCoef, months) - 1));
29
+ } else {
30
+ return finalSum / months + finalSum * (Number(rate) / 12);
31
+ }
32
+ };
@@ -188,7 +188,7 @@ export default (
188
188
  ],
189
189
  },
190
190
  ]}
191
- socialMedia={[{ href: 'https://vk.com' }, { href: 'https://ok.ru' }, { href: 'https://t.me' }]}
191
+ socialMedia={[{ href: 'https://t.me' }, { href: 'https://vk.com' }, { href: 'https://ok.ru' }]}
192
192
  contacts={[
193
193
  {
194
194
  text: '+7 (495) 787-7-787',
@@ -6,10 +6,22 @@ import type { IconName } from '../../ui-kit/Icon/IconProps';
6
6
  import { useLink } from '../../hooks/useLink';
7
7
  import { Button } from '../../ui-kit/Button/Button';
8
8
 
9
- const ICONS_MAP: Array<{ origins: string[]; icon: IconName; label: string }> = [
10
- { origins: ['t.me', 'telegram.org'], icon: 'TelegramIcon', label: 'Телеграм' },
11
- { origins: ['vk.com'], icon: 'VKIcon', label: 'ВКонтакте' },
12
- { origins: ['ok.ru'], icon: 'OkIcon', label: 'Одноклассники' },
9
+ const ICONS_MAP: Array<{
10
+ origins: string[];
11
+ icon: IconName;
12
+ label: string;
13
+ width: string;
14
+ height: string;
15
+ }> = [
16
+ {
17
+ origins: ['t.me', 'telegram.org'],
18
+ icon: 'TelegramIcon',
19
+ label: 'Телеграм',
20
+ width: '20px',
21
+ height: '16px',
22
+ },
23
+ { origins: ['vk.com'], icon: 'VKIcon', label: 'ВКонтакте', width: '24px', height: '12px' },
24
+ { origins: ['ok.ru'], icon: 'OkIcon', label: 'Одноклассники', width: '12px', height: '20px' },
13
25
  ];
14
26
 
15
27
  export interface SocialMediaProps extends UniBlockProps {
@@ -33,7 +45,7 @@ interface MediaButtonProps {
33
45
  }
34
46
 
35
47
  const MediaButton = JSX<MediaButtonProps>(({ href }) => {
36
- const { icon, label } =
48
+ const { icon, label, width, height } =
37
49
  ICONS_MAP.find(({ origins }) => origins.some((_) => href?.includes(_))) || {};
38
50
 
39
51
  if (!icon) return null;
@@ -45,8 +57,15 @@ const MediaButton = JSX<MediaButtonProps>(({ href }) => {
45
57
  target="_blank"
46
58
  rel="noopener noreferrer"
47
59
  aria-label={label}
48
- className="border-solid border border-main-divider w-9 h-9 flex items-center justify-center hover:text-primary-main"
49
- appendLeft={<Icon name={icon} />}
60
+ className="border-solid border border-main-divider w-9 h-9 flex items-center justify-center hover:fill-primary-main"
61
+ appendLeft={
62
+ <Icon
63
+ name={icon}
64
+ width={width}
65
+ height={height}
66
+ className="[&>*]:fill-primary-text [&>*]:hover:fill-primary-main"
67
+ />
68
+ }
50
69
  />
51
70
  );
52
71
  });
@@ -45,10 +45,14 @@ export const HeaderSecondaryMenu = JSX<HeaderSecondaryMenuProps>(
45
45
  <Icon name="ProfileIcon" aria-hidden="true" />
46
46
  </HeaderSecondaryMenuButton>
47
47
  <HeaderSecondaryMenuButton
48
- className="mr-5 text-secondary-light hover:text-secondary-active min-w-[32px] min-h-[32px]"
48
+ className="mr-5 text-secondary-light hover:text-primary-main min-w-[32px] min-h-[32px]"
49
49
  ariaLabel="Дополнительные ссылки"
50
50
  >
51
- <Icon name="GridIcon" aria-hidden="true" />
51
+ <Icon
52
+ name="GridIcon"
53
+ aria-hidden="true"
54
+ className="[&>*]:fill-secondary-light [&>*]:hover:fill-primary-main"
55
+ />
52
56
  </HeaderSecondaryMenuButton>
53
57
  </div>
54
58
  );
@@ -0,0 +1,23 @@
1
+ import type { AsyncDataHook } from '../components/ContentPage/ContentPageContext';
2
+ import { CreditCalculatorData } from '../components/CreditCalculator/CreditCalculatorContent';
3
+
4
+ export function useCreditCalculatorData(
5
+ useAsyncData: AsyncDataHook,
6
+ directoryName: string | undefined,
7
+ ): CreditCalculatorData {
8
+ const { data } = useAsyncData(creditCalculatorUrl(directoryName), () =>
9
+ fetchCreditCalculatorData(directoryName),
10
+ );
11
+ return data || {};
12
+ }
13
+
14
+ async function fetchCreditCalculatorData(
15
+ directoryName: string | undefined,
16
+ ): Promise<CreditCalculatorData> {
17
+ const response = await fetch(creditCalculatorUrl(directoryName));
18
+ return await response.json();
19
+ }
20
+
21
+ function creditCalculatorUrl(directoryName: string | undefined) {
22
+ return `/wcms-resources/${directoryName || 'credit-calculator-data'}.json`;
23
+ }
@@ -1,4 +1,5 @@
1
1
  <svg
2
+ id="icon"
2
3
  width="48"
3
4
  height="48"
4
5
  viewBox="0 0 70 70"
@@ -1 +1 @@
1
- <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 24"><path d="M18.406 12.761c-.023-3.028 2.793-4.511 2.93-4.572-1.603-2.073-4.075-2.357-4.968-2.377-2.083-.204-4.098 1.117-5.174 1.117-1.076 0-2.725-1.097-4.488-1.056-2.266.04-4.395 1.198-5.563 3.007-2.404 3.698-.618 9.124 1.694 12.09 1.145 1.464 2.496 3.09 4.259 3.028 1.717-.06 2.358-.975 4.441-.975 2.06 0 2.656.975 4.465.935 1.854-.02 3.022-1.463 4.12-2.947 1.329-1.666 1.855-3.332 1.878-3.413 0 0-3.549-1.2-3.594-4.837Zm-3.389-8.92c.916-1.037 1.557-2.419 1.374-3.841-1.35.061-3.022.833-3.984 1.829-.847.894-1.625 2.337-1.42 3.698 1.512.102 3.069-.67 4.03-1.686Z" fill="#42AB44"/></svg>
1
+ <svg id="icon" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 24"><path d="M18.406 12.761c-.023-3.028 2.793-4.511 2.93-4.572-1.603-2.073-4.075-2.357-4.968-2.377-2.083-.204-4.098 1.117-5.174 1.117-1.076 0-2.725-1.097-4.488-1.056-2.266.04-4.395 1.198-5.563 3.007-2.404 3.698-.618 9.124 1.694 12.09 1.145 1.464 2.496 3.09 4.259 3.028 1.717-.06 2.358-.975 4.441-.975 2.06 0 2.656.975 4.465.935 1.854-.02 3.022-1.463 4.12-2.947 1.329-1.666 1.855-3.332 1.878-3.413 0 0-3.549-1.2-3.594-4.837Zm-3.389-8.92c.916-1.037 1.557-2.419 1.374-3.841-1.35.061-3.022.833-3.984 1.829-.847.894-1.625 2.337-1.42 3.698 1.512.102 3.069-.67 4.03-1.686Z" fill="#42AB44"/></svg>
@@ -1,4 +1,4 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
1
+ <svg id="icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
2
2
  <path
3
3
  stroke="#1C1C1C"
4
4
  stroke-linecap="round"
@@ -1,4 +1,5 @@
1
1
  <svg
2
+ id='icon'
2
3
  width="70"
3
4
  height="70"
4
5
  viewBox="0 0 70 70"
@@ -1,4 +1,5 @@
1
1
  <svg
2
+ id="icon"
2
3
  width="70"
3
4
  height="70"
4
5
  viewBox="0 0 70 70"
@@ -0,0 +1,5 @@
1
+ <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M9.809 2.759A2.813 2.813 0 0 1 11.742 2h5.524C18.776 2 20 3.16 20 4.59v13.82c0 1.43-1.224 2.59-2.734 2.59H6.734C5.224 21 4 19.84 4 18.41v-5.95c0-.477.408-.864.911-.864.504 0 .912.387.912.864v5.95c0 .476.408.863.911.863h10.532c.503 0 .911-.387.911-.864V4.591c0-.477-.408-.864-.911-.864h-5.367v4.03c0 .955-.816 1.728-1.823 1.728H4.911c-.368 0-.7-.21-.842-.533a.83.83 0 0 1 .198-.941l5.542-5.252Zm.267 2.19L7.112 7.758h2.964v-2.81Z" fill="#1C1C1C" />
3
+ <rect x="8" y="12" width="8" height="2" rx="1" fill="#42AB44" />
4
+ <rect x="8" y="15" width="5" height="2" rx="1" fill="#42AB44" />
5
+ </svg>
@@ -1,4 +1,4 @@
1
- <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
1
+ <svg id="icon" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
2
  <path
3
3
  d="M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z"
4
4
  fill="#46B448"
@@ -1,4 +1,4 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
1
+ <svg id="icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
2
2
  <path
3
3
  stroke="#292D32"
4
4
  stroke-linecap="round"
@@ -1,4 +1,4 @@
1
- <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
1
+ <svg id="icon" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
2
  <path
3
3
  d="M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z"
4
4
  fill="#3060BF"
@@ -1 +1 @@
1
- <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 63 63"><g clip-path="url(#a)"><path d="M63 60.987c0-.13-.172-.259-.505-.382-3.072-.812-12.836-1.398-24.405-1.398-14.04 0-25.427.873-25.427 1.944 0 .13.172.26.505.382 3.083.812 12.837 1.399 24.406 1.399 14.04 0 25.426-.873 25.426-1.945Z" fill="#050304"/><path d="M63 60.987c0-.13-.172-.259-.505-.382-3.072-.812-12.836-1.398-24.405-1.398-14.04 0-25.427.873-25.427 1.944 0 .13.172.26.505.382 3.083.812 12.837 1.399 24.406 1.399 14.04 0 25.426-.873 25.426-1.945Z" fill="url(#b)"/><path d="M63 60.987c0-.13-.172-.259-.505-.382-3.072-.812-12.836-1.398-24.405-1.398-14.04 0-25.427.873-25.427 1.944 0 .13.172.26.505.382 3.083.812 12.837 1.399 24.406 1.399 14.04 0 25.426-.873 25.426-1.945Z" fill="#050304"/><path d="M63 60.987c0-.13-.172-.259-.505-.382-3.072-.812-12.836-1.398-24.405-1.398-14.04 0-25.427.873-25.427 1.944 0 .13.172.26.505.382 3.083.812 12.837 1.399 24.406 1.399 14.04 0 25.426-.873 25.426-1.945Z" fill="url(#c)"/><path d="M53.554 40.447a.31.31 0 0 0-.609 0l-.269 1.279a1.153 1.153 0 0 1-.89.89l-1.28.27a.31.31 0 0 0 0 .608l1.28.27c.447.093.796.443.89.89l.27 1.28a.31.31 0 0 0 .608 0l.269-1.28c.094-.447.443-.797.89-.89l1.28-.27a.31.31 0 0 0 0-.608l-1.28-.27a1.153 1.153 0 0 1-.89-.89l-.27-1.279Z" fill="#FFCA42"/><path d="M48.658 53.298H15.076a.827.827 0 0 1-.824-.824v-2.213c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213c0 .453-.371.824-.824.824Z" fill="#FA552D"/><path d="M48.658 53.298H15.076a.827.827 0 0 1-.824-.824v-2.213c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213c0 .453-.371.824-.824.824Z" fill="#42AB44"/><path d="M26.19 52.168h-.597v.552h.597v-.552Zm1.196-.42h-.598v.972h.598v-.972Zm1.195-.643h-.598v1.615h.598v-1.615Zm1.195.26h-.598v1.355h.598v-1.356Zm1.191-1.357h-.598v2.436h.598v-2.436Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.597v2.712h.597v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v1.904h.598v-1.904Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.191 0H44.7v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.597v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Z" fill="#5F1A58"/><path d="M26.19 52.168h-.597v.552h.597v-.552Zm1.196-.42h-.598v.972h.598v-.972Zm1.195-.643h-.598v1.615h.598v-1.615Zm1.195.26h-.598v1.355h.598v-1.356Zm1.191-1.357h-.598v2.436h.598v-2.436Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.597v2.712h.597v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v1.904h.598v-1.904Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.191 0H44.7v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.597v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Z" fill="#050304"/><path d="M26.19 52.168h-.597v.552h.597v-.552Zm1.196-.42h-.598v.972h.598v-.972Zm1.195-.643h-.598v1.615h.598v-1.615Zm1.195.26h-.598v1.355h.598v-1.356Zm1.191-1.357h-.598v2.436h.598v-2.436Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.597v2.712h.597v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v1.904h.598v-1.904Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.191 0H44.7v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.597v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Z" fill="url(#d)"/><path d="M48.657 53.298H40.11v-3.862h8.544c.453 0 .824.371.824.824v2.214a.82.82 0 0 1-.82.824Z" fill="#050304"/><path d="M48.657 53.298H40.11v-3.862h8.544c.453 0 .824.371.824.824v2.214a.82.82 0 0 1-.82.824Z" fill="url(#e)"/><path d="M48.657 53.298H40.11v-3.862h8.544c.453 0 .824.371.824.824v2.214a.82.82 0 0 1-.82.824Z" fill="#050304"/><path d="M48.657 53.298H40.11v-3.862h8.544c.453 0 .824.371.824.824v2.214a.82.82 0 0 1-.82.824Z" fill="url(#f)"/><path d="M54.117 57.162H20.54a.827.827 0 0 1-.824-.824v-2.213c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213a.83.83 0 0 1-.829.824Z" fill="#42AB44"/><path d="M54.117 57.162H40.43l-20.714-2.176v-.861c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213a.83.83 0 0 1-.829.824Z" fill="#050304"/><path d="M54.117 57.162H40.43l-20.714-2.176v-.861c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213a.83.83 0 0 1-.829.824Z" fill="url(#g)"/><path d="M51.198 61.021H17.616a.827.827 0 0 1-.824-.824v-2.214c0-.453.37-.824.824-.824h33.582c.453 0 .824.371.824.825v2.213a.824.824 0 0 1-.824.824Z" fill="#050304"/><path d="M51.198 61.021H17.616a.827.827 0 0 1-.824-.824v-2.214c0-.453.37-.824.824-.824h33.582c.453 0 .824.371.824.825v2.213a.824.824 0 0 1-.824.824Z" fill="url(#h)"/><path d="M51.198 61.021H17.616a.827.827 0 0 1-.824-.824v-2.214c0-.453.37-.824.824-.824h33.582c.453 0 .824.371.824.825v2.213a.824.824 0 0 1-.824.824Z" fill="#050304"/><path d="M51.198 61.021H17.616a.827.827 0 0 1-.824-.824v-2.214c0-.453.37-.824.824-.824h33.582c.453 0 .824.371.824.825v2.213a.824.824 0 0 1-.824.824Z" fill="url(#i)"/><path d="M51.198 61.021h-8.544v-3.862h8.544c.453 0 .824.371.824.825v2.213c0 .457-.37.824-.824.824Z" fill="#050304"/><path d="M51.198 61.021h-8.544v-3.862h8.544c.453 0 .824.371.824.825v2.213c0 .457-.37.824-.824.824Z" fill="url(#j)"/><path d="M51.198 61.021h-8.544v-3.862h8.544c.453 0 .824.371.824.825v2.213c0 .457-.37.824-.824.824Z" fill="#050304"/><path d="M51.198 61.021h-8.544v-3.862h8.544c.453 0 .824.371.824.825v2.213c0 .457-.37.824-.824.824Z" fill="url(#k)"/><path d="M24.704 57.763h-.598v2.658h.598v-2.658Zm1.195.334h-.597v1.99h.597v-1.99Zm1.191.614h-.597v.762h.597v-.762Zm1.196.56h-.598v1.15h.598v-1.15Zm1.195-1.137h-.598v.956h.598v-.956Zm2.386.383h-.598v1.15h.598v-1.15Z" fill="#5F1A58"/><path d="M24.704 57.763h-.598v2.658h.598v-2.658Zm1.195.334h-.597v1.99h.597v-1.99Zm1.191.614h-.597v.762h.597v-.762Zm1.196.56h-.598v1.15h.598v-1.15Zm1.195-1.137h-.598v.956h.598v-.956Zm2.386.383h-.598v1.15h.598v-1.15Z" fill="#050304"/><path d="M24.704 57.763h-.598v2.658h.598v-2.658Zm1.195.334h-.597v1.99h.597v-1.99Zm1.191.614h-.597v.762h.597v-.762Zm1.196.56h-.598v1.15h.598v-1.15Zm1.195-1.137h-.598v.956h.598v-.956Zm2.386.383h-.598v1.15h.598v-1.15Z" fill="url(#l)"/><path d="M32.922 49.437c9.144 0 16.556-7.412 16.556-16.556 0-9.143-7.413-16.556-16.556-16.556s-16.556 7.413-16.556 16.556c0 9.144 7.413 16.556 16.556 16.556Z" fill="#050304"/><path d="M32.922 49.437c9.144 0 16.556-7.412 16.556-16.556 0-9.143-7.413-16.556-16.556-16.556s-16.556 7.413-16.556 16.556c0 9.144 7.413 16.556 16.556 16.556Z" fill="url(#m)"/><mask id="n" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="14" y="16" width="34" height="34"><path d="M30.804 49.436c9.143 0 16.556-7.412 16.556-16.556 0-9.143-7.413-16.555-16.556-16.555-9.144 0-16.556 7.412-16.556 16.555 0 9.144 7.412 16.556 16.556 16.556Z" fill="#91BD65"/></mask><g mask="url(#n)"><path d="M30.804 49.436c9.143 0 16.556-7.412 16.556-16.556 0-9.143-7.413-16.555-16.556-16.555-9.144 0-16.556 7.412-16.556 16.555 0 9.144 7.412 16.556 16.556 16.556Z" fill="url(#o)"/><path d="m24.416 27.667-7.386-8.172-2.827 1.636 6.256 6.714 3.957-.178Z" fill="#FFCA42"/><path d="m24.416 27.667-7.386-8.172-2.827 1.636 6.256 6.714 3.957-.178Z" fill="url(#p)"/><mask id="q" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="17" y="19" width="28" height="28"><path d="M30.803 46.495c7.519 0 13.614-6.095 13.614-13.613S38.322 19.27 30.803 19.27c-7.518 0-13.613 6.095-13.613 13.613s6.095 13.613 13.613 13.613Z" fill="#91BD65"/></mask><g mask="url(#q)"><path d="M30.803 46.495c7.519 0 13.614-6.095 13.614-13.613S38.322 19.27 30.803 19.27c-7.518 0-13.613 6.095-13.613 13.613s6.095 13.613 13.613 13.613Z" fill="#FA552D"/><path d="M30.803 46.495c7.519 0 13.614-6.095 13.614-13.613S38.322 19.27 30.803 19.27c-7.518 0-13.613 6.095-13.613 13.613s6.095 13.613 13.613 13.613Z" fill="url(#r)"/><path d="M30.803 46.495c7.519 0 13.614-6.095 13.614-13.613S38.322 19.27 30.803 19.27c-7.518 0-13.613 6.095-13.613 13.613s6.095 13.613 13.613 13.613Z" fill="url(#s)"/><path d="M15.888 49.14h29.369l-2.3-11.803a3.147 3.147 0 0 0-3.087-2.543H21.274a3.147 3.147 0 0 0-3.087 2.543l-2.3 11.804Z" fill="#FFCA42"/><path d="M15.888 49.14h29.369l-2.3-11.803a3.147 3.147 0 0 0-3.087-2.543H21.274a3.147 3.147 0 0 0-3.087 2.543l-2.3 11.804Z" fill="url(#t)"/></g><path d="M27.029 27.451c2.39-1.986.944-5.06-2.477-2.72-3.825 2.622-.532 5.222 2.477 2.72Z" fill="#FFCA42"/><path d="M27.029 27.451c2.39-1.986.944-5.06-2.477-2.72-3.825 2.622-.532 5.222 2.477 2.72Z" fill="url(#u)"/><path d="M31.34 20.876c-7.517 0-13.613 6.096-13.613 13.613 0 1.204.157 2.37.45 3.483a13.57 13.57 0 0 1-.986-5.09c0-7.517 6.096-13.613 13.614-13.613 6.313 0 11.622 4.303 13.163 10.135-2.02-5-6.911-8.528-12.628-8.528Z" fill="#FA552D"/><path d="M31.34 20.876c-7.517 0-13.613 6.096-13.613 13.613 0 1.204.157 2.37.45 3.483a13.57 13.57 0 0 1-.986-5.09c0-7.517 6.096-13.613 13.614-13.613 6.313 0 11.622 4.303 13.163 10.135-2.02-5-6.911-8.528-12.628-8.528Z" fill="url(#v)"/><path d="M31.34 20.876c-7.517 0-13.613 6.096-13.613 13.613 0 1.204.157 2.37.45 3.483a13.57 13.57 0 0 1-.986-5.09c0-7.517 6.096-13.613 13.614-13.613 6.313 0 11.622 4.303 13.163 10.135-2.02-5-6.911-8.528-12.628-8.528Z" fill="#050304"/><path d="M31.34 20.876c-7.517 0-13.613 6.096-13.613 13.613 0 1.204.157 2.37.45 3.483a13.57 13.57 0 0 1-.986-5.09c0-7.517 6.096-13.613 13.614-13.613 6.313 0 11.622 4.303 13.163 10.135-2.02-5-6.911-8.528-12.628-8.528Z" fill="url(#w)"/></g><path d="M21.614 6.16a.425.425 0 0 0-.833 0l-.368 1.75a1.578 1.578 0 0 1-1.22 1.22l-1.75.368a.425.425 0 0 0 0 .832l1.75.368c.613.13 1.091.607 1.22 1.22l.368 1.75a.425.425 0 0 0 .833 0l.368-1.75a1.578 1.578 0 0 1 1.219-1.22l1.75-.368a.425.425 0 0 0 0-.832l-1.75-.368a1.578 1.578 0 0 1-1.22-1.22l-.367-1.75ZM8.279 39.569a.64.64 0 0 0-1.252 0l-.553 2.632a2.372 2.372 0 0 1-1.833 1.833l-2.632.553a.64.64 0 0 0 0 1.252l2.632.553c.92.194 1.64.913 1.833 1.833l.553 2.633a.64.64 0 0 0 1.252 0l.553-2.633c.194-.92.913-1.64 1.833-1.833l2.632-.553a.64.64 0 0 0 0-1.252l-2.632-.553A2.372 2.372 0 0 1 8.832 42.2l-.553-2.632Z" fill="#FFCA42"/></g><defs><linearGradient id="b" x1="12.663" y1="61.069" x2="63" y2="61.069" gradientUnits="userSpaceOnUse"><stop stop-color="#FA552D"/><stop offset=".104" stop-color="#FA552D" stop-opacity="0"/><stop offset=".81" stop-color="#5F1A58" stop-opacity="0"/><stop offset="1" stop-color="#5F1A58"/></linearGradient><linearGradient id="c" x1="63" y1="62.932" x2="12.717" y2="62.932" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".297" stop-color="#00D63C" stop-opacity="0"/><stop offset=".833" stop-color="#FA552D" stop-opacity="0"/><stop offset="1" stop-color="#FA552D"/></linearGradient><linearGradient id="d" x1="62.165" y1="54.392" x2="15.354" y2="51.029" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="e" x1="46.244" y1="51.847" x2="40.039" y2="51.847" gradientUnits="userSpaceOnUse"><stop stop-color="#5F1A58"/><stop offset="1" stop-color="#5F1A58" stop-opacity="0"/></linearGradient><linearGradient id="f" x1="54.82" y1="55.679" x2="35.901" y2="55.295" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="g" x1="75.037" y1="59.543" x2="4.274" y2="54.143" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="h" x1="16.792" y1="59.265" x2="21.944" y2="59.265" gradientUnits="userSpaceOnUse"><stop stop-color="#FA552D"/><stop offset="1" stop-color="#FA552D" stop-opacity="0"/></linearGradient><linearGradient id="i" x1="72.113" y1="63.402" x2="1.35" y2="58.002" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="j" x1="42.757" y1="59.059" x2="48.94" y2="59.059" gradientUnits="userSpaceOnUse"><stop stop-color="#5F1A58"/><stop offset="1" stop-color="#5F1A58" stop-opacity="0"/></linearGradient><linearGradient id="k" x1="57.365" y1="63.402" x2="38.447" y2="63.018" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="l" x1="36.293" y1="62.06" x2="20.623" y2="61.677" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="m" x1="55.687" y1="41.093" x2="29.024" y2="16.325" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".297" stop-color="#00D63C" stop-opacity="0"/><stop offset=".833" stop-color="#FA552D" stop-opacity="0"/><stop offset="1" stop-color="#FA552D"/></linearGradient><linearGradient id="o" x1="23.849" y1="45.931" x2="26.662" y2="14.768" gradientUnits="userSpaceOnUse"><stop stop-color="#7DC15D"/><stop offset="1" stop-color="#FEE54F"/></linearGradient><linearGradient id="p" x1="18.119" y1="22.174" x2="19.561" y2="25.265" gradientUnits="userSpaceOnUse"><stop stop-color="#FEFFCF"/><stop offset="1" stop-color="#FEFFCF" stop-opacity="0"/></linearGradient><linearGradient id="r" x1="28.215" y1="46.697" x2="28.215" y2="21.144" gradientUnits="userSpaceOnUse"><stop stop-color="#FFCA42"/><stop offset="1" stop-color="#FFCA42" stop-opacity="0"/></linearGradient><linearGradient id="s" x1="24.794" y1="25.705" x2="30.803" y2="46.495" gradientUnits="userSpaceOnUse"><stop stop-color="#7DC15D"/><stop offset="1" stop-color="#FEE54F"/></linearGradient><linearGradient id="t" x1="30.572" y1="34.794" x2="30.572" y2="40.927" gradientUnits="userSpaceOnUse"><stop stop-color="#FEFFCF"/><stop offset="1" stop-color="#FEFFCF" stop-opacity="0"/></linearGradient><linearGradient id="u" x1="24.301" y1="28.354" x2="24.919" y2="25.469" gradientUnits="userSpaceOnUse"><stop stop-color="#FEFFCF"/><stop offset="1" stop-color="#FEFFCF" stop-opacity="0"/></linearGradient><linearGradient id="v" x1="24.301" y1="20.32" x2="26.98" y2="30.005" gradientUnits="userSpaceOnUse"><stop stop-color="#5F1A58"/><stop offset="1" stop-color="#5F1A58" stop-opacity="0"/></linearGradient><linearGradient id="w" x1="59.239" y1="49.504" x2="5.149" y2="48.856" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><clipPath id="a"><path fill="#fff" d="M0 0h63v63H0z"/></clipPath></defs></svg>
1
+ <svg id="icon" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 63 63"><g clip-path="url(#a)"><path d="M63 60.987c0-.13-.172-.259-.505-.382-3.072-.812-12.836-1.398-24.405-1.398-14.04 0-25.427.873-25.427 1.944 0 .13.172.26.505.382 3.083.812 12.837 1.399 24.406 1.399 14.04 0 25.426-.873 25.426-1.945Z" fill="#050304"/><path d="M63 60.987c0-.13-.172-.259-.505-.382-3.072-.812-12.836-1.398-24.405-1.398-14.04 0-25.427.873-25.427 1.944 0 .13.172.26.505.382 3.083.812 12.837 1.399 24.406 1.399 14.04 0 25.426-.873 25.426-1.945Z" fill="url(#b)"/><path d="M63 60.987c0-.13-.172-.259-.505-.382-3.072-.812-12.836-1.398-24.405-1.398-14.04 0-25.427.873-25.427 1.944 0 .13.172.26.505.382 3.083.812 12.837 1.399 24.406 1.399 14.04 0 25.426-.873 25.426-1.945Z" fill="#050304"/><path d="M63 60.987c0-.13-.172-.259-.505-.382-3.072-.812-12.836-1.398-24.405-1.398-14.04 0-25.427.873-25.427 1.944 0 .13.172.26.505.382 3.083.812 12.837 1.399 24.406 1.399 14.04 0 25.426-.873 25.426-1.945Z" fill="url(#c)"/><path d="M53.554 40.447a.31.31 0 0 0-.609 0l-.269 1.279a1.153 1.153 0 0 1-.89.89l-1.28.27a.31.31 0 0 0 0 .608l1.28.27c.447.093.796.443.89.89l.27 1.28a.31.31 0 0 0 .608 0l.269-1.28c.094-.447.443-.797.89-.89l1.28-.27a.31.31 0 0 0 0-.608l-1.28-.27a1.153 1.153 0 0 1-.89-.89l-.27-1.279Z" fill="#FFCA42"/><path d="M48.658 53.298H15.076a.827.827 0 0 1-.824-.824v-2.213c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213c0 .453-.371.824-.824.824Z" fill="#FA552D"/><path d="M48.658 53.298H15.076a.827.827 0 0 1-.824-.824v-2.213c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213c0 .453-.371.824-.824.824Z" fill="#42AB44"/><path d="M26.19 52.168h-.597v.552h.597v-.552Zm1.196-.42h-.598v.972h.598v-.972Zm1.195-.643h-.598v1.615h.598v-1.615Zm1.195.26h-.598v1.355h.598v-1.356Zm1.191-1.357h-.598v2.436h.598v-2.436Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.597v2.712h.597v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v1.904h.598v-1.904Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.191 0H44.7v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.597v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Z" fill="#5F1A58"/><path d="M26.19 52.168h-.597v.552h.597v-.552Zm1.196-.42h-.598v.972h.598v-.972Zm1.195-.643h-.598v1.615h.598v-1.615Zm1.195.26h-.598v1.355h.598v-1.356Zm1.191-1.357h-.598v2.436h.598v-2.436Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.597v2.712h.597v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v1.904h.598v-1.904Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.191 0H44.7v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.597v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Z" fill="#050304"/><path d="M26.19 52.168h-.597v.552h.597v-.552Zm1.196-.42h-.598v.972h.598v-.972Zm1.195-.643h-.598v1.615h.598v-1.615Zm1.195.26h-.598v1.355h.598v-1.356Zm1.191-1.357h-.598v2.436h.598v-2.436Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.597v2.712h.597v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v1.904h.598v-1.904Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.191 0H44.7v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.597v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Z" fill="url(#d)"/><path d="M48.657 53.298H40.11v-3.862h8.544c.453 0 .824.371.824.824v2.214a.82.82 0 0 1-.82.824Z" fill="#050304"/><path d="M48.657 53.298H40.11v-3.862h8.544c.453 0 .824.371.824.824v2.214a.82.82 0 0 1-.82.824Z" fill="url(#e)"/><path d="M48.657 53.298H40.11v-3.862h8.544c.453 0 .824.371.824.824v2.214a.82.82 0 0 1-.82.824Z" fill="#050304"/><path d="M48.657 53.298H40.11v-3.862h8.544c.453 0 .824.371.824.824v2.214a.82.82 0 0 1-.82.824Z" fill="url(#f)"/><path d="M54.117 57.162H20.54a.827.827 0 0 1-.824-.824v-2.213c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213a.83.83 0 0 1-.829.824Z" fill="#42AB44"/><path d="M54.117 57.162H40.43l-20.714-2.176v-.861c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213a.83.83 0 0 1-.829.824Z" fill="#050304"/><path d="M54.117 57.162H40.43l-20.714-2.176v-.861c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213a.83.83 0 0 1-.829.824Z" fill="url(#g)"/><path d="M51.198 61.021H17.616a.827.827 0 0 1-.824-.824v-2.214c0-.453.37-.824.824-.824h33.582c.453 0 .824.371.824.825v2.213a.824.824 0 0 1-.824.824Z" fill="#050304"/><path d="M51.198 61.021H17.616a.827.827 0 0 1-.824-.824v-2.214c0-.453.37-.824.824-.824h33.582c.453 0 .824.371.824.825v2.213a.824.824 0 0 1-.824.824Z" fill="url(#h)"/><path d="M51.198 61.021H17.616a.827.827 0 0 1-.824-.824v-2.214c0-.453.37-.824.824-.824h33.582c.453 0 .824.371.824.825v2.213a.824.824 0 0 1-.824.824Z" fill="#050304"/><path d="M51.198 61.021H17.616a.827.827 0 0 1-.824-.824v-2.214c0-.453.37-.824.824-.824h33.582c.453 0 .824.371.824.825v2.213a.824.824 0 0 1-.824.824Z" fill="url(#i)"/><path d="M51.198 61.021h-8.544v-3.862h8.544c.453 0 .824.371.824.825v2.213c0 .457-.37.824-.824.824Z" fill="#050304"/><path d="M51.198 61.021h-8.544v-3.862h8.544c.453 0 .824.371.824.825v2.213c0 .457-.37.824-.824.824Z" fill="url(#j)"/><path d="M51.198 61.021h-8.544v-3.862h8.544c.453 0 .824.371.824.825v2.213c0 .457-.37.824-.824.824Z" fill="#050304"/><path d="M51.198 61.021h-8.544v-3.862h8.544c.453 0 .824.371.824.825v2.213c0 .457-.37.824-.824.824Z" fill="url(#k)"/><path d="M24.704 57.763h-.598v2.658h.598v-2.658Zm1.195.334h-.597v1.99h.597v-1.99Zm1.191.614h-.597v.762h.597v-.762Zm1.196.56h-.598v1.15h.598v-1.15Zm1.195-1.137h-.598v.956h.598v-.956Zm2.386.383h-.598v1.15h.598v-1.15Z" fill="#5F1A58"/><path d="M24.704 57.763h-.598v2.658h.598v-2.658Zm1.195.334h-.597v1.99h.597v-1.99Zm1.191.614h-.597v.762h.597v-.762Zm1.196.56h-.598v1.15h.598v-1.15Zm1.195-1.137h-.598v.956h.598v-.956Zm2.386.383h-.598v1.15h.598v-1.15Z" fill="#050304"/><path d="M24.704 57.763h-.598v2.658h.598v-2.658Zm1.195.334h-.597v1.99h.597v-1.99Zm1.191.614h-.597v.762h.597v-.762Zm1.196.56h-.598v1.15h.598v-1.15Zm1.195-1.137h-.598v.956h.598v-.956Zm2.386.383h-.598v1.15h.598v-1.15Z" fill="url(#l)"/><path d="M32.922 49.437c9.144 0 16.556-7.412 16.556-16.556 0-9.143-7.413-16.556-16.556-16.556s-16.556 7.413-16.556 16.556c0 9.144 7.413 16.556 16.556 16.556Z" fill="#050304"/><path d="M32.922 49.437c9.144 0 16.556-7.412 16.556-16.556 0-9.143-7.413-16.556-16.556-16.556s-16.556 7.413-16.556 16.556c0 9.144 7.413 16.556 16.556 16.556Z" fill="url(#m)"/><mask id="n" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="14" y="16" width="34" height="34"><path d="M30.804 49.436c9.143 0 16.556-7.412 16.556-16.556 0-9.143-7.413-16.555-16.556-16.555-9.144 0-16.556 7.412-16.556 16.555 0 9.144 7.412 16.556 16.556 16.556Z" fill="#91BD65"/></mask><g mask="url(#n)"><path d="M30.804 49.436c9.143 0 16.556-7.412 16.556-16.556 0-9.143-7.413-16.555-16.556-16.555-9.144 0-16.556 7.412-16.556 16.555 0 9.144 7.412 16.556 16.556 16.556Z" fill="url(#o)"/><path d="m24.416 27.667-7.386-8.172-2.827 1.636 6.256 6.714 3.957-.178Z" fill="#FFCA42"/><path d="m24.416 27.667-7.386-8.172-2.827 1.636 6.256 6.714 3.957-.178Z" fill="url(#p)"/><mask id="q" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="17" y="19" width="28" height="28"><path d="M30.803 46.495c7.519 0 13.614-6.095 13.614-13.613S38.322 19.27 30.803 19.27c-7.518 0-13.613 6.095-13.613 13.613s6.095 13.613 13.613 13.613Z" fill="#91BD65"/></mask><g mask="url(#q)"><path d="M30.803 46.495c7.519 0 13.614-6.095 13.614-13.613S38.322 19.27 30.803 19.27c-7.518 0-13.613 6.095-13.613 13.613s6.095 13.613 13.613 13.613Z" fill="#FA552D"/><path d="M30.803 46.495c7.519 0 13.614-6.095 13.614-13.613S38.322 19.27 30.803 19.27c-7.518 0-13.613 6.095-13.613 13.613s6.095 13.613 13.613 13.613Z" fill="url(#r)"/><path d="M30.803 46.495c7.519 0 13.614-6.095 13.614-13.613S38.322 19.27 30.803 19.27c-7.518 0-13.613 6.095-13.613 13.613s6.095 13.613 13.613 13.613Z" fill="url(#s)"/><path d="M15.888 49.14h29.369l-2.3-11.803a3.147 3.147 0 0 0-3.087-2.543H21.274a3.147 3.147 0 0 0-3.087 2.543l-2.3 11.804Z" fill="#FFCA42"/><path d="M15.888 49.14h29.369l-2.3-11.803a3.147 3.147 0 0 0-3.087-2.543H21.274a3.147 3.147 0 0 0-3.087 2.543l-2.3 11.804Z" fill="url(#t)"/></g><path d="M27.029 27.451c2.39-1.986.944-5.06-2.477-2.72-3.825 2.622-.532 5.222 2.477 2.72Z" fill="#FFCA42"/><path d="M27.029 27.451c2.39-1.986.944-5.06-2.477-2.72-3.825 2.622-.532 5.222 2.477 2.72Z" fill="url(#u)"/><path d="M31.34 20.876c-7.517 0-13.613 6.096-13.613 13.613 0 1.204.157 2.37.45 3.483a13.57 13.57 0 0 1-.986-5.09c0-7.517 6.096-13.613 13.614-13.613 6.313 0 11.622 4.303 13.163 10.135-2.02-5-6.911-8.528-12.628-8.528Z" fill="#FA552D"/><path d="M31.34 20.876c-7.517 0-13.613 6.096-13.613 13.613 0 1.204.157 2.37.45 3.483a13.57 13.57 0 0 1-.986-5.09c0-7.517 6.096-13.613 13.614-13.613 6.313 0 11.622 4.303 13.163 10.135-2.02-5-6.911-8.528-12.628-8.528Z" fill="url(#v)"/><path d="M31.34 20.876c-7.517 0-13.613 6.096-13.613 13.613 0 1.204.157 2.37.45 3.483a13.57 13.57 0 0 1-.986-5.09c0-7.517 6.096-13.613 13.614-13.613 6.313 0 11.622 4.303 13.163 10.135-2.02-5-6.911-8.528-12.628-8.528Z" fill="#050304"/><path d="M31.34 20.876c-7.517 0-13.613 6.096-13.613 13.613 0 1.204.157 2.37.45 3.483a13.57 13.57 0 0 1-.986-5.09c0-7.517 6.096-13.613 13.614-13.613 6.313 0 11.622 4.303 13.163 10.135-2.02-5-6.911-8.528-12.628-8.528Z" fill="url(#w)"/></g><path d="M21.614 6.16a.425.425 0 0 0-.833 0l-.368 1.75a1.578 1.578 0 0 1-1.22 1.22l-1.75.368a.425.425 0 0 0 0 .832l1.75.368c.613.13 1.091.607 1.22 1.22l.368 1.75a.425.425 0 0 0 .833 0l.368-1.75a1.578 1.578 0 0 1 1.219-1.22l1.75-.368a.425.425 0 0 0 0-.832l-1.75-.368a1.578 1.578 0 0 1-1.22-1.22l-.367-1.75ZM8.279 39.569a.64.64 0 0 0-1.252 0l-.553 2.632a2.372 2.372 0 0 1-1.833 1.833l-2.632.553a.64.64 0 0 0 0 1.252l2.632.553c.92.194 1.64.913 1.833 1.833l.553 2.633a.64.64 0 0 0 1.252 0l.553-2.633c.194-.92.913-1.64 1.833-1.833l2.632-.553a.64.64 0 0 0 0-1.252l-2.632-.553A2.372 2.372 0 0 1 8.832 42.2l-.553-2.632Z" fill="#FFCA42"/></g><defs><linearGradient id="b" x1="12.663" y1="61.069" x2="63" y2="61.069" gradientUnits="userSpaceOnUse"><stop stop-color="#FA552D"/><stop offset=".104" stop-color="#FA552D" stop-opacity="0"/><stop offset=".81" stop-color="#5F1A58" stop-opacity="0"/><stop offset="1" stop-color="#5F1A58"/></linearGradient><linearGradient id="c" x1="63" y1="62.932" x2="12.717" y2="62.932" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".297" stop-color="#00D63C" stop-opacity="0"/><stop offset=".833" stop-color="#FA552D" stop-opacity="0"/><stop offset="1" stop-color="#FA552D"/></linearGradient><linearGradient id="d" x1="62.165" y1="54.392" x2="15.354" y2="51.029" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="e" x1="46.244" y1="51.847" x2="40.039" y2="51.847" gradientUnits="userSpaceOnUse"><stop stop-color="#5F1A58"/><stop offset="1" stop-color="#5F1A58" stop-opacity="0"/></linearGradient><linearGradient id="f" x1="54.82" y1="55.679" x2="35.901" y2="55.295" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="g" x1="75.037" y1="59.543" x2="4.274" y2="54.143" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="h" x1="16.792" y1="59.265" x2="21.944" y2="59.265" gradientUnits="userSpaceOnUse"><stop stop-color="#FA552D"/><stop offset="1" stop-color="#FA552D" stop-opacity="0"/></linearGradient><linearGradient id="i" x1="72.113" y1="63.402" x2="1.35" y2="58.002" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="j" x1="42.757" y1="59.059" x2="48.94" y2="59.059" gradientUnits="userSpaceOnUse"><stop stop-color="#5F1A58"/><stop offset="1" stop-color="#5F1A58" stop-opacity="0"/></linearGradient><linearGradient id="k" x1="57.365" y1="63.402" x2="38.447" y2="63.018" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="l" x1="36.293" y1="62.06" x2="20.623" y2="61.677" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="m" x1="55.687" y1="41.093" x2="29.024" y2="16.325" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".297" stop-color="#00D63C" stop-opacity="0"/><stop offset=".833" stop-color="#FA552D" stop-opacity="0"/><stop offset="1" stop-color="#FA552D"/></linearGradient><linearGradient id="o" x1="23.849" y1="45.931" x2="26.662" y2="14.768" gradientUnits="userSpaceOnUse"><stop stop-color="#7DC15D"/><stop offset="1" stop-color="#FEE54F"/></linearGradient><linearGradient id="p" x1="18.119" y1="22.174" x2="19.561" y2="25.265" gradientUnits="userSpaceOnUse"><stop stop-color="#FEFFCF"/><stop offset="1" stop-color="#FEFFCF" stop-opacity="0"/></linearGradient><linearGradient id="r" x1="28.215" y1="46.697" x2="28.215" y2="21.144" gradientUnits="userSpaceOnUse"><stop stop-color="#FFCA42"/><stop offset="1" stop-color="#FFCA42" stop-opacity="0"/></linearGradient><linearGradient id="s" x1="24.794" y1="25.705" x2="30.803" y2="46.495" gradientUnits="userSpaceOnUse"><stop stop-color="#7DC15D"/><stop offset="1" stop-color="#FEE54F"/></linearGradient><linearGradient id="t" x1="30.572" y1="34.794" x2="30.572" y2="40.927" gradientUnits="userSpaceOnUse"><stop stop-color="#FEFFCF"/><stop offset="1" stop-color="#FEFFCF" stop-opacity="0"/></linearGradient><linearGradient id="u" x1="24.301" y1="28.354" x2="24.919" y2="25.469" gradientUnits="userSpaceOnUse"><stop stop-color="#FEFFCF"/><stop offset="1" stop-color="#FEFFCF" stop-opacity="0"/></linearGradient><linearGradient id="v" x1="24.301" y1="20.32" x2="26.98" y2="30.005" gradientUnits="userSpaceOnUse"><stop stop-color="#5F1A58"/><stop offset="1" stop-color="#5F1A58" stop-opacity="0"/></linearGradient><linearGradient id="w" x1="59.239" y1="49.504" x2="5.149" y2="48.856" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><clipPath id="a"><path fill="#fff" d="M0 0h63v63H0z"/></clipPath></defs></svg>