aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nerv/doc/source/_static/nerv-dataflow.svg468
-rw-r--r--nerv/doc/source/_static/nerv-hierarchy.svg407
-rw-r--r--nerv/doc/source/overview.rst206
3 files changed, 1064 insertions, 17 deletions
diff --git a/nerv/doc/source/_static/nerv-dataflow.svg b/nerv/doc/source/_static/nerv-dataflow.svg
new file mode 100644
index 0000000..1c7ae6c
--- /dev/null
+++ b/nerv/doc/source/_static/nerv-dataflow.svg
@@ -0,0 +1,468 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/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="822" stroke-miterlimit="10" shape-rendering="auto" stroke-opacity="1" fill="black" stroke-dasharray="none" font-weight="normal" stroke-width="1" height="490" font-family="'Dialog'" font-style="normal" stroke-linejoin="miter" font-size="12px" stroke-dashoffset="0" image-rendering="auto">
+ <!--Generated by ySVG 2.5-->
+ <defs id="genericDefs"/>
+ <g>
+ <defs id="defs1">
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
+ <path d="M0 0 L822 0 L822 490 L0 490 L0 0 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
+ <path d="M1280 -2464 L3699.9167 -2464 L3699.9167 -1021.4705 L1280 -1021.4705 L1280 -2464 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
+ <path d="M-1006.9763 -19.5717 L331.0339 -19.5717 L331.0339 778.0256 L-1006.9763 778.0256 L-1006.9763 -19.5717 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
+ <path d="M-13.6165 -3.8893 L546.0029 -3.8893 L546.0029 329.7038 L-13.6165 329.7038 L-13.6165 -3.8893 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
+ <path d="M-13.6165 -108.1353 L546.0029 -108.1353 L546.0029 225.4578 L-13.6165 225.4578 L-13.6165 -108.1353 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
+ <path d="M-21.6583 -21.3458 L567.7791 -21.3458 L567.7791 330.022 L-21.6583 330.022 L-21.6583 -21.3458 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
+ <path d="M-148.9282 -209.865 L2270.9885 -209.865 L2270.9885 1232.6644 L-148.9282 1232.6644 L-148.9282 -209.865 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
+ <path d="M-393.9188 -209.865 L2025.998 -209.865 L2025.998 1232.6644 L-393.9188 1232.6644 L-393.9188 -209.865 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
+ <path d="M-638.9094 -219.9573 L1781.0074 -219.9573 L1781.0074 1222.5723 L-638.9094 1222.5723 L-638.9094 -219.9573 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
+ <path d="M-647.999 -287.7137 L1771.9178 -287.7137 L1771.9178 1154.8158 L-647.999 1154.8158 L-647.999 -287.7137 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
+ <path d="M-148.9282 -323.6947 L2270.9885 -323.6947 L2270.9885 1118.8348 L-148.9282 1118.8348 L-148.9282 -323.6947 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
+ <path d="M-393.9188 -323.6947 L2025.998 -323.6947 L2025.998 1118.8348 L-393.9188 1118.8348 L-393.9188 -323.6947 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
+ <path d="M-909.0414 -219.9573 L1510.8754 -219.9573 L1510.8754 1222.5723 L-909.0414 1222.5723 L-909.0414 -219.9573 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
+ <path d="M-897.7053 -606.6604 L1522.2115 -606.6604 L1522.2115 835.8691 L-897.7053 835.8691 L-897.7053 -606.6604 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
+ <path d="M-106.5682 -501.6688 L2067.1113 -501.6688 L2067.1113 794.077 L-106.5682 794.077 L-106.5682 -501.6688 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
+ <path d="M-389.5156 -501.6688 L1784.1641 -501.6688 L1784.1641 794.077 L-389.5156 794.077 L-389.5156 -501.6688 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
+ <path d="M-106.5682 -623.9453 L2067.1113 -623.9453 L2067.1113 671.8004 L-106.5682 671.8004 L-106.5682 -623.9453 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
+ <path d="M-389.5156 -623.9453 L1784.1641 -623.9453 L1784.1641 671.8004 L-389.5156 671.8004 L-389.5156 -623.9453 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
+ <path d="M-1414.0779 -882.8395 L1005.8389 -882.8395 L1005.8389 559.69 L-1414.0779 559.69 L-1414.0779 -882.8395 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
+ <path d="M-1456.5002 -954.5789 L963.4165 -954.5789 L963.4165 487.9506 L-1456.5002 487.9506 L-1456.5002 -954.5789 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
+ <path d="M-1504.96 -1020.3965 L914.9568 -1020.3965 L914.9568 422.133 L-1504.96 422.133 L-1504.96 -1020.3965 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
+ <path d="M-1741.0543 -1022.9883 L678.8624 -1022.9883 L678.8624 419.5412 L-1741.0543 419.5412 L-1741.0543 -1022.9883 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
+ <path d="M-1957.7085 -1022.9883 L462.2083 -1022.9883 L462.2083 419.5412 L-1957.7085 419.5412 L-1957.7085 -1022.9883 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
+ <path d="M-2174.3625 -1022.9883 L245.5542 -1022.9883 L245.5542 419.5412 L-2174.3625 419.5412 L-2174.3625 -1022.9883 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
+ <path d="M-1414.0779 -1225.3135 L1005.8389 -1225.3135 L1005.8389 217.2161 L-1414.0779 217.2161 L-1414.0779 -1225.3135 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
+ <path d="M-690.4218 -347.1358 L277.545 -347.1358 L277.545 229.876 L-690.4218 229.876 L-690.4218 -347.1358 Z"/>
+ </clipPath>
+ </defs>
+ <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="scale(0.3397,0.3397) translate(-1280,2464)" stroke="white">
+ <rect x="1280" width="2420" height="1443" y="-2464" clip-path="url(#clipPath2)" stroke="none"/>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.6143,0,0,0.6143,618.631,12.0238)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath3)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAD8CAYAAAC2EFsiAAAEXUlEQVR42u3ZW08T&#10;URiG0U5bKbQUkUYsUNSIeEDFeCqieOIgov////hN8jXx1mm9cLPeZF12mjSZJ3tD&#10;q2VmZmZmZmZmZmZmZmblrkrt1AGuhdk7P2vAQmJSP/hGWAq9sAwUr5fq976bHagW&#10;EZP6of0wDOvhFlC8+l2/me99P8PSOCqzmNQPWQ2jMA6TcBco3m7Yyfd+IwyyB+2m&#10;QelmmTYyJA/DQTgEivc8PM33fidPLSt50PjrtbNGwyzUfngZjsLHcAIU7Ti8y7js&#10;hc28rXSbBqWXd6hJnkym4Us4DxdA0U7Dp4xKfVLZDmv5D5rGQVnP+9SL8CFjchV+&#10;AkW7zKgc5/VnkgeMhQTlMK86F/llv4Ci/QhneZAQFEBQAEEBBEVQAEEBBAUQFEEB&#10;QREUQFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQFEBRBAUERFEBQAEEB&#10;BEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEEBRAUQFAEBRAUQFAAQREUEBRBAQQF&#10;EBRAUAQFEBRAUABBERQQFEEBBAUQFEBQBAUQFEBQAEERFBAUQQEEBRAUQFAEBRAU&#10;QFAAQREUEBRBAQQFEBRAUAQFEBRAUABBERQQFEEBBAUQFEBQBAUQFEBQAEERFBAU&#10;QQEEBRAUQFAEBRAUQFAAQfFjg6AICiAogKAAgiIogKAAggIICiAoggIICiAogKAI&#10;CgiKoACCAggKICiCAggKICiAoAgKCIqgAIICCAogKIICCAogKICgCAoIiqAAggII&#10;CiAoggIICiAogKAICgiKoACCAggKICiCAggKICiAoAgKCIqgAIICCAogKIICCAog&#10;KICgCAoIiqAAggIICiAoggIICiAogKD4sUFQBAUQFEBQAEERFEBQAEEBBAUQFEEB&#10;BAUQFEBQBAUERVAAQQEEBRAUQQEEBRAUQFAEBQRFUABBAQQFEBRBAQQFEBRAUAQF&#10;BEVQAEEBBAUQFEEBBAUQFEBQBAUERVAAQQEEBRAUQQEEBRAUQFAEBQRFUABBAQQF&#10;EBRBAQQFEBRAUAQFBEVQAEEBBAUQFEEBBAUQFEBQ/OAgKIICCAogKICgCAoIiqAA&#10;ggIICiAoggIICiAogKAICgiKoACCAggKICiCAggKICiAoAgKCIqgAIICCAogKIIC&#10;CAogKICgCAoIiqAAggIICiAoggIICiAogKAICgiKoACCAggKICiCAggK8B8H5Txc&#10;ZVSAcl2G038RlN184Pv8gu/5ZUC56sPD13AUDsLOvEFZCmthOzwJb8JJfsk3oGif&#10;83TyOjwKW2E4T1DqD66GzfAgPMuHT7NaU6A4s3f7bXiVp5P74XYYhG6ToFT5wZW8&#10;9mzlQ/fD4zyxAOWqTyV74V4Y53VnOXRaDTc7pfTzYaM8rYyB4t3J932Uf/pYyR5U&#10;TYNS/RGVXoZlkNcgoHyDDEkvbyzt1pyrUid1gWulkyGp5jmdmJmZmZmZmZmZmdmC&#10;9xvkgbcsyx38hwAAAABJRU5ErkJggg==" height="252" preserveAspectRatio="none"/>
+ <path fill="rgb(63,99,63)" d="M3117.2969 -2412.5168 L3580.2144 -2412.5168 L3580.2144 -1991.7344 L3117.2969 -1991.7344 Z" clip-path="url(#clipPath2)" transform="matrix(0.5529,0,0,0.5529,-1714.7084,1342.8127)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M3117.2969 -2412.5168 L3580.2144 -2412.5168 L3580.2144 -1991.7344 L3117.2969 -1991.7344 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="3289.7546" xml:space="preserve" y="-2333.7283" clip-path="url(#clipPath2)" stroke="none">Network</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1.4689,0,0,1.4689,20.0007,5.7128)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath4)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAB1CAYAAACPrx4yAAAC9ElEQVR42u3ZW0tU&#10;URjHYefkYdQZLfNYmUWaoZRamSmFKZr1/b9P74JXGLyK2XMRy+cPD3S1B4T9Y63d&#10;1JSZmZmZmZmZmZmZmZnVvVZqA49Ga8TEQlIe3And0AvTwKPQy/e+M4mo3MekPHQ2&#10;9MNCGADVW8z3fS7j0jgq7axTeeAwrIS1sAlUbyOshicZlpmMytink04+pMRkPWyH&#10;3bAf3gPVKu/4XngTnoenYT5vK61xg9LNa045mbzKHzoJp+EMqFZ5xz+HD3mI2MyD&#10;xXSToPTyqLOWDz0OF+EyXAHVKu/49wzLYd5OlvPG0igoi1mn/Xx4+aHbcAdUq7zj&#10;13mAOAo7ee2ZzW+rjYNSrjtfs17lB/8A1fodbvKUcpzfUgQFGMvdg6C8HglKS1AA&#10;QQEEBRAUQQEEBRAUQFAEBQRFUABBAQQFEBRBAQQFEBRAUPzRQVAEBRAUQFAAQREU&#10;EBRBAQQFEBRAUAQFEBRAUABBERQQFEEBBAUQFEBQBAUQFEBQAEERFBAUQQEEBRAU&#10;QFAEBRAUQFAAQREUEBRBAQQFEBRAUAQFEBRAUABBERQQFEEBBAUQFEBQBAUQFEBQ&#10;AEERFBAUQQEEBRAUQFAEBRAUQFAAQREUEBRBAQQFEBRAUAQFBEVQAEEBBMUfHQRF&#10;UABBAQQFEBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEEBRAU&#10;QQFBERRAUABBAQTl34KyEfbDl3AZbsMvoFrlHb8OF+Eo7EwqKAthPeyGk/yBn/lj&#10;V0B1rvMd/5G3ksOwHZabBqUb+uFZFuogfApn4Tx8A6pznu/4afgY9sJWGIaZJkHp&#10;ZJGW8tpT7lHvMiyHQLUO8rvp2/AyDxULeWsZKyhl7XxAP6Oymh9oXwDV28rPHSth&#10;kKeTzlSD3Z9SSlTmslCDPPosAdUapvKfMvMZk26T08loVNojYZlOMyP/Buox+m73&#10;MiSdScTkYViAx8nMzMzMzMzMzMzM/rf9BdNEpMuiLBLIAAAAAElFTkSuQmCC" height="117" preserveAspectRatio="none"/>
+ <path fill="rgb(27,59,59)" d="M1380.123 -2405.9395 L2486.2834 -2405.9395 L2486.2834 -1985.1571 L1380.123 -1985.1571 Z" clip-path="url(#clipPath2)" transform="matrix(0.2313,0,0,0.2313,-309.6237,565.9246)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(68,97,97)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(68,97,97)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1380.123 -2405.9395 L2486.2834 -2405.9395 L2486.2834 -1985.1571 L1380.123 -1985.1571 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="1857.3447" xml:space="preserve" y="-2363.8472" clip-path="url(#clipPath2)" stroke="none">LayerRepo</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1.4689,0,0,1.4689,20.0007,158.8351)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath5)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABnCAYAAADBsb2iAAACxklEQVR42u3Y2Uoc&#10;URSG0Z7tjhrbATuKolFQFEQcgiZEwcQMmvd/n+wDWxAvu+rquH5Yt9XQUB/nVKdj&#10;ZmZmZmZmZmZmZmZmda+besC70X2ltZCUB/fDIAzDCHgXhvne99uIyktMykPH4UNY&#10;Ch+B6i3n+z7JuDSOSi/rVB64EjbCLGwD1dsKm2Etw7KQUZn7dNLPh5SYfAp74Sic&#10;hFOgWuUdPw6HYSesh8W8rXTnDcogrznlZLKfP3QVbsJXoFrlHf8SzvMQsZ0Hi1GT&#10;oAzzqDPLh16G7+Eh/ASqVd7x+wzLWd5OVvPG0igoy1mnk3x4+aE/4QmoVnnHH/MA&#10;cRE+57VnnN9WGwelXHdus17lB/8B1XoOv/OUcpnfUgQFmMvTm6AcvApKV1AAQQEE&#10;BRAUQQEEBRAUQFAEBQRFUABBAQQFEBRBAQQFEBRAUPzpICiCAggKICiAoAgKCIqg&#10;AIICCAogKIICCAogKICgCAoIiqAAggIICiAoggIICiAogKAICgiKoACCAggKICiC&#10;AggKICiAoAgKCIqgAIICCAogKIICCAogKICgCAoIiqAAggIICiAoggIICiAogKAI&#10;CgiKoACCAggKICiCAggKICiAoAgKCIqgAIICCAogKIICgiIogKAAguJPB0ERFEBQ&#10;AEEBBEVQQFAEBRAUQFAAQZknKCfhJvwIf8MzUK3yjv8Kd+Gi7aBsheNwncV6zHoB&#10;dSrv+EP4Fs7DflhrIyiLYTMc5oNvs1r3QLXuMibX+bljN0zDQpOgDMIky7QTjsJZ&#10;HoGu8m4F1OciDxCned2Z5W1lNG9Qynr5gKWwkd9S9vIHDoFqHeQ1ZzdjMs3DxaDT&#10;YKVE/TzmlKvPSp5W1jMwQJ3W812f5slkkp9Aep2Ge4nKMMMyzocDdRvnOz/Kk0mv&#10;yXXnbVS6+UDg/WklJGZmZmZmZmZmZmbW4v4DMdSmeyTaKiQAAAAASUVORK5CYII=" height="103" preserveAspectRatio="none"/>
+ <path fill="rgb(98,69,44)" d="M1380.123 -1955.1571 L2486.2834 -1955.1571 L2486.2834 -1593.1671 L1380.123 -1593.1671 Z" clip-path="url(#clipPath2)" transform="matrix(0.2313,0,0,0.2313,-309.6237,461.6786)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(124,99,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,99,78)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1380.123 -1955.1571 L2486.2834 -1955.1571 L2486.2834 -1593.1671 L1380.123 -1593.1671 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="1857.3447" xml:space="preserve" y="-1915.035" clip-path="url(#clipPath2)" stroke="none">ParamRepo</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1.3946,0,0,1.3946,30.2035,29.7678)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath6)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABhCAYAAAAX6F6/AAACq0lEQVR42u3YW08T&#10;ARSFUQq0FLmFm4BBES8oqAFBRCOCgijq//8/7kkOCeGx7YMZ1k7Wo9PEZL6cYWzM&#10;zMzMzMzMzMzMzMzM2r1OGQfujc4tIwtJ8+CJmIxu9IB7oVvv/cQoonITk+ah/XgQ&#10;szEPtN5cve/Nez9VYRkqKuP1kOlYiJVYi0dA623U+75UcekPc6l06h9PVUzWYyt2&#10;Yjf2gFZ7HS/icazWtdKrQ2OgoEzWudNcJk/rR47iJD4DrfUpPsZBhWUzFm9dKQMF&#10;pVtVWqvL5DBO43tcAq11EecVl/3YrsNietigzNX31G5dJk1MfsVvoLWu4yrO6quk&#10;+fR5WF8sIwnKXp1Bl/WDf4HW+lOHw7c4jpeCAowiKB8EBRAUQFAAQREUQFAAQQEE&#10;RVBAUAQFEBRAUABBERRAUABBAQRFUEBQBAUQFEBQAEERFEBQAEEBBEVQQFAEBRAU&#10;QFAAQREUQFAAQQEERVBAUAQFEBRAUABBERRAUABBAQTFfzgIiqAAggIICiAoggKC&#10;IiiAoACCAgiKoACCAggKICiCAoIiKICgAIICCIqgAIICCAogKIICgiIogKAAggII&#10;iqAAggIICiAoggKCIiiAoACCAgiKoACCAggKICiCAoIiKMD/F5TdOImLuK4fBNqp&#10;ORp+xnkcjTooG/GqSnUWP+rHgHa6quPhNN7H81gdRVBmqkzNA/frs+drhQVory9x&#10;HG9jK5ZjepigTNYDlmIzduJdFas5gw6B1rl5tw/iTR0TzVfKQkzF+NiAa/5hL2Zj&#10;pf6W0pTqWf0I0E7NO74dT2I9Futzp1vHxtigV8pEVWmmCrVUp88K0FrLpQnJfMWk&#10;N8x1cjcq3QpLvz6DgHbrl179+WN8mOvkblQ69UDg/hlJSMzMzMzMzMzMzMxshPsH&#10;LTbpPP65WBAAAAAASUVORK5CYII=" height="97" preserveAspectRatio="none"/>
+ <path fill="rgb(93,118,118)" d="M1407.972 -2337.3108 L2458.4343 -2337.3108 L2458.4343 -2018.0977 L1407.972 -2018.0977 Z" clip-path="url(#clipPath2)" transform="matrix(0.2436,0,0,0.2436,-333.4375,578.8293)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(68,97,97)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(68,97,97)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1407.972 -2337.3108 L2458.4343 -2337.3108 L2458.4343 -2018.0977 L1407.972 -2018.0977 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="1848.916" xml:space="preserve" y="-2291.8345" clip-path="url(#clipPath2)" stroke="none">GraphLayer</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,50.5881,71.2872)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath7)" width="242" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPIAAABoCAYAAADLla2BAAACgElEQVR42u3YWU9T&#10;URiFYVqmtiRimVQcmfRCcQAhGhVwQBz+///xO8m6MvGClo0xPit5LrubkLxnnzIz&#10;Y2ZmZmZmZmZm9h+uB/wVVxZwv8yWOeBazaa/3rQRdwctlEEZlSXgWozS3Xw67E0b&#10;cXfozbJWNsotoJmusfWymu6W0uHsJCH38yRYyoH3ylbZK4+BpnbT292yktt5fpJb&#10;uQt5MU+E7rAn5UV5XY6BZo7KYXmei3OzLKfH/mVD7q7xYW7jrUT8tpyWj0AzZ+Wk&#10;vCn75WFu5cGkIY/yrr6Xm7iL+Lx8A5q5KF8S80HZyf+nhtOEvJF39uM8Lbov+gk0&#10;8yMxn+UC3RUyCFnIIGRAyCBkIYOQhQxCBoQMQhYyCFnIIGRAyICQQchCBiEDQgaE&#10;DEIWMggZEDIgZBCykEHIgJABIYOQhQxCBoQMCBmELGQQspBByICQQchCBiELGYQM&#10;CBmELGQQspBByICQQchCBiELGYQMCBmELGQQspBByICQQchCBiELGYQMCBmELGQQ&#10;spBByICQASGDkIUMQgaEDAgZhCxkEDIgZEDIIGQhg5ABIQNCBiELGYTsjw1CBoQM&#10;QhYyCFnIIGTgL4d8lIMv8kVAG9/L13JaDq8q5PUcdFA+lM/5EqCN8/KpvC+vynZZ&#10;nSbkYQ54VPbzet0dfgI0012Y7/IW/LQ8KOMymCTk7gOLZbls5lZ+lifEAdDUy0S8&#10;U26XG2Wh9C4bcveB+bxer5Q7eTJs5XCgje10dj8Rj/N2PDdpyP08BUZ5Iozzqr0G&#10;NLOay3Oc7oa5VC/9Wv17zHMJepBDgbYG+Wm7kP76k9zGfwoauH5TB2xmZmZmZmZm&#10;ZvbP7BdvDQGneBdrngAAAABJRU5ErkJggg==" height="104" preserveAspectRatio="none"/>
+ <path fill="rgb(126,144,144)" d="M1436.9282 -2246.135 L1658.8811 -2246.135 L1658.8811 -2162.3054 L1436.9282 -2162.3054 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1428.9282,2254.135)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(93,118,118)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(93,118,118)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1436.9282 -2246.135 L1658.8811 -2246.135 L1658.8811 -2162.3054 L1436.9282 -2162.3054 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="1455.1888" xml:space="preserve" y="-2194.5269" clip-path="url(#clipPath2)" stroke="none">AffineLayer</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,133.8068,71.2872)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath8)" width="242" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPIAAABoCAYAAADLla2BAAACgElEQVR42u3YWU9T&#10;URiFYVqmtiRimVQcmfRCcQAhGhVwQBz+///xO8m6MvGClo0xPit5LrubkLxnnzIz&#10;Y2ZmZmZmZmZm9h+uB/wVVxZwv8yWOeBazaa/3rQRdwctlEEZlSXgWozS3Xw67E0b&#10;cXfozbJWNsotoJmusfWymu6W0uHsJCH38yRYyoH3ylbZK4+BpnbT292yktt5fpJb&#10;uQt5MU+E7rAn5UV5XY6BZo7KYXmei3OzLKfH/mVD7q7xYW7jrUT8tpyWj0AzZ+Wk&#10;vCn75WFu5cGkIY/yrr6Xm7iL+Lx8A5q5KF8S80HZyf+nhtOEvJF39uM8Lbov+gk0&#10;8yMxn+UC3RUyCFnIIGRAyCBkIYOQhQxCBoQMQhYyCFnIIGRAyICQQchCBiEDQgaE&#10;DEIWMggZEDIgZBCykEHIgJABIYOQhQxCBoQMCBmELGQQspBByICQQchCBiELGYQM&#10;CBmELGQQspBByICQQchCBiELGYQMCBmELGQQspBByICQQchCBiELGYQMCBmELGQQ&#10;spBByICQASGDkIUMQgaEDAgZhCxkEDIgZEDIIGQhg5ABIQNCBiELGYTsjw1CBoQM&#10;QhYyCFnIIGTgL4d8lIMv8kVAG9/L13JaDq8q5PUcdFA+lM/5EqCN8/KpvC+vynZZ&#10;nSbkYQ54VPbzet0dfgI0012Y7/IW/LQ8KOMymCTk7gOLZbls5lZ+lifEAdDUy0S8&#10;U26XG2Wh9C4bcveB+bxer5Q7eTJs5XCgje10dj8Rj/N2PDdpyP08BUZ5Iozzqr0G&#10;NLOay3Oc7oa5VC/9Wv17zHMJepBDgbYG+Wm7kP76k9zGfwoauH5TB2xmZmZmZmZm&#10;ZvbP7BdvDQGneBdrngAAAABJRU5ErkJggg==" height="104" preserveAspectRatio="none"/>
+ <path fill="rgb(126,144,144)" d="M1681.9188 -2246.135 L1903.8716 -2246.135 L1903.8716 -2162.3054 L1681.9188 -2162.3054 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1673.9188,2254.135)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(93,118,118)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(93,118,118)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1681.9188 -2246.135 L1903.8716 -2246.135 L1903.8716 -2162.3054 L1681.9188 -2162.3054 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="1691.7507" xml:space="preserve" y="-2194.5269" clip-path="url(#clipPath2)" stroke="none">SigmoidLayer</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,217.0254,74.7153)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath9)" width="261" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQUAAADGCAYAAADbnZU/AAADlElEQVR42u3X7UoU&#10;ARiG4Z1d3fzAVPwitMhIF6xQarPsR2plRZ3/+fQOPB6Au4vM0PXA9XcWFt6bmcHA&#10;zMzMzMzMzMzM7BHXAL220BgMy6gsAb00yh03iwhC+7BxWSlrZR3olbXc7zj33Cwi&#10;CO2Dt8pu2S8HQOe1t7qXu93KHc8VhvZVYzkP2ilH5biclFOgF17nbo9yx+u56+Gs&#10;UXiSwhyWSTkv03IJdN7H8iF3O8kdb+WuZ4pC+4qxmroc58FX5brcAp13U77mbs9z&#10;xzu569GsUVjLN8lJ3hDaINyV30Dn/So/crfT3PFe7nquKOzn2+Qy9Wl/7C/QeX8S&#10;htvc72nuWRRAFEQBEAVAFABRAEQBEAVAFABRAEQBEAVAFABRAEQBEAVRAFEQBRAF&#10;UQBREAUQBVEAURAFEAVRAFEQBUAUAFEARAEQBUAUAFEARAEQBUAUAFEARAEQBUAU&#10;RAFEQRRAFEQBREEUQBREAURBFEAURAFEQRQAUQBEARAFQBQAUQBEARAFQBQAUQBE&#10;ARAFQBT84SAKogCiIAogCqIAoiAKIAqiAKIgCiAKogCiIAqAKACiAIgCIAqAKACi&#10;AIgCIAqAKACiAIgCIAr+bBAFUQBREAUQBVEAURAFEAVRAFEQBRAFUQBREAVAFABR&#10;AEQBEAVAFABRAEQBEAVAFABRAEQBEAVRAFEQBRAFUQBREAUQBVEAURAFEAVRAFEQ&#10;BRAFUQBEARAFQBQAUQBEARAFQBQAUQBEARAFQBQAURAFEAVRAFEQBRAFUQBREAUQ&#10;BVEAURAFEAVRAEQBEAVAFABRAEQBEAVAFABRAEQBEAVAFABRAERBFEAURAFEQRRA&#10;FEQBREEUQBREAURBFEAURAEQBUAUAFEARAEQBUAUAFEARAEQBUAUAFEARAEQBVEA&#10;URAFEAVRAFEQBRAFUQBREAUQBVEAURAFQBQAUQBEARAFQBQAUQBEARAFQBQAUQD+&#10;hyiclGm5Lj8TBqDb2iDc5W6nueO5o7BadsurclG+pDrfgc77Vm5ytxe5493c9cxR&#10;WCnb5UU5K+/L5/wI0G1X5VPu9ix3vJ27nikKwzIuG+WgvCyT8qa8AzrvbWIwyf0e&#10;5J7Hue8HrylLqcrTsleelaPyHOiFw9xte7+bueel3Pdg1reF+zCspzKbQK9s5H7v&#10;gzAczLEmDxjlYct59QD6Yzn3O8o9N4MFrQF6zczMzMzMzMzMzOxx9g+9kLh6Jr14&#10;3AAAAABJRU5ErkJggg==" height="198" preserveAspectRatio="none"/>
+ <path fill="rgb(93,118,118)" d="M1926.9094 -2236.0427 L2167.0415 -2236.0427 L2167.0415 -2058.5679 L1926.9094 -2058.5679 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1918.9094,2244.0427)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(68,97,97)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(68,97,97)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1926.9094 -2236.0427 L2167.0415 -2236.0427 L2167.0415 -2058.5679 L1926.9094 -2058.5679 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="1962.6884" xml:space="preserve" y="-2189.4087" clip-path="url(#clipPath2)" stroke="none">GraphLayer</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,220.113,97.7309)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath10)" width="242" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPIAAABoCAYAAADLla2BAAACgElEQVR42u3YWU9T&#10;URiFYVqmtiRimVQcmfRCcQAhGhVwQBz+///xO8m6MvGClo0xPit5LrubkLxnnzIz&#10;Y2ZmZmZmZmZm9h+uB/wVVxZwv8yWOeBazaa/3rQRdwctlEEZlSXgWozS3Xw67E0b&#10;cXfozbJWNsotoJmusfWymu6W0uHsJCH38yRYyoH3ylbZK4+BpnbT292yktt5fpJb&#10;uQt5MU+E7rAn5UV5XY6BZo7KYXmei3OzLKfH/mVD7q7xYW7jrUT8tpyWj0AzZ+Wk&#10;vCn75WFu5cGkIY/yrr6Xm7iL+Lx8A5q5KF8S80HZyf+nhtOEvJF39uM8Lbov+gk0&#10;8yMxn+UC3RUyCFnIIGRAyCBkIYOQhQxCBoQMQhYyCFnIIGRAyICQQchCBiEDQgaE&#10;DEIWMggZEDIgZBCykEHIgJABIYOQhQxCBoQMCBmELGQQspBByICQQchCBiELGYQM&#10;CBmELGQQspBByICQQchCBiELGYQMCBmELGQQspBByICQQchCBiELGYQMCBmELGQQ&#10;spBByICQASGDkIUMQgaEDAgZhCxkEDIgZEDIIGQhg5ABIQNCBiELGYTsjw1CBoQM&#10;QhYyCFnIIGTgL4d8lIMv8kVAG9/L13JaDq8q5PUcdFA+lM/5EqCN8/KpvC+vynZZ&#10;nSbkYQ54VPbzet0dfgI0012Y7/IW/LQ8KOMymCTk7gOLZbls5lZ+lifEAdDUy0S8&#10;U26XG2Wh9C4bcveB+bxer5Q7eTJs5XCgje10dj8Rj/N2PDdpyP08BUZ5Iozzqr0G&#10;NLOay3Oc7oa5VC/9Wv17zHMJepBDgbYG+Wm7kP76k9zGfwoauH5TB2xmZmZmZmZm&#10;ZvbP7BdvDQGneBdrngAAAABJRU5ErkJggg==" height="104" preserveAspectRatio="none"/>
+ <path fill="rgb(126,144,144)" d="M1935.999 -2168.2864 L2157.9519 -2168.2864 L2157.9519 -2084.4565 L1935.999 -2084.4565 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1927.999,2176.2863)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(93,118,118)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(93,118,118)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1935.999 -2168.2864 L2157.9519 -2168.2864 L2157.9519 -2084.4565 L1935.999 -2084.4565 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="1954.2596" xml:space="preserve" y="-2116.6782" clip-path="url(#clipPath2)" stroke="none">AffineLayer</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,50.5881,109.953)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath11)" width="242" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPIAAABoCAYAAADLla2BAAACgElEQVR42u3YWU9T&#10;URiFYVqmtiRimVQcmfRCcQAhGhVwQBz+///xO8m6MvGClo0xPit5LrubkLxnnzIz&#10;Y2ZmZmZmZmZm9h+uB/wVVxZwv8yWOeBazaa/3rQRdwctlEEZlSXgWozS3Xw67E0b&#10;cXfozbJWNsotoJmusfWymu6W0uHsJCH38yRYyoH3ylbZK4+BpnbT292yktt5fpJb&#10;uQt5MU+E7rAn5UV5XY6BZo7KYXmei3OzLKfH/mVD7q7xYW7jrUT8tpyWj0AzZ+Wk&#10;vCn75WFu5cGkIY/yrr6Xm7iL+Lx8A5q5KF8S80HZyf+nhtOEvJF39uM8Lbov+gk0&#10;8yMxn+UC3RUyCFnIIGRAyCBkIYOQhQxCBoQMQhYyCFnIIGRAyICQQchCBiEDQgaE&#10;DEIWMggZEDIgZBCykEHIgJABIYOQhQxCBoQMCBmELGQQspBByICQQchCBiELGYQM&#10;CBmELGQQspBByICQQchCBiELGYQMCBmELGQQspBByICQQchCBiELGYQMCBmELGQQ&#10;spBByICQASGDkIUMQgaEDAgZhCxkEDIgZEDIIGQhg5ABIQNCBiELGYTsjw1CBoQM&#10;QhYyCFnIIGTgL4d8lIMv8kVAG9/L13JaDq8q5PUcdFA+lM/5EqCN8/KpvC+vynZZ&#10;nSbkYQ54VPbzet0dfgI0012Y7/IW/LQ8KOMymCTk7gOLZbls5lZ+lifEAdDUy0S8&#10;U26XG2Wh9C4bcveB+bxer5Q7eTJs5XCgje10dj8Rj/N2PDdpyP08BUZ5Iozzqr0G&#10;NLOay3Oc7oa5VC/9Wv17zHMJepBDgbYG+Wm7kP76k9zGfwoauH5TB2xmZmZmZmZm&#10;ZvbP7BdvDQGneBdrngAAAABJRU5ErkJggg==" height="104" preserveAspectRatio="none"/>
+ <path fill="rgb(126,144,144)" d="M1436.9282 -2132.3054 L1658.8811 -2132.3054 L1658.8811 -2048.4756 L1436.9282 -2048.4756 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1428.9282,2140.3053)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(93,118,118)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(93,118,118)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1436.9282 -2132.3054 L1658.8811 -2132.3054 L1658.8811 -2048.4756 L1436.9282 -2048.4756 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="1455.1888" xml:space="preserve" y="-2080.697" clip-path="url(#clipPath2)" stroke="none">AffineLayer</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,133.8068,109.953)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath12)" width="242" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPIAAABoCAYAAADLla2BAAACgElEQVR42u3YWU9T&#10;URiFYVqmtiRimVQcmfRCcQAhGhVwQBz+///xO8m6MvGClo0xPit5LrubkLxnnzIz&#10;Y2ZmZmZmZmZm9h+uB/wVVxZwv8yWOeBazaa/3rQRdwctlEEZlSXgWozS3Xw67E0b&#10;cXfozbJWNsotoJmusfWymu6W0uHsJCH38yRYyoH3ylbZK4+BpnbT292yktt5fpJb&#10;uQt5MU+E7rAn5UV5XY6BZo7KYXmei3OzLKfH/mVD7q7xYW7jrUT8tpyWj0AzZ+Wk&#10;vCn75WFu5cGkIY/yrr6Xm7iL+Lx8A5q5KF8S80HZyf+nhtOEvJF39uM8Lbov+gk0&#10;8yMxn+UC3RUyCFnIIGRAyCBkIYOQhQxCBoQMQhYyCFnIIGRAyICQQchCBiEDQgaE&#10;DEIWMggZEDIgZBCykEHIgJABIYOQhQxCBoQMCBmELGQQspBByICQQchCBiELGYQM&#10;CBmELGQQspBByICQQchCBiELGYQMCBmELGQQspBByICQQchCBiELGYQMCBmELGQQ&#10;spBByICQASGDkIUMQgaEDAgZhCxkEDIgZEDIIGQhg5ABIQNCBiELGYTsjw1CBoQM&#10;QhYyCFnIIGTgL4d8lIMv8kVAG9/L13JaDq8q5PUcdFA+lM/5EqCN8/KpvC+vynZZ&#10;nSbkYQ54VPbzet0dfgI0012Y7/IW/LQ8KOMymCTk7gOLZbls5lZ+lifEAdDUy0S8&#10;U26XG2Wh9C4bcveB+bxer5Q7eTJs5XCgje10dj8Rj/N2PDdpyP08BUZ5Iozzqr0G&#10;NLOay3Oc7oa5VC/9Wv17zHMJepBDgbYG+Wm7kP76k9zGfwoauH5TB2xmZmZmZmZm&#10;ZvbP7BdvDQGneBdrngAAAABJRU5ErkJggg==" height="104" preserveAspectRatio="none"/>
+ <path fill="rgb(126,144,144)" d="M1681.9188 -2132.3054 L1903.8716 -2132.3054 L1903.8716 -2048.4756 L1681.9188 -2048.4756 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1673.9188,2140.3053)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(93,118,118)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(93,118,118)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1681.9188 -2132.3054 L1903.8716 -2132.3054 L1903.8716 -2048.4756 L1681.9188 -2048.4756 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="1717.0369" xml:space="preserve" y="-2080.697" clip-path="url(#clipPath2)" stroke="none">BiasLayer</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,308.7842,74.7153)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath13)" width="261" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQUAAADGCAYAAADbnZU/AAADlElEQVR42u3X7UoU&#10;ARiG4Z1d3fzAVPwitMhIF6xQarPsR2plRZ3/+fQOPB6Au4vM0PXA9XcWFt6bmcHA&#10;zMzMzMzMzMzM7BHXAL220BgMy6gsAb00yh03iwhC+7BxWSlrZR3olbXc7zj33Cwi&#10;CO2Dt8pu2S8HQOe1t7qXu93KHc8VhvZVYzkP2ilH5biclFOgF17nbo9yx+u56+Gs&#10;UXiSwhyWSTkv03IJdN7H8iF3O8kdb+WuZ4pC+4qxmroc58FX5brcAp13U77mbs9z&#10;xzu569GsUVjLN8lJ3hDaINyV30Dn/So/crfT3PFe7nquKOzn2+Qy9Wl/7C/QeX8S&#10;htvc72nuWRRAFEQBEAVAFABRAEQBEAVAFABRAEQBEAVAFABRAEQBEAVRAFEQBRAF&#10;UQBREAUQBVEAURAFEAVRAFEQBUAUAFEARAEQBUAUAFEARAEQBUAUAFEARAEQBUAU&#10;RAFEQRRAFEQBREEUQBREAURBFEAURAFEQRQAUQBEARAFQBQAUQBEARAFQBQAUQBE&#10;ARAFQBT84SAKogCiIAogCqIAoiAKIAqiAKIgCiAKogCiIAqAKACiAIgCIAqAKACi&#10;AIgCIAqAKACiAIgCIAr+bBAFUQBREAUQBVEAURAFEAVRAFEQBRAFUQBREAVAFABR&#10;AEQBEAVAFABRAEQBEAVAFABRAEQBEAVRAFEQBRAFUQBREAUQBVEAURAFEAVRAFEQ&#10;BRAFUQBEARAFQBQAUQBEARAFQBQAUQBEARAFQBQAURAFEAVRAFEQBRAFUQBREAUQ&#10;BVEAURAFEAVRAEQBEAVAFABRAEQBEAVAFABRAEQBEAVAFABRAERBFEAURAFEQRRA&#10;FEQBREEUQBREAURBFEAURAEQBUAUAFEARAEQBUAUAFEARAEQBUAUAFEARAEQBVEA&#10;URAFEAVRAFEQBRAFUQBREAUQBVEAURAFQBQAUQBEARAFQBQAUQBEARAFQBQAUQD+&#10;hyiclGm5Lj8TBqDb2iDc5W6nueO5o7BadsurclG+pDrfgc77Vm5ytxe5493c9cxR&#10;WCnb5UU5K+/L5/wI0G1X5VPu9ix3vJ27nikKwzIuG+WgvCyT8qa8AzrvbWIwyf0e&#10;5J7Hue8HrylLqcrTsleelaPyHOiFw9xte7+bueel3Pdg1reF+zCspzKbQK9s5H7v&#10;gzAczLEmDxjlYct59QD6Yzn3O8o9N4MFrQF6zczMzMzMzMzMzOxx9g+9kLh6Jr14&#10;3AAAAABJRU5ErkJggg==" height="198" preserveAspectRatio="none"/>
+ <path fill="rgb(93,118,118)" d="M2197.0415 -2236.0427 L2437.1736 -2236.0427 L2437.1736 -2058.5679 L2197.0415 -2058.5679 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-2189.0414,2244.0427)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(68,97,97)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(68,97,97)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M2197.0415 -2236.0427 L2437.1736 -2236.0427 L2437.1736 -2058.5679 L2197.0415 -2058.5679 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="2232.8203" xml:space="preserve" y="-2189.4087" clip-path="url(#clipPath2)" stroke="none">GraphLayer</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,304.9335,206.0711)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath14)" width="227" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOMAAADGCAYAAAAg7zfJAAADTklEQVR42u3WW0tU&#10;URzG4dkzOnnAVDwRWmSkA1YoNVl2kVpZUd//+/Tf8HrneNgzN8nzwnO7Nmz4sVav&#10;Z2ZmZmZmZmZmj2YN0MlMI+yXQZkDHmSQfppZhNgeNiwLZaksA/eylG6G6aiZRYjt&#10;wWtls2yXHWCitpGt9LKWfqYKsr1a53PQRtkr++WgHAK3ep1e9tLPcnrqd43xScre&#10;LaNyXMblFJjoY/mQXkbpZy09dYqxvVIXU/V+Dj4r5+USmOiifE0vx+lnIz0Nusa4&#10;lLfvQW7ENsSr8huY6Ff5kV7G6WcrPU0V43bewKepvv3YX2CiPwnyMt0cpiMxghhB&#10;jGIEMQJiBDECYgQxAmIEMYoRxAhiFCOIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxi&#10;BDGCGMUIYgQxihHECIgRxAiIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxiBDGCGMUI&#10;YgQxihHECGIUI4gRxChGECMgRhAjIEYQoxhBjCBGMYIYQYxiBDGCGMUIYgQxihHE&#10;CGIUI4gRxChGECOIUYwgRhCjGEGMgBhBjIAYQYx+OIgRxChGECOIUYwgRhCjGEGM&#10;IEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBEQI4gRECOIERAjiFGMIEYQoxhBjCBG&#10;MYIYQYxiBDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRkCMIEZAjCBGMYIYQYxi&#10;BDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghgBMYIYATGCGMUI&#10;YgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghhBjGIEMYIYxQhiBMQIYgTE&#10;CGL0w0GMIEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBHEKEb432M8KONyXn4mSOBm&#10;bYhX6WWcfqaOcbFsllflpHxJ7d+Bib6Vi/Rykn4201PnGBfKenlRjsr78jkfAW52&#10;Vj6ll6P0s56eOsXYL8OyUnbKyzIqb8o7YKK3iXCUbnbS0TBdPXhNmUvNT8tWeVb2&#10;ynPgVrvppe1mNR3Npate19vxOsjl1L0K3MtKurkOsd+bYk0OGOSw+Vy1wN3m080g&#10;HTW9Ga0BOjEzMzMzMzMzs8ewf53rvEen1I5nAAAAAElFTkSuQmCC" height="198" preserveAspectRatio="none"/>
+ <path fill="rgb(124,99,78)" d="M2185.7053 -1849.3396 L2391.7996 -1849.3396 L2391.7996 -1671.8649 L2185.7053 -1671.8649 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-2177.7053,1857.3396)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(98,69,44)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(98,69,44)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M2185.7053 -1849.3396 L2391.7996 -1849.3396 L2391.7996 -1671.8649 L2185.7053 -1671.8649 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="2263.4663" xml:space="preserve" y="-1802.7056" clip-path="url(#clipPath2)" stroke="none">...</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3782,0,0,0.3782,40.2999,189.7114)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath15)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAACGCAYAAAAcqXWFAAAC/klEQVR42u3YyU4U&#10;URiG4R6BxsgsogYZnBaIARlcAKLiEPH+78e/kq8T445uFqT6+ZJn2UVCUm9OnU7H&#10;zMzMzMzMzMzMzB7susBMuteI9Eo/BsBM6acBvWnj0s3DhmW+jMoiMFNGef+H00Rl&#10;fDKZy0OXy1rZKE+AmdC876tlKR0YR2WioAzykOaBz8pO2S+vgZnQvO8vy1Y6MEoX&#10;7nxKGZ9OlhKT5uHvy3E5BVrvpByVg/IqUXmcLtw5KM3dyUKqtJOYnJfL8gVoveu8&#10;72eJynZZyX3KREFpjjfrOfZ8LFfle/kFtN7PclMuclLZyz3qwjRB2cjnzmmq1fyh&#10;P0Dr3SYqn3Og2M8BQ1AAQQEEBRAUQQEEBRAUQFD8o0FQBAUQFEBQAEERFEBQAEEB&#10;BAUQFEEBBAUQFEBQBAUQFEBQAEEBBEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEE&#10;BRAUQQFBERRAUABBAQRFUABBAQQFEBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREU&#10;QFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQFEBT/aBAUQQEEBRAUQFAE&#10;BRAUQFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQFEBRBAUERFEBQAEEB&#10;BEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQF&#10;EBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREU4KEF5Tp/4BZovd/lR7m6z6Cs50HH&#10;efBNTilAuzWHh2/lohyV3bI2TVCaH66WnXJYPiUqX4HWa644LstZOSjb6cH8JEHp&#10;5YdL5Xl5Uz6Uk3IOtN5ZPnUOc+2xlR7MTRKU5gfDsphjzouyl7C8A1rvbUKym0PF&#10;anow6Eywbj57mho9Kiu5oN0sT4GZsJl71OXEZC5fL51pojLMfcoocQFmw2Le+/l0&#10;oD/J587/UemmSv0YADNh/M73/mmBmZmZmZmZmZmZmT2E/QVP/jW3tIKqpgAAAABJ&#10;RU5ErkJggg==" height="134" preserveAspectRatio="none"/>
+ <path fill="rgb(124,99,78)" d="M1407.7732 -1896.3687 L1692.7732 -1896.3687 L1692.7732 -1769.1991 L1407.7732 -1769.1991 Z" clip-path="url(#clipPath2)" transform="matrix(0.8982,0,0,0.8982,-1256.3226,1711.6084)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(98,69,44)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(98,69,44)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1407.7732 -1896.3687 L1692.7732 -1896.3687 L1692.7732 -1769.1991 L1407.7732 -1769.1991 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="1457.5574" xml:space="preserve" y="-1855.0193" clip-path="url(#clipPath2)" stroke="none">MatrixParam</text>
+ </g>
+ <g fill="rgb(197,174,155)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(197,174,155)">
+ <path d="M1429.0468 -1837.2889 L1671.4996 -1837.2889 L1671.4996 -1790.2406 L1429.0468 -1790.2406 Z" stroke="none" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="28px" stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="1482.8435" xml:space="preserve" y="-1804.3562" clip-path="url(#clipPath2)" stroke="none">CuMatrix</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3782,0,0,0.3782,147.2995,189.7114)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath16)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAACGCAYAAAAcqXWFAAAC/klEQVR42u3YyU4U&#10;URiG4R6BxsgsogYZnBaIARlcAKLiEPH+78e/kq8T445uFqT6+ZJn2UVCUm9OnU7H&#10;zMzMzMzMzMzMzB7susBMuteI9Eo/BsBM6acBvWnj0s3DhmW+jMoiMFNGef+H00Rl&#10;fDKZy0OXy1rZKE+AmdC876tlKR0YR2WioAzykOaBz8pO2S+vgZnQvO8vy1Y6MEoX&#10;7nxKGZ9OlhKT5uHvy3E5BVrvpByVg/IqUXmcLtw5KM3dyUKqtJOYnJfL8gVoveu8&#10;72eJynZZyX3KREFpjjfrOfZ8LFfle/kFtN7PclMuclLZyz3qwjRB2cjnzmmq1fyh&#10;P0Dr3SYqn3Og2M8BQ1AAQQEEBRAUQQEEBRAUQFD8o0FQBAUQFEBQAEERFEBQAEEB&#10;BAUQFEEBBAUQFEBQBAUQFEBQAEEBBEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEE&#10;BRAUQQFBERRAUABBAQRFUABBAQQFEBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREU&#10;QFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQFEBT/aBAUQQEEBRAUQFAE&#10;BRAUQFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQFEBRBAUERFEBQAEEB&#10;BEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQF&#10;EBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREU4KEF5Tp/4BZovd/lR7m6z6Cs50HH&#10;efBNTilAuzWHh2/lohyV3bI2TVCaH66WnXJYPiUqX4HWa644LstZOSjb6cH8JEHp&#10;5YdL5Xl5Uz6Uk3IOtN5ZPnUOc+2xlR7MTRKU5gfDsphjzouyl7C8A1rvbUKym0PF&#10;anow6Eywbj57mho9Kiu5oN0sT4GZsJl71OXEZC5fL51pojLMfcoocQFmw2Le+/l0&#10;oD/J587/UemmSv0YADNh/M73/mmBmZmZmZmZmZmZmT2E/QVP/jW3tIKqpgAAAABJ&#10;RU5ErkJggg==" height="134" preserveAspectRatio="none"/>
+ <path fill="rgb(124,99,78)" d="M1722.7732 -1896.3687 L2007.7732 -1896.3687 L2007.7732 -1769.1991 L1722.7732 -1769.1991 Z" clip-path="url(#clipPath2)" transform="matrix(0.8982,0,0,0.8982,-1539.27,1711.6084)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(98,69,44)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(98,69,44)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1722.7732 -1896.3687 L2007.7732 -1896.3687 L2007.7732 -1769.1991 L1722.7732 -1769.1991 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="1789.4148" xml:space="preserve" y="-1855.0193" clip-path="url(#clipPath2)" stroke="none">BiasParam</text>
+ </g>
+ <g fill="rgb(197,174,155)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(197,174,155)">
+ <path d="M1744.0468 -1837.2889 L1986.4996 -1837.2889 L1986.4996 -1790.2406 L1744.0468 -1790.2406 Z" stroke="none" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="28px" stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="1797.8435" xml:space="preserve" y="-1804.3562" clip-path="url(#clipPath2)" stroke="none">CuMatrix</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3782,0,0,0.3782,40.2999,235.9515)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath17)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAACGCAYAAAAcqXWFAAAC/klEQVR42u3YyU4U&#10;URiG4R6BxsgsogYZnBaIARlcAKLiEPH+78e/kq8T445uFqT6+ZJn2UVCUm9OnU7H&#10;zMzMzMzMzMzMzB7susBMuteI9Eo/BsBM6acBvWnj0s3DhmW+jMoiMFNGef+H00Rl&#10;fDKZy0OXy1rZKE+AmdC876tlKR0YR2WioAzykOaBz8pO2S+vgZnQvO8vy1Y6MEoX&#10;7nxKGZ9OlhKT5uHvy3E5BVrvpByVg/IqUXmcLtw5KM3dyUKqtJOYnJfL8gVoveu8&#10;72eJynZZyX3KREFpjjfrOfZ8LFfle/kFtN7PclMuclLZyz3qwjRB2cjnzmmq1fyh&#10;P0Dr3SYqn3Og2M8BQ1AAQQEEBRAUQQEEBRAUQFD8o0FQBAUQFEBQAEERFEBQAEEB&#10;BAUQFEEBBAUQFEBQBAUQFEBQAEEBBEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEE&#10;BRAUQQFBERRAUABBAQRFUABBAQQFEBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREU&#10;QFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQFEBT/aBAUQQEEBRAUQFAE&#10;BRAUQFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQFEBRBAUERFEBQAEEB&#10;BEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQF&#10;EBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREU4KEF5Tp/4BZovd/lR7m6z6Cs50HH&#10;efBNTilAuzWHh2/lohyV3bI2TVCaH66WnXJYPiUqX4HWa644LstZOSjb6cH8JEHp&#10;5YdL5Xl5Uz6Uk3IOtN5ZPnUOc+2xlR7MTRKU5gfDsphjzouyl7C8A1rvbUKym0PF&#10;anow6Eywbj57mho9Kiu5oN0sT4GZsJl71OXEZC5fL51pojLMfcoocQFmw2Le+/l0&#10;oD/J587/UemmSv0YADNh/M73/mmBmZmZmZmZmZmZmT2E/QVP/jW3tIKqpgAAAABJ&#10;RU5ErkJggg==" height="134" preserveAspectRatio="none"/>
+ <path fill="rgb(124,99,78)" d="M1407.7732 -1760.2406 L1692.7732 -1760.2406 L1692.7732 -1633.0709 L1407.7732 -1633.0709 Z" clip-path="url(#clipPath2)" transform="matrix(0.8982,0,0,0.8982,-1256.3226,1589.3319)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(98,69,44)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(98,69,44)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1407.7732 -1760.2406 L1692.7732 -1760.2406 L1692.7732 -1633.0709 L1407.7732 -1633.0709 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="1457.5574" xml:space="preserve" y="-1718.8911" clip-path="url(#clipPath2)" stroke="none">MatrixParam</text>
+ </g>
+ <g fill="rgb(197,174,155)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(197,174,155)">
+ <path d="M1429.0468 -1701.1608 L1671.4996 -1701.1608 L1671.4996 -1654.1124 L1429.0468 -1654.1124 Z" stroke="none" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="28px" stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="1482.8435" xml:space="preserve" y="-1668.228" clip-path="url(#clipPath2)" stroke="none">CuMatrix</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3782,0,0,0.3782,147.2995,235.9515)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath18)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAACGCAYAAAAcqXWFAAAC/klEQVR42u3YyU4U&#10;URiG4R6BxsgsogYZnBaIARlcAKLiEPH+78e/kq8T445uFqT6+ZJn2UVCUm9OnU7H&#10;zMzMzMzMzMzMzB7susBMuteI9Eo/BsBM6acBvWnj0s3DhmW+jMoiMFNGef+H00Rl&#10;fDKZy0OXy1rZKE+AmdC876tlKR0YR2WioAzykOaBz8pO2S+vgZnQvO8vy1Y6MEoX&#10;7nxKGZ9OlhKT5uHvy3E5BVrvpByVg/IqUXmcLtw5KM3dyUKqtJOYnJfL8gVoveu8&#10;72eJynZZyX3KREFpjjfrOfZ8LFfle/kFtN7PclMuclLZyz3qwjRB2cjnzmmq1fyh&#10;P0Dr3SYqn3Og2M8BQ1AAQQEEBRAUQQEEBRAUQFD8o0FQBAUQFEBQAEERFEBQAEEB&#10;BAUQFEEBBAUQFEBQBAUQFEBQAEEBBEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEE&#10;BRAUQQFBERRAUABBAQRFUABBAQQFEBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREU&#10;QFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQFEBT/aBAUQQEEBRAUQFAE&#10;BRAUQFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQFEBRBAUERFEBQAEEB&#10;BEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQF&#10;EBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREU4KEF5Tp/4BZovd/lR7m6z6Cs50HH&#10;efBNTilAuzWHh2/lohyV3bI2TVCaH66WnXJYPiUqX4HWa644LstZOSjb6cH8JEHp&#10;5YdL5Xl5Uz6Uk3IOtN5ZPnUOc+2xlR7MTRKU5gfDsphjzouyl7C8A1rvbUKym0PF&#10;anow6Eywbj57mho9Kiu5oN0sT4GZsJl71OXEZC5fL51pojLMfcoocQFmw2Le+/l0&#10;oD/J587/UemmSv0YADNh/M73/mmBmZmZmZmZmZmZmT2E/QVP/jW3tIKqpgAAAABJ&#10;RU5ErkJggg==" height="134" preserveAspectRatio="none"/>
+ <path fill="rgb(124,99,78)" d="M1722.7732 -1760.2406 L2007.7732 -1760.2406 L2007.7732 -1633.0709 L1722.7732 -1633.0709 Z" clip-path="url(#clipPath2)" transform="matrix(0.8982,0,0,0.8982,-1539.27,1589.3319)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(98,69,44)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(98,69,44)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1722.7732 -1760.2406 L2007.7732 -1760.2406 L2007.7732 -1633.0709 L1722.7732 -1633.0709 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="1789.4148" xml:space="preserve" y="-1718.8911" clip-path="url(#clipPath2)" stroke="none">BiasParam</text>
+ </g>
+ <g fill="rgb(197,174,155)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(197,174,155)">
+ <path d="M1744.0468 -1701.1608 L1986.4996 -1701.1608 L1986.4996 -1654.1124 L1744.0468 -1654.1124 Z" stroke="none" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="28px" stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="1797.8435" xml:space="preserve" y="-1668.228" clip-path="url(#clipPath2)" stroke="none">CuMatrix</text>
+ </g>
+ <g fill="rgb(91,129,91)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(91,129,91)">
+ <circle r="39.1358" clip-path="url(#clipPath2)" cx="3348.7556" cy="-2243.1534" stroke="none"/>
+ </g>
+ <g fill="rgb(91,129,91)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(91,129,91)">
+ <circle r="36.6604" clip-path="url(#clipPath2)" cx="3249.1979" cy="-2127.8892" stroke="none"/>
+ <circle r="35.4226" clip-path="url(#clipPath2)" cx="3431.8413" cy="-2103.5987" stroke="none"/>
+ <path fill="rgb(124,78,78)" d="M2576.894 -2251.7859 L3008.7498 -2251.7859 L2960.7659 -2140.8616 L2528.9102 -2140.8616 Z" clip-path="url(#clipPath2)" fill-rule="evenodd" stroke="none"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="2617.113" xml:space="preserve" y="-2186.6304" clip-path="url(#clipPath2)" stroke="none">Compile &amp; Optimize</text>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(161,113,113)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(161,113,113)" stroke-miterlimit="1.45">
+ <path fill="none" d="M2576.894 -2251.7859 L3008.7498 -2251.7859 L2960.7659 -2140.8616 L2528.9102 -2140.8616 Z" fill-rule="evenodd" clip-path="url(#clipPath2)"/>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,480.3355,299.8839)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath19)" width="227" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOMAAADGCAYAAAAg7zfJAAADTklEQVR42u3WW0tU&#10;URzG4dkzOnnAVDwRWmSkA1YoNVl2kVpZUd//+/Tf8HrneNgzN8nzwnO7Nmz4sVav&#10;Z2ZmZmZmZmZmj2YN0MlMI+yXQZkDHmSQfppZhNgeNiwLZaksA/eylG6G6aiZRYjt&#10;wWtls2yXHWCitpGt9LKWfqYKsr1a53PQRtkr++WgHAK3ep1e9tLPcnrqd43xScre&#10;LaNyXMblFJjoY/mQXkbpZy09dYqxvVIXU/V+Dj4r5+USmOiifE0vx+lnIz0Nusa4&#10;lLfvQW7ENsSr8huY6Ff5kV7G6WcrPU0V43bewKepvv3YX2CiPwnyMt0cpiMxghhB&#10;jGIEMQJiBDECYgQxAmIEMYoRxAhiFCOIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxi&#10;BDGCGMUIYgQxihHECIgRxAiIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxiBDGCGMUI&#10;YgQxihHECGIUI4gRxChGECMgRhAjIEYQoxhBjCBGMYIYQYxiBDGCGMUIYgQxihHE&#10;CGIUI4gRxChGECOIUYwgRhCjGEGMgBhBjIAYQYx+OIgRxChGECOIUYwgRhCjGEGM&#10;IEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBEQI4gRECOIERAjiFGMIEYQoxhBjCBG&#10;MYIYQYxiBDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRkCMIEZAjCBGMYIYQYxi&#10;BDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghgBMYIYATGCGMUI&#10;YgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghhBjGIEMYIYxQhiBMQIYgTE&#10;CGL0w0GMIEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBHEKEb432M8KONyXn4mSOBm&#10;bYhX6WWcfqaOcbFsllflpHxJ7d+Bib6Vi/Rykn4201PnGBfKenlRjsr78jkfAW52&#10;Vj6ll6P0s56eOsXYL8OyUnbKyzIqb8o7YKK3iXCUbnbS0TBdPXhNmUvNT8tWeVb2&#10;ynPgVrvppe1mNR3Npate19vxOsjl1L0K3MtKurkOsd+bYk0OGOSw+Vy1wN3m080g&#10;HTW9Ga0BOjEzMzMzMzMzs8ewf53rvEen1I5nAAAAAElFTkSuQmCC" height="198" preserveAspectRatio="none"/>
+ <path fill="rgb(197,155,155)" d="M2702.0779 -1573.1605 L2908.1721 -1573.1605 L2908.1721 -1395.6858 L2702.0779 -1395.6858 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-2694.0779,1581.1605)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(241,211,211)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(241,211,211)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M2702.0779 -1573.1605 L2908.1721 -1573.1605 L2908.1721 -1395.6858 L2702.0779 -1395.6858 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="2729.2666" xml:space="preserve" y="-1526.5265" clip-path="url(#clipPath2)" stroke="none">ChunkFile</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,494.7456,324.2524)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath20)" width="227" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOMAAADGCAYAAAAg7zfJAAADTklEQVR42u3WW0tU&#10;URzG4dkzOnnAVDwRWmSkA1YoNVl2kVpZUd//+/Tf8HrneNgzN8nzwnO7Nmz4sVav&#10;Z2ZmZmZmZmZmj2YN0MlMI+yXQZkDHmSQfppZhNgeNiwLZaksA/eylG6G6aiZRYjt&#10;wWtls2yXHWCitpGt9LKWfqYKsr1a53PQRtkr++WgHAK3ep1e9tLPcnrqd43xScre&#10;LaNyXMblFJjoY/mQXkbpZy09dYqxvVIXU/V+Dj4r5+USmOiifE0vx+lnIz0Nusa4&#10;lLfvQW7ENsSr8huY6Ff5kV7G6WcrPU0V43bewKepvv3YX2CiPwnyMt0cpiMxghhB&#10;jGIEMQJiBDECYgQxAmIEMYoRxAhiFCOIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxi&#10;BDGCGMUIYgQxihHECIgRxAiIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxiBDGCGMUI&#10;YgQxihHECGIUI4gRxChGECMgRhAjIEYQoxhBjCBGMYIYQYxiBDGCGMUIYgQxihHE&#10;CGIUI4gRxChGECOIUYwgRhCjGEGMgBhBjIAYQYx+OIgRxChGECOIUYwgRhCjGEGM&#10;IEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBEQI4gRECOIERAjiFGMIEYQoxhBjCBG&#10;MYIYQYxiBDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRkCMIEZAjCBGMYIYQYxi&#10;BDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghgBMYIYATGCGMUI&#10;YgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghhBjGIEMYIYxQhiBMQIYgTE&#10;CGL0w0GMIEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBHEKEb432M8KONyXn4mSOBm&#10;bYhX6WWcfqaOcbFsllflpHxJ7d+Bib6Vi/Rykn4201PnGBfKenlRjsr78jkfAW52&#10;Vj6ll6P0s56eOsXYL8OyUnbKyzIqb8o7YKK3iXCUbnbS0TBdPXhNmUvNT8tWeVb2&#10;ynPgVrvppe1mNR3Npate19vxOsjl1L0K3MtKurkOsd+bYk0OGOSw+Vy1wN3m080g&#10;HTW9Ga0BOjEzMzMzMzMzs8ewf53rvEen1I5nAAAAAElFTkSuQmCC" height="198" preserveAspectRatio="none"/>
+ <path fill="rgb(197,155,155)" d="M2744.5002 -1501.4211 L2950.5947 -1501.4211 L2950.5947 -1323.9463 L2744.5002 -1323.9463 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-2736.5003,1509.4212)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(241,211,211)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(241,211,211)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M2744.5002 -1501.4211 L2950.5947 -1501.4211 L2950.5947 -1323.9463 L2744.5002 -1323.9463 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="2771.689" xml:space="preserve" y="-1454.7871" clip-path="url(#clipPath2)" stroke="none">ChunkFile</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,511.2065,346.6094)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath21)" width="227" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOMAAADGCAYAAAAg7zfJAAADTklEQVR42u3WW0tU&#10;URzG4dkzOnnAVDwRWmSkA1YoNVl2kVpZUd//+/Tf8HrneNgzN8nzwnO7Nmz4sVav&#10;Z2ZmZmZmZmZmj2YN0MlMI+yXQZkDHmSQfppZhNgeNiwLZaksA/eylG6G6aiZRYjt&#10;wWtls2yXHWCitpGt9LKWfqYKsr1a53PQRtkr++WgHAK3ep1e9tLPcnrqd43xScre&#10;LaNyXMblFJjoY/mQXkbpZy09dYqxvVIXU/V+Dj4r5+USmOiifE0vx+lnIz0Nusa4&#10;lLfvQW7ENsSr8huY6Ff5kV7G6WcrPU0V43bewKepvv3YX2CiPwnyMt0cpiMxghhB&#10;jGIEMQJiBDECYgQxAmIEMYoRxAhiFCOIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxi&#10;BDGCGMUIYgQxihHECIgRxAiIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxiBDGCGMUI&#10;YgQxihHECGIUI4gRxChGECMgRhAjIEYQoxhBjCBGMYIYQYxiBDGCGMUIYgQxihHE&#10;CGIUI4gRxChGECOIUYwgRhCjGEGMgBhBjIAYQYx+OIgRxChGECOIUYwgRhCjGEGM&#10;IEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBEQI4gRECOIERAjiFGMIEYQoxhBjCBG&#10;MYIYQYxiBDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRkCMIEZAjCBGMYIYQYxi&#10;BDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghgBMYIYATGCGMUI&#10;YgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghhBjGIEMYIYxQhiBMQIYgTE&#10;CGL0w0GMIEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBHEKEb432M8KONyXn4mSOBm&#10;bYhX6WWcfqaOcbFsllflpHxJ7d+Bib6Vi/Rykn4201PnGBfKenlRjsr78jkfAW52&#10;Vj6ll6P0s56eOsXYL8OyUnbKyzIqb8o7YKK3iXCUbnbS0TBdPXhNmUvNT8tWeVb2&#10;ynPgVrvppe1mNR3Npate19vxOsjl1L0K3MtKurkOsd+bYk0OGOSw+Vy1wN3m080g&#10;HTW9Ga0BOjEzMzMzMzMzs8ewf53rvEen1I5nAAAAAElFTkSuQmCC" height="198" preserveAspectRatio="none"/>
+ <path fill="rgb(197,155,155)" d="M2792.96 -1435.6035 L2999.0544 -1435.6035 L2999.0544 -1258.1287 L2792.96 -1258.1287 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-2784.96,1443.6035)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(241,211,211)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(241,211,211)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M2792.96 -1435.6035 L2999.0544 -1435.6035 L2999.0544 -1258.1287 L2792.96 -1258.1287 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="2820.1487" xml:space="preserve" y="-1388.9695" clip-path="url(#clipPath2)" stroke="none">ChunkFile</text>
+ </g>
+ <g fill="rgb(124,78,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(124,78,78)">
+ <path d="M2213.0237 -1479.0284 L2618.771 -1479.0284 L2573.688 -1379.7079 L2167.9407 -1379.7079 Z" fill-rule="evenodd" clip-path="url(#clipPath2)" stroke="none"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="2283.7827" xml:space="preserve" y="-1419.6748" clip-path="url(#clipPath2)" stroke="none">Import Params</text>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(161,113,113)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(161,113,113)" stroke-miterlimit="1.45">
+ <path fill="none" d="M2213.0237 -1479.0284 L2618.771 -1479.0284 L2573.688 -1379.7079 L2167.9407 -1379.7079 Z" fill-rule="evenodd" clip-path="url(#clipPath2)"/>
+ </g>
+ <g fill="rgb(124,78,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(124,78,78)">
+ <path d="M3168.4236 -1810.2626 L3574.1707 -1810.2626 L3529.0876 -1710.9419 L3123.3406 -1710.9419 Z" fill-rule="evenodd" clip-path="url(#clipPath2)" stroke="none"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="3239.1824" xml:space="preserve" y="-1750.9088" clip-path="url(#clipPath2)" stroke="none">Mini-batching</text>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(161,113,113)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(161,113,113)" stroke-miterlimit="1.45">
+ <path fill="none" d="M3168.4236 -1810.2626 L3574.1707 -1810.2626 L3529.0876 -1710.9419 L3123.3406 -1710.9419 Z" fill-rule="evenodd" clip-path="url(#clipPath2)"/>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,591.4033,347.4898)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath22)" width="227" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOMAAADGCAYAAAAg7zfJAAADTklEQVR42u3WW0tU&#10;URzG4dkzOnnAVDwRWmSkA1YoNVl2kVpZUd//+/Tf8HrneNgzN8nzwnO7Nmz4sVav&#10;Z2ZmZmZmZmZmj2YN0MlMI+yXQZkDHmSQfppZhNgeNiwLZaksA/eylG6G6aiZRYjt&#10;wWtls2yXHWCitpGt9LKWfqYKsr1a53PQRtkr++WgHAK3ep1e9tLPcnrqd43xScre&#10;LaNyXMblFJjoY/mQXkbpZy09dYqxvVIXU/V+Dj4r5+USmOiifE0vx+lnIz0Nusa4&#10;lLfvQW7ENsSr8huY6Ff5kV7G6WcrPU0V43bewKepvv3YX2CiPwnyMt0cpiMxghhB&#10;jGIEMQJiBDECYgQxAmIEMYoRxAhiFCOIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxi&#10;BDGCGMUIYgQxihHECIgRxAiIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxiBDGCGMUI&#10;YgQxihHECGIUI4gRxChGECMgRhAjIEYQoxhBjCBGMYIYQYxiBDGCGMUIYgQxihHE&#10;CGIUI4gRxChGECOIUYwgRhCjGEGMgBhBjIAYQYx+OIgRxChGECOIUYwgRhCjGEGM&#10;IEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBEQI4gRECOIERAjiFGMIEYQoxhBjCBG&#10;MYIYQYxiBDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRkCMIEZAjCBGMYIYQYxi&#10;BDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghgBMYIYATGCGMUI&#10;YgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghhBjGIEMYIYxQhiBMQIYgTE&#10;CGL0w0GMIEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBHEKEb432M8KONyXn4mSOBm&#10;bYhX6WWcfqaOcbFsllflpHxJ7d+Bib6Vi/Rykn4201PnGBfKenlRjsr78jkfAW52&#10;Vj6ll6P0s56eOsXYL8OyUnbKyzIqb8o7YKK3iXCUbnbS0TBdPXhNmUvNT8tWeVb2&#10;ynPgVrvppe1mNR3Npate19vxOsjl1L0K3MtKurkOsd+bYk0OGOSw+Vy1wN3m080g&#10;HTW9Ga0BOjEzMzMzMzMzs8ewf53rvEen1I5nAAAAAElFTkSuQmCC" height="198" preserveAspectRatio="none"/>
+ <path fill="rgb(197,155,155)" d="M3029.0544 -1433.0117 L3235.1487 -1433.0117 L3235.1487 -1255.5369 L3029.0544 -1255.5369 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-3021.0543,1441.0117)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(241,211,211)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(241,211,211)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M3029.0544 -1433.0117 L3235.1487 -1433.0117 L3235.1487 -1255.5369 L3029.0544 -1255.5369 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="3081.5293" xml:space="preserve" y="-1386.3777" clip-path="url(#clipPath2)" stroke="none">Reader</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,664.9966,347.4898)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath23)" width="227" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOMAAADGCAYAAAAg7zfJAAADTklEQVR42u3WW0tU&#10;URzG4dkzOnnAVDwRWmSkA1YoNVl2kVpZUd//+/Tf8HrneNgzN8nzwnO7Nmz4sVav&#10;Z2ZmZmZmZmZmj2YN0MlMI+yXQZkDHmSQfppZhNgeNiwLZaksA/eylG6G6aiZRYjt&#10;wWtls2yXHWCitpGt9LKWfqYKsr1a53PQRtkr++WgHAK3ep1e9tLPcnrqd43xScre&#10;LaNyXMblFJjoY/mQXkbpZy09dYqxvVIXU/V+Dj4r5+USmOiifE0vx+lnIz0Nusa4&#10;lLfvQW7ENsSr8huY6Ff5kV7G6WcrPU0V43bewKepvv3YX2CiPwnyMt0cpiMxghhB&#10;jGIEMQJiBDECYgQxAmIEMYoRxAhiFCOIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxi&#10;BDGCGMUIYgQxihHECIgRxAiIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxiBDGCGMUI&#10;YgQxihHECGIUI4gRxChGECMgRhAjIEYQoxhBjCBGMYIYQYxiBDGCGMUIYgQxihHE&#10;CGIUI4gRxChGECOIUYwgRhCjGEGMgBhBjIAYQYx+OIgRxChGECOIUYwgRhCjGEGM&#10;IEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBEQI4gRECOIERAjiFGMIEYQoxhBjCBG&#10;MYIYQYxiBDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRkCMIEZAjCBGMYIYQYxi&#10;BDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghgBMYIYATGCGMUI&#10;YgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghhBjGIEMYIYxQhiBMQIYgTE&#10;CGL0w0GMIEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBHEKEb432M8KONyXn4mSOBm&#10;bYhX6WWcfqaOcbFsllflpHxJ7d+Bib6Vi/Rykn4201PnGBfKenlRjsr78jkfAW52&#10;Vj6ll6P0s56eOsXYL8OyUnbKyzIqb8o7YKK3iXCUbnbS0TBdPXhNmUvNT8tWeVb2&#10;ynPgVrvppe1mNR3Npate19vxOsjl1L0K3MtKurkOsd+bYk0OGOSw+Vy1wN3m080g&#10;HTW9Ga0BOjEzMzMzMzMzs8ewf53rvEen1I5nAAAAAElFTkSuQmCC" height="198" preserveAspectRatio="none"/>
+ <path fill="rgb(197,155,155)" d="M3245.7085 -1433.0117 L3451.8027 -1433.0117 L3451.8027 -1255.5369 L3245.7085 -1255.5369 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-3237.7085,1441.0117)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(241,211,211)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(241,211,211)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M3245.7085 -1433.0117 L3451.8027 -1433.0117 L3451.8027 -1255.5369 L3245.7085 -1255.5369 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="3298.1833" xml:space="preserve" y="-1386.3777" clip-path="url(#clipPath2)" stroke="none">Reader</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,738.5899,347.4898)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath24)" width="227" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOMAAADGCAYAAAAg7zfJAAADTklEQVR42u3WW0tU&#10;URzG4dkzOnnAVDwRWmSkA1YoNVl2kVpZUd//+/Tf8HrneNgzN8nzwnO7Nmz4sVav&#10;Z2ZmZmZmZmZmj2YN0MlMI+yXQZkDHmSQfppZhNgeNiwLZaksA/eylG6G6aiZRYjt&#10;wWtls2yXHWCitpGt9LKWfqYKsr1a53PQRtkr++WgHAK3ep1e9tLPcnrqd43xScre&#10;LaNyXMblFJjoY/mQXkbpZy09dYqxvVIXU/V+Dj4r5+USmOiifE0vx+lnIz0Nusa4&#10;lLfvQW7ENsSr8huY6Ff5kV7G6WcrPU0V43bewKepvv3YX2CiPwnyMt0cpiMxghhB&#10;jGIEMQJiBDECYgQxAmIEMYoRxAhiFCOIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxi&#10;BDGCGMUIYgQxihHECIgRxAiIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxiBDGCGMUI&#10;YgQxihHECGIUI4gRxChGECMgRhAjIEYQoxhBjCBGMYIYQYxiBDGCGMUIYgQxihHE&#10;CGIUI4gRxChGECOIUYwgRhCjGEGMgBhBjIAYQYx+OIgRxChGECOIUYwgRhCjGEGM&#10;IEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBEQI4gRECOIERAjiFGMIEYQoxhBjCBG&#10;MYIYQYxiBDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRkCMIEZAjCBGMYIYQYxi&#10;BDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghgBMYIYATGCGMUI&#10;YgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghhBjGIEMYIYxQhiBMQIYgTE&#10;CGL0w0GMIEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBHEKEb432M8KONyXn4mSOBm&#10;bYhX6WWcfqaOcbFsllflpHxJ7d+Bib6Vi/Rykn4201PnGBfKenlRjsr78jkfAW52&#10;Vj6ll6P0s56eOsXYL8OyUnbKyzIqb8o7YKK3iXCUbnbS0TBdPXhNmUvNT8tWeVb2&#10;ynPgVrvppe1mNR3Npate19vxOsjl1L0K3MtKurkOsd+bYk0OGOSw+Vy1wN3m080g&#10;HTW9Ga0BOjEzMzMzMzMzs8ewf53rvEen1I5nAAAAAElFTkSuQmCC" height="198" preserveAspectRatio="none"/>
+ <path fill="rgb(197,155,155)" d="M3462.3625 -1433.0117 L3668.457 -1433.0117 L3668.457 -1255.5369 L3462.3625 -1255.5369 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-3454.3626,1441.0117)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(241,211,211)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(241,211,211)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M3462.3625 -1433.0117 L3668.457 -1433.0117 L3668.457 -1255.5369 L3462.3625 -1255.5369 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="3514.8374" xml:space="preserve" y="-1386.3777" clip-path="url(#clipPath2)" stroke="none">Reader</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,480.3355,416.2158)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath25)" width="227" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOMAAADGCAYAAAAg7zfJAAADTklEQVR42u3WW0tU&#10;URzG4dkzOnnAVDwRWmSkA1YoNVl2kVpZUd//+/Tf8HrneNgzN8nzwnO7Nmz4sVav&#10;Z2ZmZmZmZmZmj2YN0MlMI+yXQZkDHmSQfppZhNgeNiwLZaksA/eylG6G6aiZRYjt&#10;wWtls2yXHWCitpGt9LKWfqYKsr1a53PQRtkr++WgHAK3ep1e9tLPcnrqd43xScre&#10;LaNyXMblFJjoY/mQXkbpZy09dYqxvVIXU/V+Dj4r5+USmOiifE0vx+lnIz0Nusa4&#10;lLfvQW7ENsSr8huY6Ff5kV7G6WcrPU0V43bewKepvv3YX2CiPwnyMt0cpiMxghhB&#10;jGIEMQJiBDECYgQxAmIEMYoRxAhiFCOIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxi&#10;BDGCGMUIYgQxihHECIgRxAiIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxiBDGCGMUI&#10;YgQxihHECGIUI4gRxChGECMgRhAjIEYQoxhBjCBGMYIYQYxiBDGCGMUIYgQxihHE&#10;CGIUI4gRxChGECOIUYwgRhCjGEGMgBhBjIAYQYx+OIgRxChGECOIUYwgRhCjGEGM&#10;IEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBEQI4gRECOIERAjiFGMIEYQoxhBjCBG&#10;MYIYQYxiBDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRkCMIEZAjCBGMYIYQYxi&#10;BDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghgBMYIYATGCGMUI&#10;YgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghhBjGIEMYIYxQhiBMQIYgTE&#10;CGL0w0GMIEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBHEKEb432M8KONyXn4mSOBm&#10;bYhX6WWcfqaOcbFsllflpHxJ7d+Bib6Vi/Rykn4201PnGBfKenlRjsr78jkfAW52&#10;Vj6ll6P0s56eOsXYL8OyUnbKyzIqb8o7YKK3iXCUbnbS0TBdPXhNmUvNT8tWeVb2&#10;ynPgVrvppe1mNR3Npate19vxOsjl1L0K3MtKurkOsd+bYk0OGOSw+Vy1wN3m080g&#10;HTW9Ga0BOjEzMzMzMzMzs8ewf53rvEen1I5nAAAAAElFTkSuQmCC" height="198" preserveAspectRatio="none"/>
+ <path fill="rgb(197,155,155)" d="M2702.0779 -1230.6865 L2908.1721 -1230.6865 L2908.1721 -1053.2118 L2702.0779 -1053.2118 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-2694.0779,1238.6866)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(241,211,211)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(241,211,211)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M2702.0779 -1230.6865 L2908.1721 -1230.6865 L2908.1721 -1053.2118 L2702.0779 -1053.2118 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="2729.2666" xml:space="preserve" y="-1184.0525" clip-path="url(#clipPath2)" stroke="none">ChunkFile</text>
+ </g>
+ <g fill="rgb(124,78,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(124,78,78)">
+ <path d="M2175.4485 -1230.6865 L2581.1958 -1230.6865 L2536.1128 -1131.366 L2130.3655 -1131.366 Z" fill-rule="evenodd" clip-path="url(#clipPath2)" stroke="none"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="2263.0649" xml:space="preserve" y="-1171.3329" clip-path="url(#clipPath2)" stroke="none">Save Params</text>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(161,113,113)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(161,113,113)" stroke-miterlimit="1.45">
+ <path fill="none" d="M2175.4485 -1230.6865 L2581.1958 -1230.6865 L2536.1128 -1131.366 L2130.3655 -1131.366 Z" fill-rule="evenodd" clip-path="url(#clipPath2)"/>
+ </g>
+ <g fill="rgb(124,78,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(124,78,78)">
+ <path d="M2200.6279 -1354.8575 L2606.375 -1354.8575 L2561.292 -1255.5369 L2155.5449 -1255.5369 Z" fill-rule="evenodd" clip-path="url(#clipPath2)" stroke="none"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="2254.5293" xml:space="preserve" y="-1295.5039" clip-path="url(#clipPath2)" stroke="none">Generate Params</text>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(161,113,113)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(161,113,113)" stroke-miterlimit="1.45">
+ <path fill="none" d="M2200.6279 -1354.8575 L2606.375 -1354.8575 L2561.292 -1255.5369 L2155.5449 -1255.5369 Z" fill-rule="evenodd" clip-path="url(#clipPath2)"/>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.8492,0,0,0.8492,586.308,294.7887)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath26)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAA2CAYAAAAGY2bwAAACXUlEQVR42u3d205T&#10;URQF0NPSlla5FREJiCCKQQqiUYN3CYLX//8f1wmrScNjTx90d8xkJDztJiR7Zq32&#10;YVeViIiIiIiIiIiIiIiIlJtWagNzZ3z/Z1Ym9aGd0A29sAgUr5fqe78wUS6NymQh&#10;Dx2EpbASVoG5sBzuhn4OFe0mhdLOMqkPHIbNsB0eAsXbCVthIweJcam0mkwngyyT&#10;ukgOwlEYhROgaMfhMOzlMLGcA8bUhdLNNWczy+Q0vA3vwwegWPUdPw+vwvOwm4NF&#10;f9q1p5VttJLTyVGWyZdwGa6AYn0LF1ksZzlQ3MuNpVGhrOY+NcrD6w/6EX4BxfoZ&#10;rnOAeJ2rz/1wJ78KaVwoJzkKXeUH/gGK9TsHh4vcTJ7lVx8KBZiqUL6Hr+HNrQml&#10;rVAAhQIoFEChKBRAoQAKBVAoCgUUikIBFAqgUACFolAAhQIoFECh+KeDQlEogEIB&#10;FAqgUBQKKBSFAigUQKEACkWhAAoFUCjAf1gokw991YXioS9g5hPKTAplVN28bXxZ&#10;edsY5uFt43p4+FzdvG38dFYrz0rYDkc5+tSPJ9cPpl9XXqiHEo3v9kVuJS/DQdho&#10;WijdsBQehCfhLJyHj+ETUKz6jr/L6eQ4PArD0G9SKJ0wCOu59hzm6vMiywUo12lu&#10;Jo/DVm4ri9MWSpVfvvRySlnPQ3fDXtgHirWXU8lO/rqzlsNFJ4eNatopZVwq9e60&#10;nAcPs2CGQHHGd3stf5RZyjLpNplObpdKJ4tlMfUn/gbKMXm3e1kknSyTVjWjtFIb&#10;mButCSIiIiIiIiIiIiLyL+Uv3bhF252M7V8AAAAASUVORK5CYII=" height="54" preserveAspectRatio="none"/>
+ <path fill="rgb(63,99,63)" d="M3029.0544 -1573.1605 L3668.457 -1573.1605 L3668.457 -1487.7527 L3029.0544 -1487.7527 Z" clip-path="url(#clipPath2)" transform="matrix(0.4,0,0,0.4,-1202.4217,638.4642)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M3029.0544 -1573.1605 L3668.457 -1573.1605 L3668.457 -1487.7527 L3029.0544 -1487.7527 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="3298.1833" xml:space="preserve" y="-1520.7633" clip-path="url(#clipPath2)" stroke="none">Buffer</text>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="white" stroke-width="3" stroke-miterlimit="1.45">
+ <path fill="none" d="M1681.9138 -2204.2202 L1668.9137 -2204.2202" clip-path="url(#clipPath2)"/>
+ <path d="M1658.9137 -2204.2202 L1673.9137 -2197.9702 L1670.1637 -2204.2202 L1673.9137 -2210.4702 Z" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M1638.8868 -2246.1235 L1641.4056 -2247.1904 L1658.8074 -2253.1829 L1677.2861 -2258.2532 L1696.842 -2262.4019 L1717.475 -2265.6284 L1739.1849 -2267.9331 L1761.972 -2269.3159 L1785.8363 -2269.7769 L1807.5276 -2269.7769 L1831.0465 -2269.5217 L1852.7979 -2268.7561 L1872.7815 -2267.48 L1890.9974 -2265.6934 L1907.4458 -2263.3965 L1922.1265 -2260.5891 L1935.0396 -2257.2712 L1946.1851 -2253.4431 L1980.6194 -2239.7405" clip-path="url(#clipPath2)"/>
+ <path d="M1989.9108 -2236.0432 L1978.2844 -2247.3962 L1979.4579 -2240.2026 L1973.6628 -2235.782 Z" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M1619.7458 -2132.3184 L1644.1611 -2145.8757 L1671.826 -2159.5718 L1672.7616 -2159.9778" clip-path="url(#clipPath2)"/>
+ <path d="M1681.9351 -2163.9587 L1665.6868 -2163.7207 L1671.615 -2159.4802 L1670.663 -2152.2539 Z" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M1681.9138 -2090.3904 L1668.9137 -2090.3904" clip-path="url(#clipPath2)"/>
+ <path d="M1658.9137 -2090.3904 L1673.9137 -2084.1404 L1670.1637 -2090.3904 L1673.9137 -2096.6404 Z" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M2167.0378 -2147.3054 L2187.0444 -2147.3054" clip-path="url(#clipPath2)"/>
+ <path d="M2197.0444 -2147.3054 L2182.0444 -2153.5554 L2185.7944 -2147.3054 L2182.0444 -2141.0554 Z" clip-path="url(#clipPath2)" stroke="none"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(204,204,204)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke-dasharray="24,8" stroke="rgb(204,204,204)" stroke-width="4" stroke-miterlimit="1.45">
+ <path fill="none" d="M2056.6875 -2079.072 L2064.1035 -2042.955 L2068.2366 -2026.9589 L2073.6287 -2013.0956 L2076.7969 -2006.9639 L2080.28 -2001.3652 L2084.0779 -1996.2998 L2088.1904 -1991.7676 L2092.6177 -1987.7686 L2097.3599 -1984.3027 L2102.4167 -1981.3701 L2107.7886 -1978.9707 L2113.4751 -1977.1045 L2119.4763 -1975.7715 L2125.7922 -1974.9717 L2132.4231 -1974.7051 L2144.491 -1974.7051 L2151.2251 -1974.3287 L2157.8513 -1973.1997 L2164.3696 -1971.3179 L2170.7798 -1968.6835 L2177.0818 -1965.2963 L2183.2761 -1961.1564 L2189.3621 -1956.2638 L2195.3403 -1950.6184 L2201.2104 -1944.2205 L2206.9724 -1937.0697 L2212.6265 -1929.1664 L2218.1726 -1920.5103 L2228.9407 -1900.9398 L2239.2769 -1878.3586 L2249.3342 -1854.4214" clip-path="url(#clipPath2)"/>
+ <path d="M2055.5813 -2084.4597 L2049.7122 -2072.0251 L2056.9641 -2077.7251 L2065.875 -2075.3438 Z" clip-path="url(#clipPath2)" stroke="none"/>
+ <path d="M2251.4646 -1849.3507 L2254.8098 -1862.6876 L2248.8018 -1855.6891 L2239.5979 -1856.2965 Z" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M2310.2014 -2053.1218 L2295.6604 -1854.8124" clip-path="url(#clipPath2)"/>
+ <path d="M2310.6038 -2058.6072 L2301.5713 -2048.2402 L2310.1008 -2051.7505 L2318.0271 -2047.0332 Z" clip-path="url(#clipPath2)" stroke="none"/>
+ <path d="M2295.2583 -1849.3271 L2304.2905 -1859.6946 L2295.761 -1856.1837 L2287.8345 -1860.9009 Z" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M1548.4835 -2042.9644 L1550.2057 -1901.881" clip-path="url(#clipPath2)"/>
+ <path d="M1548.4164 -2048.4639 L1540.3013 -2037.364 L1548.5004 -2041.5894 L1556.8 -2037.5654 Z" clip-path="url(#clipPath2)" stroke="none"/>
+ <path d="M1550.2728 -1896.3813 L1558.3879 -1907.4812 L1550.189 -1903.2559 L1541.8892 -1907.2798 Z" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M1792.8953 -2042.952 L1792.8953 -1901.8639" clip-path="url(#clipPath2)"/>
+ <path d="M1792.8953 -2048.4521 L1784.6453 -2037.4521 L1792.8953 -2041.5771 L1801.1453 -2037.4521 Z" clip-path="url(#clipPath2)" stroke="none"/>
+ <path d="M1792.8953 -1896.3639 L1801.1453 -1907.3639 L1792.8953 -1903.2389 L1784.6453 -1907.3639 Z" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M1431.4404 -2208.9963 L1423.4104 -2209.3257 L1411.0759 -2208.9231 L1399.5372 -2206.6707 L1394.0663 -2204.8508 L1388.7943 -2202.5686 L1378.847 -2196.6169 L1369.6957 -2188.8157 L1361.3401 -2179.1646 L1353.7803 -2167.6638 L1347.0161 -2154.3135 L1341.0479 -2139.1133 L1335.8754 -2122.0637 L1331.4985 -2103.1643 L1327.9176 -2082.415 L1325.1323 -2059.8164 L1323.1429 -2035.3678 L1321.9492 -2009.0697 L1321.5514 -1980.9219 L1321.5514 -1929.2371 L1321.8862 -1901.0729 L1322.891 -1874.7258 L1324.5654 -1850.1958 L1326.9097 -1827.4828 L1329.9237 -1806.5868 L1333.6075 -1787.5078 L1337.9612 -1770.246 L1342.9846 -1754.801 L1348.6779 -1741.1732 L1355.0409 -1729.3625 L1362.0736 -1719.3688 L1369.7762 -1711.1921 L1378.1486 -1704.8324 L1387.1908 -1700.2898 L1396.9027 -1697.5643 L1402.288 -1697.093 L1402.3879 -1697.093" clip-path="url(#clipPath2)"/>
+ <path d="M1436.9358 -2208.771 L1426.2831 -2217.4648 L1430.0665 -2209.0527 L1425.6071 -2200.9785 Z" clip-path="url(#clipPath2)" stroke="none"/>
+ <path d="M1407.8699 -1696.6477 L1397.574 -1705.7612 L1401.0175 -1697.2043 L1396.238 -1689.3154 Z" clip-path="url(#clipPath2)" stroke="none"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(169,192,169)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(169,192,169)" stroke-width="3" stroke-miterlimit="1.45">
+ <path fill="none" d="M3323.1741 -2213.5359 L3279.698 -2163.2012" clip-path="url(#clipPath2)"/>
+ <path d="M3273.1614 -2155.6333 L3287.6963 -2162.8997 L3280.5151 -2164.1472 L3278.2363 -2171.0706 Z" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M3285.5383 -2123.0562 L3386.8152 -2109.5869" clip-path="url(#clipPath2)"/>
+ <path d="M3396.7278 -2108.2686 L3382.6826 -2116.4417 L3385.5759 -2109.7517 L3381.0347 -2104.0508 Z" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M3413.7205 -2134.0354 L3373.8918 -2200.9336" clip-path="url(#clipPath2)"/>
+ <path d="M3368.7761 -2209.5261 L3371.0793 -2193.4402 L3374.5312 -2199.8596 L3381.8198 -2199.8347 Z" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M2486.301 -2196.0615 L2536.3291 -2196.1079" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/>
+ <path fill="black" d="M2552.8291 -2196.1233 L2534.8208 -2205.1064 L2534.8374 -2187.1064 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M2984.7827 -2196.3237 L3100.8167 -2196.3237" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/>
+ <path fill="black" d="M3117.3167 -2196.3237 L3099.3167 -2205.3237 L3099.3167 -2187.3237 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M2702.1189 -1465.699 L2620.925 -1450.9399" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/>
+ <path fill="black" d="M2604.6912 -1447.989 L2624.0105 -1442.3533 L2620.7913 -1460.0631 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M2744.5061 -1416.4689 L2609.3813 -1421.4326" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/>
+ <path fill="black" d="M2592.8926 -1422.0383 L2610.55 -1412.3837 L2611.2109 -1430.3715 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M2792.9458 -1363.5251 L2598.1128 -1395.0183" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/>
+ <path fill="black" d="M2581.8242 -1397.6512 L2598.1575 -1385.8943 L2601.0298 -1403.6636 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M2191.3652 -1431.3491 L2185.3164 -1431.9592 L2171.98 -1433.9745 L2159.5791 -1436.5656 L2148.1138 -1439.7324 L2137.584 -1443.475 L2127.9897 -1447.7935 L2119.3311 -1452.6876 L2111.6079 -1458.1577 L2104.8203 -1464.2035 L2098.9685 -1470.8251 L2094.052 -1478.0225 L2090.071 -1485.7957 L2087.0256 -1494.1445 L2084.9158 -1503.0693 L2071.7554 -1576.9047" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/>
+ <path fill="black" d="M2068.8601 -1593.1487 L2063.1582 -1573.8488 L2080.8789 -1577.0072 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M3348.7556 -1810.2682 L3348.7556 -1976.5781" stroke-width="4" clip-path="url(#clipPath2)" stroke="black"/>
+ <path fill="black" d="M3348.7556 -1991.7031 L3340.5056 -1975.2031 L3357.0056 -1975.2031 Z" stroke-width="4" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M1867.2858 -1593.1366 L1891.0948 -1429.4773 L1893.8873 -1413.0779 L1897.3948 -1397.3555 L1901.6171 -1382.3101 L1906.5543 -1367.9417 L1912.2065 -1354.2502 L1918.5737 -1341.2358 L1925.6559 -1328.8983 L1933.4529 -1317.2378 L1941.9648 -1306.2543 L1951.1917 -1295.9478 L1961.1335 -1286.3182 L1971.7903 -1277.3657 L1983.162 -1269.0901 L1995.2485 -1261.4916 L2008.0502 -1254.5699 L2021.5667 -1248.3253 L2142.0413 -1197.0393" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/>
+ <path fill="black" d="M2157.2229 -1190.5765 L2144.1863 -1205.9077 L2137.136 -1189.3459 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M2550.9702 -1164.0516 L2685.6538 -1152.339" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/>
+ <path fill="black" d="M2702.0918 -1150.9094 L2684.9392 -1161.4351 L2683.3796 -1143.5028 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M2185.7205 -1322.033 L2164.7954 -1323.8374 L2143.3127 -1326.1602 L2123.0798 -1329.3157 L2104.0972 -1333.3038 L2086.3645 -1338.1248 L2069.8816 -1343.7783 L2054.6489 -1350.2648 L2040.666 -1357.5839 L2027.9333 -1365.7356 L2016.4504 -1374.7202 L2006.2177 -1384.5374 L1997.2349 -1395.1874 L1989.5021 -1406.67 L1983.0193 -1418.9855 L1977.7865 -1432.1337 L1973.8036 -1446.1145 L1971.0708 -1460.9281 L1955.0327 -1576.8114" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/>
+ <path fill="black" d="M1952.7706 -1593.1556 L1946.3234 -1574.0918 L1964.1533 -1576.5594 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M3235.1655 -1432.8428 L3286.5737 -1477.0204" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/>
+ <path fill="black" d="M3299.0876 -1487.7744 L3279.5701 -1482.8685 L3291.302 -1469.2169 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M3348.7556 -1433.0472 L3348.7556 -1471.2925" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/>
+ <path fill="black" d="M3348.7556 -1487.7925 L3339.7556 -1469.7925 L3357.7556 -1469.7925 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M3462.3457 -1432.8428 L3410.9375 -1477.0204" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/>
+ <path fill="black" d="M3398.4236 -1487.7744 L3406.2092 -1469.2169 L3417.9412 -1482.8685 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/>
+ <path fill="none" d="M3348.7556 -1573.1875 L3348.7556 -1695.8324" stroke-width="4" clip-path="url(#clipPath2)" stroke="black"/>
+ <path fill="black" d="M3348.7556 -1710.9574 L3340.5056 -1694.4574 L3357.0056 -1694.4574 Z" stroke-width="4" clip-path="url(#clipPath2)" stroke="none"/>
+ </g>
+ </g>
+</svg>
diff --git a/nerv/doc/source/_static/nerv-hierarchy.svg b/nerv/doc/source/_static/nerv-hierarchy.svg
new file mode 100644
index 0000000..3744718
--- /dev/null
+++ b/nerv/doc/source/_static/nerv-hierarchy.svg
@@ -0,0 +1,407 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/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="1274" stroke-miterlimit="10" shape-rendering="auto" stroke-opacity="1" fill="black" stroke-dasharray="none" font-weight="normal" stroke-width="1" height="396" font-family="'Dialog'" font-style="normal" stroke-linejoin="miter" font-size="12px" stroke-dashoffset="0" image-rendering="auto">
+ <!--Generated by ySVG 2.5-->
+ <defs id="genericDefs"/>
+ <g>
+ <defs id="defs1">
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
+ <path d="M0 0 L1274 0 L1274 396 L0 396 L0 0 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
+ <path d="M932 -390 L4011.835 -390 L4011.835 567.3113 L932 567.3113 L932 -390 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
+ <path d="M-32.8943 -337.4574 L2612.8699 -337.4574 L2612.8699 484.9309 L-32.8943 484.9309 L-32.8943 -337.4574 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
+ <path d="M-288.3814 -337.4574 L2357.3828 -337.4574 L2357.3828 484.9309 L-288.3814 484.9309 L-288.3814 -337.4574 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
+ <path d="M-39.9316 -484.4621 L3039.9033 -484.4621 L3039.9033 472.8492 L-39.9316 472.8492 L-39.9316 -484.4621 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
+ <path d="M5.6079 -13.3581 L269.8296 -13.3581 L269.8296 68.7705 L5.6079 68.7705 L5.6079 -13.3581 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
+ <path d="M1.8138 -15.5958 L494.2796 -15.5958 L494.2796 137.4783 L1.8138 137.4783 L1.8138 -15.5958 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
+ <path d="M1.8138 1.9932 L494.2796 1.9932 L494.2796 155.0673 L1.8138 155.0673 L1.8138 1.9932 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
+ <path d="M-223.5607 -156.4302 L495.8168 -156.4302 L495.8168 67.1754 L-223.5607 67.1754 L-223.5607 -156.4302 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
+ <path d="M-18.5536 -387.4019 L1699.1757 -387.4019 L1699.1757 146.5233 L-18.5536 146.5233 L-18.5536 -387.4019 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
+ <path d="M5.7135 -60.604 L270.1124 -60.604 L270.1124 21.5796 L5.7135 21.5796 L5.7135 -60.604 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
+ <path d="M-1150.6636 -320.1173 L534.0324 -320.1173 L534.0324 203.5402 L-1150.6636 203.5402 L-1150.6636 -320.1173 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
+ <path d="M-1588.556 -358.7229 L293.157 -358.7229 L293.157 226.1738 L-1588.556 226.1738 L-1588.556 -358.7229 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
+ <path d="M-582.4009 -189.1061 L278.339 -189.1061 L278.339 78.4394 L-582.4009 78.4394 L-582.4009 -189.1061 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
+ <path d="M-1600.2053 -282.0543 L739.3726 -282.0543 L739.3726 445.1614 L-1600.2053 445.1614 L-1600.2053 -282.0543 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
+ <path d="M-2100.4241 -320.2762 L545.3402 -320.2762 L545.3402 502.1121 L-2100.4241 502.1121 L-2100.4241 -320.2762 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
+ <path d="M-2499.4963 -340.2573 L306.332 -340.2573 L306.332 531.884 L-2499.4963 531.884 L-2499.4963 -340.2573 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
+ <path d="M-582.4009 -128.1903 L278.339 -128.1903 L278.339 139.3552 L-582.4009 139.3552 L-582.4009 -128.1903 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
+ <path d="M-3.8789 -158.0155 L852.1881 -158.0155 L852.1881 108.0775 L-3.8789 108.0775 L-3.8789 -158.0155 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
+ <path d="M-333.1401 -197.0977 L723.7469 -197.0977 L723.7469 131.4166 L-333.1401 131.4166 L-333.1401 -197.0977 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
+ <path d="M-315.7819 -417.1838 L1530.6765 -417.1838 L1530.6765 156.7546 L-315.7819 156.7546 L-315.7819 -417.1838 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
+ <path d="M-269.9316 -484.4621 L2809.9033 -484.4621 L2809.9033 472.8492 L-269.9316 472.8492 L-269.9316 -484.4621 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
+ <path d="M-1389.7185 -466.8361 L1043.7312 -466.8361 L1043.7312 289.558 L-1389.7185 289.558 L-1389.7185 -466.8361 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
+ <path d="M-305.4361 0.5743 L274.2975 0.5743 L274.2975 180.7741 L-305.4361 180.7741 L-305.4361 0.5743 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
+ <path d="M-305.4361 -20.1315 L274.2975 -20.1315 L274.2975 160.0683 L-305.4361 160.0683 L-305.4361 -20.1315 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
+ <path d="M-577.8283 -358.4779 L2228 -358.4779 L2228 513.6633 L-577.8283 513.6633 L-577.8283 -358.4779 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath27">
+ <path d="M-499.9316 -484.4621 L2579.9033 -484.4621 L2579.9033 472.8492 L-499.9316 472.8492 L-499.9316 -484.4621 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath28">
+ <path d="M-729.9316 -484.4621 L2349.9033 -484.4621 L2349.9033 472.8492 L-729.9316 472.8492 L-729.9316 -484.4621 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath29">
+ <path d="M-989.9316 -394.4621 L2089.9033 -394.4621 L2089.9033 562.8492 L-989.9316 562.8492 L-989.9316 -394.4621 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath30">
+ <path d="M-989.9316 -484.4621 L2089.9033 -484.4621 L2089.9033 472.8492 L-989.9316 472.8492 L-989.9316 -484.4621 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath31">
+ <path d="M-1242.3081 -484.4621 L1837.5269 -484.4621 L1837.5269 472.8492 L-1242.3081 472.8492 L-1242.3081 -484.4621 Z"/>
+ </clipPath>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath32">
+ <path d="M-1419.335 -467.669 L1555.9017 -467.669 L1555.9017 457.1298 L-1419.335 457.1298 L-1419.335 -467.669 Z"/>
+ </clipPath>
+ </defs>
+ <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="scale(0.4137,0.4137) translate(-932,390)" stroke="white">
+ <rect x="932" width="3080" height="958" y="-390" clip-path="url(#clipPath2)" stroke="none"/>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4815,0,0,0.4815,15.8394,162.494)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath3)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABiCAYAAACRfCwRAAACk0lEQVR42u3Yb0tT&#10;ARjG4Z2p81+WU1uYmGWJEmVqagWZWVJR3//7dB949jZo84WcXTdcbzcYnB/PWa9n&#10;ZmZmZmZmZmZmZvd2DTBz7jwi/Zgr88DMGD/3/buIS1MfthCLsRwrwMxon/mlGFQL&#10;mmkvk0F98KPYiK14DHTeVj3z6/GgjoqJo9LUydPGZBjbsRf78QrovJfxPHYqLmt1&#10;YPQnCcr4OnlYMWm/4E2cxjnQeWdxHIexW9fKch0a/725enca1mXSxuQyPsdXoPOu&#10;4mOc1EExitX6T3WioLQ12qzXnLP6gtv4CXRe+6xfx0Uc1ZvK2rRB2ao6nVe12i/6&#10;A3Ter/hWV8rreCoogKAAggIIiqAAggIICiAoggKCIiiAoACCAgiKoACCAggKICiC&#10;AoIiKICgAIICCIqgAIICCAogKH5sEBRBAQQFEBRAUAQFEBRAUABBAQRFUABBAQQF&#10;EBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEEBRAUQQFBERRA&#10;UABBAQRFUABBAQQFEBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREUQFAAQQEERVAA&#10;QQEEBRAUQQFBERRAUABBAQTl30G5jh/xG+i89ni4ueugbMZ+nMZVfK8vArrtto6I&#10;iziK7WmDshTD2Iu38aGicgN03pf4FCf1lvIkVicNSj8W42GdOgdxHO/jEui89m+O&#10;d3WdPKu3lfatZX6SoDRVopXYiJ14UWE5BDrvoP7u2I1Rve4s1rExUVDa155BnTnr&#10;9QftqE4foNtG9cwPKyZLdZ00vQk3jspCfdhyxQWYDSv17A8qJv3elGtKv+IyVx8M&#10;dN/4me9Pc5mYmZmZmZmZmZmZmZnZfd5ficBAjR/DUPYAAAAASUVORK5CYII=" height="98" preserveAspectRatio="none"/>
+ <path fill="rgb(169,192,169)" d="M979.9316 12.4621 L1277.3346 12.4621 L1277.3346 102.4621 L979.9316 102.4621 Z" clip-path="url(#clipPath2)" transform="matrix(0.8591,0,0,0.8591,-833.5386,-2.4238)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M979.9316 12.4621 L1277.3346 12.4621 L1277.3346 102.4621 L979.9316 102.4621 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="1016.0496" xml:space="preserve" y="69.2326" clip-path="url(#clipPath2)" stroke="none">AffineLayer</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4815,0,0,0.4815,138.8627,162.494)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath4)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABiCAYAAACRfCwRAAACoklEQVR42u3ZW0tU&#10;URjH4TnrTHmYPGFG5tgBwyTNDEwzy+z0/b9P74JXmJsu2uNFrHn+8Fy6BWH/WHvZ&#10;apmZmZmZmZmZmZnZf7s2MJfuNSKd0E09YK50swEzx6WdD+uHhTAMI2BulHd+Md//&#10;3lRYGp9MBvnglfAorIcNoHrlXV8L47CUcelnFxoFpZcxKQ/cDrthEp4D1dsPe+Fp&#10;2AqrGZVuk1PK3elkOWNSfsFhOA6nQPVOwtvwOsOyGR7mKeWfg9LNb6dxnkxKTM7C&#10;RfgMVO9T+JhxOQg7efUxaBqUYX5DTbJWl+EmfAeq9y18CefhKA8W47ygbRyU9fzc&#10;Oc1qlV/0G6jez4zKZX76PMt/zAgKICiAoACCIiiAoACCAgiKPzQIiqAAggIICiAo&#10;ggIICiAogKAAgiIogKAAggIIiqAAggIICiAogKAICiAogKAAgiIoICiCAggKICiA&#10;oAgKICiAoACCIiggKIICCAogKICgCAogKICgAIIiKCAoggIICiAogKAICiAogKAA&#10;giIoICiCAggKICiAoAgKICiAoACCIiggKIICCAogKICgCAogKICgAILiDw2CIiiA&#10;oACCAgiKoACCAggKICiAoAgKICiAoACC8pegXIXb8Auo3o9wEy7uMyhrYRKOs1Rf&#10;85QC1K2cTq7DeTgKu2E8S1AW8wHlQW/Ch4zKNVC9qzydvA8H4UlYDYMmQelkiZbD&#10;4/AiK/UunAHVK9ccJ+Ew7IetsBT6TYLSzh8c5XfTTtjLsLwCqvcy70/LF8p2nk7K&#10;NUiv1WDt/Owpx5sH+bByQbuZpQLqVt71jbxHXcnDRT+/XlqzRKWf9ynDjAswH0b5&#10;3i9MxaTdmmHt1Mm4dPPIA9Tv7p3vTLXAzMzMzMzMzMzMzMzMqtofzWxJgOHf0bsAAAAASUVORK5CYII=" height="98" preserveAspectRatio="none"/>
+ <path fill="rgb(169,192,169)" d="M1277.3346 12.4621 L1575.2334 12.4621 L1575.2334 102.4621 L1277.3346 102.4621 Z" clip-path="url(#clipPath2)" transform="matrix(0.8591,0,0,0.8591,-1089.0257,-2.4238)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1277.3346 12.4621 L1575.2334 12.4621 L1575.2334 102.4621 L1277.3346 102.4621 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="1303.4657" xml:space="preserve" y="69.2326" clip-path="url(#clipPath2)" stroke="none">SigmoidLayer</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4137,0,0,0.4137,16.518,200.4019)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath5)" width="251" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPsAAABvCAYAAAAqhbbzAAACmUlEQVR42u3Y205T&#10;URSG0R4oPSUWoWAEk4q0eiMYi6AmamtE8fD+78NcybwwXu42WTUZfzIuWSQk3157&#10;02qZmZmZmZmZmZnZf7E2sJO2GnkndMMesFO62Wd7G6GXw/bDIIzCGNgJo+yyl522&#10;txF6OfggTMNJeAJUUxo8DkfZ5Tg77TaNvZNPjHEe+iych0V4CVQ1zx7PwmHe8r2m&#10;t3uJvZ9PjnLgq/AmvAu3QDU34Tpc5eV7GibZa6dJ7OWVYJi3+nmG/jGswlegmnX4&#10;Ej6EyzDL232wSeyj/DZY5I1eQv8efgLV3Ie7DH4ZLvL/acNNYz/Jb4TbfKqUX/YH&#10;qOZ3Br/OS3gudhC72EHsYgexix3EDogdEDsgdkDsIHaxg9jFDmIXO4hd7CB2QOyA&#10;2AGxA2IHxA5iFzuIXewgdrGD2MUOYgfEDogdEDsgdkDsIHaxg9jFDmIXO4jdHxvE&#10;DogdEDsgdkDsIHaxg9jFDmIXO4hd7CB2QOyA2AGxA2IHxA5iFzuIXewgdrGD2MUO&#10;YgfEDogdEDsgdhC72EHsYgexix3ELnYQOyB2QOyA2AGxA2IHsYsdxC52ELvYQexi&#10;B7EDYgfEDogdEDuIXewgdrGD2MUOYhc7iB0QOyB2YOdjv8nD7/OXAXX8Cj/CKlxv&#10;M/bjPKwc+jncZfBAHSX0b+FTeBtehKNNYx/mIc/DVXifwa+BalYZevm0fh1m4XEY&#10;NI29/FA/HISzfJW/DMv8TgDqWWaP5a37aXgU9pvG3g69MM7b/TRv+IuwAKqZZ4ez&#10;DP0wP7n3sttGsXfzaVGCn+Sh0/yOB+qZZo+TDL3X9Fb/N/hevtIP8jt+BFQ1zB77&#10;f4Xebm24duqkLrATOtuK3MzMzMzMzMzMzMzMtrEHVAdrqUAHNrEAAAAASUVORK5C&#10;YII=" height="111" preserveAspectRatio="none"/>
+ <path fill="rgb(169,192,169)" d="M979.9316 102.4621 L1209.9316 102.4621 L1209.9316 192.4621 L979.9316 192.4621 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-971.9316,-94.4621)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M979.9316 102.4621 L1209.9316 102.4621 L1209.9316 192.4621 L979.9316 192.4621 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="1013.0527" xml:space="preserve" y="159.2326" clip-path="url(#clipPath2)" stroke="none">RNNLayer</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(4.8217,0,0,4.8217,-27.0395,64.4089)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath6)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAAbCAYAAAC9UXAYAAABwElEQVR42u3cSU8C&#10;QRiEYfYdVBSFuOJu1KioGI0oGkX8/3/I6qRIODPjpXkrea49p6/S3TOQyRBCCCGE&#10;EEIIIYQQQgghhJC4kwWwtFIvk7wUrAhgKcxmPpdWseS8YFmqUpeGNAFEq2F1z33J&#10;m4ps0p1JKJOKH9KWjnQBRG/L8952uZSTlkrOzdT0wntyJGdyDiBqp573XdlwqRTd&#10;Cwsl7+1O22VyIXcylCcAUXuQW5fLjqz6tLJwoRR8huq4qUKZvMhYPgFE60Pe5dml&#10;cuhdStUbjYULpeGzVDjmPLpMJjIFEK0f+XKphJ3KiWxKLY1C6bpQhm6u8LBfANGa&#10;euMw9kYitUKpe6Gw4L2M3FzhYd8AojPxjIejz6sMfOXRSaNQaj479eXau5TwkDcA&#10;0Rr5vnToud/3y5lEdyh53+qG291tOZYrX9IMAEQrvIC5kUvPfU9W/C3Kwm95cn7v&#10;XHc79fz6uO9bXwBxCjN+4G9Qwh3qmk8rhSQfts1+w1PyYi0vHMplHUDU2j6dtDz/&#10;iT5qmy+V2e95St7yVHyWqgCIzvxslz33qf5AcL5YACyXf/kLA0IIIYQQQgghhBBC&#10;CCEJ8weQglGCn84JNwAAAABJRU5ErkJggg==" height="27" preserveAspectRatio="none"/>
+ <path fill="rgb(197,174,155)" d="M981.1957 -119.7321 L3964.9678 -119.7321 L3964.9678 -29.7321 L981.1957 -29.7321 Z" clip-path="url(#clipPath2)" transform="matrix(0.0858,0,0,0.0858,-74.3492,20.1003)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,99,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,99,78)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M981.1957 -119.7321 L3964.9678 -119.7321 L3964.9678 -29.7321 L981.1957 -29.7321 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="40px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="2400.8357" xml:space="preserve" y="-60.8844" clip-path="url(#clipPath2)" stroke="none">Matrix</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(2.587,0,0,2.587,-4.6923,40.3461)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath7)" width="275" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAAAiCAYAAAB8+D0EAAAB5klEQVR42u3cV0sD&#10;QRiF4SS7JlFjLDHG3rEX7A1bFI36//+PZ+AIInqzu4iM74EHvHFzNYdvlpktlQgh&#10;hBBCCCGEEEIIIYQQQkgcKQP4twotkkRS6wPwL6Re+5UiSqXiB9akXwalIUMAotWw&#10;sN7rUnWplPNMJKkfFn5gTNoyCSB6Ha/3UZdK1cNF5qmk6iIJD52XFVmXDQBRW5Nl&#10;mZGWDHi4yDSdJN7ajLlINuVATuUMQNSOZd+lMi3NPNNJ6vGm7YkkFMml3EkXQLTu&#10;5UbOZVcWvN2p5SmThvdPYWtz4iJ5lhcA0erJo1x7iFj2VqdeRJlsePTp+sfeAETr&#10;VZ7kVo68MxmnTAAUUSZMJgAoEwCUCQDKhDIBKBPKBMBfLpPON+dMegCiVvg5k3AC&#10;dkJW5VCuPJ2EH3oAEJ2PtR2mkgvZk0Vfq8lcJokv97R8nHbb5/UvXCqXAKLzsbbP&#10;PJWEVxyzMpznOH3if276vcmSH7zj8/oA4hTW+JYv+S34fl545RE+mJTp1nDF/xxu&#10;Do94uxNuD84BiF749MCUj9E3vcXJ/IGk8qdCqbuZmh53RgBELazzIb83rZVyfMvk&#10;a6EkLpWq1T79DSAeX9d2Wsr5ycafigUAX6cnhBBCCCGEEEIIIYQQ8lt5B3gESCra&#10;G5I2AAAAAElFTkSuQmCC" height="34" preserveAspectRatio="none"/>
+ <path fill="rgb(197,174,155)" d="M981.1957 -231.9262 L2581.1958 -231.9262 L2581.1958 -141.9262 L981.1957 -141.9262 Z" clip-path="url(#clipPath2)" transform="matrix(0.1599,0,0,0.1599,-147.2131,46.7652)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,99,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,99,78)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M981.1957 -231.9262 L2581.1958 -231.9262 L2581.1958 -141.9262 L981.1957 -141.9262 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="40px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="1684.8677" xml:space="preserve" y="-173.0786" clip-path="url(#clipPath2)" stroke="none">CuMatrix</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(2.587,0,0,2.587,-4.6923,-5.1564)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath8)" width="275" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAAAiCAYAAAB8+D0EAAAB5klEQVR42u3cV0sD&#10;QRiF4SS7JlFjLDHG3rEX7A1bFI36//+PZ+AIInqzu4iM74EHvHFzNYdvlpktlQgh&#10;hBBCCCGEEEIIIYQQQkgcKQP4twotkkRS6wPwL6Re+5UiSqXiB9akXwalIUMAotWw&#10;sN7rUnWplPNMJKkfFn5gTNoyCSB6Ha/3UZdK1cNF5qmk6iIJD52XFVmXDQBRW5Nl&#10;mZGWDHi4yDSdJN7ajLlINuVATuUMQNSOZd+lMi3NPNNJ6vGm7YkkFMml3EkXQLTu&#10;5UbOZVcWvN2p5SmThvdPYWtz4iJ5lhcA0erJo1x7iFj2VqdeRJlsePTp+sfeAETr&#10;VZ7kVo68MxmnTAAUUSZMJgAoEwCUCQDKhDIBKBPKBMBfLpPON+dMegCiVvg5k3AC&#10;dkJW5VCuPJ2EH3oAEJ2PtR2mkgvZk0Vfq8lcJokv97R8nHbb5/UvXCqXAKLzsbbP&#10;PJWEVxyzMpznOH3if276vcmSH7zj8/oA4hTW+JYv+S34fl545RE+mJTp1nDF/xxu&#10;Do94uxNuD84BiF749MCUj9E3vcXJ/IGk8qdCqbuZmh53RgBELazzIb83rZVyfMvk&#10;a6EkLpWq1T79DSAeX9d2Wsr5ycafigUAX6cnhBBCCCGEEEIIIYQQ8lt5B3gESCra&#10;G5I2AAAAAElFTkSuQmCC" height="34" preserveAspectRatio="none"/>
+ <path fill="rgb(197,174,155)" d="M981.1957 -341.9262 L2581.1958 -341.9262 L2581.1958 -251.9262 L981.1957 -251.9262 Z" clip-path="url(#clipPath2)" transform="matrix(0.1599,0,0,0.1599,-147.2131,64.3542)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,99,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,99,78)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M981.1957 -341.9262 L2581.1958 -341.9262 L2581.1958 -251.9262 L981.1957 -251.9262 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="40px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="1552.4165" xml:space="preserve" y="-283.0786" clip-path="url(#clipPath2)" stroke="none">CUDA (cuBLAS, etc.)</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1.771,0,0,1.771,395.9205,277.0341)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath9)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAApCAYAAAD049a+AAACG0lEQVR42u3dW08T&#10;URTF8WlLsZQCsYCtSFBES0sQuVqVi3KRVv3+38e10zWhL7x0Jj6c/lfyez3z1JV9&#10;JumeLCOEEEIIIYQQQgghhBBCCCFpp2JVAHOjMqW0IomDa7IgdVkEMBfq/t3XyiiV&#10;vEzi0IY0pSWrAJK34t/7ksulcKlU3U5x4JpsSEe2ACTvtbyStovlhUtl5umk5kOi&#10;TLryVnoykAMASduXPdmWdVn2baUya6Es+JoTk8k7P+RMhvINQLK+yoV89hCx5cFi&#10;sUih1D3qdHzoqVzJrdwDSNad3LhYPvl28tI3lkKFsuJ2GngyiTIZyW8AyRrLg1zL&#10;iez62tPwu9XChXLgtrr3A/8CSNYfeZQffs2xR6EAKFooN37V8X6qUCoUCgAKBQCF&#10;AoBCoVAAUCgAKBQAFAqFAlAoFAoACgUAhQKAQqFQAPy3//LE35rHfiCANMXQ8OuZ&#10;CaVwocQquL58kZ9urhGApMVt5FKOs8n6gnYZV558wdLHbLIX4btL5RZA0q49RBzK&#10;TlbCgqV8BWSMOrGxaeBSiYcMASQrfuPncuRhIm4psQl/5hWQkXxJ9aqnlGipD9lk&#10;eW0fQNJ6fnfyxkNF00PGzIWSTykNl0ocGmv1u24sAGnqeojY9FVn2dNJNSuY/Ns8&#10;Maks+eAWgLnQ9EBRyoe+pieV6c+RApgftezpO8eEEEIIIYQQQgghhBBCCCEkufwD&#10;ih9Il5wb8J0AAAAASUVORK5CYII=" height="41" preserveAspectRatio="none"/>
+ <path fill="rgb(124,157,124)" d="M1929.9316 320.5293 L3024.9622 320.5293 L3024.9622 410.5293 L1929.9316 410.5293 Z" clip-path="url(#clipPath2)" transform="matrix(0.2336,0,0,0.2336,-441.2541,-65.3353)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(63,99,63)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(63,99,63)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1929.9316 320.5293 L3024.9622 320.5293 L3024.9622 410.5293 L1929.9316 410.5293 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="40px" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="2369.0779" xml:space="preserve" y="379.3769" clip-path="url(#clipPath2)" stroke="none">ParamRepo</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.7417,0,0,0.7417,13.7608,287.327)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath10)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABGCAYAAAANQWsxAAACfElEQVR42u3Ya0sV&#10;URiG4X1wHzyfsiytMDPR1M6ZlpWlmfb//0/vwLtBhAJnz6fl9cBFfpoNwdysNa2W&#10;mZmZmZmZmZmZmZmZlbt26qQucCeM3vlRAxqJSfXgXuiHQRgCxRuk6r2fuBaWsWNS&#10;PXQqzIaFsAgUr3rX5/O9n8ywdOtGZRST6iEzYTmshvXwBCje47AWHmRgpvKm0qkb&#10;lIl8yFKG5HnYDQdA8fbCTtgMj/LEMsyDxq3XydPJbJ5MtsKrcBg+hy9Asap3/Ch8&#10;CPthI6yE6Txo1ArKIO9Q63ky+Ri+hbNwDhSresd/hJPwLmznwWJm3KAs5H2qqtRx&#10;/tBluAKKVb3jF+E0byW7ee2ZbSooB3kMOs8f/AMU7XeeUj7dCEpPUIDbuPpPUJxQ&#10;AEEBBAUQFEEBBAUQFEBQBAUERVAAQQEEBRAUQQEEBRAUQFD8h4OgCAogKICgAIIi&#10;KCAoggIICiAogKAICiAogKAAgiIoICiCAggKICiAoAgKICiAoACCIiggKIICCAog&#10;KICgCAogKICgAIIiKCAoggLU96+g9AQFaOqE0khQ9sNxOMsfugSKdhFOw2HYaerK&#10;Mx/Ww8t88Pc8pfzKf4GyjN7tn+EkvA/bYTXMjBOUfhbpYXgR3oSj/JGvQLFO8hPH&#10;YX7u2Az3w3TdoLTzrlQ94F54mpU6yLC8BYpVveOvw17YylvKYpgM3bpB6ea1Zy6s&#10;hLUMyzOgeBv5/bT6drKc151+3l5adaNSHW+G+bDqe8pSPhwo21KeSubypjLIQ0a7&#10;NcY6+ZBePnCYJq/9DZTj5rvdz/d/7JhcP6m0My7A3dNuKiZmZmZmZmZmZmZm1tD+&#10;ApjkFTe7x4XtAAAAAElFTkSuQmCC" height="70" preserveAspectRatio="none"/>
+ <path fill="rgb(124,157,124)" d="M981.1957 320.5293 L1439.9316 320.5293 L1439.9316 410.5293 L981.1957 410.5293 Z" clip-path="url(#clipPath2)" transform="matrix(0.5577,0,0,0.5577,-538.3619,-169.8856)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(63,99,63)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(63,99,63)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M981.1957 320.5293 L1439.9316 320.5293 L1439.9316 410.5293 L981.1957 410.5293 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="40px" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="1126.2766" xml:space="preserve" y="379.3769" clip-path="url(#clipPath2)" stroke="none">Network</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(4.8185,0,0,4.8185,-27.5301,292.019)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath11)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAAbCAYAAAC9UXAYAAABvUlEQVR42u3cSU8C&#10;QRiEYZZhQBaD4IK7uJu4o5gYMGrA5f//IauTIvFs46V5K3muzGkqXy9DoUAIIYQQ&#10;QgghhBBCCCGEEELSThHAwpp7mZQlswqAhZD53S/Nq1hK/tGqLElDmtICkKymhfe9&#10;JrmLpRg7mWT+wfCQjqxJD0DyNmRV2i6W3ANG1HSSu0xCkezJkZzJOYCkncqhbEtX&#10;6h4w/jyllL3M6bhMLuROhvIEIGkPci0nsiXLsVNK5lFnzZNJKJNneZV3AMl6kxcX&#10;y6Xsy4r3UqMKpem1VFjmPLpMPuQLQLI+ZSIjufXSp+v91OhC6blQhm6u8LBvAMkK&#10;pTKVsVcmcyuUsORZ9zpq4AdMPKVMASRp4uEhbHHcSN97qdGFUvfRUfjBK08pI6+v&#10;AKRp7DIZ+DBm18fHUXsoZTdS20dHx96gCWuqewDJuvMJz4WHiQ1fH8ljjo1Lvn7b&#10;8Liz6ePjvtdUANIU3vED2XGZtH2FJOoeyuwbntxLn2UfHXW8QQMgXR0XSctlUom9&#10;KTsrldn3PLnXUDU/oAYgaVW/91lhjh8I/i4WAIvlX/7CgBBCCCGEEEIIIYQQQkhk&#10;fgBaMVEFlE4tmAAAAABJRU5ErkJggg==" height="27" preserveAspectRatio="none"/>
+ <path fill="rgb(197,155,155)" d="M979.9316 430.4265 L3961.0647 430.4265 L3961.0647 520.4265 L979.9316 520.4265 Z" clip-path="url(#clipPath2)" transform="matrix(0.0858,0,0,0.0858,-74.2973,-27.1231)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,78,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,78,78)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M979.9316 430.4265 L3961.0647 430.4265 L3961.0647 520.4265 L979.9316 520.4265 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="40px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="2350.0879" xml:space="preserve" y="489.2742" clip-path="url(#clipPath2)" stroke="none">Schedulers</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.7562,0,0,0.7562,870.1543,242.0789)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath12)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABFCAYAAACL1RmfAAACeElEQVR42u3Ya0tU&#10;URiG4Tk4B8+nLEsrzEw0tXOmZWVppv3//9O74B0QocCZ+bS8HrjIT3sg2Ddr7UbD&#10;zMzMzMzMzMzMzMzM6l0ztVIbuBMG7/ygAWOJSXlwJ3RDL/SB6vVSee8nroVl5JiU&#10;h06F2bAQFoHqlXd9Pt/7yQxLe9ioDGJSHjITlsNqWA9PgOo9DmvhQQZmKm8qrWGD&#10;MpEPWcqQPA+74QCo3l7YCZvhUZ5Y+nnQuPVaeTqZzZPJVngVDsPn8AWoVnnHj8KH&#10;sB82wkqYzoPGUEHp5R1qPU8mH8O3cBbOgWqVd/xHOAnvwnYeLGZGDcpC3qdKpY7z&#10;hy7DFVCt8o5fhNO8lezmtWd2XEE5yGPQef7gH6Bqv/OU8ulGUDqCAtzG1X+C4oQC&#10;CAogKICgCAogKICgAIIiKCAoggIICiAogKAICiAogKAAguI/HARFUABBAQQFEBRB&#10;AUERFEBQAEEBBEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEEBRAUQQFBERRAUABB&#10;AQRFUABBAQQFEBRBgTvoX0HpCAowrhPKWIKyH47DWf7QJVC1i3AaDsPOuK4882E9&#10;vMwHf89Tyq/8F6jL4N3+GU7C+7AdVsPMKEHpZpEehhfhTTjKH/kKVOskP3Ec5ueO&#10;zXA/TA8blGbelcoD7oWnWamDDMtboFrlHX8d9sJW3lIWw2RoDxuUdl575sJKWMuw&#10;PAOqt5HfT8u3k+W87nTz9tIYNirleNPPh5XvKUv5cKBuS3kqmcubSi8PGc3GCGvl&#10;Qzr5wH6avPY3UI+b73Y33/+RY3L9pNLMuAB3T3NcMTEzMzMzMzMzMzOzMe0vkxjJ&#10;8NMUUIYAAAAASUVORK5CYII=" height="69" preserveAspectRatio="none"/>
+ <path fill="rgb(93,118,118)" d="M3051.8381 211.4957 L3519.5107 211.4957 L3519.5107 301.4957 L3051.8381 301.4957 Z" clip-path="url(#clipPath2)" transform="matrix(0.547,0,0,0.547,-1660.4756,-106.784)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(47,74,74)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(47,74,74)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M3051.8381 211.4957 L3519.5107 211.4957 L3519.5107 301.4957 L3051.8381 301.4957 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="40px" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="3177.3052" xml:space="preserve" y="270.3434" clip-path="url(#clipPath2)" stroke="none">FrmBuffer</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.677,0,0,0.677,1075.5202,242.8707)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath13)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABLCAYAAACx33jvAAACeUlEQVR42u3YW08T&#10;URiG0U5baLGcAxFBwFM0IqcoQRGIIIqC////+O3k44ZELzq90M16k3XJNCGZJ3tP&#10;p2NmZmZmZmZmZmZmZmb1rgnd1AMelLt3v5lUSMpDp8IgDMMMUL1hms73v9c2KiUm&#10;/XzobFgIS2EZqF551xfDfHiUYRk7Kk3+8TAfuBrWw1Z4BlRvO2yGtQzMKKPSHTco&#10;U/mQlXz4m7AbDsIhULX9sBNehY08sQzzoDHWdWeQ15z1jMn78CmchXOgWuUd/xyO&#10;Mywv8pYyys8gYwVlmFUq15y9cBIuwvdwDVSrvONXGZejPFCs5bfUVkFZzvvUYVbr&#10;W7gJt0C1yjv+I1zmrWQnbypz+SlkIkE5z3KVH/wFVO1n+CooQFu3fwlKX1AAQQEE&#10;BRAUQQEEBRAUQFAEBQRFUABBAQQFEBRBAQQFEBRAUPzTQVAEBRAUQFAAQREUEBRB&#10;AQQFEBRAUAQFEBRAUABBERQQFEEBBAUQFEBQBAUQFEBQAEERFBAUQQEEBRAUQFAE&#10;BRAUQFAAQREUEBRBAQQFEBRAUAQFEBRAUID/wZ+CMiUowKROKK2Dsh0Owmm4yh+6&#10;AapV3vHrcBGOw9tJXXmWwmbYDR/Dl4zKN6Ba5R2/DGfhQ3gd1sJsm6AMwnx4kg88&#10;zKicAtU7CUdhLzwPq2E0blCavCuVB6yErYzKu7APVG8vrzov87qzmLeW3rhB6eUp&#10;ZS6jUk4qTzMu20DVyqeOjfA4P32M8pDR7Yy5Jo83g3zYfFZqCaheedcX8kAxE6bz&#10;kNF0WuzupNLPBw6AB2M6TyX9PJm0isn9sNzpAtVr7jEzMzMzMzMzMzOzf2m/AQMh&#10;iUbPbvbSAAAAAElFTkSuQmCC" height="75" preserveAspectRatio="none"/>
+ <path fill="rgb(93,118,118)" d="M3546.3867 211.4957 L3964.9678 211.4957 L3964.9678 301.4957 L3546.3867 301.4957 Z" clip-path="url(#clipPath2)" transform="matrix(0.611,0,0,0.611,-2157.988,-120.4413)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(47,74,74)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(47,74,74)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M3546.3867 211.4957 L3964.9678 211.4957 L3964.9678 301.4957 L3546.3867 301.4957 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="40px" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="3647.3081" xml:space="preserve" y="270.3434" clip-path="url(#clipPath2)" stroke="none">SeqBuffer</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1.4801,0,0,1.4801,862.0243,279.9001)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath14)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAAtCAYAAABvcpSoAAACI0lEQVR42u3dXU8T&#10;QRQG4G3LUq1QjQooatQgImDiF35gNH5gBPX//x/PpGcTwoWJ3V6Q6fMmz2V3kyb7&#10;5sxczDSNiIiIiIiIiIiIiIiI1J1BGgJLY3DOwoqkPHgUVkIbVoGl0OZ3P1pEqXRl&#10;Uh56JUzCWpgC1VvP77189+Msll6lMsyHXA3Xw+2wFbaB6t0Nm+Fmlsu4z6QyyB+P&#10;s0zuhIfhadgPB0DV9sKT8CCHibVcrcxdKCs57pSHPcqXvAnvwzFQrQ/hbXiZxXI/&#10;3MgBYzhvobTZSls5mbwOn8K3cAJU63v4ksXyIgeKW7mX2qtQ1nM9tZ+TSSmT0/AL&#10;qNZZ+BE+56pkJ2zkfupoEYVykG11ki/8A1Trdw4OX8NR2M0N2olCAeYplJ+57DnK&#10;zdluQhkqFEChAAoFUCgKBVAogEIBFIpCAYWiUACFAigUQKEoFEChAAoFUCj+dFAo&#10;CgX4/0LZzUKZKBTgUk0o5Tj9cgTku2Z2BGR50RlQrdMcHsoRkOUs6Z1FFYpDqsEh&#10;1Y+b2SHVvQrl4jUah83swNryko9AtY5zRfIqPGsWdI1GOYy2HJvfXfRVWmovi+U5&#10;UK3D3OYom7Hlgr/NXK2sNj2uI+3uNZ5kO23kfsq9bCygXts5SJQVyjSHi173G1+8&#10;LP1abtJOc2oB6tVdmH7+svRh0zNdqYzygW2OPUD92vzuR30mk3+VC7B8RERERERE&#10;REREROSy5S88n4l7HvW/KAAAAABJRU5ErkJggg==" height="45" preserveAspectRatio="none"/>
+ <path fill="rgb(93,118,118)" d="M3049.6843 320.4265 L3964.9678 320.4265 L3964.9678 410.4265 L3049.6843 410.4265 Z" clip-path="url(#clipPath2)" transform="matrix(0.2795,0,0,0.2795,-842.8725,-80.1105)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(47,74,74)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(47,74,74)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M3049.6843 320.4265 L3964.9678 320.4265 L3964.9678 410.4265 L3049.6843 410.4265 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="40px" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="3386.916" xml:space="preserve" y="379.2742" clip-path="url(#clipPath2)" stroke="none">DataBuffer</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.5445,0,0,0.5445,871.3801,153.5906)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath15)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABZCAYAAAD/wdt/AAACf0lEQVR42u3Y205T&#10;URSG0Xb3QFutLUXAA2o9REUFFdFEFE0Jnt//fZw7mU24dRcTsjr+ZFyySUjWl7Vo&#10;tczMzMzMzMzMzMzsSq8NrJX/EpAqdIC1VF1GXJYh6YZ+GIRhGAHFG6ZBnv/uKmFZ&#10;xqSXHx2HaZiFm0DxtvK8T/P8D7IHVdOgdDMm9Qd3w16Yh0fAWpjnud8Jk4xKp0lQ&#10;qrzmjDMmD8N+eB2OgOK9DYd57uuwbIfreUv552dPJ2s0zUK9CMfhJHwBincaPoZ3&#10;4Xm4m7eUftOgDPMNNc+bSR2Ts/AdKN63sMioHIT7YTNsrBKUrXxLHWW16l/0Byje&#10;r4xKfVN5kxeLmaAAggIICiAoggIICiAogKAICgiKoACCAggKICiCAggKICiAoPhj&#10;g6AICiAogKAAgiIogKAAggIICiAoggIICiAogKAICgiKoACCAggKICiCAggKICiA&#10;oAgKCIqgAIICCAogKIICCAogKICgCAoIiqAAggIICiAoggIICiAogKAICgiKoACC&#10;AggKICiCAggKICiAoAgKCIqgAIICCAogKIICCAogKICgCAoIiqAAVywop/kLfgPF&#10;+xnOw+fLDMosP1R/8FM4Cz+A4tWXh0U4CYfhQdhcJSiD/MC98DK8z1otgOJ9zfNe&#10;n/v9sBemod8kKFWW6Ea4FZ6Eg3z6fACKd5zn/VV4HHbDOPSaBKWdPzjKW8qdfPrU&#10;YXkGFO9pnvf6qXM7byf1v0G6rQZr57Onn1GZ5D9od7JUQNnqs76d536SHejl66W1&#10;SlR6+fwZ5kevAWthlOd+40JM2q0V1k5VxqWTVx6gfMszX11ogZmZmZmZmZmZmZmZ&#10;mRW1v0UvlxiiABziAAAAAElFTkSuQmCC" height="89" preserveAspectRatio="none"/>
+ <path fill="rgb(125,144,144)" d="M3049.6843 -7.5379 L3386.6655 -7.5379 L3386.6655 82.4621 L3049.6843 82.4621 Z" clip-path="url(#clipPath2)" transform="matrix(0.7596,0,0,0.7596,-2308.1934,14.2068)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(93,118,118)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(93,118,118)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M3049.6843 -7.5379 L3386.6655 -7.5379 L3386.6655 82.4621 L3049.6843 82.4621 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="3126.061" xml:space="preserve" y="49.2326" clip-path="url(#clipPath2)" stroke="none">HTKReader</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4815,0,0,0.4815,1011.4054,154.2208)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath16)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABiCAYAAACRfCwRAAACoklEQVR42u3ZW0tU&#10;URjH4TnrTHmYPGFG5tgBwyTNDEwzy+z0/b9P74JXmJsu2uNFrHn+8Fy6BWH/WHvZ&#10;apmZmZmZmZmZmZnZf7s2MJfuNSKd0E09YK50swEzx6WdD+uHhTAMI2BulHd+Md//&#10;3lRYGp9MBvnglfAorIcNoHrlXV8L47CUcelnFxoFpZcxKQ/cDrthEp4D1dsPe+Fp&#10;2AqrGZVuk1PK3elkOWNSfsFhOA6nQPVOwtvwOsOyGR7mKeWfg9LNb6dxnkxKTM7C&#10;RfgMVO9T+JhxOQg7efUxaBqUYX5DTbJWl+EmfAeq9y18CefhKA8W47ygbRyU9fzc&#10;Oc1qlV/0G6jez4zKZX76PMt/zAgKICiAoACCIiiAoACCAgiKPzQIiqAAggIICiAo&#10;ggIICiAogKAAgiIogKAAggIIiqAAggIICiAogKAICiAogKAAgiIoICiCAggKICiA&#10;oAgKICiAoACCIiggKIICCAogKICgCAogKICgAIIiKCAoggIICiAogKAICiAogKAA&#10;giIoICiCAggKICiAoAgKICiAoACCIiggKIICCAogKICgCAogKICgAILiDw2CIiiA&#10;oACCAgiKoACCAggKICiAoAgKICiAoACC8pegXIXb8Auo3o9wEy7uMyhrYRKOs1Rf&#10;85QC1K2cTq7DeTgKu2E8S1AW8wHlQW/Ch4zKNVC9qzydvA8H4UlYDYMmQelkiZbD&#10;4/AiK/UunAHVK9ccJ+Ew7IetsBT6TYLSzh8c5XfTTtjLsLwCqvcy70/LF8p2nk7K&#10;NUiv1WDt/Owpx5sH+bByQbuZpQLqVt71jbxHXcnDRT+/XlqzRKWf9ynDjAswH0b5&#10;3i9MxaTdmmHt1Mm4dPPIA9Tv7p3vTLXAzMzMzMzMzMzMzMzMqtofzWxJgOHf0bsAAAAASUVORK5CYII=" height="98" preserveAspectRatio="none"/>
+ <path fill="rgb(125,144,144)" d="M3386.6655 -7.5379 L3684.5642 -7.5379 L3684.5642 82.4621 L3386.6655 82.4621 Z" clip-path="url(#clipPath2)" transform="matrix(0.8591,0,0,0.8591,-2901.0683,14.7574)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(93,118,118)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(93,118,118)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M3386.6655 -7.5379 L3684.5642 -7.5379 L3684.5642 82.4621 L3386.6655 82.4621 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="3423.0312" xml:space="preserve" y="49.2326" clip-path="url(#clipPath2)" stroke="none">KaldiReader</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4541,0,0,0.4541,1134.9085,154.4955)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath17)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABmCAYAAAAK7W4HAAACnElEQVR42u3YW08T&#10;ARSFUaYgpXKzUImgqIARL0QBQU0E8RY0+v//j3uSw5svtn0g07WT9domTebLmc7N&#10;mZmZmZmZmZmZmdmtXQPMnKlHpBfzZQGYGTfPfW8acWnqw+5EPwZxF5gZ7TO/FIvV&#10;gmbSy2SxPng9NmIU94HOG9Uzfy9W6qgYOypNnTxtTIaxHU9iP54BnXcQT+NhxWW1&#10;DozeOEG5uU7WKibtFxzFSZwBnXcab+IwdutaGdSh8d+br3enYV0mbUzex0V8ATrv&#10;Mj7GcR0UW7Fc/6mOFZS2Rpv1mnNaX/AjfgKd1z7rV3EeL+pNZXXSoIyqTmdVrfaL&#10;/gCd9yu+1ZXyKnYEBRAUQFAAQREUQFAAQQEERVBAUAQFEBRAUABBERRAUABBAQRF&#10;UEBQBAUQFEBQAEERFEBQAEEBBMWPDYIiKICgAIICCIqgAIICCAogKICgCAogKICg&#10;AIIiKCAoggIICiAogKAICiAogKAAgiIoICiCAggKICiAoAgKICiAoACCIiggKIIC&#10;CAogKICgCAogKICgAIIiKCAoggIICiAogKAICiAogKAAgiIoICiCAggKICiAoAgK&#10;ICiAoACCIiggKIICCAogKICgCAogKICgAIICCIqgALciKO/iKq7jN9B57fHwNT7E&#10;y2kFZTP24yQuqljXQOd9j8t6OzmM7ViZJChLMYzH8TrO41N8Bjrvoq6Tt3EQW7Ec&#10;C+MEpReLsRYP6gPbqBzHKdB57bN+FM/jUWzUW8v8OEFpqkSDulLaqOzGXsUF6La9&#10;ejvZqb8+VurI6M2NuV69Lw3qUhnWB4+AztusZ369XnX6dZ004walqagsVJn69b/K&#10;AOi8pdKvw2KimPwrLMBsaqYVEzMzMzMzMzMzMzOb0v4CR+mmNCZOfVgAAAAASUVO&#10;RK5CYII=" height="102" preserveAspectRatio="none"/>
+ <path fill="rgb(125,144,144)" d="M3684.5642 -7.5379 L3964.9678 -7.5379 L3964.9678 82.4621 L3684.5642 82.4621 Z" clip-path="url(#clipPath2)" transform="matrix(0.911,0,0,0.911,-3348.5781,15.0452)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(93,118,118)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(93,118,118)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M3684.5642 -7.5379 L3964.9678 -7.5379 L3964.9678 82.4621 L3684.5642 82.4621 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="3794.0615" xml:space="preserve" y="49.2326" clip-path="url(#clipPath2)" stroke="none">...</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1.4801,0,0,1.4801,862.0243,189.7372)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath18)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAAtCAYAAABvcpSoAAACI0lEQVR42u3dXU8T&#10;QRQG4G3LUq1QjQooatQgImDiF35gNH5gBPX//x/PpGcTwoWJ3V6Q6fMmz2V3kyb7&#10;5sxczDSNiIiIiIiIiIiIiIiI1J1BGgJLY3DOwoqkPHgUVkIbVoGl0OZ3P1pEqXRl&#10;Uh56JUzCWpgC1VvP77189+Msll6lMsyHXA3Xw+2wFbaB6t0Nm+Fmlsu4z6QyyB+P&#10;s0zuhIfhadgPB0DV9sKT8CCHibVcrcxdKCs57pSHPcqXvAnvwzFQrQ/hbXiZxXI/&#10;3MgBYzhvobTZSls5mbwOn8K3cAJU63v4ksXyIgeKW7mX2qtQ1nM9tZ+TSSmT0/AL&#10;qNZZ+BE+56pkJ2zkfupoEYVykG11ki/8A1Trdw4OX8NR2M0N2olCAeYplJ+57DnK&#10;zdluQhkqFEChAAoFUCgKBVAogEIBFIpCAYWiUACFAigUQKEoFEChAAoFUCj+dFAo&#10;CgX4/0LZzUKZKBTgUk0o5Tj9cgTku2Z2BGR50RlQrdMcHsoRkOUs6Z1FFYpDqsEh&#10;1Y+b2SHVvQrl4jUah83swNryko9AtY5zRfIqPGsWdI1GOYy2HJvfXfRVWmovi+U5&#10;UK3D3OYom7Hlgr/NXK2sNj2uI+3uNZ5kO23kfsq9bCygXts5SJQVyjSHi173G1+8&#10;LP1abtJOc2oB6tVdmH7+svRh0zNdqYzygW2OPUD92vzuR30mk3+VC7B8RERERERE&#10;REREROSy5S88n4l7HvW/KAAAAABJRU5ErkJggg==" height="45" preserveAspectRatio="none"/>
+ <path fill="rgb(125,144,144)" d="M3049.6843 102.4621 L3964.9678 102.4621 L3964.9678 192.4621 L3049.6843 192.4621 Z" clip-path="url(#clipPath2)" transform="matrix(0.2795,0,0,0.2795,-842.8725,-19.1946)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(93,118,118)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(93,118,118)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M3049.6843 102.4621 L3964.9678 102.4621 L3964.9678 192.4621 L3049.6843 192.4621 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="40px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="3386.916" xml:space="preserve" y="161.3097" clip-path="url(#clipPath2)" stroke="none">DataReader</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1.4882,0,0,1.4882,5.7726,235.1589)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath19)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAAtCAYAAABvcpSoAAACKElEQVR42u3dWU8U&#10;QRQG0J4NYViMuDCicUORIe4bbqCACur//z/eCneSefFleh5IzfmS81qddNJfbvVD&#10;VdOIiIiIiIiIiIiIiIhI3emkLrAwOlPmViRl4V7oh0FYAhbCIL/73jxKZVImZdHl&#10;MAxrYQOo3np+7ytZLq1LpZvtVBa8Gm6ErbANVO92uBU2s1iuZKnMPJ30cpFSJqNw&#10;P+yGcdgHqvY07IS74XpYzd1KZ9ZC6ec2p0wmD/Ihb8NB+ARU62N4H17mELGdg8VS&#10;m0IZ5KizlYu+CV/DcTgFqnUSjrJYnufu5FruWFoVynq20zgnk1ImZ+E3UK3z8CMc&#10;htfhYW57lvPfautC2c+2Os0H/gWq9Sf8Ct/yN8eOQgHaFspR/up4NFUoHYUCKBRA&#10;oQAKRaEACgVQKIBCUSigUBQKoFAAhQIoFIUCKBRAoQAKxUsHhaJQgEt0Hko5Gu48&#10;HwjUqQwNP/8zobQulHKc/l74EL5nc50BVSu7kS/hVXNxBOTmPLY8k0OqnzQXZ0t+&#10;zlI5Bqp2mEPEs3CvmcMh1ZNrNMqoU069HmeplIccANUq3/i78CKHibJLKbcJznyN&#10;Rsnkoq+NnFJKSz1uLi4A2gOqtpv/Tu7kUDHMIWPmQplMKctZKmXRcjXhKBsLqNMo&#10;h4ibudVZzemk27TM5H7jMqms5MJrwEIY5kAxl8vSpyeVbi7YBxZKL7//uZSJiIiI&#10;iIiIiIiIiIiIXLb8A1tLdKp5rdSaAAAAAElFTkSuQmCC" height="45" preserveAspectRatio="none"/>
+ <path fill="rgb(124,157,124)" d="M979.9316 212.4621 L1899.9316 212.4621 L1899.9316 302.4621 L979.9316 302.4621 Z" clip-path="url(#clipPath2)" transform="matrix(0.278,0,0,0.278,-262.9365,-49.6116)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(63,99,63)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(63,99,63)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M979.9316 212.4621 L1899.9316 212.4621 L1899.9316 302.4621 L979.9316 302.4621 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="40px" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="1379.7266" xml:space="preserve" y="271.3098" clip-path="url(#clipPath2)" stroke="none">Layer</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1.2054,0,0,1.2054,401.576,237.5869)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath20)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAAzCAYAAABWrvdDAAACSElEQVR42u3dS09T&#10;URQG0Htb6UNaCBIEUSIxiI1gjI+Kj/hGBP3//8d90s3M0W1Hp+tLVhj13NH9sk+b&#10;sJtGRERERERERERERERE6k2besBaaldZJuXAO2EjDMIQWAuDfO/7qyiWNg8qh47D&#10;JGyFbWAtTMNmGGWx9JYplF6WSTlwJ9wPh+ERUL2H4UHYy3IZ502lXWY6GWeZlCJ5&#10;EmbhLJwDVXseTsNx2M/bybDrlNLmiDPJyaSUyYswDx/CR6Ba5R2/CK+zWB6H3Rww&#10;+l0LZZCtdJiTSSmTL+FHuASq9TN8C5/Cq3CSg8XdZQtlO+9TZ9la5UG/ww1Qretw&#10;laUyz6vPQX6fupJCOc9R6DIf+Beo1p8cHL7n1WeWhTLJL2YVCtCpUN6FZyYUQKEA&#10;CgVQKAoFUCiAQgEUikIBhaJQAIUCKBRAoSgUQKEACgVQKAoFFIpCARQKoFAAhaJQ&#10;AIUCKBRAoSgUWO9CWel/vS97ea7zgUCdytBwu5dn5RNKWZpc1hFeZGP9yvYC6nSV&#10;w0PZFPomPG0W+42XLpRps9jAXjaHlT2nZTXh1ywWoE5lMvkc3oeXzWK3+V6z5CrS&#10;jWykctBxTillz+k8xyCgXm+zTMp15yjcC6OuhdLkB0d57SnjTtnAfpIPmOVfoC63&#10;7/ZpTiZHOVRM89bS61oovZxSxmEr7DaLDewHQPX2s0h2skxG+QtP27VQ2iyVcsgw&#10;i6VcgSbAWtjM936QPdB5OvlfsfTzUGB99PP9bxsRERERERERERERERGpMP8A4QU/&#10;7cvJhS8AAAAASUVORK5CYII=" height="51" preserveAspectRatio="none"/>
+ <path fill="rgb(124,157,124)" d="M1929.9316 211.4957 L2675.6604 211.4957 L2675.6604 301.4957 L1929.9316 301.4957 Z" clip-path="url(#clipPath2)" transform="matrix(0.3432,0,0,0.3432,-652.9685,-63.2639)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(63,99,63)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(63,99,63)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1929.9316 211.4957 L2675.6604 211.4957 L2675.6604 301.4957 L1929.9316 301.4957 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="40px" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="2242.5908" xml:space="preserve" y="270.3434" clip-path="url(#clipPath2)" stroke="none">Param</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.69,0,0,0.69,217.8799,287.8441)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath21)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABKCAYAAAB6g6tKAAACbklEQVR42u3YXUsU&#10;YRzGYdd1ddNNzazMl6ywJPMNK0vLsCwt+/7fp3vg70lQB7sGMl43XIfOgjA/nmfG&#10;xszMzMzMzMzMzMzMzKy968R46QK3ytW737mukDQP7cVU9OMO0Hr9Mlnvf3fUqDQx&#10;maiHDmIu7sUC0HrNuz4fszFdYRk6Kp3643498EEsx5N4CrTeeqzFUgVmpqIyPmxQ&#10;evWQxXr4ZmzHXuwDrbYbW7ERK3Vi6ddBY6jrzlRdc5YrJgfxIT7FCdBazTt+HIcV&#10;lud1S5mpzyBDBaVfVWquOTtxFKfxPc6B1mre8bOKy9s6UCzVt9SRgrJQ96n9qta3&#10;+BmXQGs17/hFfKlbyVbdVO7Wp5BrCcpJlav5wV9Aq/2Ir4ICjOryH0GZEBRAUABB&#10;AQRFUABBAQQFEBRBAUERFEBQAEEBBEVQAEEBBAUQFP90EBRBAQQFEBRAUAQFBEVQ&#10;AEEBBAUQFEEBBAUQFEBQBAUERVAAQQEEBRAUQQEEBRAUQFAEBQRFUABBAQQFEBRB&#10;AQQFEBRAUAQFBEVQAEEBBAUQFEEBBAX4j/4WlJ6gADfmhLIeu/ExzuKifgxor/M4&#10;jcN4FY9HDcpUzMdavI738bmqdQa02pc6RBzEy1iKwShBmYzZKtOL2It3cRTHQKs1&#10;V503sR3PYjGmoztMUDr18WUm7sdqbNTRp/mBHaC1tutWslkxaQ4Vc/UZZOigdOva&#10;M6hvKY9ipa5AQLutVkge1qeP6TpkdMaG3FVUJuthg7oCzQG3wmy99/2KyfgoQbmK&#10;ynh9iOlVXIDbo1cHi5Fj8mdYgNvJzMzMzMzMzMzMzG7afgNW+jP+1a3MLwAAAABJ&#10;RU5ErkJggg==" height="74" preserveAspectRatio="none"/>
+ <path fill="rgb(124,157,124)" d="M1473.3939 320.5293 L1899.9316 320.5293 L1899.9316 410.5293 L1473.3939 410.5293 Z" clip-path="url(#clipPath2)" transform="matrix(0.5995,0,0,0.5995,-874.5453,-183.3665)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(63,99,63)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(63,99,63)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1473.3939 320.5293 L1899.9316 320.5293 L1899.9316 410.5293 L1473.3939 410.5293 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="40px" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="1578.2937" xml:space="preserve" y="379.3769" clip-path="url(#clipPath2)" stroke="none">LayerRepo</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4137,0,0,0.4137,111.6595,200.4019)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath22)" width="251" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPsAAABvCAYAAAAqhbbzAAACmUlEQVR42u3Y205T&#10;URSG0R4oPSUWoWAEk4q0eiMYi6AmamtE8fD+78NcybwwXu42WTUZfzIuWSQk3157&#10;02qZmZmZmZmZmZnZf7E2sJO2GnkndMMesFO62Wd7G6GXw/bDIIzCGNgJo+yyl522&#10;txF6OfggTMNJeAJUUxo8DkfZ5Tg77TaNvZNPjHEe+iych0V4CVQ1zx7PwmHe8r2m&#10;t3uJvZ9PjnLgq/AmvAu3QDU34Tpc5eV7GibZa6dJ7OWVYJi3+nmG/jGswlegmnX4&#10;Ej6EyzDL232wSeyj/DZY5I1eQv8efgLV3Ie7DH4ZLvL/acNNYz/Jb4TbfKqUX/YH&#10;qOZ3Br/OS3gudhC72EHsYgexix3EDogdEDsgdkDsIHaxg9jFDmIXO4hd7CB2QOyA&#10;2AGxA2IHxA5iFzuIXewgdrGD2MUOYgfEDogdEDsgdkDsIHaxg9jFDmIXO4jdHxvE&#10;DogdEDsgdkDsIHaxg9jFDmIXO4hd7CB2QOyA2AGxA2IHxA5iFzuIXewgdrGD2MUO&#10;YgfEDogdEDsgdhC72EHsYgexix3ELnYQOyB2QOyA2AGxA2IHsYsdxC52ELvYQexi&#10;B7EDYgfEDogdEDuIXewgdrGD2MUOYhc7iB0QOyB2YOdjv8nD7/OXAXX8Cj/CKlxv&#10;M/bjPKwc+jncZfBAHSX0b+FTeBtehKNNYx/mIc/DVXifwa+BalYZevm0fh1m4XEY&#10;NI29/FA/HISzfJW/DMv8TgDqWWaP5a37aXgU9pvG3g69MM7b/TRv+IuwAKqZZ4ez&#10;DP0wP7n3sttGsXfzaVGCn+Sh0/yOB+qZZo+TDL3X9Fb/N/hevtIP8jt+BFQ1zB77&#10;f4Xebm24duqkLrATOtuK3MzMzMzMzMzMzMzMtrEHVAdrqUAHNrEAAAAASUVORK5C&#10;YII=" height="111" preserveAspectRatio="none"/>
+ <path fill="rgb(169,192,169)" d="M1209.9316 102.4621 L1439.9316 102.4621 L1439.9316 192.4621 L1209.9316 192.4621 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1201.9316,-94.4621)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1209.9316 102.4621 L1439.9316 102.4621 L1439.9316 192.4621 L1209.9316 192.4621 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="1232.8179" xml:space="preserve" y="159.2326" clip-path="url(#clipPath2)" stroke="none">LSTMLayer</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.5235,0,0,0.5235,727.5685,244.4058)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath23)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABbCAYAAACyCXp0AAAChUlEQVR42u3YW0tU&#10;URjH4dl7ZnQmFeeEg9JhTDoYhWaGYVZ0srDv/316N7wXXdjNnilqzfOH50ZwCcL8&#10;WGs6HTMzMzMzMzMzMzP7p1cBa+OPBaQOXWDt1KlaRUyag3phIwzCMNwBijfMz/xm&#10;6GdcqmVj0s+Dd8IoTMIMKN40jMNu2MqwtI5KlTeTYYZkHu6GRXgIFO8w3A8HGZft&#10;fKnUbYJS5y/vZEyaw4/DSTgDincanodHeZkY5wWj2yYo3Xw/jfKwZ+E8XIb3QPGu&#10;wkVeIo7CXj59em2DMszvTBZ5aBOTT+EaKN6XDMvr8DTs54ulv0xQpvmeOsvDmz/0&#10;Ayje97xAvMkXyoGgAIICCAogKIICCAogKICgCAoIiqAAggIICiAoggIICiAogKAI&#10;CgiKoACCAggKICiCAggKICiAoPhng6AICiAogKAAgiIogKAAggIICiAoggIICiAo&#10;gKAICgiKoACCAggKICiCAggKICiAoAgKCIqgAIICCAogKIICCAogKICgCAoIiqAA&#10;ggIICiAoggIICiAogKAICgiKoACCAggKICiCAggKICiAoAgKCIqgAIICCAogKIIC&#10;/K2gvAzvwtdwAxTvW/gYLsLxqoIyCYtwEi7zD1wDxfucr5Lz8CTsLxuUQRiFe3nl&#10;aQ5+Gz4AxbvK20lzmTgKe2Er9NoEpQ4bWaR5PnuaqJyGV0Dxmq85XoTHeamY5Kul&#10;2yYoVZZomLeUeR56mLUCytZcIh7kdyezsJ2XjLrTcnW+l4Z5Uxnnl7QzoHjTvJXs&#10;5lNnM28nVdugVBmVXpZpkHEB1sMgQ9JfNia3heVX3Vt+Bvzfur/5bFeriomZmZmZ&#10;mZmZmZmZrWg/AVdcYBs8tdqVAAAAAElFTkSuQmCC" height="91" preserveAspectRatio="none"/>
+ <path fill="rgb(93,118,118)" d="M2701.5188 211.4957 L3024.9622 211.4957 L3024.9622 301.4957 L2701.5188 301.4957 Z" clip-path="url(#clipPath2)" transform="matrix(0.7901,0,0,0.7901,-2126.1136,-158.6879)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(47,74,74)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(47,74,74)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M2701.5188 211.4957 L3024.9622 211.4957 L3024.9622 301.4957 L2701.5188 301.4957 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g stroke-linecap="butt" font-size="40px" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45">
+ <text x="2754.8713" xml:space="preserve" y="270.3434" clip-path="url(#clipPath2)" stroke="none">ChunkFile</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(2.1976,0,0,2.1976,671.2145,-1.2622)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath24)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAAlCAYAAACDIRbFAAACCElEQVR42u3dV08C&#10;QRiFYRAQAUssAUvsiiVqjIot9obl//8fz8SzCde7e/X5nuS5ZPaKk28m7FCpEEII&#10;IYQQQgghhBBCCCGEkNip2hiAf6M6orQiSQvXpC4NGQfwLzT8va+VUSpZmaRFJ6Qt&#10;kzINILwpf99bLpfCpTLmdkoLzsiC9GQZQHhL0pU5F0vTpZJ7Oql5kVQmi7IufTmQ&#10;QwCh7cm2rHqY6Hi3Us1bKHVvc9JiG37IuVzJDYCwrmUgpy6WFQ8W49655CqUhked&#10;nieTM7mTZ3kFENaLPLhYTrw7mfVZaqFCmfJ+6sCTSSqToXwBCOtT3uTeg8SWzJdZ&#10;KIduq1c/8AdAWN/yIY8+5tj20UeLQgFQRqEwoQCgUABQKAAoFAoFAIUCgEIBQKFQ&#10;KAC/Qym7UF78K7pvAGGloeHdP78vfUJJrzHv+2WhJz9oCCCsDw8Pd35BcLPyd41B&#10;4ULp+OXAHS986zHoGUBYTy6TSzmSNb8c2CxSKNnlSvNecN+lcuEHAYhp4JcCj2XX&#10;u5R0i1vu6wsq/mDT2550c1O6aCW9dZiuMtgDEFbfu5INn6Gm7U7bQ0buayCzKWXC&#10;pTLrk96ut0EA4up6dzLjo49C08nolFL3YtlF1R0A4bV95NH0eWopN99nk0r2VxrZ&#10;32kAiC37vo/+Pw8hhBBCCCGEEEIIIYQQQggJl19qwBeexA1HvAAAAABJRU5ErkJg&#10;gg==" height="37" preserveAspectRatio="none"/>
+ <path fill="rgb(197,174,155)" d="M2605.7544 -341.9262 L3964.9678 -341.9262 L3964.9678 -251.9262 L2605.7544 -251.9262 Z" clip-path="url(#clipPath2)" transform="matrix(0.1882,0,0,0.1882,-480.8714,73.9861)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,99,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,99,78)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M2605.7544 -341.9262 L3964.9678 -341.9262 L3964.9678 -251.9262 L2605.7544 -251.9262 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="40px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="3237.197" xml:space="preserve" y="-283.0786" clip-path="url(#clipPath2)" stroke="none">BLAS</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(2.1976,0,0,2.1976,671.2145,44.2403)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath25)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAAlCAYAAACDIRbFAAACCElEQVR42u3dV08C&#10;QRiFYRAQAUssAUvsiiVqjIot9obl//8fz8SzCde7e/X5nuS5ZPaKk28m7FCpEEII&#10;IYQQQgghhBBCCCGEkNip2hiAf6M6orQiSQvXpC4NGQfwLzT8va+VUSpZmaRFJ6Qt&#10;kzINILwpf99bLpfCpTLmdkoLzsiC9GQZQHhL0pU5F0vTpZJ7Oql5kVQmi7IufTmQ&#10;QwCh7cm2rHqY6Hi3Us1bKHVvc9JiG37IuVzJDYCwrmUgpy6WFQ8W49655CqUhked&#10;nieTM7mTZ3kFENaLPLhYTrw7mfVZaqFCmfJ+6sCTSSqToXwBCOtT3uTeg8SWzJdZ&#10;KIduq1c/8AdAWN/yIY8+5tj20UeLQgFQRqEwoQCgUABQKAAoFAoFAIUCgEIBQKFQ&#10;KAC/Qym7UF78K7pvAGGloeHdP78vfUJJrzHv+2WhJz9oCCCsDw8Pd35BcLPyd41B&#10;4ULp+OXAHS986zHoGUBYTy6TSzmSNb8c2CxSKNnlSvNecN+lcuEHAYhp4JcCj2XX&#10;u5R0i1vu6wsq/mDT2550c1O6aCW9dZiuMtgDEFbfu5INn6Gm7U7bQ0buayCzKWXC&#10;pTLrk96ut0EA4up6dzLjo49C08nolFL3YtlF1R0A4bV95NH0eWopN99nk0r2VxrZ&#10;32kAiC37vo/+Pw8hhBBCCCGEEEIIIYQQQggJl19qwBeexA1HvAAAAABJRU5ErkJg&#10;gg==" height="37" preserveAspectRatio="none"/>
+ <path fill="rgb(197,174,155)" d="M2605.7544 -231.9262 L3964.9678 -231.9262 L3964.9678 -141.9262 L2605.7544 -141.9262 Z" clip-path="url(#clipPath2)" transform="matrix(0.1882,0,0,0.1882,-480.8714,53.2802)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,99,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,99,78)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M2605.7544 -231.9262 L3964.9678 -231.9262 L3964.9678 -141.9262 L2605.7544 -141.9262 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="40px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="3201.074" xml:space="preserve" y="-173.0786" clip-path="url(#clipPath2)" stroke="none">MMatrix</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4541,0,0,0.4541,262.3658,162.7686)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath26)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABmCAYAAAAK7W4HAAACnElEQVR42u3YW08T&#10;ARSFUaYgpXKzUImgqIARL0QBQU0E8RY0+v//j3uSw5svtn0g07WT9domTebLmc7N&#10;mZmZmZmZmZmZmdmtXQPMnKlHpBfzZQGYGTfPfW8acWnqw+5EPwZxF5gZ7TO/FIvV&#10;gmbSy2SxPng9NmIU94HOG9Uzfy9W6qgYOypNnTxtTIaxHU9iP54BnXcQT+NhxWW1&#10;DozeOEG5uU7WKibtFxzFSZwBnXcab+IwdutaGdSh8d+br3enYV0mbUzex0V8ATrv&#10;Mj7GcR0UW7Fc/6mOFZS2Rpv1mnNaX/AjfgKd1z7rV3EeL+pNZXXSoIyqTmdVrfaL&#10;/gCd9yu+1ZXyKnYEBRAUQFAAQREUQFAAQQEERVBAUAQFEBRAUABBERRAUABBAQRF&#10;UEBQBAUQFEBQAEERFEBQAEEBBMWPDYIiKICgAIICCIqgAIICCAogKICgCAogKICg&#10;AIIiKCAoggIICiAogKAICiAogKAAgiIoICiCAggKICiAoAgKICiAoACCIiggKIIC&#10;CAogKICgCAogKICgAIIiKCAoggIICiAogKAICiAogKAAgiIoICiCAggKICiAoAgK&#10;ICiAoACCIiggKIICCAogKICgCAogKICgAIICCIqgALciKO/iKq7jN9B57fHwNT7E&#10;y2kFZTP24yQuqljXQOd9j8t6OzmM7ViZJChLMYzH8TrO41N8Bjrvoq6Tt3EQW7Ec&#10;C+MEpReLsRYP6gPbqBzHKdB57bN+FM/jUWzUW8v8OEFpqkSDulLaqOzGXsUF6La9&#10;ejvZqb8+VurI6M2NuV69Lw3qUhnWB4+AztusZ369XnX6dZ004walqagsVJn69b/K&#10;AOi8pdKvw2KimPwrLMBsaqYVEzMzMzMzMzMzMzOb0v4CR+mmNCZOfVgAAAAASUVO&#10;RK5CYII=" height="102" preserveAspectRatio="none"/>
+ <path fill="rgb(169,192,169)" d="M1575.2334 12.4621 L1855.637 12.4621 L1855.637 102.4621 L1575.2334 102.4621 Z" clip-path="url(#clipPath2)" transform="matrix(0.911,0,0,0.911,-1426.9102,-3.1754)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1575.2334 12.4621 L1855.637 12.4621 L1855.637 102.4621 L1575.2334 102.4621 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="1684.7306" xml:space="preserve" y="69.2326" clip-path="url(#clipPath2)" stroke="none">...</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4137,0,0,0.4137,206.801,200.4019)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath27)" width="251" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPsAAABvCAYAAAAqhbbzAAACmUlEQVR42u3Y205T&#10;URSG0R4oPSUWoWAEk4q0eiMYi6AmamtE8fD+78NcybwwXu42WTUZfzIuWSQk3157&#10;02qZmZmZmZmZmZnZf7E2sJO2GnkndMMesFO62Wd7G6GXw/bDIIzCGNgJo+yyl522&#10;txF6OfggTMNJeAJUUxo8DkfZ5Tg77TaNvZNPjHEe+iych0V4CVQ1zx7PwmHe8r2m&#10;t3uJvZ9PjnLgq/AmvAu3QDU34Tpc5eV7GibZa6dJ7OWVYJi3+nmG/jGswlegmnX4&#10;Ej6EyzDL232wSeyj/DZY5I1eQv8efgLV3Ie7DH4ZLvL/acNNYz/Jb4TbfKqUX/YH&#10;qOZ3Br/OS3gudhC72EHsYgexix3EDogdEDsgdkDsIHaxg9jFDmIXO4hd7CB2QOyA&#10;2AGxA2IHxA5iFzuIXewgdrGD2MUOYgfEDogdEDsgdkDsIHaxg9jFDmIXO4jdHxvE&#10;DogdEDsgdkDsIHaxg9jFDmIXO4hd7CB2QOyA2AGxA2IHxA5iFzuIXewgdrGD2MUO&#10;YgfEDogdEDsgdhC72EHsYgexix3ELnYQOyB2QOyA2AGxA2IHsYsdxC52ELvYQexi&#10;B7EDYgfEDogdEDuIXewgdrGD2MUOYhc7iB0QOyB2YOdjv8nD7/OXAXX8Cj/CKlxv&#10;M/bjPKwc+jncZfBAHSX0b+FTeBtehKNNYx/mIc/DVXifwa+BalYZevm0fh1m4XEY&#10;NI29/FA/HISzfJW/DMv8TgDqWWaP5a37aXgU9pvG3g69MM7b/TRv+IuwAKqZZ4ez&#10;DP0wP7n3sttGsXfzaVGCn+Sh0/yOB+qZZo+TDL3X9Fb/N/hevtIP8jt+BFQ1zB77&#10;f4Xebm24duqkLrATOtuK3MzMzMzMzMzMzMzMtrEHVAdrqUAHNrEAAAAASUVORK5C&#10;YII=" height="111" preserveAspectRatio="none"/>
+ <path fill="rgb(169,192,169)" d="M1439.9316 102.4621 L1669.9316 102.4621 L1669.9316 192.4621 L1439.9316 192.4621 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1431.9316,-94.4621)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1439.9316 102.4621 L1669.9316 102.4621 L1669.9316 192.4621 L1439.9316 192.4621 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="1462.8179" xml:space="preserve" y="159.2326" clip-path="url(#clipPath2)" stroke="none">ConvLayer</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4137,0,0,0.4137,301.9424,200.4019)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath28)" width="251" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPsAAABvCAYAAAAqhbbzAAACmUlEQVR42u3Y205T&#10;URSG0R4oPSUWoWAEk4q0eiMYi6AmamtE8fD+78NcybwwXu42WTUZfzIuWSQk3157&#10;02qZmZmZmZmZmZnZf7E2sJO2GnkndMMesFO62Wd7G6GXw/bDIIzCGNgJo+yyl522&#10;txF6OfggTMNJeAJUUxo8DkfZ5Tg77TaNvZNPjHEe+iych0V4CVQ1zx7PwmHe8r2m&#10;t3uJvZ9PjnLgq/AmvAu3QDU34Tpc5eV7GibZa6dJ7OWVYJi3+nmG/jGswlegmnX4&#10;Ej6EyzDL232wSeyj/DZY5I1eQv8efgLV3Ie7DH4ZLvL/acNNYz/Jb4TbfKqUX/YH&#10;qOZ3Br/OS3gudhC72EHsYgexix3EDogdEDsgdkDsIHaxg9jFDmIXO4hd7CB2QOyA&#10;2AGxA2IHxA5iFzuIXewgdrGD2MUOYgfEDogdEDsgdkDsIHaxg9jFDmIXO4jdHxvE&#10;DogdEDsgdkDsIHaxg9jFDmIXO4hd7CB2QOyA2AGxA2IHxA5iFzuIXewgdrGD2MUO&#10;YgfEDogdEDsgdhC72EHsYgexix3ELnYQOyB2QOyA2AGxA2IHsYsdxC52ELvYQexi&#10;B7EDYgfEDogdEDuIXewgdrGD2MUOYhc7iB0QOyB2YOdjv8nD7/OXAXX8Cj/CKlxv&#10;M/bjPKwc+jncZfBAHSX0b+FTeBtehKNNYx/mIc/DVXifwa+BalYZevm0fh1m4XEY&#10;NI29/FA/HISzfJW/DMv8TgDqWWaP5a37aXgU9pvG3g69MM7b/TRv+IuwAKqZZ4ez&#10;DP0wP7n3sttGsXfzaVGCn+Sh0/yOB+qZZo+TDL3X9Fb/N/hevtIP8jt+BFQ1zB77&#10;f4Xebm24duqkLrATOtuK3MzMzMzMzMzMzMzMtrEHVAdrqUAHNrEAAAAASUVORK5C&#10;YII=" height="111" preserveAspectRatio="none"/>
+ <path fill="rgb(169,192,169)" d="M1669.9316 102.4621 L1899.9316 102.4621 L1899.9316 192.4621 L1669.9316 192.4621 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1661.9316,-94.4621)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1669.9316 102.4621 L1899.9316 102.4621 L1899.9316 192.4621 L1669.9316 192.4621 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="1682.583" xml:space="preserve" y="159.2326" clip-path="url(#clipPath2)" stroke="none">GraphLayer</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4137,0,0,0.4137,409.4937,163.1726)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath29)" width="273" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAREAAABvCAYAAADLy/SLAAACtklEQVR42u3YXUvU&#10;QRjGYXdXXV2NLF9CzcjMtKA3M6sD06Iw6vt/n56BO+i03e1kvG64Tv8LwvyYcWHB&#10;zMzMzMzMzMzMzP7bBsCtMtd4DMuoLAK3wijnfjCPgLSPLZeVMilrQNcmOe/LCcpw&#10;HgFpH94oW2WnPAC6tJNzfq/cSUwWp72RtPosJSCb5WE5LMflGdCldr6flIOynZCM&#10;c6GYKiLj3ED2y0l5Xc7LBdCl85zz0/IoF4hJbiP/vFae1XzkMB/+VK7KF6BLVznn&#10;b3MraU+c9bxKporIJFea4xSq/cD38gPoUjvf17mVPC+7edLMFJGdvJUuUqr2Q7+A&#10;LrXz/bV8LC/KnogAIgKICCAiIgIiIiKAiAAiAogIICIiAogIICKAiAAiIiKAiAAi&#10;AogIICIiAiIiIoCIACICiIiIgIiICCAigIgAIiIiICIiAogIICKAiAAiIiKAiAAi&#10;AogIICIiAiIiIoCIACICiIiIgIiICCAigIgAIiIiICIiAogIICKAiAAiIiKAiAAi&#10;AogIICIiAiIiIoCIACICiIiIgIiICCAigIgAIiIiICIiAogIICKAiPhjg4iICCAi&#10;gIgAIgKIiIgAIgKICCAigIiICIiIiAAiAogIICIiAiIiIoCIACICiIiIgIiICCAi&#10;gIgAtyoi78t1uSk/gS7d5LLwYZ4R2S5Py7tyWb7lh4D+tPP9OZeG07I7a0RWy2Z5&#10;XF6lTpe5kQD9ucxT5k0uD+0lsjZtRIZlXDbKfp40L8tZOQe6dJYLw0k5KPdzmVic&#10;JiKD1Gctt5G93EiOyjHQpaOc8/38K6M9ZZZzqZgqIqN8oIXkbqq0lY8D/dnKpaG9&#10;QNbzGhmlBwuzhGQpH1vJ1WYCdGk1xjn3MwXk75AMcp0Z5qNAv/6c9cE8AmJmZmZm&#10;ZmZmZmZmZmbz3G/y1MZz2tRJsgAAAABJRU5ErkJggg==" height="111" preserveAspectRatio="none"/>
+ <path fill="rgb(169,192,169)" d="M1929.9316 12.4621 L2182.3081 12.4621 L2182.3081 102.4621 L1929.9316 102.4621 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1921.9316,-4.4621)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1929.9316 12.4621 L2182.3081 12.4621 L2182.3081 102.4621 L1929.9316 102.4621 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="2025.4153" xml:space="preserve" y="69.2326" clip-path="url(#clipPath2)" stroke="none">...</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4137,0,0,0.4137,409.4937,200.4019)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath30)" width="273" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAREAAABvCAYAAADLy/SLAAACtklEQVR42u3YXUvU&#10;QRjGYXdXXV2NLF9CzcjMtKA3M6sD06Iw6vt/n56BO+i03e1kvG64Tv8LwvyYcWHB&#10;zMzMzMzMzMzMzP7bBsCtMtd4DMuoLAK3wijnfjCPgLSPLZeVMilrQNcmOe/LCcpw&#10;HgFpH94oW2WnPAC6tJNzfq/cSUwWp72RtPosJSCb5WE5LMflGdCldr6flIOynZCM&#10;c6GYKiLj3ED2y0l5Xc7LBdCl85zz0/IoF4hJbiP/vFae1XzkMB/+VK7KF6BLVznn&#10;b3MraU+c9bxKporIJFea4xSq/cD38gPoUjvf17mVPC+7edLMFJGdvJUuUqr2Q7+A&#10;LrXz/bV8LC/KnogAIgKICCAiIgIiIiKAiAAiAogIICIiAogIICKAiAAiIiKAiAAi&#10;AogIICIiAiIiIoCIACICiIiIgIiICCAigIgAIiIiICIiAogIICKAiAAiIiKAiAAi&#10;AogIICIiAiIiIoCIACICiIiIgIiICCAigIgAIiIiICIiAogIICKAiAAiIiKAiAAi&#10;AogIICIiAiIiIoCIACICiIiIgIiICCAigIgAIiIiICIiAogIICKAiPhjg4iICCAi&#10;gIgAIgKIiIgAIgKICCAigIiICIiIiAAiAogIICIiAiIiIoCIACICiIiIgIiICCAi&#10;gIgAtyoi78t1uSk/gS7d5LLwYZ4R2S5Py7tyWb7lh4D+tPP9OZeG07I7a0RWy2Z5&#10;XF6lTpe5kQD9ucxT5k0uD+0lsjZtRIZlXDbKfp40L8tZOQe6dJYLw0k5KPdzmVic&#10;JiKD1Gctt5G93EiOyjHQpaOc8/38K6M9ZZZzqZgqIqN8oIXkbqq0lY8D/dnKpaG9&#10;QNbzGhmlBwuzhGQpH1vJ1WYCdGk1xjn3MwXk75AMcp0Z5qNAv/6c9cE8AmJmZmZm&#10;ZmZmZmZmZmbz3G/y1MZz2tRJsgAAAABJRU5ErkJggg==" height="111" preserveAspectRatio="none"/>
+ <path fill="rgb(169,192,169)" d="M1929.9316 102.4621 L2182.3081 102.4621 L2182.3081 192.4621 L1929.9316 192.4621 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1921.9316,-94.4621)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M1929.9316 102.4621 L2182.3081 102.4621 L2182.3081 192.4621 L1929.9316 192.4621 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="1943.5364" xml:space="preserve" y="159.2326" clip-path="url(#clipPath2)" stroke="none">MatrixParam</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4137,0,0,0.4137,513.8913,200.4019)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath31)" width="248" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPgAAABvCAYAAADBsg3wAAACnUlEQVR42u3YW0tU&#10;URzGYWcmHR0FNU+RBlaa3ZThKYJMIzvZ9/8+/Te8grftGZZFzwvPpUsQfnstnJsz&#10;MzMzMzMzMzOzZhsAf42Zhj0so/IIeHCjNDmYRdzdYQtlsUzKMvBgJmlx4V7oU8fd&#10;HbxWNst22QGa6rrbSoNdiytlnEZ73eTdl2E+cW+UvfK8HJZXQHMHaXAvoa/kAh72&#10;DXycr8VuOSrH5axcAE2dl9M0+Lo8K+tlKbf4H2+UH97IV6M7+EO5Kp+Bpq7LpzT4&#10;rrzMk305/3jrFfgkhxzm5u7i/lp+AE19Lzdp8Dwv6p0806cKfDvv/4t8Sbpf9gto&#10;6jaRdw2+zzP9icBB4AIHgQscBA4IHBA4IHAQuMBB4AIHgQMCBwQOCBwELnAQuMBB&#10;4AIHgQMCBwQOCBwELnAQuMBB4AIHgQMCBwQOAhc4CFzgIHCBg8ABgQMCBwQOAhc4&#10;CFzgIHCBg8ABgQMCBwQOAhc4CFzgIHBA4IDAAYGDwAUOAhc4CFzgIHBA4IDAAYGD&#10;wAUOAhc4CFzgIHBA4IDAAYGDwAUOAhc4CBwQOCBwQOAgcIGDwAUOAhc4CBwQOCBw&#10;QOAgcIGDwAUOAvcHB4EDAgcEDgIXOAhc4CBwgYPAgX8+8PNynV9yCzT1s3xLgxez&#10;DHyrHJTTclluEjnQThf3lzR4lkt3Z9rAl8pG2S9v8zS4zFcEaOeqfEyDx+VFLt9J&#10;38CHZVzWym6+GG/KSb4gQFsnafCo7JX1XMKjPoEPynxZzi3+NDf5y3IINHWQ9vZz&#10;4W7meb6Qy7hX4KMc0EW+Wh7n4C2guc00uJomx2l0MNdzd5HP57DFPAkmQHNLaXCc&#10;JqeK+37kgzwDhjkUeBh3HQ5mEbeZmZmZmZmZmZmZ2f+735liIOkO4cZZAAAAAElF&#10;TkSuQmCC" height="111" preserveAspectRatio="none"/>
+ <path fill="rgb(169,192,169)" d="M2182.3081 102.4621 L2409.585 102.4621 L2409.585 192.4621 L2182.3081 192.4621 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-2174.3081,-94.4621)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M2182.3081 102.4621 L2409.585 102.4621 L2409.585 192.4621 L2182.3081 192.4621 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="2203.8328" xml:space="preserve" y="159.2326" clip-path="url(#clipPath2)" stroke="none">BiasParam</text>
+ </g>
+ <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4282,0,0,0.4282,607.761,200.2565)" image-rendering="optimizeQuality">
+ <image x="0" y="0" clip-path="url(#clipPath32)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABrCAYAAAC2c33ZAAACuUlEQVR42u3YaUtU&#10;cRjGYWfGZUzRctRKbTFbpKzQzLDNorLt+3+f7j88QfTOGYM4c91wvfQMCPPjOTMz&#10;Y2ZmZmZmZmZmZmb/5XrA1LrUkPRjELPA1BlUAyaOS68eNh/DuBJLwNRo3/nFWKi4&#10;9MeNyp8xaQ++GuuxGdeBztus7/xarFRY5ioqF16//rjFZBQ7sRsP4iHQee27vhe3&#10;40as1pvKYJwrpV9nTrtMtuNRPI/jOAE6r33XD+NxHRPtYlmuQ+PCQRnUiTOqh7WY&#10;nMZZfAQ6r33X38SL2I+tevWZHzco7QeZjTp9jusDvsQ3oPPOKyztkDiIW/XGMlFQ&#10;Nut96qQe3j7oJ9B53+NzXSnP6rcUQQEEBRAUQFAEBRAUQFAAQREUEBRBAQQFEBRA&#10;UAQFEBRAUABB8Y8GQREUQFAAQQEERVAAQQEEBRAUQFAEBRAUQFAAQREUEBRBAQQF&#10;EBRAUAQFEBRAUABBERQQFEEBBAUQFEBQBAUQFEBQAEERFBAUQQEEBRAUQFAEBRAU&#10;QFAAQREUEBRBAQQFEBRAUAQFEBRAUABBERQQFEEBBAUQFEBQBAUQFEBQAEERFBAU&#10;QQEEBRAUQFAEBRAUQFAAQfHPBkERFEBQAEEBBEVQAEEBBAUQFEBQBAUQFEBQAEER&#10;FBAUQQEEBZiqoLyMD/E1fgCd146HT/E6nl5WUDbifhzFu/qAc6Dz2nVyFq/iSezE&#10;6iRBWYxR3K1Ctdeet/Ee6Lx2QJzGYb2l3IyVmBsnKP1YqCJt1ZVyUA8/AjrvsH47&#10;2Y87sR5LMTtOUHpVovbas1Z1au9Qu7EHdN69Csl2/fSxUkfGYGaM9epKma+otIdd&#10;q1egdaDzRnVMtLeU5RiOe538HZXZCsuwflcBpsOwrpK5ukz6M5ew32EBplNvksvE&#10;zMzMzMzMzMzMzP7BfgEYpjHHFTBcQAAAAABJRU5ErkJggg==" height="107" preserveAspectRatio="none"/>
+ <path fill="rgb(169,192,169)" d="M2409.585 102.4621 L2674.2024 102.4621 L2674.2024 192.4621 L2409.585 192.4621 Z" clip-path="url(#clipPath2)" transform="matrix(0.966,0,0,0.966,-2319.6821,-90.9143)" stroke="none" image-rendering="auto"/>
+ </g>
+ <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45">
+ <path fill="none" d="M2409.585 102.4621 L2674.2024 102.4621 L2674.2024 192.4621 L2409.585 192.4621 Z" clip-path="url(#clipPath2)"/>
+ </g>
+ <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45">
+ <text x="2429.3103" xml:space="preserve" y="159.2326" clip-path="url(#clipPath2)" stroke="none">WindowParam</text>
+ </g>
+ </g>
+</svg>
diff --git a/nerv/doc/source/overview.rst b/nerv/doc/source/overview.rst
index ccdd2ef..f28be89 100644
--- a/nerv/doc/source/overview.rst
+++ b/nerv/doc/source/overview.rst
@@ -5,13 +5,13 @@ What is NERV?
-------------
NERV is a general-purpose deep learning toolkit designed to be be simple,
-lightweight and extensible. The name "NERV" comes from the German word "nerv"
-for "nerve" in English. It is also a fictional organization in the *Neon
-Genesis Evangelion*, a famous anime.
+lightweight, extensible and complete. The name "NERV" comes from the German
+word "nerv" for "nerve" in English. It is also a fictional organization in the
+*Neon Genesis Evangelion*, a famous anime.
-Why NERV?
----------
+Introduction and Philosophy
+---------------------------
In recent years, the invention and prevalence of the deep neural network (DNN)
and related deep learning techniques have given rise to many tools and toolkits
@@ -26,8 +26,10 @@ of neural network model and provides with peripheral facilities dedicated to
one specific task, such as image classification or phone state prediction. Not
only the network model is hard-coded into the very core of the tool, but some
modifications or tricks that are only specific to a certain task are wired into
-the code. The effect of this approach is two-fold. On the one hand, they have a
-complete and tightly designed system that appears to provide with a simple user
+the code.
+
+The effect of this approach is two-fold. On the one hand, they have a complete
+and tightly designed system that appears to provide with a simple user
interface. Thus, researchers who are familiar with that specific area can use
it easily. Also, because the network is hard-coded and task-specific, the
implementation could be easy and optimization could be effective so that offers
@@ -37,13 +39,14 @@ flexibility. People need to hack the code and make modifications to suit the
tool to another structure of neural network model, and it is very difficult and
tricky to use the tool designed for one specific area (for example, image
classification) in another area (like speech recognition). Engineering details
-and implementation tricks refrain people from doing so. Caffee, which is
-designed for computer vision, has a comprehensive variety of tools for
-processing images and training convolution neural networks (CNN). But it cannot
-be directly applied to speech processing tasks. Luckily, there is Kaldi, a
-counterpart in speech processing that can process wave-form files, extract the
-acoustic features, train GMM-HMM models, fully-connected DNN models, LSTM
-models and so on.
+and implementation tricks refrain people from doing so.
+
+Caffee, which is designed for computer vision, has a comprehensive variety of
+tools for processing images and training convolution neural networks (CNN). But
+it cannot be directly applied to speech processing tasks. Luckily, there is
+Kaldi, a counterpart in speech processing that can process wave-form files,
+extract the acoustic features, train GMM-HMM models, fully-connected DNN
+models, LSTM models and so on.
The second category strives to be general-purpose. As mentioned above, there are two types of generalities:
@@ -56,7 +59,7 @@ by the toolkit. Besides, general-purpose toolkits usually have a unified
interface for data input and output (I/O) which is the most task-specific
part. Therefore, the task-specific implementation details are limited to
separated I/O modules as possible. This concept of design also presents in
-operating systems where device-specific code are modularized and isolated from
+operating systems where device-specific code is modularized and isolated from
the core part and several abstraction layers are often used. Therefore, by this
approach, general-purpose toolkits usually can be potentially adapted to
various kinds of tasks without hacking or changing core code. Admittedly, the
@@ -116,12 +119,181 @@ because people no longer work together at all but tend to write their own
scripts with duplicate functionalities. So there will be less and less common
code base among users' scripts.
-- simplicity: the learning curve is not steep and code are straight forward
+CNTK, developed by Microsoft Research, is an attempt to address these problems.
+It is a complete solution having the advantages of task-specific tools, but
+also support various kinds of neural networks via introducing a scripting
+language called NDL (now it is moving to a new language, BrainScript). It can
+be adapted to different tasks from speech processing to computer vision.
+Nevertheless, CNTK does not satisfy all researchers. Due to its highly coupled
+design, which is the opposite choice made by Torch, researchers find it extremely
+hard to add new functionalities. Unfortunately, this need always exists as the
+brand new network structures or components being proposed. Extensibility is a
+real problem for CNTK. Also, without being a general-purpose programming
+language, the custom scripting language seems to have limited power of
+expression. To increase the power, more syntax or semantics need to be
+introduced and thus makes the learning curve even longer.
+
+Finally, we propose NERV, a simple but effective deep learning toolkit that
+tries to address the issues above. It is designed with the following
+characteristics in mind:
+
+- simplicity: the learning curve is not steep and code is straight forward
+
- extensibility: users can quickly become developers and add the missing
modules or tailor the toolkit for their needs; major building blocks in NERV
are modularized and the interfaces are standardized so that users can plug-in
their additionally implemented ones and even use the modules implemented by others
+
- lightweight: NERV strives to stay at minimal core code base and dependencies,
which makes it fairly easy to embed it into other task-specific tools, such
- as Kaldi (in speech-processing).
+ as Kaldi (in speech-processing)
+
+- completeness: at the same time, NERV provides with a complete pipeline of
+ training and managing a neural network
+
+Abstraction
+-----------
+
+NERV has a decoupled design, like Torch. It also uses Lua as its main scripting
+language. Lua is extensively used in video game industry because of its short
+learning curve and the tiny footprint of the interpreter/compiler. LuaJIT is a
+just-in-time compiler for Lua providing with very high efficiency. Therefore,
+our design strives to confine those performance demanding parts (such as matrix
+operation, low-level I/O) into pure C/C++ modules, and by giving them Lua
+interface, the rest of the project fully stands upon pure Lua, to avoid letting
+users coding in C/C++.
+
+To achieve the goal to be decoupled but complete, NERV uses a bottom-up style
+of development and has several levels of abstraction. The following figure
+depicts such abstraction from low (at the top of the figure) to high (at the
+bottom of the figure) level.
+
+.. image:: _static/nerv-hierarchy.svg
+
+As shown in the figure, the brown boxes are implemented in pure C. Some part of
+the classes (such as ``HTKReader``, ``KaldiReader``) inheriting from ``DataReader``
+and some part of ``ChunkFile`` (defines the standard storage format) are also
+implemented in C/C++. Except for these, others are all written in pure Lua.
+
+This hierarchical design is the solution to the previous mentioned conflict
+between extensibility and completeness. People who are merely interested in
+using current functionalities do not have to write much code in order to have a
+running example. They only need to invoke the ``Scheduler`` and provides with a
+Lua script having declarative information of the model to be trained, the data
+to be used and the training policy, which are task-specific. The rest,
+non-task-specific jobs, are accomplished by corresponding components/modules in NERV.
+When a research wants to have more control of the training process, she may
+write a custom trainer inherits from the general trainer or even write her own
+trainer, and that is the whole story. When she needs even more control or try
+to hack an exotic model that temporarily does not fit into the current
+pipeline, she may try to build her own script using lower level components. In
+short, hierarchical design gives people choices and is expected to satisfy
+different user requirements. The following subsections briefly introduce major
+categories of components in NERV.
+
+Matrix
+******
+
+This part corresponds to the brown boxes in the figure. Matrices are the basic
+data container for computation. Although in NERV, matrices are not assumed to
+be the only type of data container, the current available subclass of
+``nerv.Param`` is ``nerv.MatrixParam`` (other classes such as
+``nerv.BiasParam`` are currently aliases of ``nerv.MatrixParam``), meaning
+parameters stored by matrices are sufficient for most tasks. The base class for
+all matrices is ``nerv.Matrix``, which defines the common behavior of a matrix
+regardless its type of value (float or double) or storage location (on host or
+on device). Inheriting from that, there are two major groups of matrix types:
+``nerv.MMatrix`` and ``nerv.CuMatrix``. As the name suggests, ``nerv.MMatrix``
+defines the matrices in the main memory (on host), whereas ``nerv.CuMatrix``
+defines those in the GPU memory (on device) using CUDA as programming interface
+(there may be some class like ``nerv.CLMatrix`` in the future, to support other
+programming interface for GPU). Then for each storage category, there are
+subclass implementing matrices with different types of values:
+
+- ``nerv.MMatrixFloat``
+- ``nerv.MMatrixDouble``
+- ``nerv.CuMatrixFloat``
+- ``nerv.CuMatrixDouble``
+
+Layer
+*****
+
+A layer (``nerv.Layer``) in NERV conceptually represents a computation node
+which declaratively defines the computation logic needed to produce the output
+from the input. This means a layer itself is "oblivious" in a sense that its
+computation is time-invariant (except that some layers maintain some auditing
+information, which do not change the behavior of the output though) when
+hyper-parameters are fixed. This concept is important in understanding the
+relationship between layers and parameters in NERV and is not quite so in other
+toolkits. In some toolkits, a layer or a computation node stands for the
+computation logic together with the contained parameters. This coupled design
+causes inconvenience in network model management when users want to manipulate
+or duplicate the parameters and also makes parameter tying (different layer
+share the same group of parameters) difficult to implement. In NERV, layers are
+abstract concept that defines the *structure* of a neural network, whereas the
+parameters defines the *state* of the neural network.
+
+Layers have two categories: *graph layers* and *primitive layers*. The former
+are a special kind of layer that acts like a container for a set of sub-level
+layers by specifying both the temporal and structural connections between these
+sub-level layers in the layer configuration of the containing graph layer. The
+latter, primitive layers, are the layers that define basic computation without
+any sub-level structures. Graph layers can be nested to introduce a complex
+hierarchy, but the final contained layers must be primitive.
+
+Network
+*******
+
+Layers alone only declare the structure and behavior of the intended network.
+To turn a layer into a trainable model, we need to *compile* the layer into an
+*network* instance (``nerv.Network``). What compilation does is to flatten out
+the nested graph layer according to the specified structure and allocate the
+space for those intermediate activations between the layers. Although the
+internal implementation of a network is flatten out and may lose nested
+structures, it is designed to be opaque to users, which means users should not
+bother much about the compiled network where many technical tricks are applied,
+but should access the state of computation or change the hyper-parameters to
+alter the behavior of the network via layer abstraction (the instances of
+subclasses of ``nerv.Layer``) where the structures are preserved.
+
+Parameter
+*********
+
+Parameters (``nerv.Param``) represents the state of layers (``nerv.Layer``) in
+NERV. They are time-variant during training because of the update. They can be
+read from files (in NERV ``nerv.ChunkFile`` format) and written to files. Take
+an fully-connected linear layer in a neural network as an example, the layer
+defines the calculation of :math:`y = W x + b`, where x is the input, whereas
+the parameters W and b provide with the state of the layer. The association
+between layers and parameters is called *binding*. For a layer like :math:`y_1
+= W x_1 + b`, when it is bound to parameter :math:`W_1` and :math:`b_1`, the
+calculation becomes :math:`y_1 = W_1 x_1 + b_1`. However, when a network need
+to rollback to a previous state, the layer may bind to parameter :math:`W_0`
+and :math:`b_0`, so becomes :math:`y_1 = W_0 x_1 + b_0`. The concept of binding
+decouples the layer and the corresponding parameters in a clear way.
+
+Buffer
+******
+
+Buffers (``nerv.DataBuffer``), as the name suggests, connect I/O ends with
+different speed (granularity). Buffers in NERV accept variable length of
+samples (frames) from readers (``nerv.DataReader``) and produce a regularized
+sequence of data to feed as the input to a network (``nerv.Network``). This
+process is often called "mini-batching" which roughly means to stack the
+samples together and cut samples into mini-batches.
+
+Scheduler (Trainer)
+*******************
+Schedulers refer to those top-level scripts that implements the main training
+loop and ticks the training process. A general-purpose scheduler typically
+takes in a Lua script written by an end user that contains description of the
+network, task-specific processing for reading data and some hyper-parameters.
+Then, according to these metadata, it instantiates the major components that
+make up the training pipeline and build up the pipeline by connecting them
+according to their interface. Schedulers are user-friendly and thought to be
+the main tool used by the end user. The end user could also change the behavior
+of the scheduler by overriding functions in their Lua script read by the
+scheduler. Experienced users can also directly write their own schedulers to
+train exotic neural networks that temporarily does not fit into the current
+pipeline.