diff --git a/docs/api.svg b/docs/api.svg index a61d66af332aeea6c5bbca99a323593f4157d2b0..b80e362dfb6cf9ae8ee31cbcabc72a02ecf6bc71 100644 --- a/docs/api.svg +++ b/docs/api.svg @@ -1,732 +1,391 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- - - Vigenere-API - - Copyright (C) 2023 Axel DAVID - - - - This program is free software: you can redistribute it and/or modify it under - - the terms of the GNU General Public License as published by the Free Software - - Foundation, either version 3 of the License, or (at your option) any later version. - - - - This program is distributed in the hope that it will be useful, but WITHOUT ANY - - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - - - You should have received a copy of the GNU General Public License along with - - this program. If not, see <https://www.gnu.org/licenses/>. - --> - <!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' - 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'> -<svg xmlns:xlink="http://www.w3.org/1999/xlink" fill-opacity="1" color-rendering="auto" color-interpolation="auto" - text-rendering="auto" stroke="black" stroke-linecap="square" width="1550" stroke-miterlimit="10" - shape-rendering="auto" stroke-opacity="1" fill="black" stroke-dasharray="none" font-weight="normal" - stroke-width="1" viewBox="-20 120 1550 650" height="650" xmlns="http://www.w3.org/2000/svg" font-family="'Dialog'" - font-style="normal" stroke-linejoin="miter" font-size="12px" stroke-dashoffset="0" image-rendering="auto" -><!--Generated by the Batik Graphics2D SVG Generator--> - <defs id="genericDefs" - /> - <g - > - <defs id="defs1" - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath1" - > - <path d="M0 0 L2147483647 0 L2147483647 2147483647 L0 2147483647 L0 0 Z" - /> - </clipPath - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2" - > - <path d="M0 0 L0 40 L140 40 L140 0 Z" - /> - </clipPath - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3" - > - <path d="M0 0 L0 230 L350 230 L350 0 Z" - /> - </clipPath - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath4" - > - <path d="M0 0 L0 80 L200 80 L200 0 Z" - /> - </clipPath - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5" - > - <path d="M0 0 L0 80 L160 80 L160 0 Z" - /> - </clipPath - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath6" - > - <path d="M0 0 L0 100 L350 100 L350 0 Z" - /> - </clipPath - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath7" - > - <path d="M0 0 L0 120 L300 120 L300 0 Z" - /> - </clipPath - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath8" - > - <path d="M0 0 L0 160 L310 160 L310 0 Z" - /> - </clipPath - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath9" - > - <path d="M0 0 L0 90 L440 90 L440 0 Z" - /> - </clipPath - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath10" - > - <path d="M0 0 L0 100 L440 100 L440 0 Z" - /> - </clipPath - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath11" - > - <path d="M0 0 L0 40 L120 40 L120 0 Z" - /> - </clipPath - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath12" - > - <path d="M0 0 L0 80 L30 80 L30 0 Z" - /> - </clipPath - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath13" - > - <path d="M0 0 L0 100 L30 100 L30 0 Z" - /> - </clipPath - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath14" - > - <path d="M0 0 L0 50 L110 50 L110 0 Z" - /> - </clipPath - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath15" - > - <path d="M0 0 L0 100 L140 100 L140 0 Z" - /> - </clipPath - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath16" - > - <path d="M0 0 L0 40 L160 40 L160 0 Z" - /> - </clipPath - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath17" - > - <path d="M0 0 L0 150 L250 150 L250 0 Z" - /> - </clipPath - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath18" - > - <path d="M0 0 L0 130 L70 130 L70 0 Z" - /> - </clipPath - > - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath19" - > - <path d="M0 0 L0 180 L100 180 L100 0 Z" - /> - </clipPath - > - </defs - > - <g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(1160,140)" stroke-opacity="0" - stroke="rgb(255,255,255)" - > - <path d="M0.5 0.5 L128.5 0.5 L139 12.5 L139 39 L0.5 39 L0.5 0.5" stroke="none" clip-path="url(#clipPath2)" - /> - </g - > - <g transform="translate(1160,140)" - > - <path fill="none" d="M0.5 0.5 L128.5 0.5 L139 12.5 L139 39 L0.5 39 L0.5 0.5" clip-path="url(#clipPath2)" - /> - <path fill="none" d="M128.5 0.5 L128.5 12.5 L139 12.5" clip-path="url(#clipPath2)" - /> - <text x="5" font-size="14px" y="17.5312" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >Taux is a float</text - > - </g - > - <g fill="rgb(255,175,175)" fill-opacity="0.4902" transform="translate(0,220)" stroke-opacity="0.4902" - stroke="rgb(255,175,175)" - > - <rect x="0.5" width="348.5" height="228.5" y="0.5" clip-path="url(#clipPath3)" stroke="none" - /> - </g - > - <g transform="translate(0,220)" - > - <rect fill="none" x="0.5" width="348.5" height="228.5" y="0.5" clip-path="url(#clipPath3)" - /> - <text x="133" font-size="14px" y="17.5312" clip-path="url(#clipPath3)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >Configuration</text - > - <path fill="none" d="M1 23.5312 L349 23.5312" clip-path="url(#clipPath3)" - /> - <text x="5" font-size="14px" y="38.0625" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ host: IPvAnyAddress</text - > - <text x="5" font-size="14px" y="53.5938" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ port: StrictPositiveInt = 8080</text - > - <text x="5" font-size="14px" y="69.125" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ workers: StrictPositiveInt = 1</text - > - <text x="5" font-size="14px" y="84.6562" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ limit_concurrency: StrictPositiveInt | None = None</text - > - <text x="5" font-size="14px" y="100.1875" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ limit_max_requests: StrictPositiveInt | None = None</text - > - <text x="5" font-size="14px" y="115.7188" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ reload: StrictBool = False</text - > - <text x="5" font-size="14px" y="131.25" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ reload_dirs: Collection[DirectoryPath] | None = None</text - > - <text x="5" font-size="14px" y="146.7812" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ reload_include: Pattern | None = None</text - > - <text x="5" font-size="14px" y="162.3125" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ reload_exclude: Pattern | None = None</text - > - <path fill="none" d="M1 168.3125 L349 168.3125" clip-path="url(#clipPath3)" - /> - <text x="5" font-size="14px" y="182.8438" text-decoration="underline" clip-path="url(#clipPath3)" - font-family="sans-serif" stroke="none" xml:space="preserve" - >+ default(): Configuration</text - > - <text x="5" font-size="14px" y="198.375" text-decoration="underline" clip-path="url(#clipPath3)" - font-family="sans-serif" stroke="none" xml:space="preserve" - >+ from_file(in file: Path): Configuration</text - > - <text x="5" font-size="14px" y="213.9062" text-decoration="underline" clip-path="url(#clipPath3)" - font-family="sans-serif" stroke="none" xml:space="preserve" - >+ to_file(in config: Configuration, in file: Path): None</text - > - </g - > - <g fill="rgb(255,175,175)" fill-opacity="0.4902" transform="translate(80,520)" stroke-opacity="0.4902" - stroke="rgb(255,175,175)" - > - <rect x="0.5" width="198.5" height="78.5" y="0.5" clip-path="url(#clipPath4)" stroke="none" - /> - </g - > - <g transform="translate(80,520)" - > - <rect fill="none" x="0.5" width="198.5" height="78.5" y="0.5" clip-path="url(#clipPath4)" - /> - <text x="60" font-size="14px" y="17.5312" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >VigenereAPI</text - > - <path fill="none" d="M1 23.5312 L199 23.5312" clip-path="url(#clipPath4)" - /> - <path fill="none" d="M1 44.0625 L199 44.0625" clip-path="url(#clipPath4)" - /> - <text x="5" font-size="14px" y="58.5938" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ ctor(config: Configuration)</text - > - <text x="5" font-size="14px" y="74.125" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ start(): NoReturn</text - > - </g - > - <g fill="rgb(255,175,175)" fill-opacity="0.4902" transform="translate(360,520)" stroke-opacity="0.4902" - stroke="rgb(255,175,175)" - > - <rect x="0.5" width="158.5" height="78.5" y="0.5" clip-path="url(#clipPath5)" stroke="none" - /> - </g - > - <g transform="translate(360,520)" - > - <rect fill="none" x="0.5" width="158.5" height="78.5" y="0.5" clip-path="url(#clipPath5)" - /> - <text x="42" font-size="14px" y="17.5312" clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >BlackSheep</text - > - <path fill="none" d="M1 23.5312 L159 23.5312" clip-path="url(#clipPath5)" - /> - <path fill="none" d="M1 44.0625 L159 44.0625" clip-path="url(#clipPath5)" - /> - <text x="5" font-size="14px" y="58.5938" clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ start(): NoReturn</text - > - </g - > - <g fill="rgb(0,0,255)" fill-opacity="0.4902" transform="translate(1020,230)" stroke-opacity="0.4902" - stroke="rgb(0,0,255)" - > - <rect x="0.5" width="348.5" height="98.5" y="0.5" clip-path="url(#clipPath6)" stroke="none" - /> - </g - > - <g transform="translate(1020,230)" - > - <rect fill="none" x="0.5" width="348.5" height="98.5" y="0.5" clip-path="url(#clipPath6)" - /> - <text x="149" font-size="14px" y="17.5312" clip-path="url(#clipPath6)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >«Entity»</text - > - <text x="101" font-size="14px" y="33.0625" clip-path="url(#clipPath6)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >VigenereDecryptOutput</text - > - <path fill="none" d="M1 39.0625 L349 39.0625" clip-path="url(#clipPath6)" - /> - <text x="5" font-size="14px" y="53.5938" clip-path="url(#clipPath6)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >- possibilities: Collection[Taux, VigenereData]</text - > - <path fill="none" d="M1 59.5938 L349 59.5938" clip-path="url(#clipPath6)" - /> - <text x="5" font-size="14px" y="74.125" text-decoration="underline" clip-path="url(#clipPath6)" - font-family="sans-serif" stroke="none" xml:space="preserve" - >+ to_json(in data: VigenereDecryptOutput): str</text - > - <text x="5" font-size="14px" y="89.6562" clip-path="url(#clipPath6)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ ctor(in possibilities: Collection[Taux, VigenereData])</text - > - </g - > - <g fill="rgb(0,0,255)" fill-opacity="0.4902" transform="translate(630,230)" stroke-opacity="0.4902" - stroke="rgb(0,0,255)" - > - <rect x="0.5" width="298.5" height="118.5" y="0.5" clip-path="url(#clipPath7)" stroke="none" - /> - </g - > - <g transform="translate(630,230)" - > - <rect fill="none" x="0.5" width="298.5" height="118.5" y="0.5" clip-path="url(#clipPath7)" - /> - <text x="124" font-size="14px" y="17.5312" clip-path="url(#clipPath7)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >«Entity»</text - > - <text x="82" font-size="14px" y="33.0625" clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >VigenereDecryptInput</text - > - <path fill="none" d="M1 39.0625 L299 39.0625" clip-path="url(#clipPath7)" - /> - <text x="5" font-size="14px" y="53.5938" clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >- message: str</text - > - <path fill="none" d="M1 59.5938 L299 59.5938" clip-path="url(#clipPath7)" - /> - <text x="5" font-size="14px" y="74.125" text-decoration="underline" clip-path="url(#clipPath7)" - font-family="sans-serif" stroke="none" xml:space="preserve" - >+ from_json(in json: str): VigenereDecryptInput</text - > - <text x="5" font-size="14px" y="89.6562" clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ ctor(in message: str)</text - > - <text x="5" font-size="14px" y="105.1875" clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ decrypt(): VigenereDecryptOutput</text - > - </g - > - <g fill="rgb(0,0,255)" fill-opacity="0.4902" transform="translate(1200,410)" stroke-opacity="0.4902" - stroke="rgb(0,0,255)" - > - <rect x="0.5" width="308.5" height="158.5" y="0.5" clip-path="url(#clipPath8)" stroke="none" - /> - </g - > - <g transform="translate(1200,410)" - > - <rect fill="none" x="0.5" width="308.5" height="158.5" y="0.5" clip-path="url(#clipPath8)" - /> - <text x="129" font-size="14px" y="17.5312" clip-path="url(#clipPath8)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >«Entity»</text - > - <text x="112" font-size="14px" y="33.0625" clip-path="url(#clipPath8)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >VigenereData</text - > - <path fill="none" d="M1 39.0625 L309 39.0625" clip-path="url(#clipPath8)" - /> - <text x="5" font-size="14px" y="53.5938" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >- message: str</text - > - <text x="5" font-size="14px" y="69.125" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >- key: str</text - > - <path fill="none" d="M1 75.125 L309 75.125" clip-path="url(#clipPath8)" - /> - <text x="5" font-size="14px" y="89.6562" text-decoration="underline" clip-path="url(#clipPath8)" - font-family="sans-serif" stroke="none" xml:space="preserve" - >+ from_json(in json: str): VigenereData</text - > - <text x="5" font-size="14px" y="105.1875" text-decoration="underline" clip-path="url(#clipPath8)" - font-family="sans-serif" stroke="none" xml:space="preserve" - >+ to_json(in data: VigenereData): str</text - > - <text x="5" font-size="14px" y="120.7188" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ ctor(in message: str, in key: str)</text - > - <text x="5" font-size="14px" y="136.25" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ cipher(): VigenereData</text - > - <text x="5" font-size="14px" y="151.7812" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ decipher(): VigenereData</text - > - </g - > - <g fill="rgb(0,0,255)" fill-opacity="0.4902" transform="translate(1200,590)" stroke-opacity="0.4902" - stroke="rgb(0,0,255)" - > - <rect x="0.5" width="308.5" height="158.5" y="0.5" clip-path="url(#clipPath8)" stroke="none" - /> - </g - > - <g transform="translate(1200,590)" - > - <rect fill="none" x="0.5" width="308.5" height="158.5" y="0.5" clip-path="url(#clipPath8)" - /> - <text x="129" font-size="14px" y="17.5312" clip-path="url(#clipPath8)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >«Entity»</text - > - <text x="117" font-size="14px" y="33.0625" clip-path="url(#clipPath8)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >CaesarData</text - > - <path fill="none" d="M1 39.0625 L309 39.0625" clip-path="url(#clipPath8)" - /> - <text x="5" font-size="14px" y="53.5938" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >- message: str</text - > - <text x="5" font-size="14px" y="69.125" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >- key: OneCharStr | int</text - > - <path fill="none" d="M1 75.125 L309 75.125" clip-path="url(#clipPath8)" - /> - <text x="5" font-size="14px" y="89.6562" text-decoration="underline" clip-path="url(#clipPath8)" - font-family="sans-serif" stroke="none" xml:space="preserve" - >+ from_json(in json: str): CaesarData</text - > - <text x="5" font-size="14px" y="105.1875" text-decoration="underline" clip-path="url(#clipPath8)" - font-family="sans-serif" stroke="none" xml:space="preserve" - >+ to_json(in data: CaesarData): str</text - > - <text x="5" font-size="14px" y="120.7188" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ ctor(in message: str, in key: OneCharStr | int)</text - > - <text x="5" font-size="14px" y="136.25" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ cipher(): CaesarData</text - > - <text x="5" font-size="14px" y="151.7812" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ decipher(): CaesarData</text - > - </g - > - <g fill="rgb(0,255,0)" fill-opacity="0.4902" transform="translate(630,580)" stroke-opacity="0.4902" - stroke="rgb(0,255,0)" - > - <rect x="0.5" width="438.5" height="88.5" y="0.5" clip-path="url(#clipPath9)" stroke="none" - /> - </g - > - <g transform="translate(630,580)" - > - <rect fill="none" x="0.5" width="438.5" height="88.5" y="0.5" clip-path="url(#clipPath9)" - /> - <text x="170" font-size="14px" y="17.5312" clip-path="url(#clipPath9)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >CesarController</text - > - <path fill="none" d="M1 23.5312 L439 23.5312" clip-path="url(#clipPath9)" - /> - <path fill="none" d="M1 44.0625 L439 44.0625" clip-path="url(#clipPath9)" - /> - <text x="5" font-size="14px" y="58.5938" clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ cipher(in request: CaesarData): CaesarData</text - > - <text x="5" font-size="14px" y="74.125" clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ decipher(in request: CaesarData): CaesarData</text - > - </g - > - <g fill="rgb(0,255,0)" fill-opacity="0.4902" transform="translate(630,450)" stroke-opacity="0.4902" - stroke="rgb(0,255,0)" - > - <rect x="0.5" width="438.5" height="98.5" y="0.5" clip-path="url(#clipPath10)" stroke="none" - /> - </g - > - <g transform="translate(630,450)" - > - <rect fill="none" x="0.5" width="438.5" height="98.5" y="0.5" clip-path="url(#clipPath10)" - /> - <text x="161" font-size="14px" y="17.5312" clip-path="url(#clipPath10)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >VigenereController</text - > - <path fill="none" d="M1 23.5312 L439 23.5312" clip-path="url(#clipPath10)" - /> - <path fill="none" d="M1 44.0625 L439 44.0625" clip-path="url(#clipPath10)" - /> - <text x="5" font-size="14px" y="58.5938" clip-path="url(#clipPath10)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ cipher(in request: VigenereData): VigenereData</text - > - <text x="5" font-size="14px" y="74.125" clip-path="url(#clipPath10)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ decipher(in request: VigenereData): VigenereData</text - > - <text x="5" font-size="14px" y="89.6562" clip-path="url(#clipPath10)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >+ decrypt(in request: VigenereDecryptInput): VigenereDecryptOutput</text - > - </g - > - <g transform="translate(920,270)" - > - <path fill="none" d="M10.5 20.5 L100.5 20.5" clip-path="url(#clipPath11)" - /> - <path fill="none" d="M89.2417 27 L100.5 20.5 L89.2417 14" clip-path="url(#clipPath11)" - /> - <text x="20.1445" font-size="14px" y="16" clip-path="url(#clipPath11)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >«generate»</text - > - </g - > - <g stroke-dasharray="8,5" stroke-miterlimit="5" transform="translate(1210,170)" stroke-linecap="butt" - > - <path fill="none" d="M10.5 60.5 L10.5 10.5" clip-path="url(#clipPath12)" - /> - <path fill="none" stroke-miterlimit="10" stroke-dasharray="none" d="M17 49.2417 L10.5 60.5 L4 49.2417" - clip-path="url(#clipPath12)" stroke-linecap="square" - /> - </g - > - <g transform="translate(160,440)" - > - <path fill="none" d="M10.5 80.5 L10.5 10.5" clip-path="url(#clipPath13)" - /> - <path d="M17 69.2417 L10.5 80.5 L4 69.2417 L10.5 57.9833 L17 69.2417" clip-path="url(#clipPath13)" - stroke="none" - /> - <path fill="none" d="M17 69.2417 L10.5 80.5 L4 69.2417 L10.5 57.9833 L17 69.2417" - clip-path="url(#clipPath13)" - /> - <path fill="none" d="M17 21.7583 L10.5 10.5 L4 21.7583" clip-path="url(#clipPath13)" - /> - <text x="14" font-size="14px" y="64" clip-path="url(#clipPath13)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >1</text - > - <text x="14" font-size="14px" y="38.5312" clip-path="url(#clipPath13)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >1</text - > - </g - > - <g transform="translate(270,540)" - > - <path fill="none" d="M10.5 20.5 L90.5 20.5" clip-path="url(#clipPath14)" - /> - <path d="M21.7583 27 L10.5 20.5 L21.7583 14 L33.0167 20.5 L21.7583 27" clip-path="url(#clipPath14)" - stroke="none" - /> - <path fill="none" d="M21.7583 27 L10.5 20.5 L21.7583 14 L33.0167 20.5 L21.7583 27" - clip-path="url(#clipPath14)" - /> - <path fill="none" d="M79.2417 27 L90.5 20.5 L79.2417 14" clip-path="url(#clipPath14)" - /> - <text x="29" font-size="14px" y="33.5312" clip-path="url(#clipPath14)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >1</text - > - <text x="63.9531" font-size="14px" y="33.5312" clip-path="url(#clipPath14)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >1</text - > - </g - > - <g transform="translate(510,550)" - > - <path fill="none" d="M10.5 10.5 L60.5 10.5" clip-path="url(#clipPath15)" - /> - <path fill="none" d="M60.5 10.5 L60.5 70.5" clip-path="url(#clipPath15)" - /> - <path fill="none" d="M60.5 70.5 L120.5 70.5" clip-path="url(#clipPath15)" - /> - <path d="M21.7583 17 L10.5 10.5 L21.7583 4 L33.0167 10.5 L21.7583 17" clip-path="url(#clipPath15)" - stroke="none" - /> - <path fill="none" d="M21.7583 17 L10.5 10.5 L21.7583 4 L33.0167 10.5 L21.7583 17" - clip-path="url(#clipPath15)" - /> - <path fill="none" d="M109.2417 77 L120.5 70.5 L109.2417 64" clip-path="url(#clipPath15)" - /> - <text x="29" font-size="14px" y="23.5312" clip-path="url(#clipPath15)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >1</text - > - <text x="93.9531" font-size="14px" y="83.5312" clip-path="url(#clipPath15)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >1</text - > - </g - > - <g transform="translate(510,490)" - > - <path fill="none" d="M10.5 70.5 L60.5 70.5" clip-path="url(#clipPath15)" - /> - <path fill="none" d="M60.5 70.5 L60.5 10.5" clip-path="url(#clipPath15)" - /> - <path fill="none" d="M60.5 10.5 L120.5 10.5" clip-path="url(#clipPath15)" - /> - <path d="M21.7583 77 L10.5 70.5 L21.7583 64 L33.0167 70.5 L21.7583 77" clip-path="url(#clipPath15)" - stroke="none" - /> - <path fill="none" d="M21.7583 77 L10.5 70.5 L21.7583 64 L33.0167 70.5 L21.7583 77" - clip-path="url(#clipPath15)" - /> - <path fill="none" d="M109.2417 17 L120.5 10.5 L109.2417 4" clip-path="url(#clipPath15)" - /> - <text x="29" font-size="14px" y="83.5312" clip-path="url(#clipPath15)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >1</text - > - <text x="93.9531" font-size="14px" y="23.5312" clip-path="url(#clipPath15)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >1</text - > - </g - > - <g transform="translate(1060,610)" - > - <path fill="none" d="M140.5 20.5 L10.5 20.5" clip-path="url(#clipPath16)" - /> - <path fill="none" d="M129.2417 14 L140.5 20.5 L129.2417 27" clip-path="url(#clipPath16)" - /> - <text x="56.4927" font-size="14px" y="16" clip-path="url(#clipPath16)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >«use»</text - > - </g - > - <g transform="translate(1060,490)" - > - <path fill="none" d="M10.5 20.5 L140.5 20.5" clip-path="url(#clipPath16)" - /> - <path fill="none" d="M129.2417 27 L140.5 20.5 L129.2417 14" clip-path="url(#clipPath16)" - /> - <text x="56.4927" font-size="14px" y="16" clip-path="url(#clipPath16)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >«use»</text - > - </g - > - <g transform="translate(950,320)" - > - <path fill="none" d="M10.5 130.5 L10.5 90.5" clip-path="url(#clipPath17)" - /> - <path fill="none" d="M10.5 90.5 L230.5 90.5" clip-path="url(#clipPath17)" - /> - <path fill="none" d="M230.5 90.5 L230.5 10.5" clip-path="url(#clipPath17)" - /> - <path fill="none" d="M237 21.7583 L230.5 10.5 L224 21.7583" clip-path="url(#clipPath17)" - /> - <text x="101.4927" font-size="14px" y="86" clip-path="url(#clipPath17)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >«use»</text - > - </g - > - <g transform="translate(740,340)" - > - <path fill="none" d="M10.5 110.5 L10.5 10.5" clip-path="url(#clipPath18)" - /> - <path fill="none" d="M17 21.7583 L10.5 10.5 L4 21.7583" clip-path="url(#clipPath18)" - /> - <text x="14" font-size="14px" y="67.7656" clip-path="url(#clipPath18)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >«use»</text - > - </g - > - <g transform="translate(1360,250)" - > - <path fill="none" d="M10.5 10.5 L60.5 10.5" clip-path="url(#clipPath19)" - /> - <path fill="none" d="M60.5 10.5 L60.5 160.5" clip-path="url(#clipPath19)" - /> - <path d="M21.7583 17 L10.5 10.5 L21.7583 4 L33.0167 10.5 L21.7583 17" clip-path="url(#clipPath19)" - stroke="none" - /> - <path fill="none" d="M21.7583 17 L10.5 10.5 L21.7583 4 L33.0167 10.5 L21.7583 17" - clip-path="url(#clipPath19)" - /> - <path fill="none" d="M54 149.2417 L60.5 160.5 L67 149.2417" clip-path="url(#clipPath19)" - /> - <text x="29" font-size="14px" y="23.5312" clip-path="url(#clipPath19)" font-family="sans-serif" - stroke="none" xml:space="preserve" - >1</text - > - <text x="64" font-size="14px" y="144" clip-path="url(#clipPath19)" font-family="sans-serif" stroke="none" - xml:space="preserve" - >1..*</text - > - </g - > - </g - > -</svg + 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'> +<svg fill-opacity="1" xmlns:xlink="http://www.w3.org/1999/xlink" color-rendering="auto" color-interpolation="auto" text-rendering="auto" stroke="black" stroke-linecap="square" width="1720" stroke-miterlimit="10" shape-rendering="auto" stroke-opacity="1" fill="black" stroke-dasharray="none" font-weight="normal" stroke-width="1" viewBox="-20 70 1720 900" height="900" xmlns="http://www.w3.org/2000/svg" font-family="'Dialog'" font-style="normal" stroke-linejoin="miter" font-size="12px" stroke-dashoffset="0" image-rendering="auto" +><!--Generated by the Batik Graphics2D SVG Generator--><defs id="genericDefs" + /><g + ><defs id="defs1" + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath1" + ><path d="M0 0 L2147483647 0 L2147483647 2147483647 L0 2147483647 L0 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath2" + ><path d="M0 0 L0 120 L310 120 L310 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath3" + ><path d="M0 0 L0 40 L140 40 L140 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath4" + ><path d="M0 0 L0 230 L350 230 L350 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath5" + ><path d="M0 0 L0 80 L200 80 L200 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath6" + ><path d="M0 0 L0 80 L160 80 L160 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath7" + ><path d="M0 0 L0 100 L350 100 L350 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath8" + ><path d="M0 0 L0 160 L310 160 L310 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath9" + ><path d="M0 0 L0 90 L520 90 L520 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath10" + ><path d="M0 0 L0 100 L520 100 L520 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath11" + ><path d="M0 0 L0 160 L110 160 L110 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath12" + ><path d="M0 0 L0 700 L420 700 L420 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath13" + ><path d="M0 0 L0 520 L480 520 L480 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath14" + ><path d="M0 0 L0 250 L450 250 L450 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath15" + ><path d="M0 0 L0 40 L110 40 L110 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath16" + ><path d="M0 0 L0 80 L30 80 L30 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath17" + ><path d="M0 0 L0 100 L30 100 L30 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath18" + ><path d="M0 0 L0 50 L110 50 L110 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath19" + ><path d="M0 0 L0 100 L140 100 L140 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath20" + ><path d="M0 0 L0 40 L120 40 L120 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath21" + ><path d="M0 0 L0 150 L270 150 L270 0 Z" + /></clipPath + ><clipPath clipPathUnits="userSpaceOnUse" id="clipPath22" + ><path d="M0 0 L0 130 L70 130 L70 0 Z" + /></clipPath + ></defs + ><g fill="rgb(0,0,255)" fill-opacity="0.4902" transform="translate(1060,90)" stroke-opacity="0.4902" stroke="rgb(0,0,255)" + ><rect x="0.5" width="308.5" height="118.5" y="0.5" clip-path="url(#clipPath2)" stroke="none" + /></g + ><g transform="translate(1060,90)" + ><rect fill="none" x="0.5" width="308.5" height="118.5" y="0.5" clip-path="url(#clipPath2)" + /><text x="129" font-size="14px" y="17.5312" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve" + >«Entity»</text + ><text x="124" font-size="14px" y="33.0625" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve" + >BaseData</text + ><path fill="none" d="M1 39.0625 L309 39.0625" clip-path="url(#clipPath2)" + /><text x="5" font-size="14px" y="53.5938" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ message: str</text + ><path fill="none" d="M1 59.5938 L309 59.5938" clip-path="url(#clipPath2)" + /><text x="5" font-size="14px" y="74.125" text-decoration="underline" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ from_json(in json: str): BaseData</text + ><text x="5" font-size="14px" y="89.6562" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ ctor(in message: str)</text + ></g + ><g fill="rgb(255,255,255)" fill-opacity="0" transform="translate(1160,340)" stroke-opacity="0" stroke="rgb(255,255,255)" + ><path d="M0.5 0.5 L128.5 0.5 L139 12.5 L139 39 L0.5 39 L0.5 0.5" stroke="none" clip-path="url(#clipPath3)" + /></g + ><g transform="translate(1160,340)" + ><path fill="none" d="M0.5 0.5 L128.5 0.5 L139 12.5 L139 39 L0.5 39 L0.5 0.5" clip-path="url(#clipPath3)" + /><path fill="none" d="M128.5 0.5 L128.5 12.5 L139 12.5" clip-path="url(#clipPath3)" + /><text x="5" font-size="14px" y="17.5312" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" xml:space="preserve" + >Taux is a float</text + ></g + ><g fill="rgb(255,175,175)" fill-opacity="0.4902" transform="translate(0,420)" stroke-opacity="0.4902" stroke="rgb(255,175,175)" + ><rect x="0.5" width="348.5" height="228.5" y="0.5" clip-path="url(#clipPath4)" stroke="none" + /></g + ><g transform="translate(0,420)" + ><rect fill="none" x="0.5" width="348.5" height="228.5" y="0.5" clip-path="url(#clipPath4)" + /><text x="133" font-size="14px" y="17.5312" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve" + >Configuration</text + ><path fill="none" d="M1 23.5312 L349 23.5312" clip-path="url(#clipPath4)" + /><text x="5" font-size="14px" y="38.0625" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ host: IPvAnyAddress</text + ><text x="5" font-size="14px" y="53.5938" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ port: StrictPositiveInt = 8080</text + ><text x="5" font-size="14px" y="69.125" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ workers: StrictPositiveInt = 1</text + ><text x="5" font-size="14px" y="84.6562" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ limit_concurrency: StrictPositiveInt | None = None</text + ><text x="5" font-size="14px" y="100.1875" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ limit_max_requests: StrictPositiveInt | None = None</text + ><text x="5" font-size="14px" y="115.7188" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ reload: StrictBool = False</text + ><text x="5" font-size="14px" y="131.25" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ reload_dirs: Collection[DirectoryPath] | None = None</text + ><text x="5" font-size="14px" y="146.7812" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ reload_include: Pattern | None = None</text + ><text x="5" font-size="14px" y="162.3125" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ reload_exclude: Pattern | None = None</text + ><path fill="none" d="M1 168.3125 L349 168.3125" clip-path="url(#clipPath4)" + /><text x="5" font-size="14px" y="182.8438" text-decoration="underline" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ default(): Configuration</text + ><text x="5" font-size="14px" y="198.375" text-decoration="underline" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ from_file(in file: Path): Configuration</text + ><text x="5" font-size="14px" y="213.9062" text-decoration="underline" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ to_file(in config: Configuration, in file: Path): None</text + ></g + ><g fill="rgb(255,175,175)" fill-opacity="0.4902" transform="translate(80,720)" stroke-opacity="0.4902" stroke="rgb(255,175,175)" + ><rect x="0.5" width="198.5" height="78.5" y="0.5" clip-path="url(#clipPath5)" stroke="none" + /></g + ><g transform="translate(80,720)" + ><rect fill="none" x="0.5" width="198.5" height="78.5" y="0.5" clip-path="url(#clipPath5)" + /><text x="60" font-size="14px" y="17.5312" clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none" xml:space="preserve" + >VigenereAPI</text + ><path fill="none" d="M1 23.5312 L199 23.5312" clip-path="url(#clipPath5)" + /><path fill="none" d="M1 44.0625 L199 44.0625" clip-path="url(#clipPath5)" + /><text x="5" font-size="14px" y="58.5938" clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ ctor(config: Configuration)</text + ><text x="5" font-size="14px" y="74.125" clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ start(): NoReturn</text + ></g + ><g fill="rgb(255,175,175)" fill-opacity="0.4902" transform="translate(360,720)" stroke-opacity="0.4902" stroke="rgb(255,175,175)" + ><rect x="0.5" width="158.5" height="78.5" y="0.5" clip-path="url(#clipPath6)" stroke="none" + /></g + ><g transform="translate(360,720)" + ><rect fill="none" x="0.5" width="158.5" height="78.5" y="0.5" clip-path="url(#clipPath6)" + /><text x="42" font-size="14px" y="17.5312" clip-path="url(#clipPath6)" font-family="sans-serif" stroke="none" xml:space="preserve" + >BlackSheep</text + ><path fill="none" d="M1 23.5312 L159 23.5312" clip-path="url(#clipPath6)" + /><path fill="none" d="M1 44.0625 L159 44.0625" clip-path="url(#clipPath6)" + /><text x="5" font-size="14px" y="58.5938" clip-path="url(#clipPath6)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ start(): NoReturn</text + ></g + ><g fill="rgb(0,0,255)" fill-opacity="0.4902" transform="translate(1020,430)" stroke-opacity="0.4902" stroke="rgb(0,0,255)" + ><rect x="0.5" width="348.5" height="98.5" y="0.5" clip-path="url(#clipPath7)" stroke="none" + /></g + ><g transform="translate(1020,430)" + ><rect fill="none" x="0.5" width="348.5" height="98.5" y="0.5" clip-path="url(#clipPath7)" + /><text x="149" font-size="14px" y="17.5312" clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none" xml:space="preserve" + >«Entity»</text + ><text x="101" font-size="14px" y="33.0625" clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none" xml:space="preserve" + >VigenereDecryptOutput</text + ><path fill="none" d="M1 39.0625 L349 39.0625" clip-path="url(#clipPath7)" + /><text x="5" font-size="14px" y="53.5938" clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ rate: float</text + ><path fill="none" d="M1 59.5938 L349 59.5938" clip-path="url(#clipPath7)" + /><text x="5" font-size="14px" y="74.125" text-decoration="underline" clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ to_json(in data: VigenereDecryptOutput): str</text + ><text x="5" font-size="14px" y="89.6562" clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ ctor(in message: str, in key: str, in rate: float)</text + ></g + ><g fill="rgb(0,0,255)" fill-opacity="0.4902" transform="translate(630,430)" stroke-opacity="0.4902" stroke="rgb(0,0,255)" + ><rect x="0.5" width="308.5" height="118.5" y="0.5" clip-path="url(#clipPath2)" stroke="none" + /></g + ><g transform="translate(630,430)" + ><rect fill="none" x="0.5" width="308.5" height="118.5" y="0.5" clip-path="url(#clipPath2)" + /><text x="129" font-size="14px" y="17.5312" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve" + >«Entity»</text + ><text x="72" font-size="14px" y="33.0625" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve" + >VigenereDecryptInputData</text + ><path fill="none" d="M1 39.0625 L309 39.0625" clip-path="url(#clipPath2)" + /><path fill="none" d="M1 59.5938 L309 59.5938" clip-path="url(#clipPath2)" + /><text x="5" font-size="14px" y="74.125" text-decoration="underline" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ from_json(in json: str): VigenereDecryptInput</text + ><text x="5" font-size="14px" y="89.6562" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ ctor(in message: str)</text + ><text x="5" font-size="14px" y="105.1875" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ decrypt(): Collection[VigenereDecryptOutput]</text + ></g + ><g fill="rgb(0,0,255)" fill-opacity="0.4902" transform="translate(1240,610)" stroke-opacity="0.4902" stroke="rgb(0,0,255)" + ><rect x="0.5" width="308.5" height="158.5" y="0.5" clip-path="url(#clipPath8)" stroke="none" + /></g + ><g transform="translate(1240,610)" + ><rect fill="none" x="0.5" width="308.5" height="158.5" y="0.5" clip-path="url(#clipPath8)" + /><text x="129" font-size="14px" y="17.5312" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" xml:space="preserve" + >«Entity»</text + ><text x="112" font-size="14px" y="33.0625" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" xml:space="preserve" + >VigenereData</text + ><path fill="none" d="M1 39.0625 L309 39.0625" clip-path="url(#clipPath8)" + /><text x="5" font-size="14px" y="53.5938" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ key: str</text + ><path fill="none" d="M1 59.5938 L309 59.5938" clip-path="url(#clipPath8)" + /><text x="5" font-size="14px" y="74.125" text-decoration="underline" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ from_json(in json: str): VigenereData</text + ><text x="5" font-size="14px" y="89.6562" text-decoration="underline" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ to_json(in data: VigenereData): str</text + ><text x="5" font-size="14px" y="105.1875" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ ctor(in message: str, in key: str)</text + ><text x="5" font-size="14px" y="120.7188" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ cipher(): VigenereData</text + ><text x="5" font-size="14px" y="136.25" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ decipher(): VigenereData</text + ></g + ><g fill="rgb(0,0,255)" fill-opacity="0.4902" transform="translate(1240,790)" stroke-opacity="0.4902" stroke="rgb(0,0,255)" + ><rect x="0.5" width="308.5" height="158.5" y="0.5" clip-path="url(#clipPath8)" stroke="none" + /></g + ><g transform="translate(1240,790)" + ><rect fill="none" x="0.5" width="308.5" height="158.5" y="0.5" clip-path="url(#clipPath8)" + /><text x="129" font-size="14px" y="17.5312" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" xml:space="preserve" + >«Entity»</text + ><text x="117" font-size="14px" y="33.0625" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" xml:space="preserve" + >CaesarData</text + ><path fill="none" d="M1 39.0625 L309 39.0625" clip-path="url(#clipPath8)" + /><text x="5" font-size="14px" y="53.5938" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ key: OneCharStr | int</text + ><path fill="none" d="M1 59.5938 L309 59.5938" clip-path="url(#clipPath8)" + /><text x="5" font-size="14px" y="74.125" text-decoration="underline" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ from_json(in json: str): CaesarData</text + ><text x="5" font-size="14px" y="89.6562" text-decoration="underline" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ to_json(in data: CaesarData): str</text + ><text x="5" font-size="14px" y="105.1875" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ ctor(in message: str, in key: OneCharStr | int)</text + ><text x="5" font-size="14px" y="120.7188" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ cipher(): CaesarData</text + ><text x="5" font-size="14px" y="136.25" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ decipher(): CaesarData</text + ></g + ><g fill="rgb(0,255,0)" fill-opacity="0.4902" transform="translate(630,780)" stroke-opacity="0.4902" stroke="rgb(0,255,0)" + ><rect x="0.5" width="518.5" height="88.5" y="0.5" clip-path="url(#clipPath9)" stroke="none" + /></g + ><g transform="translate(630,780)" + ><rect fill="none" x="0.5" width="518.5" height="88.5" y="0.5" clip-path="url(#clipPath9)" + /><text x="210" font-size="14px" y="17.5312" clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none" xml:space="preserve" + >CesarController</text + ><path fill="none" d="M1 23.5312 L519 23.5312" clip-path="url(#clipPath9)" + /><path fill="none" d="M1 44.0625 L519 44.0625" clip-path="url(#clipPath9)" + /><text x="5" font-size="14px" y="58.5938" clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ cipher(in request: CaesarData): CaesarData</text + ><text x="5" font-size="14px" y="74.125" clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ decipher(in request: CaesarData): CaesarData</text + ></g + ><g fill="rgb(0,255,0)" fill-opacity="0.4902" transform="translate(630,650)" stroke-opacity="0.4902" stroke="rgb(0,255,0)" + ><rect x="0.5" width="518.5" height="98.5" y="0.5" clip-path="url(#clipPath10)" stroke="none" + /></g + ><g transform="translate(630,650)" + ><rect fill="none" x="0.5" width="518.5" height="98.5" y="0.5" clip-path="url(#clipPath10)" + /><text x="201" font-size="14px" y="17.5312" clip-path="url(#clipPath10)" font-family="sans-serif" stroke="none" xml:space="preserve" + >VigenereController</text + ><path fill="none" d="M1 23.5312 L519 23.5312" clip-path="url(#clipPath10)" + /><path fill="none" d="M1 44.0625 L519 44.0625" clip-path="url(#clipPath10)" + /><text x="5" font-size="14px" y="58.5938" clip-path="url(#clipPath10)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ cipher(in request: VigenereData): VigenereData</text + ><text x="5" font-size="14px" y="74.125" clip-path="url(#clipPath10)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ decipher(in request: VigenereData): VigenereData</text + ><text x="5" font-size="14px" y="89.6562" clip-path="url(#clipPath10)" font-family="sans-serif" stroke="none" xml:space="preserve" + >+ decrypt(in request: VigenereDecryptInput): Collection[VigenereDecryptOutput]</text + ></g + ><g transform="translate(1360,470)" + ><path fill="none" d="M10.5 20.5 L90.5 20.5" clip-path="url(#clipPath11)" + /><path fill="none" d="M90.5 20.5 L90.5 140.5" clip-path="url(#clipPath11)" + /><path fill="none" d="M84 129.2417 L90.5 140.5 L97 129.2417" clip-path="url(#clipPath11)" + /><text x="18.2617" font-size="14px" y="78.125" clip-path="url(#clipPath11)" font-family="sans-serif" stroke="none" xml:space="preserve" + >«extends»</text + ></g + ><g transform="translate(1200,200)" + ><path fill="none" d="M350.5 680.5 L400.5 680.5" clip-path="url(#clipPath12)" + /><path fill="none" d="M400.5 680.5 L400.5 80.5" clip-path="url(#clipPath12)" + /><path fill="none" d="M400.5 80.5 L10.5 80.5" clip-path="url(#clipPath12)" + /><path fill="none" d="M10.5 80.5 L10.5 10.5" clip-path="url(#clipPath12)" + /><path fill="none" d="M17 21.7583 L10.5 10.5 L4 21.7583" clip-path="url(#clipPath12)" + /></g + ><g transform="translate(1200,200)" + ><path fill="none" d="M350.5 500.5 L400.5 500.5" clip-path="url(#clipPath13)" + /><path fill="none" d="M400.5 500.5 L400.5 80.5" clip-path="url(#clipPath13)" + /><path fill="none" d="M400.5 80.5 L10.5 80.5" clip-path="url(#clipPath13)" + /><path fill="none" d="M10.5 80.5 L10.5 10.5" clip-path="url(#clipPath13)" + /><path fill="none" d="M17 21.7583 L10.5 10.5 L4 21.7583" clip-path="url(#clipPath13)" + /><text x="404" font-size="14px" y="297.7656" clip-path="url(#clipPath13)" font-family="sans-serif" stroke="none" xml:space="preserve" + >«extends»</text + ></g + ><g transform="translate(780,200)" + ><path fill="none" d="M10.5 230.5 L10.5 80.5" clip-path="url(#clipPath14)" + /><path fill="none" d="M10.5 80.5 L430.5 80.5" clip-path="url(#clipPath14)" + /><path fill="none" d="M430.5 80.5 L430.5 10.5" clip-path="url(#clipPath14)" + /><path fill="none" d="M437 21.7583 L430.5 10.5 L424 21.7583" clip-path="url(#clipPath14)" + /><text x="188.2617" font-size="14px" y="76" clip-path="url(#clipPath14)" font-family="sans-serif" stroke="none" xml:space="preserve" + >«extends»</text + ></g + ><g transform="translate(930,470)" + ><path fill="none" d="M10.5 20.5 L90.5 20.5" clip-path="url(#clipPath15)" + /><path fill="none" d="M79.2417 27 L90.5 20.5 L79.2417 14" clip-path="url(#clipPath15)" + /><text x="15.1445" font-size="14px" y="16" clip-path="url(#clipPath15)" font-family="sans-serif" stroke="none" xml:space="preserve" + >«generate»</text + ></g + ><g stroke-dasharray="8,5" stroke-miterlimit="5" transform="translate(1210,370)" stroke-linecap="butt" + ><path fill="none" d="M10.5 60.5 L10.5 10.5" clip-path="url(#clipPath16)" + /><path fill="none" stroke-miterlimit="10" stroke-dasharray="none" d="M17 49.2417 L10.5 60.5 L4 49.2417" clip-path="url(#clipPath16)" stroke-linecap="square" + /></g + ><g transform="translate(160,640)" + ><path fill="none" d="M10.5 80.5 L10.5 10.5" clip-path="url(#clipPath17)" + /><path d="M17 69.2417 L10.5 80.5 L4 69.2417 L10.5 57.9833 L17 69.2417" clip-path="url(#clipPath17)" stroke="none" + /><path fill="none" d="M17 69.2417 L10.5 80.5 L4 69.2417 L10.5 57.9833 L17 69.2417" clip-path="url(#clipPath17)" + /><path fill="none" d="M17 21.7583 L10.5 10.5 L4 21.7583" clip-path="url(#clipPath17)" + /><text x="14" font-size="14px" y="64" clip-path="url(#clipPath17)" font-family="sans-serif" stroke="none" xml:space="preserve" + >1</text + ><text x="14" font-size="14px" y="38.5312" clip-path="url(#clipPath17)" font-family="sans-serif" stroke="none" xml:space="preserve" + >1</text + ></g + ><g transform="translate(270,740)" + ><path fill="none" d="M10.5 20.5 L90.5 20.5" clip-path="url(#clipPath18)" + /><path d="M21.7583 27 L10.5 20.5 L21.7583 14 L33.0167 20.5 L21.7583 27" clip-path="url(#clipPath18)" stroke="none" + /><path fill="none" d="M21.7583 27 L10.5 20.5 L21.7583 14 L33.0167 20.5 L21.7583 27" clip-path="url(#clipPath18)" + /><path fill="none" d="M79.2417 27 L90.5 20.5 L79.2417 14" clip-path="url(#clipPath18)" + /><text x="29" font-size="14px" y="33.5312" clip-path="url(#clipPath18)" font-family="sans-serif" stroke="none" xml:space="preserve" + >1</text + ><text x="63.9531" font-size="14px" y="33.5312" clip-path="url(#clipPath18)" font-family="sans-serif" stroke="none" xml:space="preserve" + >1</text + ></g + ><g transform="translate(510,750)" + ><path fill="none" d="M10.5 10.5 L60.5 10.5" clip-path="url(#clipPath19)" + /><path fill="none" d="M60.5 10.5 L60.5 70.5" clip-path="url(#clipPath19)" + /><path fill="none" d="M60.5 70.5 L120.5 70.5" clip-path="url(#clipPath19)" + /><path d="M21.7583 17 L10.5 10.5 L21.7583 4 L33.0167 10.5 L21.7583 17" clip-path="url(#clipPath19)" stroke="none" + /><path fill="none" d="M21.7583 17 L10.5 10.5 L21.7583 4 L33.0167 10.5 L21.7583 17" clip-path="url(#clipPath19)" + /><path fill="none" d="M109.2417 77 L120.5 70.5 L109.2417 64" clip-path="url(#clipPath19)" + /><text x="29" font-size="14px" y="23.5312" clip-path="url(#clipPath19)" font-family="sans-serif" stroke="none" xml:space="preserve" + >1</text + ><text x="93.9531" font-size="14px" y="83.5312" clip-path="url(#clipPath19)" font-family="sans-serif" stroke="none" xml:space="preserve" + >1</text + ></g + ><g transform="translate(510,690)" + ><path fill="none" d="M10.5 70.5 L60.5 70.5" clip-path="url(#clipPath19)" + /><path fill="none" d="M60.5 70.5 L60.5 10.5" clip-path="url(#clipPath19)" + /><path fill="none" d="M60.5 10.5 L120.5 10.5" clip-path="url(#clipPath19)" + /><path d="M21.7583 77 L10.5 70.5 L21.7583 64 L33.0167 70.5 L21.7583 77" clip-path="url(#clipPath19)" stroke="none" + /><path fill="none" d="M21.7583 77 L10.5 70.5 L21.7583 64 L33.0167 70.5 L21.7583 77" clip-path="url(#clipPath19)" + /><path fill="none" d="M109.2417 17 L120.5 10.5 L109.2417 4" clip-path="url(#clipPath19)" + /><text x="29" font-size="14px" y="83.5312" clip-path="url(#clipPath19)" font-family="sans-serif" stroke="none" xml:space="preserve" + >1</text + ><text x="93.9531" font-size="14px" y="23.5312" clip-path="url(#clipPath19)" font-family="sans-serif" stroke="none" xml:space="preserve" + >1</text + ></g + ><g transform="translate(1140,810)" + ><path fill="none" d="M100.5 20.5 L10.5 20.5" clip-path="url(#clipPath20)" + /><path fill="none" d="M89.2417 14 L100.5 20.5 L89.2417 27" clip-path="url(#clipPath20)" + /><text x="36.4927" font-size="14px" y="16" clip-path="url(#clipPath20)" font-family="sans-serif" stroke="none" xml:space="preserve" + >«use»</text + ></g + ><g transform="translate(1140,690)" + ><path fill="none" d="M10.5 20.5 L100.5 20.5" clip-path="url(#clipPath20)" + /><path fill="none" d="M89.2417 27 L100.5 20.5 L89.2417 14" clip-path="url(#clipPath20)" + /><text x="36.4927" font-size="14px" y="16" clip-path="url(#clipPath20)" font-family="sans-serif" stroke="none" xml:space="preserve" + >«use»</text + ></g + ><g transform="translate(950,520)" + ><path fill="none" d="M10.5 130.5 L10.5 90.5" clip-path="url(#clipPath21)" + /><path fill="none" d="M10.5 90.5 L230.5 90.5" clip-path="url(#clipPath21)" + /><path fill="none" d="M230.5 90.5 L230.5 10.5" clip-path="url(#clipPath21)" + /><path fill="none" d="M237 21.7583 L230.5 10.5 L224 21.7583" clip-path="url(#clipPath21)" + /><text x="101.4927" font-size="14px" y="86" clip-path="url(#clipPath21)" font-family="sans-serif" stroke="none" xml:space="preserve" + >«use»</text + ><text x="234" font-size="14px" y="38.5312" clip-path="url(#clipPath21)" font-family="sans-serif" stroke="none" xml:space="preserve" + >1..*</text + ></g + ><g transform="translate(740,540)" + ><path fill="none" d="M10.5 110.5 L10.5 10.5" clip-path="url(#clipPath22)" + /><path fill="none" d="M17 21.7583 L10.5 10.5 L4 21.7583" clip-path="url(#clipPath22)" + /><text x="14" font-size="14px" y="67.7656" clip-path="url(#clipPath22)" font-family="sans-serif" stroke="none" xml:space="preserve" + >«use»</text + ></g + ></g +></svg > diff --git a/docs/api.uxf b/docs/api.uxf index 206104b544ec142769ad44f57ae4df3ddfaab7c2..c210dbe877d94471a55ef70dde6f74c75275525c 100644 --- a/docs/api.uxf +++ b/docs/api.uxf @@ -5,8 +5,8 @@ <id>UMLClass</id> <coordinates> <x>504</x> - <y>360</y> - <w>352</w> + <y>520</y> + <w>416</w> <h>80</h> </coordinates> <panel_attributes>VigenereController @@ -15,7 +15,7 @@ -- + cipher(in request: VigenereData): VigenereData + decipher(in request: VigenereData): VigenereData -+ decrypt(in request: VigenereDecryptInput): VigenereDecryptOutput ++ decrypt(in request: VigenereDecryptInput): Collection[VigenereDecryptOutput] bg=green</panel_attributes> <additional_attributes/> @@ -24,8 +24,8 @@ bg=green</panel_attributes> <id>UMLClass</id> <coordinates> <x>504</x> - <y>464</y> - <w>352</w> + <y>624</y> + <w>416</w> <h>72</h> </coordinates> <panel_attributes>CesarController @@ -41,16 +41,15 @@ bg=green</panel_attributes> <element> <id>UMLClass</id> <coordinates> - <x>960</x> - <y>472</y> + <x>992</x> + <y>632</y> <w>248</w> <h>128</h> </coordinates> <panel_attributes><<Entity>> CaesarData -- -- message: str -- key: OneCharStr | int ++ key: OneCharStr | int -- __+ from_json(in json: str): CaesarData__ __+ to_json(in data: CaesarData): str__ @@ -64,16 +63,15 @@ bg=blue</panel_attributes> <element> <id>UMLClass</id> <coordinates> - <x>960</x> - <y>328</y> + <x>992</x> + <y>488</y> <w>248</w> <h>128</h> </coordinates> <panel_attributes><<Entity>> VigenereData -- -- message: str -- key: str ++ key: str -- __+ from_json(in json: str): VigenereData__ __+ to_json(in data: VigenereData): str__ @@ -88,18 +86,18 @@ bg=blue</panel_attributes> <id>UMLClass</id> <coordinates> <x>504</x> - <y>184</y> - <w>240</w> + <y>344</y> + <w>248</w> <h>96</h> </coordinates> <panel_attributes><<Entity>> -VigenereDecryptInput +VigenereDecryptInputData -- -- message: str + -- __+ from_json(in json: str): VigenereDecryptInput__ + ctor(in message: str) -+ decrypt(): VigenereDecryptOutput ++ decrypt(): Collection[VigenereDecryptOutput] bg=blue</panel_attributes> <additional_attributes/> </element> @@ -107,39 +105,26 @@ bg=blue</panel_attributes> <id>UMLClass</id> <coordinates> <x>816</x> - <y>184</y> + <y>344</y> <w>280</w> <h>80</h> </coordinates> <panel_attributes><<Entity>> VigenereDecryptOutput -- -- possibilities: Collection[Taux, VigenereData] ++ rate: float -- __+ to_json(in data: VigenereDecryptOutput): str__ -+ ctor(in possibilities: Collection[Taux, VigenereData]) ++ ctor(in message: str, in key: str, in rate: float) bg=blue</panel_attributes> <additional_attributes/> </element> - <element> - <id>Relation</id> - <coordinates> - <x>1088</x> - <y>200</y> - <w>80</w> - <h>144</h> - </coordinates> - <panel_attributes>lt=<<<<<-> -m1=1 -m2=1..*</panel_attributes> - <additional_attributes>10.0;10.0;60.0;10.0;60.0;160.0</additional_attributes> - </element> <element> <id>Relation</id> <coordinates> <x>592</x> - <y>272</y> + <y>432</y> <w>56</w> <h>104</h> </coordinates> @@ -151,43 +136,44 @@ m2=1..*</panel_attributes> <id>Relation</id> <coordinates> <x>760</x> - <y>256</y> - <w>200</w> + <y>416</y> + <w>216</w> <h>120</h> </coordinates> <panel_attributes>lt=-> -<<use>></panel_attributes> +<<use>> +m2=1..*</panel_attributes> <additional_attributes>10.0;130.0;10.0;90.0;230.0;90.0;230.0;10.0</additional_attributes> </element> <element> <id>Relation</id> <coordinates> - <x>848</x> - <y>392</y> - <w>128</w> + <x>912</x> + <y>552</y> + <w>96</w> <h>32</h> </coordinates> <panel_attributes>lt=-> <<use>></panel_attributes> - <additional_attributes>10.0;20.0;140.0;20.0</additional_attributes> + <additional_attributes>10.0;20.0;100.0;20.0</additional_attributes> </element> <element> <id>Relation</id> <coordinates> - <x>848</x> - <y>488</y> - <w>128</w> + <x>912</x> + <y>648</y> + <w>96</w> <h>32</h> </coordinates> <panel_attributes>lt=<- <<use>></panel_attributes> - <additional_attributes>140.0;20.0;10.0;20.0</additional_attributes> + <additional_attributes>100.0;20.0;10.0;20.0</additional_attributes> </element> <element> <id>UMLClass</id> <coordinates> <x>288</x> - <y>416</y> + <y>576</y> <w>128</w> <h>64</h> </coordinates> @@ -204,7 +190,7 @@ bg=pink</panel_attributes> <id>Relation</id> <coordinates> <x>408</x> - <y>392</y> + <y>552</y> <w>112</w> <h>80</h> </coordinates> @@ -218,7 +204,7 @@ m2=1 <id>Relation</id> <coordinates> <x>408</x> - <y>440</y> + <y>600</y> <w>112</w> <h>80</h> </coordinates> @@ -232,7 +218,7 @@ m2=1 <id>UMLClass</id> <coordinates> <x>64</x> - <y>416</y> + <y>576</y> <w>160</w> <h>64</h> </coordinates> @@ -250,7 +236,7 @@ bg=pink</panel_attributes> <id>Relation</id> <coordinates> <x>216</x> - <y>432</y> + <y>592</y> <w>88</w> <h>40</h> </coordinates> @@ -264,7 +250,7 @@ m2=1 <id>UMLClass</id> <coordinates> <x>0</x> - <y>176</y> + <y>336</y> <w>280</w> <h>184</h> </coordinates> @@ -291,7 +277,7 @@ bg=pink</panel_attributes> <id>Relation</id> <coordinates> <x>128</x> - <y>352</y> + <y>512</y> <w>24</w> <h>80</h> </coordinates> @@ -305,7 +291,7 @@ m2=1 <id>UMLNote</id> <coordinates> <x>928</x> - <y>112</y> + <y>272</y> <w>112</w> <h>32</h> </coordinates> @@ -316,7 +302,7 @@ m2=1 <id>Relation</id> <coordinates> <x>968</x> - <y>136</y> + <y>296</y> <w>24</w> <h>64</h> </coordinates> @@ -326,13 +312,84 @@ m2=1 <element> <id>Relation</id> <coordinates> - <x>736</x> - <y>216</y> - <w>96</w> + <x>744</x> + <y>376</y> + <w>88</w> <h>32</h> </coordinates> <panel_attributes>lt=-> <<generate>></panel_attributes> - <additional_attributes>10.0;20.0;100.0;20.0</additional_attributes> + <additional_attributes>10.0;20.0;90.0;20.0</additional_attributes> + </element> + <element> + <id>UMLClass</id> + <coordinates> + <x>848</x> + <y>72</y> + <w>248</w> + <h>96</h> + </coordinates> + <panel_attributes><<Entity>> +BaseData +-- ++ message: str +-- +__+ from_json(in json: str): BaseData__ ++ ctor(in message: str) +bg=blue</panel_attributes> + <additional_attributes/> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>624</x> + <y>160</y> + <w>360</w> + <h>200</h> + </coordinates> + <panel_attributes>lt=-> +<<extends>></panel_attributes> + <additional_attributes>10.0;230.0;10.0;80.0;430.0;80.0;430.0;10.0</additional_attributes> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>960</x> + <y>160</y> + <w>384</w> + <h>416</h> + </coordinates> + <panel_attributes>lt=-> +<<extends>></panel_attributes> + <additional_attributes>350.0;500.0;400.0;500.0;400.0;80.0;10.0;80.0;10.0;10.0</additional_attributes> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>960</x> + <y>160</y> + <w>336</w> + <h>560</h> + </coordinates> + <panel_attributes>lt=-> +</panel_attributes> + <additional_attributes>350.0;680.0;400.0;680.0;400.0;80.0;10.0;80.0;10.0;10.0</additional_attributes> + </element> + <element> + <id>Relation</id> + <coordinates> + <x>1088</x> + <y>376</y> + <w>88</w> + <h>128</h> + </coordinates> + <panel_attributes>lt=-> + + + + +<<extends>> +</panel_attributes> + <additional_attributes>10.0;20.0;90.0;20.0;90.0;140.0</additional_attributes> </element> </diagram>