рд▓рдЧрднрдЧ рдЕрдЪреНрдЫреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдХрд▓рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп

рд╣рдорд╛рд░рд╛ рдзреНрдпрд╛рди GitHub рдкрд░ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдЖрд░реНрдЯреНрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдП рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ рдФрд░ рддреЗрдИрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рд╣рдо рдХреЗрд╡рд▓ рдХреБрдЫ C ++ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рдереЗ: EASTL, EAStdC, EABase, EAThread, EATest, EAMain рдФрд░ EAAssertред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рднреА рдмрд╣реБрдд рдЫреЛрдЯреЗ рдереЗ (рд▓рдЧрднрдЧ 10 рдлрд╛рдЗрд▓реЗрдВ), рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХреЗрд╡рд▓ 20 рдлрд╛рдЗрд▓реЛрдВ рдХреЗ "рд╕рдмрд╕реЗ рдмрдбрд╝реЗ" рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реАрдВ: рдбреА рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рднреА рдорд┐рд▓рд╛! рдЬрдм рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛, рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдФрд░ рдореИрдВрдиреЗ рднреА рдИрдП рдХреЗ рдЦреЗрд▓ рдФрд░ рдЗрд╕рдХреА рд░рдгрдиреАрддрд┐ рдкрд░ рдЬреЛрд░рджрд╛рд░ рдЪрд░реНрдЪрд╛ рдХреА: рдбреА

рдЪрд┐рддреНрд░ 1


рдкрд░рд┐рдЪрдп


рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдЖрд░реНрдЯреНрд╕ (EA) рдПрдХ рдЕрдореЗрд░рд┐рдХреА рдХрдВрдкрдиреА рд╣реИ рдЬреЛ рд╡реАрдбрд┐рдпреЛ рдЧреЗрдо рд╡рд┐рддрд░рд┐рдд рдХрд░рддреА рд╣реИред GitHub рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░, рдЙрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рдЫреЛрдЯреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдФрд░ рдХрдИ C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рд╣реИрдВред рдпреЗ C ++ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИрдВ: EASTL, EAStdC, EABase, EAThread, EATest, EAMain рдФрд░ EAAssertред рд╡реЗ рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╣реИрдВ рдФрд░ рд╣рдордиреЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ "рд╕рдмрд╕реЗ рдмрдбрд╝реА" - рдИрдПрдПрд╕рдЯреАрдбреАрд╕реА (20 рдлрд╛рдЗрд▓реЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджрд┐рд▓рдЪрд╕реНрдк рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкрд╛рдИрдВ ред рдРрд╕реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде, рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ ред рдмрд╕ 5 рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рд▓рд┐рдП рдирд┐рд░реНрдгрдп рд▓реЗрдВред

рдЪреЗрддрд╛рд╡рдиреА рез


V524 рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ '>>' рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╢рд░реАрд░ '<<' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдХреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордХрдХреНрд╖ рд╣реИред EAFixedPoint.h 287

template <class T, int upShiftInt, int downShiftInt, int upMulInt, int downDivInt> struct FPTemplate { .... FPTemplate operator<<(int numBits) const { return value << numBits; } FPTemplate operator>>(int numBits) const { return value << numBits; } FPTemplate& operator<<=(int numBits) { value <<= numBits; return *this;} FPTemplate& operator>>=(int numBits) { value >>= numBits; return *this;} .... } 

рдЬрдм рд╢рд┐рдлреНрдЯ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдПрдХ рдЯрд╛рдЗрдкреЛ рдмрдирд╛рдпрд╛, рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддреЗ рд╣реБрдП << рдФрд░ >>ред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ-рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред

рдЪреЗрддрд╛рд╡рдиреА реи


V557 рдРрд░реЗ рдУрд╡рд░рд░рди рд╕рдВрднрд╡ рд╣реИред 'NFormatLength' рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдореВрд▓реНрдп 16 рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИред EASprintfOrdered.cpp 246

 static const int kSpanFormatCapacity = 16; struct Span8 { .... char mFormat[kSpanFormatCapacity]; .... }; static int OVprintfCore(....) { .... EA_ASSERT(nFormatLength < kSpanFormatCapacity); if(nFormatLength < kSpanFormatCapacity) spans[spanIndex].mFormat[nFormatLength++] = *p; // <= else return -1; switch(*p) { case 'b': case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'g': case 'G': case 'e': case 'E': case 'f': case 'F': case 'a': case 'A': case 'p': case 'c': case 'C': case 's': case 'S': case 'n': { // Finalize the current span. spans[spanIndex].mpEnd = p + 1; spans[spanIndex].mFormat[nFormatLength] = 0; // <= spans[spanIndex].mFormatChar = *p; if(++spanIndex == kSpanCapacity) break; .... } 

рд╕реНрдкреИрди [рд╕реНрдкреИрдирдЗрдВрдбреЗрдХреНрд╕] .mFormat рд╕рд░рдгреА рдореЗрдВ 16 рддрддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рдЕрдВрддрд┐рдо рд╡реИрдз рд╡рд╕реНрддреБ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ 15 рд╣реИ ред рдЕрдм OVprintfCore рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ nFormatLength рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рд╕рдВрднрд╡ рд╕реВрдЪрдХрд╛рдВрдХ - 15 рд╣реЛ , рддреЛ 16 рддрдХ рдХреА рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреАред рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдЖрдЧреЗ , рд╕рд░рдгреА рдХреА рд╕реАрдорд╛ рд╕реЗ рдкрд░реЗ рдЬрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИред

рдпрд╣ рдХреЛрдб рдЯреБрдХрдбрд╝рд╛ 2 рдФрд░ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

  • V557 рдРрд░реЗ рдУрд╡рд░рд░рди рд╕рдВрднрд╡ рд╣реИред 'NFormatLength' рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдореВрд▓реНрдп 16 рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИред EASprintfOrdered.cpp 614
  • V557 рдРрд░реЗ рдУрд╡рд░рд░рди рд╕рдВрднрд╡ рд╣реИред 'NFormatLength' рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдореВрд▓реНрдп 16 рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИред EASprintfOrdered.cpp 977

рдЪреЗрддрд╛рд╡рдиреА рей


V560 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИ: (рдкрд░рд┐рдгрд╛рдо> = 0)ред EASprintfOrdered.cpp 489

 static int OVprintfCore(....) { .... for(result = 1; (result >= 0) && (p < pEnd); ++p) { if(pWriteFunction8(p, 1, pWriteFunctionContext8, kWFSIntermediate) < 0) return -1; nWriteCountSum += result; } .... } 

рд╕реНрдерд┐рддрд┐ рдкрд░рд┐рдгрд╛рдо> = 0 рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдгрд╛рдо рдЪрд░ рд▓реВрдк рдореЗрдВ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рдХреЛрдб рдмрд╣реБрдд рд╕рдВрджреЗрд╣рд╛рд╕реНрдкрдж рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИред

рдпрд╣ рдХреЛрдб рдЯреБрдХрдбрд╝рд╛ 2 рдФрд░ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

  • V560 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИ: (рдкрд░рд┐рдгрд╛рдо> = 0)ред EASprintfOrdered.cpp 852
  • V560 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИ: (рдкрд░рд┐рдгрд╛рдо> = 0)ред EASprintfOrdered.cpp 1215

рдЪреЗрддрд╛рд╡рдиреА рек


V1009 рд╕рд░рдгреА рдЖрд░рдВрднреАрдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рддрддреНрд╡ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрд░рдВрднрд┐рдХ рд╣реИред рдмрд╛рдХреА рддрддреНрд╡реЛрдВ рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред EASprintfOrdered.cpp 151

 static int OVprintfCore(....) { .... int spanArgOrder[kArgCapacity] = { -1 }; .... } 

рдпрд╣ рдПрдХ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреЗрд╡рд▓ рд╕реНрдкреИрдирдСрдЧреНрд░рдбрд░ рд╕рд░рдгреА рдХрд╛ рдкрд╣рд▓рд╛ рддрддреНрд╡ -1 рдХреЗ рдорд╛рди рд╕реЗ рдЖрд░рдореНрдн рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдп рд╕рднреА рдХрд╛ рдорд╛рди 0 рд╣реЛрдЧрд╛ред

рдпрд╣ рдХреЛрдб рдЯреБрдХрдбрд╝рд╛ 2 рдФрд░ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

  • V1009 рд╕рд░рдгреА рдЖрд░рдВрднреАрдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рддрддреНрд╡ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрд░рдВрднрд┐рдХ рд╣реИред рдмрд╛рдХреА рддрддреНрд╡реЛрдВ рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред EASprintfOrdered.cpp 518
  • V1009 рд╕рд░рдгреА рдЖрд░рдВрднреАрдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рддрддреНрд╡ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрд░рдВрднрд┐рдХ рд╣реИред рдмрд╛рдХреА рддрддреНрд╡реЛрдВ рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред EASprintfOrdered.cpp 881

рдЪреЗрддрд╛рд╡рдиреА рел


V728 рдПрдХ рдЕрддреНрдпрдзрд┐рдХ рдЬрд╛рдБрдЪ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдж '(A &&! B) || (рдП! рдФрд░ рдмреА) 'рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐' рдмреВрд▓ (рдП)! = рдмреВрд▓ (рдмреА) 'рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред int128.h 1242

 inline void int128_t::Modulus(....) const { .... bool bDividendNegative = false; bool bDivisorNegative = false; .... if( (bDividendNegative && !bDivisorNegative) || (!bDividendNegative && bDivisorNegative)) { quotient.Negate(); } .... } 

рдЗрд╕ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореВрд▓ рдореЗрдВ рдпрд╣ рдПрдХ рдмрд╣реБрдд рд▓рдВрдмреА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд┐рд╕реЗ рдкрдврд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдПрдХ рдФрд░ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рд░рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реИ:

 if( bDividendNegative != bDivisorNegative) { quotient.Negate(); } 

рдХреЛрдб рдмрд╣реБрдд рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдиреЗ рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рддрд░реНрдХ рдХреА рд╕рдордЭ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдВрджрд┐рдЧреНрдз рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рддреАрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдФрд░ рдЙрд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рднреАрддрд░ рджреЛрд╣рд░рд╛рдИ рдЬрд╛рддреА рд╣реИрдВред рдХреЛрдб рджреЛрд╣рд░рд╛рд╡ рдПрдХ рдмрд╣реБрдд рдмреБрд░рд╛ рд╡рд┐рдХрд╛рд╕ рдЕрднреНрдпрд╛рд╕ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдХреЛрдб рд╕рдорд░реНрдерди рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЕрдЧрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдкреВрд░реЗ рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рд╕рд╛рд░ рдХреЗ рдХрд╛рд░рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╕реНрдерд┐рд░рддрд╛ рддреЗрдЬреА рд╕реЗ рдШрдЯ рдЬрд╛рддреА рд╣реИред

рдЪрд▓реЛ рдЖрд╢рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╣рдо рдЗрд╕ рднрдВрдбрд╛рд░ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓реМрдЯ рдЖрдПрдВрдЧреЗ :)ред рдЗрд╕ рдмреАрдЪ, рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдЬреЛ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдЦреБрдж рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред



рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: Svyatoslav Razmyslovред рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдЖрд░реНрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рд▓рдЧрднрдЧ рдкрд░рдлреЗрдХреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА ред

Source: https://habr.com/ru/post/hi461679/


All Articles