payment-kit 1.18.50 → 1.18.52

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 (390) hide show
  1. package/api/src/crons/currency.ts +25 -4
  2. package/api/src/libs/payment.ts +92 -0
  3. package/api/src/routes/connect/shared.ts +5 -3
  4. package/api/src/routes/connect/subscribe.ts +36 -5
  5. package/api/src/routes/invoices.ts +47 -0
  6. package/blocklet.yml +1 -1
  7. package/package.json +18 -18
  8. package/public/currencies/0xBTC.png +0 -0
  9. package/public/currencies/1INCH.svg +1 -0
  10. package/public/currencies/AAVE.svg +1 -0
  11. package/public/currencies/ABT.svg +16 -0
  12. package/public/currencies/ACX.png +0 -0
  13. package/public/currencies/ADX.svg +12 -0
  14. package/public/currencies/AIKEK.png +0 -0
  15. package/public/currencies/AJNA.svg +12 -0
  16. package/public/currencies/AKIRA.png +0 -0
  17. package/public/currencies/ALEX.png +0 -0
  18. package/public/currencies/ALI.png +0 -0
  19. package/public/currencies/ALT.svg +12 -0
  20. package/public/currencies/AMKT.svg +5 -0
  21. package/public/currencies/AMP.svg +7 -0
  22. package/public/currencies/APU.png +0 -0
  23. package/public/currencies/APW.svg +21 -0
  24. package/public/currencies/APX.png +0 -0
  25. package/public/currencies/ARC.png +0 -0
  26. package/public/currencies/ARIA20.svg +1 -0
  27. package/public/currencies/ARPA.svg +1 -0
  28. package/public/currencies/ATH.svg +1 -0
  29. package/public/currencies/AVC.png +0 -0
  30. package/public/currencies/AVRK.png +0 -0
  31. package/public/currencies/AXGT.svg +1 -0
  32. package/public/currencies/AZUR.svg +20 -0
  33. package/public/currencies/BAL.png +0 -0
  34. package/public/currencies/BANK.png +0 -0
  35. package/public/currencies/BAXA.svg +3 -0
  36. package/public/currencies/BCAT.png +0 -0
  37. package/public/currencies/BEPRO.svg +1 -0
  38. package/public/currencies/BERRY.svg +1 -0
  39. package/public/currencies/BICO.svg +11 -0
  40. package/public/currencies/BITBOT.jpg +0 -0
  41. package/public/currencies/BITCOIN.png +0 -0
  42. package/public/currencies/BKN.svg +1 -0
  43. package/public/currencies/BLUE.png +0 -0
  44. package/public/currencies/BNB.png +0 -0
  45. package/public/currencies/BOBA.svg +16 -0
  46. package/public/currencies/BOBO.png +0 -0
  47. package/public/currencies/BOND.svg +10 -0
  48. package/public/currencies/BOTTO.svg +4 -0
  49. package/public/currencies/BRIGHT.svg +83 -0
  50. package/public/currencies/BTRST.svg +1 -0
  51. package/public/currencies/BURN.png +0 -0
  52. package/public/currencies/BitANT.png +0 -0
  53. package/public/currencies/BitBTC.png +0 -0
  54. package/public/currencies/CARD.svg +1 -0
  55. package/public/currencies/CBX.svg +1 -0
  56. package/public/currencies/CHI.svg +1 -0
  57. package/public/currencies/CIG.svg +21 -0
  58. package/public/currencies/CNG.svg +9 -0
  59. package/public/currencies/COC.svg +8 -0
  60. package/public/currencies/COLLAB.svg +8 -0
  61. package/public/currencies/COMP.svg +1 -0
  62. package/public/currencies/COW.svg +1 -0
  63. package/public/currencies/CRV.png +0 -0
  64. package/public/currencies/CRYO.svg +1 -0
  65. package/public/currencies/CTRAVL.svg +1 -0
  66. package/public/currencies/CTSI.svg +1 -0
  67. package/public/currencies/CTX.svg +1 -0
  68. package/public/currencies/CUSD.png +0 -0
  69. package/public/currencies/CXT.svg +11 -0
  70. package/public/currencies/D2D.svg +6 -0
  71. package/public/currencies/DAI.svg +13 -0
  72. package/public/currencies/DCN.svg +47 -0
  73. package/public/currencies/DF.svg +15 -0
  74. package/public/currencies/DHT.svg +1 -0
  75. package/public/currencies/DIMO.svg +1 -0
  76. package/public/currencies/DMS.png +0 -0
  77. package/public/currencies/DODO.svg +6 -0
  78. package/public/currencies/DOGEGF.png +0 -0
  79. package/public/currencies/DOLA.svg +1 -0
  80. package/public/currencies/DOSE.svg +1 -0
  81. package/public/currencies/DUCK.png +0 -0
  82. package/public/currencies/DYP.png +0 -0
  83. package/public/currencies/EIGEN.svg +13 -0
  84. package/public/currencies/ENS.png +0 -0
  85. package/public/currencies/EPOCH.svg +1 -0
  86. package/public/currencies/EQB.svg +4 -0
  87. package/public/currencies/EQZ.png +0 -0
  88. package/public/currencies/ERN.png +0 -0
  89. package/public/currencies/ERNTST.png +0 -0
  90. package/public/currencies/EST.png +0 -0
  91. package/public/currencies/ETH.svg +13 -0
  92. package/public/currencies/ETHIX.svg +1 -0
  93. package/public/currencies/EVERY.svg +13 -0
  94. package/public/currencies/F.svg +1 -0
  95. package/public/currencies/FACTR.png +0 -0
  96. package/public/currencies/FANS.svg +11 -0
  97. package/public/currencies/FARM.png +0 -0
  98. package/public/currencies/FCR.png +0 -0
  99. package/public/currencies/FET.svg +21 -0
  100. package/public/currencies/FIS.svg +22 -0
  101. package/public/currencies/FLASH.svg +22 -0
  102. package/public/currencies/FLy.png +0 -0
  103. package/public/currencies/FOAM.svg +23 -0
  104. package/public/currencies/FORTH.svg +1 -0
  105. package/public/currencies/FOX.svg +8 -0
  106. package/public/currencies/FRAX.png +0 -0
  107. package/public/currencies/FU.svg +17 -0
  108. package/public/currencies/FVT.svg +1 -0
  109. package/public/currencies/FXN.svg +25 -0
  110. package/public/currencies/FXS.png +0 -0
  111. package/public/currencies/Froglic.png +0 -0
  112. package/public/currencies/GALAXIS.svg +1 -0
  113. package/public/currencies/GCH.png +0 -0
  114. package/public/currencies/GENOME.svg +23 -0
  115. package/public/currencies/GGTK.svg +1 -0
  116. package/public/currencies/GHST.svg +15 -0
  117. package/public/currencies/GIGACHAD.png +0 -0
  118. package/public/currencies/GIV.svg +6 -0
  119. package/public/currencies/GLS.svg +22 -0
  120. package/public/currencies/GOLD.png +0 -0
  121. package/public/currencies/GRG.png +0 -0
  122. package/public/currencies/GROW.svg +1 -0
  123. package/public/currencies/GRT.svg +11 -0
  124. package/public/currencies/GTC.svg +5 -0
  125. package/public/currencies/GURU.svg +1 -0
  126. package/public/currencies/GYEN.svg +1 -0
  127. package/public/currencies/GYSR.png +0 -0
  128. package/public/currencies/HAIR.svg +1 -0
  129. package/public/currencies/HAN.svg +25 -0
  130. package/public/currencies/HANeP.svg +1 -0
  131. package/public/currencies/HAUS.png +0 -0
  132. package/public/currencies/HEU.svg +5 -0
  133. package/public/currencies/HOBA.png +0 -0
  134. package/public/currencies/HUNT.svg +1 -0
  135. package/public/currencies/IBEX.png +0 -0
  136. package/public/currencies/IDRISS.svg +4 -0
  137. package/public/currencies/IOTX.png +0 -0
  138. package/public/currencies/IPOR.svg +1 -0
  139. package/public/currencies/IPT.svg +7 -0
  140. package/public/currencies/IRARA.svg +1 -0
  141. package/public/currencies/ISK.png +0 -0
  142. package/public/currencies/IYKYK.svg +14 -0
  143. package/public/currencies/JAM.svg +20 -0
  144. package/public/currencies/JRT.svg +8 -0
  145. package/public/currencies/KAGE.png +0 -0
  146. package/public/currencies/KAI.svg +23 -0
  147. package/public/currencies/KIBSHI.png +0 -0
  148. package/public/currencies/KNC.png +0 -0
  149. package/public/currencies/KOMPETE.png +0 -0
  150. package/public/currencies/KROM.png +0 -0
  151. package/public/currencies/LCX.svg +6 -0
  152. package/public/currencies/LDO.svg +5 -0
  153. package/public/currencies/LIF3.svg +27 -0
  154. package/public/currencies/LINK.png +0 -0
  155. package/public/currencies/LIZ.png +0 -0
  156. package/public/currencies/LMEOW.png +0 -0
  157. package/public/currencies/LOCG.png +0 -0
  158. package/public/currencies/LORDS.png +0 -0
  159. package/public/currencies/LPF.svg +18 -0
  160. package/public/currencies/LQTY.svg +1 -0
  161. package/public/currencies/LRC.png +0 -0
  162. package/public/currencies/LRDS.svg +44 -0
  163. package/public/currencies/LSK.png +0 -0
  164. package/public/currencies/LUSD.svg +1 -0
  165. package/public/currencies/LYRA.png +0 -0
  166. package/public/currencies/MASK.svg +4 -0
  167. package/public/currencies/MASQ.png +0 -0
  168. package/public/currencies/MBS.png +0 -0
  169. package/public/currencies/MCADE.svg +26 -0
  170. package/public/currencies/MET.svg +15 -0
  171. package/public/currencies/MINDS.svg +32 -0
  172. package/public/currencies/MKR.png +0 -0
  173. package/public/currencies/MLN.svg +1 -0
  174. package/public/currencies/MOCHI.svg +1 -0
  175. package/public/currencies/MOM.svg +5 -0
  176. package/public/currencies/MONKE.png +0 -0
  177. package/public/currencies/MOOV.svg +5 -0
  178. package/public/currencies/MORPHO.svg +14 -0
  179. package/public/currencies/MPWR.svg +5 -0
  180. package/public/currencies/MTA.svg +15 -0
  181. package/public/currencies/MTL.png +0 -0
  182. package/public/currencies/MUGLOO.png +0 -0
  183. package/public/currencies/Mog.png +0 -0
  184. package/public/currencies/NAVI.svg +1 -0
  185. package/public/currencies/NCT.svg +49 -0
  186. package/public/currencies/NET.svg +11 -0
  187. package/public/currencies/NEURON.svg +38 -0
  188. package/public/currencies/NFD.png +0 -0
  189. package/public/currencies/NOGS.png +0 -0
  190. package/public/currencies/NOUNS.png +0 -0
  191. package/public/currencies/NOVA.png +0 -0
  192. package/public/currencies/NSTR.svg +4 -0
  193. package/public/currencies/Neiro.png +0 -0
  194. package/public/currencies/OCEAN.png +0 -0
  195. package/public/currencies/OGN.svg +8 -0
  196. package/public/currencies/OL.svg +21 -0
  197. package/public/currencies/OLAS.svg +7 -0
  198. package/public/currencies/OM.png +0 -0
  199. package/public/currencies/OMETA.svg +7 -0
  200. package/public/currencies/OMI.svg +42 -0
  201. package/public/currencies/OPENLOOT.svg +21 -0
  202. package/public/currencies/OPN.svg +1 -0
  203. package/public/currencies/OS.svg +1 -0
  204. package/public/currencies/OUTb.svg +4 -0
  205. package/public/currencies/OVR.png +0 -0
  206. package/public/currencies/PAGE.svg +1 -0
  207. package/public/currencies/PAL.svg +1 -0
  208. package/public/currencies/PAPER.svg +4 -0
  209. package/public/currencies/PENDLE.png +0 -0
  210. package/public/currencies/PEPE.png +0 -0
  211. package/public/currencies/PERP.png +0 -0
  212. package/public/currencies/PHTK.svg +14 -0
  213. package/public/currencies/PIP.svg +11 -0
  214. package/public/currencies/POGS.png +0 -0
  215. package/public/currencies/POOL.svg +22 -0
  216. package/public/currencies/POP.svg +8 -0
  217. package/public/currencies/PORK.png +0 -0
  218. package/public/currencies/PRE.svg +66 -0
  219. package/public/currencies/PREMIA.svg +4 -0
  220. package/public/currencies/PRF.png +0 -0
  221. package/public/currencies/PRO.svg +1 -0
  222. package/public/currencies/PSP.svg +35 -0
  223. package/public/currencies/PSTAKE.png +0 -0
  224. package/public/currencies/PSY.svg +26 -0
  225. package/public/currencies/RAC.png +0 -0
  226. package/public/currencies/RAI.svg +1 -0
  227. package/public/currencies/RAZOR.svg +1 -0
  228. package/public/currencies/REKT.png +0 -0
  229. package/public/currencies/RFKJ.png +0 -0
  230. package/public/currencies/RFWSTETH.svg +36 -0
  231. package/public/currencies/RGT.png +0 -0
  232. package/public/currencies/RICE.svg +22 -0
  233. package/public/currencies/RIZE.svg +21 -0
  234. package/public/currencies/RPL.svg +1 -0
  235. package/public/currencies/RSC.svg +6 -0
  236. package/public/currencies/RSR.png +0 -0
  237. package/public/currencies/RSS3.png +0 -0
  238. package/public/currencies/Reach.svg +17 -0
  239. package/public/currencies/SAIL.png +0 -0
  240. package/public/currencies/SALD.png +0 -0
  241. package/public/currencies/SARCO.png +0 -0
  242. package/public/currencies/SCM.svg +1 -0
  243. package/public/currencies/SCRY.svg +13 -0
  244. package/public/currencies/SDL.svg +1 -0
  245. package/public/currencies/SEAM.svg +5 -0
  246. package/public/currencies/SEXY.svg +1 -0
  247. package/public/currencies/SHU.png +0 -0
  248. package/public/currencies/SIPHER.png +0 -0
  249. package/public/currencies/SKAI.svg +1 -0
  250. package/public/currencies/SLN.png +0 -0
  251. package/public/currencies/SMT.svg +1 -0
  252. package/public/currencies/SMURFCAT.png +0 -0
  253. package/public/currencies/SNT.svg +14 -0
  254. package/public/currencies/SNX.svg +20 -0
  255. package/public/currencies/SOFI.png +0 -0
  256. package/public/currencies/SOFT.svg +1 -0
  257. package/public/currencies/SOVRN.svg +13 -0
  258. package/public/currencies/SPANK.png +0 -0
  259. package/public/currencies/SPC.png +0 -0
  260. package/public/currencies/SPOT.svg +1 -0
  261. package/public/currencies/SQD.png +0 -0
  262. package/public/currencies/SQT.svg +14 -0
  263. package/public/currencies/STNT.svg +38 -0
  264. package/public/currencies/STPT.png +0 -0
  265. package/public/currencies/SUDO.svg +6 -0
  266. package/public/currencies/SUKU.png +0 -0
  267. package/public/currencies/SUPER.svg +6 -0
  268. package/public/currencies/SUSHI.svg +19 -0
  269. package/public/currencies/SYNTH.svg +1 -0
  270. package/public/currencies/ShibDoge.png +0 -0
  271. package/public/currencies/Silo.svg +4 -0
  272. package/public/currencies/StaFi.svg +65 -0
  273. package/public/currencies/T.svg +4 -0
  274. package/public/currencies/TEN.svg +1 -0
  275. package/public/currencies/TETU.svg +6 -0
  276. package/public/currencies/THALES.png +0 -0
  277. package/public/currencies/THING.png +0 -0
  278. package/public/currencies/THX.svg +22 -0
  279. package/public/currencies/TKAI.svg +1 -0
  280. package/public/currencies/TKN.png +0 -0
  281. package/public/currencies/TODL.png +0 -0
  282. package/public/currencies/TOWER.svg +1 -0
  283. package/public/currencies/TRAC.png +0 -0
  284. package/public/currencies/TRB.png +0 -0
  285. package/public/currencies/TRUE.svg +11 -0
  286. package/public/currencies/TRX.svg +4 -0
  287. package/public/currencies/TSC.png +0 -0
  288. package/public/currencies/TT.png +0 -0
  289. package/public/currencies/TUSD.png +0 -0
  290. package/public/currencies/TYBENG.png +0 -0
  291. package/public/currencies/TheDAO.svg +1 -0
  292. package/public/currencies/U.png +0 -0
  293. package/public/currencies/UBI.svg +5 -0
  294. package/public/currencies/UCASH.svg +1 -0
  295. package/public/currencies/UDT.svg +4 -0
  296. package/public/currencies/UMA.png +0 -0
  297. package/public/currencies/UNI.png +0 -0
  298. package/public/currencies/USA.png +0 -0
  299. package/public/currencies/USC.svg +23 -0
  300. package/public/currencies/USD3.svg +13 -0
  301. package/public/currencies/USDD.png +0 -0
  302. package/public/currencies/USDS.png +0 -0
  303. package/public/currencies/USDbC.png +0 -0
  304. package/public/currencies/UST.png +0 -0
  305. package/public/currencies/VALX.png +0 -0
  306. package/public/currencies/VIDYA.png +0 -0
  307. package/public/currencies/VITA.svg +10 -0
  308. package/public/currencies/VSP.svg +15 -0
  309. package/public/currencies/VUSD.svg +1 -0
  310. package/public/currencies/WAAC.png +0 -0
  311. package/public/currencies/WAD.png +0 -0
  312. package/public/currencies/WALLET.svg +1 -0
  313. package/public/currencies/WAMPL.svg +53 -0
  314. package/public/currencies/WBTC.png +0 -0
  315. package/public/currencies/WCT.svg +5 -0
  316. package/public/currencies/WEXO.png +0 -0
  317. package/public/currencies/WLD.jpeg +0 -0
  318. package/public/currencies/WMC.png +0 -0
  319. package/public/currencies/WOO.png +0 -0
  320. package/public/currencies/Wildfire.svg +1 -0
  321. package/public/currencies/XCHF.png +0 -0
  322. package/public/currencies/XCN.svg +1 -0
  323. package/public/currencies/XMT.svg +1 -0
  324. package/public/currencies/XYO.svg +1 -0
  325. package/public/currencies/YFI.svg +4 -0
  326. package/public/currencies/YFX.svg +11 -0
  327. package/public/currencies/YGG.svg +11 -0
  328. package/public/currencies/YOKAI.png +0 -0
  329. package/public/currencies/YYY.svg +1 -0
  330. package/public/currencies/ZENT.svg +12 -0
  331. package/public/currencies/ZRX.png +0 -0
  332. package/public/currencies/ZUN.svg +24 -0
  333. package/public/currencies/ZUSD.svg +1 -0
  334. package/public/currencies/ZYN.png +0 -0
  335. package/public/currencies/aCRV.png +0 -0
  336. package/public/currencies/btc.png +0 -0
  337. package/public/currencies/bwAJNA.svg +1 -0
  338. package/public/currencies/cSTONE.svg +23 -0
  339. package/public/currencies/cbETH.svg +9 -0
  340. package/public/currencies/crvUSD.png +0 -0
  341. package/public/currencies/cvxFXS.png +0 -0
  342. package/public/currencies/dollar.png +0 -0
  343. package/public/currencies/ePendle.png +0 -0
  344. package/public/currencies/frxETH.png +0 -0
  345. package/public/currencies/fxUSD.svg +5 -0
  346. package/public/currencies/iFARM.png +0 -0
  347. package/public/currencies/iZi.png +0 -0
  348. package/public/currencies/imgnAI.svg +1 -0
  349. package/public/currencies/mpETH.svg +4 -0
  350. package/public/currencies/nETH.svg +11 -0
  351. package/public/currencies/rETH.svg +1 -0
  352. package/public/currencies/rgUSD.svg +5 -0
  353. package/public/currencies/rnETH.svg +11 -0
  354. package/public/currencies/sDAI.svg +13 -0
  355. package/public/currencies/sFRAX.png +0 -0
  356. package/public/currencies/sUSDS.png +0 -0
  357. package/public/currencies/scWETHv2.svg +1 -0
  358. package/public/currencies/send.svg +12 -0
  359. package/public/currencies/stETH.png +1 -0
  360. package/public/currencies/stZENT.svg +12 -0
  361. package/public/currencies/stkLYRA.svg +26 -0
  362. package/public/currencies/tGS.png +0 -0
  363. package/public/currencies/tSTAR.png +0 -0
  364. package/public/currencies/usdc.png +0 -0
  365. package/public/currencies/usdt.png +0 -0
  366. package/public/currencies/veKWENTA.svg +24 -0
  367. package/public/currencies/wHOGE.svg +14 -0
  368. package/public/currencies/wOpenX.svg +140 -0
  369. package/public/currencies/wPOKT.svg +17 -0
  370. package/public/currencies/wTBT.svg +1 -0
  371. package/public/currencies/weETH.svg +23 -0
  372. package/public/currencies/wstETH.svg +11 -0
  373. package/public/currencies/yETH.svg +8 -0
  374. package/public/currencies/zunETH.svg +46 -0
  375. package/public/currencies/zunUSD.svg +33 -0
  376. package/src/components/customer/overdraft-protection.tsx +37 -9
  377. package/src/components/invoice/action.tsx +20 -0
  378. package/src/components/invoice/list.tsx +4 -1
  379. package/src/components/payment-currency/add.tsx +12 -3
  380. package/src/components/payment-currency/edit.tsx +89 -3
  381. package/src/components/payment-currency/tokenList.json +8847 -8156
  382. package/src/components/payment-intent/list.tsx +2 -4
  383. package/src/components/subscription/portal/actions.tsx +6 -2
  384. package/src/libs/util.ts +2 -0
  385. package/src/locales/en.tsx +11 -3
  386. package/src/locales/zh.tsx +11 -3
  387. package/src/pages/admin/settings/vault-config/edit-form.tsx +13 -0
  388. package/src/pages/customer/recharge/account.tsx +8 -1
  389. package/src/pages/customer/recharge/subscription.tsx +8 -1
  390. package/src/pages/customer/subscription/detail.tsx +1 -3
@@ -6,7 +6,12 @@ import logger from '../libs/logger';
6
6
  export async function syncCurrencyLogo() {
7
7
  const where = {
8
8
  logo: {
9
- [Op.like]: '%/methods/%.png',
9
+ [Op.or]: [
10
+ { [Op.like]: '%/methods/%.png' },
11
+ { [Op.like]: '%/currencies/%.png' },
12
+ { [Op.like]: '%/methods/%.svg' },
13
+ { [Op.like]: '%/currencies/%.svg' },
14
+ ],
10
15
  },
11
16
  };
12
17
 
@@ -19,9 +24,24 @@ export async function syncCurrencyLogo() {
19
24
 
20
25
  const updateLogo = (item: PaymentMethod | PaymentCurrency) => {
21
26
  const { logo } = item;
22
- if (/\/methods\/(stripe|arcblock|ethereum|base)\.png$/.test(logo)) {
23
- const newLogo = getUrl(logo.replace(/^.*?(\/methods\/.*)$/, '$1'));
24
- promises.push((item as any).update({ logo: newLogo }));
27
+
28
+ // 匹配 /methods/ 和 /currencies/ 路径下的 logo
29
+ const methodsMatch = /\/methods\/(stripe|arcblock|ethereum|base)\.(png|svg)$/.test(logo);
30
+ const currenciesMatch = /\/currencies\/[^/]+\.(png|svg)$/.test(logo);
31
+
32
+ if (methodsMatch || currenciesMatch) {
33
+ let newLogo: string;
34
+
35
+ if (methodsMatch) {
36
+ // 处理 /methods/ 路径
37
+ newLogo = getUrl(logo.replace(/^.*?(\/methods\/.*)$/, '$1'));
38
+ } else {
39
+ newLogo = getUrl(logo.replace(/^.*?(\/currencies\/.*)$/, '$1'));
40
+ }
41
+ if (newLogo !== logo) {
42
+ promises.push((item as any).update({ logo: newLogo }));
43
+ logger.info(`Updating logo: ${logo} -> ${newLogo}`);
44
+ }
25
45
  }
26
46
  };
27
47
 
@@ -30,6 +50,7 @@ export async function syncCurrencyLogo() {
30
50
 
31
51
  try {
32
52
  await Promise.all(promises);
53
+ logger.info(`Updated ${promises.length} logo(s)`);
33
54
  } catch (error) {
34
55
  logger.error('syncCurrency error', error);
35
56
  }
@@ -47,6 +47,98 @@ export interface SufficientForPaymentResult {
47
47
  requestedAmount?: string;
48
48
  }
49
49
 
50
+ export async function checkTokenBalance(args: {
51
+ paymentMethod: PaymentMethod;
52
+ paymentCurrency: TPaymentCurrency;
53
+ userDid: string;
54
+ amount: string;
55
+ }): Promise<SufficientForPaymentResult> {
56
+ const { paymentMethod, paymentCurrency, userDid, amount } = args;
57
+ const tokenAddress = paymentCurrency.contract as string;
58
+ const totalAmount = new BN(amount);
59
+
60
+ if (paymentMethod.type === 'arcblock') {
61
+ // get user wallet did
62
+ const { user } = await blocklet.getUser(userDid, { enableConnectedAccount: true });
63
+ const delegator = getWalletDid(user);
64
+ if (!delegator) {
65
+ return {
66
+ sufficient: false,
67
+ reason: 'NO_DID_WALLET',
68
+ requestedAmount: totalAmount.toString(),
69
+ };
70
+ }
71
+
72
+ const client = paymentMethod.getOcapClient();
73
+
74
+ // check token balance
75
+ const { tokens } = await client.getAccountTokens({ address: delegator, token: tokenAddress });
76
+ const [token] = tokens;
77
+ if (!token) {
78
+ return {
79
+ sufficient: false,
80
+ reason: 'NO_TOKEN',
81
+ requestedAmount: totalAmount.toString(),
82
+ };
83
+ }
84
+
85
+ if (new BN(token.balance).lt(totalAmount)) {
86
+ return {
87
+ sufficient: false,
88
+ reason: 'NO_ENOUGH_TOKEN',
89
+ token,
90
+ requestedAmount: totalAmount.toString(),
91
+ };
92
+ }
93
+
94
+ return {
95
+ sufficient: true,
96
+ token,
97
+ requestedAmount: totalAmount.toString(),
98
+ };
99
+ }
100
+
101
+ if (EVM_CHAIN_TYPES.includes(paymentMethod.type)) {
102
+ if (!paymentCurrency.contract) {
103
+ return {
104
+ sufficient: false,
105
+ reason: 'NO_TOKEN',
106
+ requestedAmount: totalAmount.toString(),
107
+ };
108
+ }
109
+ if (isEthereumDid(userDid) === false) {
110
+ return {
111
+ sufficient: false,
112
+ reason: 'NO_TOKEN',
113
+ requestedAmount: totalAmount.toString(),
114
+ };
115
+ }
116
+
117
+ const provider = paymentMethod.getEvmClient();
118
+ const balance = await fetchErc20Balance(provider, paymentCurrency.contract, userDid);
119
+
120
+ if (new BN(balance).lt(totalAmount)) {
121
+ return {
122
+ sufficient: false,
123
+ reason: 'NO_ENOUGH_TOKEN',
124
+ token: { address: tokenAddress, balance },
125
+ requestedAmount: totalAmount.toString(),
126
+ };
127
+ }
128
+
129
+ return {
130
+ sufficient: true,
131
+ token: { address: tokenAddress, balance },
132
+ requestedAmount: totalAmount.toString(),
133
+ };
134
+ }
135
+
136
+ return {
137
+ sufficient: true,
138
+ requestedAmount: totalAmount.toString(),
139
+ };
140
+ }
141
+
50
142
  export async function isDelegationSufficientForPayment(args: {
51
143
  paymentMethod: PaymentMethod;
52
144
  paymentCurrency: TPaymentCurrency;
@@ -400,7 +400,7 @@ export async function ensureInvoiceForCheckout({
400
400
  }
401
401
 
402
402
  // invoice currency is aligned
403
- if (invoice.currency_id === checkoutSession.currency_id) {
403
+ if (invoice.currency_id === checkoutSession.currency_id && invoice.status !== 'draft') {
404
404
  await invoice.update({ status: 'open' });
405
405
  logger.info(`Invoice status reset for checkout session ${checkoutSession.id}: ${existingInvoice}`);
406
406
 
@@ -512,7 +512,8 @@ export async function ensureInvoicesForSubscriptions({
512
512
  checkoutSession,
513
513
  customer,
514
514
  subscriptions,
515
- }: Omit<Args, 'subscription'> & { subscriptions: Subscription[] }): Promise<{
515
+ invoiceProps,
516
+ }: Omit<Args, 'subscription'> & { subscriptions: Subscription[]; invoiceProps?: Partial<TInvoice> }): Promise<{
516
517
  invoices: Invoice[];
517
518
  }> {
518
519
  if (!subscriptions?.length) {
@@ -531,7 +532,8 @@ export async function ensureInvoicesForSubscriptions({
531
532
  customer,
532
533
  subscription,
533
534
  subscriptions,
534
- lineItems: subItems
535
+ lineItems: subItems,
536
+ props: invoiceProps,
535
537
  });
536
538
  return invoice;
537
539
  })
@@ -2,7 +2,7 @@ import { broadcastEvmTransaction, executeEvmTransaction, waitForEvmTxConfirm } f
2
2
  import type { CallbackArgs } from '../../libs/auth';
3
3
  import dayjs from '../../libs/dayjs';
4
4
  import logger from '../../libs/logger';
5
- import { isDelegationSufficientForPayment } from '../../libs/payment';
5
+ import { isDelegationSufficientForPayment, checkTokenBalance } from '../../libs/payment';
6
6
  import { getSubscriptionTrialSetup } from '../../libs/subscription';
7
7
  import { getFastCheckoutAmount } from '../../libs/session';
8
8
  import { getTxMetadata } from '../../libs/util';
@@ -217,6 +217,32 @@ export default {
217
217
  });
218
218
  };
219
219
 
220
+ const now = dayjs().unix();
221
+ const items = checkoutSession.line_items as TLineItemExpanded[];
222
+ const { trialEnd, trialInDays } = getSubscriptionTrialSetup(
223
+ checkoutSession.subscription_data as any,
224
+ paymentCurrency.id
225
+ );
226
+ const trialing = trialInDays > 0 || trialEnd > now;
227
+ const fastCheckoutAmount = getFastCheckoutAmount(items, checkoutSession.mode, paymentCurrency.id, trialing);
228
+ // check token balance
229
+ const tokenBalanceCheck = await checkTokenBalance({
230
+ paymentMethod,
231
+ paymentCurrency,
232
+ userDid,
233
+ amount: fastCheckoutAmount,
234
+ });
235
+
236
+ if (tokenBalanceCheck.sufficient === false) {
237
+ logger.error('Payment aborted on final token balance check', {
238
+ checkoutSessionId,
239
+ userDid,
240
+ reason: tokenBalanceCheck.reason,
241
+ requestedAmount: tokenBalanceCheck.requestedAmount,
242
+ });
243
+ throw new Error(`Insufficient balance for payment: ${tokenBalanceCheck.reason}`);
244
+ }
245
+
220
246
  if (paymentMethod.type === 'arcblock') {
221
247
  await prepareTxExecution();
222
248
 
@@ -224,14 +250,15 @@ export default {
224
250
  checkoutSession,
225
251
  customer,
226
252
  subscriptions,
253
+ invoiceProps: {
254
+ status: 'draft',
255
+ },
227
256
  });
228
257
 
229
258
  if (invoices.length === 0) {
230
259
  throw new Error('No invoices found for subscriptions');
231
260
  }
232
261
 
233
- await updateInvoices(invoices, { payment_settings: paymentSettings });
234
-
235
262
  const requestArray = result
236
263
  .map((item: { stepRequest?: Request }) => item.stepRequest)
237
264
  .filter(Boolean) as Request[];
@@ -249,6 +276,8 @@ export default {
249
276
  subscriptions.map((s) => s.id).join('-') // use all subscription ids as nonce
250
277
  );
251
278
 
279
+ await updateInvoices(invoices, { payment_settings: paymentSettings, status: 'open' });
280
+
252
281
  // create a stake invoice
253
282
  if (stakingAmount && stakingAmount !== '0') {
254
283
  await ensureStakeInvoice(
@@ -288,14 +317,15 @@ export default {
288
317
  checkoutSession,
289
318
  customer,
290
319
  subscriptions,
320
+ invoiceProps: {
321
+ status: 'draft',
322
+ },
291
323
  });
292
324
 
293
325
  if (invoices.length === 0) {
294
326
  throw new Error('No invoices found for subscriptions');
295
327
  }
296
328
 
297
- await updateInvoices(invoices, { payment_settings: paymentSettings });
298
-
299
329
  broadcastEvmTransaction(checkoutSessionId, 'pending', claimsList);
300
330
 
301
331
  const paymentDetails = await executeEvmTransaction('approve', userDid, claimsList, paymentMethod);
@@ -305,6 +335,7 @@ export default {
305
335
  paymentMethod.confirmation.block
306
336
  )
307
337
  .then(async () => {
338
+ await updateInvoices(invoices, { payment_settings: paymentSettings, status: 'open' });
308
339
  await afterTxExecution(invoices, paymentDetails);
309
340
  broadcastEvmTransaction(checkoutSessionId, 'confirmed', claimsList);
310
341
  })
@@ -12,6 +12,7 @@ import { createListParamSchema, getOrder, getWhereFromKvQuery, MetadataSchema }
12
12
  import { authenticate } from '../libs/security';
13
13
  import { expandLineItems } from '../libs/session';
14
14
  import { formatMetadata, getBlockletJson, getUserOrAppInfo } from '../libs/util';
15
+ import dayjs from '../libs/dayjs';
15
16
  import { Customer } from '../store/models/customer';
16
17
  import { Invoice } from '../store/models/invoice';
17
18
  import { InvoiceItem } from '../store/models/invoice-item';
@@ -671,4 +672,50 @@ router.put('/:id', authAdmin, async (req, res) => {
671
672
  }
672
673
  });
673
674
 
675
+ router.post('/:id/void', authAdmin, async (req, res) => {
676
+ const invoice = await Invoice.findByPk(req.params.id as string);
677
+ if (!invoice) {
678
+ return res.status(404).json({ error: 'Invoice not found' });
679
+ }
680
+ if (['paid', 'void', 'draft'].includes(invoice.status)) {
681
+ return res.status(400).json({ error: 'Can not void this invoice' });
682
+ }
683
+ const paymentMethod = await PaymentMethod.findByPk(invoice.default_payment_method_id);
684
+ if (!paymentMethod) {
685
+ return res.status(400).json({ error: 'Payment method not found' });
686
+ }
687
+ if (invoice.subscription_id) {
688
+ const subscription = await Subscription.findByPk(invoice.subscription_id);
689
+ if (subscription && !subscription.isImmutable()) {
690
+ return res.status(400).json({ error: 'Subscription is not immutable, can not void invoice' });
691
+ }
692
+ }
693
+ try {
694
+ if (invoice.payment_intent_id) {
695
+ const paymentIntent = await PaymentIntent.findByPk(invoice.payment_intent_id);
696
+ if (paymentIntent && paymentIntent.status !== 'canceled') {
697
+ await paymentIntent.update({
698
+ status: 'canceled',
699
+ canceled_at: dayjs().unix(),
700
+ cancellation_reason: 'void_invoice',
701
+ });
702
+ }
703
+ }
704
+ if (paymentMethod.type === 'stripe' && invoice.metadata?.stripe_id) {
705
+ const client = paymentMethod.getStripeClient();
706
+ await client.invoices.voidInvoice(invoice.metadata.stripe_id);
707
+ }
708
+ await invoice.update({
709
+ status: 'void',
710
+ status_transitions: {
711
+ ...(invoice.status_transitions || {}),
712
+ voided_at: dayjs().unix(),
713
+ },
714
+ });
715
+ return res.json(invoice);
716
+ } catch (error) {
717
+ logger.error('Failed to void invoice', { error, invoiceId: invoice.id });
718
+ return res.status(400).json({ error: 'Failed to void invoice' });
719
+ }
720
+ });
674
721
  export default router;
package/blocklet.yml CHANGED
@@ -14,7 +14,7 @@ repository:
14
14
  type: git
15
15
  url: git+https://github.com/blocklet/payment-kit.git
16
16
  specVersion: 1.2.8
17
- version: 1.18.50
17
+ version: 1.18.52
18
18
  logo: logo.png
19
19
  files:
20
20
  - dist
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "payment-kit",
3
- "version": "1.18.50",
3
+ "version": "1.18.52",
4
4
  "scripts": {
5
5
  "dev": "blocklet dev --open",
6
6
  "eject": "vite eject",
@@ -45,30 +45,30 @@
45
45
  },
46
46
  "dependencies": {
47
47
  "@abtnode/cron": "^1.16.43",
48
- "@arcblock/did": "^1.20.11",
48
+ "@arcblock/did": "^1.20.12",
49
49
  "@arcblock/did-auth-storage-nedb": "^1.7.1",
50
- "@arcblock/did-connect": "^2.13.54",
51
- "@arcblock/did-util": "^1.20.11",
52
- "@arcblock/jwt": "^1.20.11",
53
- "@arcblock/ux": "^2.13.54",
54
- "@arcblock/validator": "^1.20.11",
55
- "@blocklet/did-space-js": "^1.0.56",
50
+ "@arcblock/did-connect": "^2.13.61",
51
+ "@arcblock/did-util": "^1.20.12",
52
+ "@arcblock/jwt": "^1.20.12",
53
+ "@arcblock/ux": "^2.13.61",
54
+ "@arcblock/validator": "^1.20.12",
55
+ "@blocklet/did-space-js": "^1.0.57",
56
56
  "@blocklet/js-sdk": "^1.16.43",
57
57
  "@blocklet/logger": "^1.16.43",
58
- "@blocklet/payment-react": "1.18.50",
58
+ "@blocklet/payment-react": "1.18.52",
59
59
  "@blocklet/sdk": "^1.16.43",
60
- "@blocklet/ui-react": "^2.13.54",
61
- "@blocklet/uploader": "^0.1.93",
60
+ "@blocklet/ui-react": "^2.13.61",
61
+ "@blocklet/uploader": "^0.1.95",
62
62
  "@blocklet/xss": "^0.1.36",
63
63
  "@mui/icons-material": "^5.16.6",
64
64
  "@mui/lab": "^5.0.0-alpha.173",
65
65
  "@mui/material": "^5.16.6",
66
66
  "@mui/system": "^5.16.6",
67
- "@ocap/asset": "^1.20.11",
68
- "@ocap/client": "^1.20.11",
69
- "@ocap/mcrypto": "^1.20.11",
70
- "@ocap/util": "^1.20.11",
71
- "@ocap/wallet": "^1.20.11",
67
+ "@ocap/asset": "^1.20.12",
68
+ "@ocap/client": "^1.20.12",
69
+ "@ocap/mcrypto": "^1.20.12",
70
+ "@ocap/util": "^1.20.12",
71
+ "@ocap/wallet": "^1.20.12",
72
72
  "@stripe/react-stripe-js": "^2.7.3",
73
73
  "@stripe/stripe-js": "^2.4.0",
74
74
  "ahooks": "^3.8.0",
@@ -123,7 +123,7 @@
123
123
  "devDependencies": {
124
124
  "@abtnode/types": "^1.16.43",
125
125
  "@arcblock/eslint-config-ts": "^0.3.3",
126
- "@blocklet/payment-types": "1.18.50",
126
+ "@blocklet/payment-types": "1.18.52",
127
127
  "@types/cookie-parser": "^1.4.7",
128
128
  "@types/cors": "^2.8.17",
129
129
  "@types/debug": "^4.1.12",
@@ -169,5 +169,5 @@
169
169
  "parser": "typescript"
170
170
  }
171
171
  },
172
- "gitHead": "1b7529c51c5ef7d65a288e852e971fbfb281a9bb"
172
+ "gitHead": "dfa2927758a635868ca2ce251d098ab15178a409"
173
173
  }
Binary file
@@ -0,0 +1 @@
1
+ <svg width="40" height="42" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#a)"><path d="M20 41.999c11.046 0 20-8.955 20-20 0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20Z" fill="#ECF3FF"/><path d="m14.601 9.8-7-2.8v1l6 5.4-.4 5.6-1.8 7.6-2.4 3.4.6 4.8 3 .4 2.4-.4 2.4.4 4.2-2.6.8-4.2 5-4.8 2.2 1.6 2.2 3.2v6.4l3-.8 3-6.6.8-8.4-10.8-15.8-1.8-.4-11.4 7Z" fill="#fff"/><path d="M3.998 21.359c.08-.68.12-1.36.32-2 .56-2.64 1.64-5.16 3.24-7.2.28-.36.52-.68.84-1l-1.8-1.68c-.32.48-.64.96-.92 1.44-1.48 2.56-2.28 5.44-2.48 8.28-.08.72-.04 1.44-.04 2.12 0 .72.08 1.4.2 2.12.2 1.4.56 2.76 1.04 4.04-.32-1.36-.48-2.72-.52-4.12 0-.64 0-1.32.12-2ZM12.198 8.4c-1-.48-2.4-1.12-3.4-1.6.92-.88 2.6-1.8 4-2.4-1 .8-1 2.48-.6 4ZM8.158 15.199c-.56 1.4-.92 2.88-1.04 4.32-.04.36-.08.72-.04 1.08 0 .36 0 .72.04 1.08l.04.56c0 .16.04.36.08.52l.16 1.08.04-1.08c0-.16 0-.36.04-.52l.08-.52c.04-.36.12-.72.16-1.04.04-.36.16-.68.24-1 .36-1.36.96-2.6 1.68-3.76.48-.76 1.04-1.44 1.64-2.08l-1.56-1.48c-.68.92-1.16 1.84-1.56 2.84ZM31.32 8.359c-2.12-.76-2.96-.52-2.96-.52s-1.32 3.56-6.36 3.8c.04.04 4.56 2.68 9.32-3.28ZM32.76 15.439c-.2 4.4-3.6 6.04-6.24 5.72-1.44-.2-3.56.48-3.56.48l-2.68 4.64-.88.32 1.52-2.8s-3.6 1.32-3.88 1.44c-.28.12-1.4 1.76-2.32 3.48-.2-1.2-.96-2.04-.96-2.08 0 .2.4 3.8-.04 4.8-.44 1.04-2.4 1.72-2.4 1.72l2.88 1.08.2.08 2.16-2.04.8-3.04 1-.72s2.48-.28 2.12 1.96c-.16 1.08-1.36 1-2.72 1.84-.8.48-1.84 1.24-2.36 1.76l1.44 1.04s1.72-.28 4.16-2.2c2.48-2 1.24-4.16 1.24-4.16l4.04-4.84 2.64.2s4.56 1.16 6.04 5.48c2.96-8.28-1.8-13.76-2.2-14.16Z" fill="#94A6C4"/><path d="M37.4 12c.72.32 1.28.799 1.8 1.239-3.6-12.48-15.28-11.08-15.52-11 .28-.44 1.32-1.12 2.28-1.48 0 0-4.96-1.76-9.48 1.36.08-.72.96-1.8.96-1.8C11.2 3 10.8 6.2 12 8.119c-1-.48-2-.92-3-1.4-3.08-1.48-5.72-2.72-5.88-2.76-.28-.08-.4.04-.4.04s-.12.12.12.36c3.64 3.64 5.96 5.841 9.84 9.4-.64 1.44-.72 2.16-.4 2.92.44 1.04.4 1.56.24 2.24-.2.68-1.8 6.72-2.08 7.4-.28.72-2.4 3.12-2.44 3.92-.04.8.6 4.32 1.48 4.84.68.36 2.32 1.12 3.52 1.28.4.08.8.04 1-.12.8-.52 1-.6 1.52-.56l.12.04c.2.04.44.12.76.16.68.08 1.56.08 2.28-.4 1.04-.8 2.8-1.8 3.4-2.32.72-.72 1.2-1.72 1.2-2.84 0-1 .68-1.8 1.44-2.6.72-.72 2.52-2.48 3.24-3.24 1.84.64 2.52 3.28 2.52 4.72 0 4-3.24 9.84-10.68 10.28-.28 0-.56.04-.88.04-9.68 0-17.6-8.56-17.6-18.6 0-7.92 4.759-13.284 4.799-13.323C2.279 11.236 0 16.319 0 21.998 0 33.039 8.96 42 20 42s20-8.961 20-20.001c0-3.6-.92-7.079-2.6-9.999ZM10.08 9.439 8.4 7.999c.76.4 1.52.8 2.2 1.16 2.08 1.08 3.8 2.04 4.12 2.28l.08.08c.2.24.4.64.04 1.16-.2.28-.44.2-.8-.04-.32-.2-2.04-1.56-3.96-3.2Zm11.64 20.8c0 .68-.32 1.28-.72 1.72-.2.2-1 .72-1.56 1.08-.56.4-1.16.76-1.64 1.12-.2.12-.52.2-1.04.12l-1.24-.16c.76-.76 2.84-2.4 3.52-2.72.8-.4 1.28-.84.92-1.76-.32-.96-1.56-.92-1.56-.92s.76-.2 1.36-.12c-.76-.32-1.8-.24-2.32.12-.56.4-.72 2.04-1.08 3.04-.36 1.04-1.16 1.48-2.36 2.32-.68.44-1.12.56-1.44.52-.68-.2-1.48-.56-2.04-.84-.32-.6-.72-2.48-.76-3.24.16-.4.8-1.2 1.12-1.68.64-.88 1-1.4 1.16-1.88.28-.68 1.44-4.96 1.88-6.76.44.76 1.04 2.04.76 2.76 1.44-1.52.8-3.32.48-4.04-.28-.72-.6-2.12.04-3.48.6-1.36 2.68-5.04 2.68-5.04s.36.96 1.12.88c.72-.08 7.64-7.84 7.64-7.84s1.08 3.6-.92 5.8c-2 2.2-3.68 2.44-3.68 2.44s2.24.72 4.56-.48c.6 2.16 1.12 4.4 1.12 4.68-.16.28-2.4 4.04-2.6 4.28-.08.08-.72.16-1.12.16-.72.12-1.16.16-1.36.28-.32.2-2.16 3.68-3.04 5.36-.8.12-1.6.4-2.24 1.16.32-.16 1.24-.16 1.92-.16.6.04 2.24 1.24 2.44 3.12v.16Zm-4.68 1.68c.44-.48.52-1.4.6-1.68.08-.28.24-.8.6-.84.36-.04 1.12.2 1.04.8-.08.56-.68.6-1.16.88-.32.2-1 .76-1.08.84Zm17.4.52c-.48-5.12-4-7.52-5.56-8.32 1.8-.2 6.44-1.6 3.88-8.68.08.32.8 3.84-1.24 5.68-2.08 1.88-5.12 1.08-5.48 1.08-.32-.04-1.84 1.44-3.92 4.28-.2-.12-1.04-.44-2.08-.4 1.04-1.96 2.6-4.76 2.84-5 .08-.08.76-.16 1.16-.2.8-.08 1.2-.16 1.36-.32.08-.12.64-1 1.2-1.96.36.04 1.32.12 1.44.08.08-.08 1.16-2 1.2-2.24.04-.16-.72-3.16-1.2-5.08 9.88 4.68 11.44 15 6.4 21.08Z" fill="#1C324F"/><path d="M24.92 8.639c1.12-1 .96-2.72.96-2.72l-3.36 3.72c-.04 0 1 .2 2.4-1ZM12.36 29.799l.56-1.6s-1.72 2.2-1.88 2.52c-.16.36-.08 1.04.48 1.08.56.04 1.32-.68 1.4-1.24.12-.76-.56-.76-.56-.76ZM17.64 20.119c1.2-.12 3.36-1.08 4.28-1.84.92-.8.76-2.56-.68-3.08.48-.8 1.28-2.48 1.28-2.48s-5.16 6.04-5.56 6.12c-.4.08-.56-1.44-.56-1.44-1.2 2.92.84 3.64 1.24 2.72Z" fill="#1C324F"/><path d="m18.08 19.359 2.68-3.4s1.16.8.4 1.72c-.96 1.08-3.08 1.68-3.08 1.68Z" fill="#FFD925"/><path d="m25.202 4.199-1.84 2c-1.48.44-2.92 1.24-4.28 2.56 0-.76 2.2-4.08 6.12-4.56ZM27.522 5.919c.04-.52 0-1.12-.08-1.68 2.4.32 5.24 1.72 8.48 4.88-2.68-1.48-5.52-2.84-8.4-3.2ZM28.242 8.519s8.92 3.92 10.56 14.92c.24-14.32-9.92-15.04-10.56-14.92ZM15.242 2.199c-.12.32-5.16 5.72 1.12 7.84-3.44-3.08-1.16-7.8-1.12-7.84ZM17.922 9.199s.52-6.12 4.2-7.76c-.28.08-7.76 2.36-4.2 7.76Z" fill="#D82423"/></g><defs><clipPath id="a"><path fill="#fff" transform="translate(0 .264)" d="M0 0h40v41.736H0z"/></clipPath></defs></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" data-name="Group 27021" viewBox="0 0 24 24"><defs><linearGradient id="a" x1=".907" x2=".163" y1=".227" y2=".853" gradientUnits="objectBoundingBox"><stop offset="0" stop-color="#b6509e"/><stop offset="1" stop-color="#2ebac6"/></linearGradient></defs><circle cx="12" cy="12" r="12" fill="url(#a)" data-name="Ellipse 991"/><path fill="#fff" d="m17.251 16.78-4.059-9.809a1.091 1.091 0 0 0-1.017-.755h-.359a1.091 1.091 0 0 0-1.017.755l-1.766 4.274H7.697a.731.731 0 0 0-.728.725v.01a.731.731 0 0 0 .728.725h.718L6.73 16.78a.86.86 0 0 0-.05.278.767.767 0 0 0 .2.547.7.7 0 0 0 .539.209.729.729 0 0 0 .419-.139.885.885 0 0 0 .289-.368l1.853-4.601h1.287a.731.731 0 0 0 .728-.725v-.02a.731.731 0 0 0-.728-.725h-.687l1.415-3.529 3.859 9.6a.885.885 0 0 0 .289.368.729.729 0 0 0 .419.139.7.7 0 0 0 .539-.209.767.767 0 0 0 .2-.547.657.657 0 0 0-.05-.278z" data-name="Path 2434"/></svg>
@@ -0,0 +1,16 @@
1
+ <svg width="250" height="250" viewBox="0 0 250 250" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M125 2.23215L232.143 64.0911V187.809L125 249.668L17.8571 187.809V64.0911L125 2.23215ZM27.9018 66.0242L94.5313 104.493L125 51.7193L155.469 104.493L222.098 66.0242L125 9.96452L27.9018 66.0242ZM225.446 71.8235L158.817 110.292L189.286 163.065L128.348 198.248V240.003L225.446 183.943V71.8235ZM121.652 240.003V198.248L60.7143 163.065L91.183 110.292L24.5536 71.8235V183.943L121.652 240.003ZM96.9823 113.64L69.8618 160.614L121.652 190.515V131.749V127.883L118.304 125.95L96.9823 113.64ZM128.348 190.515L180.138 160.614L153.018 113.64L131.696 125.95L128.348 127.883V131.749V190.515ZM149.669 107.841L125 65.1122L100.331 107.841L125 122.084L149.669 107.841Z" fill="url(#paint0_linear_1609_58)"/>
3
+ <path opacity="0.6" fill-rule="evenodd" clip-rule="evenodd" d="M121.652 120.151V124.017L118.304 125.95L21.8386 181.644L25.1868 187.443L125 129.816L224.813 187.443L228.162 181.644L131.696 125.95L128.348 124.017V120.151V8.76249H121.652V120.151Z" fill="url(#paint1_linear_1609_58)"/>
4
+ <defs>
5
+ <linearGradient id="paint0_linear_1609_58" x1="125" y1="-121.486" x2="-119.898" y2="90.6021" gradientUnits="userSpaceOnUse">
6
+ <stop stop-color="#4EF1BA"/>
7
+ <stop offset="0.501904" stop-color="#16CED1"/>
8
+ <stop offset="1" stop-color="#3773F2"/>
9
+ </linearGradient>
10
+ <linearGradient id="paint1_linear_1609_58" x1="379.793" y1="91.797" x2="205.051" y2="367.476" gradientUnits="userSpaceOnUse">
11
+ <stop stop-color="#4EF1BA"/>
12
+ <stop offset="0.501904" stop-color="#16CED1"/>
13
+ <stop offset="1" stop-color="#3773F2"/>
14
+ </linearGradient>
15
+ </defs>
16
+ </svg>
Binary file
@@ -0,0 +1,12 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256">
2
+ <g id="Adex_icon_256px" data-name="Adex icon 256px" transform="translate(20270 11021)">
3
+ <g id="Layer_x0020_1" transform="translate(-20221 -11021)">
4
+ <g id="_1942084283040">
5
+ <path id="Path_17737" data-name="Path 17737" d="M0,1301.312l49.341-49.338L0,1202.639l29.287-29.288,49.375,49.376,49.38-49.376,29.285,29.288-49.339,49.335,49.339,49.338L128,1330.638,78.666,1281.3l-49.338,49.342Z" transform="translate(0 -1123.973)" fill="#7298fe" fill-rule="evenodd"/>
6
+ <path id="Path_17738" data-name="Path 17738" d="M774.8,46.055,820.857,0l46.056,46.055L842.2,70.767,820.857,49.419,799.51,70.767Z" transform="translate(-742.195)" fill="#2855cc" fill-rule="evenodd"/>
7
+ <path id="Path_17739" data-name="Path 17739" d="M774.8,4426.457l46.057,46.057,46.056-46.057L842.2,4401.75l-21.348,21.345L799.51,4401.75Z" transform="translate(-742.195 -4216.514)" fill="#2855cc" fill-rule="evenodd"/>
8
+ </g>
9
+ </g>
10
+ <rect id="Rectangle_2110" data-name="Rectangle 2110" width="256" height="256" transform="translate(-20270 -11021)" fill="none"/>
11
+ </g>
12
+ </svg>
Binary file
@@ -0,0 +1,12 @@
1
+ <svg width="220" height="220" viewBox="0 0 220 220" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_4775_18126)">
3
+ <path d="M110 220C170.751 220 220 170.751 220 110C220 49.2487 170.751 0 110 0C49.2487 0 0 49.2487 0 110C0 170.751 49.2487 220 110 220Z" fill="white"/>
4
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M187.687 88.5065C162.51 64.5673 136.626 52 110.172 52C83.7186 52 57.8346 64.5673 32.6571 88.5065C30.5027 90.5549 30.4182 93.9605 32.4684 96.1131C34.5185 98.2657 37.9269 98.3501 40.0813 96.3017C64.0177 73.5425 87.3796 62.7606 110.172 62.7606C132.945 62.7606 156.287 73.5242 180.202 96.2438C180.577 96.6315 180.883 97.1651 181.061 97.7211C180.998 98.0498 180.965 98.3891 180.965 98.7361C180.965 100.007 180.546 100.691 180.205 100.983C180.132 101.046 180.06 101.111 179.99 101.178C179.404 101.737 178.818 102.289 178.233 102.834C155.943 84.3016 133.207 74.6229 110.039 74.6229C85.6287 74.6229 61.6986 85.3665 38.2649 105.889C38.2214 105.924 38.1782 105.96 38.1355 105.996L38.0774 106.046C36.2835 107.582 34.3276 109.258 32.3559 111.221C26.9637 116.279 26.5406 124.703 31.2942 130.48C31.3257 130.531 31.3581 130.581 31.3916 130.632C31.8542 131.325 32.4064 131.822 32.9275 132.172C57.9335 155.776 83.6349 168.162 109.898 168.162C136.351 168.162 162.235 155.595 187.413 131.656C189.567 129.607 189.652 126.202 187.601 124.049C185.551 121.897 182.143 121.812 179.988 123.861C156.052 146.62 132.69 157.402 109.898 157.402C87.1052 157.402 63.7433 146.62 39.8069 123.861L39.7683 123.824C38.3096 122.246 38.5742 120.13 39.7472 119.048C39.7999 118.999 39.8517 118.949 39.9024 118.899C40.4934 118.308 41.0863 117.745 41.6877 117.194C64.9817 136.59 88.7637 146.345 112.966 145.502C136.163 144.694 158.87 134.179 181.077 114.766C181.59 114.477 182.063 114.098 182.474 113.631C182.575 113.516 182.67 113.398 182.76 113.278C184.288 111.909 185.814 110.498 187.338 109.045C189.971 106.73 191.218 103.672 191.601 100.772C191.859 100.144 192 99.4566 192 98.7361C192 94.8691 190.329 91.1443 187.783 88.5996C187.751 88.5682 187.719 88.5371 187.687 88.5065ZM110.039 85.3835C129.582 85.3835 149.539 93.3384 170.029 110.023C150.468 126.088 131.338 134.095 112.591 134.748C92.2188 135.458 71.3873 127.516 49.9792 110.079C70.4937 93.3562 90.4738 85.3835 110.039 85.3835Z" fill="#B5179E"/>
5
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M110 90C98.9543 90 90 98.9543 90 110C90 121.046 98.9543 130 110 130C121.046 130 130 121.046 130 110C130 98.9543 121.046 90 110 90ZM110 120C115.523 120 120 115.523 120 110C120 104.477 115.523 100 110 100C104.477 100 100 104.477 100 110C100 115.523 104.477 120 110 120Z" fill="#B5179E"/>
6
+ </g>
7
+ <defs>
8
+ <clipPath id="clip0_4775_18126">
9
+ <rect width="220" height="220" fill="white"/>
10
+ </clipPath>
11
+ </defs>
12
+ </svg>
Binary file
Binary file
Binary file
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
3
+ <defs>
4
+ <style>
5
+ .cls-1 {
6
+ fill: #1f2723;
7
+ fill-rule: evenodd;
8
+ }
9
+ </style>
10
+ </defs>
11
+ <path class="cls-1" d="M22.57,85.45c-2.42,1.94-2.42,5.63,0,7.56l12.58,10.06c1.78,1.43,4.31,1.42,6.08-.02l71.73-58.28c1.14-.93,1.79-2.31,1.79-3.76v-19.23c0-4.06-4.7-6.32-7.87-3.78,0,0-84.31,67.45-84.31,67.45ZM44.23,144.22c-1.77,1.44-4.3,1.45-6.08.02l-11.56-9.24c-2.41-1.93-2.42-5.6-.04-7.54L106.84,62.23c3.16-2.58,7.9-.32,7.9,3.76v18.63c0,1.46-.66,2.85-1.79,3.76l-68.74,55.84h.01ZM29.56,168.62c-2.4,1.94-2.39,5.62.04,7.54l77.29,61.83c3.17,2.54,7.87.28,7.87-3.78v-124.62c0-4.08-4.73-6.34-7.9-3.76l-77.29,62.79h0ZM124.44,232.59c0,4.32,5.22,6.48,8.27,3.43l104.59-104.59c1.9-1.9,1.9-4.96,0-6.85L132.71,19.99c-3.06-3.06-8.27-.89-8.27,3.43v209.2-.02Z"/>
12
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="256" height="256" fill="#0A0A0B"/>
3
+ <path d="M95.7133 72.2241C66.6546 72.2241 43.0933 95.7267 43.0933 124.722C43.0933 151.089 62.5839 172.915 87.9807 176.64L136.921 92.0921C127.28 79.9918 112.405 72.2241 95.7133 72.2241Z" fill="white"/>
4
+ <path d="M150.332 68.9067L136.921 92.0921L185.852 176.64H212.693L150.332 68.9067Z" fill="white"/>
5
+ </svg>
@@ -0,0 +1,7 @@
1
+ <svg viewBox="0 0 512 512"
2
+ xmlns="http://www.w3.org/2000/svg">
3
+ <circle cx="256" cy="256" fill="#d62d79" r="256"/>
4
+ <g fill="#fff">
5
+ <path d="M384 272H128c-8.8 0-16 7.2-16 16s7.2 16 16 16h21.2c-3.1 9-6 17.3-8.6 24.8-3.5 10.2-6.5 18.7-8.5 24.7l-3.2 9.3c-2.9 8.4 1.5 17.5 9.9 20.4s17.5-1.5 20.4-9.9l3.2-9.3c2.1-5.9 5-14.4 8.5-24.7s7.7-22.3 12.2-35.2H329c4.5 13 8.6 25 12.2 35.2 3.5 10.3 6.5 18.8 8.5 24.7l3.2 9.3c2.9 8.4 12 12.8 20.3 9.9 8.4-2.9 12.8-12 9.9-20.4l-3.2-9.3c-2.1-5.9-5-14.4-8.5-24.7-2.6-7.4-5.5-15.8-8.6-24.8H384c8.8 0 16-7.2 16-16s-7.2-16-16-16zM128 240h256c8.8 0 16-7.2 16-16s-7.2-16-16-16h-54.3c-13.4-38.9-24.6-71.3-26.5-77.1-3.4-10.2-9-19.3-17.6-25.7C277 98.7 266.7 96 256 96s-21 2.7-29.6 9.2c-8.6 6.4-14.2 15.4-17.6 25.7-1.9 5.8-13.1 38.2-26.5 77.1H128c-8.8 0-16 7.2-16 16s7.2 16 16 16zm111.2-98.9c1.9-5.8 4.3-8.7 6.4-10.3 2-1.5 5.2-2.8 10.4-2.8 5.3 0 8.4 1.3 10.4 2.8 2.1 1.6 4.5 4.6 6.4 10.3 1.8 5.3 11.2 32.7 23 66.9h-79.6c11.8-34.1 21.2-61.5 23-66.9z"/>
6
+ </g>
7
+ </svg>
Binary file
@@ -0,0 +1,21 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 481.89 481.89">
3
+ <defs>
4
+ <style>
5
+ .cls-1 {
6
+ fill: #00f99b;
7
+ }
8
+
9
+ .cls-2 {
10
+ fill: #0c0c15;
11
+ }
12
+ </style>
13
+ </defs>
14
+ <g id="mask0_401_83237" data-name="mask0 401 83237">
15
+ <circle class="cls-1" cx="240.94" cy="240.94" r="240.94"/>
16
+ </g>
17
+ <path class="cls-2" d="m327.6,129.74h-75.08c-59.93,0-108.5,48.58-108.51,108.5v28.47c0,.73.59,1.32,1.32,1.32h15.14c.73,0,1.32-.59,1.32-1.32v-28.47c0-50.1,40.62-90.72,90.72-90.72h101.33c1.01,0,1.65-1.09,1.11-1.95-5.77-9.18-14.4-15.83-27.34-15.84h-.02Z"/>
18
+ <path class="cls-2" d="m364.6,173.52c-.11-.63-.66-1.09-1.3-1.09h-110.78c-37.33,0-67.59,30.26-67.59,67.59v26.69c0,.73.59,1.32,1.32,1.32h11.17c2.92,0,5.3-2.37,5.3-5.3v-22.72c0-27.51,22.3-49.81,49.81-49.81h112.46c.75,0,1.36-.63,1.32-1.39-.25-4.29-.73-9.62-1.69-15.31Z"/>
19
+ <path class="cls-2" d="m158.88,352.77h75.08c59.93,0,108.5-48.58,108.51-108.5v-28.47c0-.73-.59-1.32-1.32-1.32h-15.14c-.73,0-1.32.59-1.32,1.32v28.47c0,50.1-40.62,90.72-90.72,90.72h-101.33c-1.01,0-1.65,1.09-1.11,1.95,5.77,9.18,14.4,15.83,27.34,15.84h.02Z"/>
20
+ <path class="cls-2" d="m121.88,308.98c.11.63.66,1.09,1.3,1.09h110.78c37.33,0,67.59-30.26,67.59-67.59v-26.69c0-.73-.59-1.32-1.32-1.32h-11.17c-2.93,0-5.3,2.37-5.3,5.3v22.72c0,27.51-22.3,49.81-49.81,49.81h-112.46c-.76,0-1.36.63-1.32,1.39.25,4.29.73,9.62,1.69,15.31Z"/>
21
+ </svg>
Binary file
Binary file
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1792.4 1792.4" style="enable-background:new 0 0 1792.426 1792.426" xml:space="preserve"><circle style="fill:#ae8e50" cx="895.4" cy="896.2" r="885"/><circle style="fill:#fff" cx="494.2" cy="1233.3" r="85.6"/><path style="fill:#fff" d="M1262.5 1228.8a60.5 60.5 0 0 1-33.6-16.3 79.7 79.7 0 0 1-19-37.2c-4.3-16.3-6.4-39-6.4-68 0-65.3 1-131 2.7-196.8 1.9-66 2.8-137.6 2.8-215 0-53.2-8.2-98.5-24.5-136a234.4 234.4 0 0 0-69-91.7 285.9 285.9 0 0 0-105.2-51.7A513.3 513.3 0 0 0 702 432.5a581.5 581.5 0 0 0-164.2 94.3l23.6 108.8H574a135.6 135.6 0 0 1 37.2-37.1c16.3-11.5 34.4-22.1 54.4-31.8a323 323 0 0 1 62.6-22.7c21.7-5.4 42.9-8.1 63.5-8.1 54.4 0 97 15.4 127.8 46.2A152 152 0 0 1 966 693.7c0 15.7-2.1 29-6.4 39.9-4.2 10.9-13.6 20.9-28 30-14.6 9-36.7 18-66.3 27.1-29.6 9.1-69.8 19.7-120.6 31.8a684 684 0 0 0-110.7 35.4 315.6 315.6 0 0 0-84.3 51.7 208.1 208.1 0 0 0-54.4 74.3c-12.7 29-19 63.5-19 103.4 0 4.3 0 8.5.2 12.7a135 135 0 0 1 136.2 199.5l5 1.9c32.7 12 72 18.1 118 18.1 55.5 0 101.8-11.5 138.7-34.5 36.9-23 69.2-53.7 97-92.5 14.6 41.2 35.7 72.6 63.5 94.4 27.8 21.7 64.1 32.6 108.9 32.6 27.8 0 53.8-3.6 78-10.9a970.7 970.7 0 0 0 88.9-32.6v-43.6c-18.2 0-34.2-1.1-48.1-3.6zM968.6 901.4c-.6 27.2-.9 66.8-.9 118.8 0 59.3-12.4 104-37.2 134.2a119.5 119.5 0 0 1-97 45.4 91.2 91.2 0 0 1-75.3-35.4c-18.8-23.6-28.1-57.7-28.1-102.5 0-46 7.5-81 22.6-105.2a169.3 169.3 0 0 1 58.1-57.1 381.8 381.8 0 0 1 78-34.5c28.4-9 55.3-20.8 80.7-35.4 0 20.6-.3 44.5-.9 71.7z"/></svg>
@@ -0,0 +1 @@
1
+ <svg id="edb2a19e-e1b8-4f07-a4ec-3b382b9d4bc2" data-name="arpa_logo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1025.01 887.28"><defs><style>.bc2181c1-ca84-452b-b394-7b1b7649b269{fill:url(#e3027ed2-db00-4fbb-b612-9bb0ff5194c2);}.fdd0a889-c18b-4a7a-9150-d0221c44258e{fill:url(#adae3cec-69e0-4226-9864-482ae86bdd9f);}.e20782b8-b840-4e2d-adac-19429321ee55{fill:#5b5a68;}</style><linearGradient id="e3027ed2-db00-4fbb-b612-9bb0ff5194c2" x1="649.82" y1="381.68" x2="101.59" y2="815.47" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#deedf8"/><stop offset="0.11" stop-color="#deedf8"/><stop offset="1" stop-color="#bcc9d0"/></linearGradient><linearGradient id="adae3cec-69e0-4226-9864-482ae86bdd9f" x1="579.18" y1="473.07" x2="882.46" y2="1222.89" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#cdcdcf"/><stop offset="1" stop-color="#939393"/></linearGradient></defs><title>ARPA_Logo</title><polygon class="bc2181c1-ca84-452b-b394-7b1b7649b269" points="750.99 697.75 163.42 697.75 567.42 0 457.18 0 0.01 792.47 805.74 792.4 750.99 697.75"/><path class="fdd0a889-c18b-4a7a-9150-d0221c44258e" d="M763.58,250.46l457.59,791.72-55,95.43L763,440.23V251.43ZM763,440.23V251.43l.56-1-404,697.76,110,.17Z" transform="translate(-196.16 -250.46)"/><polygon class="e20782b8-b840-4e2d-adac-19429321ee55" points="0 792.46 54.88 887.28 970.01 887.28 649.97 332.95 567 189.88 512.41 284.38 805.78 792.46 0 792.46"/></svg>
@@ -0,0 +1 @@
1
+ <svg width="1032" height="1032" xmlns="http://www.w3.org/2000/svg"><g transform="translate(18 18)" fill="none"><circle fill="#FFF" cx="498" cy="498" r="482"/><path d="M498 0A498.6 498.6 0 0 0 0 498c0 274.6 223.4 498 498 498s498-223.4 498-498S772.6 0 498 0ZM175 796.5a42 42 0 0 1-.8-9.2c.5-15 8.6-27.9 14.4-41.4 6-14.1 11.4-28.5 16.3-43 7.1-20.7 12.4-41.8 16.4-63.3 2-11.3-1.2-28.7 6-38.6 2.3-3 4.7-4.7 7.1-5.2 12-2.7 25.2 20.4 31.6 27.4 33 36.8 72 67.7 110.6 98.4 36.9 29.5 75 60 106.1 93.4 15.4 16.6 30 34 43.2 52.3a380 380 0 0 1 18.7 28.8c5.8 9.9 11.6 20 10.6 32-.5 6-3.4 11.6-8 15.6-6 5.2-13.4 5.8-21 6.3a454.2 454.2 0 0 1-225.6-44.5 453.1 453.1 0 0 1-64.5-38.2c-21-15-42.2-30.5-54.7-53.5-3-5.4-5.3-11.3-6.4-17.3Zm308.2-468.9c15.8 15.8 23.6 1.2 36.8-9.8a151.5 151.5 0 0 1 48-26.7 152.5 152.5 0 0 1 106.6 3.7C735.2 320 770 378.7 770 456a230 230 0 0 1-29.4 108.5c-30 55.8-76.5 101.7-126 140.4a795.3 795.3 0 0 1-66 46.5 825 825 0 0 1-26.8 16.3c-14.7 8.5-24.8 8.5-38-3.9-8.9-8.4-18-16.5-27.3-24.5-18.6-15.9-37.7-31.2-56.8-46.4-86-68.6-167.3-133.4-167.3-236.9 0-45 11.8-83.6 33.4-112.7l1.2-1.8a144.5 144.5 0 0 1 216.3-13.9Zm-77.9-85.3c8-10.5 34.3-11.4 46.3-13.2a329 329 0 0 1 53-3.4c12.4.2 24.9 1.8 37.2 3.5 10.8 1.4 26.4.6 36 6.3 2.5 1.6 4.5 4.3 4.4 7.3v.6a8.8 8.8 0 0 1-4.4 6.1c-9.3 5.8-23 6.9-33.3 11.1-14.2 5.9-25 19.5-40.6 21.6-18.3 2.4-29.3-7-43.5-15.4-15.3-9-33.6-10.6-50.7-13.6a8.9 8.9 0 0 1-4-1.4c-2.8-2.2-2.5-6.7-.4-9.5Zm210.8 677.2a46.8 46.8 0 0 1-15.8-16 562 562 0 0 0-23.5-37.3c-9.3-13.2-25-37.8-18-54.3 2.3-5.3 6.7-9.4 11-13.2 11.5-10.5 21.5-22.4 32.8-32.9 19-17.6 33.8-30.5 51.4-45.3 14.4-12 27.2-26.7 43.5-35.8 3.3-2 7-3.6 10.8-3 4 .7 7.1 4 8.7 7.7 1.5 3.7 1.8 7.8 1.9 11.8 1 32.4 0 57.8 6 91.5 3.4 18.7 12.3 36.1 19.9 53.5 4.7 10.8 1.8 23.4-4.8 32.8-3.6 5-7 6.4-12.2 9-6.2 3.4-12.2 7.1-18.5 10.5-14 7.4-28.5 13.5-43 20-6.1 2.6-10.9 6-17.8 7.2-6.8 1-13.7.8-20.3-1a46.7 46.7 0 0 1-12-5.2ZM798 823l-.9-.3c-10.9-3-13.6-12.9-16.1-22.5-2.8-11-5-22-6-33.2a883 883 0 0 1-3.6-77.6c0-29.4 3-84 15-128.8 2.7-9.7 4.7-19.2 8-29a248.5 248.5 0 0 0 1.7-150c-3.2-10-11-21.6-11.3-32-.3-9.9 5.2-18.9 8-27.9 2.8-9.3 5.2-18.7 7-28.2 3.3-16.5 7.6-33.8 9.1-50.4l2.8-30.5c.3-2.4.5-4.9-.1-7.2-.7-2.3-2.4-4.5-4.7-5-2.7-.7-5.3.9-7.6 2.4-22.6 15-49.4 24-75.9 29-12 2.3-25 5-37 2.1a228.4 228.4 0 0 1-40.3-14.6c-14.2-6.4-29-11.8-44-16.2a366.1 366.1 0 0 0-196.3-2 322.6 322.6 0 0 0-46.2 16.6c-7.2 3.2-14 7.4-21.2 10.4-5.8 2.5-12.8 7-19 8.1-3.7.7-8.6-.5-12.4-.8-11-1-21.9-3-32.6-5.7a438.3 438.3 0 0 1-60-21.4 16 16 0 0 0-6.6-.7c-1.8 0-3.6 0-5.3.7-3.7 1.5-5.6 5.7-6.6 9.6-2.6 10.3-.4 20.2.3 30.5a353 353 0 0 0 3 28.8 309 309 0 0 0 7.3 35.5A255.8 255.8 0 0 0 212 331a48.8 48.8 0 0 1 1.8 30.8c-3.4 9.4-7.5 18.4-10 28.2a256.6 256.6 0 0 0-7.8 81c3 48.8-1.1 101-8.7 149.3 0 25.1-13 54.4-21.7 77.6-4 10.4-7.8 21.8-13.8 31.1-2 3.1-4 6.2-6.7 8.7a22.7 22.7 0 0 1-19.6 5.3c-12-2.5-17.7-14.8-23.1-24.6a454.3 454.3 0 0 1-18-35.6 450.4 450.4 0 0 1-39.4-184.7C45.1 248.3 248.3 45 498 45a453.4 453.4 0 0 1 448.8 514c-6.8 50.1-22.1 99-45 144a454.1 454.1 0 0 1-39.1 63.2 462.5 462.5 0 0 1-23.2 28.9c-7.9 9-15.2 18.5-24.7 25.7-1 .8-2.2 1.6-3.5 2a37.8 37.8 0 0 1-13.3 0Z" fill="#000"/><path d="M324.3 382.2c-10.3-.9-17.6-6.3-27.4-8.5-1.8-.4-3.7-.6-5.2.3-2.2 1.2-3 4-2.6 6.5.4 2.5 1.6 4.7 2.6 7 1.4 3.2 2.3 6.6 3.2 10 3 11.6 6 23.2 8.8 35 2.1 9 2.8 17.4 7.8 25.6a49 49 0 0 0 74.9 10.7 49.5 49.5 0 0 0 10.8-14.6c1.7-3.5 1.4-12.8 3.4-14.5 9.8-9 32.3 28.6 36 34 5.9 9.2 13.4 18.2 18.7 27.5a226 226 0 0 1 17.5 42.9c5.1 16.3 8 32.8 9.2 49.8.2 3 .4 6 1.2 8.8 1.3 5.3 4.5 10 7.6 14.4 1.4 2 2.8 4 4.8 5.4 2 1.4 4.7 2 6.9 1 .9-.5 1.6-1.2 2.3-2 9.4-9.7 11.1-22.3 12.7-35.2 2.8-22.9 5.5-48.4 15.7-69.3a388.2 388.2 0 0 1 31.9-52.3c3.2-4.3 6.7-8.4 10.3-12.3 2.2-2.4 6.5-8.9 10.1-7.3 3.8 1.6 5.7 10.2 7.9 13.6a49.2 49.2 0 0 0 11.2 12.6 48.9 48.9 0 0 0 30.2 10.4 49.3 49.3 0 0 0 48.3-41.5c.5-8.8-1.3-16.8 1.2-25.8 3.6-12.9 13-23.8 14.6-37 .2-1.7.2-3.6-1-4.6-1.2-1-3-.9-4.5-.6-21.4 3.6-41.5 9.7-63.3 11.6-31.4 2.6-58.8 19.3-80.2 41.9-9 9.4-18 20-24.6 31.2-5.2 8.8-12.4 17-16.4 26.5-2 5-4.1 11-9.3 12.6-14 4.1-22-27.7-27.4-36a218.1 218.1 0 0 0-30-37.6c-23.8-23.5-54.3-38.7-88.2-38.7-10 0-19.7-.6-29.7-1.5Z" fill="#000"/></g></svg>
Binary file
Binary file
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" style="shape-rendering:geometricPrecision;text-rendering:geometricPrecision;image-rendering:optimizeQuality;fill-rule:evenodd;clip-rule:evenodd"><path style="opacity:1" fill="#50becb" d="M135.5 98.5c2 1 3.4 2.8 4 5-21.3 17.4-42.6 34-64 50l18-23c-.1.7 0 1.4.5 2a26 26 0 0 1 3.5-5c-.8-1.8-.1-3.3 2-4.5A671.6 671.6 0 0 0 133 96.5c1 .8 1.6 1.8 2 3 .4-.2.6-.6.5-1Z"/><path style="opacity:.569" fill="#4f6fb8" d="M142.5 65.5c17-.3 34 0 51 1 3 3 5.7 6.4 8 10a1038 1038 0 0 1-34 42l-33-42 8-11Z"/><path style="opacity:1" fill="#4dc4cd" d="M142.5 67.5c16.7-.2 33.3 0 50 .5 2.7 2.6 5 5.4 7 8.5a1809.3 1809.3 0 0 1-31.5 40l-31-39c1-3.6 2.9-7 5.5-10Z"/><path style="opacity:1" fill="#53b8c9" d="M139.5 103.5c1.7 1 3 2.3 4 4-26 21.6-52.5 42.2-79.5 62-.4-.2-.6-.6-.5-1l12-15c21.4-16 42.7-32.6 64-50Z"/><path style="opacity:1" fill="#56b4c7" d="M143.5 107.5c1.8 1.7 3 3.7 4 6-1.3-.8-2.5-1.8-3.5-3-21.9 18.2-44 36-66.5 53.5-6 4.8-12.4 9-19 13-1 1.4-1 3 0 4.5a6.5 6.5 0 0 1-3-3c2.3-3.7 5-7 8-10 0 .4.1.8.5 1 27-19.8 53.5-40.4 79.5-62Z"/><path style="opacity:1" fill="#59b0c6" d="M147.5 113.5c2 1 3.4 2.8 4 5h-1c-1-2.3-2.7-3.4-5-3.5a8534 8534 0 0 0-85 67.5l4 5h-1a11 11 0 0 1-5-6c-1-1.6-1-3 0-4.5 6.6-4 13-8.2 19-13 22.5-17.5 44.6-35.3 66.5-53.5 1 1.2 2.2 2.2 3.5 3Z"/><path style="opacity:1" fill="#5aabc4" d="m150.5 118.5-84 67a71 71 0 0 1 4 2h-6a1048 1048 0 0 0-4-5 8534 8534 0 0 1 85-67.5c2.3 0 4 1.2 5 3.5Z"/><path style="opacity:1" fill="#5ca5c2" d="M150.5 118.5h1c2 1 3.4 2.7 4 5a473.9 473.9 0 0 0-48 37.5 368.5 368.5 0 0 0-31 24.5l2 2h-8a71 71 0 0 0-4-2l84-67Z"/><path style="opacity:1" fill="#5f9fbf" d="M155.5 123.5c2.1 1.6 3.8 3.6 5 6 0 .4-.1.8-.5 1l-3-3A3176.8 3176.8 0 0 1 83.5 185l3 2.5h-8l-2-2c9.9-8.7 20.2-16.9 31-24.5a473.9 473.9 0 0 1 48-37.5Z"/><path style="opacity:1" fill="#6199bc" d="M160.5 129.5c1.4.5 2 1.5 2 3-1.8 0-3.5.5-5 1.5-21.2 17-42.5 34-64 50.5a3 3 0 0 0-1 3h-6l-3-2.5c24.8-18.8 49.3-38 73.5-57.5l3 3c.4-.2.6-.6.5-1Z"/><path style="opacity:1" fill="#6392ba" d="M162.5 132.5a3 3 0 0 1 2 2c-20.7 17-41.7 33.7-63 50a3 3 0 0 0-1 3h-8a3 3 0 0 1 1-3c21.5-16.6 42.8-33.4 64-50.5 1.5-1 3.2-1.5 5-1.5Z"/><path style="opacity:1" fill="#658bb7" d="M164.5 134.5c1.2.8 2.2 1.8 3 3v1c-12.8 9.6-25.4 19.4-38 29.5.8.7 1 1.5 1 2.5a4 4 0 0 0-4-1.5l-14 18c-4 .5-8 .7-12 .5a3 3 0 0 1 1-3c21.3-16.3 42.3-33 63-50Z"/><path style="opacity:1" fill="#6686b5" d="M167.5 138.5a7 7 0 0 1 3 4c-12 9-24.4 18.3-37 28a3 3 0 0 0-1 3c-1.4-.5-2-1.5-2-3 0-1-.2-1.8-1-2.5 12.6-10 25.2-20 38-29.5Z"/><path style="opacity:1" fill="#687fb2" d="M170.5 142.5c1.8.8 2.8 2.1 3 4a1222.7 1222.7 0 0 1-39 30l-2-3a3 3 0 0 1 1-3c12.6-9.7 25-19 37-28Z"/><path style="opacity:.61" fill="#4e6fb8" d="M168.5 137.5h-1c-.8-1.2-1.8-2.2-3-3a3 3 0 0 0-2-2c0-1.5-.6-2.5-2-3a16.6 16.6 0 0 0-5-6c-.6-2.3-2-4-4-5-.6-2.2-2-4-4-5-1-2.3-2.2-4.3-4-6-1-1.7-2.3-3-4-4-.6-2.2-2-4-4-5a564 564 0 0 0-23-30.5c-16.7-.7-33.3-.7-50 0-2.7 2.6-5 5.4-7 8.5 13 16.8 26.1 33.5 39.5 50a4 4 0 0 1-1.5 4 15662.5 15662.5 0 0 1-30 38c-3 3-5.7 6.3-8 10a6.5 6.5 0 0 0 3 3 11 11 0 0 0 5 6l42 2c-14.7.3-29.3 0-44-1-2.8-3-5.5-6.2-8-9.5 13.1-17.3 26.5-34.5 40-51.5-13-16.8-26.1-33.5-39.5-50 1.5-4.6 4.3-8.4 8.5-11.5 16.7-.7 33.3-.7 50 0 19.3 23.4 38 47.3 56 71.5Z"/><path style="opacity:1" fill="#4ec4cd" d="M135.5 98.5c0 .4-.1.8-.5 1-.4-1.2-1-2.2-2-3-10.9 9.2-22 18-33.5 26.5-2.1 1.2-2.8 2.7-2 4.5a26 26 0 0 0-3.5 5c-.5-.6-.6-1.3-.5-2a4 4 0 0 0 1.5-4 2837.2 2837.2 0 0 1-39.5-50c2-3.1 4.3-6 7-8.5 16.7-.7 33.3-.7 50 0a564 564 0 0 1 23 30.5Z"/><path style="opacity:1" fill="#6c6eac" d="M176.5 150.5c2 1.3 3.7 3 5 5a1372 1372 0 0 1-39 31l-5-6a216.6 216.6 0 0 0 39-30Z"/><path style="opacity:1" fill="#6d67a9" d="m181.5 155.5 3 4a492 492 0 0 1-37 28c-2 .3-3.6 0-5-1a1372 1372 0 0 0 39-31Z"/><path style="opacity:1" fill="#6f5ca5" d="m184.5 159.5 4 5a197.4 197.4 0 0 1-30 23h-11a492 492 0 0 0 37-28Z"/><path style="opacity:1" fill="#714fa0" d="m188.5 164.5 11 14a28.5 28.5 0 0 1-7 8.5c-11.3.5-22.7.7-34 .5a197.4 197.4 0 0 0 30-23Z"/><path style="opacity:1" fill="#6a77af" d="M173.5 146.5c1.8.8 2.8 2.1 3 4a216.6 216.6 0 0 1-39 30l-3-4c13.3-9.8 26.3-19.8 39-30Z"/><path style="opacity:.602" fill="#4f74b9" d="M167.5 138.5v-1h1c11 13.1 21.8 26.5 32.5 40 .7 1.1.6 2.1-.5 3l-7 8c-17 1.2-34 1.3-51 .5-4.9-6.3-9.9-12.4-15-18.5-5.1 6-10.1 12.2-15 18.5a25 25 0 0 1-7 .5l-42-2h37c4 .2 8 0 12-.5l14-18a4 4 0 0 1 4 1.5c0 1.5.6 2.5 2 3l2 3 3 4 5 6c1.4 1 3 1.3 5 1h11c11.3.2 22.7 0 34-.5 2.9-2.4 5.2-5.2 7-8.5l-11-14-4-5-3-4c-1.3-2-3-3.7-5-5a4.7 4.7 0 0 0-3-4 4.7 4.7 0 0 0-3-4 7 7 0 0 0-3-4Z"/></svg>
@@ -0,0 +1,20 @@
1
+ <svg width="318" height="318" viewBox="0 0 318 318" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <circle cx="159" cy="159" r="159" fill="#ADD6FF"/>
3
+ <mask id="mask0_259_1243" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="318" height="318">
4
+ <circle cx="159" cy="159" r="159" fill="#86C0FB"/>
5
+ </mask>
6
+ <g mask="url(#mask0_259_1243)">
7
+ <path d="M224.413 191.934C221.924 186.654 219.638 181.261 216.761 176.174C213.928 171.161 209.646 167.115 207.161 161.942C204.73 156.882 203.491 151.301 200.518 146.503C197.395 141.459 192.855 137.483 189.388 132.68C185.911 127.861 183.652 122.403 181.264 116.994C178.935 111.714 176.22 107.388 172.41 103.058C163.99 93.4844 157.427 82.6713 152.013 71.1499C127.446 71.8851 106.244 80.4389 88.9491 96.6237C71.0689 113.361 62 134.193 62 158.545C62 182.897 71.0528 203.788 88.9061 220.714L89.0027 220.805C107.098 237.521 129.469 246 155.485 246C181.5 246 203.866 237.526 221.966 220.805L222.015 220.757C226.651 216.421 230.692 211.816 234.153 206.965C230.348 202.302 226.968 197.338 224.413 191.929V191.934ZM178.286 180.52C172.179 186.235 164.72 189.015 155.485 189.015C146.249 189.015 138.833 186.251 132.732 180.563C126.792 174.832 123.899 167.63 123.899 158.545C123.899 149.46 126.786 142.253 132.727 136.527C138.828 130.839 146.271 128.075 155.479 128.075C164.688 128.075 172.173 130.855 178.28 136.57C184.398 142.296 187.376 149.487 187.376 158.545C187.376 167.604 184.403 174.794 178.28 180.52H178.286Z" fill="url(#paint0_linear_259_1243)"/>
8
+ <path d="M317.919 214.001C317.925 206.703 317.882 199.41 318 192.112C318.011 191.484 318.011 190.813 317.673 190.276C317.19 189.509 316.192 189.278 315.301 189.101C296.825 185.42 280.007 174.269 269.221 158.846C256.691 140.923 246.42 121.228 232.135 104.539C219.997 90.3561 204.558 79.2532 186.297 74.6597C175.694 71.9926 164.902 71.0213 153.993 71.0106C117.111 70.4149 93.7196 92.0572 88.9544 96.6239C88.9759 102.071 90.5643 106.358 92.802 110.158C95.0397 113.957 97.9267 117.273 100.556 120.778C102.949 123.97 105.128 127.324 106.4 131.349C107.13 133.667 107.559 136.206 107.559 139.066C107.559 140.681 146.41 127.201 153.429 128.076C168.863 128.076 177.304 133.378 186.324 142.753C199.729 156.678 208.277 173.99 219.112 189.831C234.931 212.954 255.714 236.308 284.139 242.936C294.523 245.356 305.019 246.118 315.639 245.984C317.598 245.957 317.952 245.109 317.946 243.408C317.893 233.609 317.919 223.794 317.93 213.995L317.919 214.001Z" fill="url(#paint1_linear_259_1243)"/>
9
+ </g>
10
+ <defs>
11
+ <linearGradient id="paint0_linear_259_1243" x1="63.7279" y1="140.788" x2="234.593" y2="176.87" gradientUnits="userSpaceOnUse">
12
+ <stop offset="0.4" stop-color="#3D67FF"/>
13
+ <stop offset="1" stop-color="#2241A9"/>
14
+ </linearGradient>
15
+ <linearGradient id="paint1_linear_259_1243" x1="135.225" y1="83.6643" x2="317.796" y2="217.494" gradientUnits="userSpaceOnUse">
16
+ <stop offset="0.264898" stop-color="#3D67FF"/>
17
+ <stop offset="1" stop-color="#86C0FB"/>
18
+ </linearGradient>
19
+ </defs>
20
+ </svg>
Binary file
Binary file