add key and pem

This commit is contained in:
novice.li 2024-01-27 22:10:28 +08:00
parent c6512ffe31
commit f8ee182ea8
5 changed files with 2807 additions and 3 deletions

1251
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -4,4 +4,37 @@ version = "0.1.0"
edition = "2021"
[dependencies]
[dependencies.tokio]
version = "1.35.1"
features = ["full"]
[dependencies.axum]
version = "0.7.4"
[dependencies.base64]
version = "0.21.7"
[dependencies.sha1]
version = "0.10.6"
[dependencies.rsa]
version = "0.9.6"
features = ["pem", "sha1", "pkcs5", "std"]
[dependencies.serde]
version = "1.0.196"
features = ["derive"]
[dependencies.serde_json]
version = "1.0.112"
[dependencies.tower]
version = "0.4.13"
[dependencies.tower-http]
version = "0.5.1"

713
assets/images/icons.svg Normal file
View File

@ -0,0 +1,713 @@
<svg width="36" height="1080" viewBox="0 0 36 1080" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M26.6949 142.457L34.4572 121.934L28.2857 120.535L26.6949 142.457Z" fill="#087CFA"/>
<path d="M34.3611 135.943L26.6948 142.457L15.7543 139.639L34.3611 135.943Z" fill="url(#paint0_linear)"/>
<path d="M5.64003 124.622L2.14288 114.617L19.6046 109.543L5.64003 124.622Z" fill="url(#paint1_linear)"/>
<path d="M30.2606 128.599L25.3611 120.237L25.4537 120.178L19.6046 109.543L1.54285 129.048V142.457L34.3611 135.943L30.2606 128.599Z" fill="url(#paint2_linear)"/>
<path d="M7.71429 115.714H28.2857V136.286H7.71429V115.714Z" fill="black"/>
<path d="M10.2789 132.398H17.9932V133.683H10.2789V132.398Z" fill="white"/>
<path d="M13.0286 118.286H14.5714L17.856 126.01H16.0937L15.408 124.296H12.1509L11.4651 126.01H9.75085L13.0286 118.286ZM14.8046 122.801L13.776 120.312L12.7474 122.801H14.8046Z" fill="white"/>
<path d="M17.5852 122.184V122.163C17.5757 121.63 17.6744 121.1 17.8754 120.605C18.0763 120.111 18.3753 119.662 18.7543 119.286C19.1333 118.911 19.5845 118.615 20.0806 118.419C20.5768 118.222 21.1076 118.128 21.6412 118.142C22.2081 118.113 22.7747 118.205 23.3035 118.411C23.8324 118.618 24.3117 118.934 24.7097 119.338L23.6194 120.597C23.0975 120.054 22.3833 119.739 21.6309 119.719C20.3212 119.719 19.3749 120.806 19.3749 122.139V122.163C19.3749 123.497 20.2972 124.608 21.6309 124.608C22.5189 124.608 23.064 124.265 23.688 123.696L24.7646 124.8C24.3708 125.254 23.8795 125.613 23.3273 125.851C22.7752 126.088 22.1765 126.198 21.576 126.171C21.0498 126.18 20.5272 126.083 20.0392 125.886C19.5513 125.689 19.108 125.395 18.7357 125.023C18.3634 124.651 18.0696 124.208 17.872 123.721C17.6744 123.233 17.5768 122.71 17.5852 122.184" fill="white"/>
<path d="M13.3749 158.414L14.088 145.543L21.5726 149.691L13.3749 158.414Z" fill="url(#paint3_linear)"/>
<path d="M13.3748 158.414L14.088 145.543L4.58399 151.533L1.54285 169.742L13.3748 158.414Z" fill="url(#paint4_linear)"/>
<path d="M33.8023 155.407L29.568 146.798L21.5726 149.691L13.3748 158.414L1.54285 169.742L12.216 177.511L25.632 165.411L33.8023 155.407Z" fill="url(#paint5_linear)"/>
<path d="M28.2857 164.414V172.286H15.36L21.0411 176.681L29.2697 178.457L34.4571 166.714L28.2857 164.414Z" fill="url(#paint6_linear)"/>
<path d="M7.71429 151.714H28.2857V172.286H7.71429V151.714Z" fill="black"/>
<path d="M10.2789 168.398H17.9932V169.683H10.2789V168.398Z" fill="white"/>
<path d="M18.0172 154.265H19.7314V160.57H23.1086V162H18.0172V154.265Z" fill="white"/>
<path d="M9.73029 158.184V158.163C9.72087 157.63 9.81957 157.099 10.0205 156.605C10.2214 156.11 10.5203 155.661 10.8992 155.285C11.2782 154.909 11.7293 154.614 12.2255 154.417C12.7217 154.219 13.2526 154.125 13.7863 154.138C14.353 154.11 14.9192 154.203 15.4475 154.41C15.9758 154.617 16.4543 154.933 16.8514 155.338L15.7714 156.597C15.2483 156.054 14.5329 155.739 13.7794 155.719C12.4697 155.719 11.5269 156.806 11.5269 158.139V158.163C11.5269 159.497 12.4491 160.608 13.7794 160.608C14.6709 160.608 15.2126 160.265 15.8366 159.696L16.9063 160.8C16.5127 161.255 16.0209 161.615 15.468 161.853C14.915 162.09 14.3154 162.199 13.7143 162.171C13.1886 162.179 12.6668 162.082 12.1796 161.884C11.6925 161.686 11.25 161.393 10.8784 161.021C10.5068 160.649 10.2138 160.206 10.0165 159.719C9.81931 159.232 9.72197 158.71 9.73029 158.184" fill="white"/>
<path d="M32.3588 186.658L34.4571 200.133L30.5794 202.389L32.3588 186.658Z" fill="url(#paint7_linear)"/>
<path d="M32.3589 186.658L20.5749 181.543L17.2869 184.272L32.3589 186.658Z" fill="url(#paint8_linear)"/>
<path d="M23.784 214.457L5.49945 199.889L1.82745 210.933L23.784 214.457Z" fill="url(#paint9_linear)"/>
<path d="M26.3314 205.251L1.54285 196.735L23.784 214.457L26.3314 205.251Z" fill="url(#paint10_linear)"/>
<path d="M1.54285 181.776V196.735L30.1063 206.551L32.3588 186.658L1.54285 181.776Z" fill="url(#paint11_linear)"/>
<path d="M7.71429 187.673H28.2857V208.245H7.71429V187.673Z" fill="black"/>
<path d="M9.80231 190.347H13.1246C15.7989 190.347 17.6503 192.185 17.6503 194.582V194.606C17.6503 197.006 15.7989 198.864 13.1246 198.864H9.80231V190.347ZM11.6743 192.038V197.181H13.1246C13.4648 197.2 13.8053 197.148 14.1239 197.027C14.4426 196.907 14.7324 196.72 14.9743 196.481C15.2162 196.241 15.4048 195.952 15.528 195.635C15.6512 195.317 15.7061 194.977 15.6892 194.637V194.606C15.7069 194.264 15.6527 193.923 15.5301 193.603C15.4075 193.284 15.2193 192.994 14.9776 192.752C14.7359 192.51 14.4461 192.321 14.1269 192.198C13.8077 192.075 13.4662 192.02 13.1246 192.038H11.6743Z" fill="white"/>
<path d="M17.9829 194.63V194.606C17.9782 194.021 18.0906 193.442 18.3136 192.902C18.5366 192.362 18.8656 191.872 19.2811 191.462C19.6966 191.051 20.1902 190.728 20.7328 190.511C21.2754 190.294 21.8559 190.189 22.44 190.2C23.6657 190.135 24.8677 190.555 25.7863 191.369L24.6069 192.792C24.0074 192.223 23.2081 191.913 22.3817 191.928C21.0103 191.928 19.9337 193.135 19.9337 194.582V194.606C19.9337 196.162 21.0069 197.307 22.5154 197.307C23.1438 197.328 23.7628 197.151 24.2846 196.8V195.579H22.3989V193.961H26.0983V197.661C25.0893 198.537 23.7967 199.017 22.4606 199.011C19.8069 199.011 17.9829 197.143 17.9829 194.63V194.63Z" fill="white"/>
<path d="M9.60687 204.384H17.3212V205.67H9.60687V204.384Z" fill="white"/>
<path d="M30.5348 230.273L34.4571 238.971L27.744 250.457L23.6091 240.418L30.5348 230.273Z" fill="url(#paint12_linear)"/>
<path d="M23.6092 240.418L27.744 250.457L17.3417 246.881L23.6092 240.418Z" fill="#B74AF7"/>
<path d="M24.7303 226.838L22.5977 217.543H10.7726L1.54285 231.662L4.2137 238.149L1.54285 244.07L20.6571 227.808L24.7303 226.838Z" fill="url(#paint13_linear)"/>
<path d="M34.4571 224.53L20.6571 227.808L1.54285 244.07L13.872 250.457L23.6091 240.418L34.4571 224.53Z" fill="url(#paint14_linear)"/>
<path d="M7.71429 223.714H28.2857V244.286H7.71429V223.714Z" fill="black"/>
<path d="M9.64459 240.429H17.3589V241.714H9.64459V240.429Z" fill="white"/>
<path d="M9.06515 230.678V230.654C9.06319 230.073 9.17746 229.498 9.40123 228.962C9.625 228.426 9.95376 227.94 10.3681 227.533C10.7825 227.126 11.2741 226.806 11.8141 226.591C12.354 226.377 12.9313 226.273 13.512 226.286C14.7333 226.221 15.9311 226.639 16.848 227.448L15.672 228.867C15.0758 228.297 14.2786 227.986 13.4537 228C12.0823 228 11.016 229.2 11.016 230.64V230.664C11.016 232.217 12.0823 233.355 13.5874 233.355C14.2117 233.374 14.8259 233.195 15.3429 232.845V231.624H13.464V230.013H17.1429V233.695C16.1373 234.567 14.85 235.046 13.5189 235.042C10.8823 235.042 9.06515 233.187 9.06515 230.678V230.678Z" fill="white"/>
<path d="M17.9315 230.678V230.654C17.9335 230.068 18.053 229.488 18.2829 228.949C18.5128 228.409 18.8485 227.922 19.2701 227.515C19.6917 227.107 20.1906 226.789 20.7375 226.578C21.2843 226.367 21.8679 226.267 22.4537 226.286C25.0697 226.286 26.9486 228.237 26.9486 230.647V230.671C26.9493 231.258 26.832 231.84 26.6035 232.382C26.375 232.923 26.0401 233.413 25.6185 233.822C25.197 234.232 24.6975 234.552 24.1498 234.765C23.602 234.977 23.017 235.077 22.4297 235.059C19.8103 235.042 17.9315 233.091 17.9315 230.678V230.678ZM24.9977 230.678V230.654C25.0083 230.31 24.9497 229.967 24.8255 229.646C24.7012 229.325 24.5139 229.032 24.2744 228.784C24.035 228.537 23.7484 228.34 23.4315 228.205C23.1147 228.071 22.774 228.001 22.4297 228C22.088 227.999 21.7496 228.067 21.4348 228.2C21.12 228.332 20.8353 228.528 20.5977 228.773C20.3601 229.019 20.1746 229.31 20.0522 229.629C19.9299 229.948 19.8733 230.288 19.8857 230.63V230.654C19.8738 230.999 19.9314 231.344 20.0552 231.666C20.179 231.989 20.3664 232.283 20.6063 232.532C20.8462 232.781 21.1336 232.979 21.4516 233.115C21.7696 233.25 22.1115 233.32 22.4572 233.321C22.7998 233.322 23.139 233.253 23.4544 233.119C23.7697 232.986 24.0547 232.789 24.2921 232.542C24.5295 232.295 24.7144 232.003 24.8357 231.682C24.957 231.362 25.0121 231.02 24.9977 230.678V230.678Z" fill="white"/>
<path d="M6.60683 276.758L1.76569 272.935L4.61483 267.658L8.89711 269.091L6.60683 276.758Z" fill="url(#paint15_linear)"/>
<path d="M34.3097 262.317L33.7166 281.379L21.0377 286.457L14.1326 282L34.3097 262.317Z" fill="#087CFA"/>
<path d="M34.3097 262.317L28.0354 268.437L19.9783 258.552L23.9554 254.081L34.3097 262.317Z" fill="url(#paint16_linear)"/>
<path d="M14.1326 282L4.04916 285.645L6.16116 278.249L8.89716 269.091L1.39545 266.582L6.16116 253.543L16.9337 254.815L28.0354 268.437L14.1326 282Z" fill="url(#paint17_linear)"/>
<path d="M7.71429 259.714H28.2857V280.286H7.71429V259.714Z" fill="black"/>
<path d="M10.2789 276.398H17.9932V277.683H10.2789V276.398Z" fill="white"/>
<path d="M14.1292 263.698V262.293H10.2926V263.698H11.3692V268.553H10.2926V269.959H14.1292V268.553H13.056V263.698H14.1292Z" fill="white"/>
<path d="M17.808 270.069C17.2851 270.085 16.7668 269.967 16.3028 269.726C15.9218 269.521 15.5822 269.246 15.3017 268.917L16.3611 267.734C16.5547 267.952 16.7787 268.141 17.0263 268.296C17.2475 268.433 17.5032 268.504 17.7634 268.502C17.9026 268.508 18.0416 268.485 18.1711 268.434C18.3006 268.382 18.4176 268.304 18.5143 268.203C18.7208 267.924 18.8183 267.579 18.7886 267.233V262.286H20.5028V267.309C20.5105 267.715 20.4467 268.12 20.3143 268.505C20.2015 268.825 20.0172 269.115 19.7754 269.352C19.5335 269.59 19.2406 269.769 18.9188 269.877C18.5535 270 18.1697 270.061 17.784 270.055" fill="white"/>
<path d="M19.7109 295.673L18.6137 292.354L7.15885 289.886L1.54285 296.239L7.71428 299.397V295.673H19.7109Z" fill="url(#paint18_linear)"/>
<path d="M7.71428 297.833L1.54285 296.239L4.67999 315.082L7.70399 315.058L7.71428 297.833Z" fill="url(#paint19_linear)"/>
<path d="M28.2857 295.673H17.5508L21.864 291.84L30.1748 293.383L34.4571 304.025L28.2891 310.152L28.2857 295.673Z" fill="url(#paint20_linear)"/>
<path d="M28.2926 303.885L28.2857 316.245H10.6149L11.0709 318.933L22.1657 322.8L34.4572 315.442L28.2926 303.885Z" fill="url(#paint21_linear)"/>
<path d="M7.71429 295.714H28.2857V316.286H7.71429V295.714Z" fill="black"/>
<path d="M10.2789 312.398H17.9932V313.683H10.2789V312.398Z" fill="white"/>
<path d="M17.0057 304.893L18.0103 303.689C18.6414 304.272 19.4625 304.606 20.3212 304.629C21.0069 304.629 21.4389 304.351 21.4389 303.898V303.878C21.4389 303.446 21.1715 303.223 19.8789 302.894C18.3189 302.496 17.3143 302.064 17.3143 300.528V300.504C17.3143 299.102 18.4423 298.173 20.0229 298.173C21.0663 298.154 22.083 298.502 22.896 299.157L22.0115 300.439C21.4334 299.987 20.7315 299.721 19.9989 299.678C19.3475 299.678 19.0046 299.976 19.0046 300.363V300.387C19.0046 300.895 19.3475 301.073 20.6743 301.416C22.2446 301.827 23.1292 302.39 23.1292 303.737V303.761C23.1292 305.297 21.9566 306.161 20.2869 306.161C19.0783 306.166 17.9103 305.725 17.0057 304.923" fill="white"/>
<path d="M10.2857 298.286H13.44C15.2777 298.286 16.392 299.376 16.392 300.95V300.97C16.392 302.753 15.0034 303.679 13.2754 303.679H12V305.99H10.2857V298.286ZM13.3234 302.17C14.1703 302.17 14.6674 301.666 14.6674 301.005V300.984C14.6674 300.223 14.1394 299.815 13.296 299.815H12V302.17H13.3234Z" fill="white"/>
<path d="M24.6206 330.737L34.2378 338.736L30.7749 345.782L24.9772 344.174H19.9612L24.6206 330.737Z" fill="url(#paint22_linear)"/>
<path d="M14.9314 335.931L13.0697 345.782L12.8914 349.128L8.1977 351.161L1.54285 351.878L3.56228 330.597L15.6206 325.543L23.0503 330.415L14.9314 335.931Z" fill="url(#paint23_linear)"/>
<path d="M14.9314 335.931L15.8366 354.912L12.8297 358.457L1.54285 351.878L10.8103 338.067L14.9314 335.931Z" fill="url(#paint24_linear)"/>
<path d="M27.3497 334.546H15.9463L26.0229 325.543L27.3497 334.546Z" fill="url(#paint25_linear)"/>
<path d="M34.4572 354.987L24.4183 358.395L11.0503 354.631L14.9314 335.931L16.4811 334.546L24.6206 333.782L23.8834 341.955L30.3566 339.446L34.4572 354.987Z" fill="url(#paint26_linear)"/>
<path d="M7.71429 331.714H28.2857V352.286H7.71429V331.714Z" fill="black"/>
<path d="M10.2789 348.398H17.9932V349.683H10.2789V348.398Z" fill="white"/>
<path d="M10.2857 334.286H13.44C15.2777 334.286 16.392 335.376 16.392 336.95V336.97C16.392 338.753 15.0034 339.679 13.2754 339.679H12V341.99H10.2857V334.286ZM13.3234 338.17C14.1703 338.17 14.6674 337.666 14.6674 337.005V336.984C14.6674 336.223 14.1394 335.815 13.296 335.815H12V338.17H13.3234Z" fill="white"/>
<path d="M17.3109 338.163V338.143C17.301 337.614 17.3983 337.089 17.5969 336.599C17.7956 336.11 18.0914 335.665 18.4667 335.293C18.8419 334.92 19.2887 334.628 19.7801 334.433C20.2715 334.238 20.7973 334.145 21.3257 334.159C21.8872 334.13 22.4482 334.222 22.9719 334.426C23.4955 334.631 23.9698 334.944 24.3634 335.345L23.2869 336.59C22.7687 336.053 22.0611 335.741 21.3154 335.719C20.016 335.719 19.08 336.799 19.08 338.119V338.143C19.08 339.463 19.9954 340.563 21.3154 340.563C22.1966 340.563 22.7349 340.221 23.3417 339.662L24.4183 340.749C24.0306 341.202 23.5448 341.561 22.9976 341.799C22.4505 342.036 21.8565 342.146 21.2606 342.12C20.7391 342.128 20.2214 342.031 19.7382 341.835C19.255 341.639 18.8161 341.347 18.4477 340.978C18.0793 340.609 17.7888 340.17 17.5935 339.686C17.3982 339.203 17.3021 338.685 17.3109 338.163" fill="white"/>
<path d="M25.6148 368.887L13.9474 383.63L11.3143 394.409H29.0263L34.4571 372.339L25.6148 368.887Z" fill="url(#paint27_linear)"/>
<path d="M24.576 361.495H7.00456L1.54285 383.63H27.6891L24.576 361.495Z" fill="url(#paint28_linear)"/>
<path d="M25.4914 367.755L24.576 361.495L22.6011 367.755H25.4914Z" fill="url(#paint29_linear)"/>
<path d="M7.71429 367.714H28.2857V388.286H7.71429V367.714Z" fill="black"/>
<path d="M10.2789 384.398H17.9932V385.683H10.2789V384.398Z" fill="white"/>
<path d="M18.6994 376.347H17.8594V374.935H18.9429L19.2171 373.296H18.2469V371.88H19.4606L19.7383 370.265H21.1989L20.9143 371.88H22.5257L22.8034 370.269H24.2606L23.9863 371.88H24.8263V373.296H23.7429L23.4651 374.935H24.4389V376.347H23.2217L22.9337 378.007H21.4766L21.7611 376.347H20.16L19.8857 378.007H18.4114L18.6994 376.347ZM22.0046 374.935L22.2857 373.296H20.6777L20.4034 374.935H22.0046Z" fill="white"/>
<path d="M10.2865 370.265H13.8316C14.2411 370.238 14.6517 370.294 15.0393 370.429C15.4268 370.564 15.7833 370.775 16.0876 371.05C16.3119 371.285 16.4861 371.563 16.5999 371.867C16.7136 372.171 16.7645 372.495 16.7494 372.819V372.84C16.776 373.388 16.6139 373.929 16.2899 374.373C15.9794 374.77 15.5619 375.071 15.0865 375.24L16.9756 378.003H14.9871L13.3859 375.627H12.0008V378.003H10.2865V370.265ZM13.7151 374.037C14.0685 374.054 14.4157 373.939 14.6888 373.714C14.8003 373.615 14.8888 373.492 14.948 373.354C15.0072 373.217 15.0358 373.068 15.0316 372.919V372.898C15.0444 372.743 15.02 372.586 14.9604 372.442C14.9007 372.298 14.8077 372.17 14.6888 372.069C14.4014 371.868 14.0547 371.77 13.7048 371.791H12.0008V374.023L13.7151 374.037Z" fill="white"/>
<path d="M28.5737 505.543L19.1554 508.917L11.7325 505.543L9.28797 511.701H7.7074V529.879L30.5657 530.078L34.1143 511.975L28.5737 505.543Z" fill="url(#paint30_linear)"/>
<path d="M28.2926 517.354L13.2515 508.44L28.2926 526.07V517.354Z" fill="url(#paint31_linear)"/>
<path d="M14.9006 537.6L27.2023 535.961L25.2926 532.289H28.2926V526.07L13.248 508.413L1.20001 511.371L1.21373 528.651L8.13944 538.457L14.8629 537.603L14.8937 537.6H14.9006Z" fill="url(#paint32_linear)"/>
<path d="M7.71429 511.714H28.2857V532.286H7.71429V511.714Z" fill="black"/>
<path d="M10.2789 528.398H17.9932V529.684H10.2789V528.398Z" fill="white"/>
<path d="M17.9006 514.275H19.7349L21.768 517.546L23.8011 514.275H25.6354V522.007H23.9451V516.96L21.768 520.262H21.7234L19.5703 516.994V522.007H17.9006V514.275Z" fill="white"/>
<path d="M10.2858 514.286H13.8172C14.7955 514.286 15.5452 514.546 16.0663 515.067C16.2901 515.302 16.4641 515.579 16.5779 515.883C16.6916 516.186 16.7427 516.509 16.7281 516.833V516.857C16.7531 517.403 16.591 517.941 16.2686 518.383C15.96 518.779 15.545 519.08 15.0721 519.25L16.9612 521.993H14.9726L13.3715 519.624H11.9692V521.997H10.2858V514.286ZM13.7143 518.026C14.0584 518.042 14.3961 517.931 14.6641 517.714C14.7756 517.615 14.8641 517.492 14.9233 517.354C14.9825 517.217 15.011 517.068 15.0069 516.919V516.898C15.0197 516.743 14.9952 516.587 14.9356 516.444C14.876 516.3 14.7829 516.173 14.6641 516.072C14.3777 515.872 14.0323 515.774 13.6835 515.794H11.9761V518.013L13.7143 518.026Z" fill="white"/>
<path d="M5.97942 571.289L1.54285 544.992L9.74742 541.587L14.9863 544.701L19.7863 542.112L29.7874 545.952L24.1783 574.457L5.97942 571.289Z" fill="url(#paint33_linear)"/>
<path d="M34.4572 552.689L30.2092 542.198L22.5018 541.543L10.6046 552.974L13.8069 567.706L19.7863 571.899L34.4572 563.194L30.8572 556.443L34.4572 552.689Z" fill="url(#paint34_linear)"/>
<path d="M27.864 551.126L30.8571 556.444L34.4571 552.689L31.8137 546.154L27.864 551.126Z" fill="url(#paint35_linear)"/>
<path d="M7.71429 547.714H28.2857V568.286H7.71429V547.714Z" fill="black"/>
<path d="M10.2789 564.398H17.9932V565.683H10.2789V564.398Z" fill="white"/>
<path d="M17.5817 550.275L16.4331 554.777L15.12 550.275H13.8137L12.4971 554.777L11.352 550.275H9.552L11.7566 557.993H13.2034L14.4651 553.526L15.7131 557.993H17.1771L19.3783 550.275H17.5817Z" fill="white"/>
<path d="M19.7006 556.893L20.7052 555.689C21.3362 556.272 22.1574 556.606 23.016 556.629C23.7018 556.629 24.1338 556.354 24.1338 555.898V555.878C24.1338 555.446 23.8663 555.226 22.5738 554.894C21.0138 554.496 20.0092 554.064 20.0092 552.528V552.504C20.0092 551.102 21.1372 550.173 22.7178 550.173C23.7611 550.154 24.7779 550.502 25.5909 551.157L24.7063 552.439C24.1283 551.987 23.4263 551.721 22.6938 551.678C22.0423 551.678 21.6995 551.976 21.6995 552.363V552.387C21.6995 552.895 22.0423 553.073 23.3692 553.416C24.9395 553.827 25.824 554.39 25.824 555.741V555.761C25.824 557.297 24.6515 558.161 22.9818 558.161C21.7731 558.166 20.605 557.725 19.7006 556.923" fill="white"/>
<path d="M4 580H32V608H4V580Z" fill="url(#paint36_linear)"/>
<path d="M32 580V608H4L32 580V580Z" fill="black"/>
<path d="M20 602H28V604H20V602Z" fill="white"/>
<path d="M32.0994 617.434C31.6891 617.218 31.2456 617.073 30.7872 617.003C30.4995 616.971 12.995 613.609 12.0685 613.554C11.6139 613.528 11.1577 613.548 10.7072 613.615C2.56674 614.827 0.51945 624.737 7.23423 628.877C8.81627 629.85 10.715 630.17 12.5286 629.769C15.7088 629.076 30.042 625.537 30.9767 625.334C34.9542 624.47 35.7828 619.374 32.0994 617.434Z" fill="url(#paint37_linear)"/>
<path d="M32.2701 632.682C31.5817 631.91 19.1815 617.816 16.5311 615.517C15.9783 615.041 15.3726 614.63 14.7257 614.292C13.4918 613.646 12.0846 613.409 10.7072 613.615C3.35955 614.709 0.976019 622.889 5.51922 627.516C6.00943 628.016 19.66 643.193 19.7774 643.341C20.4266 644.154 21.2136 644.847 22.1026 645.388C23.6988 646.37 25.6146 646.693 27.4446 646.288C34.1681 644.824 36.3381 637.243 32.2701 632.682Z" fill="url(#paint38_linear)"/>
<path d="M29.661 630.669C29.3879 630.526 29.1049 630.402 28.8141 630.298C28.5844 630.216 10.1394 624.394 9.73239 624.292C9.04823 624.12 8.33704 624.086 7.63946 624.189C1.01985 625.175 -0.644814 633.234 4.81552 636.6C6.09869 637.391 22.918 645.838 23.3492 645.999C24.6579 646.488 26.0802 646.589 27.4446 646.288C35.3058 644.576 36.942 634.503 29.661 630.669Z" fill="url(#paint39_linear)"/>
<path d="M32.0993 617.434C31.4695 617.104 30.7512 616.983 30.048 617.088C29.6874 617.14 29.3336 617.232 28.9927 617.361C27.3442 617.989 6.24894 624.49 5.64569 624.752C4.50546 625.224 3.51931 626.004 2.79804 627.005C2.07677 628.006 1.64898 629.188 1.56274 630.419C1.47649 631.65 1.73521 632.881 2.30983 633.973C2.88444 635.064 3.75217 635.974 4.81552 636.6C6.102 637.392 7.646 637.652 9.12084 637.326C9.69244 637.203 10.2481 637.015 10.777 636.766C13.3871 635.529 31.9219 625.052 32.318 624.826C32.9847 624.455 33.5366 623.908 33.9135 623.244C34.2904 622.581 34.4779 621.826 34.4553 621.064C34.4327 620.301 34.2011 619.559 33.7856 618.919C33.3701 618.279 32.7868 617.765 32.0993 617.434V617.434Z" fill="url(#paint40_linear)"/>
<path d="M28.2856 619.714H7.71436V640.286H28.2856V619.714Z" fill="black"/>
<path d="M17.9927 636.399H10.2784V637.684H17.9927V636.399Z" fill="white"/>
<path d="M10.2784 622.259H13.2963C15.7282 622.259 17.4084 623.928 17.4084 626.106V626.128C17.4084 628.306 15.7282 629.997 13.2963 629.997H10.2784V622.259ZM11.9808 623.795V628.46H13.2963C13.6054 628.479 13.915 628.432 14.2048 628.322C14.4946 628.213 14.7581 628.044 14.9782 627.826C15.1982 627.608 15.3699 627.346 15.482 627.057C15.594 626.768 15.644 626.459 15.6287 626.15V626.128C15.6445 625.817 15.595 625.507 15.4834 625.217C15.3717 624.927 15.2005 624.663 14.9807 624.443C14.7608 624.224 14.4973 624.052 14.2072 623.941C13.9171 623.829 13.6067 623.78 13.2963 623.795H11.9808Z" fill="white"/>
<path d="M18.5105 622.266H20.2165V628.569H23.6002V630H18.5105V622.266Z" fill="white"/>
<path d="M9.92231 678.007L3.02402 659.866C2.59271 658.734 2.43892 657.514 2.57552 656.31C2.71212 655.105 3.13513 653.951 3.80917 652.944C4.48321 651.936 5.38868 651.105 6.44984 650.519C7.511 649.934 8.69699 649.611 9.9086 649.577C11.5409 649.535 13.1432 650.021 14.4774 650.962C15.8116 651.904 16.8065 653.25 17.3143 654.802L23.352 673.245C24.5692 676.965 11.2869 681.6 9.92231 678.007V678.007Z" fill="url(#paint41_linear)"/>
<path d="M30.6205 672.25L13.7143 681.394C12.7253 681.929 11.6367 682.254 10.5163 682.35C9.39603 682.445 8.26813 682.308 7.2031 681.948C6.13806 681.587 5.15879 681.011 4.32647 680.255C3.49414 679.499 2.82665 678.58 2.36569 677.554C1.91129 676.548 1.66494 675.46 1.64144 674.356C1.61795 673.252 1.81778 672.155 2.22895 671.13C2.64012 670.106 3.25414 669.175 4.03414 668.393C4.81414 667.612 5.74403 666.996 6.76797 666.583L24.5965 659.383C26.0702 658.788 27.7009 658.705 29.2272 659.148C30.7535 659.591 32.0869 660.533 33.0137 661.824C33.6058 662.645 34.0159 663.583 34.2166 664.576C34.4172 665.568 34.4039 666.592 34.1774 667.579C33.9509 668.566 33.5164 669.493 32.9031 670.298C32.2897 671.104 31.5116 671.769 30.6205 672.25V672.25Z" fill="url(#paint42_linear)"/>
<path d="M24.2331 672.408L6.77485 663.97C5.68392 663.442 4.7353 662.66 4.0082 661.69C3.2811 660.72 2.79665 659.59 2.59529 658.395C2.39394 657.199 2.48153 655.973 2.85076 654.819C3.21998 653.664 3.86012 652.614 4.71771 651.758C5.87285 650.603 7.37045 649.853 8.98694 649.619C10.6034 649.386 12.2521 649.681 13.6869 650.462L30.7269 659.719C32.3754 660.616 33.6041 662.127 34.1469 663.924C34.6898 665.72 34.5032 667.659 33.6274 669.319C32.7672 670.951 31.3069 672.185 29.5544 672.761C27.8019 673.338 25.8941 673.211 24.2331 672.408Z" fill="url(#paint43_linear)"/>
<path d="M6.37031 681.713C5.21702 681.187 4.20026 680.402 3.39872 679.42C2.59719 678.438 2.03237 677.285 1.74797 676.05C1.46358 674.814 1.46724 673.53 1.75867 672.296C2.0501 671.062 2.62148 669.912 3.4286 668.935L18.1989 651.086C18.7734 650.39 19.561 649.902 20.4401 649.697C21.3193 649.493 22.2413 649.583 23.064 649.954C24.0084 650.38 24.7584 651.145 25.1654 652.097C25.5724 653.05 25.6068 654.12 25.2617 655.097L17.5612 676.947C17.1832 678.028 16.5839 679.018 15.8017 679.854C15.0194 680.689 14.0713 681.353 13.0181 681.801C11.9648 682.25 10.8296 682.474 9.68488 682.459C8.54021 682.443 7.41129 682.189 6.37031 681.713V681.713Z" fill="url(#paint44_linear)"/>
<path d="M7.71429 655.714H28.2857V676.286H7.71429V655.714Z" fill="black"/>
<path d="M10.2788 672.398H17.9931V673.683H10.2788V672.398Z" fill="white"/>
<path d="M12.3531 659.825H9.99768V658.255H16.4091V659.825H14.0537V665.993H12.3531V659.825Z" fill="white"/>
<path d="M17.0502 662.146V662.126C17.0403 661.595 17.1382 661.067 17.3379 660.575C17.5376 660.083 17.8351 659.636 18.2123 659.262C18.5895 658.888 19.0386 658.594 19.5324 658.399C20.0263 658.203 20.5547 658.11 21.0857 658.125C21.6495 658.096 22.213 658.187 22.7391 658.392C23.2651 658.597 23.7416 658.911 24.1371 659.314L23.0537 660.562C22.5333 660.022 21.8216 659.708 21.072 659.688C19.7691 659.688 18.8297 660.771 18.8297 662.088V662.112C18.8297 663.439 19.7485 664.543 21.072 664.543C21.9565 664.543 22.4982 664.2 23.1085 663.638L24.192 664.731C23.801 665.185 23.3121 665.544 22.7622 665.782C22.2122 666.02 21.6156 666.129 21.0171 666.103C20.4947 666.111 19.976 666.015 19.4917 665.819C19.0073 665.623 18.5672 665.332 18.1973 664.963C17.8274 664.594 17.5353 664.155 17.3383 663.671C17.1412 663.187 17.0433 662.669 17.0502 662.146" fill="white"/>
<path d="M9.94282 718.399L31.296 714.744C32.073 714.612 32.7912 714.246 33.3543 713.694C33.9175 713.143 34.2986 712.432 34.4468 711.658C34.5464 711.144 34.5405 710.615 34.4296 710.103C34.3186 709.591 34.1049 709.107 33.8013 708.68C33.4978 708.253 33.1107 707.892 32.6635 707.619C32.2164 707.346 31.7185 707.166 31.2 707.091L9.73025 704.078C8.77129 703.943 7.79504 704.002 6.85914 704.25C5.92324 704.499 5.04669 704.933 4.28124 705.526C3.51579 706.119 2.87697 706.86 2.40251 707.704C1.92805 708.548 1.62757 709.479 1.51882 710.441C1.39194 711.558 1.52679 712.69 1.9127 713.745C2.2986 714.801 2.92498 715.753 3.74225 716.525C4.55952 717.297 5.54525 717.868 6.62145 718.194C7.69765 718.519 8.83476 718.589 9.94282 718.399V718.399Z" fill="url(#paint45_linear)"/>
<path d="M24.2674 687.113L3.84687 705.943C3.07765 706.652 2.47147 707.52 2.07016 708.486C1.66884 709.453 1.48195 710.495 1.52237 711.54C1.56278 712.586 1.82955 713.61 2.30426 714.543C2.77897 715.475 3.45033 716.294 4.27201 716.942C5.70171 718.066 7.50268 718.611 9.31611 718.468C11.1295 718.324 12.8223 717.503 14.0572 716.167L32.9143 695.76C33.4762 695.15 33.9081 694.432 34.184 693.65C34.4598 692.867 34.5738 692.037 34.519 691.21C34.4641 690.382 34.2417 689.574 33.865 688.835C33.4884 688.096 32.9655 687.442 32.328 686.911C31.1883 685.961 29.7425 685.459 28.2597 685.496C26.7768 685.533 25.3581 686.108 24.2674 687.113V687.113Z" fill="url(#paint46_linear)"/>
<path d="M28.3475 714.031L4.14517 696.631C3.40125 696.095 2.78675 695.4 2.34675 694.595C1.90675 693.791 1.65243 692.898 1.60246 691.983C1.55248 691.067 1.7081 690.152 2.05792 689.305C2.40774 688.458 2.94286 687.699 3.62402 687.086C4.78388 686.041 6.29813 685.478 7.85864 685.51C9.41914 685.543 10.9086 686.169 12.024 687.261L33.336 708.093C33.7091 708.457 34.0048 708.894 34.2057 709.375C34.4066 709.857 34.5085 710.374 34.5053 710.896C34.5021 711.418 34.3939 711.933 34.1871 712.413C33.9803 712.892 33.6792 713.324 33.3017 713.685C32.6456 714.31 31.7916 714.688 30.887 714.751C29.9825 714.814 29.0842 714.559 28.3475 714.031V714.031Z" fill="url(#paint47_linear)"/>
<path d="M7.71429 691.714H28.2857V712.286H7.71429V691.714Z" fill="black"/>
<path d="M10.2787 708.398H17.993V709.683H10.2787V708.398Z" fill="white"/>
<path d="M12.5074 698.942L9.53479 694.255H11.5268L13.3714 697.361L15.2502 694.255H17.1839L14.2114 698.911V701.993H12.5074V698.942Z" fill="white"/>
<path d="M20.5885 695.825H18.2365V694.255H24.6445V695.825H22.2925V701.993H20.5885V695.825Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.61183 754C13.0318 753.528 18.2317 751.636 22.6885 748.516C27.1453 745.396 30.7018 741.157 33 736.226C30.1429 732.143 26.3436 728.809 21.9241 726.506C17.5046 724.204 12.5952 723 7.61183 722.999C6.71072 722.999 5.80547 723.036 4.90023 723.118C2.60212 728.051 1.64285 733.502 2.11883 738.922C2.59482 744.343 4.48928 749.543 7.61183 754V754Z" fill="url(#paint48_linear)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.92914 723.118C11.5286 725.802 17.1985 730.359 21.2401 736.226H33C30.152 732.141 26.3592 728.806 21.9446 726.503C17.5299 724.2 12.6241 722.997 7.64487 722.999C6.74376 722.999 5.83852 723.038 4.92914 723.118V723.118Z" fill="url(#paint49_linear)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.2442 736.226C19.8264 745.58 7.61182 754 7.61182 754C18.7145 752.946 28.4531 746.291 33 736.226H21.2442Z" fill="url(#paint50_linear)"/>
<path d="M29.304 768.991L7.25488 771.357C5.94386 771.496 4.62846 771.135 3.57277 770.345C2.51709 769.555 1.79928 768.395 1.56345 767.098C1.43947 766.413 1.45383 765.71 1.60568 765.031C1.75754 764.351 2.04382 763.709 2.44767 763.142C2.85152 762.575 3.36476 762.094 3.95718 761.729C4.5496 761.363 5.20921 761.119 5.89717 761.013L27.8126 757.608C28.6605 757.476 29.5271 757.536 30.3487 757.783C31.1703 758.031 31.926 758.459 32.5602 759.037C33.1944 759.615 33.6909 760.328 34.0133 761.123C34.3356 761.918 34.4756 762.776 34.4229 763.632C34.3413 764.986 33.7822 766.268 32.845 767.249C31.9079 768.23 30.6532 768.847 29.304 768.991V768.991Z" fill="url(#paint51_linear)"/>
<path d="M21.1543 788.174L3.00683 769.838C2.49096 769.316 2.09066 768.692 1.83195 768.006C1.57325 767.319 1.46195 766.586 1.50528 765.854C1.54862 765.122 1.74563 764.407 2.08349 763.756C2.42134 763.105 2.89249 762.532 3.46625 762.075C4.33583 761.384 5.40325 760.989 6.51321 760.946C7.62317 760.904 8.71775 761.216 9.63768 761.839L31.0011 776.321C31.9921 776.994 32.8136 777.887 33.4011 778.931C33.9885 779.975 34.3259 781.14 34.3867 782.336C34.4475 783.533 34.2301 784.727 33.7515 785.824C33.2729 786.922 32.5462 787.894 31.6285 788.664C30.1395 789.911 28.236 790.553 26.2958 790.462C24.3555 790.371 22.5203 789.555 21.1543 788.174V788.174Z" fill="url(#paint52_linear)"/>
<path d="M25.2549 758.667L4.05257 774.514C3.60487 774.848 3.23111 775.271 2.95479 775.757C2.67848 776.242 2.50558 776.779 2.44697 777.335C2.38837 777.89 2.44532 778.452 2.61425 778.984C2.78317 779.517 3.06043 780.008 3.42857 780.429C4.04192 781.126 4.87664 781.591 5.79253 781.746C6.70843 781.901 7.64971 781.736 8.45828 781.279L31.5051 768.25C32.2492 767.83 32.89 767.249 33.3808 766.55C33.8716 765.851 34.2 765.051 34.342 764.208C34.4839 763.365 34.4359 762.502 34.2013 761.68C33.9668 760.859 33.5516 760.1 32.9863 759.459C32.0322 758.381 30.7074 757.701 29.2751 757.554C27.8429 757.408 26.4078 757.805 25.2549 758.667V758.667Z" fill="url(#paint53_linear)"/>
<path d="M23.4857 789.795L4.80002 781.402C4.24589 781.155 3.75479 780.786 3.36347 780.323C2.97216 779.859 2.69078 779.313 2.5404 778.726C2.39001 778.138 2.37452 777.524 2.49508 776.929C2.61565 776.335 2.86914 775.775 3.23659 775.293C3.6364 774.771 4.15793 774.355 4.7556 774.081C5.35327 773.807 6.00889 773.684 6.66516 773.722L27.1234 774.981C28.3413 775.055 29.5245 775.416 30.5767 776.034C31.6288 776.651 32.5203 777.509 33.1785 778.536C33.8367 779.564 34.2431 780.732 34.3646 781.946C34.4861 783.16 34.3193 784.386 33.8777 785.523C33.4967 786.502 32.9209 787.394 32.185 788.144C31.4492 788.894 30.5687 789.486 29.597 789.886C28.6253 790.285 27.5826 790.483 26.5321 790.468C25.4816 790.452 24.4452 790.223 23.4857 789.795V789.795Z" fill="url(#paint54_linear)"/>
<path d="M7.71429 763.714H28.2857V784.286H7.71429V763.714Z" fill="black"/>
<path d="M10.2789 780.398H17.9932V781.683H10.2789V780.398Z" fill="white"/>
<path d="M10.2857 770.685V766.255H12V770.64C12 771.902 12.6308 772.553 13.6731 772.553C14.7154 772.553 15.3428 771.922 15.3428 770.695V766.255H17.0571V770.626C17.0571 772.975 15.7406 774.127 13.6594 774.127C11.5783 774.127 10.2857 772.965 10.2857 770.685V770.685Z" fill="white"/>
<path d="M18.6034 766.255H21.7714C23.6194 766.255 24.7371 767.352 24.7371 768.936V768.957C24.7371 770.75 23.3417 771.679 21.6034 771.679H20.3074V774.003H18.5931L18.6034 766.255ZM21.6583 770.163C22.512 770.163 23.0091 769.653 23.0091 768.991V768.967C23.0091 768.206 22.4777 767.794 21.6377 767.794H20.3074V770.163H21.6583Z" fill="white"/>
<path d="M21.6686 793.543L1.54285 795.809V806.157L6.5897 822.957L31.896 816.542L21.6686 793.543Z" fill="url(#paint55_linear)"/>
<path d="M32.5509 803.986L24.6206 800.187L13.4949 820.217L16.5189 824.318L24.2263 826.457L31.6457 821.777L34.4572 812.966L32.5509 803.986Z" fill="url(#paint56_linear)"/>
<path d="M7.71429 799.714H28.2857V820.286H7.71429V799.714Z" fill="black"/>
<path d="M10.2789 816.398H17.9932V817.683H10.2789V816.398Z" fill="white"/>
<path d="M10.2857 802.258H13.3028C15.7337 802.258 17.4171 803.928 17.4171 806.105V806.129C17.4171 808.306 15.7371 809.997 13.3028 809.997H10.2857V802.258ZM12 803.794V808.457H13.3166C13.6257 808.475 13.9353 808.428 14.225 808.319C14.5147 808.209 14.7782 808.04 14.9981 807.822C15.2181 807.604 15.3896 807.342 15.5016 807.053C15.6136 806.765 15.6635 806.456 15.648 806.146V806.126C15.6637 805.815 15.6142 805.505 15.5026 805.215C15.391 804.925 15.2199 804.661 15.0003 804.441C14.7806 804.221 14.5173 804.05 14.2273 803.938C13.9373 803.826 13.6271 803.776 13.3166 803.791L12 803.794Z" fill="white"/>
<path d="M18.2229 806.184V806.163C18.2134 805.629 18.3123 805.099 18.5136 804.604C18.715 804.109 19.0146 803.66 19.3943 803.284C19.7741 802.908 20.2261 802.613 20.723 802.417C21.22 802.22 21.7516 802.127 22.2857 802.142C22.8521 802.114 23.4181 802.206 23.9464 802.412C24.4747 802.618 24.9533 802.934 25.3509 803.338L24.2606 804.597C23.7387 804.054 23.0244 803.739 22.272 803.719C20.9623 803.719 20.0194 804.806 20.0194 806.139V806.163C20.0194 807.497 20.9383 808.608 22.272 808.608C23.1634 808.608 23.7051 808.265 24.3291 807.696L25.3989 808.8C25.0056 809.255 24.5143 809.614 23.9621 809.852C23.4098 810.089 22.8109 810.199 22.2103 810.171C21.6843 810.18 21.1621 810.082 20.6745 809.885C20.187 809.687 19.7441 809.394 19.3722 809.022C19.0002 808.65 18.7068 808.207 18.5094 807.72C18.312 807.232 18.2145 806.71 18.2229 806.184" fill="white"/>
<path d="M5.2937 860.174L1.54285 847.245L24.8434 853.67L22.3577 862.457L5.2937 860.174Z" fill="url(#paint57_linear)"/>
<path d="M12.5829 829.584L21.3463 832.094L31.248 829.543L33.2092 843.12L10.9269 835.714L12.5829 829.584Z" fill="url(#paint58_linear)"/>
<path d="M34.4571 851.225L33.2091 843.12L13.0491 836.421L1.58399 838.879L1.54285 847.245L24.8434 853.67L34.4571 851.225Z" fill="url(#paint59_linear)"/>
<path d="M7.71429 835.714H28.2857V856.286H7.71429V835.714Z" fill="black"/>
<path d="M10.2789 852.398H17.9932V853.683H10.2789V852.398Z" fill="white"/>
<path d="M10.2857 838.258H13.3028C15.7337 838.258 17.4171 839.928 17.4171 842.105V842.129C17.4171 844.306 15.7371 845.997 13.3028 845.997H10.2857V838.258ZM12 839.794V844.457H13.3166C13.6257 844.475 13.9353 844.428 14.225 844.319C14.5147 844.209 14.7782 844.04 14.9981 843.822C15.2181 843.604 15.3896 843.342 15.5016 843.053C15.6136 842.765 15.6635 842.456 15.648 842.146V842.126C15.6637 841.815 15.6142 841.505 15.5026 841.215C15.391 840.925 15.2199 840.661 15.0003 840.441C14.7806 840.221 14.5173 840.05 14.2273 839.938C13.9373 839.826 13.6271 839.776 13.3166 839.791L12 839.794Z" fill="white"/>
<path d="M18.0034 838.262H19.8377L21.8743 841.536L23.9074 838.265H25.7417V846.003H24.048L24.0514 840.95L21.8743 844.255H21.8263L19.6731 840.984V846H18.0034V838.262Z" fill="white"/>
<path d="M23.9691 889.172L1.54285 884.688L8.16685 898.416L24.7097 895.533L23.9691 889.172Z" fill="url(#paint60_linear)"/>
<path d="M34.4571 880.231L25.3714 870.864L1.54285 875.887V884.688L30.9806 890.571L34.4571 880.231Z" fill="url(#paint61_linear)"/>
<path d="M34.4572 880.231L20.1703 865.502L8.97601 868.889L12.6412 880.039L30.9806 890.571L34.4572 880.231Z" fill="url(#paint62_linear)"/>
<path d="M31.8892 874.704L30.5932 865.502H25.6834H20.1703L8.97601 868.889L12.6412 880.039L31.8892 874.704Z" fill="url(#paint63_linear)"/>
<path d="M7.71429 871.714H28.2857V892.286H7.71429V871.714Z" fill="black"/>
<path d="M10.2789 888.398H17.9932V889.683H10.2789V888.398Z" fill="white"/>
<path d="M10.2857 874.258H13.3028C15.7337 874.258 17.4171 875.928 17.4171 878.105V878.129C17.4171 880.306 15.7371 881.997 13.3028 881.997H10.2857V874.258ZM12 875.794V880.457H13.3166C13.6257 880.475 13.9353 880.428 14.225 880.319C14.5147 880.209 14.7782 880.04 14.9981 879.822C15.2181 879.604 15.3896 879.342 15.5016 879.053C15.6136 878.765 15.6635 878.456 15.648 878.146V878.126C15.6637 877.815 15.6142 877.505 15.5026 877.215C15.391 876.925 15.2199 876.661 15.0003 876.441C14.7806 876.221 14.5173 876.05 14.2273 875.938C13.9373 875.826 13.6271 875.776 13.3166 875.791L12 875.794Z" fill="white"/>
<path d="M18.6583 874.258H21.8297C23.6811 874.258 24.7989 875.355 24.7989 876.943V876.963C24.7989 878.76 23.4034 879.706 21.6617 879.706H20.3657V882.034H18.6514L18.6583 874.258ZM21.7166 878.174C22.5703 878.174 23.088 877.663 23.088 876.998V876.974C23.088 876.209 22.5566 875.801 21.7166 875.801H20.3657V878.174H21.7166Z" fill="white"/>
<path d="M33.192 909.079L22.1143 901.543L1.54285 916.152L6.75428 934.457L29.2388 929.897L33.192 909.079Z" fill="url(#paint64_linear)"/>
<path d="M33.192 909.079L22.1143 901.543L19.3885 908.935V924.003H34.4571L33.192 909.079Z" fill="url(#paint65_linear)"/>
<path d="M7.71429 907.714H28.2857V928.286H7.71429V907.714Z" fill="black"/>
<path d="M10.2789 924.398H17.9932V925.683H10.2789V924.398Z" fill="white"/>
<path d="M10.2857 910.258H13.3028C15.7337 910.258 17.4171 911.928 17.4171 914.105V914.129C17.4171 916.306 15.7371 917.997 13.3028 917.997H10.2857V910.258ZM12 911.794V916.457H13.3166C13.6257 916.475 13.9353 916.428 14.225 916.319C14.5147 916.209 14.7782 916.04 14.9981 915.822C15.2181 915.604 15.3896 915.342 15.5016 915.053C15.6136 914.765 15.6635 914.456 15.648 914.146V914.126C15.6637 913.815 15.6142 913.505 15.5026 913.215C15.391 912.925 15.2199 912.661 15.0003 912.441C14.7806 912.221 14.5173 912.05 14.2273 911.938C13.9373 911.826 13.6271 911.776 13.3166 911.791L12 911.794Z" fill="white"/>
<path d="M20.6023 911.818H18.2469V910.248H24.6617V911.822L22.3063 911.818V917.993H20.6023V911.818Z" fill="white"/>
<path d="M34.4572 482.307L11.3829 469.502L26.832 492.456L30.0069 490.375L34.4572 482.307Z" fill="url(#paint66_linear)"/>
<path d="M25.2514 477.086L22.3611 470.019L15.9669 476.314L18.5829 499.155L24.7783 502.416L34.4571 496.762L25.2514 477.086Z" fill="url(#paint67_linear)"/>
<path d="M11.3828 469.502L1.54285 476.129L5.20113 498.734L14.6366 502.361L26.832 492.456L11.3828 469.502Z" fill="url(#paint68_linear)"/>
<path d="M7.71429 475.714H28.2857V496.286H7.71429V475.714Z" fill="black"/>
<path d="M10.2789 492.398H17.9932V493.683H10.2789V492.398Z" fill="white"/>
<path d="M10.2857 478.258H13.8171C14.2259 478.233 14.6356 478.29 15.0224 478.424C15.4091 478.559 15.7651 478.77 16.0697 479.043C16.2932 479.279 16.4673 479.557 16.5815 479.861C16.6958 480.164 16.7479 480.488 16.7348 480.813V480.833C16.7604 481.36 16.6117 481.88 16.3117 482.314C16.0118 482.748 15.5773 483.071 15.0754 483.233L16.968 485.997H14.976L13.32 483.521H12V485.997H10.2857V478.258ZM13.7143 482.03C14.544 482.03 15.0206 481.587 15.0206 480.936V480.915C15.0206 480.185 14.5131 479.808 13.6834 479.808H12V482.03H13.7143Z" fill="white"/>
<path d="M18.1475 478.258H21.1646C23.5955 478.258 25.2789 479.928 25.2789 482.105V482.129C25.2789 484.306 23.5989 485.997 21.1646 485.997H18.1475V478.258ZM19.8617 479.794V484.457H21.1783C21.4875 484.475 21.797 484.428 22.0868 484.319C22.3765 484.209 22.6399 484.04 22.8599 483.822C23.0798 483.604 23.2514 483.342 23.3634 483.053C23.4753 482.765 23.5252 482.456 23.5097 482.146V482.126C23.5255 481.815 23.4759 481.505 23.3644 481.215C23.2528 480.925 23.0817 480.661 22.862 480.441C22.6424 480.221 22.379 480.05 22.0891 479.938C21.7991 479.826 21.4888 479.776 21.1783 479.791L19.8617 479.794Z" fill="white"/>
<path d="M34.4572 446.307L11.3829 433.502L26.832 456.456L30.0069 454.375L34.4572 446.307Z" fill="url(#paint69_linear)"/>
<path d="M25.2514 441.086L22.3611 434.019L15.9669 440.314L18.5829 463.155L24.7783 466.416L34.4571 460.762L25.2514 441.086Z" fill="url(#paint70_linear)"/>
<path d="M11.3828 433.502L1.54285 440.129L5.20113 462.734L14.6366 466.361L26.832 456.456L11.3828 433.502Z" fill="url(#paint71_linear)"/>
<path d="M7.71429 439.714H28.2857V460.286H7.71429V439.714Z" fill="black"/>
<path d="M10.2789 456.398H17.9932V457.683H10.2789V456.398Z" fill="white"/>
<path d="M10.2857 442.258H13.8171C14.2259 442.233 14.6356 442.29 15.0224 442.424C15.4091 442.559 15.7651 442.77 16.0697 443.043C16.2932 443.279 16.4673 443.557 16.5815 443.861C16.6958 444.164 16.7479 444.488 16.7348 444.813V444.833C16.7604 445.36 16.6117 445.88 16.3117 446.314C16.0118 446.748 15.5773 447.071 15.0754 447.233L16.968 449.997H14.976L13.32 447.521H12V449.997H10.2857V442.258ZM13.7143 446.03C14.544 446.03 15.0206 445.587 15.0206 444.936V444.915C15.0206 444.185 14.5131 443.808 13.6834 443.808H12V446.03H13.7143Z" fill="white"/>
<path d="M18.1475 442.258H21.1646C23.5955 442.258 25.2789 443.928 25.2789 446.105V446.129C25.2789 448.306 23.5989 449.997 21.1646 449.997H18.1475V442.258ZM19.8617 443.794V448.457H21.1783C21.4875 448.475 21.797 448.428 22.0868 448.319C22.3765 448.209 22.6399 448.04 22.8599 447.822C23.0798 447.604 23.2514 447.342 23.3634 447.053C23.4753 446.765 23.5252 446.456 23.5097 446.146V446.126C23.5255 445.815 23.4759 445.505 23.3644 445.215C23.2528 444.925 23.0817 444.661 22.862 444.441C22.6424 444.221 22.379 444.05 22.0891 443.938C21.7991 443.826 21.4888 443.776 21.1783 443.791L19.8617 443.794Z" fill="white"/>
<path d="M10.9171 404.524L17.5214 414.814L6.80143 430.75L1.25 408.305L10.9171 404.524Z" fill="url(#paint72_linear)"/>
<path d="M10.295 404.764L11.3 397.25L25.7528 413.33L21.5414 417.494L24.7957 430.75H6.80139L10.295 404.764Z" fill="url(#paint73_linear)"/>
<path d="M18.1436 419.791H34.75L29.1986 397.25H11.3L18.1436 419.791Z" fill="url(#paint74_linear)"/>
<path d="M7.66284 403.663H28.3371V424.337H7.66284V403.663Z" fill="black"/>
<path d="M9.57715 406.343H13.5014C14.6022 406.343 15.4157 406.63 15.99 407.204C16.4686 407.683 16.7079 408.353 16.7079 409.166V409.214C16.7079 409.932 16.5164 410.458 16.1814 410.889C15.8464 411.32 15.4157 411.655 14.8414 411.846L16.9472 414.909H14.7457L12.975 412.277H11.3957V414.909H9.5293V406.343H9.57715ZM13.4057 410.506C13.8843 410.506 14.2193 410.411 14.4586 410.171C14.6979 409.932 14.8414 409.645 14.8414 409.31V409.262C14.8414 408.831 14.6979 408.544 14.4586 408.353C14.2193 408.161 13.8364 408.066 13.3579 408.066H11.4914V410.506H13.4057V410.506Z" fill="white"/>
<path d="M9.57715 420.461H17.33V421.753H9.57715V420.461Z" fill="white"/>
<path d="M22.1636 408.927H20.2493V407.204H22.1636V405.29H23.9343V407.204H25.8486V408.927H23.9343V410.841H22.1636V408.927Z" fill="white"/>
<path d="M19.005 413.808H17.0907V412.086H19.005V410.171H20.7757V412.086H22.69V413.808H20.7757V415.723H19.005V413.808Z" fill="white"/>
<path d="M3.59998 939.6V947.7V957.54V961.2H14.64L20.04 939.6H3.59998ZM12.54 957.6H7.19998V954H13.38L12.54 957.6ZM21.36 946.8L15.96 968.4H32.4V960.3V950.46V946.8H21.36ZM28.8 964.8H20.58L21.42 961.2H28.8V964.8Z" fill="url(#paint75_linear)"/>
<path d="M26.5 1006C25.0166 1006 23.5666 1005.56 22.3332 1004.74C21.0999 1003.91 20.1386 1002.74 19.5709 1001.37C19.0033 1000 18.8547 998.492 19.1441 997.037C19.4335 995.582 20.1478 994.246 21.1967 993.197C22.2456 992.148 23.582 991.434 25.0368 991.144C26.4917 990.855 27.9997 991.003 29.3701 991.571C30.7406 992.139 31.9119 993.1 32.736 994.333C33.5601 995.567 34 997.017 34 998.5V998.5C34 1000.49 33.2106 1002.39 31.8054 1003.8C30.4002 1005.21 28.4941 1006 26.506 1006H26.5Z" fill="url(#paint76_linear)"/>
<path d="M17 974H2V989H17V974Z" fill="black"/>
<path d="M34 974H19V989H34V974Z" fill="black"/>
<path d="M17 991H2V1006H17V991Z" fill="black"/>
<path d="M26.5 106C25.0166 106 23.5666 105.56 22.3332 104.736C21.0999 103.912 20.1386 102.741 19.5709 101.37C19.0033 99.9997 18.8547 98.4917 19.1441 97.0368C19.4335 95.582 20.1478 94.2456 21.1967 93.1967C22.2456 92.1478 23.582 91.4335 25.0368 91.1441C26.4917 90.8547 27.9997 91.0033 29.3701 91.5709C30.7406 92.1386 31.9119 93.0999 32.736 94.3332C33.5601 95.5666 34 97.0166 34 98.5C34 100.489 33.2098 102.397 31.8033 103.803C30.3968 105.21 28.4891 106 26.5 106Z" fill="url(#paint77_linear)"/>
<path d="M26.5 89C25.0166 89 23.5666 88.5601 22.3332 87.736C21.0999 86.9119 20.1386 85.7406 19.5709 84.3701C19.0033 82.9997 18.8547 81.4917 19.1441 80.0368C19.4335 78.582 20.1478 77.2456 21.1967 76.1967C22.2456 75.1478 23.582 74.4335 25.0368 74.1441C26.4917 73.8547 27.9997 74.0032 29.3701 74.5709C30.7406 75.1386 31.9119 76.0999 32.736 77.3332C33.5601 78.5666 34 80.0166 34 81.5V81.5C34 83.4881 33.2107 85.3948 31.8054 86.8012C30.4002 88.2075 28.4941 88.9984 26.506 89H26.5Z" fill="url(#paint78_linear)"/>
<path d="M17 74H2V89H17V74Z" fill="black"/>
<path d="M9.5 106C8.01664 106 6.56659 105.56 5.33323 104.736C4.09986 103.912 3.13856 102.741 2.57091 101.37C2.00325 99.9997 1.85472 98.4917 2.14411 97.0368C2.4335 95.582 3.14781 94.2456 4.1967 93.1967C5.2456 92.1478 6.58197 91.4335 8.03682 91.1441C9.49168 90.8547 10.9997 91.0033 12.3701 91.5709C13.7406 92.1386 14.9119 93.0999 15.736 94.3332C16.5601 95.5666 17 97.0166 17 98.5V98.5C17 100.489 16.2098 102.397 14.8033 103.803C13.3968 105.21 11.4891 106 9.5 106Z" fill="url(#paint79_linear)"/>
<path d="M17 2H2V17H17V2Z" fill="black"/>
<path d="M34 19H19V34H34V19ZM34 2H19V17H34V2ZM17 19H2V34H17V19Z" fill="url(#paint80_linear)"/>
<path d="M17 38H2V53H17V38Z" fill="black"/>
<path d="M34 55H19V70H34V55ZM34 38H19V53H34V38ZM17 55H2V70H17V55Z" fill="url(#paint81_linear)"/>
<g clip-path="url(#clip0)">
<path d="M22.5433 1009.36L23.1913 1022.75L6.52229 1029.34L1.36292 1016.02L22.5433 1009.36Z" fill="url(#paint82_linear)"/>
<path d="M34.294 1017.18L19.8985 1023.43L22.5433 1009.36L34.294 1017.18Z" fill="#21D789"/>
<path d="M19.0189 1020.25L34.294 1017.18V1031.63L23.8044 1035.55L19.5002 1031.67L19.0189 1020.25Z" fill="url(#paint83_linear)"/>
<path d="M12.6279 1016.01L23.1913 1017.66L34.294 1031.63L23.6246 1035.76L19.5002 1031.67L12.6279 1016.01Z" fill="url(#paint84_linear)"/>
<path d="M8.13821 1009.36L23.1913 1017.66L18.0011 1042.29H9.25709L1.68011 1034.46L8.13821 1009.36Z" fill="url(#paint85_linear)"/>
<path d="M28.3767 1015.79H7.7948V1036.37H28.3767V1015.79Z" fill="black"/>
<path d="M18.0858 1032.51H10.3676V1033.8H18.0858V1032.51Z" fill="white"/>
<path d="M10.375 1018.36H13.3811C15.8035 1018.36 17.4772 1020.03 17.4772 1022.2V1022.22C17.4772 1024.39 15.8035 1026.07 13.3811 1026.07H10.375V1018.36ZM12.0707 1019.9V1024.54H13.3811C14.7685 1024.54 15.7044 1023.61 15.7044 1022.24V1022.22C15.7202 1021.91 15.6709 1021.6 15.5597 1021.31C15.4485 1021.02 15.2779 1020.76 15.0589 1020.54C14.84 1020.32 14.5775 1020.15 14.2885 1020.04C13.9995 1019.93 13.6903 1019.88 13.3811 1019.9H12.0707Z" fill="white"/>
<path d="M18.0884 1024.99L19.0989 1023.78C19.7974 1024.35 20.5307 1024.72 21.4171 1024.72C22.1175 1024.72 22.5388 1024.44 22.5388 1023.99V1023.96C22.5388 1023.53 22.2725 1023.31 20.9739 1022.98C19.409 1022.58 18.3985 1022.14 18.3985 1020.6V1020.58C18.3985 1019.17 19.5311 1018.24 21.118 1018.24C22.1656 1018.22 23.1863 1018.57 24.0035 1019.23L23.1152 1020.51C22.4276 1020.04 21.7509 1019.75 21.0961 1019.75C20.4413 1019.75 20.0966 1020.05 20.0966 1020.42V1020.45C20.0966 1020.96 20.4304 1021.12 21.7728 1021.47C23.3486 1021.88 24.2369 1022.44 24.2369 1023.8V1023.82C24.2369 1025.36 23.0605 1026.23 21.3843 1026.23C20.1704 1026.23 18.9973 1025.79 18.0884 1024.99Z" fill="white"/>
</g>
<defs>
<linearGradient id="paint0_linear" x1="15.7543" y1="139.2" x2="34.3611" y2="139.2" gradientUnits="userSpaceOnUse">
<stop offset="0.19" stop-color="#07C3F2"/>
<stop offset="0.9" stop-color="#087CFA"/>
</linearGradient>
<linearGradient id="paint1_linear" x1="111.279" y1="508.982" x2="1000.6" y2="508.982" gradientUnits="userSpaceOnUse">
<stop offset="0.19" stop-color="#07C3F2"/>
<stop offset="0.9" stop-color="#087CFA"/>
</linearGradient>
<linearGradient id="paint2_linear" x1="23.1154" y1="143.503" x2="6.80913" y2="120.744" gradientUnits="userSpaceOnUse">
<stop offset="0.09" stop-color="#21D789"/>
<stop offset="0.48" stop-color="#07C3F2"/>
<stop offset="0.9" stop-color="#087CFA"/>
</linearGradient>
<linearGradient id="paint3_linear" x1="13.3749" y1="151.978" x2="22.8035" y2="151.978" gradientUnits="userSpaceOnUse">
<stop stop-color="#FF318C"/>
<stop offset="0.15" stop-color="#FB348C"/>
<stop offset="0.28" stop-color="#F03C8C"/>
<stop offset="0.42" stop-color="#DE4A8C"/>
<stop offset="0.54" stop-color="#C45D8B"/>
<stop offset="0.67" stop-color="#A2778B"/>
<stop offset="0.79" stop-color="#79958A"/>
<stop offset="0.91" stop-color="#49B98A"/>
<stop offset="1" stop-color="#21D789"/>
</linearGradient>
<linearGradient id="paint4_linear" x1="9.59656" y1="149.719" x2="4.75542" y2="182.201" gradientUnits="userSpaceOnUse">
<stop offset="0.09" stop-color="#21D789"/>
<stop offset="0.9" stop-color="#009AE5"/>
</linearGradient>
<linearGradient id="paint5_linear" x1="2971.02" y1="558.354" x2="16.2324" y2="3836.07" gradientUnits="userSpaceOnUse">
<stop offset="0.09" stop-color="#21D789"/>
<stop offset="0.9" stop-color="#009AE5"/>
</linearGradient>
<linearGradient id="paint6_linear" x1="1215.42" y1="1246.04" x2="1835.75" y2="1366.07" gradientUnits="userSpaceOnUse">
<stop offset="0.09" stop-color="#21D789"/>
<stop offset="0.9" stop-color="#009AE5"/>
</linearGradient>
<linearGradient id="paint7_linear" x1="31.6766" y1="193.927" x2="32.6365" y2="202.306" gradientUnits="userSpaceOnUse">
<stop offset="0.16" stop-color="#21D789"/>
<stop offset="0.54" stop-color="#419FBC"/>
<stop offset="1" stop-color="#6B57FF"/>
</linearGradient>
<linearGradient id="paint8_linear" x1="22.92" y1="190.327" x2="25.3543" y2="184.101" gradientUnits="userSpaceOnUse">
<stop stop-color="#6B57FF"/>
<stop offset="0.95" stop-color="#21D789"/>
</linearGradient>
<linearGradient id="paint9_linear" x1="9.46974" y1="198.161" x2="11.8355" y2="208.461" gradientUnits="userSpaceOnUse">
<stop stop-color="#6B57FF"/>
<stop offset="0.02" stop-color="#685CFB"/>
<stop offset="0.28" stop-color="#4A91CA"/>
<stop offset="0.51" stop-color="#34B7A7"/>
<stop offset="0.69" stop-color="#26CE91"/>
<stop offset="0.8" stop-color="#21D789"/>
</linearGradient>
<linearGradient id="paint10_linear" x1="3.59313" y1="198.003" x2="32.4343" y2="213.929" gradientUnits="userSpaceOnUse">
<stop offset="0.08" stop-color="#21D789"/>
<stop offset="0.89" stop-color="#6B57FF"/>
</linearGradient>
<linearGradient id="paint11_linear" x1="3.76799" y1="194.163" x2="32.7566" y2="194.163" gradientUnits="userSpaceOnUse">
<stop offset="0.31" stop-color="#21D789"/>
<stop offset="0.49" stop-color="#59A3B2"/>
<stop offset="0.77" stop-color="#B74AF7"/>
<stop offset="1" stop-color="#FF45ED"/>
</linearGradient>
<linearGradient id="paint12_linear" x1="33.9531" y1="236.29" x2="21.0994" y2="247.169" gradientUnits="userSpaceOnUse">
<stop stop-color="#087CFA"/>
<stop offset="0.02" stop-color="#0D7BFA"/>
<stop offset="0.37" stop-color="#5566F9"/>
<stop offset="0.66" stop-color="#8A57F8"/>
<stop offset="0.88" stop-color="#AB4EF7"/>
<stop offset="1" stop-color="#B74AF7"/>
</linearGradient>
<linearGradient id="paint13_linear" x1="871.999" y1="1126.35" x2="1481.58" y2="520.096" gradientUnits="userSpaceOnUse">
<stop stop-color="#087CFA"/>
<stop offset="0.02" stop-color="#0D7BFA"/>
<stop offset="0.37" stop-color="#5566F9"/>
<stop offset="0.66" stop-color="#8A57F8"/>
<stop offset="0.88" stop-color="#AB4EF7"/>
<stop offset="1" stop-color="#B74AF7"/>
</linearGradient>
<linearGradient id="paint14_linear" x1="6.11656" y1="246.295" x2="29.8594" y2="231.038" gradientUnits="userSpaceOnUse">
<stop stop-color="#087CFA"/>
<stop offset="0.1" stop-color="#1598D3"/>
<stop offset="0.22" stop-color="#23B6AA"/>
<stop offset="0.35" stop-color="#2DCC8B"/>
<stop offset="0.46" stop-color="#35DD74"/>
<stop offset="0.57" stop-color="#39E767"/>
<stop offset="0.67" stop-color="#3BEA62"/>
</linearGradient>
<linearGradient id="paint15_linear" x1="3.82626" y1="272.301" x2="20.208" y2="271.467" gradientUnits="userSpaceOnUse">
<stop offset="0.09" stop-color="#FC801D"/>
<stop offset="0.23" stop-color="#B07F61"/>
<stop offset="0.41" stop-color="#577DB3"/>
<stop offset="0.53" stop-color="#1E7CE6"/>
<stop offset="0.59" stop-color="#087CFA"/>
</linearGradient>
<linearGradient id="paint16_linear" x1="30.5314" y1="270.555" x2="25.0697" y2="254.235" gradientUnits="userSpaceOnUse">
<stop stop-color="#FE2857"/>
<stop offset="0.08" stop-color="#CB3979"/>
<stop offset="0.16" stop-color="#9E4997"/>
<stop offset="0.25" stop-color="#7557B2"/>
<stop offset="0.34" stop-color="#5362C8"/>
<stop offset="0.44" stop-color="#386CDA"/>
<stop offset="0.54" stop-color="#2373E8"/>
<stop offset="0.66" stop-color="#1478F2"/>
<stop offset="0.79" stop-color="#0B7BF8"/>
<stop offset="1" stop-color="#087CFA"/>
</linearGradient>
<linearGradient id="paint17_linear" x1="6.4183" y1="261.123" x2="27.0172" y2="295.197" gradientUnits="userSpaceOnUse">
<stop stop-color="#FE2857"/>
<stop offset="0.08" stop-color="#FE295F"/>
<stop offset="0.21" stop-color="#FF2D76"/>
<stop offset="0.3" stop-color="#FF318C"/>
<stop offset="0.38" stop-color="#EA3896"/>
<stop offset="0.55" stop-color="#B248AE"/>
<stop offset="0.79" stop-color="#5A63D6"/>
<stop offset="1" stop-color="#087CFA"/>
</linearGradient>
<linearGradient id="paint18_linear" x1="8.84571" y1="299.52" x2="11.64" y2="293.935" gradientUnits="userSpaceOnUse">
<stop stop-color="#AF1DF5"/>
<stop offset="0.21" stop-color="#BC20E4"/>
<stop offset="0.63" stop-color="#DD29B8"/>
<stop offset="1" stop-color="#FF318C"/>
</linearGradient>
<linearGradient id="paint19_linear" x1="0.534846" y1="311.05" x2="12.3257" y2="295.474" gradientUnits="userSpaceOnUse">
<stop offset="0.02" stop-color="#6B57FF"/>
<stop offset="0.42" stop-color="#B74AF7"/>
<stop offset="0.75" stop-color="#FF318C"/>
</linearGradient>
<linearGradient id="paint20_linear" x1="30.6171" y1="310.557" x2="22.4434" y2="291.165" gradientUnits="userSpaceOnUse">
<stop stop-color="#293896"/>
<stop offset="0.08" stop-color="#3B3AA2"/>
<stop offset="0.29" stop-color="#6740C0"/>
<stop offset="0.49" stop-color="#8A44D8"/>
<stop offset="0.68" stop-color="#A347E9"/>
<stop offset="0.86" stop-color="#B249F3"/>
<stop offset="1" stop-color="#B74AF7"/>
</linearGradient>
<linearGradient id="paint21_linear" x1="25.6046" y1="320.088" x2="20.0914" y2="312.01" gradientUnits="userSpaceOnUse">
<stop offset="0.02" stop-color="#6B57FF"/>
<stop offset="0.78" stop-color="#B74AF7"/>
</linearGradient>
<linearGradient id="paint22_linear" x1="13.296" y1="338.259" x2="32.8835" y2="338.259" gradientUnits="userSpaceOnUse">
<stop stop-color="#21D789"/>
<stop offset="1" stop-color="#07C3F2"/>
</linearGradient>
<linearGradient id="paint23_linear" x1="-10.0046" y1="353.321" x2="30.3291" y2="323.547" gradientUnits="userSpaceOnUse">
<stop offset="0.01" stop-color="#FCF84A"/>
<stop offset="0.11" stop-color="#A7EB62"/>
<stop offset="0.21" stop-color="#5FE077"/>
<stop offset="0.27" stop-color="#32DA84"/>
<stop offset="0.31" stop-color="#21D789"/>
<stop offset="0.58" stop-color="#21D789"/>
<stop offset="0.6" stop-color="#21D789"/>
<stop offset="0.69" stop-color="#20D68C"/>
<stop offset="0.76" stop-color="#1ED497"/>
<stop offset="0.83" stop-color="#19D1A9"/>
<stop offset="0.9" stop-color="#13CCC2"/>
<stop offset="0.97" stop-color="#0BC6E1"/>
<stop offset="1" stop-color="#07C3F2"/>
</linearGradient>
<linearGradient id="paint24_linear" x1="5.93142" y1="362.054" x2="12.6583" y2="340.944" gradientUnits="userSpaceOnUse">
<stop stop-color="#21D789"/>
<stop offset="0.16" stop-color="#24D888"/>
<stop offset="0.3" stop-color="#2FD985"/>
<stop offset="0.43" stop-color="#41DC80"/>
<stop offset="0.55" stop-color="#5AE079"/>
<stop offset="0.67" stop-color="#7AE46F"/>
<stop offset="0.79" stop-color="#A1EA64"/>
<stop offset="0.9" stop-color="#CFF157"/>
<stop offset="1" stop-color="#FCF84A"/>
</linearGradient>
<linearGradient id="paint25_linear" x1="14.8389" y1="343.701" x2="29.4754" y2="324.021" gradientUnits="userSpaceOnUse">
<stop stop-color="#21D789"/>
<stop offset="0.09" stop-color="#23D986"/>
<stop offset="0.17" stop-color="#2ADE7B"/>
<stop offset="0.25" stop-color="#36E669"/>
<stop offset="0.27" stop-color="#3BEA62"/>
<stop offset="0.35" stop-color="#47EB61"/>
<stop offset="0.49" stop-color="#67ED5D"/>
<stop offset="0.69" stop-color="#9AF156"/>
<stop offset="0.92" stop-color="#E0F64D"/>
<stop offset="1" stop-color="#FCF84A"/>
</linearGradient>
<linearGradient id="paint26_linear" x1="37.2274" y1="346.207" x2="7.73144" y2="345.933" gradientUnits="userSpaceOnUse">
<stop offset="0.39" stop-color="#FCF84A"/>
<stop offset="0.46" stop-color="#ECF74C"/>
<stop offset="0.61" stop-color="#C1F451"/>
<stop offset="0.82" stop-color="#7EEF5A"/>
<stop offset="1" stop-color="#3BEA62"/>
</linearGradient>
<linearGradient id="paint27_linear" x1="17.7394" y1="394.478" x2="31.9337" y2="373.793" gradientUnits="userSpaceOnUse">
<stop offset="0.02" stop-color="#FF45ED"/>
<stop offset="0.4" stop-color="#DD1265"/>
<stop offset="1" stop-color="#FDB60D"/>
</linearGradient>
<linearGradient id="paint28_linear" x1="2.40342" y1="386.616" x2="24.5006" y2="365.832" gradientUnits="userSpaceOnUse">
<stop offset="0.02" stop-color="#FF45ED"/>
<stop offset="0.66" stop-color="#DD1265"/>
</linearGradient>
<linearGradient id="paint29_linear" x1="23.9246" y1="360.717" x2="24.1508" y2="373.776" gradientUnits="userSpaceOnUse">
<stop stop-color="#DD1265"/>
<stop offset="0.06" stop-color="#DF1961"/>
<stop offset="0.7" stop-color="#F46330"/>
<stop offset="1" stop-color="#FC801D"/>
</linearGradient>
<linearGradient id="paint30_linear" x1="22.3028" y1="524.582" x2="18.1405" y2="513.662" gradientUnits="userSpaceOnUse">
<stop stop-color="#FE2857"/>
<stop offset="0.06" stop-color="#FE3052"/>
<stop offset="0.33" stop-color="#FD533B"/>
<stop offset="0.58" stop-color="#FC6C2A"/>
<stop offset="0.81" stop-color="#FC7B20"/>
<stop offset="1" stop-color="#FC801D"/>
</linearGradient>
<linearGradient id="paint31_linear" x1="14.376" y1="508.954" x2="20.8012" y2="514.845" gradientUnits="userSpaceOnUse">
<stop stop-color="#6B57FF"/>
<stop offset="1" stop-color="#FE2857"/>
</linearGradient>
<linearGradient id="paint32_linear" x1="1.34401" y1="510.816" x2="22.5017" y2="537.71" gradientUnits="userSpaceOnUse">
<stop stop-color="#6B57FF"/>
<stop offset="0.3" stop-color="#FE2857"/>
<stop offset="0.63" stop-color="#FE2857"/>
<stop offset="0.64" stop-color="#FE3052"/>
<stop offset="0.7" stop-color="#FD533B"/>
<stop offset="0.76" stop-color="#FC6C2A"/>
<stop offset="0.81" stop-color="#FC7B20"/>
<stop offset="0.85" stop-color="#FC801D"/>
</linearGradient>
<linearGradient id="paint33_linear" x1="13.3303" y1="542.229" x2="21.8468" y2="572.894" gradientUnits="userSpaceOnUse">
<stop offset="0.28" stop-color="#07C3F2"/>
<stop offset="0.94" stop-color="#087CFA"/>
</linearGradient>
<linearGradient id="paint34_linear" x1="15.9875" y1="546.12" x2="30.3978" y2="567.25" gradientUnits="userSpaceOnUse">
<stop offset="0.14" stop-color="#FCF84A"/>
<stop offset="0.37" stop-color="#07C3F2"/>
</linearGradient>
<linearGradient id="paint35_linear" x1="609.841" y1="808.219" x2="689.982" y2="990.095" gradientUnits="userSpaceOnUse">
<stop offset="0.28" stop-color="#07C3F2"/>
<stop offset="0.94" stop-color="#087CFA"/>
</linearGradient>
<linearGradient id="paint36_linear" x1="6.15385" y1="581.615" x2="18.6526" y2="593.1" gradientUnits="userSpaceOnUse">
<stop stop-color="#B42BF6"/>
<stop offset="0.556" stop-color="#6C70B8"/>
<stop offset="1" stop-color="#15DD69"/>
</linearGradient>
<linearGradient id="paint37_linear" x1="11.6054" y1="621.687" x2="31.5803" y2="625.668" gradientUnits="userSpaceOnUse">
<stop offset="0.24211" stop-color="#3BEA62"/>
<stop offset="0.85664" stop-color="#FCF84A"/>
</linearGradient>
<linearGradient id="paint38_linear" x1="9.46646" y1="615.821" x2="28.6455" y2="644.992" gradientUnits="userSpaceOnUse">
<stop offset="0.0176" stop-color="#3BEA62"/>
<stop offset="0.78604" stop-color="#087CFA"/>
</linearGradient>
<linearGradient id="paint39_linear" x1="9.1999" y1="632.052" x2="33.4914" y2="640.825" gradientUnits="userSpaceOnUse">
<stop offset="0.12092" stop-color="#1FAEB5"/>
<stop offset="0.97461" stop-color="#087CFA"/>
</linearGradient>
<linearGradient id="paint40_linear" x1="2.21211" y1="633.419" x2="33.5885" y2="619.513" gradientUnits="userSpaceOnUse">
<stop offset="0.12092" stop-color="#1FAEB5"/>
<stop offset="0.8556" stop-color="#FCF84A"/>
</linearGradient>
<linearGradient id="paint41_linear" x1="14.3075" y1="669.59" x2="11.4926" y2="661.258" gradientUnits="userSpaceOnUse">
<stop stop-color="#07C3F2"/>
<stop offset="1" stop-color="#6B57FF"/>
</linearGradient>
<linearGradient id="paint42_linear" x1="13.3474" y1="672.415" x2="23.4343" y2="667.351" gradientUnits="userSpaceOnUse">
<stop stop-color="#07C3F2"/>
<stop offset="1" stop-color="#009AE5"/>
</linearGradient>
<linearGradient id="paint43_linear" x1="26.136" y1="667.461" x2="9.44571" y2="654.861" gradientUnits="userSpaceOnUse">
<stop stop-color="#009AE5"/>
<stop offset="1" stop-color="#6B57FF"/>
</linearGradient>
<linearGradient id="paint44_linear" x1="8.84231" y1="676.125" x2="20.2115" y2="652.971" gradientUnits="userSpaceOnUse">
<stop offset="0.3" stop-color="#07C3F2"/>
<stop offset="0.6" stop-color="#3BEA62"/>
</linearGradient>
<linearGradient id="paint45_linear" x1="28.44" y1="707.722" x2="8.81139" y2="711.422" gradientUnits="userSpaceOnUse">
<stop stop-color="#07C3F2"/>
<stop offset="1" stop-color="#6B57FF"/>
</linearGradient>
<linearGradient id="paint46_linear" x1="2675.43" y1="1498.53" x2="695.635" y2="3457.67" gradientUnits="userSpaceOnUse">
<stop stop-color="#07C3F2"/>
<stop offset="1" stop-color="#6B57FF"/>
</linearGradient>
<linearGradient id="paint47_linear" x1="30.3977" y1="712.485" x2="8.39316" y2="692.253" gradientUnits="userSpaceOnUse">
<stop offset="0.15" stop-color="#07C3F2"/>
<stop offset="0.53" stop-color="#6B57FF"/>
<stop offset="1" stop-color="#FF318C"/>
</linearGradient>
<linearGradient id="paint48_linear" x1="15.974" y1="722.573" x2="19.2105" y2="753.252" gradientUnits="userSpaceOnUse">
<stop stop-color="#FCF84A"/>
<stop offset="0.32" stop-color="#ABE682"/>
<stop offset="0.79" stop-color="#36CDD2"/>
<stop offset="1" stop-color="#07C3F2"/>
</linearGradient>
<linearGradient id="paint49_linear" x1="4.10656" y1="723.044" x2="33.1322" y2="736.813" gradientUnits="userSpaceOnUse">
<stop stop-color="#3BEA62"/>
<stop offset="1" stop-color="#087CFA"/>
</linearGradient>
<linearGradient id="paint50_linear" x1="6.75617" y1="753.02" x2="35.9803" y2="732.564" gradientUnits="userSpaceOnUse">
<stop stop-color="#009AE5"/>
<stop offset="0.18" stop-color="#0490DD"/>
<stop offset="0.49" stop-color="#1073C6"/>
<stop offset="0.89" stop-color="#2346A1"/>
<stop offset="1" stop-color="#293896"/>
</linearGradient>
<linearGradient id="paint51_linear" x1="33.2332" y1="762.679" x2="10.0183" y2="765.771" gradientUnits="userSpaceOnUse">
<stop stop-color="#FC801D"/>
<stop offset="1" stop-color="#6B57FF"/>
</linearGradient>
<linearGradient id="paint52_linear" x1="17.8045" y1="775.193" x2="19.7863" y2="766.814" gradientUnits="userSpaceOnUse">
<stop stop-color="#07C3F2"/>
<stop offset="1" stop-color="#6B57FF"/>
</linearGradient>
<linearGradient id="paint53_linear" x1="29.3074" y1="762.867" x2="5.22514" y2="778.231" gradientUnits="userSpaceOnUse">
<stop stop-color="#FC801D"/>
<stop offset="0.92" stop-color="#6B57FF"/>
</linearGradient>
<linearGradient id="paint54_linear" x1="3004.51" y1="2176.62" x2="1167.63" y2="909.273" gradientUnits="userSpaceOnUse">
<stop stop-color="#07C3F2"/>
<stop offset="1" stop-color="#6B57FF"/>
</linearGradient>
<linearGradient id="paint55_linear" x1="18.9634" y1="819.703" x2="12.6206" y2="796.094" gradientUnits="userSpaceOnUse">
<stop offset="0.05" stop-color="#6B57FF"/>
<stop offset="0.12" stop-color="#7556FE"/>
<stop offset="0.24" stop-color="#8F53FB"/>
<stop offset="0.4" stop-color="#BA4DF5"/>
<stop offset="0.58" stop-color="#F446EE"/>
<stop offset="0.61" stop-color="#FF45ED"/>
<stop offset="0.69" stop-color="#FF3BBE"/>
<stop offset="0.77" stop-color="#FF318C"/>
<stop offset="0.99" stop-color="#FC801D"/>
</linearGradient>
<linearGradient id="paint56_linear" x1="33.432" y1="816.487" x2="21.0514" y2="812.41" gradientUnits="userSpaceOnUse">
<stop offset="0.03" stop-color="#6B57FF"/>
<stop offset="0.39" stop-color="#FF45ED"/>
<stop offset="0.49" stop-color="#FF4DD1"/>
<stop offset="0.7" stop-color="#FE6189"/>
<stop offset="1" stop-color="#FC801D"/>
</linearGradient>
<linearGradient id="paint57_linear" x1="10.3611" y1="838.611" x2="15.9908" y2="862.166" gradientUnits="userSpaceOnUse">
<stop stop-color="#6B57FF"/>
<stop offset="0.13" stop-color="#9A51F9"/>
<stop offset="0.27" stop-color="#C64CF4"/>
<stop offset="0.39" stop-color="#E548F0"/>
<stop offset="0.5" stop-color="#F846EE"/>
<stop offset="0.57" stop-color="#FF45ED"/>
<stop offset="0.63" stop-color="#FF57C9"/>
<stop offset="0.81" stop-color="#FE8A65"/>
<stop offset="0.94" stop-color="#FDAA26"/>
<stop offset="1" stop-color="#FDB60D"/>
</linearGradient>
<linearGradient id="paint58_linear" x1="25.8789" y1="846.36" x2="20.2937" y2="830.355" gradientUnits="userSpaceOnUse">
<stop stop-color="#6B57FF"/>
<stop offset="0.14" stop-color="#8953FB"/>
<stop offset="0.44" stop-color="#D64AF2"/>
<stop offset="0.59" stop-color="#FF45ED"/>
<stop offset="0.97" stop-color="#FDB60D"/>
</linearGradient>
<linearGradient id="paint59_linear" x1="13.9337" y1="854.746" x2="18.5691" y2="843.754" gradientUnits="userSpaceOnUse">
<stop offset="0.12" stop-color="#FF45ED"/>
<stop offset="0.2" stop-color="#DF49F1"/>
<stop offset="0.3" stop-color="#BC4DF5"/>
<stop offset="0.42" stop-color="#9E51F9"/>
<stop offset="0.53" stop-color="#8854FC"/>
<stop offset="0.66" stop-color="#7855FD"/>
<stop offset="0.81" stop-color="#6E57FF"/>
<stop offset="1" stop-color="#6B57FF"/>
</linearGradient>
<linearGradient id="paint60_linear" x1="4.85485" y1="882.346" x2="20.6606" y2="898.481" gradientUnits="userSpaceOnUse">
<stop offset="0.1" stop-color="#FF45ED"/>
<stop offset="0.11" stop-color="#F846EE"/>
<stop offset="0.28" stop-color="#AC4FF7"/>
<stop offset="0.41" stop-color="#7D55FD"/>
<stop offset="0.47" stop-color="#6B57FF"/>
<stop offset="0.48" stop-color="#655DFE"/>
<stop offset="0.57" stop-color="#4482FA"/>
<stop offset="0.66" stop-color="#299EF6"/>
<stop offset="0.76" stop-color="#16B3F4"/>
<stop offset="0.85" stop-color="#0BBFF2"/>
<stop offset="0.94" stop-color="#07C3F2"/>
</linearGradient>
<linearGradient id="paint61_linear" x1="6.04113" y1="891.751" x2="17.5817" y2="882.134" gradientUnits="userSpaceOnUse">
<stop offset="0.04" stop-color="#FF45ED"/>
<stop offset="0.05" stop-color="#FE45ED"/>
<stop offset="0.2" stop-color="#D14BF3"/>
<stop offset="0.36" stop-color="#AC4FF7"/>
<stop offset="0.51" stop-color="#9053FB"/>
<stop offset="0.67" stop-color="#7B55FD"/>
<stop offset="0.82" stop-color="#6F57FF"/>
<stop offset="0.97" stop-color="#6B57FF"/>
</linearGradient>
<linearGradient id="paint62_linear" x1="20.2834" y1="873.459" x2="28.0423" y2="889.317" gradientUnits="userSpaceOnUse">
<stop offset="0.2" stop-color="#FF45ED"/>
<stop offset="0.29" stop-color="#F646EE"/>
<stop offset="0.43" stop-color="#DD49F1"/>
<stop offset="0.61" stop-color="#B64EF6"/>
<stop offset="0.82" stop-color="#7F55FD"/>
<stop offset="0.89" stop-color="#6B57FF"/>
</linearGradient>
<linearGradient id="paint63_linear" x1="10.8892" y1="874.107" x2="30.3806" y2="869.383" gradientUnits="userSpaceOnUse">
<stop offset="0.1" stop-color="#FF45ED"/>
<stop offset="0.17" stop-color="#F64AED"/>
<stop offset="0.29" stop-color="#DD56EE"/>
<stop offset="0.44" stop-color="#B56AEE"/>
<stop offset="0.62" stop-color="#7E87F0"/>
<stop offset="0.81" stop-color="#38AAF1"/>
<stop offset="0.94" stop-color="#07C3F2"/>
</linearGradient>
<linearGradient id="paint64_linear" x1="0.915418" y1="922.107" x2="33.0651" y2="913.814" gradientUnits="userSpaceOnUse">
<stop offset="0.12" stop-color="#6B57FF"/>
<stop offset="0.54" stop-color="#FF45ED"/>
<stop offset="0.85" stop-color="#DD1265"/>
</linearGradient>
<linearGradient id="paint65_linear" x1="23.1325" y1="919.838" x2="33.3565" y2="905.822" gradientUnits="userSpaceOnUse">
<stop offset="0.19" stop-color="#DD1265"/>
<stop offset="0.29" stop-color="#DE146A"/>
<stop offset="0.41" stop-color="#E21977"/>
<stop offset="0.53" stop-color="#E7218E"/>
<stop offset="0.66" stop-color="#EF2DAD"/>
<stop offset="0.79" stop-color="#F93CD5"/>
<stop offset="0.85" stop-color="#FF45ED"/>
</linearGradient>
<linearGradient id="paint66_linear" x1="32.3417" y1="488.355" x2="6.9703" y2="473.798" gradientUnits="userSpaceOnUse">
<stop stop-color="#DD1265"/>
<stop offset="0.48" stop-color="#DD1265"/>
<stop offset="0.94" stop-color="#FDB60D"/>
</linearGradient>
<linearGradient id="paint67_linear" x1="17.256" y1="472.375" x2="27.312" y2="500.146" gradientUnits="userSpaceOnUse">
<stop offset="0.14" stop-color="#087CFA"/>
<stop offset="0.48" stop-color="#DD1265"/>
<stop offset="0.96" stop-color="#087CFA"/>
</linearGradient>
<linearGradient id="paint68_linear" x1="9.72342" y1="473.232" x2="17.1497" y2="499.632" gradientUnits="userSpaceOnUse">
<stop offset="0.28" stop-color="#DD1265"/>
<stop offset="0.97" stop-color="#FDB60D"/>
</linearGradient>
<linearGradient id="paint69_linear" x1="32.3417" y1="452.355" x2="6.9703" y2="437.798" gradientUnits="userSpaceOnUse">
<stop stop-color="#DD1265"/>
<stop offset="0.48" stop-color="#DD1265"/>
<stop offset="0.94" stop-color="#FDB60D"/>
</linearGradient>
<linearGradient id="paint70_linear" x1="17.256" y1="436.375" x2="27.312" y2="464.146" gradientUnits="userSpaceOnUse">
<stop offset="0.14" stop-color="#087CFA"/>
<stop offset="0.48" stop-color="#DD1265"/>
<stop offset="0.96" stop-color="#087CFA"/>
</linearGradient>
<linearGradient id="paint71_linear" x1="9.72342" y1="437.232" x2="17.1497" y2="463.632" gradientUnits="userSpaceOnUse">
<stop offset="0.28" stop-color="#DD1265"/>
<stop offset="0.97" stop-color="#FDB60D"/>
</linearGradient>
<linearGradient id="paint72_linear" x1="5.10872" y1="404.975" x2="15.253" y2="430.634" gradientUnits="userSpaceOnUse">
<stop offset="0.22" stop-color="#C40B55"/>
<stop offset="0.683" stop-color="#E343E6"/>
<stop offset="0.925" stop-color="#F59252"/>
</linearGradient>
<linearGradient id="paint73_linear" x1="26.2702" y1="432.325" x2="1.46244" y2="405.937" gradientUnits="userSpaceOnUse">
<stop offset="0.113" stop-color="#FFBD00"/>
<stop offset="0.586" stop-color="#E343E6"/>
<stop offset="0.817" stop-color="#EC841B"/>
<stop offset="0.935" stop-color="#FFBD00"/>
</linearGradient>
<linearGradient id="paint74_linear" x1="13.4536" y1="396.326" x2="34.7308" y2="421.738" gradientUnits="userSpaceOnUse">
<stop offset="0.129" stop-color="#FFBD00"/>
<stop offset="0.64" stop-color="#E343E6"/>
<stop offset="0.909" stop-color="#C40B55"/>
</linearGradient>
<linearGradient id="paint75_linear" x1="4.38748" y1="940.725" x2="20.25" y2="968.962" gradientUnits="userSpaceOnUse">
<stop stop-color="#3AE65D"/>
<stop offset="0.563066" stop-color="#4F88B5"/>
<stop offset="0.988281" stop-color="#604AFB"/>
</linearGradient>
<linearGradient id="paint76_linear" x1="16.972" y1="988.972" x2="32.506" y2="1004.51" gradientUnits="userSpaceOnUse">
<stop offset="0.26" stop-color="#F7C72A"/>
<stop offset="0.79" stop-color="#DD1265"/>
</linearGradient>
<linearGradient id="paint77_linear" x1="13.138" y1="85.144" x2="31.708" y2="103.708" gradientUnits="userSpaceOnUse">
<stop stop-color="#F7C72A"/>
<stop offset="0.43" stop-color="#D911A5"/>
<stop offset="1" stop-color="#9E00E9"/>
</linearGradient>
<linearGradient id="paint78_linear" x1="21.8125" y1="75.4062" x2="30.7187" y2="87.5938" gradientUnits="userSpaceOnUse">
<stop offset="0.118129" stop-color="#F7C72A"/>
<stop offset="0.562199" stop-color="#F09B48"/>
<stop offset="0.89" stop-color="#E7636D"/>
</linearGradient>
<linearGradient id="paint79_linear" x1="4.34375" y1="92.875" x2="15.125" y2="103.656" gradientUnits="userSpaceOnUse">
<stop stop-color="#FF8364"/>
<stop offset="0.5" stop-color="#DF338E"/>
<stop offset="0.89" stop-color="#CC0DB4"/>
</linearGradient>
<linearGradient id="paint80_linear" x1="8.52407" y1="8.52407" x2="31.8393" y2="31.8393" gradientUnits="userSpaceOnUse">
<stop offset="0.17" stop-color="#00AEEF"/>
<stop offset="0.54" stop-color="#7456FF"/>
<stop offset="0.85" stop-color="#B627F0"/>
</linearGradient>
<linearGradient id="paint81_linear" x1="8.52407" y1="44.5241" x2="31.8393" y2="67.8393" gradientUnits="userSpaceOnUse">
<stop offset="0.17" stop-color="#00AEEF"/>
<stop offset="0.54" stop-color="#7456FF"/>
<stop offset="0.85" stop-color="#B627F0"/>
</linearGradient>
<linearGradient id="paint82_linear" x1="25.7859" y1="1019.35" x2="3.95762" y2="1019.35" gradientUnits="userSpaceOnUse">
<stop stop-color="#21D789"/>
<stop offset="0.91691" stop-color="#FCF84A"/>
</linearGradient>
<linearGradient id="paint83_linear" x1="26.6564" y1="1018.86" x2="26.6564" y2="1046.11" gradientUnits="userSpaceOnUse">
<stop stop-color="#21D789"/>
<stop offset="1" stop-color="#087CFA"/>
</linearGradient>
<linearGradient id="paint84_linear" x1="44.7091" y1="1043.94" x2="12.2172" y2="1017.66" gradientUnits="userSpaceOnUse">
<stop offset="0.10491" stop-color="#21D789"/>
<stop offset="0.96676" stop-color="#087CFA"/>
</linearGradient>
<linearGradient id="paint85_linear" x1="29.8346" y1="1006.82" x2="7.13729" y2="1032.54" gradientUnits="userSpaceOnUse">
<stop offset="0.23484" stop-color="#21D789"/>
<stop offset="0.7396" stop-color="#087CFA"/>
</linearGradient>
<clipPath id="clip0">
<rect width="33" height="34" fill="white" transform="translate(1.34998 1009)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 71 KiB

696
assets/index.html Normal file
View File

@ -0,0 +1,696 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Get keys</title>
<style>
:root {
--text-grey: #9e9e9e;
--text-main: rgba(0, 0, 0, 0.87);
--spacing: 4px;
--size: 64px;
--radius: 1.5rem;
--accent: #5380f7;
--text-sm: 0.875rem;
--main-bg: #fff;
--card-bg: #fff;
--hover-color: #eee;
--border-color: rgba(0, 0, 0, 0.05);
--grey-400: rgba(0, 0, 0, 0.04);
--grey-600: rgba(0, 0, 0, 0.06);
}
@media (prefers-color-scheme: dark) {
:root {
--main-bg: rgb(0, 0, 0);
--card-bg: rgb(31, 34, 38);
--text-main: #d9d9d9;
--text-grey: #6e767d;
--accent: #1d9bf0;
--hover-color: rgba(255, 255, 255, 0.07);
--border-color: #4b4648;
}
}
body {
font-size: 1rem;
line-height: 1.5;
word-wrap: break-word;
font-kerning: normal;
font-family: 'Gotham SSm A', 'Gotham SSm B', 'Arial Unicode MS', Helvetica, sans-serif;
margin: 0;
padding: 0;
-webkit-font-smoothing: antialiased;
background-color: var(--main-bg);
}
* ul, * ol {
list-style: none;
padding: 0;
margin: 0;
}
*[role='button'], button {
cursor: pointer;
}
.color-primary {
color: var(--text-main);
}
.mt-0 {
margin-top: 0;
}
.radius-1 {
border-radius: var(--radius);
}
.px-6 {
padding-left: calc(var(--spacing) * 6);
padding-right: calc(var(--spacing) * 6);
}
.py-10 {
padding-top: calc(var(--spacing) * 10);
padding-bottom: calc(var(--spacing) * 10);
}
.pd-6 {
padding: calc(var(--spacing) * 6);
}
.pt-1 {
padding-top: var(--spacing);
}
.pb-0 {
padding-bottom: 0;
}
.overflow-hidden {
overflow: hidden;
}
.flex {
display: flex;
}
.justify-between {
justify-content: space-between;
}
.justify-center {
justify-content: center;
}
.items-center {
align-items: center;
}
.shrink-0 {
flex-shrink: 0;
}
.text-grey {
color: var(--text-grey);
}
.text-sm {
font-size: 0.875rem;
}
.bg-card {
background-color: var(--card-bg);
}
.truncate {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: var(--line, 3);
overflow: hidden;
}
.truncate-1 {
--line: 1;
}
.overflow-ellipsis {
text-overflow: ellipsis;
}
.z-grid {
display: grid;
grid-gap: var(--gutter, 1rem);
grid-template-columns: repeat(auto-fill, minmax(min(var(--space, 10rem), 100%), 1fr));
}
.card {
box-shadow: rgb(0 0 0 / 30%) 0 8px 40px -12px;
border-radius: 1.5rem;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1) 0ms;
width: 90%;
position: relative;
overflow: visible;
background-color: var(--card-bg);
margin: 0 auto;
}
.card:hover {
transform: translateY(-2px);
}
.card:hover .mask {
bottom: -1.5rem;
}
.card:hover .mask-c-1 {
bottom: -2.5rem;
}
.container {
padding-top: calc(var(--spacing) * 10);
}
.container p {
position: relative;
cursor: pointer;
transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
}
.container p::after {
content: attr(data-content);
position: absolute;
transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
color: transparent;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
border-radius: var(--radius);
}
.container p:hover {
color: transparent;
}
.container p:hover::after {
color: var(--text-main);
background-color: var(--hover-color);
}
.toggle li {
z-index: 99;
position: relative;
background: transparent;
padding: 0 20px;
color: var(--text-main);
transition: background-color 250ms ease-out;
}
.toggle li:hover {
background-color: var(--hover-color);
}
.toggle li.active a {
color: var(--accent);
}
.toggle li:first-child {
border-top-left-radius: var(--text-sm);
border-top-right-radius: var(--text-sm);
}
.toggle li:last-child {
border-bottom-left-radius: var(--text-sm);
border-bottom-right-radius: var(--text-sm);
}
.toggle li:last-child a {
border-bottom: 0;
}
.toggle li a {
display: block;
border-bottom: 1px solid var(--border-color);
padding: 16px 0;
color: inherit;
text-decoration: none;
white-space: nowrap;
}
.icon {
background-image: url('images/icons.svg?t=4567');
background-size: 64px;
background-position-x: 0;
}
.icon-ii {
background-position-y: -448px;
}
.icon-ps {
background-position-y: -512px;
}
.icon-ac {
background-position-y: -192px;
}
.icon-db {
background-position-y: -320px;
}
.icon-rm {
background-position-y: -896px;
}
.icon-ws {
background-position-y: -960px;
}
.icon-rd {
background-position-y: -832px;
}
.icon-cl {
background-position-y: -256px;
}
.icon-pc {
background-position-y: -576px;
}
.icon-go {
background-position-y: -384px;
}
.icon-ds {
background-position-y: -1792px;
}
.icon-dc {
background-position-y: -1408px;
}
.icon-dpn {
background-position-y: -1536px;
}
.icon-dm {
background-position-y: -1472px;
}
.mask {
transition: 0.2s;
position: absolute;
z-index: -1;
width: 88%;
height: 100%;
bottom: 0;
border-radius: 1.5rem;
background-color: var(--grey-600);
left: 50%;
transform: translateX(-50%);
}
.mask-c-1 {
bottom: 0;
width: 72%;
background-color: var(--grey-400);
}
.avatar-wrapper {
position: relative;
width: var(--size);
height: var(--size);
font-size: 1.25rem;
user-select: none;
transform: translateY(50%);
}
.avatar-wrapper img, .avatar-wrapper .icon {
width: 100%;
height: 100%;
margin: 0;
background-color: var(--card-bg);
color: transparent;
object-fit: cover;
text-align: center;
text-indent: 10000px;
}
header.tip a {
color: var(--accent);
text-decoration: none;
}
header.tip p {
word-break: break-word;
word-wrap: break-word;
}
main hr {
margin: 0;
padding: 0;
background: var(--border-color);
height: 1px;
border: none;
}
footer {
--_size: 40px;
padding-top: var(--_size);
width: 96%;
margin: calc(var(--spacing) * 10) auto 0;
padding-bottom: var(--_size);
border-top: 1px solid var(--border-color);
-moz-box-align: center;
-webkit-box-pack: justify;
}
footer .lt-panel p:nth-of-type(1) {
color: inherit;
}
</style>
</head>
<body>
<main class="px-6 z-grid py-10" style="--space: 20rem; --gutter: 3.5rem">
<article class="card" >
<header>
<div class="flex items-center justify-between px-6 pt-1 pb-0 bg-card radius-1">
<div class="avatar-wrapper flex items-center justify-center overflow-hidden shrink-0">
<div class="icon icon-ii" role="img"></div>
</div>
</div>
<hr/>
</header>
<div class="pd-6 overflow-hidden bg-card container radius-1">
<h1 class="truncate truncate-1 color-primary mt-0 overflow-ellipsis" title='IntelliJ IDEA'>IntelliJ
IDEA</h1>
<p title="Click to copy full license text" class="truncate text-sm text-grey" onclick="copyLicense(this)"
data-content="Copy to clipboard">
*********************************************************************************************************************************************************
</p>
</div>
<div class="mask"></div>
<div class="mask mask-c-1"></div>
</article>
<article class="card" >
<header>
<div class="flex items-center justify-between px-6 pt-1 pb-0 bg-card radius-1">
<div class="avatar-wrapper flex items-center justify-center overflow-hidden shrink-0">
<div class="icon icon-ps" role="img"></div>
</div>
</div>
<hr/>
</header>
<div class="pd-6 overflow-hidden bg-card container radius-1">
<h1 class="truncate truncate-1 color-primary mt-0 overflow-ellipsis" title='PhpStorm'>PhpStorm</h1>
<p title="Click to copy full license text" class="truncate text-sm text-grey" onclick="copyLicense(this)"
data-content="Copy to clipboard">
*********************************************************************************************************************************************************
</p>
</div>
<div class="mask"></div>
<div class="mask mask-c-1"></div>
</article>
<article class="card" >
<header>
<div class="flex items-center justify-between px-6 pt-1 pb-0 bg-card radius-1">
<div class="avatar-wrapper flex items-center justify-center overflow-hidden shrink-0">
<div class="icon icon-ac" role="img"></div>
</div>
</div>
<hr/>
</header>
<div class="pd-6 overflow-hidden bg-card container radius-1">
<h1 class="truncate truncate-1 color-primary mt-0 overflow-ellipsis" title='AppCode'>AppCode</h1>
<p title="Click to copy full license text" class="truncate text-sm text-grey" onclick="copyLicense(this)"
data-content="Copy to clipboard">
*********************************************************************************************************************************************************
</p>
</div>
<div class="mask"></div>
<div class="mask mask-c-1"></div>
</article>
<article class="card" >
<header>
<div class="flex items-center justify-between px-6 pt-1 pb-0 bg-card radius-1">
<div class="avatar-wrapper flex items-center justify-center overflow-hidden shrink-0">
<div class="icon icon-db" role="img"></div>
</div>
</div>
<hr/>
</header>
<div class="pd-6 overflow-hidden bg-card container radius-1">
<h1 class="truncate truncate-1 color-primary mt-0 overflow-ellipsis" title='DataGrip'>DataGrip</h1>
<p title="Click to copy full license text" class="truncate text-sm text-grey" onclick="copyLicense(this)"
data-content="Copy to clipboard">
*********************************************************************************************************************************************************
</p>
</div>
<div class="mask"></div>
<div class="mask mask-c-1"></div>
</article>
<article class="card" >
<header>
<div class="flex items-center justify-between px-6 pt-1 pb-0 bg-card radius-1">
<div class="avatar-wrapper flex items-center justify-center overflow-hidden shrink-0">
<div class="icon icon-rm" role="img"></div>
</div>
</div>
<hr/>
</header>
<div class="pd-6 overflow-hidden bg-card container radius-1">
<h1 class="truncate truncate-1 color-primary mt-0 overflow-ellipsis" title='RubyMine'>RubyMine</h1>
<p title="Click to copy full license text" class="truncate text-sm text-grey" onclick="copyLicense(this)"
data-content="Copy to clipboard">
*********************************************************************************************************************************************************
</p>
</div>
<div class="mask"></div>
<div class="mask mask-c-1"></div>
</article>
<article class="card" >
<header>
<div class="flex items-center justify-between px-6 pt-1 pb-0 bg-card radius-1">
<div class="avatar-wrapper flex items-center justify-center overflow-hidden shrink-0">
<div class="icon icon-ws" role="img"></div>
</div>
</div>
<hr/>
</header>
<div class="pd-6 overflow-hidden bg-card container radius-1">
<h1 class="truncate truncate-1 color-primary mt-0 overflow-ellipsis" title='WebStorm'>WebStorm</h1>
<p title="Click to copy full license text" class="truncate text-sm text-grey" onclick="copyLicense(this)"
data-content="Copy to clipboard">
*********************************************************************************************************************************************************
</p>
</div>
<div class="mask"></div>
<div class="mask mask-c-1"></div>
</article>
<article class="card" >
<header>
<div class="flex items-center justify-between px-6 pt-1 pb-0 bg-card radius-1">
<div class="avatar-wrapper flex items-center justify-center overflow-hidden shrink-0">
<div class="icon icon-rd" role="img"></div>
</div>
</div>
<hr/>
</header>
<div class="pd-6 overflow-hidden bg-card container radius-1">
<h1 class="truncate truncate-1 color-primary mt-0 overflow-ellipsis" title='Rider'>Rider</h1>
<p title="Click to copy full license text" class="truncate text-sm text-grey" onclick="copyLicense(this)"
data-content="Copy to clipboard">
*********************************************************************************************************************************************************
</p>
</div>
<div class="mask"></div>
<div class="mask mask-c-1"></div>
</article>
<article class="card" >
<header>
<div class="flex items-center justify-between px-6 pt-1 pb-0 bg-card radius-1">
<div class="avatar-wrapper flex items-center justify-center overflow-hidden shrink-0">
<div class="icon icon-cl" role="img"></div>
</div>
</div>
<hr/>
</header>
<div class="pd-6 overflow-hidden bg-card container radius-1">
<h1 class="truncate truncate-1 color-primary mt-0 overflow-ellipsis" title='CLion'>CLion</h1>
<p title="Click to copy full license text" class="truncate text-sm text-grey" onclick="copyLicense(this)"
data-content="Copy to clipboard">
*********************************************************************************************************************************************************
</p>
</div>
<div class="mask"></div>
<div class="mask mask-c-1"></div>
</article>
<article class="card" >
<header>
<div class="flex items-center justify-between px-6 pt-1 pb-0 bg-card radius-1">
<div class="avatar-wrapper flex items-center justify-center overflow-hidden shrink-0">
<div class="icon icon-pc" role="img"></div>
</div>
</div>
<hr/>
</header>
<div class="pd-6 overflow-hidden bg-card container radius-1">
<h1 class="truncate truncate-1 color-primary mt-0 overflow-ellipsis" title='PyCharm'>PyCharm</h1>
<p title="Click to copy full license text" class="truncate text-sm text-grey" onclick="copyLicense(this)"
data-content="Copy to clipboard">
*********************************************************************************************************************************************************
</p>
</div>
<div class="mask"></div>
<div class="mask mask-c-1"></div>
</article>
<article class="card" >
<header>
<div class="flex items-center justify-between px-6 pt-1 pb-0 bg-card radius-1">
<div class="avatar-wrapper flex items-center justify-center overflow-hidden shrink-0">
<div class="icon icon-go" role="img"></div>
</div>
</div>
<hr/>
</header>
<div class="pd-6 overflow-hidden bg-card container radius-1">
<h1 class="truncate truncate-1 color-primary mt-0 overflow-ellipsis" title='GoLand'>GoLand</h1>
<p title="Click to copy full license text" class="truncate text-sm text-grey" onclick="copyLicense(this)"
data-content="Copy to clipboard">
*********************************************************************************************************************************************************
</p>
</div>
<div class="mask"></div>
<div class="mask mask-c-1"></div>
</article>
<article class="card" >
<header>
<div class="flex items-center justify-between px-6 pt-1 pb-0 bg-card radius-1">
<div class="avatar-wrapper flex items-center justify-center overflow-hidden shrink-0">
<div class="icon icon-ds" role="img"></div>
</div>
</div>
<hr/>
</header>
<div class="pd-6 overflow-hidden bg-card container radius-1">
<h1 class="truncate truncate-1 color-primary mt-0 overflow-ellipsis" title='DataSpell'>DataSpell</h1>
<p title="Click to copy full license text" class="truncate text-sm text-grey" onclick="copyLicense(this)"
data-content="Copy to clipboard">
*********************************************************************************************************************************************************
</p>
</div>
<div class="mask"></div>
<div class="mask mask-c-1"></div>
</article>
<article class="card" >
<header>
<div class="flex items-center justify-between px-6 pt-1 pb-0 bg-card radius-1">
<div class="avatar-wrapper flex items-center justify-center overflow-hidden shrink-0">
<div class="icon icon-dc" role="img"></div>
</div>
</div>
<hr/>
</header>
<div class="pd-6 overflow-hidden bg-card container radius-1">
<h1 class="truncate truncate-1 color-primary mt-0 overflow-ellipsis" title='dotCover'>dotCover</h1>
<p title="Click to copy full license text" class="truncate text-sm text-grey" onclick="copyLicense(this)"
data-content="Copy to clipboard">
*********************************************************************************************************************************************************
</p>
</div>
<div class="mask"></div>
<div class="mask mask-c-1"></div>
</article>
<article class="card" >
<header>
<div class="flex items-center justify-between px-6 pt-1 pb-0 bg-card radius-1">
<div class="avatar-wrapper flex items-center justify-center overflow-hidden shrink-0">
<div class="icon icon-dpn" role="img"></div>
</div>
</div>
<hr/>
</header>
<div class="pd-6 overflow-hidden bg-card container radius-1">
<h1 class="truncate truncate-1 color-primary mt-0 overflow-ellipsis" title='dotTrace'>dotTrace</h1>
<p title="Click to copy full license text" class="truncate text-sm text-grey" onclick="copyLicense(this)"
data-content="Copy to clipboard">
*********************************************************************************************************************************************************
</p>
</div>
<div class="mask"></div>
<div class="mask mask-c-1"></div>
</article>
<article class="card" >
<header>
<div class="flex items-center justify-between px-6 pt-1 pb-0 bg-card radius-1">
<div class="avatar-wrapper flex items-center justify-center overflow-hidden shrink-0">
<div class="icon icon-dm" role="img"></div>
</div>
</div>
<hr/>
</header>
<div class="pd-6 overflow-hidden bg-card container radius-1">
<h1 class="truncate truncate-1 color-primary mt-0 overflow-ellipsis" title='dotMemory'>dotMemory</h1>
<p title="Click to copy full license text" class="truncate text-sm text-grey" onclick="copyLicense(this)"
data-content="Copy to clipboard">
*********************************************************************************************************************************************************
</p>
</div>
<div class="mask"></div>
<div class="mask mask-c-1"></div>
</article>
</main>
<footer class="flex items-center justify-between">
<div class="text-sm text-grey">Theme by QieTuZai</div>
<div class="text-sm text-grey">Copy from ja-netfilter</div>
</footer>
<script>
const codes = ["YTD", "QDGO", "MF", "DG", "PS", "QA", "IIE", "YTWE", "FLS", "DLE", "RFU", "PPS", "PCWMP", "II", "TCC", "RSU", "PCC", "RC", "PCE", "FLIJ", "TBA", "DL", "SPP", "QDCLD", "SPA", "DMCLP", "PSW", "GW", "PSI", "IIU", "DMU", "PWS", "HB", "WS", "PCP", "KT", "DCCLT", "RSCLT", "WRS", "RSC", "RRD", "TC", "IIC", "QDPY", "DPK", "DC", "PDB", "DPPS", "QDPHP", "GO", "HCC", "RDCPPP", "QDJVMC", "CL", "DM", "CWML", "FLL", "RR", "QDJS", "RS", "RM", "DS", "MPS", "DPN", "US", "CLN", "DPCLT", "RSV", "MPSIIP", "DB", "QDANDC", "AC", "QDJVM", "PRB", "RD", "CWMR", "SP", "RS0", "DP", "RSF", "PGO", "QDPYC", "PPC", "PC", "EHS", "RSCHB", "FL", "QDNET", "JCD"]
window.copyLicense = async function () {
let products = Array.from(codes).map((code) => {
return {code: code}
})
let data = {
"licenseeName": "test",
"assigneeName": "test",
"assigneeEmail": "",
"licenseRestriction": "",
"checkConcurrentUse": false,
"products": products,
"metadata": "0120230102PPAA013009",
"hash": "41472961/0:1563609451",
"gracePeriodDays": 7,
"autoProlongated": true,
"isAutoProlongated": true
}
let resp = await fetch('/generateLicense', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
}).then(response => response.json())
navigator.clipboard.writeText(resp.license)
.then(() => {
alert("The activation code has been copied to your clipboard");
})
}
</script>
</body>
</html>

View File

@ -1,3 +1,114 @@
fn main() {
println!("Hello, world!");
use std::error::Error;
use axum::{
routing::get,
Router,
response::Json,
response::Html,
};
use axum::http::header;
use axum::routing::post;
use serde::{Deserialize, Serialize};
use serde_json::{json, Value};
const INDEX_HTML: &[u8] = include_bytes!("../assets/index.html");
const ICONS: &[u8] = include_bytes!("../assets/images/icons.svg");
async fn generate_license(Json(payload): Json<License>) -> Json<Value> {
dbg!(payload);
Json(json!({ "data": 42 }))
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
let app = Router::new()
.route("/", get(|| async { Html(INDEX_HTML) }))
.route("/images/icons.svg", get(|| async { ([(header::CONTENT_TYPE, "image/svg+xml")], ICONS) }))
.route("/generateLicense", post(generate_license));
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await?;
axum::serve(listener, app).await?;
return Ok(());
}
#[derive(Debug, Serialize, Deserialize)]
pub struct License {
license_id: Option<String>,
#[serde(default = "default_licensee_name")]
licensee_name: String,
#[serde(default = "default_empty_str")]
assignee_name: String,
#[serde(default = "default_empty_str")]
assignee_email: String,
#[serde(default = "default_empty_str")]
license_restriction: String,
#[serde(default = "default_false")]
check_concurrent_use: bool,
products: Vec<Product>,
#[serde(default = "default_metadata")]
metadata: String,
#[serde(default = "default_hash")]
hash: String,
#[serde(default = "default_grace_period_days")]
grace_period_days: i32,
#[serde(default = "default_true")]
auto_prolongated: bool,
#[serde(default = "default_true")]
is_auto_prolongated: bool,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Product {
code: String,
#[serde(default = "default_expire_date")]
fallback_date: String,
#[serde(default = "default_expire_date")]
paid_up_to: String,
#[serde(default = "default_true")]
extended: bool,
}
fn default_licensee_name() -> String {
String::from("for test only")
}
fn default_empty_str() -> String {
String::from("")
}
fn default_false() -> bool {
false
}
fn default_true() -> bool {
true
}
fn default_metadata() -> String {
"0120230102PPAA013009".into()
}
fn default_hash() -> String {
"41472961/0:1563609451".into()
}
fn default_grace_period_days() -> i32 {
7
}
fn default_expire_date() -> String {
"2023-12-31".into()
}