рдЗрдирдкреБрдЯ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рддреЗрдЬрд╝ рддрд░реАрдХреЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрддрд╛рддреНрдордХ рдкрд░рд┐рдорд┐рдд рд░рд╛рдЬреНрдп рдорд╢реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЗрдирдкреБрдЯ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкрд╛рд╕ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ рдиреНрдпреВрдирддрдо рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдореЙрдбрд▓ рдХреА рд╕реАрдорд╛рдПрдВ рд╣реИрдВ - рдореМрдЬреВрджрд╛ Nondeterministic рдкрд░рд┐рдорд┐рдд рд░рд╛рдЬреНрдп рдорд╢реАрди (рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐, рд╡реНрдпрд╛рдХрд░рдг) рдХреЗ рд▓рд┐рдП DFA рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рддреЛ рдПрдХ рдСрдЯреЛрдореЗрдЯрди рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд░рд╛рдЬреНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдлрд┐рд░ рднреА, рдореИрдВрдиреЗ DCA рдХреЗ рдЖрдзрд╛рд░ рдкрд░ HTTP рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рд░реНрд╕рд░ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдХреЗрд╡рд▓ HTTP рдЕрдиреБрд░реЛрдз рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрдирдкреБрдЯ рд▓рд╛рдЗрди рдореЗрдВ рдЙрди рддрддреНрд╡реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реИ рдЬреЛ HTTP рдЕрдиреБрд░реЛрдз рдлрд╝реАрд▓реНрдб рдХреЗ рдХреБрдЫ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред рдмреАрдПрдирдПрдл рдирд┐рдпрдореЛрдВ (рдЖрд░рдПрд╕реАрд╕реА 2616 рдореЗрдВ рдмрд┐рдЦрд░реЗ рд╣реБрдП) рд╕реЗ рдПрдХ рдСрдЯреЛрдореЗрдЯрди рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдм рдХреБрдЫ C # рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдЙрдЯрдкреБрдЯ рдорд╢реАрди C # рдореЗрдВ рднреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЬрдм рдорд╢реАрди рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ рдЗрд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ, рдХрд┐рд╕реА рднреА рд░реВрдк рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
DFA рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
1. рдмреАрдПрдирдПрдл рдирд┐рдпрдореЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
2. рдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдирд╕реАрдП рдХрд╛ рдирд┐рд░реНрдорд╛рдг
3. NKA рдХреЛ DKA рдореЗрдВ рдмрджрд▓реЗрдВ
4. рдбреАрдХреЗрдП рдХрд╛ рдиреНрдпреВрдирддрдордХрд░рдг
5. рд╕реНрд░реЛрдд рдкрд╛рда рдФрд░ рд░реВрдкрд╛рдВрддрд░рдг рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдирд╛
рдореИрдВрдиреЗ рдмреАрдПрдирдПрдл рд╡реНрдпрд╛рдХрд░рдг рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд░рдирд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЖрд░рдПрдлрд╕реА 5234 рдореЗрдВ рдПрдмреАрдПрдирдПрдл рд╡реНрдпрд╛рдХрд░рдг рдХрд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╡реГрдХреНрд╖ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХрд╛рд░реНрдпрдХреНрд░рдо рдереЙрдорд╕рди рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдирдХреЗрдП рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИред рдПрдирдПрдлрдП рдХреЛ рдбреАрдПрдлрдП рдореЗрдВ рдмрджрд▓рдиреЗ рдФрд░ рдЗрд╕реЗ рдХрдо рд╕реЗ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛; рдореИрдВ рдЙрдирдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред
рдЪреВрдВрдХрд┐ HTTP рд╕рдВрджреЗрд╢ рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рд╡рд╕реНрддреБ рд╣реИ, рдЗрд╕рд▓рд┐рдП parser рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рд╡рд░реНрдЧ рд╣реИ (рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ), HTTP рд╕рд░реНрд╡рд░ рдХреЗ рдЕрдиреБрд░реВрдк рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рдеред рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рд╕рдВрджреЗрд╢ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╢реАрди рдХреЗ рд▓рд┐рдП, рдХрдХреНрд╖рд╛ рдЪрд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рд░рд▓ рдХреНрд░рд┐рдпрд╛рдПрдВ рдкреАрдврд╝реА рдХреЗ рджреМрд░рд╛рди рдбреАрд╕реАрдП рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╣реЛрд╕реНрдЯ рд╣реЗрдбрд░ рдХрд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХрдХреНрд╖рд╛ рдореЗрдВ рд╣реЗрдбрд░ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рджреЛ рдЪрд░ рд╣реИрдВред рдорд╢реАрди рдХреЗ рд╣реЛрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рди рд╕реЗ рдЬрд╛рдиреЗ рдкрд░ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ, рдЗрди рдЪрд░реЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдпрд╛рдПрдВ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИрдВред рдбреАрдХреЗрдП рдореЗрдВ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХрд┐рд╕ рд░рд╛рдЬреНрдп рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, NKA рдмрдирд╛рддреЗ рд╕рдордп рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдпреЗ рд▓реЗрдмрд▓ рдСрдЯреЛрдореЗрдЯрди рдХреЗ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╣реЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдЕрдВрдХрди рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд░рд▓ рднрд╛рд╖рд╛ рдмрдирд╛рдИ рдЧрдИ рдереА рдЬрд┐рд╕рдореЗрдВ рдЪрд░ рдХреЗ рдирд╛рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рд╡реЗ рдХреМрди рд╕реЗ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХ рд╡рд░реНрдЧ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкрд╛рд░реНрд╕рд░ рдХрд╛рд░реНрдп рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдбрд╛рд▓рддрд╛ рд╣реИред
рдПрдХ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдбреАрд╕реАрдП рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)ред рд▓реЗрдХрд┐рди рдорд╢реАрди рддрдХ рд╕реАрдзреА рдкрд╣реБрдВрдЪ рд╣реЛрдиреЗ рдкрд░, рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рдЕрдиреБрдХреВрд▓рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рдордЧреНрд░реА-рд▓реЗрдирд┐рдВрдЧ рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕рдВрджреЗрд╢ рдирд┐рдХрд╛рдп рдХреА рд▓рдВрдмрд╛рдИ рд╣реЛрддреА рд╣реИ; рдЗрд╕ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП, рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рд╕реАрдзреЗ рдорд╢реАрди рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ; рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрдВрдЯ рдХрдВрдЯреЗрдВрдЯрд▓реЗрдиреНрде рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдХреНрд╖реЗрддреНрд░ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЕрдиреБрдХреВрд▓рди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, HTTP рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ (GET, HOST ...) рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╛рд░реНрд╕рд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рдЖрдк рддреБрд░рдВрдд рд╡рд┐рдзрд┐ рдХреЗ рдЕрдиреБрд░реВрдк рд╕реНрдерд┐рд░рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рд╕рдм рдПрдХ рдкрд╛рд╕ рдореЗрдВред
рдпрд╣ рднреА рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдкрд╛рд░реНрд╕рд░ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реА # рдЬреИрд╕реА рдЖрдзреБрдирд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдЪ рд╣реИ, рдЬрд╣рд╛рдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рд╕реА + + рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдк рдпрд╣рд╛рдВ рд╕рд░рд▓ рд╕рдВрдХреЗрддрдХ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рд┐рд╕реНрдЯрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред рдПрдХ BNF рд╡реНрдпрд╛рдХрд░рдг рд╣реИ, рдФрд░ рдЙрд╕ рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдм рдЬрдирд░реЗрдЯрд░ рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рд╕реА # рдореЗрдВ рдбреАрдПрдлрдП рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рддреИрдпрд╛рд░ рдорд╢реАрди рдХреЗ рд╕рд╛рде, рдЖрдк рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
dfa.SetDefaultValue();
dfa.Parse(message0, 0, message0.Length);
dfa.SetArray(message0);
Console.WriteLine("Method: {0}", dfa.Method);
Console.WriteLine("Request-URI: |{0}|", dfa.RequestUri.ToString());
Console.WriteLine("Host: |{0}|", dfa.Host.ToString());
Console.WriteLine("Content-Type: |{0}|", dfa.ContentType.Value.ToString());
Console.WriteLine("Content-Length: {0}", dfa.ContentLength);
Console.WriteLine("Referer: |{0}|", dfa.Referer.ToString());
рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдбреАрдХреЗрдП рдореЗрдВ 1K-2K рдХреЗ рдмрд╛рдж 150K рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП 1K-2K рдХрд╛рдлреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рджреВрд╕рд░реЗ, рдпрд╣ 150K рдмрддрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдореЗрдореЛрд░реА рдФрд░ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ) - рдорд┐рдирдЯ x-tsatред
рдкрд╛рд░реНрд╕рд░ рдХреА рдЧрддрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдПрдХ рдФрдкрдЪрд╛рд░рд┐рдХ рдореЛрдЯрд╛ рдЕрдиреБрдорд╛рди ~ * O (n) рд╣реИ, рдФрд░ рд╕рдВрднрд╡рддрдГ рдЗрд╕реЗ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрдзрд╛рд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореЗрд░реА рдорд╢реАрди рдкрд░ C # рдореЗрдВ рдкрд╛рд░реНрд╕рд░ 3.3 рд╕реЗрдХрдВрдб рдореЗрдВ 1M рд▓рдВрдмрд╛рдИ рдореЗрдВ 220 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд╕рдВрджреЗрд╢ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдЙрдкрд▓рдмреНрдз рд╣реИ:
code.google.com/p/siprevoрдореИрдВрдиреЗ рдЬрдирд░реЗрдЯрд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдХреЛрдб рдХреЛ рд╕рдЯреАрдХ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдорд╕реМрджрд╛ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЬрдирд░реЗрдЯрд░ рд╕реНрд╡рдпрдВ рдереЛрдбрд╝рд╛ (рдХрдо рд╕реЗ рдХрдо рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП) рдерд╛ред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ (рдмрд╕ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдирд╣реАрдВ) рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд░рдгрд╛рд▓реА рд╢рд╛рдпрдж рд╣реА рдереЛрдбрд╝рд╛ рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рд╕рдХрддреА рд╣реИ, рдпрд╣ рдпрд╛ рддреЛ рдХрд╛рдо рдХрд░рддреА рд╣реИ рдпрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЕрджреНрдпрддрди: рдорд╢реАрди
рдХрд╛ "рд╕рдВрдХрд▓рдХ" рдПрдХ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ
рдпрд╣рд╛рдВ рд░рд╣рддрд╛ рд╣реИ ред