landing init

This commit is contained in:
belikovme 2024-11-24 14:23:46 +07:00
commit e650e52386
941 changed files with 165266 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
node_modules

20609
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

51
package.json Normal file
View File

@ -0,0 +1,51 @@
{
"name": "buffer-landing-page",
"version": "0.1.0",
"private": true,
"dependencies": {
"@headlessui/react": "^2.2.0",
"@heroicons/react": "^2.1.5",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"antd": "^5.21.1",
"framer-motion": "^11.9.0",
"lucide-react": "^0.263.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-intersection-observer": "^9.13.1",
"react-router-dom": "^6.28.0",
"react-scripts": "5.0.1",
"styled-components": "^6.1.13",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"autoprefixer": "^10.4.14",
"postcss": "^8.4.24",
"tailwindcss": "^3.3.2"
}
}

6
postcss.config.js Normal file
View File

@ -0,0 +1,6 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}

BIN
public/icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

49
public/index.html Normal file
View File

@ -0,0 +1,49 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/logotip_just_circle.png" />
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Oswald:wght@200..700&display=swap" rel="stylesheet">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="qWickPost"
/>
<link rel="apple-touch-icon" href="%PUBLIC_URL%/icon.ico" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<title>qWickPost</title>
</head>
<body>
<noscript>You need JavaScript.</noscript>
<div id="root"></div>
</body>
</html>
<!-- <!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/smoveicon.ico" />
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&family=Roboto+Slab:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="qWickPost - упростите ваш социальный маркетинг"
/>
<link rel="apple-touch-icon" href="%PUBLIC_URL%/icon.ico" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<title>qWickPost - Управление социальными сетями</title>
</head>
<body>
<noscript>Для работы этого приложения необходимо включить JavaScript.</noscript>
<div id="root"></div>
</body>
</html> -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

25
public/manifest.json Normal file
View File

@ -0,0 +1,25 @@
{
"short_name": "qWickPost",
"name": "qWickPost",
"icons": [
{
"src": "logotip_just_circle.png",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
},
{
"src": "logotip_just_circle.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "logotip_just_circle.png",
"type": "image/png",
"sizes": "512x512"
}
],
"start_url": ".",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#ffffff"
}

BIN
public/qWick_white.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

82
src/App.js Normal file
View File

@ -0,0 +1,82 @@
// import React from 'react';
// import BufferLandingPage from './components/BufferLandingPage';
// function App() {
// return (
// <BufferLandingPage />
// );
// }
// export default App;
// import React from 'react';
// import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
// import BufferLandingPage from './components/BufferLandingPage';
// import PricingPage from './components/PricingPage';
// function App() {
// return (
// <Router>
// <Routes>
// <Route path="/" element={<BufferLandingPage />} />
// <Route path="/pricing" element={<PricingPage />} />
// </Routes>
// </Router>
// );
// }
// export default App;
// import React from 'react';
// import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
// import BufferLandingPage from './components/BufferLandingPage';
// import PricingPage from './components/PricingPage';
// import { LanguageProvider } from './contexts/LanguageContext';
// import ScrollToTop from './components/ScrollToTop';
// function App() {
// return (
// <LanguageProvider>
// <Router>
// <ScrollToTop />
// <Routes>
// <Route path="/" element={<BufferLandingPage />} />
// <Route path="/pricing" element={<PricingPage />} />
// </Routes>
// </Router>
// </LanguageProvider>
// );
// }
// export default App;
import React from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import BufferLandingPage from './components/BufferLandingPage';
import PricingPage from './components/PricingPage';
import { LanguageProvider } from './contexts/LanguageContext';
import RTLProvider from './contexts/RTLProvider';
import ScrollToTop from './components/ScrollToTop';
// Импорт глобальных стилей для RTL
import './styles/rtl.css';
function App() {
return (
<LanguageProvider>
<RTLProvider>
<Router>
<ScrollToTop />
<Routes>
<Route path="/" element={<BufferLandingPage />} />
<Route path="/pricing" element={<PricingPage />} />
</Routes>
</Router>
</RTLProvider>
</LanguageProvider>
);
}
export default App;

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="_Слой_2" data-name="Слой 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 378.95 128.55">
<defs>
<style>
.cls-1 {
fill: #363;
}
</style>
</defs>
<g id="_Слой_13" data-name="Слой 13">
<path class="cls-1" d="m49.05,128.55v-59.85c0-9.7-3.55-14.55-10.65-14.55-2.8,0-5.28,1.03-7.42,3.07-2.15,2.05-3.23,4.48-3.23,7.27,0,3,1.02,5.55,3.08,7.65,2.05,2.1,4.47,3.15,7.27,3.15,2.4,0,4.65-.85,6.75-2.55v30.15c-2,.3-4,.45-6,.45-10.8,0-19.98-3.72-27.52-11.17C3.77,84.73,0,75.65,0,64.95s3.75-19.58,11.25-26.92c7.5-7.35,16.7-11.03,27.6-11.03s19.77,3.73,26.92,11.18c7.15,7.45,10.73,17.28,10.73,29.48v60.9h-27.45Z"/>
<path class="cls-1" d="m186.73,3.6v71.4c0,8.9-2.7,16.18-8.1,21.82-5.4,5.65-12.45,8.48-21.15,8.48-10.3,0-18.2-4.7-23.7-14.1-3.2,4.9-6.7,8.48-10.5,10.73-3.8,2.25-8.65,3.38-14.55,3.38-9,0-15.9-2.8-20.7-8.4-4.8-5.6-7.2-13.75-7.2-24.45V3.6h29.85v64.35c0,3,.23,5.08.67,6.23.45,1.15,1.47,1.73,3.08,1.73,3,0,4.5-2.5,4.5-7.5V3.6h29.7v64.35c0,3.1.27,5.2.83,6.3.55,1.1,1.58,1.65,3.08,1.65,2.9,0,4.35-2.65,4.35-7.95V3.6h29.85Z"/>
<path class="cls-1" d="m218.5,32.55v73.05h-27.45V32.55h27.45Zm-26.7-19.35c0-3.7,1.27-6.83,3.83-9.38,2.55-2.55,5.67-3.83,9.38-3.83s6.82,1.27,9.38,3.83c2.55,2.55,3.82,5.68,3.82,9.38s-1.27,6.82-3.82,9.38c-2.55,2.55-5.68,3.82-9.38,3.82s-6.83-1.27-9.38-3.82c-2.55-2.55-3.83-5.67-3.83-9.38Z"/>
<path class="cls-1" d="m298.73,70.43c-.8,10.6-4.88,19.25-12.22,25.95-7.35,6.7-15.93,10.05-25.72,10.05-10.4,0-19.33-3.75-26.78-11.25-7.45-7.5-11.17-16.5-11.17-27s3.72-19.47,11.17-26.92c7.45-7.45,16.37-11.18,26.78-11.18,8.9,0,16.85,2.8,23.85,8.4,7,5.6,11.45,13.05,13.35,22.35l-28.2.9c-2.2-3.1-5.2-4.65-9-4.65-3,0-5.58,1.1-7.73,3.3-2.15,2.2-3.22,4.8-3.22,7.8s1.07,5.62,3.22,7.88c2.15,2.25,4.73,3.38,7.73,3.38,2.4,0,4.57-.7,6.52-2.1,1.95-1.4,3.27-3.35,3.98-5.85l27.45-1.05Z"/>
<path class="cls-1" d="m330.5,4.73v100.05h-27.45V4.73h27.45Zm42,27l-13.5,26.55,19.95,46.5h-30.3l-17.1-47.7,12.45-25.35h28.5Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="_Слой_2" data-name="Слой 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 125.55 149.28">
<defs>
<style>
.cls-1 {
fill: #063;
}
</style>
</defs>
<g id="_Слой_14_копия_" data-name="Слой 14 (копия)">
<path class="cls-1" d="m49.05,149.28v-54.97c0-8.91-3.55-13.36-10.65-13.36-2.8,0-5.28.94-7.42,2.82-2.15,1.88-3.23,4.11-3.23,6.68,0,2.76,1.02,5.1,3.08,7.03,2.05,1.93,4.47,2.89,7.27,2.89q2.4,0,6.75,0v25.36c-2,.28-4,.41-6,.41-10.8,0-19.98-3.42-27.52-10.26-7.55-6.84-11.33-15.18-11.33-25s3.75-17.98,11.25-24.73c7.5-6.75,16.7-10.13,27.6-10.13s19.77,3.42,26.92,10.26c7.15,6.84,10.73,15.87,10.73,27.07v55.93h-27.45Z"/>
<path class="cls-1" d="m76.5,103.05h-27.45v-60.9c0-11.9,3.57-21.65,10.73-29.25,7.15-7.6,16.12-11.4,26.92-11.4s20.1,3.68,27.6,11.03c7.5,7.35,11.25,16.33,11.25,26.92s-3.78,19.65-11.33,27.15c-7.55,7.5-16.53,11.25-26.92,11.25-2.2,0-4.4-.2-6.6-.6l-.03-27.73c5.66.11,5.67.31,8.47.06,3.2-.29,3.65-.95,5.65-3,2-2.05,3-4.58,3-7.58,0-2.8-1.05-5.22-3.15-7.27-2.1-2.05-4.6-3.07-7.5-3.07-7.1,0-10.65,4.85-10.65,14.55v59.85Z"/>
<rect class="cls-1" x="49.06" width="27.45" height="40.44"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

393
src/assets/images/logoo.svg Normal file
View File

@ -0,0 +1,393 @@
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="100%" viewBox="0 0 1361 994" enable-background="new 0 0 1361 994" xml:space="preserve">
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M924.000000,995.000000
C616.000000,995.000000 308.500000,995.000000 1.000000,995.000000
C1.000000,663.666687 1.000000,332.333344 1.000000,1.000000
C454.666656,1.000000 908.333313,1.000000 1362.000000,1.000000
C1362.000000,332.333344 1362.000000,663.666687 1362.000000,995.000000
C1216.166626,995.000000 1070.333374,995.000000 924.000000,995.000000
M728.989990,853.301086
C727.660339,860.509888 725.273438,867.716858 725.260681,874.928040
C725.243652,884.584717 724.203247,894.186462 726.651306,904.063110
C730.147217,918.166931 735.140015,930.643677 746.893738,939.842468
C752.026611,943.859741 755.042725,944.063965 757.792786,938.152283
C762.947083,927.072327 767.573425,915.726379 771.943542,904.308838
C775.020386,896.270020 777.801880,888.048889 779.821228,879.693054
C782.074341,870.370178 784.071411,860.862793 784.828918,851.328430
C786.111450,835.185120 786.823792,818.958313 786.853943,802.764954
C786.880981,788.240540 785.792542,773.706482 784.945007,759.191345
C784.544128,752.326721 783.557983,745.496338 782.833313,738.650757
C782.385132,734.416443 782.053101,730.165100 781.450745,725.952637
C780.388733,718.526367 779.183350,711.120239 777.994507,703.712646
C776.703369,695.667725 775.394226,687.625366 774.034424,679.591858
C772.729492,671.882751 771.344360,664.187256 770.004211,656.484131
C767.743958,643.492615 765.486145,630.500610 763.238586,617.506958
C762.592407,613.770996 761.984924,610.028381 761.262390,605.706726
C771.752930,607.339478 781.810303,605.161133 792.225708,607.549988
C802.523804,609.911865 813.648865,608.700500 824.412903,608.990662
C838.174622,609.361633 851.939514,609.988403 865.700745,609.933838
C895.464111,609.815796 925.225708,609.301941 954.988647,609.013733
C970.996033,608.858704 986.919861,608.765015 1002.878784,606.246277
C1017.884766,603.877991 1033.335083,605.185974 1048.293335,601.151917
C1056.276245,598.999023 1064.687012,598.475281 1072.860107,596.973083
C1081.011597,595.474976 1089.128906,593.770386 1097.219360,591.968811
C1102.287964,590.840210 1107.211548,588.921509 1112.319824,588.137329
C1123.220337,586.464111 1133.314819,582.318726 1143.596802,578.721008
C1149.720337,576.578369 1155.808716,574.331116 1161.875854,572.033081
C1165.530273,570.648865 1169.234741,569.313599 1172.703735,567.539856
C1179.920898,563.849792 1187.016113,559.918579 1194.124634,556.019409
C1201.035156,552.228882 1208.093872,548.659546 1214.731812,544.434326
C1221.838013,539.910950 1228.586426,534.813293 1235.382080,529.818115
C1240.351318,526.165405 1245.455200,522.606140 1249.945801,518.412598
C1257.423584,511.429657 1264.552979,504.063110 1271.642090,496.678558
C1275.703369,492.447968 1279.421387,487.885315 1283.246094,483.431030
C1286.208374,479.981262 1289.007202,476.386688 1292.062988,473.023956
C1293.198120,471.774841 1294.857300,471.001587 1296.278564,470.012970
C1297.165161,469.396271 1298.491333,468.979523 1298.871338,468.135712
C1301.684326,461.888947 1304.766357,455.705414 1306.868896,449.212219
C1309.111938,442.284515 1310.506592,435.066864 1312.005249,427.920013
C1312.707520,424.571350 1313.100220,421.090454 1313.088867,417.671295
C1313.044434,404.164825 1313.803589,390.541565 1312.263550,377.192474
C1311.146851,367.512299 1307.173096,358.092316 1303.894409,348.759674
C1302.199097,343.933350 1299.442749,339.431274 1296.806763,334.996185
C1293.573730,329.556885 1290.131836,324.221985 1286.458984,319.070984
C1284.111938,315.779266 1281.348755,312.735657 1278.473022,309.882141
C1275.011353,306.447144 1271.270630,303.287628 1267.579224,300.091400
C1264.407471,297.345245 1261.325317,294.433167 1257.862793,292.100037
C1252.692627,288.616089 1247.332886,285.374390 1241.854126,282.396851
C1234.520264,278.411133 1227.249023,274.109161 1219.488525,271.160095
C1209.791992,267.475311 1199.756958,264.421478 1189.623779,262.218842
C1179.759277,260.074585 1169.590576,259.315918 1159.545044,258.030151
C1157.739502,257.799072 1155.869751,258.099548 1154.052856,257.920502
C1144.596680,256.988647 1135.161255,255.355667 1125.693237,255.152359
C1112.777466,254.875015 1099.813843,255.294540 1086.919800,256.152985
C1080.160278,256.603058 1073.439941,258.361542 1066.818970,260.001862
C1056.885986,262.462769 1047.011719,265.189606 1037.196655,268.088440
C1029.895630,270.244812 1022.505798,272.345551 1015.557495,275.388947
C1006.983276,279.144501 998.700439,283.628113 990.525513,288.213928
C983.215698,292.314392 976.208191,296.956635 969.096130,301.405792
C963.749756,304.750366 958.253235,307.901459 953.182434,311.627014
C948.033813,315.409790 943.369751,319.845947 938.409729,323.893311
C934.398987,327.166107 930.079712,330.080322 926.226379,333.522034
C920.239136,338.869720 914.432190,344.430511 908.738647,350.091980
C904.680481,354.127350 900.898865,358.444427 897.057678,362.693573
C891.786255,368.524872 886.544800,374.383972 881.349182,380.282837
C877.799316,384.313202 874.257996,388.357788 870.885864,392.535645
C868.435913,395.570892 866.369812,398.913971 863.954773,401.979736
C859.131165,408.103027 854.069336,414.040833 849.322571,420.221649
C844.464966,426.546844 839.693970,432.953705 835.207947,439.544586
C831.416565,445.114899 828.210999,451.080566 824.521973,456.724701
C819.731689,464.053772 814.474731,471.086121 809.866699,478.523743
C804.520508,487.152832 799.675964,496.092041 794.584106,504.879517
C790.060852,512.685852 785.468018,520.451965 780.958862,528.266357
C775.604675,537.545227 770.146057,546.769653 765.046997,556.187805
C762.123474,561.587585 759.823425,567.324951 757.088135,573.244812
C756.382263,572.611694 755.467285,572.193970 755.292358,571.569092
C754.109131,567.340881 753.173523,563.043335 751.986755,558.816223
C749.045288,548.338684 746.118774,537.854736 742.984436,527.434082
C740.128784,517.939819 737.028015,508.518951 733.998230,499.077606
C730.374390,487.785126 726.952271,476.419769 722.990845,465.246246
C719.663696,455.861633 715.723389,446.692688 711.988770,437.454834
C709.055786,430.200043 706.109680,422.948242 703.014038,415.761993
C697.781738,403.615753 692.439636,391.516663 687.115417,379.410187
C685.468994,375.666443 683.917419,371.863739 681.999573,368.259766
C676.416809,357.768555 670.686951,347.355347 664.982422,336.929260
C661.669922,330.874939 658.487000,324.737915 654.903137,318.846558
C649.648010,310.207947 644.198120,301.681763 638.613953,293.251617
C635.103943,287.952667 631.168518,282.936920 627.475281,277.757568
C623.960938,272.829132 620.570251,267.811890 617.022400,262.908081
C612.114258,256.124084 607.190063,249.348450 602.112061,242.691879
C599.651917,239.467010 596.806458,236.537796 594.169983,233.445236
C590.347412,228.961288 586.687500,224.330215 582.710144,219.989166
C579.484436,216.468536 575.777039,213.393051 572.488647,209.925339
C565.626953,202.689514 559.154236,195.066788 552.042603,188.091537
C545.890991,182.057907 539.142639,176.621735 532.538757,171.063156
C525.101379,164.803055 517.668823,158.522232 509.974426,152.587128
C503.665100,147.720398 497.007843,143.299759 490.445221,138.767685
C483.003601,133.628601 475.680603,128.280991 467.960510,123.593040
C461.268127,119.529137 454.142944,116.159836 447.119751,112.662949
C435.958282,107.105614 424.833191,101.453026 413.477753,96.315819
C406.375519,93.102753 398.973907,90.462471 391.536560,88.100693
C381.166962,84.807755 370.706451,81.744347 360.156189,79.095146
C351.807434,76.998756 343.297363,75.479935 334.799774,74.058327
C325.462250,72.496216 316.084381,71.078850 306.672455,70.089653
C299.454071,69.331009 292.156647,69.085472 284.892395,69.052971
C270.714081,68.989525 256.546570,68.629211 242.513077,71.869461
C233.799606,73.881340 224.761063,74.440506 215.943634,76.060966
C208.764420,77.380371 201.712128,79.376671 194.576279,80.949127
C184.219086,83.231453 174.097336,86.118301 164.471161,90.727135
C158.011169,93.820076 150.857056,95.639404 144.768692,99.288544
C136.858383,104.029686 128.836731,109.170578 122.412186,115.670601
C112.276840,125.924995 103.200638,137.267776 94.119545,148.508102
C88.008980,156.071594 82.284729,164.013397 77.085663,172.227737
C72.260803,179.850845 67.724884,187.789703 64.208511,196.076172
C59.254440,207.750626 54.846218,219.719467 51.183620,231.857834
C48.612637,240.378448 47.409775,249.352509 46.101295,258.198822
C45.259983,263.886749 44.812092,269.738342 45.119560,275.466583
C45.610477,284.612610 44.970421,293.811096 47.791637,302.881439
C49.703903,309.029510 49.183601,315.901550 50.775455,322.190552
C52.565670,329.263245 55.461571,336.061127 57.962830,342.947174
C59.845287,348.129669 61.309582,353.567230 63.939064,358.353363
C69.177528,367.888306 75.296219,376.935883 80.671013,386.400757
C87.364540,398.187866 96.410698,408.113068 105.431671,417.990570
C113.557961,426.888428 122.454384,435.087860 131.097046,443.507141
C135.596008,447.889862 140.059982,452.356232 144.942368,456.284424
C149.941772,460.306824 155.473419,463.661560 160.699417,467.409882
C168.307602,472.866943 175.651291,478.720184 183.481689,483.831665
C190.322662,488.297272 197.325180,492.913849 204.895813,495.766663
C215.344330,499.703888 226.362717,502.163361 237.195465,505.035187
C245.660965,507.279480 254.259933,509.022308 262.717957,511.292175
C271.332367,513.604004 279.810547,516.420837 288.414551,518.774597
C298.902924,521.643860 309.433228,524.371399 319.994873,526.958252
C332.745697,530.081421 345.536560,533.044678 358.335022,535.968079
C362.927032,537.017029 367.643280,537.539856 372.211487,538.671631
C380.097595,540.625427 387.858551,543.099854 395.770630,544.929260
C405.422455,547.161072 415.181274,548.927795 424.883453,550.945557
C429.498627,551.905396 434.064270,553.119629 438.697998,553.969971
C444.946167,555.116699 451.307709,555.716553 457.493591,557.113342
C464.784210,558.759583 471.889252,561.217957 479.166199,562.937012
C487.232697,564.842712 495.388733,566.382812 503.531433,567.948669
C511.045685,569.393677 518.619629,570.534851 526.118591,572.050659
C531.529785,573.144348 536.819275,574.849609 542.237427,575.897339
C551.829773,577.752441 561.478577,579.315430 571.104004,580.999146
C579.767456,582.514587 588.439087,583.984436 597.092407,585.555359
C604.937256,586.979431 612.741699,588.634277 620.601501,589.965942
C629.447205,591.464661 638.346802,592.642822 647.201111,594.093750
C656.683167,595.647522 666.135559,597.380981 675.608704,598.990295
C683.641724,600.354919 691.656616,601.882629 699.733521,602.916687
C707.383972,603.896118 715.116699,604.213440 722.790405,605.035950
C728.997925,605.701294 735.171387,606.684814 742.121033,607.630798
C738.610168,613.054688 735.857178,617.257446 733.155884,621.493225
C729.485352,627.248657 725.932007,633.080444 722.177856,638.780273
C719.869507,642.284973 717.132324,645.509094 714.856323,649.032654
C712.335388,652.935242 710.275940,657.136780 707.742126,661.030090
C701.249451,671.006470 694.401123,680.756042 688.075317,690.835083
C680.876099,702.305603 673.917542,713.936584 667.187988,725.688904
C663.179321,732.689453 659.947632,740.130249 656.117310,747.238770
C652.525513,753.904724 648.161987,760.183838 644.930969,767.008667
C639.751709,777.948853 635.154907,789.168579 630.456116,800.330872
C628.136292,805.842102 626.118042,811.481201 624.000427,817.076477
C621.327942,824.137695 618.618042,831.186523 616.095276,838.301270
C615.461426,840.088928 615.681580,842.164551 615.163086,844.010620
C613.133057,851.238342 610.132324,858.303589 609.040405,865.659058
C607.362854,876.958801 606.870789,888.441650 606.070435,899.860413
C605.805908,903.634583 605.944458,907.467590 606.261230,911.243286
C606.580933,915.053711 609.682190,917.345215 612.024902,915.591675
C620.215088,909.461426 628.420959,903.326111 636.254517,896.755920
C640.487671,893.205566 644.384094,889.073914 647.699524,884.654724
C651.856750,879.113464 655.577637,873.181091 658.908447,867.100586
C662.633667,860.300171 666.225647,853.337769 668.940247,846.095276
C672.343994,837.013977 674.888062,827.603088 677.628296,818.283081
C679.504517,811.902100 681.213928,805.464905 682.764832,798.996948
C685.658752,786.927490 688.199036,774.771057 691.232605,762.738037
C693.929199,752.041443 696.928284,741.413147 700.098877,730.846191
C703.389832,719.877747 706.844299,708.948547 710.614990,698.137390
C713.139465,690.899170 716.181946,683.826782 719.282593,676.808289
C722.446228,669.647156 725.918457,662.620239 729.338989,655.575073
C733.518860,646.965759 737.626099,638.314758 742.079651,629.847351
C744.430847,625.377258 747.451111,621.259033 750.223877,616.895935
C751.553955,621.671692 753.507568,625.998108 753.858398,630.450806
C754.908691,643.779053 755.781067,657.153076 755.886963,670.515869
C756.021179,687.441406 755.664001,704.388977 754.868774,721.296509
C754.432251,730.577576 752.851013,739.825378 751.431458,749.033508
C750.217590,756.907288 748.590271,764.722229 746.971375,772.526978
C745.817505,778.089722 744.316833,783.579529 743.073975,789.125000
C741.332703,796.894470 739.717468,804.692261 737.992737,812.465515
C736.162903,820.712463 734.263000,828.943970 732.403320,837.184326
C731.259216,842.253845 730.132935,847.327393 728.989990,853.301086
z"/>
<path fill="#22B14C" opacity="1.000000" stroke="none"
d="
M728.994263,852.850098
C730.132935,847.327393 731.259216,842.253845 732.403320,837.184326
C734.263000,828.943970 736.162903,820.712463 737.992737,812.465515
C739.717468,804.692261 741.332703,796.894470 743.073975,789.125000
C744.316833,783.579529 745.817505,778.089722 746.971375,772.526978
C748.590271,764.722229 750.217590,756.907288 751.431458,749.033508
C752.851013,739.825378 754.432251,730.577576 754.868774,721.296509
C755.664001,704.388977 756.021179,687.441406 755.886963,670.515869
C755.781067,657.153076 754.908691,643.779053 753.858398,630.450806
C753.507568,625.998108 751.553955,621.671692 750.223877,616.895935
C747.451111,621.259033 744.430847,625.377258 742.079651,629.847351
C737.626099,638.314758 733.518860,646.965759 729.338989,655.575073
C725.918457,662.620239 722.446228,669.647156 719.282593,676.808289
C716.181946,683.826782 713.139465,690.899170 710.614990,698.137390
C706.844299,708.948547 703.389832,719.877747 700.098877,730.846191
C696.928284,741.413147 693.929199,752.041443 691.232605,762.738037
C688.199036,774.771057 685.658752,786.927490 682.764832,798.996948
C681.213928,805.464905 679.504517,811.902100 677.628296,818.283081
C674.888062,827.603088 672.343994,837.013977 668.940247,846.095276
C666.225647,853.337769 662.633667,860.300171 658.908447,867.100586
C655.577637,873.181091 651.856750,879.113464 647.699524,884.654724
C644.384094,889.073914 640.487671,893.205566 636.254517,896.755920
C628.420959,903.326111 620.215088,909.461426 612.024902,915.591675
C609.682190,917.345215 606.580933,915.053711 606.261230,911.243286
C605.944458,907.467590 605.805908,903.634583 606.070435,899.860413
C606.870789,888.441650 607.362854,876.958801 609.040405,865.659058
C610.132324,858.303589 613.133057,851.238342 615.163086,844.010620
C615.681580,842.164551 615.461426,840.088928 616.095276,838.301270
C618.618042,831.186523 621.327942,824.137695 624.000427,817.076477
C626.118042,811.481201 628.136292,805.842102 630.456116,800.330872
C635.154907,789.168579 639.751709,777.948853 644.930969,767.008667
C648.161987,760.183838 652.525513,753.904724 656.117310,747.238770
C659.947632,740.130249 663.179321,732.689453 667.187988,725.688904
C673.917542,713.936584 680.876099,702.305603 688.075317,690.835083
C694.401123,680.756042 701.249451,671.006470 707.742126,661.030090
C710.275940,657.136780 712.335388,652.935242 714.856323,649.032654
C717.132324,645.509094 719.869507,642.284973 722.177856,638.780273
C725.932007,633.080444 729.485352,627.248657 733.155884,621.493225
C735.857178,617.257446 738.610168,613.054688 742.121033,607.630798
C735.171387,606.684814 728.997925,605.701294 722.790405,605.035950
C715.116699,604.213440 707.383972,603.896118 699.733521,602.916687
C691.656616,601.882629 683.641724,600.354919 675.608704,598.990295
C666.135559,597.380981 656.683167,595.647522 647.201111,594.093750
C638.346802,592.642822 629.447205,591.464661 620.601501,589.965942
C612.741699,588.634277 604.937256,586.979431 597.092407,585.555359
C588.439087,583.984436 579.767456,582.514587 571.104004,580.999146
C561.478577,579.315430 551.829773,577.752441 542.237427,575.897339
C536.819275,574.849609 531.529785,573.144348 526.118591,572.050659
C518.619629,570.534851 511.045685,569.393677 503.531433,567.948669
C495.388733,566.382812 487.232697,564.842712 479.166199,562.937012
C471.889252,561.217957 464.784210,558.759583 457.493591,557.113342
C451.307709,555.716553 444.946167,555.116699 438.697998,553.969971
C434.064270,553.119629 429.498627,551.905396 424.883453,550.945557
C415.181274,548.927795 405.422455,547.161072 395.770630,544.929260
C387.858551,543.099854 380.097595,540.625427 372.211487,538.671631
C367.643280,537.539856 362.927032,537.017029 358.335022,535.968079
C345.536560,533.044678 332.745697,530.081421 319.994873,526.958252
C309.433228,524.371399 298.902924,521.643860 288.414551,518.774597
C279.810547,516.420837 271.332367,513.604004 262.717957,511.292175
C254.259933,509.022308 245.660965,507.279480 237.195465,505.035187
C226.362717,502.163361 215.344330,499.703888 204.895813,495.766663
C197.325180,492.913849 190.322662,488.297272 183.481689,483.831665
C175.651291,478.720184 168.307602,472.866943 160.699417,467.409882
C155.473419,463.661560 149.941772,460.306824 144.942368,456.284424
C140.059982,452.356232 135.596008,447.889862 131.097046,443.507141
C122.454384,435.087860 113.557961,426.888428 105.431671,417.990570
C96.410698,408.113068 87.364540,398.187866 80.671013,386.400757
C75.296219,376.935883 69.177528,367.888306 63.939064,358.353363
C61.309582,353.567230 59.845287,348.129669 57.962830,342.947174
C55.461571,336.061127 52.565670,329.263245 50.775455,322.190552
C49.183601,315.901550 49.703903,309.029510 47.791637,302.881439
C44.970421,293.811096 45.610477,284.612610 45.119560,275.466583
C44.812092,269.738342 45.259983,263.886749 46.101295,258.198822
C47.409775,249.352509 48.612637,240.378448 51.183620,231.857834
C54.846218,219.719467 59.254440,207.750626 64.208511,196.076172
C67.724884,187.789703 72.260803,179.850845 77.085663,172.227737
C82.284729,164.013397 88.008980,156.071594 94.119545,148.508102
C103.200638,137.267776 112.276840,125.924995 122.412186,115.670601
C128.836731,109.170578 136.858383,104.029686 144.768692,99.288544
C150.857056,95.639404 158.011169,93.820076 164.471161,90.727135
C174.097336,86.118301 184.219086,83.231453 194.576279,80.949127
C201.712128,79.376671 208.764420,77.380371 215.943634,76.060966
C224.761063,74.440506 233.799606,73.881340 242.513077,71.869461
C256.546570,68.629211 270.714081,68.989525 284.892395,69.052971
C292.156647,69.085472 299.454071,69.331009 306.672455,70.089653
C316.084381,71.078850 325.462250,72.496216 334.799774,74.058327
C343.297363,75.479935 351.807434,76.998756 360.156189,79.095146
C370.706451,81.744347 381.166962,84.807755 391.536560,88.100693
C398.973907,90.462471 406.375519,93.102753 413.477753,96.315819
C424.833191,101.453026 435.958282,107.105614 447.119751,112.662949
C454.142944,116.159836 461.268127,119.529137 467.960510,123.593040
C475.680603,128.280991 483.003601,133.628601 490.445221,138.767685
C497.007843,143.299759 503.665100,147.720398 509.974426,152.587128
C517.668823,158.522232 525.101379,164.803055 532.538757,171.063156
C539.142639,176.621735 545.890991,182.057907 552.042603,188.091537
C559.154236,195.066788 565.626953,202.689514 572.488647,209.925339
C575.777039,213.393051 579.484436,216.468536 582.710144,219.989166
C586.687500,224.330215 590.347412,228.961288 594.169983,233.445236
C596.806458,236.537796 599.651917,239.467010 602.112061,242.691879
C607.190063,249.348450 612.114258,256.124084 617.022400,262.908081
C620.570251,267.811890 623.960938,272.829132 627.475281,277.757568
C631.168518,282.936920 635.103943,287.952667 638.613953,293.251617
C644.198120,301.681763 649.648010,310.207947 654.903137,318.846558
C658.487000,324.737915 661.669922,330.874939 664.982422,336.929260
C670.686951,347.355347 676.416809,357.768555 681.999573,368.259766
C683.917419,371.863739 685.468994,375.666443 687.115417,379.410187
C692.439636,391.516663 697.781738,403.615753 703.014038,415.761993
C706.109680,422.948242 709.055786,430.200043 711.988770,437.454834
C715.723389,446.692688 719.663696,455.861633 722.990845,465.246246
C726.952271,476.419769 730.374390,487.785126 733.998230,499.077606
C737.028015,508.518951 740.128784,517.939819 742.984436,527.434082
C746.118774,537.854736 749.045288,548.338684 751.986755,558.816223
C753.173523,563.043335 754.109131,567.340881 755.292358,571.569092
C755.467285,572.193970 756.382263,572.611694 757.088135,573.244812
C759.823425,567.324951 762.123474,561.587585 765.046997,556.187805
C770.146057,546.769653 775.604675,537.545227 780.958862,528.266357
C785.468018,520.451965 790.060852,512.685852 794.584106,504.879517
C799.675964,496.092041 804.520508,487.152832 809.866699,478.523743
C814.474731,471.086121 819.731689,464.053772 824.521973,456.724701
C828.210999,451.080566 831.416565,445.114899 835.207947,439.544586
C839.693970,432.953705 844.464966,426.546844 849.322571,420.221649
C854.069336,414.040833 859.131165,408.103027 863.954773,401.979736
C866.369812,398.913971 868.435913,395.570892 870.885864,392.535645
C874.257996,388.357788 877.799316,384.313202 881.349182,380.282837
C886.544800,374.383972 891.786255,368.524872 897.057678,362.693573
C900.898865,358.444427 904.680481,354.127350 908.738647,350.091980
C914.432190,344.430511 920.239136,338.869720 926.226379,333.522034
C930.079712,330.080322 934.398987,327.166107 938.409729,323.893311
C943.369751,319.845947 948.033813,315.409790 953.182434,311.627014
C958.253235,307.901459 963.749756,304.750366 969.096130,301.405792
C976.208191,296.956635 983.215698,292.314392 990.525513,288.213928
C998.700439,283.628113 1006.983276,279.144501 1015.557495,275.388947
C1022.505798,272.345551 1029.895630,270.244812 1037.196655,268.088440
C1047.011719,265.189606 1056.885986,262.462769 1066.818970,260.001862
C1073.439941,258.361542 1080.160278,256.603058 1086.919800,256.152985
C1099.813843,255.294540 1112.777466,254.875015 1125.693237,255.152359
C1135.161255,255.355667 1144.596680,256.988647 1154.052856,257.920502
C1155.869751,258.099548 1157.739502,257.799072 1159.545044,258.030151
C1169.590576,259.315918 1179.759277,260.074585 1189.623779,262.218842
C1199.756958,264.421478 1209.791992,267.475311 1219.488525,271.160095
C1227.249023,274.109161 1234.520264,278.411133 1241.854126,282.396851
C1247.332886,285.374390 1252.692627,288.616089 1257.862793,292.100037
C1261.325317,294.433167 1264.407471,297.345245 1267.579224,300.091400
C1271.270630,303.287628 1275.011353,306.447144 1278.473022,309.882141
C1281.348755,312.735657 1284.111938,315.779266 1286.458984,319.070984
C1290.131836,324.221985 1293.573730,329.556885 1296.806763,334.996185
C1299.442749,339.431274 1302.199097,343.933350 1303.894409,348.759674
C1307.173096,358.092316 1311.146851,367.512299 1312.263550,377.192474
C1313.803589,390.541565 1313.044434,404.164825 1313.088867,417.671295
C1313.100220,421.090454 1312.707520,424.571350 1312.005249,427.920013
C1310.506592,435.066864 1309.111938,442.284515 1306.868896,449.212219
C1304.766357,455.705414 1301.684326,461.888947 1298.871338,468.135712
C1298.491333,468.979523 1297.165161,469.396271 1296.278564,470.012970
C1294.857300,471.001587 1293.198120,471.774841 1292.062988,473.023956
C1289.007202,476.386688 1286.208374,479.981262 1283.246094,483.431030
C1279.421387,487.885315 1275.703369,492.447968 1271.642090,496.678558
C1264.552979,504.063110 1257.423584,511.429657 1249.945801,518.412598
C1245.455200,522.606140 1240.351318,526.165405 1235.382080,529.818115
C1228.586426,534.813293 1221.838013,539.910950 1214.731812,544.434326
C1208.093872,548.659546 1201.035156,552.228882 1194.124634,556.019409
C1187.016113,559.918579 1179.920898,563.849792 1172.703735,567.539856
C1169.234741,569.313599 1165.530273,570.648865 1161.875854,572.033081
C1155.808716,574.331116 1149.720337,576.578369 1143.596802,578.721008
C1133.314819,582.318726 1123.220337,586.464111 1112.319824,588.137329
C1107.211548,588.921509 1102.287964,590.840210 1097.219360,591.968811
C1089.128906,593.770386 1081.011597,595.474976 1072.860107,596.973083
C1064.687012,598.475281 1056.276245,598.999023 1048.293335,601.151917
C1033.335083,605.185974 1017.884766,603.877991 1002.878784,606.246277
C986.919861,608.765015 970.996033,608.858704 954.988647,609.013733
C925.225708,609.301941 895.464111,609.815796 865.700745,609.933838
C851.939514,609.988403 838.174622,609.361633 824.412903,608.990662
C813.648865,608.700500 802.523804,609.911865 792.225708,607.549988
C781.810303,605.161133 771.752930,607.339478 761.262390,605.706726
C761.984924,610.028381 762.592407,613.770996 763.238586,617.506958
C765.486145,630.500610 767.743958,643.492615 770.004211,656.484131
C771.344360,664.187256 772.729492,671.882751 774.034424,679.591858
C775.394226,687.625366 776.703369,695.667725 777.994507,703.712646
C779.183350,711.120239 780.388733,718.526367 781.450745,725.952637
C782.053101,730.165100 782.385132,734.416443 782.833313,738.650757
C783.557983,745.496338 784.544128,752.326721 784.945007,759.191345
C785.792542,773.706482 786.880981,788.240540 786.853943,802.764954
C786.823792,818.958313 786.111450,835.185120 784.828918,851.328430
C784.071411,860.862793 782.074341,870.370178 779.821228,879.693054
C777.801880,888.048889 775.020386,896.270020 771.943542,904.308838
C767.573425,915.726379 762.947083,927.072327 757.792786,938.152283
C755.042725,944.063965 752.026611,943.859741 746.893738,939.842468
C735.140015,930.643677 730.147217,918.166931 726.651306,904.063110
C724.203247,894.186462 725.243652,884.584717 725.260681,874.928040
C725.273438,867.716858 727.660339,860.509888 728.994263,852.850098
z"/>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="_Слой_2" data-name="Слой 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 184.57 176.52">
<defs>
<style>
.cls-1 {
fill: #fff;
}
.cls-2 {
fill: #063;
}
</style>
</defs>
<g id="_Слой_18" data-name="Слой 18">
<path class="cls-2" d="m145.41,176.52H39.17c-21.63,0-39.17-16.77-39.17-37.46V37.46C0,16.77,17.54,0,39.17,0h106.24c21.63,0,39.17,16.77,39.17,37.46v101.6c0,20.69-17.54,37.46-39.17,37.46Z"/>
<path class="cls-1" d="m78.55,160.28v-54.97c0-8.91-3.55-13.36-10.65-13.36-2.8,0-5.28.94-7.42,2.82-2.15,1.88-3.23,4.11-3.23,6.68,0,2.76,1.02,5.1,3.08,7.03,2.05,1.93,4.47,2.89,7.27,2.89q2.4,0,6.75,0v25.36c-2,.28-4,.41-6,.41-10.8,0-19.98-3.42-27.52-10.26-7.55-6.84-11.33-15.18-11.33-25s3.75-17.98,11.25-24.73c7.5-6.75,16.7-10.13,27.6-10.13s19.77,3.42,26.92,10.26c7.15,6.84,10.73,15.87,10.73,27.07v55.93h-27.45Z"/>
<path class="cls-1" d="m106,121.05h-27.45v-60.9c0-11.9,3.57-21.65,10.73-29.25,7.15-7.6,16.12-11.4,26.92-11.4s20.1,3.68,27.6,11.03c7.5,7.35,11.25,16.33,11.25,26.92s-3.78,19.65-11.33,27.15c-7.55,7.5-16.53,11.25-26.92,11.25-2.2,0-4.4-.2-6.6-.6l-.03-27.73c5.66.11,5.67.31,8.47.06,3.2-.29,3.65-.95,5.65-3,2-2.05,3-4.58,3-7.58,0-2.8-1.05-5.22-3.15-7.27-2.1-2.05-4.6-3.07-7.5-3.07-7.1,0-10.65,4.85-10.65,14.55v59.85Z"/>
<rect class="cls-1" x="78.56" y="17" width="27.45" height="40.44"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,531 @@
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="100%" viewBox="0 0 975 752" enable-background="new 0 0 975 752" xml:space="preserve">
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M679.000000,753.000000
C452.666748,753.000000 226.833466,753.000000 1.000151,753.000000
C1.000101,502.333466 1.000101,251.666946 1.000051,1.000320
C325.999756,1.000213 650.999512,1.000213 975.999451,1.000107
C975.999634,251.666367 975.999634,502.332733 975.999817,752.999512
C877.166687,753.000000 778.333313,753.000000 679.000000,753.000000
M509.000000,374.250000
C509.000000,373.500000 509.000000,372.750000 509.695190,371.886047
C511.408936,367.860016 508.510986,362.320740 504.000000,360.250000
C504.000000,359.500000 504.000000,358.750000 504.695526,357.885864
C504.960419,356.933075 505.684998,355.817688 505.414886,355.054169
C503.766388,350.394012 502.158356,345.687225 500.041687,341.231140
C494.261688,329.062958 488.932709,316.604675 482.158783,305.000519
C468.813385,282.138916 455.223633,259.371613 440.601532,237.316696
C424.401062,212.881027 406.102600,189.943756 384.918854,169.536072
C375.970886,160.915863 366.702759,152.564499 357.031433,144.771988
C337.680389,129.180267 316.107300,117.149765 293.172638,107.748558
C280.577789,102.585770 267.198425,99.985023 253.567612,98.990646
C250.738831,98.784286 248.462891,99.102180 248.071182,102.970497
C238.310394,103.352844 228.342163,102.613800 218.835907,104.372177
C203.373077,107.232338 188.062439,111.365639 175.652145,122.081039
C167.796844,128.863525 158.442245,134.539612 152.433609,142.684265
C143.253525,155.127777 131.094727,164.047546 119.976540,174.115082
C109.036797,184.021088 100.082291,195.185989 94.180580,208.395813
C83.592278,232.095596 82.315170,256.940430 88.030518,282.137970
C94.113319,308.955414 106.672897,332.359253 126.309486,351.656921
C134.940033,360.138489 143.950668,368.364197 153.569031,375.680206
C169.491913,387.791626 186.944717,397.752899 206.001328,403.784546
C221.630615,408.731476 237.973999,411.454163 254.041779,414.976074
C275.695099,419.722137 297.405426,424.208282 319.057404,428.960205
C334.363312,432.319366 349.604095,435.974152 364.891510,439.419037
C372.999268,441.246094 381.142181,442.917847 389.273315,444.640442
C400.916260,447.107056 412.598450,449.401215 424.197235,452.059723
C434.143921,454.339600 444.214111,455.229340 454.310425,456.431580
C466.778503,457.916290 479.160614,459.003418 491.680603,459.000427
C500.572906,458.998291 509.465179,459.000000 518.944092,459.000000
C518.031494,460.623871 517.572449,461.657104 516.926758,462.556244
C509.677887,472.650146 506.256561,483.986206 506.011780,496.324860
C505.751648,509.440399 508.680573,521.471741 515.267761,533.186279
C521.704590,544.633545 526.014709,557.283142 531.176758,569.439575
C540.526672,591.458374 538.344116,613.372131 529.913391,634.975586
C525.600403,646.027527 520.476013,656.735474 512.715698,666.010437
C511.505035,667.457397 511.418823,671.622131 512.591064,672.904419
C514.813354,675.335449 517.513245,673.971375 519.386902,671.219910
C528.350281,658.057190 535.888000,644.208984 540.587402,628.898376
C546.019592,611.200439 547.518799,593.152649 541.723206,575.565796
C536.837463,560.739929 529.457092,546.754395 523.755127,532.172363
C520.275391,523.273499 516.687378,514.130615 515.271118,504.775940
C512.944153,489.406769 518.050415,475.296448 526.290100,462.314636
C527.779114,459.968658 529.523071,458.861969 532.623596,458.896576
C551.284180,459.104828 569.949097,459.098328 588.610413,458.925079
C592.835632,458.885834 597.082520,458.071991 601.266541,457.320312
C610.572876,455.648346 619.803955,453.520203 629.142090,452.070099
C643.690857,449.810760 658.353638,448.264587 672.874756,445.854156
C688.660583,443.233795 704.332031,439.929199 720.069885,437.012085
C725.371155,436.029480 730.736511,435.396759 736.048889,434.468475
C746.175781,432.698914 756.223145,430.260376 766.417908,429.145569
C780.066589,427.653076 793.636658,425.612610 806.343079,420.600586
C819.125671,415.558533 831.787354,409.793640 843.582947,402.796173
C853.228699,397.074066 861.736755,389.324615 870.347290,382.001434
C877.359558,376.037567 881.790710,367.928802 885.923523,359.849518
C888.426636,354.956238 891.083435,349.723267 891.743347,344.403778
C892.724915,336.492432 892.178711,328.364563 891.957886,320.337769
C891.678101,310.168762 887.098816,301.515381 880.508484,294.292847
C875.669922,288.990143 869.559326,284.809601 863.834656,280.362030
C852.619080,271.648499 841.523804,262.744904 829.894836,254.611969
C822.918762,249.733109 815.335754,245.393570 807.454895,242.235458
C800.502319,239.449356 792.706177,238.836823 785.374084,236.915176
C768.565186,232.509766 751.900452,235.376175 735.479431,238.528442
C725.972595,240.353424 716.926331,244.644043 707.724976,247.969528
C702.118652,249.995712 696.243530,251.658081 691.134155,254.602921
C679.361694,261.388153 667.822876,268.614288 656.484131,276.107635
C641.630005,285.924072 627.602356,296.696869 616.291931,310.782501
C610.070007,318.531067 602.533691,325.208832 595.925049,332.666321
C588.648254,340.877716 581.399048,349.161102 574.807312,357.917114
C569.390991,365.111786 564.880188,372.998016 560.116638,380.669983
C557.919373,384.208801 555.963501,387.911530 554.107544,391.644012
C552.474670,394.927704 551.234131,398.405426 549.627441,401.703461
C548.602478,403.807434 546.634094,405.600922 546.122192,407.776733
C544.790405,413.438354 540.850769,417.901276 540.362305,424.237549
C539.969482,429.332214 535.669373,434.125610 532.515320,438.594910
C528.840454,427.717499 525.026489,416.883789 521.588135,405.932129
C520.724548,403.181549 520.446350,400.519379 517.000000,399.333344
C517.000000,398.888885 517.000000,398.444458 517.618225,397.678619
C520.018982,395.159027 519.139038,394.082611 515.749390,393.410126
C515.499573,392.606750 515.249817,391.803375 515.697632,390.884918
C516.081299,390.419250 516.886475,389.813354 516.785278,389.509003
C515.345825,385.181671 513.908752,380.842590 512.145569,376.643097
C511.792969,375.803223 510.083679,375.532928 509.000000,374.250000
z"/>
<path fill="#B5E61D" opacity="1.000000" stroke="none"
d="
M533.102966,439.052673
C535.669373,434.125610 539.969482,429.332214 540.362305,424.237549
C540.850769,417.901276 544.790405,413.438354 546.122192,407.776733
C546.634094,405.600922 548.602478,403.807434 549.627441,401.703461
C551.234131,398.405426 552.474670,394.927704 554.107544,391.644012
C555.963501,387.911530 557.919373,384.208801 560.116638,380.669983
C564.880188,372.998016 569.390991,365.111786 574.807312,357.917114
C581.399048,349.161102 588.648254,340.877716 595.925049,332.666321
C602.533691,325.208832 610.070007,318.531067 616.291931,310.782501
C627.602356,296.696869 641.630005,285.924072 656.484131,276.107635
C667.822876,268.614288 679.361694,261.388153 691.134155,254.602921
C696.243530,251.658081 702.118652,249.995712 707.724976,247.969528
C716.926331,244.644043 725.972595,240.353424 735.479431,238.528442
C751.900452,235.376175 768.565186,232.509766 785.374084,236.915176
C792.706177,238.836823 800.502319,239.449356 807.454895,242.235458
C815.335754,245.393570 822.918762,249.733109 829.894836,254.611969
C841.523804,262.744904 852.619080,271.648499 863.834656,280.362030
C869.559326,284.809601 875.669922,288.990143 880.508484,294.292847
C887.098816,301.515381 891.678101,310.168762 891.957886,320.337769
C892.178711,328.364563 892.724915,336.492432 891.743347,344.403778
C891.083435,349.723267 888.426636,354.956238 885.923523,359.849518
C881.790710,367.928802 877.359558,376.037567 870.347290,382.001434
C861.736755,389.324615 853.228699,397.074066 843.582947,402.796173
C831.787354,409.793640 819.125671,415.558533 806.343079,420.600586
C793.636658,425.612610 780.066589,427.653076 766.417908,429.145569
C756.223145,430.260376 746.175781,432.698914 736.048889,434.468475
C730.736511,435.396759 725.371155,436.029480 720.069885,437.012085
C704.332031,439.929199 688.660583,443.233795 672.874756,445.854156
C658.353638,448.264587 643.690857,449.810760 629.142090,452.070099
C619.803955,453.520203 610.572876,455.648346 601.266541,457.320312
C597.082520,458.071991 592.835632,458.885834 588.610413,458.925079
C569.949097,459.098328 551.284180,459.104828 532.623596,458.896576
C529.523071,458.861969 527.779114,459.968658 526.290100,462.314636
C518.050415,475.296448 512.944153,489.406769 515.271118,504.775940
C516.687378,514.130615 520.275391,523.273499 523.755127,532.172363
C529.457092,546.754395 536.837463,560.739929 541.723206,575.565796
C547.518799,593.152649 546.019592,611.200439 540.587402,628.898376
C535.888000,644.208984 528.350281,658.057190 519.386902,671.219910
C517.513245,673.971375 514.813354,675.335449 512.591064,672.904419
C511.418823,671.622131 511.505035,667.457397 512.715698,666.010437
C520.476013,656.735474 525.600403,646.027527 529.913391,634.975586
C538.344116,613.372131 540.526672,591.458374 531.176758,569.439575
C526.014709,557.283142 521.704590,544.633545 515.267761,533.186279
C508.680573,521.471741 505.751648,509.440399 506.011780,496.324860
C506.256561,483.986206 509.677887,472.650146 516.926758,462.556244
C517.572449,461.657104 518.031494,460.623871 518.944092,459.000000
C509.465179,459.000000 500.572906,458.998291 491.680603,459.000427
C479.160614,459.003418 466.778503,457.916290 454.310425,456.431580
C444.214111,455.229340 434.143921,454.339600 424.197235,452.059723
C412.598450,449.401215 400.916260,447.107056 389.273315,444.640442
C381.142181,442.917847 372.999268,441.246094 364.891510,439.419037
C349.604095,435.974152 334.363312,432.319366 319.057404,428.960205
C297.405426,424.208282 275.695099,419.722137 254.041779,414.976074
C237.973999,411.454163 221.630615,408.731476 206.001328,403.784546
C186.944717,397.752899 169.491913,387.791626 153.569031,375.680206
C143.950668,368.364197 134.940033,360.138489 126.309486,351.656921
C106.672897,332.359253 94.113319,308.955414 88.030518,282.137970
C82.315170,256.940430 83.592278,232.095596 94.180580,208.395813
C100.082291,195.185989 109.036797,184.021088 119.976540,174.115082
C131.094727,164.047546 143.253525,155.127777 152.433609,142.684265
C158.442245,134.539612 167.796844,128.863525 175.652145,122.081039
C188.062439,111.365639 203.373077,107.232338 218.835907,104.372177
C228.342163,102.613800 238.310394,103.352844 248.960327,102.970634
C258.217407,104.350349 266.585358,105.729927 275.133057,107.414597
C276.874573,108.090912 278.436279,108.462143 280.320496,108.902924
C281.080078,109.018524 281.517212,109.064575 282.149811,109.425446
C291.304718,113.711227 300.340942,117.519882 309.196411,121.710487
C315.052277,124.481613 321.067139,127.221451 326.281158,130.985916
C340.685730,141.385864 354.707214,152.316376 369.025940,163.345291
C372.125732,166.279221 375.240021,168.747879 378.000183,171.563675
C383.611938,177.288620 389.150879,183.094833 394.502045,189.062851
C401.312531,196.658478 408.459900,204.041519 414.481293,212.236801
C427.571991,230.053604 440.735931,247.886887 452.558014,266.544678
C463.276733,283.461090 472.549713,301.324951 481.892548,319.069946
C487.507629,329.734680 492.138184,340.926575 497.006622,351.971680
C499.212677,356.976654 501.070831,362.150330 502.823547,367.336426
C506.040985,376.856384 509.063324,386.442291 512.114990,396.407288
C512.376953,398.702362 512.411011,400.703064 513.106750,402.438477
C513.546448,403.535309 514.973877,404.236145 515.991150,405.347198
C516.023987,405.579834 516.167419,406.027222 516.099365,406.426208
C516.221619,407.941589 516.271118,409.104919 516.625000,410.166840
C519.083679,417.543640 521.520996,424.929596 524.140564,432.249908
C525.583252,436.281555 527.366150,440.191467 529.222900,444.507233
C530.005066,443.586090 530.559937,442.313995 531.449158,441.013794
C532.223267,440.341370 532.663147,439.697021 533.102966,439.052673
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M274.953308,107.109505
C266.585358,105.729927 258.217407,104.350349 249.424408,102.902084
C248.462891,99.102180 250.738831,98.784286 253.567612,98.990646
C267.198425,99.985023 280.577789,102.585770 293.172638,107.748558
C316.107300,117.149765 337.680389,129.180267 357.031433,144.771988
C366.702759,152.564499 375.970886,160.915863 384.918854,169.536072
C406.102600,189.943756 424.401062,212.881027 440.601532,237.316696
C455.223633,259.371613 468.813385,282.138916 482.158783,305.000519
C488.932709,316.604675 494.261688,329.062958 500.041687,341.231140
C502.158356,345.687225 503.766388,350.394012 505.414886,355.054169
C505.684998,355.817688 504.960419,356.933075 504.072021,357.742859
C501.965698,354.399902 500.482849,351.199951 499.251740,347.787720
C499.068665,345.862915 498.918060,344.010437 498.154602,342.459656
C491.417328,328.774536 484.597198,315.129822 477.705017,301.522034
C477.182098,300.489532 475.919037,299.831879 475.000000,298.750000
C475.000000,298.500000 475.000000,298.000000 474.963623,297.640991
C473.284851,294.854675 471.642426,292.427338 470.000000,289.750000
C470.000000,289.500000 470.000000,289.000000 469.966858,288.653503
C468.955811,287.204681 467.977905,286.102356 467.000000,284.750000
C467.000000,284.500000 467.000000,284.000000 466.966858,283.653503
C465.955811,282.204681 464.977905,281.102325 464.000000,279.750000
C464.000000,279.500000 464.000000,279.000000 463.966858,278.653503
C462.955811,277.204651 461.977905,276.102325 461.000000,274.750000
C461.000000,274.500000 461.000000,274.000000 460.966858,273.653503
C459.955811,272.204651 458.977905,271.102325 458.000000,269.750000
C458.000000,269.500000 458.000000,269.000000 457.965179,268.646545
C456.286896,266.195374 454.643463,264.097687 453.000000,261.750000
C453.000000,261.500000 453.000000,261.000000 452.965363,260.652161
C448.485352,253.535095 444.096344,246.727600 439.543915,240.031158
C438.700745,238.790924 437.198212,237.998901 436.000000,236.750000
C436.000000,236.500000 436.000000,236.000000 435.958618,235.679199
C435.278168,234.905609 434.639099,234.452805 434.000000,233.750000
C434.000000,233.500000 434.000000,233.000000 433.958618,232.679199
C433.278168,231.905609 432.639099,231.452805 432.000000,230.750000
C432.000000,230.500000 432.000000,230.000000 431.958618,229.679199
C431.278168,228.905609 430.639099,228.452805 429.780640,227.892090
C429.287628,227.584732 429.100555,227.323334 428.994995,226.645966
C428.326660,225.527939 427.663330,224.763962 426.733368,223.880493
C425.977844,223.173996 425.488922,222.586990 424.994995,221.645966
C424.326660,220.527954 423.663330,219.763977 422.780640,218.892105
C422.287628,218.584732 422.100555,218.323334 421.994995,217.645966
C421.326660,216.527939 420.663330,215.763962 419.780640,214.892090
C419.287628,214.584732 419.100555,214.323334 418.994995,213.645966
C418.326660,212.527954 417.663330,211.763977 416.719147,210.869720
C415.625549,209.826294 414.812775,208.913147 413.994995,207.645950
C413.326660,206.527939 412.663330,205.763977 411.733368,204.880524
C410.977814,204.174026 410.488892,203.587021 409.994995,202.645966
C409.326660,201.527939 408.663330,200.763977 407.706940,199.860168
C405.942596,198.146896 404.471313,196.573441 402.994995,194.645950
C402.326660,193.527939 401.663330,192.763962 400.706940,191.860184
C398.942596,190.146912 397.471283,188.573456 395.994995,186.645966
C395.326660,185.527939 394.663330,184.763977 394.000000,183.750000
C394.000000,183.500000 394.000000,183.000000 393.958618,182.679199
C393.278168,181.905609 392.639099,181.452805 391.711609,180.863770
C390.282166,179.485031 389.141083,178.242523 387.947083,176.655426
C386.929413,175.873886 385.964722,175.436935 384.702148,174.856720
C382.269562,172.475647 380.134796,170.237823 377.947083,167.655411
C376.929413,166.873901 375.964722,166.436951 374.719147,165.869720
C373.625549,164.826294 372.812775,163.913147 371.963379,162.653381
C365.580414,156.852402 359.660034,150.775345 352.794983,146.079224
C340.285187,137.521744 327.463623,129.346283 314.291931,121.855812
C305.423584,116.812553 295.758850,113.154366 286.371124,109.058235
C285.140747,108.521378 283.438171,109.066589 281.954315,109.110626
C281.517212,109.064575 281.080078,109.018524 280.257385,108.572586
C278.232300,107.818291 276.592804,107.463898 274.953308,107.109505
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M434.000000,233.000000
C434.000000,233.000000 434.000000,233.500000 434.041382,234.070786
C434.721832,235.094376 435.360931,235.547180 436.000000,236.000000
C436.000000,236.000000 436.000000,236.500000 436.036072,237.101685
C438.223145,241.435455 440.061310,245.398666 442.604492,248.841019
C445.765045,253.119049 449.508392,256.966553 453.000000,261.000000
C453.000000,261.000000 453.000000,261.500000 453.034821,262.103455
C454.713074,264.804626 456.356537,266.902313 458.000000,269.000000
C458.000000,269.000000 458.000000,269.500000 458.033142,270.096497
C459.044189,271.795319 460.022095,272.897675 461.000000,274.000000
C461.000000,274.000000 461.000000,274.500000 461.033142,275.096497
C462.044189,276.795319 463.022095,277.897644 464.000000,279.000000
C464.000000,279.000000 464.000000,279.500000 464.033142,280.096497
C465.044189,281.795349 466.022095,282.897675 467.000000,284.000000
C467.000000,284.000000 467.000000,284.500000 467.033142,285.096497
C468.044189,286.795319 469.022095,287.897675 470.000000,289.000000
C470.000000,289.000000 470.000000,289.500000 470.036377,290.109009
C471.715179,293.145325 473.357574,295.572662 475.000000,298.000000
C475.000000,298.000000 475.000000,298.500000 475.036713,299.110535
C483.048950,315.814056 491.024475,331.907043 499.000000,348.000000
C500.482849,351.199951 501.965698,354.399902 503.724274,357.799927
C504.000000,358.750000 504.000000,359.500000 504.005859,361.007416
C505.674500,365.176575 507.337250,368.588287 509.000000,372.000000
C509.000000,372.750000 509.000000,373.500000 509.005859,375.009583
C511.007843,380.846069 513.003906,385.923035 515.000000,391.000000
C515.249817,391.803375 515.499573,392.606750 515.874756,394.071106
C516.333374,395.821411 516.666687,396.910706 517.000000,398.000000
C517.000000,398.444458 517.000000,398.888885 516.750000,399.666687
C516.500000,400.000000 516.000000,400.000000 515.735291,399.813721
C514.369385,398.418518 513.268188,397.209625 512.166992,396.000702
C509.063324,386.442291 506.040985,376.856384 502.823547,367.336426
C501.070831,362.150330 499.212677,356.976654 497.006622,351.971680
C492.138184,340.926575 487.507629,329.734680 481.892548,319.069946
C472.549713,301.324951 463.276733,283.461090 452.558014,266.544678
C440.735931,247.886887 427.571991,230.053604 414.481293,212.236801
C408.459900,204.041519 401.312531,196.658478 394.502045,189.062851
C389.150879,183.094833 383.611938,177.288620 378.000183,171.563675
C375.240021,168.747879 372.125732,166.279221 369.415894,163.334381
C370.440063,163.010193 371.220032,163.005096 372.000000,162.999985
C372.812775,163.913147 373.625549,164.826294 374.860107,166.158936
C376.187927,167.052292 377.093964,167.526138 378.000000,168.000000
C380.134796,170.237823 382.269562,172.475647 384.843109,175.145966
C386.187927,176.052307 387.093964,176.526154 388.000000,177.000015
C389.141083,178.242523 390.282166,179.485031 391.752991,181.184570
C392.721832,182.094391 393.360901,182.547195 394.000000,183.000000
C394.000000,183.000000 394.000000,183.500000 394.025818,184.071243
C394.701080,185.428329 395.350525,186.214157 396.000000,187.000000
C397.471283,188.573456 398.942596,190.146912 400.732727,192.181427
C401.701080,193.428314 402.350555,194.214157 403.000000,194.999985
C404.471313,196.573441 405.942596,198.146896 407.732727,200.181427
C408.701050,201.428329 409.350525,202.214172 410.000000,203.000000
C410.488892,203.587021 410.977814,204.174026 411.759155,205.201752
C412.701080,206.428329 413.350525,207.214157 414.000000,208.000000
C414.812775,208.913147 415.625549,209.826294 416.744934,211.190964
C417.701050,212.428329 418.350525,213.214172 419.000000,214.000000
C419.100555,214.323334 419.287628,214.584732 419.806427,215.213348
C420.701080,216.428314 421.350555,217.214157 422.000000,218.000000
C422.100555,218.323334 422.287628,218.584732 422.806427,219.213348
C423.701050,220.428329 424.350525,221.214172 425.000000,222.000000
C425.488922,222.586990 425.977844,223.173996 426.759155,224.201752
C427.701080,225.428329 428.350525,226.214157 429.000000,227.000000
C429.100555,227.323334 429.287628,227.584732 429.821991,228.212891
C430.721832,229.094391 431.360901,229.547195 432.000000,230.000000
C432.000000,230.000000 432.000000,230.500000 432.041382,231.070801
C432.721832,232.094391 433.360901,232.547195 434.000000,233.000000
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M516.000000,400.000000
C516.000000,400.000000 516.500000,400.000000 516.750000,400.000000
C520.446350,400.519379 520.724548,403.181549 521.588135,405.932129
C525.026489,416.883789 528.840454,427.717499 532.809143,438.823792
C532.663147,439.697021 532.223267,440.341370 531.096802,441.001526
C529.940125,441.011536 529.470093,441.005768 528.722778,440.757507
C525.274841,429.888275 522.155396,419.245605 518.854126,408.659637
C518.525330,407.605408 517.089478,406.896423 516.167419,406.027222
C516.167419,406.027222 516.023987,405.579834 516.003418,404.920868
C515.988586,402.841278 515.994324,401.420624 516.000000,400.000000
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M515.348816,390.942444
C513.003906,385.923035 511.007843,380.846069 509.005859,375.384583
C510.083679,375.532928 511.792969,375.803223 512.145569,376.643097
C513.908752,380.842590 515.345825,385.181671 516.785278,389.509003
C516.886475,389.813354 516.081299,390.419250 515.348816,390.942444
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M509.347595,371.943024
C507.337250,368.588287 505.674500,365.176575 504.005859,361.382416
C508.510986,362.320740 511.408936,367.860016 509.347595,371.943024
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M517.309082,397.839294
C516.666687,396.910706 516.333374,395.821411 516.000061,394.366058
C519.139038,394.082611 520.018982,395.159027 517.309082,397.839294
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M371.963379,162.653381
C371.220032,163.005096 370.440063,163.010193 369.270142,163.026215
C354.707214,152.316376 340.685730,141.385864 326.281158,130.985916
C321.067139,127.221451 315.052277,124.481613 309.196411,121.710487
C300.340942,117.519882 291.304718,113.711227 282.149811,109.425446
C283.438171,109.066589 285.140747,108.521378 286.371124,109.058235
C295.758850,113.154366 305.423584,116.812553 314.291931,121.855812
C327.463623,129.346283 340.285187,137.521744 352.794983,146.079224
C359.660034,150.775345 365.580414,156.852402 371.963379,162.653381
z"/>
<path fill="#FFFFFE" opacity="1.000000" stroke="none"
d="
M516.099365,406.426208
C517.089478,406.896423 518.525330,407.605408 518.854126,408.659637
C522.155396,419.245605 525.274841,429.888275 528.722778,441.151733
C528.998535,442.577759 528.997070,443.367035 528.995605,444.156281
C527.366150,440.191467 525.583252,436.281555 524.140564,432.249908
C521.520996,424.929596 519.083679,417.543640 516.625000,410.166840
C516.271118,409.104919 516.221619,407.941589 516.099365,406.426208
z"/>
<path fill="#FFFFFE" opacity="1.000000" stroke="none"
d="
M515.735291,399.813721
C515.994324,401.420624 515.988586,402.841278 515.970581,404.688232
C514.973877,404.236145 513.546448,403.535309 513.106750,402.438477
C512.411011,400.703064 512.376953,398.702362 512.114990,396.407288
C513.268188,397.209625 514.369385,398.418518 515.735291,399.813721
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M275.133057,107.414597
C276.592804,107.463898 278.232300,107.818291 279.934906,108.503029
C278.436279,108.462143 276.874573,108.090912 275.133057,107.414597
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M529.222900,444.507233
C528.997070,443.367035 528.998535,442.577759 529.000000,441.394257
C529.470093,441.005768 529.940125,441.011536 530.762573,441.029602
C530.559937,442.313995 530.005066,443.586090 529.222900,444.507233
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M499.251740,347.787720
C491.024475,331.907043 483.048950,315.814056 475.036713,299.360535
C475.919037,299.831879 477.182098,300.489532 477.705017,301.522034
C484.597198,315.129822 491.417328,328.774536 498.154602,342.459656
C498.918060,344.010437 499.068665,345.862915 499.251740,347.787720
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M452.965363,260.652161
C449.508392,256.966553 445.765045,253.119049 442.604492,248.841019
C440.061310,245.398666 438.223145,241.435455 436.036072,237.351669
C437.198212,237.998901 438.700745,238.790924 439.543915,240.031158
C444.096344,246.727600 448.485352,253.535095 452.965363,260.652161
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M474.963623,297.640991
C473.357574,295.572662 471.715179,293.145325 470.036377,290.359009
C471.642426,292.427338 473.284851,294.854675 474.963623,297.640991
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M457.965179,268.646545
C456.356537,266.902313 454.713074,264.804626 453.034821,262.353455
C454.643463,264.097687 456.286896,266.195374 457.965179,268.646545
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M469.966858,288.653503
C469.022095,287.897675 468.044189,286.795319 467.033142,285.346497
C467.977905,286.102356 468.955811,287.204681 469.966858,288.653503
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M466.966858,283.653503
C466.022095,282.897675 465.044189,281.795349 464.033142,280.346497
C464.977905,281.102325 465.955811,282.204681 466.966858,283.653503
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M463.966858,278.653503
C463.022095,277.897644 462.044189,276.795319 461.033142,275.346497
C461.977905,276.102325 462.955811,277.204651 463.966858,278.653503
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M460.966858,273.653503
C460.022095,272.897675 459.044189,271.795319 458.033142,270.346497
C458.977905,271.102325 459.955811,272.204651 460.966858,273.653503
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M428.994995,226.645966
C428.350525,226.214157 427.701080,225.428329 427.025818,224.321243
C427.663330,224.763962 428.326660,225.527939 428.994995,226.645966
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M424.994995,221.645966
C424.350525,221.214172 423.701050,220.428329 423.025818,219.321259
C423.663330,219.763977 424.326660,220.527954 424.994995,221.645966
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M421.994995,217.645966
C421.350555,217.214157 420.701080,216.428314 420.025818,215.321243
C420.663330,215.763962 421.326660,216.527939 421.994995,217.645966
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M418.994995,213.645966
C418.350525,213.214172 417.701050,212.428329 417.025818,211.321243
C417.663330,211.763977 418.326660,212.527954 418.994995,213.645966
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M413.994995,207.645966
C413.350525,207.214157 412.701080,206.428329 412.025818,205.321243
C412.663330,205.763977 413.326660,206.527939 413.994995,207.645966
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M409.994995,202.645966
C409.350525,202.214172 408.701050,201.428329 408.025818,200.321243
C408.663330,200.763977 409.326660,201.527939 409.994995,202.645966
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M402.994995,194.645950
C402.350555,194.214157 401.701080,193.428314 401.025818,192.321228
C401.663330,192.763962 402.326660,193.527939 402.994995,194.645950
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M395.994995,186.645966
C395.350525,186.214157 394.701080,185.428329 394.025818,184.321243
C394.663330,184.763977 395.326660,185.527939 395.994995,186.645966
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M387.947083,176.655426
C387.093964,176.526154 386.187927,176.052307 385.140930,175.289215
C385.964722,175.436935 386.929413,175.873886 387.947083,176.655426
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M377.947083,167.655426
C377.093964,167.526138 376.187927,167.052292 375.140930,166.289215
C375.964722,166.436951 376.929413,166.873901 377.947083,167.655426
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M435.958618,235.679199
C435.360931,235.547180 434.721832,235.094376 434.041382,234.320786
C434.639099,234.452805 435.278168,234.905609 435.958618,235.679199
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M433.958618,232.679199
C433.360901,232.547195 432.721832,232.094391 432.041382,231.320801
C432.639099,231.452805 433.278168,231.905609 433.958618,232.679199
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M431.958618,229.679199
C431.360901,229.547195 430.721832,229.094391 430.041382,228.320801
C430.639099,228.452805 431.278168,228.905609 431.958618,229.679199
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M393.958618,182.679199
C393.360901,182.547195 392.721832,182.094391 392.041382,181.320801
C392.639099,181.452805 393.278168,181.905609 393.958618,182.679199
z"/>
</svg>

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="_Слой_2" data-name="Слой 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 378.95 128.55">
<defs>
<style>
.cls-1 {
fill: #fff;
}
</style>
</defs>
<g id="_Слой_13_копия_" data-name="Слой 13 (копия)">
<path class="cls-1" d="m49.05,128.55v-59.85c0-9.7-3.55-14.55-10.65-14.55-2.8,0-5.28,1.03-7.42,3.07-2.15,2.05-3.23,4.48-3.23,7.27,0,3,1.02,5.55,3.08,7.65,2.05,2.1,4.47,3.15,7.27,3.15,2.4,0,4.65-.85,6.75-2.55v30.15c-2,.3-4,.45-6,.45-10.8,0-19.98-3.72-27.52-11.17C3.77,84.73,0,75.65,0,64.95s3.75-19.58,11.25-26.92c7.5-7.35,16.7-11.03,27.6-11.03s19.77,3.73,26.92,11.18c7.15,7.45,10.73,17.28,10.73,29.48v60.9h-27.45Z"/>
<path class="cls-1" d="m186.73,3.6v71.4c0,8.9-2.7,16.18-8.1,21.82-5.4,5.65-12.45,8.48-21.15,8.48-10.3,0-18.2-4.7-23.7-14.1-3.2,4.9-6.7,8.48-10.5,10.73-3.8,2.25-8.65,3.38-14.55,3.38-9,0-15.9-2.8-20.7-8.4-4.8-5.6-7.2-13.75-7.2-24.45V3.6h29.85v64.35c0,3,.23,5.08.67,6.23.45,1.15,1.47,1.73,3.08,1.73,3,0,4.5-2.5,4.5-7.5V3.6h29.7v64.35c0,3.1.27,5.2.83,6.3.55,1.1,1.58,1.65,3.08,1.65,2.9,0,4.35-2.65,4.35-7.95V3.6h29.85Z"/>
<path class="cls-1" d="m218.5,32.55v73.05h-27.45V32.55h27.45Zm-26.7-19.35c0-3.7,1.27-6.83,3.83-9.38,2.55-2.55,5.67-3.83,9.38-3.83s6.82,1.27,9.38,3.83c2.55,2.55,3.82,5.68,3.82,9.38s-1.27,6.82-3.82,9.38c-2.55,2.55-5.68,3.82-9.38,3.82s-6.83-1.27-9.38-3.82c-2.55-2.55-3.83-5.67-3.83-9.38Z"/>
<path class="cls-1" d="m298.73,70.43c-.8,10.6-4.88,19.25-12.22,25.95-7.35,6.7-15.93,10.05-25.72,10.05-10.4,0-19.33-3.75-26.78-11.25-7.45-7.5-11.17-16.5-11.17-27s3.72-19.47,11.17-26.92c7.45-7.45,16.37-11.18,26.78-11.18,8.9,0,16.85,2.8,23.85,8.4,7,5.6,11.45,13.05,13.35,22.35l-28.2.9c-2.2-3.1-5.2-4.65-9-4.65-3,0-5.58,1.1-7.73,3.3-2.15,2.2-3.22,4.8-3.22,7.8s1.07,5.62,3.22,7.88c2.15,2.25,4.73,3.38,7.73,3.38,2.4,0,4.57-.7,6.52-2.1,1.95-1.4,3.27-3.35,3.98-5.85l27.45-1.05Z"/>
<path class="cls-1" d="m330.5,4.73v100.05h-27.45V4.73h27.45Zm42,27l-13.5,26.55,19.95,46.5h-30.3l-17.1-47.7,12.45-25.35h28.5Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,94 @@
// import React from 'react';
// import { Layout } from 'antd';
// import MainSection from './MainSection';
// import FourstepSection from './FourSteps';
// import MakeEasier from './MakeEasier';
// import Questions from './Questions';
// import WorkInTeam from './WorkInTeam';
// import PriceList from './PriceList';
// import Udobno from './Udobno';
// import Header from './Header';
// import ContactBlock from './ContactBlock';
// import Footer from './Footer';
// const { Content } = Layout;
// const CustomLayout = () => (
// <Layout
// className="layout"
// >
// <Header />
// <Content style={{ padding: '0 50px', background: '#ffffff' }}>
// <MainSection />
// <div style={{ background: '#fff', position: 'relative', minHeight: 'calc(100vh - 64px)' }}> {/* Вычитаем высоту header если он есть */}
// <div >
// <Udobno />
// <MakeEasier />
// <FourstepSection />
// <WorkInTeam />
// <PriceList />
// <Questions />
// <div className='mb-4'><ContactBlock /></div>
// </div>
// </div>
// </Content>
// <Footer />
// </Layout>
// );
// export default CustomLayout;
import React from 'react';
import { Layout } from 'antd';
import MainSection from './MainSection';
import FourstepSection from './FourSteps';
import MakeEasier from './MakeEasier';
import Questions from './Questions';
import WorkInTeam from './WorkInTeam';
import PriceList from './PriceList';
import Udobno from './Udobno';
import Header from './Header';
import ContactBlock from './ContactBlock';
import Footer from './Footer';
const { Content } = Layout;
const CustomLayout = () => (
<Layout className="layout">
<Header />
<Content style={{ padding: '0 50px', background: '#ffffff' }}>
<MainSection />
<div className="relative w-full"> {/* Убрали ограничение высоты */}
<div>
<Udobno />
<MakeEasier />
<FourstepSection />
<WorkInTeam />
<PriceList />
<Questions />
<div className="w-full"><ContactBlock /></div> {/* Изменили mb-4 на w-full */}
</div>
</div>
</Content>
<Footer />
</Layout>
);
export default CustomLayout;

View File

@ -0,0 +1,258 @@
// import { useState } from "react"
// import videoback from '../vids/backvideo2.webm'
// export default function Component() {
// const [formData, setFormData] = useState({
// name: '',
// email: '',
// message: ''
// })
// const handleSubmit = (e) => {
// e.preventDefault()
// console.log('Form submitted:', formData)
// }
// const handleChange = (e) => {
// setFormData({
// ...formData,
// [e.target.name]: e.target.value
// })
// }
// return (
// <div id="contacts-section" className="relative w-full min-h-[700px] bg-white">
// <div className="relative flex justify-center items-center max-w-6xl mx-auto p-8 h-full">
// {/* Main container with video background */}
// <div className="w-full relative p-12 rounded-3xl overflow-hidden">
// {/* Video background */}
// <div className="absolute inset-0 z-0">
// <video
// autoPlay
// loop
// muted
// playsInline
// className="w-full h-full object-cover rounded-3xl"
// >
// <source src={videoback} type="video/webm" />
// Your browser does not support the video tag.
// </video>
// {/* Optional overlay for better text visibility */}
// <div
// className="absolute inset-0 rounded-3xl"
// style={{
// background: 'linear-gradient(135deg, rgba(118, 184, 42, 0.3), rgba(144, 201, 92, 0.3))',
// backdropFilter: 'blur(5px)',
// }}
// />
// </div>
// {/* Content */}
// <div className="relative z-10 flex justify-between items-center gap-12">
// {/* Text content */}
// <div className="w-1/2">
// <h2 className="text-4xl font-extrabold mb-4 text-white drop-shadow-sm">
// Остались вопросы?
// </h2>
// <p className="text-2xl font-bold text-white">
// Свяжитесь с нами, мы постараемся вам помочь!
// </p>
// </div>
// {/* Form */}
// <div className="w-[500px] bg-white/95 backdrop-blur-sm p-8 rounded-xl shadow-lg">
// <h3 className="text-2xl font-bold text-center mb-6">Свяжитесь с нами!</h3>
// <form onSubmit={handleSubmit} className="space-y-6">
// <div>
// <label htmlFor="name" className="block text-sm font-medium text-gray-700 mb-1">
// Имя
// </label>
// <input
// type="text"
// id="name"
// name="name"
// value={formData.name}
// onChange={handleChange}
// placeholder="Введите свое имя"
// className="w-full px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-green-500"
// required
// />
// </div>
// <div>
// <label htmlFor="email" className="block text-sm font-medium text-gray-700 mb-1">
// Почта
// </label>
// <input
// type="email"
// id="email"
// name="email"
// value={formData.email}
// onChange={handleChange}
// placeholder="Введите свою почту"
// className="w-full px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-green-500"
// required
// />
// </div>
// <div>
// <label htmlFor="message" className="block text-sm font-medium text-gray-700 mb-1">
// Сообщение
// </label>
// <textarea
// id="message"
// name="message"
// value={formData.message}
// onChange={handleChange}
// placeholder="Введите сообщение, которое хотите отправить"
// rows={4}
// className="w-full px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-green-500"
// required
// />
// </div>
// <button
// type="submit"
// className="w-full bg-[#000000] text-white font-medium py-2 px-4 rounded-md hover:bg-[#90c95c] transition-colors duration-200"
// >
// Отправить
// </button>
// </form>
// </div>
// </div>
// </div>
// </div>
// </div>
// )
// }
import { useState } from "react";
import videoback from '../vids/backvideo2.webm';
import translations from '../translations.json';
import { useLanguage } from '../contexts/LanguageContext';
export default function ContactBlock() {
const { language } = useLanguage();
const t = translations.contacts[language];
const [formData, setFormData] = useState({
name: '',
email: '',
message: ''
});
const handleSubmit = (e) => {
e.preventDefault();
console.log('Form submitted:', formData);
};
const handleChange = (e) => {
setFormData({
...formData,
[e.target.name]: e.target.value
});
};
return (
<div id="contacts-section" className="relative w-full min-h-[700px] bg-white">
<div className="relative flex justify-center items-center max-w-6xl mx-auto p-8 h-full">
{/* Main container with video background */}
<div className="w-full relative p-12 rounded-3xl overflow-hidden">
{/* Video background */}
<div className="absolute inset-0 z-0">
<video
autoPlay
loop
muted
playsInline
className="w-full h-full object-cover rounded-3xl"
>
<source src={videoback} type="video/webm" />
Your browser does not support the video tag.
</video>
{/* Optional overlay for better text visibility */}
<div
className="absolute inset-0 rounded-3xl"
style={{
background: 'linear-gradient(135deg, rgba(118, 184, 42, 0.3), rgba(144, 201, 92, 0.3))',
backdropFilter: 'blur(5px)',
}}
/>
</div>
{/* Content */}
<div className="relative z-10 flex justify-between items-center gap-12">
{/* Text content */}
<div className="w-1/2">
<h2 className="text-4xl font-extrabold mb-4 text-white drop-shadow-sm">
{t.title}
</h2>
<p className="text-2xl font-bold text-white">
{t.subtitle}
</p>
</div>
{/* Form */}
<div className="w-[500px] bg-white/95 backdrop-blur-sm p-8 rounded-xl shadow-lg">
<h3 className="text-2xl font-bold text-center mb-6">{t.formTitle}</h3>
<form onSubmit={handleSubmit} className="space-y-6">
<div>
<label htmlFor="name" className="block text-sm font-medium text-gray-700 mb-1">
{t.form.name.label}
</label>
<input
type="text"
id="name"
name="name"
value={formData.name}
onChange={handleChange}
placeholder={t.form.name.placeholder}
className="w-full px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-green-500"
required
/>
</div>
<div>
<label htmlFor="email" className="block text-sm font-medium text-gray-700 mb-1">
{t.form.email.label}
</label>
<input
type="email"
id="email"
name="email"
value={formData.email}
onChange={handleChange}
placeholder={t.form.email.placeholder}
className="w-full px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-green-500"
required
/>
</div>
<div>
<label htmlFor="message" className="block text-sm font-medium text-gray-700 mb-1">
{t.form.message.label}
</label>
<textarea
id="message"
name="message"
value={formData.message}
onChange={handleChange}
placeholder={t.form.message.placeholder}
rows={4}
className="w-full px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-green-500"
required
/>
</div>
<button
type="submit"
className="w-full bg-[#000000] text-white font-medium py-2 px-4 rounded-md hover:bg-[#90c95c] transition-colors duration-200"
>
{t.form.submitButton}
</button>
</form>
</div>
</div>
</div>
</div>
</div>
);
}

View File

@ -0,0 +1,32 @@
import { Link, useNavigate } from 'react-router-dom';
export function CustomLink({ to, children, className, onClick, ...props }) {
const navigate = useNavigate();
const handleClick = (e) => {
e.preventDefault();
// Сначала выполняем плавную прокрутку
window.scrollTo({
top: 0,
behavior: 'smooth'
});
// Затем с небольшой задержкой выполняем переход
setTimeout(() => {
navigate(to);
if (onClick) onClick(e);
}, 300); // Задержка должна быть меньше времени прокрутки
};
return (
<Link
to={to}
className={className}
onClick={handleClick}
{...props}
>
{children}
</Link>
);
}

View File

@ -0,0 +1,145 @@
import React, { useState } from 'react';
import { Minus, Plus } from 'lucide-react';
import translations from '../translations.json';
import { useLanguage } from '../contexts/LanguageContext';
const DynamicPricing = () => {
const { language } = useLanguage();
const t = translations.dynamicPricing[language];
const [accountCount, setAccountCount] = useState(5);
const [isAnnual, setIsAnnual] = useState(true);
// Base prices per plan (for 5 accounts)
const basePrices = {
standard: 11.49,
premium: 13.49,
advanced: 15.49
};
// Additional price per extra account
const pricePerAccount = {
standard: 0.5,
premium: 0.75,
advanced: 1.0
};
const calculatePrice = (plan) => {
const basePrice = basePrices[plan];
const extraAccounts = Math.max(0, accountCount - 5);
const extraCost = extraAccounts * pricePerAccount[plan];
const totalPrice = basePrice + extraCost;
return isAnnual ? totalPrice : totalPrice * 1.15; // 15% more for monthly
};
const decreaseAccounts = () => {
if (accountCount > 5) {
setAccountCount(prev => prev - 5);
}
};
const increaseAccounts = () => {
setAccountCount(prev => prev + 5);
};
return (
<div className="w-full max-w-7xl mx-auto p-6">
<div className="text-center mb-8">
<h1 className="text-4xl font-bold mb-4">{t.compare}</h1>
<p className="text-gray-600 mb-8">{t.choose}</p>
<div className="flex justify-center gap-4">
<button
href="http://app.qwickpost.com/"
onClick={() => setIsAnnual(false)}
className={`px-6 py-2 rounded-full border ${
!isAnnual
? 'border-green-500 bg-white text-black'
: 'border-gray-200 text-gray-500'
}`}
>
{t.monthly}
</button>
<button
href="http://app.qwickpost.com/"
onClick={() => setIsAnnual(true)}
className={`px-6 py-2 rounded-full border ${
isAnnual
? 'border-green-500 bg-green-500 text-white'
: 'border-gray-200 text-gray-500'
}`}
>
{t.annual}
</button>
</div>
</div>
<div className="flex items-center justify-center mb-12">
<div className="flex items-center bg-gray-100 rounded-full p-2">
<div className="flex items-center">
<span className="mr-2">{t.accounts}</span>
<button
href="http://app.qwickpost.com/"
onClick={decreaseAccounts}
className="p-1 rounded-full hover:bg-white transition-colors"
disabled={accountCount <= 5}
>
<Minus className="h-5 w-5" />
</button>
<span className="mx-4 font-semibold">{accountCount}</span>
<button
onClick={increaseAccounts}
className="p-1 rounded-full hover:bg-white transition-colors"
>
<Plus className="h-5 w-5" />
</button>
</div>
</div>
</div>
<div className="grid md:grid-cols-3 gap-8">
{['standard', 'premium', 'advanced'].map((plan) => (
<div key={plan} className="relative rounded-lg border border-gray-200 p-6">
{plan === 'premium' && (
<div className="absolute -top-3 right-4 bg-green-500 text-white px-3 py-1 rounded-full text-sm">
{t.features.premium.popular}
</div>
)}
<h3 className="text-2xl font-bold mb-2">
{t.features[plan].title}
</h3>
<p className="text-gray-600 mb-6">
{t.features[plan].description}
</p>
<div className="text-4xl font-bold mb-4">
{calculatePrice(plan).toFixed(2)} $
<span className="text-base font-normal text-gray-500 ml-1">
{/* /{language === 'ru' ? 'мес' : 'month'} */}
/{t.mounth}
</span>
</div>
<button
className="w-full py-3 px-4 rounded-lg bg-green-500 text-white font-medium mb-8"
>
{plan === 'premium' ? t.startButton : t.tryButton}
</button>
<ul className="space-y-3">
{t.features[plan].features.map((feature, index) => (
<li key={index} className="flex items-center gap-2">
<svg className="w-5 h-5 text-green-500" viewBox="0 0 20 20" fill="currentColor">
<path fillRule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clipRule="evenodd" />
</svg>
<span className="text-sm">{feature}</span>
</li>
))}
</ul>
</div>
))}
</div>
{/* <h1 className="text-3xl text-center font-bold mb-4">{t.compareList}</h1> */}
</div>
);
};
export default DynamicPricing;

404
src/components/Footer.js Normal file
View File

@ -0,0 +1,404 @@
// import React from 'react'
// import { Facebook, Twitter, Instagram, Linkedin, Mail } from 'lucide-react'
// export default function Footer() {
// return (
// <footer className="bg-gray-100 mt-8">
// <div className="max-w-7xl mx-auto py-12 px-4 sm:px-6 lg:py-16 lg:px-8">
// <div className="xl:grid xl:grid-cols-3 xl:gap-8">
// <div className="space-y-8 xl:col-span-1">
// <p className="text-gray-500 text-base">
// Профессиональная платформа продвижения соц сетей. Упростите ваш социальный маркетинг с qWickPost.
// </p>
// <div className="flex space-x-6">
// <a href="#" className="text-gray-400 hover:text-gray-500">
// <span className="sr-only">Facebook</span>
// <Facebook className="h-6 w-6" />
// </a>
// <a href="#" className="text-gray-400 hover:text-gray-500">
// <span className="sr-only">Twitter</span>
// <Twitter className="h-6 w-6" />
// </a>
// <a href="#" className="text-gray-400 hover:text-gray-500">
// <span className="sr-only">Instagram</span>
// <Instagram className="h-6 w-6" />
// </a>
// <a href="#" className="text-gray-400 hover:text-gray-500">
// <span className="sr-only">LinkedIn</span>
// <Linkedin className="h-6 w-6" />
// </a>
// </div>
// </div>
// <div className="mt-12 grid grid-cols-2 gap-8 xl:mt-0 xl:col-span-2">
// <div className="md:grid md:grid-cols-2 md:gap-8">
// <div>
// <h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">Решения</h3>
// <ul role="list" className="mt-4 space-y-4">
// <li>
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
// Планирование
// </a>
// </li>
// <li>
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
// Аналитика
// </a>
// </li>
// <li>
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
// Публикации
// </a>
// </li>
// </ul>
// </div>
// <div className="mt-12 md:mt-0">
// <h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">Поддержка</h3>
// <ul role="list" className="mt-4 space-y-4">
// <li>
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
// Цены
// </a>
// </li>
// <li>
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
// Документация
// </a>
// </li>
// <li>
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
// Руководства
// </a>
// </li>
// </ul>
// </div>
// </div>
// <div className="md:grid md:grid-cols-2 md:gap-8">
// <div>
// <h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">Компания</h3>
// <ul role="list" className="mt-4 space-y-4">
// <li>
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
// О нас
// </a>
// </li>
// <li>
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
// Блог
// </a>
// </li>
// <li>
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
// Партнеры
// </a>
// </li>
// </ul>
// </div>
// <div className="mt-12 md:mt-0">
// <h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">Контакты</h3>
// <ul role="list" className="mt-4 space-y-4">
// <li className="flex">
// <Mail className="flex-shrink-0 h-6 w-6 text-gray-400" aria-hidden="true" />
// <span className="ml-3 text-base text-gray-500">business@qwickpost.com</span>
// </li>
// <li className="flex">
// <span className="ml-3 text-base text-gray-500">Уагадугу, Буркина-Фасо</span>
// </li>
// <li className="flex">
// <span className="ml-3 text-base text-gray-500">Поддержка 24/7</span>
// </li>
// </ul>
// </div>
// </div>
// </div>
// </div>
// <div className="mt-12 border-t border-gray-200 pt-8">
// <p className="text-base text-gray-400 xl:text-center">
// &copy; 2024 qWickPost. Все права защищены.
// </p>
// </div>
// </div>
// </footer>
// )
// }
// import React from 'react';
// import { Facebook, Twitter, Instagram, Linkedin} from 'lucide-react';
// import translations from '../translations.json';
// import { useLanguage } from '../contexts/LanguageContext';
// import { Link } from 'react-router-dom';
// import { CustomLink } from './CustomLink';
// import { ScrollLink } from './ScrollLink';
// export default function Footer() {
// const { language } = useLanguage();
// const t = translations.footer[language];
// const socialIcons = {
// facebook: Facebook,
// twitter: Twitter,
// instagram: Instagram,
// linkedin: Linkedin
// };
// const renderSupportLink = (key, value) => {
// if (key === 'pricing') {
// return (
// <CustomLink to="/pricing" className="text-base text-gray-500 hover:text-gray-900">
// {value}
// </CustomLink>
// );
// }
// if (key === 'documentation') {
// return (
// <a href="/#contacts-section" className="text-base text-gray-500 hover:text-gray-900">
// {value}
// </a>
// );
// }
// return (
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
// {value}
// </a>
// );
// };
// return (
// <footer className="bg-gray-100 mt-8">
// <div className="max-w-7xl mx-auto py-12 px-4 sm:px-6 lg:py-16 lg:px-8">
// <div className="xl:grid xl:grid-cols-3 xl:gap-8">
// <div className="space-y-8 xl:col-span-1">
// <p className="text-gray-500 text-base">
// {t.description}
// </p>
// <div className="flex space-x-6">
// {Object.entries(t.socials).map(([key, value]) => {
// const Icon = socialIcons[key];
// return (
// <a key={key} href="#" className="text-gray-400 hover:text-gray-500">
// <span className="sr-only">{value}</span>
// <Icon className="h-6 w-6" />
// </a>
// );
// })}
// </div>
// </div>
// <div className="mt-12 grid grid-cols-2 gap-8 xl:mt-0 xl:col-span-2">
// <div className="md:grid md:grid-cols-2 md:gap-8">
// <div>
// <h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">
// {t.sections.solutions.title}
// </h3>
// <ul role="list" className="mt-4 space-y-4">
// {Object.entries(t.sections.solutions.links).map(([key, value]) => (
// <li key={key}>
// <a href="/#usability-section" className="text-base text-gray-500 hover:text-gray-900">
// {value}
// </a>
// </li>
// ))}
// </ul>
// </div>
// <div className="mt-12 md:mt-0">
// <h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">
// {t.sections.support.title}
// </h3>
// <ul role="list" className="mt-4 space-y-4">
// {Object.entries(t.sections.support.links).map(([key, value]) => (
// <li key={key}>
// {renderSupportLink(key, value)}
// </li>
// ))}
// </ul>
// </div>
// </div>
// <div className="md:grid md:grid-cols-2 md:gap-8">
// <div className="mt-12 md:mt-0">
// <h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">
// {t.sections.contacts.title}
// </h3>
// <ul role="list" className="mt-4 space-y-4">
// <li className="flex">
// {/* <Mail className="flex-shrink-0 h-6 w-6 text-gray-400" aria-hidden="true" /> */}
// <span className="ml-3 text-base text-gray-500">
// {t.sections.contacts.email}
// </span>
// </li>
// <li className="flex">
// <span className="ml-3 text-base text-gray-500">
// {t.sections.contacts.address}
// </span>
// </li>
// <li className="flex">
// <span className="ml-3 text-base text-gray-500">
// {t.sections.contacts.support}
// </span>
// </li>
// </ul>
// </div>
// </div>
// </div>
// </div>
// <div className="mt-12 border-t border-gray-200 pt-8">
// <p className="text-base text-gray-400 xl:text-center">
// {t.copyright}
// </p>
// </div>
// </div>
// </footer>
// );
// }
import React from 'react';
import { Facebook, Twitter, Instagram, Linkedin} from 'lucide-react';
import { FacebookFilled, XOutlined, InstagramOutlined, SendOutlined } from '@ant-design/icons';
import translations from '../translations.json';
import { useLanguage } from '../contexts/LanguageContext';
import { CustomLink } from './CustomLink';
export default function Footer() {
const { language } = useLanguage();
const t = translations.footer[language];
const socialIcons = {
facebook: FacebookFilled,
twitter: XOutlined,
instagram: InstagramOutlined,
telegramm: SendOutlined
};
// Здесь можно будет настроить URL-адреса социальных сетей
const socialLinks = {
facebook: "https://www.facebook.com/profile.php?id=61566725398725", // Заменить на реальный URL Facebook
twitter: "https://x.com/home", // Заменить на реальный URL Twitter
instagram: "https://www.instagram.com/qwick_post", // Заменить на реальный URL Instagram
telegramm: "https://web.telegram.org/" // Заменить на реальный URL LinkedIn
};
const renderSupportLink = (key, value) => {
if (key === 'pricing') {
return (
<CustomLink to="/pricing" className="text-base text-gray-500 hover:text-gray-900">
{value}
</CustomLink>
);
}
if (key === 'documentation') {
return (
<a href="/#contacts-section" className="text-base text-gray-500 hover:text-gray-900">
{value}
</a>
);
}
return (
<a href="#" className="text-base text-gray-500 hover:text-gray-900">
{value}
</a>
);
};
return (
<footer className="bg-gray-100 mt-8">
<div className="max-w-7xl mx-auto py-12 px-4 sm:px-6 lg:py-16 lg:px-8">
<div className="xl:grid xl:grid-cols-3 xl:gap-8">
<div className="space-y-8 xl:col-span-1">
<p className="text-gray-500 text-base">
{t.description}
</p>
<div className="flex space-x-6">
{Object.entries(t.socials).map(([key, value]) => {
const Icon = socialIcons[key];
return (
<a
key={key}
href={socialLinks[key]}
target="_blank"
rel="noopener noreferrer"
className="text-gray-400 hover:text-gray-500"
title={value}
>
<span className="sr-only">{value}</span>
<Icon className="h-6 w-6" />
</a>
);
})}
</div>
</div>
<div className="mt-12 grid grid-cols-2 gap-8 xl:mt-0 xl:col-span-2">
<div className="md:grid md:grid-cols-2 md:gap-8">
<div>
<h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">
{t.sections.solutions.title}
</h3>
<ul role="list" className="mt-4 space-y-4">
{Object.entries(t.sections.solutions.links).map(([key, value]) => (
<li key={key}>
<a href="/solutions" className="text-base text-gray-500 hover:text-gray-900">
{value}
</a>
</li>
))}
</ul>
</div>
<div className="mt-12 md:mt-0">
<h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">
{t.sections.support.title}
</h3>
<ul role="list" className="mt-4 space-y-4">
{Object.entries(t.sections.support.links).map(([key, value]) => (
<li key={key}>
{renderSupportLink(key, value)}
</li>
))}
</ul>
</div>
</div>
<div className="md:grid md:grid-cols-2 md:gap-8">
<div className="mt-12 md:mt-0">
<h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">
{t.sections.contacts.title}
</h3>
<ul role="list" className="mt-4 space-y-4">
<li className="flex">
<a
href={`mailto:${t.sections.contacts.email}`}
className="ml-3 text-base text-gray-500 hover:text-gray-900"
>
{t.sections.contacts.email}
</a>
</li>
<li className="flex">
<a
href="https://www.google.com/maps/place/%D0%91%D1%83%D1%80%D0%BA%D0%B8%D0%BD%D0%B0-%D0%A4%D0%B0%D1%81%D0%BE/@12.2400091,-4.1961905,7z/data=!3m1!4b1!4m6!3m5!1s0xe2dca26d5a6709b:0x27930aed46836dab!8m2!3d12.238333!4d-1.561593!16zL20vMDE2OTk?entry=ttu&g_ep=EgoyMDI0MTExOS4yIKXMDSoASAFQAw%3D%3D" // Заменить на реальный URL карты
target="_blank"
rel="noopener noreferrer"
className="ml-3 text-base text-gray-500 hover:text-gray-900"
>
{t.sections.contacts.address}
</a>
</li>
<li className="flex">
{/* <a
className="ml-3 text-base text-gray-500 hover:text-gray-900"
>
{t.sections.contacts.support}
</a> */}
</li>
</ul>
</div>
</div>
</div>
</div>
<div className="mt-12 border-t border-gray-200 pt-8">
<p className="text-base text-gray-400 xl:text-center">
{t.copyright}
</p>
</div>
</div>
</footer>
);
}

261
src/components/FourSteps.js Normal file
View File

@ -0,0 +1,261 @@
// import firstimage from '../images/foursteps/login.png'
// import secondimage from '../images/foursteps/iphoneves.jpg'
// import thirdimage from '../images/foursteps/analyzeandoptimize.jpg'
// import fourthimage from '../images/foursteps/telefonvruke.jpg'
// import React, { useRef, useEffect, useState } from 'react'
// import { motion, AnimatePresence } from 'framer-motion'
// export default function FourSteps() {
// const [activeStep, setActiveStep] = useState(0)
// const timeoutRef = useRef(null)
// const steps = [
// {
// title: "Подключите свой аккаунт",
// description: "Планируйте, создавайте и публикуйте ваш контент для всех социальных сетей из одного места.",
// image: firstimage,
// icon: () => (
// <svg className="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
// <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5.121 17.804A13.937 13.937 0 0112 16c2.5 0 4.847.655 6.879 1.804M15 10a3 3 0 11-6 0 3 3 0 016 0zm6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
// </svg>
// )
// },
// {
// title: "Планируйте свой контент",
// description: "Используйте наш интуитивно понятный календарь, чтобы планировать публикации и визуализировать свою контент-стратегию.",
// image: secondimage,
// icon: () => (
// <svg className="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
// <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" />
// </svg>
// )
// },
// {
// title: "Анализируйте и оптимизируйте",
// description: "Отслеживайте свою производительность с помощью аналитики в реальном времени и получайте предложения по улучшению на основе ИИ.",
// image: thirdimage,
// icon: () => (
// <svg className="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
// <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" />
// </svg>
// )
// },
// {
// title: "Вовлекайтесь и развивайтесь",
// description: "Взаимодействуйте со своей аудиторией и наблюдайте, как процветает ваше присутствие в социальных сетях.",
// image: fourthimage,
// icon: () => (
// <svg className="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
// <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" />
// </svg>
// )
// }
// ]
// useEffect(() => {
// timeoutRef.current = window.setTimeout(() => {
// setActiveStep((prevStep) => (prevStep + 1) % steps.length)
// }, 5000)
// return () => {
// if (timeoutRef.current !== null) {
// window.clearTimeout(timeoutRef.current)
// }
// }
// }, [activeStep])
// return (
// <div className="bg-white py-16 overflow-hidden">
// <div className="max-w-6xl mx-auto px-4">
// <div className="mb-12">
// <h2 className="text-3xl font-extrabold text-green-600 mb-4">
// Работайте с легкостью
// </h2>
// <p className="text-lg text-gray-600">
// Напрямую взаимодействуйте с площадками через удобный интерфейс
// </p>
// </div>
// <div className="grid grid-cols-1 md:grid-cols-2 gap-8 items-center">
// <div className="space-y-4">
// {steps.map((step, index) => (
// <motion.div
// key={index}
// initial={{ opacity: 0, y: 20 }}
// animate={{ opacity: 1, y: 0 }}
// transition={{ duration: 0.5, delay: index * 0.1 }}
// className={`transform transition-all duration-300 ${
// activeStep === index
// ? 'scale-102 bg-white shadow-md border-green-500'
// : 'hover:bg-white hover:shadow-sm'
// } rounded-xl border p-6 cursor-pointer`}
// onClick={() => setActiveStep(index)}
// >
// <div className="flex items-start space-x-4">
// <div className={`flex-shrink-0 p-3 rounded-lg ${
// activeStep === index ? 'bg-green-100 text-green-600' : 'bg-gray-100 text-gray-500'
// }`}>
// {step.icon()}
// </div>
// <div className="flex-1">
// <h3 className={`text-lg font-semibold mb-2 ${
// activeStep === index ? 'text-green-600' : 'text-gray-900'
// }`}>
// {step.title}
// </h3>
// <p className="text-gray-600 text-sm leading-relaxed">
// {step.description}
// </p>
// </div>
// </div>
// </motion.div>
// ))}
// </div>
// <div className="relative h-[400px] flex items-center justify-center overflow-hidden">
// <AnimatePresence initial={false}>
// <motion.img
// key={activeStep}
// src={steps[activeStep].image}
// alt={steps[activeStep].title}
// initial={{ opacity: 0, x: 300 }}
// animate={{ opacity: 1, x: 0 }}
// exit={{ opacity: 0, x: -300 }}
// transition={{ type: "spring", stiffness: 300, damping: 30 }}
// className="w-full h-full object-contain rounded-lg absolute"
// />
// </AnimatePresence>
// </div>
// </div>
// </div>
// </div>
// )
// }
import firstimage from '../images/foursteps/login.png'
import secondimage from '../images/foursteps/platform.png'
import thirdimage from '../images/foursteps/analytics_steps.png'
import fourthimage from '../images/foursteps/forfun.png'
import React, { useRef, useEffect, useState } from 'react'
import { motion, AnimatePresence } from 'framer-motion'
import translations from '../translations.json'
import { useLanguage } from '../contexts/LanguageContext'
export default function FourSteps() {
const [activeStep, setActiveStep] = useState(0);
const timeoutRef = useRef(null);
const { language } = useLanguage();
const t = translations.fourSteps[language];
const images = [firstimage, secondimage, thirdimage, fourthimage];
const icons = [
() => (
<svg className="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5.121 17.804A13.937 13.937 0 0112 16c2.5 0 4.847.655 6.879 1.804M15 10a3 3 0 11-6 0 3 3 0 016 0zm6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
),
() => (
<svg className="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" />
</svg>
),
() => (
<svg className="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" />
</svg>
),
() => (
<svg className="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" />
</svg>
)
];
const steps = t.steps.map((step, index) => ({
...step,
image: images[index],
icon: icons[index]
}));
useEffect(() => {
timeoutRef.current = window.setTimeout(() => {
setActiveStep((prevStep) => (prevStep + 1) % steps.length);
}, 5000);
return () => {
if (timeoutRef.current !== null) {
window.clearTimeout(timeoutRef.current);
}
};
}, [activeStep, steps.length]);
return (
<div className="bg-white py-16 overflow-hidden">
<div className="max-w-6xl mx-auto px-4">
<div className="mb-12">
<h2 className="text-3xl font-extrabold text-green-600 mb-4">
{t.title}
</h2>
<p className="text-lg text-gray-600">
{t.subtitle}
</p>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 gap-8 items-center">
<div className="space-y-4">
{steps.map((step, index) => (
<motion.div
key={index}
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, delay: index * 0.1 }}
className={`transform transition-all duration-300 ${
activeStep === index
? 'scale-102 bg-white shadow-md border-green-500'
: 'hover:bg-white hover:shadow-sm'
} rounded-xl border p-6 cursor-pointer`}
onClick={() => setActiveStep(index)}
>
<div className="flex items-start space-x-4">
<div className={`flex-shrink-0 p-3 rounded-lg ${
activeStep === index ? 'bg-green-100 text-green-600' : 'bg-gray-100 text-gray-500'
}`}>
{step.icon()}
</div>
<div className="flex-1">
<h3 className={`text-lg font-semibold mb-2 ${
activeStep === index ? 'text-green-600' : 'text-gray-900'
}`}>
{step.title}
</h3>
<p className="text-gray-600 text-sm leading-relaxed">
{step.description}
</p>
</div>
</div>
</motion.div>
))}
</div>
<div className="relative h-[400px] flex items-center justify-center overflow-hidden">
<AnimatePresence initial={false}>
<motion.img
key={activeStep}
src={steps[activeStep].image}
alt={steps[activeStep].imageAlt}
initial={{ opacity: 0, x: 300 }}
animate={{ opacity: 1, x: 0 }}
exit={{ opacity: 0, x: -300 }}
transition={{ type: "spring", stiffness: 300, damping: 30 }}
className="w-full h-full object-contain rounded-lg absolute"
/>
</AnimatePresence>
</div>
</div>
</div>
</div>
);
}

215
src/components/Header.js Normal file
View File

@ -0,0 +1,215 @@
// import { useState, useEffect } from 'react'
// import { Link } from 'react-router-dom'
// import logo from '../assets/images/logo200x50.png'
// import { ScrollRestoration } from 'react-router-dom';
// export default function Header() {
// const [isScrolled, setIsScrolled] = useState(false)
// useEffect(() => {
// const handleScroll = () => {
// const isFullScreenPassed = window.scrollY > window.innerHeight
// setIsScrolled(isFullScreenPassed)
// }
// window.addEventListener('scroll', handleScroll)
// return () => window.removeEventListener('scroll', handleScroll)
// }, [])
// return (
// <header
// className={`
// fixed top-0 left-0 w-full z-50
// transition-all duration-300
// ${isScrolled
// ? 'bg-white bg-opacity-90 backdrop-blur-md'
// : 'bg-transparent backdrop-blur-md bg-opacity-30'
// }
// `}
// >
// <div className="container mx-auto px-4">
// <div className="flex items-center justify-between h-16">
// <div className="flex items-center">
// <a href="#">
// <img
// src={logo}
// alt="Logo"
// className="h-12 w-auto"
// />
// </a>
// </div>
// <nav className="hidden md:flex space-x-8">
// <Link
// to="/pricing"
// className={`text-lg font-light transition-colors duration-200 ${
// isScrolled ? 'text-gray-800 hover:text-gray-600' : 'text-white hover:text-gray-200'
// }`}
// >
// Тарифный план
// </Link>
// <a
// href="#contacts-section"
// className={`text-lg font-light transition-colors duration-200 ${
// isScrolled ? 'text-gray-800 hover:text-gray-600' : 'text-white hover:text-gray-200'
// }`}
// >
// Обратная связь
// </a>
// </nav>
// </div>
// </div>
// </header>
// )
// }
// import { useState, useEffect } from 'react';
// import { Link } from 'react-router-dom';
// import logo from '../assets/images/logo200x50.png';
// import translations from '../translations.json';
// import { useLanguage } from '../contexts/LanguageContext';
// import { CustomLink } from './CustomLink';
// export default function Header() {
// const [isScrolled, setIsScrolled] = useState(false);
// const { language, toggleLanguage } = useLanguage();
// const t = translations.header[language];
// useEffect(() => {
// const handleScroll = () => {
// const isFullScreenPassed = window.scrollY > window.innerHeight;
// setIsScrolled(isFullScreenPassed);
// };
// window.addEventListener('scroll', handleScroll);
// return () => window.removeEventListener('scroll', handleScroll);
// }, []);
// return (
// <header
// className={`
// fixed top-0 left-0 w-full z-50
// transition-all duration-300
// ${isScrolled
// ? 'bg-white bg-opacity-90 backdrop-blur-md'
// : 'bg-transparent backdrop-blur-md bg-opacity-30'
// }
// `}
// >
// <div className="container mx-auto px-4">
// <div className="flex items-center justify-between h-16">
// <div className="flex items-center">
// <CustomLink to="/">
// <img
// src={logo}
// alt="Logo"
// className="h-12 w-auto"
// />
// </CustomLink>
// </div>
// <nav className="hidden md:flex items-center space-x-8">
// <CustomLink
// to="/pricing"
// className={`text-lg font-light transition-colors duration-200 ${
// isScrolled ? 'text-gray-800 hover:text-gray-600' : 'text-white hover:text-gray-200'
// }`}
// >
// {t.pricing}
// </CustomLink>
// <a
// href="#contacts-section"
// className={`text-lg font-light transition-colors duration-200 ${
// isScrolled ? 'text-gray-800 hover:text-gray-600' : 'text-white hover:text-gray-200'
// }`}
// >
// {t.feedback}
// </a>
// <button
// onClick={toggleLanguage}
// className={`text-lg font-semibold transition-colors duration-200 px-3 py-1 rounded-md border-2 ${
// isScrolled
// ? 'text-gray-800 hover:text-gray-600 border-gray-800'
// : 'text-white hover:text-gray-200 border-white'
// }`}
// >
// {t.langButton}
// </button>
// </nav>
// </div>
// </div>
// </header>
// );
// }
import { useState, useEffect } from 'react';
import logo from '../assets/images/logo200x50.png';
import translations from '../translations.json';
import { useLanguage } from '../contexts/LanguageContext';
import { CustomLink } from './CustomLink';
import LanguageSwitcher from './LanguageSwitcher';
import { ScrollLink } from './ScrollLink';
export default function Header() {
const [isScrolled, setIsScrolled] = useState(false);
const { language } = useLanguage();
const t = translations.header[language];
useEffect(() => {
const handleScroll = () => {
const isFullScreenPassed = window.scrollY > window.innerHeight;
setIsScrolled(isFullScreenPassed);
};
window.addEventListener('scroll', handleScroll);
return () => window.removeEventListener('scroll', handleScroll);
}, []);
return (
<header
className={`
fixed top-0 left-0 w-full z-50
transition-all duration-300
${isScrolled
? 'bg-white bg-opacity-90 backdrop-blur-md'
: 'bg-transparent backdrop-blur-md bg-opacity-30'
}
`}
>
<div className="container mx-auto px-4">
<div className="flex items-center justify-between h-16">
<div className="flex items-center">
<CustomLink to="/">
<img
src={logo}
alt="Logo"
className="h-12 w-auto"
/>
</CustomLink>
</div>
<nav className="hidden md:flex items-center space-x-8">
<CustomLink
to="/pricing"
className={`text-lg font-light transition-colors duration-200 ${
isScrolled ? 'text-gray-800 hover:text-gray-600' : 'text-white hover:text-gray-200'
}`}
>
{t.pricing}
</CustomLink>
<ScrollLink
to="#contacts-section"
className={`text-lg font-light transition-colors duration-200 ${
isScrolled ? 'text-gray-800 hover:text-gray-600' : 'text-white hover:text-gray-200'
}`}
>
{t.feedback}
</ScrollLink>
<LanguageSwitcher isScrolled={isScrolled} />
</nav>
</div>
</div>
</header>
);
}

View File

@ -0,0 +1,76 @@
import React, { useState, useRef, useEffect } from 'react';
import { useLanguage } from '../contexts/LanguageContext';
import { ChevronDown } from 'lucide-react';
const LanguageSwitcher = ({ isScrolled }) => {
const [isOpen, setIsOpen] = useState(false);
const { language, setLanguage } = useLanguage();
const dropdownRef = useRef(null);
const languages = {
ru: {
name: 'Русский',
flag: '🇷🇺'
},
en: {
name: 'English',
flag: '🇬🇧'
},
ar: {
name: 'العربية',
flag: '🇸🇦'
}
};
useEffect(() => {
const handleClickOutside = (event) => {
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
setIsOpen(false);
}
};
document.addEventListener('mousedown', handleClickOutside);
return () => document.removeEventListener('mousedown', handleClickOutside);
}, []);
return (
<div className="relative" ref={dropdownRef}>
<button
onClick={() => setIsOpen(!isOpen)}
className={`flex items-center space-x-2 px-3 py-1 rounded-md border-2 ${
isScrolled
? 'text-gray-800 hover:text-gray-600 border-gray-800'
: 'text-white hover:text-gray-200 border-white'
}`}
>
<span className="text-lg">{languages[language].flag}</span>
<span className="text-lg font-semibold">{languages[language].name}</span>
<ChevronDown className={`w-4 h-4 transition-transform duration-200 ${isOpen ? 'rotate-180' : ''}`} />
</button>
{isOpen && (
<div className="absolute right-0 mt-2 w-48 rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5">
<div className="py-1">
{Object.entries(languages).map(([code, { name, flag }]) => (
<button
key={code}
onClick={() => {
setLanguage(code);
setIsOpen(false);
}}
className={`flex items-center w-full px-4 py-2 text-sm ${
language === code ? 'bg-gray-100 text-gray-900' : 'text-gray-700'
} hover:bg-gray-50`}
>
<span className="mr-2 text-lg">{flag}</span>
<span>{name}</span>
</button>
))}
</div>
</div>
)}
</div>
);
};
export default LanguageSwitcher;

View File

@ -0,0 +1,168 @@
// import React from 'react';
// import { Typography, Button } from 'antd';
// import { ArrowRightOutlined } from '@ant-design/icons';
// import VideoBackground from './VideoBackground';
// import styled from 'styled-components';
// const { Title, Paragraph } = Typography;
// const CustomFont = styled.div`
// @font-face {
// font-family: 'CustomFont';
// src: url('../assets/fonts/ProtestStrike-Regular.ttf') format('truetype');
// }
// font-family: 'CustomFont', sans-serif;
// `;
// const MainSection = () => {
// return (
// <div style={{
// width: '100%',
// height: '100vh',
// overflow: 'hidden'
// }}>
// <div style={{
// position: 'absolute',
// top: 0,
// left: 0,
// width: '100%',
// height: '100%',
// zIndex: 1
// }}>
// <VideoBackground />
// </div>
// <div style={{
// position: 'relative',
// zIndex: 2,
// display: 'flex',
// flexDirection: 'column',
// justifyContent: 'center',
// alignItems: 'center',
// textAlign: 'center',
// height: '100%',
// padding: '20px',
// backgroundColor: 'rgba(255, 255, 255, 0)'
// }}>
// <CustomFont>
// <Title style={{ color: '#ffffff', fontSize: '84px', marginBottom: '5px' }}>
// <span style={{ fontWeight: '900' }}>
// <p style={{marginBottom: '0px'}}>qWickPost</p>
// </span>
// </Title>
// </CustomFont>
// <Title level={2} style={{ color: '#ffffff', fontSize:'45px', marginBottom:'5px' }}>
// <span style={{ fontWeight: 'bold' }}>Упростите ваш социальный маркетинг</span>
// </Title>
// <Paragraph style={{ fontSize: 20, color: '#ffffff', maxWidth: '800px', margin: '20px auto' }}>
// Планируйте, создавайте и публикуйте ваш контент для всех социальных сетей из одного места.
// Экономьте время и развивайте свой бренд в интернете.
// </Paragraph>
// <Button type="primary" size="large" style={{ background: 'rgba(255, 255, 255, 0)', borderWidth: 3, borderColor: '#ffffff', fontSize:'18px', fontWeight:900, marginTop: '20px' }}>
// <p style = {{}}>Попробуйте бесплатно! </p>
// <ArrowRightOutlined />
// </Button>
// </div>
// </div>
// );
// };
// export default MainSection;
import React from 'react';
import { Typography, Button } from 'antd';
import { ArrowRightOutlined } from '@ant-design/icons';
import VideoBackground from './VideoBackground';
import styled from 'styled-components';
import translations from '../translations.json';
import { useLanguage } from '../contexts/LanguageContext';
const { Title, Paragraph } = Typography;
const CustomFont = styled.div`
@font-face {
font-family: 'CustomFont';
src: url('../assets/fonts/ProtestStrike-Regular.ttf') format('truetype');
}
font-family: 'CustomFont', sans-serif;
`;
const MainSection = () => {
const { language } = useLanguage();
const t = translations.mainSection[language];
return (
<div style={{
width: '100%',
height: '100vh',
overflow: 'hidden'
}}>
<div style={{
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '100%',
zIndex: 1
}}>
<VideoBackground />
</div>
<div style={{
position: 'relative',
zIndex: 2,
display: 'flex',
flexDirection: 'column',
justifyContent: 'center',
alignItems: 'center',
textAlign: 'center',
height: '100%',
padding: '20px',
backgroundColor: 'rgba(255, 255, 255, 0)'
}}>
<CustomFont>
<Title style={{ color: '#ffffff', fontSize: '84px', marginBottom: '5px' }}>
<span style={{ fontWeight: '900' }}>
<p style={{marginBottom: '0px'}}>{t.title}</p>
</span>
</Title>
</CustomFont>
<Title level={2} style={{ color: '#ffffff', fontSize:'30px', marginBottom:'-5px' }}>
<span style={{ fontWeight: 'bold' }}>{t.subtitle}</span>
</Title>
<Title level={3} style={{ color: '#ffffff', fontSize:'45px', marginBottom:'0px' }}>
<span style={{ fontWeight: 'bold' }}>{t.description}</span>
</Title>
<Paragraph style={{ fontSize: 20, color: '#ffffff', maxWidth: '800px', margin: '20px auto' }}>
{t.descriptionn}
</Paragraph>
<Button
href="http://app.qwickpost.com/"
type="primary"
size="large"
style={{
background: 'rgba(255, 255, 255, 0)',
borderWidth: 3,
borderColor: '#ffffff',
fontSize:'18px',
fontWeight: 900,
marginTop: '20px'
}}
>
<p>{t.tryButton}</p>
<ArrowRightOutlined />
</Button>
</div>
</div>
);
};
export default MainSection;

View File

@ -0,0 +1,207 @@
// import { Calendar, BarChart2, Users, Share2, Lightbulb, Shield } from 'lucide-react'
// import calendar from '../images/calendar.png'
// import analytics from '../images/analytics.png'
// import auditory from '../images/auditory.png'
// import cross_platform from '../images/cross_platform.png'
// import ai_recomendation from '../images/ai_recomendation.png'
// import sequrity from '../images/sequrity.png'
// export default function Component() {
// const features = [
// {
// icon: Calendar,
// title: "Легкое планирование",
// description: "Планируйте и составляйте расписание вашего контента для нескольких платформ с помощью нашего интуитивного календарного интерфейса.",
// image: {
// src: calendar,
// alt: "Календарь с запланированными постами"
// }
// },
// {
// icon: BarChart2,
// title: "Мощная аналитика",
// description: "Получайте ценные идеи с помощью метрик производительности в реальном времени и действенных рекомендаций.",
// image: {
// src: analytics,
// alt: "График аналитики социальных сетей"
// }
// },
// {
// icon: Users,
// title: "Вовлечение аудитории",
// description: "Взаимодействуйте с вашими подписчиками и выстраивайте значимые отношения с помощью централизованной панели управления.",
// image: {
// src: auditory,
// alt: "Панель взаимодействия с аудиторией"
// }
// },
// {
// icon: Share2,
// title: "Кросс-платформенные публикации",
// description: "Легко публикуйте контент на нескольких платформах социальных сетей одним кликом.",
// image: {
// src: cross_platform,
// alt: "Интерфейс публикации в социальные сети"
// }
// },
// {
// icon: Lightbulb,
// title: "ИИ-рекомендации",
// description: "Получайте интеллектуальные идеи для контента и советы по оптимизации для улучшения вашей работы в социальных сетях.",
// image: {
// src: ai_recomendation,
// alt: "ИИ генерация рекомендаций"
// }
// },
// {
// icon: Shield,
// title: "Безопасность и надежность",
// description: "Будьте спокойны, зная, что ваши данные защищены мерами безопасности корпоративного уровня.",
// image: {
// src: sequrity,
// alt: "Система безопасности и защиты данных"
// }
// }
// ]
// return (
// <div className="my-6 bg-white py-8 px-4 sm:px-6 lg:px-8">
// <div className="max-w-5xl mx-auto">
// <h2 className="text-4xl font-extrabold text-green-600 text-center mb-6">
// Усильте ваше присутствие в социальных сетях
// </h2>
// <p className="text-xl text-gray-700 text-center mb-14 font-bold">
// Используйте встроенный функционал, для достижения ваших целей
// </p>
// <div className="grid grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-3">
// {features.map((feature, index) => (
// <div key={index} className="bg-white rounded-lg p-6 shadow-lg shadow-green-100 transition-all duration-300 hover:shadow-xl hover:shadow-green-200">
// <div className="flex items-center mb-4">
// <feature.icon className="h-8 w-8 text-green-600 mr-3" />
// <h3 className="text-xl font-semibold text-gray-900">{feature.title}</h3>
// </div>
// <p className="text-gray-600 mb-4">{feature.description}</p>
// <div className="bg-white rounded-lg overflow-hidden">
// <div className="aspect-w-4 aspect-h-3">
// <img
// src={feature.image.src}
// alt={feature.image.alt}
// className="w-full h-full object-cover"
// />
// </div>
// </div>
// </div>
// ))}
// </div>
// </div>
// </div>
// )
// }
import { Calendar, BarChart2, Users, Share2, Lightbulb, Shield } from 'lucide-react'
import calendar from '../images/calendar.png'
import analytics from '../images/analytics.png'
import auditory from '../images/socialike.png'
import cross_platform from '../images/cross_platform.png'
import ai_recomendation from '../images/ai_recomendation.png'
import sequrity from '../images/security.png'
import translations from '../translations.json'
import { useLanguage } from '../contexts/LanguageContext'
export default function Component() {
const { language } = useLanguage();
const t = translations.makeEasier[language];
const features = [
{
icon: Calendar,
title: t.features.planning.title,
description: t.features.planning.description,
image: {
src: calendar,
alt: t.features.planning.imageAlt
}
},
{
icon: BarChart2,
title: t.features.analytics.title,
description: t.features.analytics.description,
image: {
src: analytics,
alt: t.features.analytics.imageAlt
}
},
{
icon: Users,
title: t.features.audience.title,
description: t.features.audience.description,
image: {
src: auditory,
alt: t.features.audience.imageAlt
}
},
{
icon: Share2,
title: t.features.crossPlatform.title,
description: t.features.crossPlatform.description,
image: {
src: cross_platform,
alt: t.features.crossPlatform.imageAlt
}
},
{
icon: Lightbulb,
title: t.features.aiRecommendations.title,
description: t.features.aiRecommendations.description,
image: {
src: ai_recomendation,
alt: t.features.aiRecommendations.imageAlt
}
},
{
icon: Shield,
title: t.features.security.title,
description: t.features.security.description,
image: {
src: sequrity,
alt: t.features.security.imageAlt
}
}
]
return (
<div id="usability-section" className="my-6 bg-white py-8 px-4 sm:px-6 lg:px-8">
<div className="max-w-5xl mx-auto">
<h2 className="text-4xl font-extrabold text-green-600 text-center mb-6">
{t.title}
</h2>
<p className="text-xl text-gray-700 text-center mb-14 font-bold">
{t.subtitle}
</p>
<div className="grid grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-3">
{features.map((feature, index) => (
<div key={index} className="bg-white rounded-lg p-6 shadow-lg shadow-green-100 transition-all duration-300 hover:shadow-xl hover:shadow-green-200">
<div className="flex items-center mb-4">
<feature.icon className="h-8 w-8 text-green-600 mr-3" />
<h3 className="text-xl font-semibold text-gray-900">{feature.title}</h3>
</div>
<p className="text-gray-600 mb-4">{feature.description}</p>
<div className="bg-white rounded-lg overflow-hidden">
<div className="aspect-w-4 aspect-h-3">
<img
src={feature.image.src}
alt={feature.image.alt}
className="w-full h-full object-cover"
/>
</div>
</div>
</div>
))}
</div>
</div>
</div>
)
}

179
src/components/PriceList.js Normal file
View File

@ -0,0 +1,179 @@
// import React from 'react';
// import { Check } from "lucide-react";
// import { Link } from 'react-router-dom';
// const PricingPlans = () => {
// const plans = [
// {
// title: "Базовый",
// description: "Для личных целей и маленьких проектов",
// price: "990 ₽",
// features: [
// "Публикация постов и историй",
// "Предпросмотр публикаций",
// "Базовая аналитика",
// "Работа в команде",
// ],
// popular: false,
// },
// {
// title: "Премиальный",
// description: "Идеально для вас",
// price: "1090 ₽",
// features: [
// "Все функции Стандартного тарифа, а также:",
// "Типограф",
// "Мониторинг комментариев",
// "Аналитика охватов, постов, аудитории",
// ],
// popular: true,
// },
// {
// title: "Продвинутый",
// description: "Для большой работы",
// price: "1190 ₽",
// features: [
// "Все функции Премиального тарифа, а также:",
// "AI помощник",
// "Мониторинг сообщений",
// "Репостер",
// "Вотермарки",
// ],
// popular: false,
// },
// ];
// return (
// <section className="w-full py-12 bg-white">
// <div className="container px-4 md:px-6 mx-auto">
// <div className="flex flex-col items-center justify-center space-y-4 text-center">
// <h2 className="text-3xl font-bold tracking-tighter sm:text-4xl md:text-5xl text-green-600 mb-4">Тарифный план</h2>
// <Link
// to="/pricing"
// className='text-lg font-medium transition-colors duration-200'
// >
// Узнать больше про тарифный план
// </Link>
// </div>
// <div className="grid lg:grid-cols-3 gap-8 mt-8 md:mt-12 max-w-6xl mx-auto">
// {plans.map((plan) => (
// <div
// key={plan.title}
// className={`relative flex flex-col justify-between p-6 rounded-lg shadow-md ${
// plan.popular ? 'border-2 border-green-500 shadow-lg scale-105' : 'border border-gray-200'
// } transition-all duration-200 hover:shadow-lg bg-white`}
// >
// {plan.popular && (
// <div className="absolute top-0 right-0 bg-green-500 text-white text-xs font-bold px-3 py-1 rounded-bl-lg rounded-tr-lg">
// Популярный
// </div>
// )}
// <div>
// <h3 className="text-2xl font-bold mb-2">{plan.title}</h3>
// <p className="text-sm text-gray-500 mb-4">{plan.description}</p>
// <div className="flex items-baseline mb-6">
// <span className="text-4xl font-bold">{plan.price}</span>
// <span className="text-gray-500 ml-2">/в месяц</span>
// </div>
// <ul className="space-y-3 mb-6">
// {plan.features.map((feature) => (
// <li key={feature} className="flex items-start">
// <Check className="h-5 w-5 text-green-500 shrink-0 mr-2" />
// <span className="text-gray-700 text-sm">{feature}</span>
// </li>
// ))}
// </ul>
// </div>
// <button
// className={`w-full py-2 px-4 rounded-md text-lg font-semibold transition-colors ${
// plan.popular
// ? 'bg-green-500 text-white hover:bg-green-600'
// : 'bg-white text-green-500 border border-green-500 hover:bg-green-50'
// }`}
// >
// Приобрести
// </button>
// </div>
// ))}
// </div>
// </div>
// </section>
// );
// };
// export default PricingPlans;
import React from 'react';
import { Check } from "lucide-react";
import { Link } from 'react-router-dom';
import translations from '../translations.json';
import { useLanguage } from '../contexts/LanguageContext';
import { CustomLink } from './CustomLink';
const PricingPlans = () => {
const { language } = useLanguage();
const t = translations.priceList[language];
return (
<section className="w-full py-12 bg-white">
<div className="container px-4 md:px-6 mx-auto">
<div className="flex flex-col items-center justify-center space-y-4 text-center">
<h2 className="text-3xl font-bold tracking-tighter sm:text-4xl md:text-5xl text-green-600 mb-4">
{t.title}
</h2>
<CustomLink
to="/pricing"
className="text-lg font-medium transition-colors duration-200"
>
{t.learnMore}
</CustomLink>
</div>
<div className="grid lg:grid-cols-3 gap-8 mt-8 md:mt-12 max-w-6xl mx-auto">
{t.plans.map((plan) => (
<div
key={plan.title}
className={`relative flex flex-col justify-between p-6 rounded-lg shadow-md ${
plan.popular ? 'border-2 border-green-500 shadow-lg scale-105' : 'border border-gray-200'
} transition-all duration-200 hover:shadow-lg bg-white`}
>
{plan.popular && (
<div className="absolute top-0 right-0 bg-green-500 text-white text-xs font-bold px-3 py-1 rounded-bl-lg rounded-tr-lg">
{plan.popularLabel}
</div>
)}
<div>
<h3 className="text-2xl font-bold mb-2">{plan.title}</h3>
<p className="text-sm text-gray-500 mb-4">{plan.description}</p>
<div className="flex items-baseline mb-6">
<span className="text-4xl font-bold">{plan.price}</span>
<span className="text-gray-500 ml-2">{plan.period}</span>
</div>
<ul className="space-y-3 mb-6">
{plan.features.map((feature) => (
<li key={feature} className="flex items-start">
<Check className="h-5 w-5 text-green-500 shrink-0 mr-2" />
<span className="text-gray-700 text-sm">{feature}</span>
</li>
))}
</ul>
</div>
<button
className={`w-full py-2 px-4 rounded-md text-lg font-semibold transition-colors ${
plan.popular
? 'bg-green-500 text-white hover:bg-green-600'
: 'bg-white text-green-500 border border-green-500 hover:bg-green-50'
}`}
>
{plan.buttonText}
</button>
</div>
))}
</div>
</div>
</section>
);
};
export default PricingPlans;

View File

@ -0,0 +1,430 @@
import React, { useState } from 'react';
import translations from '../translations.json';
import { useLanguage } from '../contexts/LanguageContext';
const PricingFeatures = () => {
const [isAnnual, setIsAnnual] = useState(true);
const { language } = useLanguage();
const t = translations.pricingFeatures[language];
const features = {
publications: {
title: t.categories.publications.title,
items: [
{
name: t.categories.publications.features.postsAndStories.name,
description: t.categories.publications.features.postsAndStories.description,
standard: true,
premium: true,
advanced: true
},
{
name: t.categories.publications.features.postVersions.name,
description: t.categories.publications.features.postVersions.description,
standard: true,
premium: true,
advanced: true
},
{
name: t.categories.publications.features.firstComment.name,
description: t.categories.publications.features.firstComment.description,
standard: true,
premium: true,
advanced: true
},
{
name: t.categories.publications.features.categories.name,
description: t.categories.publications.features.categories.description,
standard: true,
premium: true,
advanced: true
},
{
name: t.categories.publications.features.contentPlan.name,
description: t.categories.publications.features.contentPlan.description,
standard: true,
premium: true,
advanced: true
},
{
name: t.categories.publications.features.captions.name,
description: t.categories.publications.features.captions.description,
standard: true,
premium: true,
advanced: true
},
{
name: t.categories.publications.features.sharePublication.name,
description: t.categories.publications.features.sharePublication.description,
standard: true,
premium: true,
advanced: true
},
{
name: t.categories.publications.features.preview.name,
description: t.categories.publications.features.preview.description,
standard: true,
premium: true,
advanced: true
},
{
name: t.categories.publications.features.templates.name,
description: t.categories.publications.features.templates.description,
standard: true,
premium: true,
advanced: true
},
{
name: t.categories.publications.features.typography.name,
description: t.categories.publications.features.typography.description,
standard: false,
premium: true,
advanced: true
},
{
name: t.categories.publications.features.autoHashtags.name,
description: t.categories.publications.features.autoHashtags.description,
standard: false,
premium: true,
advanced: true
},
{
name: t.categories.publications.features.autoGeo.name,
description: t.categories.publications.features.autoGeo.description,
standard: false,
premium: true,
advanced: true
},
{
name: t.categories.publications.features.utmTags.name,
description: t.categories.publications.features.utmTags.description,
standard: false,
premium: true,
advanced: true
},
{
name: t.categories.publications.features.shortLinks.name,
description: t.categories.publications.features.shortLinks.description,
standard: false,
premium: true,
advanced: true
},
{
name: t.categories.publications.features.spellcheck.name,
description: t.categories.publications.features.spellcheck.description,
standard: false,
premium: false,
advanced: true
},
{
name: t.categories.publications.features.coverChoice.name,
description: t.categories.publications.features.coverChoice.description,
standard: false,
premium: true,
advanced: true
},
{
name: t.categories.publications.features.watermarks.name,
description: t.categories.publications.features.watermarks.description,
standard: false,
premium: false,
advanced: true
},
{
name: t.categories.publications.features.reposts.name,
description: t.categories.publications.features.reposts.description,
standard: false,
premium: false,
advanced: true
},
{
name: t.categories.publications.features.repeatingPosts.name,
description: t.categories.publications.features.repeatingPosts.description,
standard: false,
premium: false,
advanced: true
}
]
},
analytics: {
title: t.categories.analytics.title,
items: [
{
name: t.categories.analytics.features.basicAnalytics.name,
description: t.categories.analytics.features.basicAnalytics.description,
standard: true,
premium: true,
advanced: true
},
{
name: t.categories.analytics.features.detailedEngagement.name,
description: t.categories.analytics.features.detailedEngagement.description,
standard: false,
premium: true,
advanced: true
},
{
name: t.categories.analytics.features.reachAnalytics.name,
description: t.categories.analytics.features.reachAnalytics.description,
standard: false,
premium: true,
advanced: true
},
{
name: t.categories.analytics.features.audienceAnalytics.name,
description: t.categories.analytics.features.audienceAnalytics.description,
standard: false,
premium: true,
advanced: true
},
{
name: t.categories.analytics.features.postsAnalytics.name,
description: t.categories.analytics.features.postsAnalytics.description,
standard: false,
premium: true,
advanced: true
}
]
},
team: {
title: t.categories.team.title,
items: [
{
name: t.categories.team.features.addUsers.name,
description: t.categories.team.features.addUsers.description,
standard: true,
premium: true,
advanced: true
},
{
name: t.categories.team.features.accessControl.name,
description: t.categories.team.features.accessControl.description,
standard: false,
premium: true,
advanced: true
},
{
name: t.categories.team.features.postApproval.name,
description: t.categories.team.features.postApproval.description,
standard: false,
premium: true,
advanced: true
},
{
name: t.categories.team.features.discussPosts.name,
description: t.categories.team.features.discussPosts.description,
standard: false,
premium: true,
advanced: true
}
]
},
modules: {
title: t.categories.modules.title,
items: [
{
name: t.categories.modules.features.yandexDisk.name,
description: t.categories.modules.features.yandexDisk.description,
standard: true,
premium: true,
advanced: true
},
{
name: t.categories.modules.features.templates.name,
description: t.categories.modules.features.templates.description,
standard: false,
premium: false,
advanced: true
},
{
name: t.categories.modules.features.leads.name,
description: t.categories.modules.features.leads.description,
standard: false,
premium: true,
advanced: true
},
{
name: t.categories.modules.features.tasks.name,
description: t.categories.modules.features.tasks.description,
standard: false,
premium: false,
advanced: true
},
{
name: t.categories.modules.features.aiAssistant.name,
description: t.categories.modules.features.aiAssistant.description,
standard: false,
premium: false,
advanced: true
},
{
name: t.categories.modules.features.rssPublishing.name,
description: t.categories.modules.features.rssPublishing.description,
standard: false,
premium: false,
advanced: true
}
]
},
monitoring: {
title: t.categories.monitoring.title,
items: [
{
name: t.categories.monitoring.features.monitoring.name,
description: t.categories.monitoring.features.monitoring.description,
standard: true,
premium: true,
advanced: true
},
{
name: t.categories.monitoring.features.quickReplies.name,
description: t.categories.monitoring.features.quickReplies.description,
standard: false,
premium: true,
advanced: true
},
{
name: t.categories.monitoring.features.notifications.name,
description: t.categories.monitoring.features.notifications.description,
standard: false,
premium: false,
advanced: true
},
{
name: t.categories.monitoring.features.telegramReplies.name,
description: t.categories.monitoring.features.telegramReplies.description,
standard: false,
premium: false,
advanced: true
}
]
}
};
const plans = [
{
name: t.plans.standard.name,
description: t.plans.standard.description,
monthlyPrice: t.plans.standard.monthlyPrice,
annualPrice: t.plans.standard.annualPrice,
features: t.plans.standard.features
},
{
name: t.plans.premium.name,
description: t.plans.premium.description,
monthlyPrice: t.plans.premium.monthlyPrice,
annualPrice: t.plans.premium.annualPrice,
features: t.plans.premium.features,
popular: true
},
{
name: t.plans.advanced.name,
description: t.plans.advanced.description,
monthlyPrice: t.plans.advanced.monthlyPrice,
annualPrice: t.plans.advanced.annualPrice,
features: t.plans.advanced.features
}
];
return (
<div className="max-w-7xl mx-auto px-4 py-10">
<div className="text-center mb-10">
{/* <h2 className="text-3xl font-bold mb-4">{t.title}</h2> */}
{/* <p className="text-lg text-gray-600 mb-6">{t.subtitle}</p>
<div className="flex justify-center gap-2 mb-10">
<button
onClick={() => setIsAnnual(true)}
className={`px-5 py-2 rounded-lg border ${
isAnnual ? 'bg-green-500 text-white border-green-500' : 'bg-white text-gray-700 border-green-300'
}`}
>
{t.paymentButtons.annual}
</button>
<button
onClick={() => setIsAnnual(false)}
className={`px-5 py-2 rounded-lg border ${
!isAnnual ? 'bg-green-500 text-white border-green-500' : 'bg-white text-gray-700 border-green-300'
}`}
>
{t.paymentButtons.monthly}
</button>
</div> */}
</div>
{/* <div className="grid grid-cols-1 md:grid-cols-3 gap-6 mb-10">
{plans.map((plan) => (
<div
key={plan.name}
className={`relative p-6 rounded-lg border ${
plan.popular ? 'border-green-500' : 'border-green-200'
}`}
>
{plan.popular && (
<div className="absolute -top-3 left-1/2 transform -translate-x-1/2 bg-green-500 text-white px-3 py-1 rounded-full text-sm">
{t.popular}
</div>
)}
<h3 className="text-2xl font-bold mb-2">{plan.name}</h3>
<p className="text-gray-600 mb-4">{plan.description}</p>
<div className="text-4xl font-bold mb-6">
{isAnnual ? plan.annualPrice : plan.monthlyPrice} {t.cash}
<span className="text-base font-normal text-gray-600">/{t.month}</span>
</div>
<button className="w-full py-3 px-4 rounded-lg bg-green-500 text-white font-medium hover:bg-green-600">
{plan.popular ? t.startButton : t.tryButton}
</button>
</div>
))}
</div> */}
<div className="overflow-x-auto">
<table className="w-full border-collapse">
<tbody>
{Object.entries(features).map(([key, category]) => (
<React.Fragment key={key}>
<tr className="bg-gray-50">
<th className="w-1/2 px-6 py-4 text-left text-lg font-bold">
{category.title}
</th>
{plans.map((plan) => (
<th key={plan.name} className="px-6 py-4 text-gray-400 text-center font-medium">
{plan.name}
</th>
))}
</tr>
{category.items.map((item, itemIndex) => (
<tr key={itemIndex} className="border-b hover:bg-gray-50">
<td className="px-6 py-4">
<div className="flex items-center group">
<span className="font-medium">{item.name}</span>
<div className="relative ml-2">
<div className="cursor-help w-5 h-5 bg-gray-200 rounded-full flex items-center justify-center text-gray-600 text-xs">
?
</div>
<div className="hidden group-hover:block absolute z-10 left-full ml-2 w-64 bg-gray-800 text-white text-sm rounded-lg p-3">
{item.description}
</div>
</div>
</div>
</td>
{plans.map((plan) => (
<td key={`${itemIndex}-${plan.name}`} className="px-6 py-4 text-center">
{item[plan.features] ? (
<span className="text-green-500 text-xl"></span>
) : (
<span className="text-gray-400 text-xl"></span>
)}
</td>
))}
</tr>
))}
</React.Fragment>
))}
</tbody>
</table>
</div>
</div>
);
};
export default PricingFeatures;

View File

@ -0,0 +1,266 @@
// import React from 'react';
// import { Check } from "lucide-react";
// import { Link } from 'react-router-dom';
// import PricingFeatures from './PricingFeatures';
// import Footer from './Footer';
// const PricingPage = () => {
// const plans = [
// {
// title: "Базовый",
// description: "Для личных целей и маленьких проектов",
// price: "990 ₽",
// features: [
// "Публикация постов и историй",
// "Предпросмотр публикаций",
// "Базовая аналитика",
// "Работа в команде",
// ],
// popular: false,
// },
// {
// title: "Премиальный",
// description: "Идеально для вас",
// price: "1090 ₽",
// features: [
// "Все функции Стандартного тарифа, а также:",
// "Типограф",
// "Мониторинг комментариев",
// "Аналитика охватов, постов, аудитории",
// ],
// popular: true,
// },
// {
// title: "Продвинутый",
// description: "Для большой работы",
// price: "1190 ₽",
// features: [
// "Все функции Премиального тарифа, а также:",
// "AI помощник",
// "Мониторинг сообщений",
// "Репостер",
// "Вотермарки",
// ],
// popular: false,
// },
// ];
// return (
// <div className="min-h-screen bg-white">
// <div className="container px-4 md:px-6 mx-auto pt-16">
// {/* Navigation back to home */}
// <Link
// to="/"
// className="inline-flex items-center text-green-600 hover:text-green-700 mb-8"
// >
// <svg
// className="w-5 h-5 mr-2"
// fill="none"
// stroke="currentColor"
// viewBox="0 0 24 24"
// >
// <path
// strokeLinecap="round"
// strokeLinejoin="round"
// strokeWidth={2}
// d="M15 19l-7-7 7-7"
// />
// </svg>
// Вернуться на главную
// </Link>
// {/* Header Section */}
// <div className="flex flex-col items-center justify-center space-y-4 text-center mb-12">
// <h1 className="text-4xl font-bold tracking-tighter sm:text-5xl md:text-6xl text-green-600">
// Тарифный план
// </h1>
// <p className="max-w-[700px] text-gray-600 md:text-xl/relaxed">
// Выберите подходящий тариф для вашего бизнеса
// </p>
// </div>
// {/* Pricing Cards */}
// <div className="grid lg:grid-cols-3 gap-8 mt-8 md:mt-12 max-w-6xl mx-auto pb-16">
// {plans.map((plan) => (
// <div
// key={plan.title}
// className={`relative flex flex-col justify-between p-6 rounded-lg shadow-md ${
// plan.popular ? 'border-2 border-green-500 shadow-lg scale-105' : 'border border-gray-200'
// } transition-all duration-200 hover:shadow-lg bg-white`}
// >
// {plan.popular && (
// <div className="absolute top-0 right-0 bg-green-500 text-white text-xs font-bold px-3 py-1 rounded-bl-lg rounded-tr-lg">
// Популярный
// </div>
// )}
// <div>
// <h3 className="text-2xl font-bold mb-2">{plan.title}</h3>
// <p className="text-sm text-gray-500 mb-4">{plan.description}</p>
// <div className="flex items-baseline mb-6">
// <span className="text-4xl font-bold">{plan.price}</span>
// <span className="text-gray-500 ml-2">/в месяц</span>
// </div>
// <ul className="space-y-3 mb-6">
// {plan.features.map((feature) => (
// <li key={feature} className="flex items-start">
// <Check className="h-5 w-5 text-green-500 shrink-0 mr-2" />
// <span className="text-gray-700 text-sm">{feature}</span>
// </li>
// ))}
// </ul>
// </div>
// <button
// className={`w-full py-2 px-4 rounded-md text-lg font-semibold transition-colors ${
// plan.popular
// ? 'bg-green-500 text-white hover:bg-green-600'
// : 'bg-white text-green-500 border border-green-500 hover:bg-green-50'
// }`}
// >
// Приобрести
// </button>
// </div>
// ))}
// </div>
// <PricingFeatures />
// <div className="text-center pb-16">
// <h2 className="text-2xl font-bold text-gray-900 mb-4">
// Остались вопросы?
// </h2>
// <p className="text-gray-600 mb-6">
// Свяжитесь с нашей командой поддержки, и мы поможем выбрать оптимальный тариф для вас
// </p>
// <a
// href="#"
// className="text-green-600 hover:text-green-700 font-medium"
// >
// Связаться с поддержкой →
// </a>
// </div>
// </div>
// <Footer />
// </div>
// );
// };
// export default PricingPage;
import React from 'react';
import { Check } from "lucide-react";
import { Link } from 'react-router-dom';
import PricingFeatures from './PricingFeatures';
import Footer from './Footer';
import translations from '../translations.json';
import { useLanguage } from '../contexts/LanguageContext';
import DynamicPricing from './DynamicPricing';
// import Header from './Header.js'
const PricingPage = () => {
const { language } = useLanguage();
const t = translations.pricingPage[language];
return (
<div className="min-h-screen bg-white">
{/* <Header /> */}
<div className="container px-4 md:px-6 mx-auto pt-16">
{/* Navigation back to home */}
<Link
to="/"
className="inline-flex items-center text-green-600 hover:text-green-700 mb-8"
>
<svg
className="w-5 h-5 mr-2"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth={2}
d="M15 19l-7-7 7-7"
/>
</svg>
{t.navigation.backToHome}
</Link>
{/* <div className="flex flex-col items-center justify-center space-y-4 text-center mb-12">
<h1 className="text-4xl font-bold tracking-tighter sm:text-5xl md:text-6xl text-green-600">
{t.header.title}
</h1>
<p className="max-w-[700px] text-gray-600 md:text-xl/relaxed">
{t.header.subtitle}
</p>
</div>
<div className="grid lg:grid-cols-3 gap-8 mt-8 md:mt-12 max-w-6xl mx-auto pb-16">
{t.plans.map((plan) => (
<div
key={plan.title}
className={`relative flex flex-col justify-between p-6 rounded-lg shadow-md ${
plan.popular ? 'border-2 border-green-500 shadow-lg scale-105' : 'border border-gray-200'
} transition-all duration-200 hover:shadow-lg bg-white`}
>
{plan.popular && (
<div className="absolute top-0 right-0 bg-green-500 text-white text-xs font-bold px-3 py-1 rounded-bl-lg rounded-tr-lg">
{plan.popularLabel}
</div>
)}
<div>
<h3 className="text-2xl font-bold mb-2">{plan.title}</h3>
<p className="text-sm text-gray-500 mb-4">{plan.description}</p>
<div className="flex items-baseline mb-6">
<span className="text-4xl font-bold">{plan.price}</span>
<span className="text-gray-500 ml-2">{plan.period}</span>
</div>
<ul className="space-y-3 mb-6">
{plan.features.map((feature) => (
<li key={feature} className="flex items-start">
<Check className="h-5 w-5 text-green-500 shrink-0 mr-2" />
<span className="text-gray-700 text-sm">{feature}</span>
</li>
))}
</ul>
</div>
<button
className={`w-full py-2 px-4 rounded-md text-lg font-semibold transition-colors ${
plan.popular
? 'bg-green-500 text-white hover:bg-green-600'
: 'bg-white text-green-500 border border-green-500 hover:bg-green-50'
}`}
>
{plan.buttonText}
</button>
</div>
))}
</div> */}
<DynamicPricing />
<PricingFeatures />
<div className="text-center pb-16">
<h2 className="text-2xl font-bold text-gray-900 mb-4">
{t.supportSection.title}
</h2>
<p className="text-gray-600 mb-6">
{t.supportSection.description}
</p>
<a
href="/#contacts-section"
className="text-green-600 hover:text-green-700 font-medium"
>
{t.supportSection.contactButton}
</a>
</div>
</div>
<Footer />
</div>
);
};
export default PricingPage;

156
src/components/Questions.js Normal file
View File

@ -0,0 +1,156 @@
// import React, { useState } from 'react'
// import { motion, AnimatePresence } from 'framer-motion'
// import { ChevronDown } from 'lucide-react'
// const faqData = [
// {
// question: 'Что такое qWickPost?',
// answer: 'qWickPost - это платформа для упрощения вашего социального маркетинга. Она позволяет планировать, создавать и публиковать контент для всех социальных сетей из одного места.'
// },
// {
// question: 'Как qWickPost экономит мое время?',
// answer: 'qWickPost автоматизирует процесс публикации в различных социальных сетях, позволяя вам создавать и планировать контент заранее. Это значительно сокращает время, затрачиваемое на управление вашими социальными медиа.'
// },
// {
// question: 'С какими социальными сетями работает qWickPost?',
// answer: 'qWickPost поддерживает все основные социальные платформы, включая Facebook, Instagram, X (Twitter), LinkedIn и другие. Мы постоянно расширяем список поддерживаемых платформ.'
// },
// {
// question: 'Есть ли у qWickPost бесплатный пробный период?',
// answer: 'Да, для вас имеется бесплатный пробный период в 7 дней, чтобы вы могли оценить все возможности qWickPost без каких-либо обязательств.'
// }
// ]
// const FAQItem = ({ question, answer }) => {
// const [isOpen, setIsOpen] = useState(false)
// return (
// <motion.div
// initial={false}
// animate={{ backgroundColor: isOpen ? 'rgb(250 251 252)' : 'white' }}
// className="border border-green-100 rounded-lg shadow-sm mb-4 overflow-hidden"
// >
// <button
// className="flex justify-between items-center w-full text-left p-6 focus:outline-none"
// onClick={() => setIsOpen(!isOpen)}
// >
// <span className="text-lg font-medium text-gray-900">{question}</span>
// <ChevronDown
// className={`w-5 h-5 text-gray-500 transform transition-transform duration-200 ${
// isOpen ? 'rotate-180' : ''
// }`}
// />
// </button>
// <AnimatePresence initial={false}>
// {isOpen && (
// <motion.div
// initial={{ height: 0, opacity: 0 }}
// animate={{ height: 'auto', opacity: 1 }}
// exit={{ height: 0, opacity: 0 }}
// transition={{ duration: 0.3 }}
// >
// <div className="px-6 pb-6 text-gray-600 leading-relaxed">
// {answer}
// </div>
// </motion.div>
// )}
// </AnimatePresence>
// </motion.div>
// )
// }
// export default function Questions() {
// return (
// <section className="py-16 bg-white mb-9">
// <div className="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8">
// <div className="text-center mb-12">
// <h2 className="text-3xl font-bold text-gray-900 mb-4">
// Часто задаваемые вопросы
// </h2>
// <p className="text-lg text-gray-600">
// Найдите ответы на популярные вопросы о qWickPost
// </p>
// </div>
// <div className="space-y-4">
// {faqData.map((faq, index) => (
// <FAQItem key={index} question={faq.question} answer={faq.answer} />
// ))}
// </div>
// </div>
// </section>
// )
// }
import React, { useState } from 'react';
import { motion, AnimatePresence } from 'framer-motion';
import { ChevronDown } from 'lucide-react';
import translations from '../translations.json';
import { useLanguage } from '../contexts/LanguageContext';
const FAQItem = ({ question, answer }) => {
const [isOpen, setIsOpen] = useState(false);
return (
<motion.div
initial={false}
animate={{ backgroundColor: isOpen ? 'rgb(250 251 252)' : 'white' }}
className="border border-green-100 rounded-lg shadow-sm mb-4 overflow-hidden"
>
<button
className="flex justify-between items-center w-full text-left p-6 focus:outline-none"
onClick={() => setIsOpen(!isOpen)}
>
<span className="text-lg font-medium text-gray-900">{question}</span>
<ChevronDown
className={`w-5 h-5 text-gray-500 transform transition-transform duration-200 ${
isOpen ? 'rotate-180' : ''
}`}
/>
</button>
<AnimatePresence initial={false}>
{isOpen && (
<motion.div
initial={{ height: 0, opacity: 0 }}
animate={{ height: 'auto', opacity: 1 }}
exit={{ height: 0, opacity: 0 }}
transition={{ duration: 0.3 }}
>
<div className="px-6 pb-6 text-gray-600 leading-relaxed">
{answer}
</div>
</motion.div>
)}
</AnimatePresence>
</motion.div>
);
};
export default function Questions() {
const { language } = useLanguage();
const t = translations.questions[language];
return (
<section className="py-16 bg-white mb-9">
<div className="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="text-center mb-12">
<h2 className="text-3xl font-bold text-gray-900 mb-4">
{t.title}
</h2>
<p className="text-lg text-gray-600">
{t.subtitle}
</p>
</div>
<div className="space-y-4">
{t.faq.map((faq, index) => (
<FAQItem
key={index}
question={faq.question}
answer={faq.answer}
/>
))}
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,24 @@
import React from 'react';
export function ScrollLink({ to, children, className }) {
const handleClick = (e) => {
e.preventDefault();
const element = document.querySelector(to);
if (element) {
element.scrollIntoView({
behavior: 'smooth',
block: 'start',
});
}
};
return (
<a
href={to}
className={className}
onClick={handleClick}
>
{children}
</a>
);
}

View File

@ -0,0 +1,17 @@
import { useEffect } from 'react';
import { useLocation } from 'react-router-dom';
function ScrollToTop() {
const { pathname } = useLocation();
useEffect(() => {
window.scrollTo({
top: 0,
behavior: 'smooth' // Для плавной прокрутки. Используйте 'auto' для мгновенной
});
}, [pathname]);
return null;
}
export default ScrollToTop;

80
src/components/Udobno.js Normal file
View File

@ -0,0 +1,80 @@
// import React from 'react';
// import mac from '../images/maciphone.png';
// const Udobno = () => {
// return (
// <div>
// <div className="container mx-auto px-4 py-24">
// <div className="flex flex-col md:flex-row items-center justify-between gap-12">
// {/* Текстовый контент */}
// <div className="flex-1 max-w-xl">
// <h2 className=" text-4xl font-extrabold text-green-600 mb-8 leading-tight">
// Управляйте контентом в браузере или в приложении
// </h2>
// <p className="text-xl font-bold text-gray-700 leading-relaxed space-y-4">
// Полный доступ к функционалу сервиса из любой точки мира.
// Работайте через удобный веб-интерфейс или используйте
// нативное приложение.
// </p>
// </div>
// {/* Изображение */}
// <div className="flex-1 relative">
// <div className="relative transform hover:scale-105 transition-transform duration-300">
// <div className="absolute inset-0 opacity-10 rounded-2xl"></div>
// <img
// src={mac}
// alt="Интерфейс qWick на различных устройствах"
// className="relative z-10 max-w-full h-auto rounded-2xl"
// />
// </div>
// </div>
// </div>
// </div>
// </div>
// );
// };
// export default Udobno;
import React from 'react';
import mac from '../images/maciphone.png';
import translations from '../translations.json';
import { useLanguage } from '../contexts/LanguageContext';
const Udobno = () => {
const { language } = useLanguage();
const t = translations.udobno[language];
return (
<div>
<div className="container mx-auto px-4 py-24">
<div className="flex flex-col md:flex-row items-center justify-between gap-12">
{/* Text content */}
<div className="flex-1 max-w-xl">
<h2 className="text-4xl font-extrabold text-green-600 mb-8 leading-tight">
{t.title}
</h2>
<p className="text-xl font-bold text-gray-700 leading-relaxed space-y-4">
{t.description}
</p>
</div>
{/* Image */}
<div className="flex-1 relative">
<div className="relative transform hover:scale-105 transition-transform duration-300">
<div className="absolute inset-0 opacity-10 rounded-2xl"></div>
<img
src={mac}
alt={t.imageAlt}
className="relative z-10 max-w-full h-auto rounded-2xl"
/>
</div>
</div>
</div>
</div>
</div>
);
};
export default Udobno;

View File

@ -0,0 +1,21 @@
import React from 'react';
import videoback from '../vids/video1.webm';
const VideoBackground = () => {
return (
<video
autoPlay
loop
muted
style={{
position: 'flex',
width: '100%',
height: '100%',
objectFit: 'cover',
zIndex: -1
}}
>
<source src={videoback} type="video/webm" />
</video>
);
};
export default VideoBackground;

View File

@ -0,0 +1,130 @@
// import React from 'react'
// import { Typography, Button, Image, Row, Col, Card } from 'antd'
// import { TeamOutlined, SyncOutlined, RocketOutlined } from '@ant-design/icons'
// import workimage from '../images/teamwork.png';
// const { Title, Paragraph } = Typography
// export default function WorkInTeam() {
// return (
// <Card className="border-white">
// <Row gutter={[32, 32]} align="middle">
// <Col xs={24} md={12}>
// <img
// src={workimage}
// alt="Работа в команде"
// className="w-full h-auto rounded-lg"
// />
// </Col>
// <Col xs={24} md={12}>
// <Title level={2} className="mb-4 ">
// Работайте в команде!
// </Title>
// <Paragraph className="text-lg mb-6">
// Эффективная командная работа - ключ к успеху любого проекта. Наша платформа предоставляет инструменты для seamless коллаборации и повышения продуктивности вашей команды.
// </Paragraph>
// <Row gutter={[16, 16]}>
// <Col span={24}>
// <Card size="small" className="flex items-center shadow-lg">
// <TeamOutlined className="text-2xl mr-4 text-blue-500" />
// <div>
// <Title level={5} className="mb-1">Совместная работа</Title>
// <Paragraph className="m-0">Легко делитесь задачами и информацией</Paragraph>
// </div>
// </Card>
// </Col>
// <Col span={24}>
// <Card size="small" className="flex items-center shadow-lg">
// <SyncOutlined className="text-2xl mr-4 text-green-500" />
// <div>
// <Title level={5} className="mb-1 ">Синхронизация в реальном времени</Title>
// <Paragraph className="m-0">Всегда будьте в курсе последних изменений</Paragraph>
// </div>
// </Card>
// </Col>
// <Col span={24}>
// <Card size="small" className="flex items-center shadow-lg">
// <RocketOutlined className="text-2xl mr-4 text-red-500" />
// <div>
// <Title level={5} className="mb-1">Повышение эффективности</Title>
// <Paragraph className="m-0">Достигайте целей быстрее вместе с командой</Paragraph>
// </div>
// </Card>
// </Col>
// </Row>
// </Col>
// </Row>
// </Card>
// )
// }
import React from 'react';
import { Typography, Row, Col, Card } from 'antd';
import { TeamOutlined, WechatOutlined, SmileOutlined } from '@ant-design/icons';
import workimage from '../images/teamwork.png';
import translations from '../translations.json';
import { useLanguage } from '../contexts/LanguageContext';
const { Title, Paragraph } = Typography;
export default function WorkInTeam() {
const { language } = useLanguage();
const t = translations.workInTeam[language];
const features = [
{
icon: WechatOutlined,
key: 'collaboration',
color: 'blue'
},
{
icon: TeamOutlined,
key: 'realTime',
color: 'green'
},
{
icon: SmileOutlined,
key: 'efficiency',
color: 'red'
}
];
return (
<Card className="border-white">
<Row gutter={[32, 32]} align="middle">
<Col xs={24} md={12}>
<img
src={workimage}
alt={t.imageAlt}
className="w-full h-auto rounded-lg"
/>
</Col>
<Col xs={24} md={12}>
<Title level={2} className="mb-4">
{t.title}
</Title>
<Paragraph className="text-lg mb-6">
{t.description}
</Paragraph>
<Row gutter={[16, 16]}>
{features.map((feature) => (
<Col span={24} key={feature.key}>
<Card size="small" className="flex items-center shadow-lg">
<feature.icon className={`text-2xl mr-4 text-${feature.color}-500`} />
<div>
<Title level={5} className="mb-1">
{t.features[feature.key].title}
</Title>
<Paragraph className="m-0">
{t.features[feature.key].description}
</Paragraph>
</div>
</Card>
</Col>
))}
</Row>
</Col>
</Row>
</Card>
);
}

View File

@ -0,0 +1,47 @@
// import React, { createContext, useState, useContext } from 'react';
// const LanguageContext = createContext();
// export function LanguageProvider({ children }) {
// const [language, setLanguage] = useState('ru');
// const toggleLanguage = () => {
// setLanguage(prev => prev === 'ru' ? 'en' : 'ru');
// };
// return (
// <LanguageContext.Provider value={{ language, toggleLanguage }}>
// {children}
// </LanguageContext.Provider>
// );
// }
// export function useLanguage() {
// const context = useContext(LanguageContext);
// if (context === undefined) {
// throw new Error('useLanguage must be used within a LanguageProvider');
// }
// return context;
// }
import React, { createContext, useState, useContext } from 'react';
const LanguageContext = createContext();
export function LanguageProvider({ children }) {
const [language, setLanguage] = useState('en');
return (
<LanguageContext.Provider value={{ language, setLanguage }}>
{children}
</LanguageContext.Provider>
);
}
export function useLanguage() {
const context = useContext(LanguageContext);
if (context === undefined) {
throw new Error('useLanguage must be used within a LanguageProvider');
}
return context;
}

View File

@ -0,0 +1,21 @@
import React from 'react';
import { useLanguage } from './LanguageContext';
const RTLProvider = ({ children }) => {
const { language } = useLanguage();
React.useEffect(() => {
// Установка направления текста для всего документа
document.documentElement.dir = language === 'ar' ? 'rtl' : 'ltr';
// Добавление/удаление класса для RTL стилей
document.documentElement.classList.toggle('rtl', language === 'ar');
}, [language]);
return (
<div className={`${language === 'ar' ? 'rtl' : ''}`}>
{children}
</div>
);
};
export default RTLProvider;

BIN
src/images/adduser.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 854 KiB

BIN
src/images/analysis.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

BIN
src/images/analytics.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 876 KiB

BIN
src/images/analyze.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
src/images/auditory.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 966 KiB

BIN
src/images/calendar.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
src/images/calendar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 KiB

BIN
src/images/clyaksa1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1001 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
src/images/desert_vert.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
src/images/fastanswers.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 924 KiB

BIN
src/images/ii.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
src/images/mac_easy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 688 KiB

BIN
src/images/maciphone.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
src/images/monitoring.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
src/images/repost.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
src/images/security.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1020 KiB

BIN
src/images/sequrity.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 975 KiB

BIN
src/images/socialike.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 MiB

BIN
src/images/tagging.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
src/images/teamwork.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 895 KiB

BIN
src/images/workatteam.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
src/images/workwithmes.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

222
src/index.css Normal file
View File

@ -0,0 +1,222 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
/* @import url('https://fonts.googleapis.com/css2?family=Oswald:wght@200..700&display=swap');
@layer base {
* {
font-family: 'Oswald', sans-serif;
}
}
.ant-typography,
.ant-card,
.ant-btn,
.ant-paragraph {
font-family: 'Oswald', sans-serif !important;
} */
/* @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
@layer base {
* {
font-family: 'Inter', sans-serif;
}
}
.ant-typography,
.ant-card,
.ant-btn,
.ant-paragraph {
font-family: 'Inter', sans-serif !important;
} */
/* @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap');
@layer base {
* {
font-family: 'Poppins', sans-serif;
}
}
.ant-typography,
.ant-card,
.ant-btn,
.ant-paragraph {
font-family: 'Poppins', sans-serif !important;
} */
@import url('https://fonts.googleapis.com/css2?family=Rubik:wght@300;400;500;600;700&display=swap');
/* Вариант 1: Только Rubik */
@layer base {
* {
font-family: 'Rubik', sans-serif;
}
}
.ant-typography,
.ant-card,
.ant-btn,
.ant-paragraph {
font-family: 'Rubik', sans-serif !important;
}
/*
.pricing-container {
font-family: Arial, sans-serif;
max-width: 1200px;
margin: 0 auto;
padding: 40px 20px;
}
.pricing-header {
text-align: center;
margin-bottom: 40px;
}
.pricing-header h2 {
font-size: 36px;
margin-bottom: 16px;
}
.pricing-header p {
font-size: 18px;
color: #666;
margin-bottom: 24px;
}
.pricing-toggle {
display: flex;
justify-content: center;
margin-bottom: 40px;
}
.pricing-toggle button {
padding: 10px 20px;
font-size: 16px;
border: 1px solid #ccc;
background-color: #fff;
cursor: pointer;
}
.pricing-toggle button.active {
background-color: #0070f3;
color: #fff;
border-color: #0070f3;
}
.plans-container {
display: flex;
justify-content: space-between;
gap: 20px;
margin-bottom: 40px;
}
.plan-card {
flex: 1;
padding: 24px;
border: 1px solid #ccc;
border-radius: 8px;
text-align: center;
}
.plan-card.popular {
border-color: #0070f3;
position: relative;
}
.plan-card.popular::before {
content: 'Популярный';
position: absolute;
top: -12px;
left: 50%;
transform: translateX(-50%);
background-color: #0070f3;
color: #fff;
padding: 4px 12px;
border-radius: 12px;
font-size: 14px;
}
.plan-card h3 {
font-size: 24px;
margin-bottom: 8px;
}
.plan-card p {
color: #666;
margin-bottom: 16px;
}
.plan-card .price {
font-size: 36px;
font-weight: bold;
margin-bottom: 24px;
}
.plan-card button {
width: 100%;
padding: 12px;
font-size: 16px;
background-color: #0070f3;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
}
.features-table {
width: 100%;
border-collapse: collapse;
}
.features-table th,
.features-table td {
padding: 16px;
text-align: left;
border-bottom: 1px solid #eee;
}
.features-table .category-row th {
background-color: #f7f7f7;
font-weight: bold;
}
.tooltip-trigger {
position: relative;
display: inline-block;
margin-left: 8px;
width: 16px;
height: 16px;
background-color: #ccc;
color: #fff;
border-radius: 50%;
text-align: center;
line-height: 16px;
cursor: help;
}
.tooltip {
display: none;
position: absolute;
background-color: #333;
color: #fff;
padding: 8px;
border-radius: 4px;
width: 200px;
z-index: 1;
bottom: 125%;
left: 50%;
margin-left: -100px;
font-size: 14px;
}
.tooltip-trigger:hover .tooltip {
display: block;
} */

11
src/index.js Normal file
View File

@ -0,0 +1,11 @@
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);

93
src/styles/rtl.css Normal file
View File

@ -0,0 +1,93 @@
/* styles/rtl.css */
/* Основные RTL стили */
.rtl {
direction: rtl;
text-align: right;
}
/* Отзеркаливание отступов */
.rtl .ml-1, .rtl .ml-2, .rtl .ml-3, .rtl .ml-4 {
margin-left: 0;
}
.rtl .mr-1 { margin-left: 0.25rem; margin-right: 0; }
.rtl .mr-2 { margin-left: 0.5rem; margin-right: 0; }
.rtl .mr-3 { margin-left: 0.75rem; margin-right: 0; }
.rtl .mr-4 { margin-left: 1rem; margin-right: 0; }
/* Отзеркаливание padding */
.rtl .pl-1, .rtl .pl-2, .rtl .pl-3, .rtl .pl-4 {
padding-left: 0;
}
.rtl .pr-1 { padding-left: 0.25rem; padding-right: 0; }
.rtl .pr-2 { padding-left: 0.5rem; padding-right: 0; }
.rtl .pr-3 { padding-left: 0.75rem; padding-right: 0; }
.rtl .pr-4 { padding-left: 1rem; padding-right: 0; }
/* Отзеркаливание flexbox */
/* .rtl .flex {
flex-direction: row-reverse;
} */
/* Отзеркаливание grid */
.rtl .grid {
direction: rtl;
}
/* Отзеркаливание позиционирования */
.rtl .left-0 { right: 0; left: auto; }
.rtl .right-0 { left: 0; right: auto; }
/* Отзеркаливание текстового выравнивания */
.rtl .text-left { text-align: right; }
.rtl .text-right { text-align: left; }
/* Отзеркаливание border-radius */
.rtl .rounded-l { border-radius: 0 0.25rem 0.25rem 0; }
.rtl .rounded-r { border-radius: 0.25rem 0 0 0.25rem; }
/* Специфичные стили для компонентов */
.rtl .header-nav {
flex-direction: row-reverse;
}
.rtl .dropdown-menu {
left: auto;
right: 0;
}
/* Фиксы для иконок */
.rtl .icon {
transform: scaleX(-1);
}
/* Отзеркаливание анимаций */
.rtl .slide-in {
transform-origin: right center;
}
/* Специальные стили для арабского текста */
.rtl {
font-family: "Dubai", "Segoe UI", Tahoma, sans-serif;
}
/* Исправление специфических компонентов */
.rtl .language-switcher .dropdown-content {
left: auto;
right: 0;
}
.rtl .nav-links {
flex-direction: row-reverse;
}
/* Фиксы для мобильной версии */
@media (max-width: 768px) {
.rtl .mobile-menu {
left: auto;
right: 0;
transform-origin: right;
}
}

0
src/styles/tailwind.css Normal file
View File

1657
src/translations.json Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

BIN
src/vids/backvideo2.webm Normal file

Binary file not shown.

BIN
src/vids/video1.webm Normal file

Binary file not shown.

BIN
src/vids/videovert.webm Normal file

Binary file not shown.

13
tailwind.config.js Normal file
View File

@ -0,0 +1,13 @@
module.exports = {
content: [
"./src/**/*.{js,jsx,ts,tsx}",
],
theme: {
extend: {
colors: {
'buffer-blue': '#1E40AF',
},
},
},
plugins: [],
}

View File

@ -0,0 +1,796 @@
@Switch01
A_Rog
Aakanksha Agrawal
Abhinav Sagar
ABHYUDAY PRATAP SINGH
abs51295
AceGentile
Adam Chainz
Adam Tse
Adam Wentz
admin
Adolfo Ochagavía
Adrien Morison
Agus
ahayrapetyan
Ahilya
AinsworthK
Akash Srivastava
Alan Yee
Albert Tugushev
Albert-Guan
albertg
Alberto Sottile
Aleks Bunin
Ales Erjavec
Alethea Flowers
Alex Gaynor
Alex Grönholm
Alex Hedges
Alex Loosley
Alex Morega
Alex Stachowiak
Alexander Shtyrov
Alexandre Conrad
Alexey Popravka
Aleš Erjavec
Alli
Ami Fischman
Ananya Maiti
Anatoly Techtonik
Anders Kaseorg
Andre Aguiar
Andreas Lutro
Andrei Geacar
Andrew Gaul
Andrew Shymanel
Andrey Bienkowski
Andrey Bulgakov
Andrés Delfino
Andy Freeland
Andy Kluger
Ani Hayrapetyan
Aniruddha Basak
Anish Tambe
Anrs Hu
Anthony Sottile
Antoine Musso
Anton Ovchinnikov
Anton Patrushev
Antonio Alvarado Hernandez
Antony Lee
Antti Kaihola
Anubhav Patel
Anudit Nagar
Anuj Godase
AQNOUCH Mohammed
AraHaan
arena
arenasys
Arindam Choudhury
Armin Ronacher
Arnon Yaari
Artem
Arun Babu Neelicattu
Ashley Manton
Ashwin Ramaswami
atse
Atsushi Odagiri
Avinash Karhana
Avner Cohen
Awit (Ah-Wit) Ghirmai
Baptiste Mispelon
Barney Gale
barneygale
Bartek Ogryczak
Bastian Venthur
Ben Bodenmiller
Ben Darnell
Ben Hoyt
Ben Mares
Ben Rosser
Bence Nagy
Benjamin Peterson
Benjamin VanEvery
Benoit Pierre
Berker Peksag
Bernard
Bernard Tyers
Bernardo B. Marques
Bernhard M. Wiedemann
Bertil Hatt
Bhavam Vidyarthi
Blazej Michalik
Bogdan Opanchuk
BorisZZZ
Brad Erickson
Bradley Ayers
Branch Vincent
Brandon L. Reiss
Brandt Bucher
Brannon Dorsey
Brett Randall
Brett Rosen
Brian Cristante
Brian Rosner
briantracy
BrownTruck
Bruno Oliveira
Bruno Renié
Bruno S
Bstrdsmkr
Buck Golemon
burrows
Bussonnier Matthias
bwoodsend
c22
Caleb Martinez
Calvin Smith
Carl Meyer
Carlos Liam
Carol Willing
Carter Thayer
Cass
Chandrasekhar Atina
Charlie Marsh
Chih-Hsuan Yen
Chris Brinker
Chris Hunt
Chris Jerdonek
Chris Kuehl
Chris Markiewicz
Chris McDonough
Chris Pawley
Chris Pryer
Chris Wolfe
Christian Clauss
Christian Heimes
Christian Oudard
Christoph Reiter
Christopher Hunt
Christopher Snyder
chrysle
cjc7373
Clark Boylan
Claudio Jolowicz
Clay McClure
Cody
Cody Soyland
Colin Watson
Collin Anderson
Connor Osborn
Cooper Lees
Cooper Ry Lees
Cory Benfield
Cory Wright
Craig Kerstiens
Cristian Sorinel
Cristina
Cristina Muñoz
ctg123
Curtis Doty
cytolentino
Daan De Meyer
Dale
Damian
Damian Quiroga
Damian Shaw
Dan Black
Dan Savilonis
Dan Sully
Dane Hillard
daniel
Daniel Collins
Daniel Hahler
Daniel Holth
Daniel Jost
Daniel Katz
Daniel Shaulov
Daniele Esposti
Daniele Nicolodi
Daniele Procida
Daniil Konovalenko
Danny Hermes
Danny McClanahan
Darren Kavanagh
Dav Clark
Dave Abrahams
Dave Jones
David Aguilar
David Black
David Bordeynik
David Caro
David D Lowe
David Evans
David Hewitt
David Linke
David Poggi
David Poznik
David Pursehouse
David Runge
David Tucker
David Wales
Davidovich
ddelange
Deepak Sharma
Deepyaman Datta
Denise Yu
dependabot[bot]
derwolfe
Desetude
Devesh Kumar Singh
devsagul
Diego Caraballo
Diego Ramirez
DiegoCaraballo
Dimitri Merejkowsky
Dimitri Papadopoulos
Dirk Stolle
Dmitry Gladkov
Dmitry Volodin
Domen Kožar
Dominic Davis-Foster
Donald Stufft
Dongweiming
doron zarhi
Dos Moonen
Douglas Thor
DrFeathers
Dustin Ingram
Dustin Rodrigues
Dwayne Bailey
Ed Morley
Edgar Ramírez
Edgar Ramírez Mondragón
Ee Durbin
Efflam Lemaillet
efflamlemaillet
Eitan Adler
ekristina
elainechan
Eli Schwartz
Elisha Hollander
Ellen Marie Dash
Emil Burzo
Emil Styrke
Emmanuel Arias
Endoh Takanao
enoch
Erdinc Mutlu
Eric Cousineau
Eric Gillingham
Eric Hanchrow
Eric Hopper
Erik M. Bray
Erik Rose
Erwin Janssen
Eugene Vereshchagin
everdimension
Federico
Felipe Peter
Felix Yan
fiber-space
Filip Kokosiński
Filipe Laíns
Finn Womack
finnagin
Flavio Amurrio
Florian Briand
Florian Rathgeber
Francesco
Francesco Montesano
Fredrik Orderud
Frost Ming
Gabriel Curio
Gabriel de Perthuis
Garry Polley
gavin
gdanielson
Geoffrey Sneddon
George Song
Georgi Valkov
Georgy Pchelkin
ghost
Giftlin Rajaiah
gizmoguy1
gkdoc
Godefroid Chapelle
Gopinath M
GOTO Hayato
gousaiyang
gpiks
Greg Roodt
Greg Ward
Guilherme Espada
Guillaume Seguin
gutsytechster
Guy Rozendorn
Guy Tuval
gzpan123
Hanjun Kim
Hari Charan
Harsh Vardhan
harupy
Harutaka Kawamura
hauntsaninja
Henrich Hartzer
Henry Schreiner
Herbert Pfennig
Holly Stotelmyer
Honnix
Hsiaoming Yang
Hugo Lopes Tavares
Hugo van Kemenade
Hugues Bruant
Hynek Schlawack
Ian Bicking
Ian Cordasco
Ian Lee
Ian Stapleton Cordasco
Ian Wienand
Igor Kuzmitshov
Igor Sobreira
Ikko Ashimine
Ilan Schnell
Illia Volochii
Ilya Baryshev
Inada Naoki
Ionel Cristian Mărieș
Ionel Maries Cristian
Itamar Turner-Trauring
Ivan Pozdeev
J. Nick Koston
Jacob Kim
Jacob Walls
Jaime Sanz
jakirkham
Jakub Kuczys
Jakub Stasiak
Jakub Vysoky
Jakub Wilk
James Cleveland
James Curtin
James Firth
James Gerity
James Polley
Jan Pokorný
Jannis Leidel
Jarek Potiuk
jarondl
Jason Curtis
Jason R. Coombs
JasonMo
JasonMo1
Jay Graves
Jean Abou Samra
Jean-Christophe Fillion-Robin
Jeff Barber
Jeff Dairiki
Jeff Widman
Jelmer Vernooij
jenix21
Jeremy Fleischman
Jeremy Stanley
Jeremy Zafran
Jesse Rittner
Jiashuo Li
Jim Fisher
Jim Garrison
Jinzhe Zeng
Jiun Bae
Jivan Amara
Joe Bylund
Joe Michelini
John Paton
John Sirois
John T. Wodder II
John-Scott Atlakson
johnthagen
Jon Banafato
Jon Dufresne
Jon Parise
Jonas Nockert
Jonathan Herbert
Joonatan Partanen
Joost Molenaar
Jorge Niedbalski
Joseph Bylund
Joseph Long
Josh Bronson
Josh Cannon
Josh Hansen
Josh Schneier
Joshua
Juan Luis Cano Rodríguez
Juanjo Bazán
Judah Rand
Julian Berman
Julian Gethmann
Julien Demoor
Jussi Kukkonen
jwg4
Jyrki Pulliainen
Kai Chen
Kai Mueller
Kamal Bin Mustafa
kasium
kaustav haldar
keanemind
Keith Maxwell
Kelsey Hightower
Kenneth Belitzky
Kenneth Reitz
Kevin Burke
Kevin Carter
Kevin Frommelt
Kevin R Patterson
Kexuan Sun
Kit Randel
Klaas van Schelven
KOLANICH
konstin
kpinc
Krishna Oza
Kumar McMillan
Kuntal Majumder
Kurt McKee
Kyle Persohn
lakshmanaram
Laszlo Kiss-Kollar
Laurent Bristiel
Laurent LAPORTE
Laurie O
Laurie Opperman
layday
Leon Sasson
Lev Givon
Lincoln de Sousa
Lipis
lorddavidiii
Loren Carvalho
Lucas Cimon
Ludovic Gasc
Luis Medel
Lukas Geiger
Lukas Juhrich
Luke Macken
Luo Jiebin
luojiebin
luz.paz
László Kiss Kollár
M00nL1ght
Marc Abramowitz
Marc Tamlyn
Marcus Smith
Mariatta
Mark Kohler
Mark McLoughlin
Mark Williams
Markus Hametner
Martey Dodoo
Martin Fischer
Martin Häcker
Martin Pavlasek
Masaki
Masklinn
Matej Stuchlik
Mathew Jennings
Mathieu Bridon
Mathieu Kniewallner
Matt Bacchi
Matt Good
Matt Maker
Matt Robenolt
Matt Wozniski
matthew
Matthew Einhorn
Matthew Feickert
Matthew Gilliard
Matthew Hughes
Matthew Iversen
Matthew Treinish
Matthew Trumbell
Matthew Willson
Matthias Bussonnier
mattip
Maurits van Rees
Max W Chase
Maxim Kurnikov
Maxime Rouyrre
mayeut
mbaluna
mdebi
memoselyk
meowmeowcat
Michael
Michael Aquilina
Michael E. Karpeles
Michael Klich
Michael Mintz
Michael Williamson
michaelpacer
Michał Górny
Mickaël Schoentgen
Miguel Araujo Perez
Mihir Singh
Mike
Mike Hendricks
Min RK
MinRK
Miro Hrončok
Monica Baluna
montefra
Monty Taylor
morotti
mrKazzila
Muha Ajjan
Nadav Wexler
Nahuel Ambrosini
Nate Coraor
Nate Prewitt
Nathan Houghton
Nathaniel J. Smith
Nehal J Wani
Neil Botelho
Nguyễn Gia Phong
Nicholas Serra
Nick Coghlan
Nick Stenning
Nick Timkovich
Nicolas Bock
Nicole Harris
Nikhil Benesch
Nikhil Ladha
Nikita Chepanov
Nikolay Korolev
Nipunn Koorapati
Nitesh Sharma
Niyas Sait
Noah
Noah Gorny
Nowell Strite
NtaleGrey
nvdv
OBITORASU
Ofek Lev
ofrinevo
Oliver Freund
Oliver Jeeves
Oliver Mannion
Oliver Tonnhofer
Olivier Girardot
Olivier Grisel
Ollie Rutherfurd
OMOTO Kenji
Omry Yadan
onlinejudge95
Oren Held
Oscar Benjamin
Oz N Tiram
Pachwenko
Patrick Dubroy
Patrick Jenkins
Patrick Lawson
patricktokeeffe
Patrik Kopkan
Paul Ganssle
Paul Kehrer
Paul Moore
Paul Nasrat
Paul Oswald
Paul van der Linden
Paulus Schoutsen
Pavel Safronov
Pavithra Eswaramoorthy
Pawel Jasinski
Paweł Szramowski
Pekka Klärck
Peter Gessler
Peter Lisák
Peter Shen
Peter Waller
Petr Viktorin
petr-tik
Phaneendra Chiruvella
Phil Elson
Phil Freo
Phil Pennock
Phil Whelan
Philip Jägenstedt
Philip Molloy
Philippe Ombredanne
Pi Delport
Pierre-Yves Rofes
Pieter Degroote
pip
Prabakaran Kumaresshan
Prabhjyotsing Surjit Singh Sodhi
Prabhu Marappan
Pradyun Gedam
Prashant Sharma
Pratik Mallya
pre-commit-ci[bot]
Preet Thakkar
Preston Holmes
Przemek Wrzos
Pulkit Goyal
q0w
Qiangning Hong
Qiming Xu
Quentin Lee
Quentin Pradet
R. David Murray
Rafael Caricio
Ralf Schmitt
Ran Benita
Razzi Abuissa
rdb
Reece Dunham
Remi Rampin
Rene Dudfield
Riccardo Magliocchetti
Riccardo Schirone
Richard Jones
Richard Si
Ricky Ng-Adam
Rishi
rmorotti
RobberPhex
Robert Collins
Robert McGibbon
Robert Pollak
Robert T. McGibbon
robin elisha robinson
Roey Berman
Rohan Jain
Roman Bogorodskiy
Roman Donchenko
Romuald Brunet
ronaudinho
Ronny Pfannschmidt
Rory McCann
Ross Brattain
Roy Wellington Ⅳ
Ruairidh MacLeod
Russell Keith-Magee
Ryan Shepherd
Ryan Wooden
ryneeverett
S. Guliaev
Sachi King
Salvatore Rinchiera
sandeepkiran-js
Sander Van Balen
Savio Jomton
schlamar
Scott Kitterman
Sean
seanj
Sebastian Jordan
Sebastian Schaetz
Segev Finer
SeongSoo Cho
Sergey Vasilyev
Seth Michael Larson
Seth Woodworth
Shahar Epstein
Shantanu
shenxianpeng
shireenrao
Shivansh-007
Shixian Sheng
Shlomi Fish
Shovan Maity
Simeon Visser
Simon Cross
Simon Pichugin
sinoroc
sinscary
snook92
socketubs
Sorin Sbarnea
Srinivas Nyayapati
Stavros Korokithakis
Stefan Scherfke
Stefano Rivera
Stephan Erb
Stephen Rosen
stepshal
Steve (Gadget) Barnes
Steve Barnes
Steve Dower
Steve Kowalik
Steven Myint
Steven Silvester
stonebig
studioj
Stéphane Bidoul
Stéphane Bidoul (ACSONE)
Stéphane Klein
Sumana Harihareswara
Surbhi Sharma
Sviatoslav Sydorenko
Sviatoslav Sydorenko (Святослав Сидоренко)
Swat009
Sylvain
Takayuki SHIMIZUKAWA
Taneli Hukkinen
tbeswick
Thiago
Thijs Triemstra
Thomas Fenzl
Thomas Grainger
Thomas Guettler
Thomas Johansson
Thomas Kluyver
Thomas Smith
Thomas VINCENT
Tim D. Smith
Tim Gates
Tim Harder
Tim Heap
tim smith
tinruufu
Tobias Hermann
Tom Forbes
Tom Freudenheim
Tom V
Tomas Hrnciar
Tomas Orsava
Tomer Chachamu
Tommi Enenkel | AnB
Tomáš Hrnčiar
Tony Beswick
Tony Narlock
Tony Zhaocheng Tan
TonyBeswick
toonarmycaptain
Toshio Kuratomi
toxinu
Travis Swicegood
Tushar Sadhwani
Tzu-ping Chung
Valentin Haenel
Victor Stinner
victorvpaulo
Vikram - Google
Viktor Szépe
Ville Skyttä
Vinay Sajip
Vincent Philippon
Vinicyus Macedo
Vipul Kumar
Vitaly Babiy
Vladimir Fokow
Vladimir Rutsky
W. Trevor King
Wil Tan
Wilfred Hughes
William Edwards
William ML Leslie
William T Olson
William Woodruff
Wilson Mo
wim glenn
Winson Luk
Wolfgang Maier
Wu Zhenyu
XAMES3
Xavier Fernandez
Xianpeng Shen
xoviat
xtreak
YAMAMOTO Takashi
Yen Chi Hsuan
Yeray Diaz Diaz
Yoval P
Yu Jian
Yuan Jing Vincent Yan
Yusuke Hayashi
Zearin
Zhiping Deng
ziebam
Zvezdan Petkovic
Łukasz Langa
Роман Донченко
Семён Марьясин

View File

@ -0,0 +1 @@
pip

View File

@ -0,0 +1,20 @@
Copyright (c) 2008-present The pip developers (see AUTHORS.txt file)
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -0,0 +1,89 @@
Metadata-Version: 2.1
Name: pip
Version: 24.2
Summary: The PyPA recommended tool for installing Python packages.
Author-email: The pip developers <distutils-sig@python.org>
License: MIT
Project-URL: Homepage, https://pip.pypa.io/
Project-URL: Documentation, https://pip.pypa.io
Project-URL: Source, https://github.com/pypa/pip
Project-URL: Changelog, https://pip.pypa.io/en/stable/news/
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Software Development :: Build Tools
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=3.8
Description-Content-Type: text/x-rst
License-File: LICENSE.txt
License-File: AUTHORS.txt
pip - The Python Package Installer
==================================
.. |pypi-version| image:: https://img.shields.io/pypi/v/pip.svg
:target: https://pypi.org/project/pip/
:alt: PyPI
.. |python-versions| image:: https://img.shields.io/pypi/pyversions/pip
:target: https://pypi.org/project/pip
:alt: PyPI - Python Version
.. |docs-badge| image:: https://readthedocs.org/projects/pip/badge/?version=latest
:target: https://pip.pypa.io/en/latest
:alt: Documentation
|pypi-version| |python-versions| |docs-badge|
pip is the `package installer`_ for Python. You can use pip to install packages from the `Python Package Index`_ and other indexes.
Please take a look at our documentation for how to install and use pip:
* `Installation`_
* `Usage`_
We release updates regularly, with a new version every 3 months. Find more details in our documentation:
* `Release notes`_
* `Release process`_
If you find bugs, need help, or want to talk to the developers, please use our mailing lists or chat rooms:
* `Issue tracking`_
* `Discourse channel`_
* `User IRC`_
If you want to get involved head over to GitHub to get the source code, look at our development documentation and feel free to jump on the developer mailing lists and chat rooms:
* `GitHub page`_
* `Development documentation`_
* `Development IRC`_
Code of Conduct
---------------
Everyone interacting in the pip project's codebases, issue trackers, chat
rooms, and mailing lists is expected to follow the `PSF Code of Conduct`_.
.. _package installer: https://packaging.python.org/guides/tool-recommendations/
.. _Python Package Index: https://pypi.org
.. _Installation: https://pip.pypa.io/en/stable/installation/
.. _Usage: https://pip.pypa.io/en/stable/
.. _Release notes: https://pip.pypa.io/en/stable/news.html
.. _Release process: https://pip.pypa.io/en/latest/development/release-process/
.. _GitHub page: https://github.com/pypa/pip
.. _Development documentation: https://pip.pypa.io/en/latest/development
.. _Issue tracking: https://github.com/pypa/pip/issues
.. _Discourse channel: https://discuss.python.org/c/packaging
.. _User IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa
.. _Development IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa-dev
.. _PSF Code of Conduct: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md

View File

@ -0,0 +1,853 @@
../../Scripts/pip.exe,sha256=DzsU73g1KQnShOC9jG65CJsjF8uNGgCJmvlKfMSJSVQ,108406
../../Scripts/pip3.12.exe,sha256=DzsU73g1KQnShOC9jG65CJsjF8uNGgCJmvlKfMSJSVQ,108406
../../Scripts/pip3.exe,sha256=DzsU73g1KQnShOC9jG65CJsjF8uNGgCJmvlKfMSJSVQ,108406
pip-24.2.dist-info/AUTHORS.txt,sha256=KDa8Pd3GDeKSogF6yFW0l9A9eMneLDOFrcIDqkL8G8s,10868
pip-24.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
pip-24.2.dist-info/LICENSE.txt,sha256=Y0MApmnUmurmWxLGxIySTFGkzfPR_whtw0VtyLyqIQQ,1093
pip-24.2.dist-info/METADATA,sha256=PhzCxQxIhsnZ871cPUe3Hew9PhhpgflLbfqU3WizZqM,3624
pip-24.2.dist-info/RECORD,,
pip-24.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip-24.2.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
pip-24.2.dist-info/entry_points.txt,sha256=eeIjuzfnfR2PrhbjnbzFU6MnSS70kZLxwaHHq6M-bD0,87
pip-24.2.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
pip/__init__.py,sha256=EQxEGXUQIu-9fNJxVEK74ufx_fTk_HpYV9lAbw-WWbs,355
pip/__main__.py,sha256=WzbhHXTbSE6gBY19mNN9m4s5o_365LOvTYSgqgbdBhE,854
pip/__pip-runner__.py,sha256=cPPWuJ6NK_k-GzfvlejLFgwzmYUROmpAR6QC3Q-vkXQ,1450
pip/__pycache__/__init__.cpython-312.pyc,,
pip/__pycache__/__main__.cpython-312.pyc,,
pip/__pycache__/__pip-runner__.cpython-312.pyc,,
pip/_internal/__init__.py,sha256=MfcoOluDZ8QMCFYal04IqOJ9q6m2V7a0aOsnI-WOxUo,513
pip/_internal/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/__pycache__/build_env.cpython-312.pyc,,
pip/_internal/__pycache__/cache.cpython-312.pyc,,
pip/_internal/__pycache__/configuration.cpython-312.pyc,,
pip/_internal/__pycache__/exceptions.cpython-312.pyc,,
pip/_internal/__pycache__/main.cpython-312.pyc,,
pip/_internal/__pycache__/pyproject.cpython-312.pyc,,
pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc,,
pip/_internal/__pycache__/wheel_builder.cpython-312.pyc,,
pip/_internal/build_env.py,sha256=QiusW8QEaj387y0hdRqVbuelHSHGYcT7WzVckbmMhR0,10420
pip/_internal/cache.py,sha256=Jb698p5PNigRtpW5o26wQNkkUv4MnQ94mc471wL63A0,10369
pip/_internal/cli/__init__.py,sha256=FkHBgpxxb-_gd6r1FjnNhfMOzAUYyXoXKJ6abijfcFU,132
pip/_internal/cli/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc,,
pip/_internal/cli/__pycache__/base_command.cpython-312.pyc,,
pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc,,
pip/_internal/cli/__pycache__/command_context.cpython-312.pyc,,
pip/_internal/cli/__pycache__/index_command.cpython-312.pyc,,
pip/_internal/cli/__pycache__/main.cpython-312.pyc,,
pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc,,
pip/_internal/cli/__pycache__/parser.cpython-312.pyc,,
pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc,,
pip/_internal/cli/__pycache__/req_command.cpython-312.pyc,,
pip/_internal/cli/__pycache__/spinners.cpython-312.pyc,,
pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc,,
pip/_internal/cli/autocompletion.py,sha256=Lli3Mr6aDNu7ZkJJFFvwD2-hFxNI6Avz8OwMyS5TVrs,6865
pip/_internal/cli/base_command.py,sha256=F8nUcSM-Y-MQljJUe724-yxmc5viFXHyM_zH70NmIh4,8289
pip/_internal/cli/cmdoptions.py,sha256=mDqBr0d0hoztbRJs-PWtcKpqNAc7khU6ZpoesZKocT8,30110
pip/_internal/cli/command_context.py,sha256=RHgIPwtObh5KhMrd3YZTkl8zbVG-6Okml7YbFX4Ehg0,774
pip/_internal/cli/index_command.py,sha256=YIJ84cfYcbDBACnB8eoDgqjYJU6GpiWP2Rh7Ij-Xyak,5633
pip/_internal/cli/main.py,sha256=BDZef-bWe9g9Jpr4OVs4dDf-845HJsKw835T7AqEnAc,2817
pip/_internal/cli/main_parser.py,sha256=laDpsuBDl6kyfywp9eMMA9s84jfH2TJJn-vmL0GG90w,4338
pip/_internal/cli/parser.py,sha256=QAkY6s8N-AD7w5D2PQm2Y8C2MIJSv7iuAeNjOMvDBUA,10811
pip/_internal/cli/progress_bars.py,sha256=0FAf7eN67KnIv_gZQhTWSnKXXUzQko1ftGXEoLe5Yec,2713
pip/_internal/cli/req_command.py,sha256=DqeFhmUMs6o6Ev8qawAcOoYNdAZsfyKS0MZI5jsJYwQ,12250
pip/_internal/cli/spinners.py,sha256=hIJ83GerdFgFCdobIA23Jggetegl_uC4Sp586nzFbPE,5118
pip/_internal/cli/status_codes.py,sha256=sEFHUaUJbqv8iArL3HAtcztWZmGOFX01hTesSytDEh0,116
pip/_internal/commands/__init__.py,sha256=5oRO9O3dM2vGuh0bFw4HOVletryrz5HHMmmPWwJrH9U,3882
pip/_internal/commands/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/commands/__pycache__/cache.cpython-312.pyc,,
pip/_internal/commands/__pycache__/check.cpython-312.pyc,,
pip/_internal/commands/__pycache__/completion.cpython-312.pyc,,
pip/_internal/commands/__pycache__/configuration.cpython-312.pyc,,
pip/_internal/commands/__pycache__/debug.cpython-312.pyc,,
pip/_internal/commands/__pycache__/download.cpython-312.pyc,,
pip/_internal/commands/__pycache__/freeze.cpython-312.pyc,,
pip/_internal/commands/__pycache__/hash.cpython-312.pyc,,
pip/_internal/commands/__pycache__/help.cpython-312.pyc,,
pip/_internal/commands/__pycache__/index.cpython-312.pyc,,
pip/_internal/commands/__pycache__/inspect.cpython-312.pyc,,
pip/_internal/commands/__pycache__/install.cpython-312.pyc,,
pip/_internal/commands/__pycache__/list.cpython-312.pyc,,
pip/_internal/commands/__pycache__/search.cpython-312.pyc,,
pip/_internal/commands/__pycache__/show.cpython-312.pyc,,
pip/_internal/commands/__pycache__/uninstall.cpython-312.pyc,,
pip/_internal/commands/__pycache__/wheel.cpython-312.pyc,,
pip/_internal/commands/cache.py,sha256=xg76_ZFEBC6zoQ3gXLRfMZJft4z2a0RwH4GEFZC6nnU,7944
pip/_internal/commands/check.py,sha256=Hr_4eiMd9cgVDgEvjtIdw915NmL7ROIWW8enkr8slPQ,2268
pip/_internal/commands/completion.py,sha256=HT4lD0bgsflHq2IDgYfiEdp7IGGtE7s6MgI3xn0VQEw,4287
pip/_internal/commands/configuration.py,sha256=n98enwp6y0b5G6fiRQjaZo43FlJKYve_daMhN-4BRNc,9766
pip/_internal/commands/debug.py,sha256=DNDRgE9YsKrbYzU0s3VKi8rHtKF4X13CJ_br_8PUXO0,6797
pip/_internal/commands/download.py,sha256=0qB0nys6ZEPsog451lDsjL5Bx7Z97t-B80oFZKhpzKM,5273
pip/_internal/commands/freeze.py,sha256=2Vt72BYTSm9rzue6d8dNzt8idxWK4Db6Hd-anq7GQ80,3203
pip/_internal/commands/hash.py,sha256=EVVOuvGtoPEdFi8SNnmdqlCQrhCxV-kJsdwtdcCnXGQ,1703
pip/_internal/commands/help.py,sha256=gcc6QDkcgHMOuAn5UxaZwAStsRBrnGSn_yxjS57JIoM,1132
pip/_internal/commands/index.py,sha256=RAXxmJwFhVb5S1BYzb5ifX3sn9Na8v2CCVYwSMP8pao,4731
pip/_internal/commands/inspect.py,sha256=PGrY9TRTRCM3y5Ml8Bdk8DEOXquWRfscr4DRo1LOTPc,3189
pip/_internal/commands/install.py,sha256=iqesiLIZc6Op9uihMQFYRhAA2DQRZUxbM4z1BwXoFls,29428
pip/_internal/commands/list.py,sha256=RgaIV4kN-eMSpgUAXc-6bjnURzl0v3cRE11xr54O9Cg,12771
pip/_internal/commands/search.py,sha256=hSGtIHg26LRe468Ly7oZ6gfd9KbTxBRZAAtJc9Um6S4,5628
pip/_internal/commands/show.py,sha256=IG9L5uo8w6UA4tI_IlmaxLCoNKPa5JNJCljj3NWs0OE,7507
pip/_internal/commands/uninstall.py,sha256=7pOR7enK76gimyxQbzxcG1OsyLXL3DvX939xmM8Fvtg,3892
pip/_internal/commands/wheel.py,sha256=eJRhr_qoNNxWAkkdJCNiQM7CXd4E1_YyQhsqJnBPGGg,6414
pip/_internal/configuration.py,sha256=XkAiBS0hpzsM-LF0Qu5hvPWO_Bs67-oQKRYFBuMbESs,14006
pip/_internal/distributions/__init__.py,sha256=Hq6kt6gXBgjNit5hTTWLAzeCNOKoB-N0pGYSqehrli8,858
pip/_internal/distributions/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/distributions/__pycache__/base.cpython-312.pyc,,
pip/_internal/distributions/__pycache__/installed.cpython-312.pyc,,
pip/_internal/distributions/__pycache__/sdist.cpython-312.pyc,,
pip/_internal/distributions/__pycache__/wheel.cpython-312.pyc,,
pip/_internal/distributions/base.py,sha256=QeB9qvKXDIjLdPBDE5fMgpfGqMMCr-govnuoQnGuiF8,1783
pip/_internal/distributions/installed.py,sha256=QinHFbWAQ8oE0pbD8MFZWkwlnfU1QYTccA1vnhrlYOU,842
pip/_internal/distributions/sdist.py,sha256=PlcP4a6-R6c98XnOM-b6Lkb3rsvh9iG4ok8shaanrzs,6751
pip/_internal/distributions/wheel.py,sha256=THBYfnv7VVt8mYhMYUtH13S1E7FDwtDyDfmUcl8ai0E,1317
pip/_internal/exceptions.py,sha256=6qcW3QgmFVlRxlZvDSLUhSzKJ7_Tedo-lyqWA6NfdAU,25371
pip/_internal/index/__init__.py,sha256=vpt-JeTZefh8a-FC22ZeBSXFVbuBcXSGiILhQZJaNpQ,30
pip/_internal/index/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/index/__pycache__/collector.cpython-312.pyc,,
pip/_internal/index/__pycache__/package_finder.cpython-312.pyc,,
pip/_internal/index/__pycache__/sources.cpython-312.pyc,,
pip/_internal/index/collector.py,sha256=RdPO0JLAlmyBWPAWYHPyRoGjz3GNAeTngCNkbGey_mE,16265
pip/_internal/index/package_finder.py,sha256=yRC4xsyudwKnNoU6IXvNoyqYo5ScT7lB6Wa-z2eh7cs,37666
pip/_internal/index/sources.py,sha256=dJegiR9f86kslaAHcv9-R5L_XBf5Rzm_FkyPteDuPxI,8688
pip/_internal/locations/__init__.py,sha256=UaAxeZ_f93FyouuFf4p7SXYF-4WstXuEvd3LbmPCAno,14925
pip/_internal/locations/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/locations/__pycache__/_distutils.cpython-312.pyc,,
pip/_internal/locations/__pycache__/_sysconfig.cpython-312.pyc,,
pip/_internal/locations/__pycache__/base.cpython-312.pyc,,
pip/_internal/locations/_distutils.py,sha256=H9ZHK_35rdDV1Qsmi4QeaBULjFT4Mbu6QuoVGkJ6QHI,6009
pip/_internal/locations/_sysconfig.py,sha256=IGzds60qsFneRogC-oeBaY7bEh3lPt_v47kMJChQXsU,7724
pip/_internal/locations/base.py,sha256=RQiPi1d4FVM2Bxk04dQhXZ2PqkeljEL2fZZ9SYqIQ78,2556
pip/_internal/main.py,sha256=r-UnUe8HLo5XFJz8inTcOOTiu_sxNhgHb6VwlGUllOI,340
pip/_internal/metadata/__init__.py,sha256=9pU3W3s-6HtjFuYhWcLTYVmSaziklPv7k2x8p7X1GmA,4339
pip/_internal/metadata/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/metadata/__pycache__/_json.cpython-312.pyc,,
pip/_internal/metadata/__pycache__/base.cpython-312.pyc,,
pip/_internal/metadata/__pycache__/pkg_resources.cpython-312.pyc,,
pip/_internal/metadata/_json.py,sha256=P0cAJrH_mtmMZvlZ16ZXm_-izA4lpr5wy08laICuiaA,2644
pip/_internal/metadata/base.py,sha256=ft0K5XNgI4ETqZnRv2-CtvgYiMOMAeGMAzxT-f6VLJA,25298
pip/_internal/metadata/importlib/__init__.py,sha256=jUUidoxnHcfITHHaAWG1G2i5fdBYklv_uJcjo2x7VYE,135
pip/_internal/metadata/importlib/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/metadata/importlib/__pycache__/_compat.cpython-312.pyc,,
pip/_internal/metadata/importlib/__pycache__/_dists.cpython-312.pyc,,
pip/_internal/metadata/importlib/__pycache__/_envs.cpython-312.pyc,,
pip/_internal/metadata/importlib/_compat.py,sha256=c6av8sP8BBjAZuFSJow1iWfygUXNM3xRTCn5nqw6B9M,2796
pip/_internal/metadata/importlib/_dists.py,sha256=anh0mLI-FYRPUhAdipd0Va3YJJc6HelCKQ0bFhY10a0,8017
pip/_internal/metadata/importlib/_envs.py,sha256=JHjNfnk9RsjrcQw8dLBqdfBglOKSepEe9aq03B4nRpU,7431
pip/_internal/metadata/pkg_resources.py,sha256=U07ETAINSGeSRBfWUG93E4tZZbaW_f7PGzEqZN0hulc,10542
pip/_internal/models/__init__.py,sha256=3DHUd_qxpPozfzouoqa9g9ts1Czr5qaHfFxbnxriepM,63
pip/_internal/models/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/models/__pycache__/candidate.cpython-312.pyc,,
pip/_internal/models/__pycache__/direct_url.cpython-312.pyc,,
pip/_internal/models/__pycache__/format_control.cpython-312.pyc,,
pip/_internal/models/__pycache__/index.cpython-312.pyc,,
pip/_internal/models/__pycache__/installation_report.cpython-312.pyc,,
pip/_internal/models/__pycache__/link.cpython-312.pyc,,
pip/_internal/models/__pycache__/scheme.cpython-312.pyc,,
pip/_internal/models/__pycache__/search_scope.cpython-312.pyc,,
pip/_internal/models/__pycache__/selection_prefs.cpython-312.pyc,,
pip/_internal/models/__pycache__/target_python.cpython-312.pyc,,
pip/_internal/models/__pycache__/wheel.cpython-312.pyc,,
pip/_internal/models/candidate.py,sha256=zzgFRuw_kWPjKpGw7LC0ZUMD2CQ2EberUIYs8izjdCA,753
pip/_internal/models/direct_url.py,sha256=uBtY2HHd3TO9cKQJWh0ThvE5FRr-MWRYChRU4IG9HZE,6578
pip/_internal/models/format_control.py,sha256=wtsQqSK9HaUiNxQEuB-C62eVimw6G4_VQFxV9-_KDBE,2486
pip/_internal/models/index.py,sha256=tYnL8oxGi4aSNWur0mG8DAP7rC6yuha_MwJO8xw0crI,1030
pip/_internal/models/installation_report.py,sha256=zRVZoaz-2vsrezj_H3hLOhMZCK9c7TbzWgC-jOalD00,2818
pip/_internal/models/link.py,sha256=jHax9O-9zlSzEwjBCDkx0OXjKXwBDwOuPwn-PsR8dCs,21034
pip/_internal/models/scheme.py,sha256=PakmHJM3e8OOWSZFtfz1Az7f1meONJnkGuQxFlt3wBE,575
pip/_internal/models/search_scope.py,sha256=67NEnsYY84784S-MM7ekQuo9KXLH-7MzFntXjapvAo0,4531
pip/_internal/models/selection_prefs.py,sha256=qaFfDs3ciqoXPg6xx45N1jPLqccLJw4N0s4P0PyHTQ8,2015
pip/_internal/models/target_python.py,sha256=2XaH2rZ5ZF-K5wcJbEMGEl7SqrTToDDNkrtQ2v_v_-Q,4271
pip/_internal/models/wheel.py,sha256=Odc1NVWL5N-i6A3vFa50BfNvCRlGvGa4som60FQM198,3601
pip/_internal/network/__init__.py,sha256=jf6Tt5nV_7zkARBrKojIXItgejvoegVJVKUbhAa5Ioc,50
pip/_internal/network/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/network/__pycache__/auth.cpython-312.pyc,,
pip/_internal/network/__pycache__/cache.cpython-312.pyc,,
pip/_internal/network/__pycache__/download.cpython-312.pyc,,
pip/_internal/network/__pycache__/lazy_wheel.cpython-312.pyc,,
pip/_internal/network/__pycache__/session.cpython-312.pyc,,
pip/_internal/network/__pycache__/utils.cpython-312.pyc,,
pip/_internal/network/__pycache__/xmlrpc.cpython-312.pyc,,
pip/_internal/network/auth.py,sha256=D4gASjUrqoDFlSt6gQ767KAAjv6PUyJU0puDlhXNVRE,20809
pip/_internal/network/cache.py,sha256=48A971qCzKNFvkb57uGEk7-0xaqPS0HWj2711QNTxkU,3935
pip/_internal/network/download.py,sha256=FLOP29dPYECBiAi7eEjvAbNkyzaKNqbyjOT2m8HPW8U,6048
pip/_internal/network/lazy_wheel.py,sha256=2PXVduYZPCPZkkQFe1J1GbfHJWeCU--FXonGyIfw9eU,7638
pip/_internal/network/session.py,sha256=XmanBKjVwPFmh1iJ58q6TDh9xabH37gREuQJ_feuZGA,18741
pip/_internal/network/utils.py,sha256=Inaxel-NxBu4PQWkjyErdnfewsFCcgHph7dzR1-FboY,4088
pip/_internal/network/xmlrpc.py,sha256=sAxzOacJ-N1NXGPvap9jC3zuYWSnnv3GXtgR2-E2APA,1838
pip/_internal/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_internal/operations/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/operations/__pycache__/check.cpython-312.pyc,,
pip/_internal/operations/__pycache__/freeze.cpython-312.pyc,,
pip/_internal/operations/__pycache__/prepare.cpython-312.pyc,,
pip/_internal/operations/build/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_internal/operations/build/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/operations/build/__pycache__/build_tracker.cpython-312.pyc,,
pip/_internal/operations/build/__pycache__/metadata.cpython-312.pyc,,
pip/_internal/operations/build/__pycache__/metadata_editable.cpython-312.pyc,,
pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-312.pyc,,
pip/_internal/operations/build/__pycache__/wheel.cpython-312.pyc,,
pip/_internal/operations/build/__pycache__/wheel_editable.cpython-312.pyc,,
pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-312.pyc,,
pip/_internal/operations/build/build_tracker.py,sha256=-ARW_TcjHCOX7D2NUOGntB4Fgc6b4aolsXkAK6BWL7w,4774
pip/_internal/operations/build/metadata.py,sha256=9S0CUD8U3QqZeXp-Zyt8HxwU90lE4QrnYDgrqZDzBnc,1422
pip/_internal/operations/build/metadata_editable.py,sha256=VLL7LvntKE8qxdhUdEJhcotFzUsOSI8NNS043xULKew,1474
pip/_internal/operations/build/metadata_legacy.py,sha256=8i6i1QZX9m_lKPStEFsHKM0MT4a-CD408JOw99daLmo,2190
pip/_internal/operations/build/wheel.py,sha256=sT12FBLAxDC6wyrDorh8kvcZ1jG5qInCRWzzP-UkJiQ,1075
pip/_internal/operations/build/wheel_editable.py,sha256=yOtoH6zpAkoKYEUtr8FhzrYnkNHQaQBjWQ2HYae1MQg,1417
pip/_internal/operations/build/wheel_legacy.py,sha256=K-6kNhmj-1xDF45ny1yheMerF0ui4EoQCLzEoHh6-tc,3045
pip/_internal/operations/check.py,sha256=L24vRL8VWbyywdoeAhM89WCd8zLTnjIbULlKelUgIec,5912
pip/_internal/operations/freeze.py,sha256=V59yEyCSz_YhZuhH09-6aV_zvYBMrS_IxFFNqn2QzlA,9864
pip/_internal/operations/install/__init__.py,sha256=mX7hyD2GNBO2mFGokDQ30r_GXv7Y_PLdtxcUv144e-s,51
pip/_internal/operations/install/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/operations/install/__pycache__/editable_legacy.cpython-312.pyc,,
pip/_internal/operations/install/__pycache__/wheel.cpython-312.pyc,,
pip/_internal/operations/install/editable_legacy.py,sha256=PoEsNEPGbIZ2yQphPsmYTKLOCMs4gv5OcCdzW124NcA,1283
pip/_internal/operations/install/wheel.py,sha256=X5Iz9yUg5LlK5VNQ9g2ikc6dcRu8EPi_SUi5iuEDRgo,27615
pip/_internal/operations/prepare.py,sha256=joWJwPkuqGscQgVNImLK71e9hRapwKvRCM8HclysmvU,28118
pip/_internal/pyproject.py,sha256=rw4fwlptDp1hZgYoplwbAGwWA32sWQkp7ysf8Ju6iXc,7287
pip/_internal/req/__init__.py,sha256=HxBFtZy_BbCclLgr26waMtpzYdO5T3vxePvpGAXSt5s,2653
pip/_internal/req/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/req/__pycache__/constructors.cpython-312.pyc,,
pip/_internal/req/__pycache__/req_file.cpython-312.pyc,,
pip/_internal/req/__pycache__/req_install.cpython-312.pyc,,
pip/_internal/req/__pycache__/req_set.cpython-312.pyc,,
pip/_internal/req/__pycache__/req_uninstall.cpython-312.pyc,,
pip/_internal/req/constructors.py,sha256=qXNZtUqhsXpHxkRaIQhp20_Kz6I88MDKM8SQR9fckIc,18424
pip/_internal/req/req_file.py,sha256=hnC9Oz-trqGQpuDnCVWqwpJkAvtbCsk7-5k0EWVQhlQ,17687
pip/_internal/req/req_install.py,sha256=yhT98NGDoAEk03jznTJnYCznzhiMEEA2ocgsUG_dcNU,35788
pip/_internal/req/req_set.py,sha256=j3esG0s6SzoVReX9rWn4rpYNtyET_fwxbwJPRimvRxo,2858
pip/_internal/req/req_uninstall.py,sha256=qzDIxJo-OETWqGais7tSMCDcWbATYABT-Tid3ityF0s,23853
pip/_internal/resolution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_internal/resolution/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/resolution/__pycache__/base.cpython-312.pyc,,
pip/_internal/resolution/base.py,sha256=qlmh325SBVfvG6Me9gc5Nsh5sdwHBwzHBq6aEXtKsLA,583
pip/_internal/resolution/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_internal/resolution/legacy/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/resolution/legacy/__pycache__/resolver.cpython-312.pyc,,
pip/_internal/resolution/legacy/resolver.py,sha256=3HZiJBRd1FTN6jQpI4qRO8-TbLYeIbUTS6PFvXnXs2w,24068
pip/_internal/resolution/resolvelib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/resolution/resolvelib/__pycache__/base.cpython-312.pyc,,
pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-312.pyc,,
pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-312.pyc,,
pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-312.pyc,,
pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-312.pyc,,
pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-312.pyc,,
pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-312.pyc,,
pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-312.pyc,,
pip/_internal/resolution/resolvelib/base.py,sha256=DCf669FsqyQY5uqXeePDHQY1e4QO-pBzWH8O0s9-K94,5023
pip/_internal/resolution/resolvelib/candidates.py,sha256=07CBc85ya3J19XqdvUsLQwtVIxiTYq9km9hbTRh0jb0,19823
pip/_internal/resolution/resolvelib/factory.py,sha256=mTTq_nG1F9Eq3VnlYPH6Ap-mydcS-mxC5y5L-CLLp80,32459
pip/_internal/resolution/resolvelib/found_candidates.py,sha256=9hrTyQqFvl9I7Tji79F1AxHv39Qh1rkJ_7deSHSMfQc,6383
pip/_internal/resolution/resolvelib/provider.py,sha256=bcsFnYvlmtB80cwVdW1fIwgol8ZNr1f1VHyRTkz47SM,9935
pip/_internal/resolution/resolvelib/reporter.py,sha256=00JtoXEkTlw0-rl_sl54d71avwOsJHt9GGHcrj5Sza0,3168
pip/_internal/resolution/resolvelib/requirements.py,sha256=7JG4Z72e5Yk4vU0S5ulGvbqTy4FMQGYhY5zQhX9zTtY,8065
pip/_internal/resolution/resolvelib/resolver.py,sha256=nLJOsVMEVi2gQUVJoUFKMZAeu2f7GRMjGMvNSWyz0Bc,12592
pip/_internal/self_outdated_check.py,sha256=pkjQixuWyQ1vrVxZAaYD6SSHgXuFUnHZybXEWTkh0S0,8145
pip/_internal/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_internal/utils/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/utils/__pycache__/_jaraco_text.cpython-312.pyc,,
pip/_internal/utils/__pycache__/_log.cpython-312.pyc,,
pip/_internal/utils/__pycache__/appdirs.cpython-312.pyc,,
pip/_internal/utils/__pycache__/compat.cpython-312.pyc,,
pip/_internal/utils/__pycache__/compatibility_tags.cpython-312.pyc,,
pip/_internal/utils/__pycache__/datetime.cpython-312.pyc,,
pip/_internal/utils/__pycache__/deprecation.cpython-312.pyc,,
pip/_internal/utils/__pycache__/direct_url_helpers.cpython-312.pyc,,
pip/_internal/utils/__pycache__/egg_link.cpython-312.pyc,,
pip/_internal/utils/__pycache__/encoding.cpython-312.pyc,,
pip/_internal/utils/__pycache__/entrypoints.cpython-312.pyc,,
pip/_internal/utils/__pycache__/filesystem.cpython-312.pyc,,
pip/_internal/utils/__pycache__/filetypes.cpython-312.pyc,,
pip/_internal/utils/__pycache__/glibc.cpython-312.pyc,,
pip/_internal/utils/__pycache__/hashes.cpython-312.pyc,,
pip/_internal/utils/__pycache__/logging.cpython-312.pyc,,
pip/_internal/utils/__pycache__/misc.cpython-312.pyc,,
pip/_internal/utils/__pycache__/packaging.cpython-312.pyc,,
pip/_internal/utils/__pycache__/retry.cpython-312.pyc,,
pip/_internal/utils/__pycache__/setuptools_build.cpython-312.pyc,,
pip/_internal/utils/__pycache__/subprocess.cpython-312.pyc,,
pip/_internal/utils/__pycache__/temp_dir.cpython-312.pyc,,
pip/_internal/utils/__pycache__/unpacking.cpython-312.pyc,,
pip/_internal/utils/__pycache__/urls.cpython-312.pyc,,
pip/_internal/utils/__pycache__/virtualenv.cpython-312.pyc,,
pip/_internal/utils/__pycache__/wheel.cpython-312.pyc,,
pip/_internal/utils/_jaraco_text.py,sha256=M15uUPIh5NpP1tdUGBxRau6q1ZAEtI8-XyLEETscFfE,3350
pip/_internal/utils/_log.py,sha256=-jHLOE_THaZz5BFcCnoSL9EYAtJ0nXem49s9of4jvKw,1015
pip/_internal/utils/appdirs.py,sha256=swgcTKOm3daLeXTW6v5BUS2Ti2RvEnGRQYH_yDXklAo,1665
pip/_internal/utils/compat.py,sha256=ckkFveBiYQjRWjkNsajt_oWPS57tJvE8XxoC4OIYgCY,2399
pip/_internal/utils/compatibility_tags.py,sha256=ydin8QG8BHqYRsPY4OL6cmb44CbqXl1T0xxS97VhHkk,5377
pip/_internal/utils/datetime.py,sha256=m21Y3wAtQc-ji6Veb6k_M5g6A0ZyFI4egchTdnwh-pQ,242
pip/_internal/utils/deprecation.py,sha256=k7Qg_UBAaaTdyq82YVARA6D7RmcGTXGv7fnfcgigj4Q,3707
pip/_internal/utils/direct_url_helpers.py,sha256=r2MRtkVDACv9AGqYODBUC9CjwgtsUU1s68hmgfCJMtA,3196
pip/_internal/utils/egg_link.py,sha256=0FePZoUYKv4RGQ2t6x7w5Z427wbA_Uo3WZnAkrgsuqo,2463
pip/_internal/utils/encoding.py,sha256=qqsXDtiwMIjXMEiIVSaOjwH5YmirCaK-dIzb6-XJsL0,1169
pip/_internal/utils/entrypoints.py,sha256=YlhLTRl2oHBAuqhc-zmL7USS67TPWVHImjeAQHreZTQ,3064
pip/_internal/utils/filesystem.py,sha256=ajvA-q4ocliW9kPp8Yquh-4vssXbu-UKbo5FV9V4X64,4950
pip/_internal/utils/filetypes.py,sha256=i8XAQ0eFCog26Fw9yV0Yb1ygAqKYB1w9Cz9n0fj8gZU,716
pip/_internal/utils/glibc.py,sha256=vUkWq_1pJuzcYNcGKLlQmABoUiisK8noYY1yc8Wq4w4,3734
pip/_internal/utils/hashes.py,sha256=XGGLL0AG8-RhWnyz87xF6MFZ--BKadHU35D47eApCKI,4972
pip/_internal/utils/logging.py,sha256=7BFKB1uFjdxD5crM-GtwA5T2qjbQ2LPD-gJDuJeDNTg,11606
pip/_internal/utils/misc.py,sha256=HR_V97vNTHNzwq01JrnTZtsLLkWAOJ9_EeYfHJZSgDY,23745
pip/_internal/utils/packaging.py,sha256=iI3LH43lVNR4hWBOqF6lFsZq4aycb2j0UcHlmDmcqUg,2109
pip/_internal/utils/retry.py,sha256=mhFbykXjhTnZfgzeuy-vl9c8nECnYn_CMtwNJX2tYzQ,1392
pip/_internal/utils/setuptools_build.py,sha256=ouXpud-jeS8xPyTPsXJ-m34NPvK5os45otAzdSV_IJE,4435
pip/_internal/utils/subprocess.py,sha256=EsvqSRiSMHF98T8Txmu6NLU3U--MpTTQjtNgKP0P--M,8988
pip/_internal/utils/temp_dir.py,sha256=5qOXe8M4JeY6vaFQM867d5zkp1bSwMZ-KT5jymmP0Zg,9310
pip/_internal/utils/unpacking.py,sha256=eyDkSsk4nW8ZfiSjNzJduCznpHyaGHVv3ak_LMGsiEM,11951
pip/_internal/utils/urls.py,sha256=qceSOZb5lbNDrHNsv7_S4L4Ytszja5NwPKUMnZHbYnM,1599
pip/_internal/utils/virtualenv.py,sha256=S6f7csYorRpiD6cvn3jISZYc3I8PJC43H5iMFpRAEDU,3456
pip/_internal/utils/wheel.py,sha256=b442jkydFHjXzDy6cMR7MpzWBJ1Q82hR5F33cmcHV3g,4494
pip/_internal/vcs/__init__.py,sha256=UAqvzpbi0VbZo3Ub6skEeZAw-ooIZR-zX_WpCbxyCoU,596
pip/_internal/vcs/__pycache__/__init__.cpython-312.pyc,,
pip/_internal/vcs/__pycache__/bazaar.cpython-312.pyc,,
pip/_internal/vcs/__pycache__/git.cpython-312.pyc,,
pip/_internal/vcs/__pycache__/mercurial.cpython-312.pyc,,
pip/_internal/vcs/__pycache__/subversion.cpython-312.pyc,,
pip/_internal/vcs/__pycache__/versioncontrol.cpython-312.pyc,,
pip/_internal/vcs/bazaar.py,sha256=EKStcQaKpNu0NK4p5Q10Oc4xb3DUxFw024XrJy40bFQ,3528
pip/_internal/vcs/git.py,sha256=3tpc9LQA_J4IVW5r5NvWaaSeDzcmJOrSFZN0J8vIKfU,18177
pip/_internal/vcs/mercurial.py,sha256=oULOhzJ2Uie-06d1omkL-_Gc6meGaUkyogvqG9ZCyPs,5249
pip/_internal/vcs/subversion.py,sha256=ddTugHBqHzV3ebKlU5QXHPN4gUqlyXbOx8q8NgXKvs8,11735
pip/_internal/vcs/versioncontrol.py,sha256=cvf_-hnTAjQLXJ3d17FMNhQfcO1AcKWUF10tfrYyP-c,22440
pip/_internal/wheel_builder.py,sha256=DL3A8LKeRj_ACp11WS5wSgASgPFqeyAeXJKdXfmaWXU,11799
pip/_vendor/__init__.py,sha256=JYuAXvClhInxIrA2FTp5p-uuWVL7WV6-vEpTs46-Qh4,4873
pip/_vendor/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/__pycache__/typing_extensions.cpython-312.pyc,,
pip/_vendor/cachecontrol/__init__.py,sha256=GiYoagwPEiJ_xR_lbwWGaoCiPtF_rz4isjfjdDAgHU4,676
pip/_vendor/cachecontrol/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-312.pyc,,
pip/_vendor/cachecontrol/__pycache__/adapter.cpython-312.pyc,,
pip/_vendor/cachecontrol/__pycache__/cache.cpython-312.pyc,,
pip/_vendor/cachecontrol/__pycache__/controller.cpython-312.pyc,,
pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-312.pyc,,
pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-312.pyc,,
pip/_vendor/cachecontrol/__pycache__/serialize.cpython-312.pyc,,
pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-312.pyc,,
pip/_vendor/cachecontrol/_cmd.py,sha256=iist2EpzJvDVIhMAxXq8iFnTBsiZAd6iplxfmNboNyk,1737
pip/_vendor/cachecontrol/adapter.py,sha256=fByO_Pd_EOemjWbuocvBWdN85xT0q_TBm2lxS6vD4fk,6355
pip/_vendor/cachecontrol/cache.py,sha256=OTQj72tUf8C1uEgczdl3Gc8vkldSzsTITKtDGKMx4z8,1952
pip/_vendor/cachecontrol/caches/__init__.py,sha256=dtrrroK5BnADR1GWjCZ19aZ0tFsMfvFBtLQQU1sp_ag,303
pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-312.pyc,,
pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-312.pyc,,
pip/_vendor/cachecontrol/caches/file_cache.py,sha256=9AlmmTJc6cslb6k5z_6q0sGPHVrMj8zv-uWy-simmfE,5406
pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=9rmqwtYu_ljVkW6_oLqbC7EaX_a8YT_yLuna-eS0dgo,1386
pip/_vendor/cachecontrol/controller.py,sha256=o-ejGJlBmpKK8QQLyTPJj0t7siU8XVHXuV8MCybCxQ8,18575
pip/_vendor/cachecontrol/filewrapper.py,sha256=STttGmIPBvZzt2b51dUOwoWX5crcMCpKZOisM3f5BNc,4292
pip/_vendor/cachecontrol/heuristics.py,sha256=IYe4QmHERWsMvtxNrp920WeaIsaTTyqLB14DSheSbtY,4834
pip/_vendor/cachecontrol/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_vendor/cachecontrol/serialize.py,sha256=HQd2IllQ05HzPkVLMXTF2uX5mjEQjDBkxCqUJUODpZk,5163
pip/_vendor/cachecontrol/wrapper.py,sha256=hsGc7g8QGQTT-4f8tgz3AM5qwScg6FO0BSdLSRdEvpU,1417
pip/_vendor/certifi/__init__.py,sha256=LHXz7E80YJYBzCBv6ZyidQ5-ciYSkSebpY2E5OM0l7o,94
pip/_vendor/certifi/__main__.py,sha256=1k3Cr95vCxxGRGDljrW3wMdpZdL3Nhf0u1n-k2qdsCY,255
pip/_vendor/certifi/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/certifi/__pycache__/__main__.cpython-312.pyc,,
pip/_vendor/certifi/__pycache__/core.cpython-312.pyc,,
pip/_vendor/certifi/cacert.pem,sha256=SIupYGAr8HzGP073rsEIaS_sQYIPwzKKjj894DgUmu4,291528
pip/_vendor/certifi/core.py,sha256=2SRT5rIcQChFDbe37BQa-kULxAgJ8qN6l1jfqTp4HIs,4486
pip/_vendor/certifi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_vendor/distlib/__init__.py,sha256=hJKF7FHoqbmGckncDuEINWo_OYkDNiHODtYXSMcvjcc,625
pip/_vendor/distlib/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/distlib/__pycache__/compat.cpython-312.pyc,,
pip/_vendor/distlib/__pycache__/database.cpython-312.pyc,,
pip/_vendor/distlib/__pycache__/index.cpython-312.pyc,,
pip/_vendor/distlib/__pycache__/locators.cpython-312.pyc,,
pip/_vendor/distlib/__pycache__/manifest.cpython-312.pyc,,
pip/_vendor/distlib/__pycache__/markers.cpython-312.pyc,,
pip/_vendor/distlib/__pycache__/metadata.cpython-312.pyc,,
pip/_vendor/distlib/__pycache__/resources.cpython-312.pyc,,
pip/_vendor/distlib/__pycache__/scripts.cpython-312.pyc,,
pip/_vendor/distlib/__pycache__/util.cpython-312.pyc,,
pip/_vendor/distlib/__pycache__/version.cpython-312.pyc,,
pip/_vendor/distlib/__pycache__/wheel.cpython-312.pyc,,
pip/_vendor/distlib/compat.py,sha256=Un-uIBvy02w-D267OG4VEhuddqWgKj9nNkxVltAb75w,41487
pip/_vendor/distlib/database.py,sha256=0V9Qvs0Vrxa2F_-hLWitIyVyRifJ0pCxyOI-kEOBwsA,51965
pip/_vendor/distlib/index.py,sha256=lTbw268rRhj8dw1sib3VZ_0EhSGgoJO3FKJzSFMOaeA,20797
pip/_vendor/distlib/locators.py,sha256=o1r_M86_bRLafSpetmyfX8KRtFu-_Q58abvQrnOSnbA,51767
pip/_vendor/distlib/manifest.py,sha256=3qfmAmVwxRqU1o23AlfXrQGZzh6g_GGzTAP_Hb9C5zQ,14168
pip/_vendor/distlib/markers.py,sha256=n3DfOh1yvZ_8EW7atMyoYeZFXjYla0Nz0itQlojCd0A,5268
pip/_vendor/distlib/metadata.py,sha256=pB9WZ9mBfmQxc9OVIldLS5CjOoQRvKAvUwwQyKwKQtQ,39693
pip/_vendor/distlib/resources.py,sha256=LwbPksc0A1JMbi6XnuPdMBUn83X7BPuFNWqPGEKI698,10820
pip/_vendor/distlib/scripts.py,sha256=8_gP9J7_tlNRicnWmPX4ZiDlP5wTwJKDeeg-8_qXUZU,18780
pip/_vendor/distlib/t32.exe,sha256=a0GV5kCoWsMutvliiCKmIgV98eRZ33wXoS-XrqvJQVs,97792
pip/_vendor/distlib/t64-arm.exe,sha256=68TAa32V504xVBnufojh0PcenpR3U4wAqTqf-MZqbPw,182784
pip/_vendor/distlib/t64.exe,sha256=gaYY8hy4fbkHYTTnA4i26ct8IQZzkBG2pRdy0iyuBrc,108032
pip/_vendor/distlib/util.py,sha256=XSznxEi_i3T20UJuaVc0qXHz5ksGUCW1khYlBprN_QE,67530
pip/_vendor/distlib/version.py,sha256=9pXkduchve_aN7JG6iL9VTYV_kqNSGoc2Dwl8JuySnQ,23747
pip/_vendor/distlib/w32.exe,sha256=R4csx3-OGM9kL4aPIzQKRo5TfmRSHZo6QWyLhDhNBks,91648
pip/_vendor/distlib/w64-arm.exe,sha256=xdyYhKj0WDcVUOCb05blQYvzdYIKMbmJn2SZvzkcey4,168448
pip/_vendor/distlib/w64.exe,sha256=ejGf-rojoBfXseGLpya6bFTFPWRG21X5KvU8J5iU-K0,101888
pip/_vendor/distlib/wheel.py,sha256=FVQCve8u-L0QYk5-YTZc7s4WmNQdvjRWTK08KXzZVX4,43958
pip/_vendor/distro/__init__.py,sha256=2fHjF-SfgPvjyNZ1iHh_wjqWdR_Yo5ODHwZC0jLBPhc,981
pip/_vendor/distro/__main__.py,sha256=bu9d3TifoKciZFcqRBuygV3GSuThnVD_m2IK4cz96Vs,64
pip/_vendor/distro/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/distro/__pycache__/__main__.cpython-312.pyc,,
pip/_vendor/distro/__pycache__/distro.cpython-312.pyc,,
pip/_vendor/distro/distro.py,sha256=XqbefacAhDT4zr_trnbA15eY8vdK4GTghgmvUGrEM_4,49430
pip/_vendor/distro/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_vendor/idna/__init__.py,sha256=KJQN1eQBr8iIK5SKrJ47lXvxG0BJ7Lm38W4zT0v_8lk,849
pip/_vendor/idna/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/idna/__pycache__/codec.cpython-312.pyc,,
pip/_vendor/idna/__pycache__/compat.cpython-312.pyc,,
pip/_vendor/idna/__pycache__/core.cpython-312.pyc,,
pip/_vendor/idna/__pycache__/idnadata.cpython-312.pyc,,
pip/_vendor/idna/__pycache__/intranges.cpython-312.pyc,,
pip/_vendor/idna/__pycache__/package_data.cpython-312.pyc,,
pip/_vendor/idna/__pycache__/uts46data.cpython-312.pyc,,
pip/_vendor/idna/codec.py,sha256=PS6m-XmdST7Wj7J7ulRMakPDt5EBJyYrT3CPtjh-7t4,3426
pip/_vendor/idna/compat.py,sha256=0_sOEUMT4CVw9doD3vyRhX80X19PwqFoUBs7gWsFME4,321
pip/_vendor/idna/core.py,sha256=lyhpoe2vulEaB_65xhXmoKgO-xUqFDvcwxu5hpNNO4E,12663
pip/_vendor/idna/idnadata.py,sha256=dqRwytzkjIHMBa2R1lYvHDwACenZPt8eGVu1Y8UBE-E,78320
pip/_vendor/idna/intranges.py,sha256=YBr4fRYuWH7kTKS2tXlFjM24ZF1Pdvcir-aywniInqg,1881
pip/_vendor/idna/package_data.py,sha256=Tkt0KnIeyIlnHddOaz9WSkkislNgokJAuE-p5GorMqo,21
pip/_vendor/idna/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_vendor/idna/uts46data.py,sha256=1KuksWqLuccPXm2uyRVkhfiFLNIhM_H2m4azCcnOqEU,206503
pip/_vendor/msgpack/__init__.py,sha256=gsMP7JTECZNUSjvOyIbdhNOkpB9Z8BcGwabVGY2UcdQ,1077
pip/_vendor/msgpack/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/msgpack/__pycache__/exceptions.cpython-312.pyc,,
pip/_vendor/msgpack/__pycache__/ext.cpython-312.pyc,,
pip/_vendor/msgpack/__pycache__/fallback.cpython-312.pyc,,
pip/_vendor/msgpack/exceptions.py,sha256=dCTWei8dpkrMsQDcjQk74ATl9HsIBH0ybt8zOPNqMYc,1081
pip/_vendor/msgpack/ext.py,sha256=fKp00BqDLjUtZnPd70Llr138zk8JsCuSpJkkZ5S4dt8,5629
pip/_vendor/msgpack/fallback.py,sha256=wdUWJkWX2gzfRW9BBCTOuIE1Wvrf5PtBtR8ZtY7G_EE,33175
pip/_vendor/packaging/__init__.py,sha256=dtw2bNmWCQ9WnMoK3bk_elL1svSlikXtLpZhCFIB9SE,496
pip/_vendor/packaging/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/packaging/__pycache__/_elffile.cpython-312.pyc,,
pip/_vendor/packaging/__pycache__/_manylinux.cpython-312.pyc,,
pip/_vendor/packaging/__pycache__/_musllinux.cpython-312.pyc,,
pip/_vendor/packaging/__pycache__/_parser.cpython-312.pyc,,
pip/_vendor/packaging/__pycache__/_structures.cpython-312.pyc,,
pip/_vendor/packaging/__pycache__/_tokenizer.cpython-312.pyc,,
pip/_vendor/packaging/__pycache__/markers.cpython-312.pyc,,
pip/_vendor/packaging/__pycache__/metadata.cpython-312.pyc,,
pip/_vendor/packaging/__pycache__/requirements.cpython-312.pyc,,
pip/_vendor/packaging/__pycache__/specifiers.cpython-312.pyc,,
pip/_vendor/packaging/__pycache__/tags.cpython-312.pyc,,
pip/_vendor/packaging/__pycache__/utils.cpython-312.pyc,,
pip/_vendor/packaging/__pycache__/version.cpython-312.pyc,,
pip/_vendor/packaging/_elffile.py,sha256=_LcJW4YNKywYsl4169B2ukKRqwxjxst_8H0FRVQKlz8,3282
pip/_vendor/packaging/_manylinux.py,sha256=Xo4V0PZz8sbuVCbTni0t1CR0AHeir_7ib4lTmV8scD4,9586
pip/_vendor/packaging/_musllinux.py,sha256=p9ZqNYiOItGee8KcZFeHF_YcdhVwGHdK6r-8lgixvGQ,2694
pip/_vendor/packaging/_parser.py,sha256=s_TvTvDNK0NrM2QB3VKThdWFM4Nc0P6JnkObkl3MjpM,10236
pip/_vendor/packaging/_structures.py,sha256=q3eVNmbWJGG_S0Dit_S3Ao8qQqz_5PYTXFAKBZe5yr4,1431
pip/_vendor/packaging/_tokenizer.py,sha256=J6v5H7Jzvb-g81xp_2QACKwO7LxHQA6ikryMU7zXwN8,5273
pip/_vendor/packaging/markers.py,sha256=dWKSqn5Sp-jDmOG-W3GfLHKjwhf1IsznbT71VlBoB5M,10671
pip/_vendor/packaging/metadata.py,sha256=KINuSkJ12u-SyoKNTy_pHNGAfMUtxNvZ53qA1zAKcKI,32349
pip/_vendor/packaging/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_vendor/packaging/requirements.py,sha256=gYyRSAdbrIyKDY66ugIDUQjRMvxkH2ALioTmX3tnL6o,2947
pip/_vendor/packaging/specifiers.py,sha256=HfGgfNJRvrzC759gnnoojHyiWs_DYmcw5PEh5jHH-YE,39738
pip/_vendor/packaging/tags.py,sha256=y8EbheOu9WS7s-MebaXMcHMF-jzsA_C1Lz5XRTiSy4w,18883
pip/_vendor/packaging/utils.py,sha256=NAdYUwnlAOpkat_RthavX8a07YuVxgGL_vwrx73GSDM,5287
pip/_vendor/packaging/version.py,sha256=wE4sSVlF-d1H6HFC1vszEe35CwTig_fh4HHIFg95hFE,16210
pip/_vendor/pkg_resources/__init__.py,sha256=jrhDRbOubP74QuPXxd7U7Po42PH2l-LZ2XfcO7llpZ4,124463
pip/_vendor/pkg_resources/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/platformdirs/__init__.py,sha256=FTA6LGNm40GwNZt3gG3uLAacWvf2E_2HTmH0rAALGR8,22285
pip/_vendor/platformdirs/__main__.py,sha256=jBJ8zb7Mpx5ebcqF83xrpO94MaeCpNGHVf9cvDN2JLg,1505
pip/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/platformdirs/__pycache__/__main__.cpython-312.pyc,,
pip/_vendor/platformdirs/__pycache__/android.cpython-312.pyc,,
pip/_vendor/platformdirs/__pycache__/api.cpython-312.pyc,,
pip/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc,,
pip/_vendor/platformdirs/__pycache__/unix.cpython-312.pyc,,
pip/_vendor/platformdirs/__pycache__/version.cpython-312.pyc,,
pip/_vendor/platformdirs/__pycache__/windows.cpython-312.pyc,,
pip/_vendor/platformdirs/android.py,sha256=xZXY9Jd46WOsxT2U6-5HsNtDZ-IQqxcEUrBLl3hYk4o,9016
pip/_vendor/platformdirs/api.py,sha256=QBYdUac2eC521ek_y53uD1Dcq-lJX8IgSRVd4InC6uc,8996
pip/_vendor/platformdirs/macos.py,sha256=wftsbsvq6nZ0WORXSiCrZNkRHz_WKuktl0a6mC7MFkI,5580
pip/_vendor/platformdirs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_vendor/platformdirs/unix.py,sha256=Cci9Wqt35dAMsg6HT9nRGHSBW5obb0pR3AE1JJnsCXg,10643
pip/_vendor/platformdirs/version.py,sha256=r7F76tZRjgQKzrpx_I0_ZMQOMU-PS7eGnHD7zEK3KB0,411
pip/_vendor/platformdirs/windows.py,sha256=IFpiohUBwxPtCzlyKwNtxyW4Jk8haa6W8o59mfrDXVo,10125
pip/_vendor/pygments/__init__.py,sha256=7N1oiaWulw_nCsTY4EEixYLz15pWY5u4uPAFFi-ielU,2983
pip/_vendor/pygments/__main__.py,sha256=isIhBxLg65nLlXukG4VkMuPfNdd7gFzTZ_R_z3Q8diY,353
pip/_vendor/pygments/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/pygments/__pycache__/__main__.cpython-312.pyc,,
pip/_vendor/pygments/__pycache__/cmdline.cpython-312.pyc,,
pip/_vendor/pygments/__pycache__/console.cpython-312.pyc,,
pip/_vendor/pygments/__pycache__/filter.cpython-312.pyc,,
pip/_vendor/pygments/__pycache__/formatter.cpython-312.pyc,,
pip/_vendor/pygments/__pycache__/lexer.cpython-312.pyc,,
pip/_vendor/pygments/__pycache__/modeline.cpython-312.pyc,,
pip/_vendor/pygments/__pycache__/plugin.cpython-312.pyc,,
pip/_vendor/pygments/__pycache__/regexopt.cpython-312.pyc,,
pip/_vendor/pygments/__pycache__/scanner.cpython-312.pyc,,
pip/_vendor/pygments/__pycache__/sphinxext.cpython-312.pyc,,
pip/_vendor/pygments/__pycache__/style.cpython-312.pyc,,
pip/_vendor/pygments/__pycache__/token.cpython-312.pyc,,
pip/_vendor/pygments/__pycache__/unistring.cpython-312.pyc,,
pip/_vendor/pygments/__pycache__/util.cpython-312.pyc,,
pip/_vendor/pygments/cmdline.py,sha256=LIVzmAunlk9sRJJp54O4KRy9GDIN4Wu13v9p9QzfGPM,23656
pip/_vendor/pygments/console.py,sha256=yhP9UsLAVmWKVQf2446JJewkA7AiXeeTf4Ieg3Oi2fU,1718
pip/_vendor/pygments/filter.py,sha256=_ADNPCskD8_GmodHi6_LoVgPU3Zh336aBCT5cOeTMs0,1910
pip/_vendor/pygments/filters/__init__.py,sha256=RdedK2KWKXlKwR7cvkfr3NUj9YiZQgMgilRMFUg2jPA,40392
pip/_vendor/pygments/filters/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/pygments/formatter.py,sha256=jDWBTndlBH2Z5IYZFVDnP0qn1CaTQjTWt7iAGtCnJEg,4390
pip/_vendor/pygments/formatters/__init__.py,sha256=8No-NUs8rBTSSBJIv4hSEQt2M0cFB4hwAT0snVc2QGE,5385
pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-312.pyc,,
pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-312.pyc,,
pip/_vendor/pygments/formatters/__pycache__/groff.cpython-312.pyc,,
pip/_vendor/pygments/formatters/__pycache__/html.cpython-312.pyc,,
pip/_vendor/pygments/formatters/__pycache__/img.cpython-312.pyc,,
pip/_vendor/pygments/formatters/__pycache__/irc.cpython-312.pyc,,
pip/_vendor/pygments/formatters/__pycache__/latex.cpython-312.pyc,,
pip/_vendor/pygments/formatters/__pycache__/other.cpython-312.pyc,,
pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-312.pyc,,
pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-312.pyc,,
pip/_vendor/pygments/formatters/__pycache__/svg.cpython-312.pyc,,
pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-312.pyc,,
pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-312.pyc,,
pip/_vendor/pygments/formatters/_mapping.py,sha256=1Cw37FuQlNacnxRKmtlPX4nyLoX9_ttko5ZwscNUZZ4,4176
pip/_vendor/pygments/formatters/bbcode.py,sha256=3JQLI45tcrQ_kRUMjuab6C7Hb0XUsbVWqqbSn9cMjkI,3320
pip/_vendor/pygments/formatters/groff.py,sha256=M39k0PaSSZRnxWjqBSVPkF0mu1-Vr7bm6RsFvs-CNN4,5106
pip/_vendor/pygments/formatters/html.py,sha256=SE2jc3YCqbMS3rZW9EAmDlAUhdVxJ52gA4dileEvCGU,35669
pip/_vendor/pygments/formatters/img.py,sha256=MwA4xWPLOwh6j7Yc6oHzjuqSPt0M1fh5r-5BTIIUfsU,23287
pip/_vendor/pygments/formatters/irc.py,sha256=dp1Z0l_ObJ5NFh9MhqLGg5ptG5hgJqedT2Vkutt9v0M,4981
pip/_vendor/pygments/formatters/latex.py,sha256=XMmhOCqUKDBQtG5mGJNAFYxApqaC5puo5cMmPfK3944,19306
pip/_vendor/pygments/formatters/other.py,sha256=56PMJOliin-rAUdnRM0i1wsV1GdUPd_dvQq0_UPfF9c,5034
pip/_vendor/pygments/formatters/pangomarkup.py,sha256=y16U00aVYYEFpeCfGXlYBSMacG425CbfoG8oKbKegIg,2218
pip/_vendor/pygments/formatters/rtf.py,sha256=ZT90dmcKyJboIB0mArhL7IhE467GXRN0G7QAUgG03To,11957
pip/_vendor/pygments/formatters/svg.py,sha256=KKsiophPupHuxm0So-MsbQEWOT54IAiSF7hZPmxtKXE,7174
pip/_vendor/pygments/formatters/terminal.py,sha256=AojNG4MlKq2L6IsC_VnXHu4AbHCBn9Otog6u45XvxeI,4674
pip/_vendor/pygments/formatters/terminal256.py,sha256=kGkNUVo3FpwjytIDS0if79EuUoroAprcWt3igrcIqT0,11753
pip/_vendor/pygments/lexer.py,sha256=TYHDt___gNW4axTl2zvPZff-VQi8fPaIh5OKRcVSjUM,35349
pip/_vendor/pygments/lexers/__init__.py,sha256=pIlxyQJuu_syh9lE080cq8ceVbEVcKp0osAFU5fawJU,12115
pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-312.pyc,,
pip/_vendor/pygments/lexers/__pycache__/python.cpython-312.pyc,,
pip/_vendor/pygments/lexers/_mapping.py,sha256=61-h3zr103m01OS5BUq_AfUiL9YI06Ves9ipQ7k4vr4,76097
pip/_vendor/pygments/lexers/python.py,sha256=2J_YJrPTr_A6fJY_qKiKv0GpgPwHMrlMSeo59qN3fe4,53687
pip/_vendor/pygments/modeline.py,sha256=gtRYZBS-CKOCDXHhGZqApboHBaZwGH8gznN3O6nuxj4,1005
pip/_vendor/pygments/plugin.py,sha256=ioeJ3QeoJ-UQhZpY9JL7vbxsTVuwwM7BCu-Jb8nN0AU,1891
pip/_vendor/pygments/regexopt.py,sha256=Hky4EB13rIXEHQUNkwmCrYqtIlnXDehNR3MztafZ43w,3072
pip/_vendor/pygments/scanner.py,sha256=NDy3ofK_fHRFK4hIDvxpamG871aewqcsIb6sgTi7Fhk,3092
pip/_vendor/pygments/sphinxext.py,sha256=iOptJBcqOGPwMEJ2p70PvwpZPIGdvdZ8dxvq6kzxDgA,7981
pip/_vendor/pygments/style.py,sha256=rSCZWFpg1_DwFMXDU0nEVmAcBHpuQGf9RxvOPPQvKLQ,6420
pip/_vendor/pygments/styles/__init__.py,sha256=qUk6_1z5KmT8EdJFZYgESmG6P_HJF_2vVrDD7HSCGYY,2042
pip/_vendor/pygments/styles/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/pygments/styles/__pycache__/_mapping.cpython-312.pyc,,
pip/_vendor/pygments/styles/_mapping.py,sha256=6lovFUE29tz6EsV3XYY4hgozJ7q1JL7cfO3UOlgnS8w,3312
pip/_vendor/pygments/token.py,sha256=qZwT7LSPy5YBY3JgDjut642CCy7JdQzAfmqD9NmT5j0,6226
pip/_vendor/pygments/unistring.py,sha256=p5c1i-HhoIhWemy9CUsaN9o39oomYHNxXll0Xfw6tEA,63208
pip/_vendor/pygments/util.py,sha256=2tj2nS1X9_OpcuSjf8dOET2bDVZhs8cEKd_uT6-Fgg8,10031
pip/_vendor/pyproject_hooks/__init__.py,sha256=kCehmy0UaBa9oVMD7ZIZrnswfnP3LXZ5lvnNJAL5JBM,491
pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-312.pyc,,
pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-312.pyc,,
pip/_vendor/pyproject_hooks/_compat.py,sha256=by6evrYnqkisiM-MQcvOKs5bgDMzlOSgZqRHNqf04zE,138
pip/_vendor/pyproject_hooks/_impl.py,sha256=61GJxzQip0IInhuO69ZI5GbNQ82XEDUB_1Gg5_KtUoc,11920
pip/_vendor/pyproject_hooks/_in_process/__init__.py,sha256=9gQATptbFkelkIy0OfWFEACzqxXJMQDWCH9rBOAZVwQ,546
pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-312.pyc,,
pip/_vendor/pyproject_hooks/_in_process/_in_process.py,sha256=m2b34c917IW5o-Q_6TYIHlsK9lSUlNiyrITTUH_zwew,10927
pip/_vendor/requests/__init__.py,sha256=HlB_HzhrzGtfD_aaYUwUh1zWXLZ75_YCLyit75d0Vz8,5057
pip/_vendor/requests/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/requests/__pycache__/__version__.cpython-312.pyc,,
pip/_vendor/requests/__pycache__/_internal_utils.cpython-312.pyc,,
pip/_vendor/requests/__pycache__/adapters.cpython-312.pyc,,
pip/_vendor/requests/__pycache__/api.cpython-312.pyc,,
pip/_vendor/requests/__pycache__/auth.cpython-312.pyc,,
pip/_vendor/requests/__pycache__/certs.cpython-312.pyc,,
pip/_vendor/requests/__pycache__/compat.cpython-312.pyc,,
pip/_vendor/requests/__pycache__/cookies.cpython-312.pyc,,
pip/_vendor/requests/__pycache__/exceptions.cpython-312.pyc,,
pip/_vendor/requests/__pycache__/help.cpython-312.pyc,,
pip/_vendor/requests/__pycache__/hooks.cpython-312.pyc,,
pip/_vendor/requests/__pycache__/models.cpython-312.pyc,,
pip/_vendor/requests/__pycache__/packages.cpython-312.pyc,,
pip/_vendor/requests/__pycache__/sessions.cpython-312.pyc,,
pip/_vendor/requests/__pycache__/status_codes.cpython-312.pyc,,
pip/_vendor/requests/__pycache__/structures.cpython-312.pyc,,
pip/_vendor/requests/__pycache__/utils.cpython-312.pyc,,
pip/_vendor/requests/__version__.py,sha256=FVfglgZmNQnmYPXpOohDU58F5EUb_-VnSTaAesS187g,435
pip/_vendor/requests/_internal_utils.py,sha256=nMQymr4hs32TqVo5AbCrmcJEhvPUh7xXlluyqwslLiQ,1495
pip/_vendor/requests/adapters.py,sha256=J7VeVxKBvawbtlX2DERVo05J9BXTcWYLMHNd1Baa-bk,27607
pip/_vendor/requests/api.py,sha256=_Zb9Oa7tzVIizTKwFrPjDEY9ejtm_OnSRERnADxGsQs,6449
pip/_vendor/requests/auth.py,sha256=kF75tqnLctZ9Mf_hm9TZIj4cQWnN5uxRz8oWsx5wmR0,10186
pip/_vendor/requests/certs.py,sha256=PVPooB0jP5hkZEULSCwC074532UFbR2Ptgu0I5zwmCs,575
pip/_vendor/requests/compat.py,sha256=Mo9f9xZpefod8Zm-n9_StJcVTmwSukXR2p3IQyyVXvU,1485
pip/_vendor/requests/cookies.py,sha256=bNi-iqEj4NPZ00-ob-rHvzkvObzN3lEpgw3g6paS3Xw,18590
pip/_vendor/requests/exceptions.py,sha256=D1wqzYWne1mS2rU43tP9CeN1G7QAy7eqL9o1god6Ejw,4272
pip/_vendor/requests/help.py,sha256=hRKaf9u0G7fdwrqMHtF3oG16RKktRf6KiwtSq2Fo1_0,3813
pip/_vendor/requests/hooks.py,sha256=CiuysiHA39V5UfcCBXFIx83IrDpuwfN9RcTUgv28ftQ,733
pip/_vendor/requests/models.py,sha256=x4K4CmH-lC0l2Kb-iPfMN4dRXxHEcbOaEWBL_i09AwI,35483
pip/_vendor/requests/packages.py,sha256=_ZQDCJTJ8SP3kVWunSqBsRZNPzj2c1WFVqbdr08pz3U,1057
pip/_vendor/requests/sessions.py,sha256=ykTI8UWGSltOfH07HKollH7kTBGw4WhiBVaQGmckTw4,30495
pip/_vendor/requests/status_codes.py,sha256=iJUAeA25baTdw-6PfD0eF4qhpINDJRJI-yaMqxs4LEI,4322
pip/_vendor/requests/structures.py,sha256=-IbmhVz06S-5aPSZuUthZ6-6D9XOjRuTXHOabY041XM,2912
pip/_vendor/requests/utils.py,sha256=L79vnFbzJ3SFLKtJwpoWe41Tozi3RlZv94pY1TFIyow,33631
pip/_vendor/resolvelib/__init__.py,sha256=h509TdEcpb5-44JonaU3ex2TM15GVBLjM9CNCPwnTTs,537
pip/_vendor/resolvelib/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/resolvelib/__pycache__/providers.cpython-312.pyc,,
pip/_vendor/resolvelib/__pycache__/reporters.cpython-312.pyc,,
pip/_vendor/resolvelib/__pycache__/resolvers.cpython-312.pyc,,
pip/_vendor/resolvelib/__pycache__/structs.cpython-312.pyc,,
pip/_vendor/resolvelib/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-312.pyc,,
pip/_vendor/resolvelib/compat/collections_abc.py,sha256=uy8xUZ-NDEw916tugUXm8HgwCGiMO0f-RcdnpkfXfOs,156
pip/_vendor/resolvelib/providers.py,sha256=fuuvVrCetu5gsxPB43ERyjfO8aReS3rFQHpDgiItbs4,5871
pip/_vendor/resolvelib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_vendor/resolvelib/reporters.py,sha256=TSbRmWzTc26w0ggsV1bxVpeWDB8QNIre6twYl7GIZBE,1601
pip/_vendor/resolvelib/resolvers.py,sha256=G8rsLZSq64g5VmIq-lB7UcIJ1gjAxIQJmTF4REZleQ0,20511
pip/_vendor/resolvelib/structs.py,sha256=0_1_XO8z_CLhegP3Vpf9VJ3zJcfLm0NOHRM-i0Ykz3o,4963
pip/_vendor/rich/__init__.py,sha256=dRxjIL-SbFVY0q3IjSMrfgBTHrm1LZDgLOygVBwiYZc,6090
pip/_vendor/rich/__main__.py,sha256=eO7Cq8JnrgG8zVoeImiAs92q3hXNMIfp0w5lMsO7Q2Y,8477
pip/_vendor/rich/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/__main__.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_cell_widths.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_emoji_codes.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_emoji_replace.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_export_format.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_extension.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_fileno.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_inspect.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_log_render.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_loop.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_null_file.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_palettes.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_pick.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_ratio.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_spinners.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_stack.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_timer.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_win32_console.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_windows.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_windows_renderer.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/_wrap.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/abc.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/align.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/ansi.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/bar.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/box.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/cells.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/color.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/color_triplet.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/columns.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/console.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/constrain.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/containers.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/control.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/default_styles.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/diagnose.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/emoji.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/errors.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/file_proxy.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/filesize.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/highlighter.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/json.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/jupyter.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/layout.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/live.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/live_render.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/logging.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/markup.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/measure.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/padding.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/pager.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/palette.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/panel.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/pretty.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/progress.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/progress_bar.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/prompt.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/protocol.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/region.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/repr.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/rule.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/scope.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/screen.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/segment.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/spinner.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/status.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/style.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/styled.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/syntax.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/table.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/terminal_theme.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/text.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/theme.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/themes.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/traceback.cpython-312.pyc,,
pip/_vendor/rich/__pycache__/tree.cpython-312.pyc,,
pip/_vendor/rich/_cell_widths.py,sha256=fbmeyetEdHjzE_Vx2l1uK7tnPOhMs2X1lJfO3vsKDpA,10209
pip/_vendor/rich/_emoji_codes.py,sha256=hu1VL9nbVdppJrVoijVshRlcRRe_v3dju3Mmd2sKZdY,140235
pip/_vendor/rich/_emoji_replace.py,sha256=n-kcetsEUx2ZUmhQrfeMNc-teeGhpuSQ5F8VPBsyvDo,1064
pip/_vendor/rich/_export_format.py,sha256=RI08pSrm5tBSzPMvnbTqbD9WIalaOoN5d4M1RTmLq1Y,2128
pip/_vendor/rich/_extension.py,sha256=Xt47QacCKwYruzjDi-gOBq724JReDj9Cm9xUi5fr-34,265
pip/_vendor/rich/_fileno.py,sha256=HWZxP5C2ajMbHryvAQZseflVfQoGzsKOHzKGsLD8ynQ,799
pip/_vendor/rich/_inspect.py,sha256=oZJGw31e64dwXSCmrDnvZbwVb1ZKhWfU8wI3VWohjJk,9695
pip/_vendor/rich/_log_render.py,sha256=1ByI0PA1ZpxZY3CGJOK54hjlq4X-Bz_boIjIqCd8Kns,3225
pip/_vendor/rich/_loop.py,sha256=hV_6CLdoPm0va22Wpw4zKqM0RYsz3TZxXj0PoS-9eDQ,1236
pip/_vendor/rich/_null_file.py,sha256=tGSXk_v-IZmbj1GAzHit8A3kYIQMiCpVsCFfsC-_KJ4,1387
pip/_vendor/rich/_palettes.py,sha256=cdev1JQKZ0JvlguV9ipHgznTdnvlIzUFDBb0It2PzjI,7063
pip/_vendor/rich/_pick.py,sha256=evDt8QN4lF5CiwrUIXlOJCntitBCOsI3ZLPEIAVRLJU,423
pip/_vendor/rich/_ratio.py,sha256=Zt58apszI6hAAcXPpgdWKpu3c31UBWebOeR4mbyptvU,5471
pip/_vendor/rich/_spinners.py,sha256=U2r1_g_1zSjsjiUdAESc2iAMc3i4ri_S8PYP6kQ5z1I,19919
pip/_vendor/rich/_stack.py,sha256=-C8OK7rxn3sIUdVwxZBBpeHhIzX0eI-VM3MemYfaXm0,351
pip/_vendor/rich/_timer.py,sha256=zelxbT6oPFZnNrwWPpc1ktUeAT-Vc4fuFcRZLQGLtMI,417
pip/_vendor/rich/_win32_console.py,sha256=P0vxI2fcndym1UU1S37XAzQzQnkyY7YqAKmxm24_gug,22820
pip/_vendor/rich/_windows.py,sha256=aBwaD_S56SbgopIvayVmpk0Y28uwY2C5Bab1wl3Bp-I,1925
pip/_vendor/rich/_windows_renderer.py,sha256=t74ZL3xuDCP3nmTp9pH1L5LiI2cakJuQRQleHCJerlk,2783
pip/_vendor/rich/_wrap.py,sha256=FlSsom5EX0LVkA3KWy34yHnCfLtqX-ZIepXKh-70rpc,3404
pip/_vendor/rich/abc.py,sha256=ON-E-ZqSSheZ88VrKX2M3PXpFbGEUUZPMa_Af0l-4f0,890
pip/_vendor/rich/align.py,sha256=sCUkisXkQfoq-IQPyBELfJ8l7LihZJX3HbH8K7Cie-M,10368
pip/_vendor/rich/ansi.py,sha256=iD6532QYqnBm6hADulKjrV8l8kFJ-9fEVooHJHH3hMg,6906
pip/_vendor/rich/bar.py,sha256=ldbVHOzKJOnflVNuv1xS7g6dLX2E3wMnXkdPbpzJTcs,3263
pip/_vendor/rich/box.py,sha256=nr5fYIUghB_iUCEq6y0Z3LlCT8gFPDrzN9u2kn7tJl4,10831
pip/_vendor/rich/cells.py,sha256=aMmGK4BjXhgE6_JF1ZEGmW3O7mKkE8g84vUnj4Et4To,4780
pip/_vendor/rich/color.py,sha256=bCRATVdRe5IClJ6Hl62de2PKQ_U4i2MZ4ugjUEg7Tao,18223
pip/_vendor/rich/color_triplet.py,sha256=3lhQkdJbvWPoLDO-AnYImAWmJvV5dlgYNCVZ97ORaN4,1054
pip/_vendor/rich/columns.py,sha256=HUX0KcMm9dsKNi11fTbiM_h2iDtl8ySCaVcxlalEzq8,7131
pip/_vendor/rich/console.py,sha256=deFZIubq2M9A2MCsKFAsFQlWDvcOMsGuUA07QkOaHIw,99173
pip/_vendor/rich/constrain.py,sha256=1VIPuC8AgtKWrcncQrjBdYqA3JVWysu6jZo1rrh7c7Q,1288
pip/_vendor/rich/containers.py,sha256=c_56TxcedGYqDepHBMTuZdUIijitAQgnox-Qde0Z1qo,5502
pip/_vendor/rich/control.py,sha256=DSkHTUQLorfSERAKE_oTAEUFefZnZp4bQb4q8rHbKws,6630
pip/_vendor/rich/default_styles.py,sha256=-Fe318kMVI_IwciK5POpThcO0-9DYJ67TZAN6DlmlmM,8082
pip/_vendor/rich/diagnose.py,sha256=an6uouwhKPAlvQhYpNNpGq9EJysfMIOvvCbO3oSoR24,972
pip/_vendor/rich/emoji.py,sha256=omTF9asaAnsM4yLY94eR_9dgRRSm1lHUszX20D1yYCQ,2501
pip/_vendor/rich/errors.py,sha256=5pP3Kc5d4QJ_c0KFsxrfyhjiPVe7J1zOqSFbFAzcV-Y,642
pip/_vendor/rich/file_proxy.py,sha256=Tl9THMDZ-Pk5Wm8sI1gGg_U5DhusmxD-FZ0fUbcU0W0,1683
pip/_vendor/rich/filesize.py,sha256=9fTLAPCAwHmBXdRv7KZU194jSgNrRb6Wx7RIoBgqeKY,2508
pip/_vendor/rich/highlighter.py,sha256=6ZAjUcNhBRajBCo9umFUclyi2xL0-55JL7S0vYGUJu4,9585
pip/_vendor/rich/json.py,sha256=vVEoKdawoJRjAFayPwXkMBPLy7RSTs-f44wSQDR2nJ0,5031
pip/_vendor/rich/jupyter.py,sha256=QyoKoE_8IdCbrtiSHp9TsTSNyTHY0FO5whE7jOTd9UE,3252
pip/_vendor/rich/layout.py,sha256=ajkSFAtEVv9EFTcFs-w4uZfft7nEXhNzL7ZVdgrT5rI,14004
pip/_vendor/rich/live.py,sha256=vUcnJV2LMSK3sQNaILbm0-_B8BpAeiHfcQMAMLfpRe0,14271
pip/_vendor/rich/live_render.py,sha256=zJtB471jGziBtEwxc54x12wEQtH4BuQr1SA8v9kU82w,3666
pip/_vendor/rich/logging.py,sha256=uB-cB-3Q4bmXDLLpbOWkmFviw-Fde39zyMV6tKJ2WHQ,11903
pip/_vendor/rich/markup.py,sha256=3euGKP5s41NCQwaSjTnJxus5iZMHjxpIM0W6fCxra38,8451
pip/_vendor/rich/measure.py,sha256=HmrIJX8sWRTHbgh8MxEay_83VkqNW_70s8aKP5ZcYI8,5305
pip/_vendor/rich/padding.py,sha256=kTFGsdGe0os7tXLnHKpwTI90CXEvrceeZGCshmJy5zw,4970
pip/_vendor/rich/pager.py,sha256=SO_ETBFKbg3n_AgOzXm41Sv36YxXAyI3_R-KOY2_uSc,828
pip/_vendor/rich/palette.py,sha256=lInvR1ODDT2f3UZMfL1grq7dY_pDdKHw4bdUgOGaM4Y,3396
pip/_vendor/rich/panel.py,sha256=2Fd1V7e1kHxlPFIusoHY5T7-Cs0RpkrihgVG9ZVqJ4g,10705
pip/_vendor/rich/pretty.py,sha256=5oIHP_CGWnHEnD0zMdW5qfGC5kHqIKn7zH_eC4crULE,35848
pip/_vendor/rich/progress.py,sha256=P02xi7T2Ua3qq17o83bkshe4c0v_45cg8VyTj6US6Vg,59715
pip/_vendor/rich/progress_bar.py,sha256=L4jw8E6Qb_x-jhOrLVhkuMaPmiAhFIl8jHQbWFrKuR8,8164
pip/_vendor/rich/prompt.py,sha256=wdOn2X8XTJKnLnlw6PoMY7xG4iUPp3ezt4O5gqvpV-E,11304
pip/_vendor/rich/protocol.py,sha256=5hHHDDNHckdk8iWH5zEbi-zuIVSF5hbU2jIo47R7lTE,1391
pip/_vendor/rich/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_vendor/rich/region.py,sha256=rNT9xZrVZTYIXZC0NYn41CJQwYNbR-KecPOxTgQvB8Y,166
pip/_vendor/rich/repr.py,sha256=5MZJZmONgC6kud-QW-_m1okXwL2aR6u6y-pUcUCJz28,4431
pip/_vendor/rich/rule.py,sha256=0fNaS_aERa3UMRc3T5WMpN_sumtDxfaor2y3of1ftBk,4602
pip/_vendor/rich/scope.py,sha256=TMUU8qo17thyqQCPqjDLYpg_UU1k5qVd-WwiJvnJVas,2843
pip/_vendor/rich/screen.py,sha256=YoeReESUhx74grqb0mSSb9lghhysWmFHYhsbMVQjXO8,1591
pip/_vendor/rich/segment.py,sha256=hU1ueeXqI6YeFa08K9DAjlF2QLxcJY9pwZx7RsXavlk,24246
pip/_vendor/rich/spinner.py,sha256=15koCmF0DQeD8-k28Lpt6X_zJQUlzEhgo_6A6uy47lc,4339
pip/_vendor/rich/status.py,sha256=kkPph3YeAZBo-X-4wPp8gTqZyU466NLwZBA4PZTTewo,4424
pip/_vendor/rich/style.py,sha256=3hiocH_4N8vwRm3-8yFWzM7tSwjjEven69XqWasSQwM,27073
pip/_vendor/rich/styled.py,sha256=eZNnzGrI4ki_54pgY3Oj0T-x3lxdXTYh4_ryDB24wBU,1258
pip/_vendor/rich/syntax.py,sha256=TnZDuOD4DeHFbkaVEAji1gf8qgAlMU9Boe_GksMGCkk,35475
pip/_vendor/rich/table.py,sha256=nGEvAZHF4dy1vT9h9Gj9O5qhSQO3ODAxJv0RY1vnIB8,39680
pip/_vendor/rich/terminal_theme.py,sha256=1j5-ufJfnvlAo5Qsi_ACZiXDmwMXzqgmFByObT9-yJY,3370
pip/_vendor/rich/text.py,sha256=5rQ3zvNrg5UZKNLecbh7fiw9v3HeFulNVtRY_CBDjjE,47312
pip/_vendor/rich/theme.py,sha256=belFJogzA0W0HysQabKaHOc3RWH2ko3fQAJhoN-AFdo,3777
pip/_vendor/rich/themes.py,sha256=0xgTLozfabebYtcJtDdC5QkX5IVUEaviqDUJJh4YVFk,102
pip/_vendor/rich/traceback.py,sha256=CUpxYLjQWIb6vQQ6O72X0hvDV6caryGqU6UweHgOyCY,29601
pip/_vendor/rich/tree.py,sha256=meAOUU6sYnoBEOX2ILrPLY9k5bWrWNQKkaiEFvHinXM,9167
pip/_vendor/tomli/__init__.py,sha256=JhUwV66DB1g4Hvt1UQCVMdfCu-IgAV8FXmvDU9onxd4,396
pip/_vendor/tomli/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/tomli/__pycache__/_parser.cpython-312.pyc,,
pip/_vendor/tomli/__pycache__/_re.cpython-312.pyc,,
pip/_vendor/tomli/__pycache__/_types.cpython-312.pyc,,
pip/_vendor/tomli/_parser.py,sha256=g9-ENaALS-B8dokYpCuzUFalWlog7T-SIYMjLZSWrtM,22633
pip/_vendor/tomli/_re.py,sha256=dbjg5ChZT23Ka9z9DHOXfdtSpPwUfdgMXnj8NOoly-w,2943
pip/_vendor/tomli/_types.py,sha256=-GTG2VUqkpxwMqzmVO4F7ybKddIbAnuAHXfmWQcTi3Q,254
pip/_vendor/tomli/py.typed,sha256=8PjyZ1aVoQpRVvt71muvuq5qE-jTFZkK-GLHkhdebmc,26
pip/_vendor/truststore/__init__.py,sha256=M-PhuLMIF7gxKXk7tpo2MD7dk6nqG1ae8GXWdNXbMdQ,403
pip/_vendor/truststore/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/truststore/__pycache__/_api.cpython-312.pyc,,
pip/_vendor/truststore/__pycache__/_macos.cpython-312.pyc,,
pip/_vendor/truststore/__pycache__/_openssl.cpython-312.pyc,,
pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-312.pyc,,
pip/_vendor/truststore/__pycache__/_windows.cpython-312.pyc,,
pip/_vendor/truststore/_api.py,sha256=B9JIHipzBIS8pMP_J50-o1DHVZsvKZQUXTB0HQQ_UPg,10461
pip/_vendor/truststore/_macos.py,sha256=VJ24avz5aEGYAs_kWvnGjMJtuIP4xJcYa459UQOQC3M,17608
pip/_vendor/truststore/_openssl.py,sha256=LLUZ7ZGaio-i5dpKKjKCSeSufmn6T8pi9lDcFnvSyq0,2324
pip/_vendor/truststore/_ssl_constants.py,sha256=NUD4fVKdSD02ri7-db0tnO0VqLP9aHuzmStcW7tAl08,1130
pip/_vendor/truststore/_windows.py,sha256=eldNViHNHeY5r3fiBoz_JFGD37atXB9S5yaRoPKEGAA,17891
pip/_vendor/truststore/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_vendor/typing_extensions.py,sha256=78hFl0HpDY-ylHUVCnWdU5nTHxUP2-S-3wEZk6CQmLk,134499
pip/_vendor/urllib3/__init__.py,sha256=iXLcYiJySn0GNbWOOZDDApgBL1JgP44EZ8i1760S8Mc,3333
pip/_vendor/urllib3/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/urllib3/__pycache__/_collections.cpython-312.pyc,,
pip/_vendor/urllib3/__pycache__/_version.cpython-312.pyc,,
pip/_vendor/urllib3/__pycache__/connection.cpython-312.pyc,,
pip/_vendor/urllib3/__pycache__/connectionpool.cpython-312.pyc,,
pip/_vendor/urllib3/__pycache__/exceptions.cpython-312.pyc,,
pip/_vendor/urllib3/__pycache__/fields.cpython-312.pyc,,
pip/_vendor/urllib3/__pycache__/filepost.cpython-312.pyc,,
pip/_vendor/urllib3/__pycache__/poolmanager.cpython-312.pyc,,
pip/_vendor/urllib3/__pycache__/request.cpython-312.pyc,,
pip/_vendor/urllib3/__pycache__/response.cpython-312.pyc,,
pip/_vendor/urllib3/_collections.py,sha256=pyASJJhW7wdOpqJj9QJA8FyGRfr8E8uUUhqUvhF0728,11372
pip/_vendor/urllib3/_version.py,sha256=cuJvnSrWxXGYgQ3-ZRoPMw8-qaN5tpw71jnH1t16dLA,64
pip/_vendor/urllib3/connection.py,sha256=92k9td_y4PEiTIjNufCUa1NzMB3J3w0LEdyokYgXnW8,20300
pip/_vendor/urllib3/connectionpool.py,sha256=Be6q65SR9laoikg-h_jmc_p8OWtEmwgq_Om_Xtig-2M,40285
pip/_vendor/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-312.pyc,,
pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-312.pyc,,
pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-312.pyc,,
pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc,,
pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-312.pyc,,
pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-312.pyc,,
pip/_vendor/urllib3/contrib/_appengine_environ.py,sha256=bDbyOEhW2CKLJcQqAKAyrEHN-aklsyHFKq6vF8ZFsmk,957
pip/_vendor/urllib3/contrib/_securetransport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-312.pyc,,
pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-312.pyc,,
pip/_vendor/urllib3/contrib/_securetransport/bindings.py,sha256=4Xk64qIkPBt09A5q-RIFUuDhNc9mXilVapm7WnYnzRw,17632
pip/_vendor/urllib3/contrib/_securetransport/low_level.py,sha256=B2JBB2_NRP02xK6DCa1Pa9IuxrPwxzDzZbixQkb7U9M,13922
pip/_vendor/urllib3/contrib/appengine.py,sha256=VR68eAVE137lxTgjBDwCna5UiBZTOKa01Aj_-5BaCz4,11036
pip/_vendor/urllib3/contrib/ntlmpool.py,sha256=NlfkW7WMdW8ziqudopjHoW299og1BTWi0IeIibquFwk,4528
pip/_vendor/urllib3/contrib/pyopenssl.py,sha256=hDJh4MhyY_p-oKlFcYcQaVQRDv6GMmBGuW9yjxyeejM,17081
pip/_vendor/urllib3/contrib/securetransport.py,sha256=Fef1IIUUFHqpevzXiDPbIGkDKchY2FVKeVeLGR1Qq3g,34446
pip/_vendor/urllib3/contrib/socks.py,sha256=aRi9eWXo9ZEb95XUxef4Z21CFlnnjbEiAo9HOseoMt4,7097
pip/_vendor/urllib3/exceptions.py,sha256=0Mnno3KHTNfXRfY7638NufOPkUb6mXOm-Lqj-4x2w8A,8217
pip/_vendor/urllib3/fields.py,sha256=kvLDCg_JmH1lLjUUEY_FLS8UhY7hBvDPuVETbY8mdrM,8579
pip/_vendor/urllib3/filepost.py,sha256=5b_qqgRHVlL7uLtdAYBzBh-GHmU5AfJVt_2N0XS3PeY,2440
pip/_vendor/urllib3/packages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/urllib3/packages/__pycache__/six.cpython-312.pyc,,
pip/_vendor/urllib3/packages/backports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-312.pyc,,
pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-312.pyc,,
pip/_vendor/urllib3/packages/backports/makefile.py,sha256=nbzt3i0agPVP07jqqgjhaYjMmuAi_W5E0EywZivVO8E,1417
pip/_vendor/urllib3/packages/backports/weakref_finalize.py,sha256=tRCal5OAhNSRyb0DhHp-38AtIlCsRP8BxF3NX-6rqIA,5343
pip/_vendor/urllib3/packages/six.py,sha256=b9LM0wBXv7E7SrbCjAm4wwN-hrH-iNxv18LgWNMMKPo,34665
pip/_vendor/urllib3/poolmanager.py,sha256=aWyhXRtNO4JUnCSVVqKTKQd8EXTvUm1VN9pgs2bcONo,19990
pip/_vendor/urllib3/request.py,sha256=YTWFNr7QIwh7E1W9dde9LM77v2VWTJ5V78XuTTw7D1A,6691
pip/_vendor/urllib3/response.py,sha256=fmDJAFkG71uFTn-sVSTh2Iw0WmcXQYqkbRjihvwBjU8,30641
pip/_vendor/urllib3/util/__init__.py,sha256=JEmSmmqqLyaw8P51gUImZh8Gwg9i1zSe-DoqAitn2nc,1155
pip/_vendor/urllib3/util/__pycache__/__init__.cpython-312.pyc,,
pip/_vendor/urllib3/util/__pycache__/connection.cpython-312.pyc,,
pip/_vendor/urllib3/util/__pycache__/proxy.cpython-312.pyc,,
pip/_vendor/urllib3/util/__pycache__/queue.cpython-312.pyc,,
pip/_vendor/urllib3/util/__pycache__/request.cpython-312.pyc,,
pip/_vendor/urllib3/util/__pycache__/response.cpython-312.pyc,,
pip/_vendor/urllib3/util/__pycache__/retry.cpython-312.pyc,,
pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-312.pyc,,
pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc,,
pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-312.pyc,,
pip/_vendor/urllib3/util/__pycache__/timeout.cpython-312.pyc,,
pip/_vendor/urllib3/util/__pycache__/url.cpython-312.pyc,,
pip/_vendor/urllib3/util/__pycache__/wait.cpython-312.pyc,,
pip/_vendor/urllib3/util/connection.py,sha256=5Lx2B1PW29KxBn2T0xkN1CBgRBa3gGVJBKoQoRogEVk,4901
pip/_vendor/urllib3/util/proxy.py,sha256=zUvPPCJrp6dOF0N4GAVbOcl6o-4uXKSrGiTkkr5vUS4,1605
pip/_vendor/urllib3/util/queue.py,sha256=nRgX8_eX-_VkvxoX096QWoz8Ps0QHUAExILCY_7PncM,498
pip/_vendor/urllib3/util/request.py,sha256=C0OUt2tcU6LRiQJ7YYNP9GvPrSvl7ziIBekQ-5nlBZk,3997
pip/_vendor/urllib3/util/response.py,sha256=GJpg3Egi9qaJXRwBh5wv-MNuRWan5BIu40oReoxWP28,3510
pip/_vendor/urllib3/util/retry.py,sha256=Z6WEf518eTOXP5jr5QSQ9gqJI0DVYt3Xs3EKnYaTmus,22013
pip/_vendor/urllib3/util/ssl_.py,sha256=X4-AqW91aYPhPx6-xbf66yHFQKbqqfC_5Zt4WkLX1Hc,17177
pip/_vendor/urllib3/util/ssl_match_hostname.py,sha256=Ir4cZVEjmAk8gUAIHWSi7wtOO83UCYABY2xFD1Ql_WA,5758
pip/_vendor/urllib3/util/ssltransport.py,sha256=NA-u5rMTrDFDFC8QzRKUEKMG0561hOD4qBTr3Z4pv6E,6895
pip/_vendor/urllib3/util/timeout.py,sha256=cwq4dMk87mJHSBktK1miYJ-85G-3T3RmT20v7SFCpno,10168
pip/_vendor/urllib3/util/url.py,sha256=lCAE7M5myA8EDdW0sJuyyZhVB9K_j38ljWhHAnFaWoE,14296
pip/_vendor/urllib3/util/wait.py,sha256=fOX0_faozG2P7iVojQoE1mbydweNyTcm-hXEfFrTtLI,5403
pip/_vendor/vendor.txt,sha256=PxNaxxkkpBaw5zOTsDpHEY-zEaHjgkDgyrSxOuxg8nw,330
pip/py.typed,sha256=EBVvvPRTn_eIpz5e5QztSCdrMX7Qwd7VP93RSoIlZ2I,286

View File

@ -0,0 +1,5 @@
Wheel-Version: 1.0
Generator: setuptools (71.1.0)
Root-Is-Purelib: true
Tag: py3-none-any

View File

@ -0,0 +1,3 @@
[console_scripts]
pip = pip._internal.cli.main:main
pip3 = pip._internal.cli.main:main

View File

@ -0,0 +1 @@
pip

View File

@ -0,0 +1,13 @@
from typing import List, Optional
__version__ = "24.2"
def main(args: Optional[List[str]] = None) -> int:
"""This is an internal API only meant for use by pip's own console scripts.
For additional details, see https://github.com/pypa/pip/issues/7498.
"""
from pip._internal.utils.entrypoints import _wrapper
return _wrapper(args)

View File

@ -0,0 +1,24 @@
import os
import sys
# Remove '' and current working directory from the first entry
# of sys.path, if present to avoid using current directory
# in pip commands check, freeze, install, list and show,
# when invoked as python -m pip <command>
if sys.path[0] in ("", os.getcwd()):
sys.path.pop(0)
# If we are running from a wheel, add the wheel to sys.path
# This allows the usage python pip-*.whl/pip install pip-*.whl
if __package__ == "":
# __file__ is pip-*.whl/pip/__main__.py
# first dirname call strips of '/__main__.py', second strips off '/pip'
# Resulting path is the name of the wheel itself
# Add that to sys.path so we can import pip
path = os.path.dirname(os.path.dirname(__file__))
sys.path.insert(0, path)
if __name__ == "__main__":
from pip._internal.cli.main import main as _main
sys.exit(_main())

View File

@ -0,0 +1,50 @@
"""Execute exactly this copy of pip, within a different environment.
This file is named as it is, to ensure that this module can't be imported via
an import statement.
"""
# /!\ This version compatibility check section must be Python 2 compatible. /!\
import sys
# Copied from pyproject.toml
PYTHON_REQUIRES = (3, 8)
def version_str(version): # type: ignore
return ".".join(str(v) for v in version)
if sys.version_info[:2] < PYTHON_REQUIRES:
raise SystemExit(
"This version of pip does not support python {} (requires >={}).".format(
version_str(sys.version_info[:2]), version_str(PYTHON_REQUIRES)
)
)
# From here on, we can use Python 3 features, but the syntax must remain
# Python 2 compatible.
import runpy # noqa: E402
from importlib.machinery import PathFinder # noqa: E402
from os.path import dirname # noqa: E402
PIP_SOURCES_ROOT = dirname(dirname(__file__))
class PipImportRedirectingFinder:
@classmethod
def find_spec(self, fullname, path=None, target=None): # type: ignore
if fullname != "pip":
return None
spec = PathFinder.find_spec(fullname, [PIP_SOURCES_ROOT], target)
assert spec, (PIP_SOURCES_ROOT, fullname)
return spec
sys.meta_path.insert(0, PipImportRedirectingFinder())
assert __name__ == "__main__", "Cannot run __pip-runner__.py as a non-main module"
runpy.run_module("pip", run_name="__main__", alter_sys=True)

View File

@ -0,0 +1,18 @@
from typing import List, Optional
from pip._internal.utils import _log
# init_logging() must be called before any call to logging.getLogger()
# which happens at import of most modules.
_log.init_logging()
def main(args: Optional[List[str]] = None) -> int:
"""This is preserved for old console scripts that may still be referencing
it.
For additional details, see https://github.com/pypa/pip/issues/7498.
"""
from pip._internal.utils.entrypoints import _wrapper
return _wrapper(args)

Some files were not shown because too many files have changed in this diff Show More