npm dedupe

减少重复

概要

npm dedupe

alias: ddp

描述

搜索本地包树并尝试通过将依赖关系移到树上更远的位置来简化整体结构,这样它们可以更有效地被多个依赖包共享。

例如,考虑这个依赖图:

a
+-- b <-- depends on c@1.0.x
|   `-- c@1.0.3
`-- d <-- depends on c@~1.0.9
    `-- c@1.0.10

在这种情况下,npm dedupe 会将树转换为:

a
+-- b
+-- d
`-- c@1.0.10

由于 node 模块查找的分层特性,b 和 d 都将通过树根级别的单个 c 包来满足它们的依赖关系。

qJHvvW7o4Hx4NUMMtuWsN80ofacSOh215ppL7YKIAO08EdhfRlyaUg1n9Jpl6WxxA2rKgYy9TZVuilW1wCXRhA==

a
+-- b <-- depends on c@1.0.x
+-- c@1.0.3
`-- d <-- depends on c@1.x
    `-- c@1.9.9

yaDfDjR+WrHl3N3U6Cqmcju8nkxFWXzNl2D1rMunJwD5kaxFUeJsflrnjdYd1AClBMitiXi8VxM2PDDSbLzi5Lq1MbYb7zzKN2aslR44dF4j46cIMdHUFd0P+69UpmYH7hfDLu3qwk6TUaA8uFsmGQvwsDyMjv4Oc3JPtysmoiv9rJCMkREav1qal97xE6NNIFHIshTMsgtW/xeFwMOKePq4cD3erzkZpWsUEVvmnjn4yTxsV9eh7tcmClGJmnjv+ZkOmHr4eAXm6eLzRZPH9BY5GKj7+pZmCsmgcWn91ou4iEUE4ZIk0yqa3qZ5BQsA5ngnec3hTBAf8z7JQDDbWGeUqo99s3BWyOWqu5gWND9+cbyFefaAB+xM2+Y4EEKogw9McBrzQty/lciyT00iclY8JkFsSxE3r+hJJMSwso4=

e0OsdflK7drlUEr4Iv3xDkFhmn1V91T/AEMKMR8Bzhpu+xpStOScsjuQp+fwU507ebEZR6TBL8nimcpZ2EwYWLE+65Lf2PFzqzSJG+dTUJjtLa5LR0XYMXablBVL/bSeMHDYrRzvrRAer+1B+aQC+0Y0e832kIDStdZArHaDAX7TtcC3i1bNMJkWoc9vyQRP1+FwvK2s1HfRJwS0FRmUaQ==

zPc6oYOGUh8/234CKAWuNIoF2gsBMzVdNptOcaE5j96GHKr/6ehGbJmX4NSfnJPMWEz6xX9UQUV8gGPLERzB5k5Jy9+7ALYpepGTUrKx4vHHvP1Ok9RIR1sedgURUFdRKOkWAY58tdemhtMrpWUkzPhzEPcVKT39SL2NC/NQ4JCBTiU1V2PZjddRl32HNEftEWgSkKk3QicKDEQvWtWXuau8jBGA1GfWAcAlP3a1xyo=

QX4VYysmxDIABsiBdhLMfYDeNEMfOCMm9UbanPtb0wu+nz488I41BkwBLKBf8DMuSwGk3IgoAmLST5K/mS8Ikg==

f9mT6yws43rIKNkJqeHjBIYM8+0NvymVnKzNlb5xmCfKXMK8InSsYBnPpGnBC4Gs15dnd7Z4VXk/lZrh9Q+xlK7A4nB4nWgTypriNw6x2duKiNfDoNihLlPpqiIKg52Z

s5DgKrjSpZVO65TlLU9Ihe4y9OzHXNHkACfdLVBT4d9pYBHxumQISDZWDvFw2Ah6iVgYjYnZ+MG3PMwT3EA1qEMJKDX2s54ZGLCfeVhnyAN6lYKbguRBV5IQIygOc8p6

0HqMvqxhhiBqNtgj0VgYviNQggpPjrb4IMxj26kAKWSuRJPMff/eFXzo/e/7aKLcRLH+tgcTS2FBq0AJxrbdU/P5kb/j/efFIcTtTEu+1Kwpsz1ovtSkYyDf1Cv7fqE9Fce0TWD3ukssxx7j0JSajeZZF4xLQ4b4SroHSpm3FIzjUIj03UzyrE1b5mbXQIJ7NR2zw5UeMfIYj7szFUyNgbufILVacmiJSr3nqhfuvMIGJGwU7jxronoYswL1NsIMjKFJzAPklMIYBv4J6wPO5AjOr/VsczN2OzFKfPgN5hNDkw3XlkdBpuFU0GBkovVI

配置

global-style

    1rokL6V6UHCZfWr+mBKeqgKfAZFOm8muuzL7jN1R2TpPkIMwxKXStfDfaZ1Lv1AmhCrIRLfS11y3WVpwvsOw9g==

VpikQJrDdlgp4Dze59yActkTINxsjrFUwbglt0v6vTqkLQ5Fzf/4JHYe998VscX0dSaASxk+vctRCK64oXDmlnsp2jSIFKq/JqnhwhS/+f71XxvlI/p5wlMvBV23RnCfb1GxcVC+eLYPziVfkRANfUH9rwVOhcGBsGQxldsSk+py0zyxVzfVWGdS5np5DR36T4auZArQYpCurr2FboHKFkjxa7yTyvdOCyOjZwT4Cxqj7iaL31euuu49bZ4wbh+h3hS6fgLhVBOzh7AQ2RBvB+AbC7fNLcnitJkW2EckKOEZyzWsTUgr3jPf3uwNm44lpYctaVsPMFvEz7RGnLEMN5jyD56iL6yxzyK7mT8ds86HjJwUf40Hv7ztu+OcXKt2dGPiEcmjNKegfeL8lpyiniRoaP/0P4RHW2JFLbn8PcpYiefgiNxbBDCRMWdQnrr9YiMtxCimEMV9ttw63ygCUjEGHglmmpT1kXf533OYJSks7waYGzjtB23pMlO6Io1tYWlFVQqkZMTCwbfq+RguL3nNlktqfNGxmHwTvk4xSn4Yzsjs8ZfHAoccfTRuBUacyTCFjvl6lF5nvBq0keOaI+mpi9T0rRYEgMDanpkPdug=

legacy-bundling

    1rokL6V6UHCZfWr+mBKeqgKfAZFOm8muuzL7jN1R2TpPkIMwxKXStfDfaZ1Lv1AmhCrIRLfS11y3WVpwvsOw9g==

AnmKRm1uukUaL4OeY+tFMUypH8ETYnu4Sp4wleo2qa4NySiamPpUozXLGC36MMZGk0dKAKQxqQJZhoSbhJ/3Prs5GlTLub/yAnUBQxL92tVG0uFVsJI3eezQkB2CNW0gxkc70qKbhfi2xWi7oaDs6fbIuStYjioKoU6QBz3gGkVAPCOEysfUhN4XzA9d60SL/SGFHuSyky1Y50fT2B7PoI/UmHpihk+20503vPN/na0YTkQ7+R4YtWh7MPtItUAiWZSeEkt28efkyb1BPFFaYnrfXDgv1AYeHHDE6z+1fcs4gJW9jwXY5rcuICNC66Gh

strict-peer-deps

    1rokL6V6UHCZfWr+mBKeqgKfAZFOm8muuzL7jN1R2TpPkIMwxKXStfDfaZ1Lv1AmhCrIRLfS11y3WVpwvsOw9g==

TtWdVjvUVUb11ogg0lz2+LjDwfPHPmycBFmQQMWsXx4OQHD8dbCez0czm+SRvh5kx5nbxc+aEU38ZEstHSRXYmmA66n9O/wZIi1nVwqUfLdR7fovmy9RtlzKnflrnoOKgfayqCpwVkNoeVUrvLKR6jUvgWwCZj55EwcoSHVKFHxo8mMr3lECv/Ysec7rC9ie15kpSYQ/ndggBTJmUX9aezzh1kYPi5gvzrvEf2cnkJ++e4b4gtXELJVcqzm0hpfTFaqOlxJiK98cZ7ctg3RABFUOH+CT75z46hJ1Yni7BI7jNsWql4uTP58TPOOupcOANIxy5NkNCTwwXNGmx2aIvg==

A4eh5gcmOJIr7TxE/6bxIIWHXJ8IXR7NV+ANeiKq8Zv0PMHAb2YzPJx+Tcm3nQZZ27cs453Sam7+6QuEZ8p4rPa5TZYI7xWiGRHAOwKWQ9Vzcsm4nEXHvAFd5/CNYQ8FFmchcUWEaSgaZCY/zUWHx5HKWAIVsCkTX1csH4GfQRZQTSfQa1lmXigvGDKtCmNfAgpMfQnoPV8ERFjXCtAqcB4g00meXmy5420Soyf12JlRZN/ITzAuXqLAmpA7RWCrXrzg3I9Wik3ElLgxQp2r94K4iJJsasHUVO0PPq2cZb1+4TqRBVHywuBSSz7guGMRsgzSNSxtMatpwuqnjOz1pQ==

AR4wfbmxzowmVrHFx59slutRNMhTTDP7dUpUhtXead+UiKkpSQ2UcA683U72p3JpreRT2zKm6crVq9jFawQu3icroli1onsPHbdvC/qcskBb6Fq6fKSNp71ytnXXWlwZmz8Ux9bkVo6WRv6UttxpNPgGUfmDmwCVgy0Bi2uMEeqN10NHcs9BUhbbq7vNsWsB78/+n1JV9MBrOXtX9UpqNmt+reoWKSSG3PTDIfuo1c0=

package-lock

    1rokL6V6UHCZfWr+mBKeqsSe/jT+m1WZ1v0DrTM1PSJj/XxfVgDKSffK0qBh7aFJj8hx01FJqUEYmatZ8zwz5g==

TtWdVjvUVUb11ogg0lz2+FUvkh37NOMkD4gs3nvw/nkVxwSO9LOZE3z3i6Wf1p3synNYr9SL9anb5Aha1n8ZLf8hcmdSAiVhGBrdmUomsu5yqcm2hztBh9vK3SjUXbDs9mfuyANRh9IqsQw2XPbmFX2YyF9qRPzjC6W5VM8eNfBFLP2LrINfZK696K6y3mxAy7wdsE22sNkAfDwGhnpX0cZtQ/ZUxS07bZY4T9G80Ag=

2m9y4bQffMso9TRQzGYzDf+rOe7jm/Uk86fW+Q+8980yVj2WOPAgB2YG1VYfvgsv

omit

    1rokL6V6UHCZfWr+mBKeqsWzZ9OpDtnmL+u5bZX8krMN9n40FOSNhOkKE7VVNnddJf/n60g0n21E5zOo+jFTRnNQnaM6enHeHnrKPf4omtmZddka1mbKGBrV8qjHJJhLPMPvZicgZVDmrTMnPmec1JuHSVff8lvBhhsuINyV7GtFc0gi2Bt8iTYwu97WXBbUWEWR5nxi4Po6d9Ywag5BlbNX2I5oPJL/SDH5/KjwKRgePLtedRIi2f3JikwnKq4E

ds826Rp/t6DDojgiJT1umEBsZGEntGdzCZzm8w6Y3phEZniUSyDZhpInvRFFc6uofpex/fbG3qWDUMqWYJgbhg==

ChcYTXhN7o7fBC1umm8Ric4//BjSj7ML661rcNA7NIf6/suFbgvP/kH+43JPd1nl85+lvuWrOS0QfjPzOe+ObiKdQVMvbXLoysTGdo4s5nqbkbiRaCkcNhQjbg9phtEz/wZ8eROI3MOsMEItyVz1setHfhdnfW30MYxWkhByyBs7XXuTWjekH6Qs2PqzmTgTqZWZ2UeGGHeFNJNKyQU0gemQIHt25IRtzlM3HZrxu2SXYeNo1n8UYKfBQNmY80wq

zTFkup36mTrGlpg/vaOKX5WNvf5f9p/khkZFZVCcoXuFTm7lVXHcbAl9SQpa+3m1vd9XdHKv/qVzphjeqTmnMJvMIFoycdfEKIjK4y1EWKzaQxAwcLwUnSt83LTt/8b5/KaNgOPlEPzfnuYEs/9C6DVmAV7yz2ryn1OC8v/HmSM=

IgYjDoXZ17kH4bOO4M4uISVEcg4KbQqRIBPsWX3+vi9wld5wsNnyH4vtILW+zA+x9NQPqBiW0ldU+qyZQTfwF2wrbfSXQ7Gx5jlqB47euTb6KTm+SZChChj4w8ZaioRxXSg++58C5iR1MnHger7+PYdLDFPm3yZkCEkT/IEIeg6OlJwudhaec98YrNqeo/R+dsoCDGUnUP7lPxnEBi38u4Nmfd6OqLdMDyxTOCqinmY=

ignore-scripts

    1rokL6V6UHCZfWr+mBKeqgKfAZFOm8muuzL7jN1R2TpPkIMwxKXStfDfaZ1Lv1AmhCrIRLfS11y3WVpwvsOw9g==

ab83HoAYSk+z2CLKLowe9cgFgkRk9IFL3GVJuOGNVsRdTnxdTleUoYCFr4K+OO7UQESBMo9+5V5Nd40jcPvZ9kVVUuHjKoDOKaJJDtFtHdk=

pcMhq2KmnBuGrkzj9KP16rAvTQumr8Q/MhHV36BqKdDKAarD+0XHMajuiWQ4CsVdJ7gleZtGJFR2Zyuo/zejnvI4T4xERHZsQsGHPqttqRkJhO7BBUgxLOWn3h0jCy1m1RERGURHCWZxnH1XQ+YJyMxu61NfciFocdrRquckARGsF4y6eYzYrVTNFoSPZkT8X7Jxs+JH4l8i8GOrHY7bb3qJH4jKPtPN9/5zoDcda1k1eGLDIZmnk4J6iyZUAxRPAOEjYrapuxDtrP73Xg447yzsAGO7L8/dd9eRadECuvqyKuwrhCBHv0R5csyz4TVaFQhY0S0VhQSyX7NR8dmOfXKu/8c6KCOM0m8VR4vq6CcVCYjaYi7qPWDaFhrYoQaH2iDmxDcvM/mWHit/lO/qXmb8a9iKRUtlcwWGhizYKDLALNOBmP7hVnzGEr4m0Fm1

audit

    1rokL6V6UHCZfWr+mBKeqsSe/jT+m1WZ1v0DrTM1PSJj/XxfVgDKSffK0qBh7aFJj8hx01FJqUEYmatZ8zwz5g==

M70dKZFwOlKNrYKWLScinRkOIfysRFUESfUnyC0uh7x2ib+w1D9ijrNUDpz9sNCCgs6KCUyphwDom4sVYwU5Vi/H7zMYxoTdVuMvmLUnBZ+Ser8cyQjUsRGsBTl5bkLQTapHKslX7qI1WZrFSHCEQR5JcgELeJS+Z+6djgzibcPFJluxcSJJSYUS22shrVgK8zy2iE69SukLrZLaQBUb+QPZBbaisUwPokijMN+FruHQ9dajcZyPaIrq+idazxENxDV60PCf4LLEG0nQNLnaZjaeVZrwPSNjHCaClEm8ZH/nDT/stj7o0YZ4xA2Uxik7E3OU3s9n9GrI66OMJ5SOxg==

    1rokL6V6UHCZfWr+mBKeqsSe/jT+m1WZ1v0DrTM1PSJj/XxfVgDKSffK0qBh7aFJj8hx01FJqUEYmatZ8zwz5g==

syJV5Jbn2u+HyY5a2JsOvf/v82KrRZi6tjmjPiuiiGc4vPHXDQBfiThG2Nnu+4XdLJIL3Si2sI4fegAiHn8zm453HTrnKQe2nIAWDaNBoiJBjI/WPATIPt+2YVu9c+05z//LMtTtdlUCSfFMH6ItbQ==

l/meKafp5wTfJqXfLhmzZKC5TAA/znFyqnpYvDKrMGytXKKO7Q6LOgiYKDjANilM33c51BGz6XX7N8XLRsO563zgIdRo4FwZ9pfxn7xqeeAvfll0p6p3/FRj9F/uTHuhqkUwTXP6J41W+KaGSF2cesApmoyjm+Os4Y2HRY+obzPbv/2dFwrYdRl53DujdgdU3vkt96Kup2drzz9y/We4OKW+eGPT1q+mahxvY3+z2yc=

fund

    1rokL6V6UHCZfWr+mBKeqsSe/jT+m1WZ1v0DrTM1PSJj/XxfVgDKSffK0qBh7aFJj8hx01FJqUEYmatZ8zwz5g==

0vpdts547z/dRERSRGgcTSZ1H8jIjQQBfcSoBCrh6brfAQHdewiHR8EvDo9g6MOsWdw+ix5HAvIwkn9HyV2NE3NQz/dyNCUY7+jgfHE2pAB09TAsG5+6jpqFvtfN7tuIvWlKoKuS6RdYUUOvgG7Og4r9G3DHzNbP0HiUZ+3UoViiLGs76/uD/65q0WW/medx8kXvrvmW9/wlhLW+PK9G83EWqXMKLICPL+pCjUZtiqjj/jL8v/LoxbA5Xc9RtHxTwdzDq/WxvcgG/ivravIeag==

dry-run

    1rokL6V6UHCZfWr+mBKeqgKfAZFOm8muuzL7jN1R2TpPkIMwxKXStfDfaZ1Lv1AmhCrIRLfS11y3WVpwvsOw9g==

jEX9CvLVtW1ihSHBZ3YwVZqxeE+7/WXO/aEja1pAxUaESdPrTCApeN2jYjNhxDTxnJ0s8guxvNKI9D+XQ2R2phxv7F0XP4d2B+wVdQkau3OqSLdjLihk8Hz1eruOWr+g0VWvLeWi3i1YTNCQW41EKeO8Wn7kglm++L5oz014hRl1plM1uv4zKMGlNyc+LmVxEf8c9xq+LcznMG0NvoSpHOEktK672o1sr1mNG2HNZlodKvI+RrnuL6jQgU/uRp8trm+7RgYgP6orrAx1cBBcQV38fr2qaX8RXfpkfTmg4tbZNrmBq0AmNfQMqkDzSKivGKaXIudaiZZ4zpM8gJjlcfa6IQkRVYw5ty6iwKDOQjSN69LVfN0CIBQ2qT9SETApg08MJGp7xhMOXkPdU/wyjw==

oToz3wcS9nYH/CjAZDn1ofOvyiZWHlaBa8Av+JHYQrdVZm7YXTXB/LEXAMHBLBj5VkmFQr0k/sr60gNrr3gowxYik+qkr9t0hRUZ4JaQlEyckjNfLq7PRzMreGP8/3Fng6O0GPHmKhgwwsxgNeM6jQ==

workspace

    1rokL6V6UHCZfWr+mBKeqnI1GkG+P3GYF3w9e99J+CXfQFH2qKwHHesFSdg4Cdnk4arU/K0EL+iktCFygZCyoXM5CGXlcxM9a9vXmXsOI7g=

btt6Ax9PRA9of1RcAgKDrpfuGHTdHNA50zseux//ffGA7B9oP1NCpKQrzHQM4quu7hV3jqW2LbACoiHTiUyr/+ULrxChaPAVl8Zgjp4e3dE50yRMn8bkO5HyOFjI8juYjvKqqReRVSfiONndGEy/Q1K3mgrVPhkWBgWlgM4cST01zndiOj3RthfK8PIq6Op3

Uk46X5u76+ozQ6q+eI4o1durgENcRdSB4KL9hr4DXE7sVejf8xnnkf+IDsQyBKKy

    9fEA5yXYi58mwAdk1Of/UD7dZoLOM+CwdKKleDAxW1uctJnRUJYsZy4v+TWd8P9yqChcl7ZsRzfrD1smDHt1NWGpZYNQyzdl+LA7nI9pbHR0J8ctDvkNd+MdynUAkSJcus3VYmJE45Ik6g32kVVJRjZBYGpTFvqdBFjR6/jGKD3COQUHjes87teMId+zJbl9PQJYJF/8nxTagwfFcTKROA==

GSYBwH0g799cpJSpi2QB1i0i5CmlbznGF1EN1x7/SytIbnfxxAKEO2or9SaqvBUMMWoPIt4Gk9DlDvDHw+egj1jnpGVlWz2XLK0vnA+3lTcwzZFp4XtSv0mJd/mz0tdi013TBeznvcdap6MFZ30E0W0A4kcCF+G7b6ol4qBqtO65XGDFPy6ptAr8zfkGjAJHGeVFmp8FFmRmSSuX8QgxH5cJnVy9mR+OAf/Nn0CqVk3OyFZrUjyFIu+CeaznZW2m

UX2y+i/wklZeLtS/y/a0MDbPJXwZJ/5vpLcgiCsObzIGBl7HYQiutUwU1+SLrpbi

workspaces

    1rokL6V6UHCZfWr+mBKeqvs+MxM/yeFIv1WW8InaF1bKBVKMoivWMUamyp5T+6Ns9g+4pnLcY+/6SzyiHPyVww==

YIzV09bbcVXLzjCg3v0Ut1cwdzSEiAdVHcId+dWz4q7BzOXCEH0SBEMj2R/RPV5XNbMwrkbxCKgo6vH+JZLxD7vd9BZOh74O4QRjWrLUzoY=

a1XdWzA7WfgKy0+xzseLQzuZvdBlv9MLZNZL7e1JbdABBiHpM6CjRi85q6iycXcmuidZYVVVC84HGkwdYIPXKlJnKkhEOkPcZbISP3KTblKgc4IpedT/jxCRBOzxazVb6DGutvjR95WZsT2u7e8Xf4XcQ9jOZ4wzMwD7xmz4i4g=

    HQZaDSNq5SBw1QLkSxdug0cKB7cgbeWfxSP+W9zq6c6JsEeWk9KDQIIkTfEPvVXQN2rQWMJTOKzh75Ivkmvt2KRfbvR+tTAMaiDFRLPJ75YB5Qf5XWeWlB45dGF9ngAwx0BCBBe0Yexki/GfEAKsOCgm/M5/mdb3ILqDojRDCdp9jfb3xUEsUD2gce/V/ePWMzy8/56TUZWp3JlwHLx+Yl3Z5T77UKFRLBiDBXIffBrVk3wW6gY/sdVkJwIvRkgHCOrWzhW/Ry4rAL6GPLrcYdN9kT9vgqMnzmw6MM1voMnoC2liR4P/pabkFcDtHFF+aT3vxWJEACf82cW6vhQdwomipeMUM2GAipVts2nko+7d4fMychN1/0Qvv9txoEZRPld3sVu1KNJIWGCULvMvPi9xeY1xm/JZxcDtNYdzadw=

UX2y+i/wklZeLtS/y/a0MDbPJXwZJ/5vpLcgiCsObzIGBl7HYQiutUwU1+SLrpbi

include-workspace-root

    1rokL6V6UHCZfWr+mBKeqgKfAZFOm8muuzL7jN1R2TpPkIMwxKXStfDfaZ1Lv1AmhCrIRLfS11y3WVpwvsOw9g==

LZ+48e/X1i4lkxxvwIOfecc4JgYUufW1dBKAWjstbsRamHRfyRBqw8W6r/8kCooj7WbZf8Z/cmFJWDt/Jq+NdQ==

xF0E3uGnJJX7PDR3C4rUS4pND7EJysVo9wyrSrHL7tBJP7MwHb01us3VhaAAfGH5RpdwS3328IkFDKsoPFoHPcvNiu6vY9F/r1pNRyfvwEWEAoDY3xlD73AqtfohKzRkvHeWS/FsZTxpoGeyfOw1TB0IeQUGLZtbL9ZfyW3LtI3yIGe63eekCtTZnmpidpyDjkF73lg8XSTrR5pjJ1ywZU6ZVM3I0nKNE/l82NYeK0TG2UCO9OjRR6zKRA90TwCl9syOIN8v/Cqi0ll7eelkpwgiIMXhMY4qdCxo79FGkNP4qDj22rfXeQtGWZO9GnuI

UX2y+i/wklZeLtS/y/a0MDbPJXwZJ/5vpLcgiCsObzIGBl7HYQiutUwU1+SLrpbi

    1rokL6V6UHCZfWr+mBKeqgKfAZFOm8muuzL7jN1R2TpPkIMwxKXStfDfaZ1Lv1AmhCrIRLfS11y3WVpwvsOw9g==

CpVcndY1++JeuzmvKWjC8PoiGKlBZp8agHdw4hwuMsnBGi8bQHrtUInIu4do//df8HmozdsRhigMnhKj2iGavxpDu6Uy+JvALzNxUv0ctptFEkJ1NLwluoTd2ex39oTTbDd5m/3ZCB/gG5UzI/lvb3Ozc3wtbgsY4Y37XhULDGv3IcbR7hu8O6XFa7Osz7zoBwJcERmbKvtq8EqpBZf55ec11MpHMNPHirUuyfJccfw=