diff options
Diffstat (limited to 'mpv')
| -rw-r--r-- | mpv/fonts/Material-Design-Iconic-Font.eot | bin | 42495 -> 0 bytes | |||
| -rw-r--r-- | mpv/fonts/Material-Design-Iconic-Font.svg | 787 | ||||
| -rw-r--r-- | mpv/fonts/Material-Design-Iconic-Font.ttf | bin | 99212 -> 0 bytes | |||
| -rw-r--r-- | mpv/fonts/Material-Design-Iconic-Font.woff | bin | 50312 -> 0 bytes | |||
| -rw-r--r-- | mpv/fonts/Material-Design-Iconic-Font.woff2 | bin | 38384 -> 0 bytes | |||
| -rw-r--r-- | mpv/input.conf | 209 | ||||
| -rw-r--r-- | mpv/mpv.conf | 8 | ||||
| -rw-r--r-- | mpv/script_modules/mpvSockets/LICENSE | 21 | ||||
| -rw-r--r-- | mpv/script_modules/mpvSockets/README.md | 76 | ||||
| -rw-r--r-- | mpv/script_modules/mpvSockets/mpvSockets.lua | 36 | ||||
| -rw-r--r-- | mpv/scripts/modules.lua | 3 | ||||
| -rw-r--r-- | mpv/scripts/morden.lua | 2041 | ||||
| -rw-r--r-- | mpv/shaders/KrigBilateral.glsl | 214 | ||||
| -rw-r--r-- | mpv/shaders/SSimDownscaler.glsl | 214 | ||||
| -rw-r--r-- | mpv/shaders/ravu-r4.hook | 757 | ||||
| -rw-r--r-- | mpv/watch_later/99533EEF7D7C98388A098612D29CE95A | 5 |
16 files changed, 1192 insertions, 3179 deletions
diff --git a/mpv/fonts/Material-Design-Iconic-Font.eot b/mpv/fonts/Material-Design-Iconic-Font.eot Binary files differdeleted file mode 100644 index 5e25191..0000000 --- a/mpv/fonts/Material-Design-Iconic-Font.eot +++ /dev/null diff --git a/mpv/fonts/Material-Design-Iconic-Font.svg b/mpv/fonts/Material-Design-Iconic-Font.svg deleted file mode 100644 index 1d3d2ea..0000000 --- a/mpv/fonts/Material-Design-Iconic-Font.svg +++ /dev/null @@ -1,787 +0,0 @@ -<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata></metadata>
-<defs>
-<font id="material-desidesigniconicfont" horiz-adv-x="427" >
-<font-face units-per-em="512" ascent="448" descent="-64" />
-<missing-glyph horiz-adv-x="500" />
-<glyph unicode="" horiz-adv-x="510" d="M159 -10l29 28l81 -81l-14 -1q-100 0 -173.5 68t-81.5 167h32q6 -60 40 -108t87 -73zM178 129q14 0 21 7t7 20q0 7 -2 12t-6 8q-4 4 -9.5 5.5t-13.5 1.5h-16v22h16q8 0 13 2t8 5q4 3 6 8t2 10q0 12 -7 19q-6 6 -19 6q-5 0 -10 -2q-4 -1 -8 -4q-3 -3 -5 -8q-2 -4 -2 -9 h-28q0 10 4 18t11 14t17 10q9 3 21 3q11 0 22 -3q10 -3 16 -9q7 -6 11 -15t4 -20q0 -5 -2 -10q-1 -5 -4 -10q-4 -5 -8 -9q-5 -4 -11 -7q7 -3 13 -7q5 -4 8 -9q3 -4 5 -11q2 -5 2 -12q0 -11 -5 -20q-4 -9 -11.5 -15.5t-17.5 -9.5t-22 -3q-11 0 -21 3q-9 3 -17 9t-12 14.5 t-4 20.5h27q0 -6 2 -10.5t6 -7.5q3 -3 8 -5t11 -2zM360.5 255.5q10.5 -10.5 16.5 -25.5q5 -16 5 -34v-8q0 -19 -5 -34q-6 -15 -16 -25q-10 -11 -25 -17q-14 -5 -32 -5h-49v170h50q18 0 31.5 -5.5t24 -16zM352 188v8q0 28 -12 43q-12 14 -35 14h-20v-123h19q12 0 21 4t15 11 q6 8 9 19t3 24zM255 448q100 0 173.5 -68t81.5 -166h-32q-6 59 -40.5 107t-86.5 73l-29 -28l-81 81z" />
-<glyph unicode="" horiz-adv-x="405" d="M235 256l170 -107v-42l-67 21l-167 167v78q0 14 9 23t22.5 9t23 -9t9.5 -23v-117zM21 336l27 27l336 -336l-27 -27l-122 122v-79l42 -32v-32l-74 21l-75 -21v32l43 32v117l-171 -53v42l128 80z" />
-<glyph unicode="" horiz-adv-x="405" d="M175 256zM405 107l-170 53v-117l42 -32v-32l-74 21l-75 -21v32l43 32v117l-171 -53v42l171 107v117q0 14 9 23t22.5 9t23 -9t9.5 -23v-117l170 -107v-42z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM213 96q40 0 68 28t28 68t-28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28zM213.5 213q8.5 0 15 -6t6.5 -15t-6.5 -15t-15 -6t-15 6t-6.5 15t6.5 15t15 6z " />
-<glyph unicode="" horiz-adv-x="384" d="M374 336q10 -11 10 -27v-266q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v266q0 16 10 27l29 36q10 12 25 12h256q15 0 25 -12zM192 75l117 117h-74v43h-86v-43h-74zM45 341h294l-20 22h-256z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h89q7 19 23.5 31t36.5 12t36.5 -12t23.5 -31h89zM192 384q-9 0 -15 -6.5t-6 -15t6 -15t15 -6.5t15 6.5t6 15t-6 15t-15 6.5z M192 299q-27 0 -45.5 -19t-18.5 -45.5t18.5 -45t45.5 -18.5t45.5 18.5t18.5 45t-18.5 45.5t-45.5 19zM320 43v30q0 19 -23.5 35t-52.5 23.5t-52 7.5t-52 -7.5t-52.5 -23.5t-23.5 -35v-30h256z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h89q7 19 23.5 31t36.5 12t36.5 -12t23.5 -31h89zM213 64v43h-42v-43h42zM213 149v128h-42v-128h42zM192 341q9 0 15 6.5t6 15 t-6 15t-15 6.5t-15 -6.5t-6 -15t6 -15t15 -6.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h89q7 19 23.5 31t36.5 12t36.5 -12t23.5 -31h89zM192 384q-9 0 -15 -6.5t-6 -15t6 -15t15 -6.5t15 6.5t6 15t-6 15t-15 6.5z M149 85l171 171l-30 30l-141 -140l-55 55l-30 -30z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 405q18 0 30.5 -12.5t12.5 -29.5v-342q0 -17 -12.5 -29.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 29.5v342q0 17 12.5 29.5t30.5 12.5h89q7 19 23.5 31t36.5 12t36.5 -12t23.5 -31h89zM192 405q-9 0 -15 -6t-6 -15t6 -15t15 -6t15 6t6 15t-6 15t-15 6zM341 21v342 h-42v-64h-214v64h-42v-342h298z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h89q7 19 23.5 31t36.5 12t36.5 -12t23.5 -31h89zM192 384q-9 0 -15 -6.5t-6 -15t6 -15t15 -6.5t15 6.5t6 15t-6 15t-15 6.5z M277 128v85h-85v64l-107 -106l107 -107v64h85z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h89q7 19 23.5 31t36.5 12t36.5 -12t23.5 -31h89zM192 384q-9 0 -15 -6.5t-6 -15t6 -15t15 -6.5t15 6.5t6 15t-6 15t-15 6.5z M192 64l107 107h-64v85h-86v-85h-64z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 363q18 0 30.5 -12.5t12.5 -30.5v-299q0 -17 -12.5 -29.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 29.5v299q0 18 12.5 30.5t30.5 12.5h89q7 19 23.5 30.5t36.5 11.5t36.5 -11.5t23.5 -30.5h89zM192 363q-9 0 -15 -6.5t-6 -15t6 -15t15 -6.5t15 6.5t6 15t-6 15 t-15 6.5zM235 64v43h-150v-43h150zM299 149v43h-214v-43h214zM299 235v42h-214v-42h214z" />
-<glyph unicode="" horiz-adv-x="235" d="M203 320h32v-245q0 -49 -34.5 -83.5t-83 -34.5t-83 34.5t-34.5 83.5v266q0 36 25 61t60.5 25t60.5 -25t25 -61v-224q0 -22 -16 -37.5t-38 -15.5t-37.5 15.5t-15.5 37.5v203h32v-203q0 -8 6.5 -14.5t15 -6.5t15 6.5t6.5 14.5v224q0 22 -16 38t-38 16t-37.5 -16t-15.5 -38 v-266q0 -36 25 -61t60.5 -25t60.5 25t25 61v245z" />
-<glyph unicode="" d="M117 75q-48 0 -82.5 34t-34.5 83t34.5 83t82.5 34h224q36 0 61 -25t25 -60t-25 -60t-61 -25h-181q-22 0 -37.5 15.5t-15.5 37.5t15.5 37.5t37.5 15.5h160v-32h-160q-9 0 -15 -6t-6 -15t6 -15t15 -6h181q22 0 38 15.5t16 37.5t-16 37.5t-38 15.5h-224q-35 0 -60 -25 t-25 -60t25 -60t60 -25h203v-32h-203z" />
-<glyph unicode="" horiz-adv-x="277" d="M128 384h149v-64h-85v-235h-1q-4 -36 -31 -60.5t-64 -24.5q-40 0 -68 28t-28 68t28 68t68 28q15 0 32 -6v198z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 427q18 0 30.5 -12.5t12.5 -30.5v-276q0 -23 -19 -35l-173 -116l-173 116q-19 12 -19 35v276q0 18 12.5 30.5t30.5 12.5h298zM149 107l192 192l-30 30l-162 -162l-76 76l-30 -30z" />
-<glyph unicode="" horiz-adv-x="405" d="M384 64v-21q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298q18 0 30.5 -12.5t12.5 -30.5v-21h-192q-18 0 -30.5 -12.5t-12.5 -30.5v-170q0 -18 12.5 -30.5t30.5 -12.5h192zM192 107v170h213v-170h-213zM277.5 160 q13.5 0 22.5 9.5t9 22.5t-9 22.5t-22.5 9.5t-23 -9.5t-9.5 -22.5t9.5 -22.5t23 -9.5z" />
-<glyph unicode="" horiz-adv-x="405" d="M43 235h64v-150h-64v150zM171 235h64v-150h-64v150zM0 -21v64h405v-64h-405zM299 235h64v-150h-64v150zM203 427l202 -107v-43h-405v43z" />
-<glyph unicode="" horiz-adv-x="213" d="M185 363q12 0 20 -8.5t8 -20.5v-327q0 -12 -8 -20t-20 -8h-157q-11 0 -19.5 8t-8.5 20v327q0 12 8.5 20.5t19.5 8.5h36v42h85v-42h36zM128 64v43h-43v-43h43zM128 149v107h-43v-107h43z" />
-<glyph unicode="" horiz-adv-x="213" d="M185 363q12 0 20 -8.5t8 -20.5v-327q0 -12 -8 -20t-20 -8h-157q-11 0 -19.5 8t-8.5 20v327q0 12 8.5 20.5t19.5 8.5h36v42h85v-42h36zM85 21l86 160h-43v118l-85 -160h42v-118z" />
-<glyph unicode="" horiz-adv-x="213" d="M185 363q12 0 20 -8.5t8 -20.5v-327q0 -12 -8 -20t-20 -8h-157q-11 0 -19.5 8t-8.5 20v327q0 12 8.5 20.5t19.5 8.5h36v42h85v-42h36zM127 65v41h-41v-41h41zM156 177q15 15 15 36q0 27 -19 45.5t-45.5 18.5t-45 -18.5t-18.5 -45.5h32q0 14 9 23t22.5 9t23 -9t9.5 -22.5 t-10 -22.5l-20 -20q-19 -21 -19 -43h34q0 16 17 34z" />
-<glyph unicode="" horiz-adv-x="213" d="M185 363q12 0 20 -8.5t8 -20.5v-327q0 -12 -8 -20t-20 -8h-157q-11 0 -19.5 8t-8.5 20v327q0 12 8.5 20.5t19.5 8.5h36v42h85v-42h36z" />
-<glyph unicode="" horiz-adv-x="512" d="M330.5 331q-17.5 0 -30 12.5t-12.5 30t12.5 30t30 12.5t30 -12.5t12.5 -30t-12.5 -30t-30 -12.5zM106.5 192q44.5 0 75.5 -31t31 -75.5t-31 -75.5t-75.5 -31t-75.5 31t-31 75.5t31 75.5t75.5 31zM106.5 11q30.5 0 52.5 22t22 52.5t-22 52.5t-52.5 22t-52.5 -22t-22 -52.5 t22 -52.5t52.5 -22zM230 224l47 -49v-132h-42v106l-69 60q-12 10 -12 30q0 17 12 30l60 60q10 12 30 12q18 0 34 -12l41 -41q32 -32 76 -32v-43q-64 0 -108 45l-17 17zM405.5 192q44.5 0 75.5 -31t31 -75.5t-31 -75.5t-75.5 -31t-75.5 31t-31 75.5t31 75.5t75.5 31z M405.5 11q30.5 0 52.5 22t22 52.5t-22 52.5t-52.5 22t-52.5 -22t-22 -52.5t22 -52.5t52.5 -22z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM213 21q58 0 105 36l-239 240q-36 -47 -36 -105q0 -71 50 -121t120 -50zM348 87q36 47 36 105q0 71 -50 121t-121 50q-58 0 -104 -36z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM43 192q0 -59 36 -105l239 240q-46 36 -105 36q-70 0 -120 -50t-50 -121zM213 21q71 0 121 50t50 121q0 59 -36 105l-239 -240q46 -36 104 -36z" />
-<glyph unicode="" d="M384 0h43v-43h-43q-44 0 -85 21q-41 -20 -86 -20t-85 20q-42 -21 -85 -21h-43v43h43q45 0 85 28q39 -27 85.5 -27t85.5 27q40 -28 85 -28zM42 43l-41 142q-3 8 1 17q4 8 13 10l28 9v99q0 18 12.5 30.5t29.5 12.5h64v64h128v-64h64q18 0 30.5 -12.5t12.5 -30.5v-99l27 -9 q9 -2 13 -10t1 -17l-40 -142h-1q-48 0 -85 42q-38 -42 -86 -42t-85 42q-37 -42 -85 -42h-1zM85 320v-85l128 42l128 -42v85h-256z" />
-<glyph unicode="" horiz-adv-x="341" d="M299 405q17 0 29.5 -12.5t12.5 -29.5v-342q0 -17 -12.5 -29.5t-29.5 -12.5h-256q-18 0 -30.5 12.5t-12.5 29.5v342q0 17 12.5 29.5t30.5 12.5h256zM43 363v-171l53 32l53 -32v171h-106zM43 43h256l-83 109l-64 -82l-45 55z" />
-<glyph unicode="" horiz-adv-x="341" d="M299 405q17 0 29.5 -12.5t12.5 -29.5v-342q0 -17 -12.5 -29.5t-29.5 -12.5h-256q-18 0 -30.5 12.5t-12.5 29.5v342q0 17 12.5 29.5t30.5 12.5h256zM43 363v-171l53 32l53 -32v171h-106z" />
-<glyph unicode="" horiz-adv-x="299" d="M256 384q18 0 30.5 -12.5t12.5 -30.5v-341l-150 64l-149 -64v341q0 18 12.5 30.5t30.5 12.5h213zM256 64v277h-213v-277l106 47z" />
-<glyph unicode="" horiz-adv-x="299" d="M256 384q18 0 30.5 -12.5t12.5 -30.5v-341l-150 64l-149 -64v341q0 18 12.5 30.5t30.5 12.5h213z" />
-<glyph unicode="" horiz-adv-x="405" d="M106.5 149q26.5 0 45.5 -18.5t19 -45.5q0 -35 -25 -60t-61 -25q-24 0 -47 11.5t-38 31.5q15 0 29 11.5t14 30.5q0 27 18.5 45.5t45 18.5zM399 349q6 -6 6 -15t-6 -15l-191 -191l-59 59l191 191q7 6 15.5 6t15.5 -6z" />
-<glyph unicode="" horiz-adv-x="341" d="M341 277v-42h-44q2 -13 2 -22v-21h42v-43h-42v-21q0 -9 -2 -21h44v-43h-60q-17 -29 -46 -46.5t-64 -17.5t-64.5 17.5t-46.5 46.5h-60v43h45q-2 12 -2 21v21h-43v43h43v21q0 9 2 22h-45v42h60q15 26 39 42l-35 35l30 30l47 -46q14 3 29.5 3t30.5 -3l46 46l30 -30l-34 -35 q24 -16 38 -42h60zM213 107v42h-85v-42h85zM213 192v43h-85v-43h85z" />
-<glyph unicode="" horiz-adv-x="341" d="M0 107v213q0 27 12.5 44.5t38 26t53 11.5t67 3t67 -3t53 -11.5t38 -26t12.5 -44.5v-213q0 -28 -21 -48v-38q0 -8 -6.5 -14.5t-14.5 -6.5h-22q-8 0 -14.5 6.5t-6.5 14.5v22h-171v-22q0 -8 -6 -14.5t-15 -6.5h-21q-9 0 -15.5 6.5t-6.5 14.5v38q-21 20 -21 48zM74.5 85 q13.5 0 23 9.5t9.5 23t-9.5 22.5t-23 9t-22.5 -9t-9 -22.5t9 -23t22.5 -9.5zM266.5 85q13.5 0 23 9.5t9.5 23t-9.5 22.5t-23 9t-22.5 -9t-9 -22.5t9 -23t22.5 -9.5zM299 213v107h-256v-107h256z" />
-<glyph unicode="" horiz-adv-x="384" d="M192 320q-18 0 -30.5 12.5t-12.5 30.5q0 12 7 22l36 63l36 -63q7 -10 7 -22q0 -18 -12.5 -30.5t-30.5 -12.5zM290 107q22 -22 52 -22q23 0 42 13v-98q0 -9 -6.5 -15t-14.5 -6h-342q-8 0 -14.5 6t-6.5 15v98q19 -13 42 -13q30 0 52 22l23 23l23 -23q21 -21 52 -21t52 21 l23 23zM320 256q27 0 45.5 -18.5t18.5 -45.5v-33q0 -17 -12.5 -29.5t-29.5 -12.5t-29 12l-46 46l-46 -46q-11 -11 -29 -11t-30 11l-45 46l-46 -46q-12 -12 -29 -12t-29.5 12.5t-12.5 29.5v33q0 27 18.5 45.5t45.5 18.5h107v43h42v-43h107z" />
-<glyph unicode="" horiz-adv-x="384" d="M340 320l44 -128v-171q0 -8 -6.5 -14.5t-14.5 -6.5h-22q-8 0 -14.5 6.5t-6.5 14.5v22h-256v-22q0 -8 -6.5 -14.5t-14.5 -6.5h-22q-8 0 -14.5 6.5t-6.5 14.5v171l44 128q8 21 31 21h53v43h128v-43h53q23 0 31 -21zM74.5 107q13.5 0 23 9t9.5 22.5t-9.5 23t-23 9.5 t-22.5 -9.5t-9 -23t9 -22.5t22.5 -9zM309.5 107q13.5 0 22.5 9t9 22.5t-9 23t-22.5 9.5t-23 -9.5t-9.5 -23t9.5 -22.5t23 -9zM43 213h298l-32 96h-234z" />
-<glyph unicode="" horiz-adv-x="384" d="M298.5 341q-13.5 0 -22.5 9.5t-9 22.5q0 10 8 24.5t16 23.5l8 10q32 -36 32 -58q0 -13 -9.5 -22.5t-23 -9.5zM192 341q-13 0 -22.5 9.5t-9.5 22.5q0 10 8 24.5t16 23.5l8 10q32 -36 32 -58q0 -13 -9.5 -22.5t-22.5 -9.5zM85.5 341q-13.5 0 -23 9.5t-9.5 22.5q0 10 8 24.5 t16 23.5l8 10q32 -36 32 -58q0 -13 -9 -22.5t-22.5 -9.5zM340 277l44 -128v-170q0 -9 -6.5 -15.5t-14.5 -6.5h-22q-8 0 -14.5 6.5t-6.5 15.5v21h-256v-21q0 -9 -6.5 -15.5t-14.5 -6.5h-22q-8 0 -14.5 6.5t-6.5 15.5v170l44 128q8 22 31 22h234q23 0 31 -22zM74.5 64 q13.5 0 23 9.5t9.5 22.5t-9.5 22.5t-23 9.5t-22.5 -9.5t-9 -22.5t9 -22.5t22.5 -9.5zM309.5 64q13.5 0 22.5 9.5t9 22.5t-9 22.5t-22.5 9.5t-23 -9.5t-9.5 -22.5t9.5 -22.5t23 -9.5zM43 171h298l-32 96h-234z" />
-<glyph unicode="" horiz-adv-x="384" d="M340 320l44 -128v-171q0 -8 -6.5 -14.5t-14.5 -6.5h-22q-8 0 -14.5 6.5t-6.5 14.5v22h-256v-22q0 -8 -6.5 -14.5t-14.5 -6.5h-22q-8 0 -14.5 6.5t-6.5 14.5v171l44 128q8 21 31 21h234q23 0 31 -21zM74.5 107q13.5 0 23 9t9.5 22.5t-9.5 23t-23 9.5t-22.5 -9.5t-9 -23 t9 -22.5t22.5 -9zM309.5 107q13.5 0 22.5 9t9 22.5t-9 23t-22.5 9.5t-23 -9.5t-9.5 -23t9.5 -22.5t23 -9zM43 213h298l-32 96h-234z" />
-<glyph unicode="" d="M384 320q18 0 30.5 -12.5t12.5 -30.5v-234q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v234q0 18 12.5 30.5t30.5 12.5h46q-4 11 -4 21q0 27 19 45.5t45 18.5q34 0 54 -28l10 -15l11 15q19 28 53 28q27 0 45.5 -18.5t18.5 -45.5q0 -10 -4 -21h47z M277.5 363q-8.5 0 -15 -6.5t-6.5 -15t6.5 -15t15 -6.5t15 6.5t6.5 15t-6.5 15t-15 6.5zM149.5 363q-8.5 0 -15 -6.5t-6.5 -15t6.5 -15t15 -6.5t15 6.5t6.5 15t-6.5 15t-15 6.5zM384 43v42h-341v-42h341zM384 149v128h-108l44 -60l-35 -25l-50 69l-22 29l-21 -29l-51 -69 l-34 25l44 60h-108v-128h341z" />
-<glyph unicode="" d="M384 405q18 0 30.5 -12.5t12.5 -29.5v-235q0 -18 -12.5 -30.5t-30.5 -12.5h-85v-106l-86 42l-85 -42v106h-85q-18 0 -30.5 12.5t-12.5 30.5v235q0 17 12.5 29.5t30.5 12.5h341zM384 128v43h-341v-43h341zM384 235v128h-341v-128h341z" />
-<glyph unicode="" d="M384 320q18 0 30.5 -12.5t12.5 -30.5v-234q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v234q0 18 12.5 30.5t30.5 12.5h64v43q0 17 12.5 29.5t29.5 12.5h128q18 0 30.5 -12.5t12.5 -29.5v-43h64zM149 363v-43h128v43h-128zM384 43v42h-341v-42h341z M384 149v128h-64v-42h-43v42h-128v-42h-42v42h-64v-128h341z" />
-<glyph unicode="" d="M384 363q18 0 30.5 -12.5t12.5 -30.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h341zM384 64v128h-341v-128h341zM384 277v43h-341v-43h341z" />
-<glyph unicode="" d="M384 309q18 0 30.5 -12.5t12.5 -29.5v-235q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v235q0 17 12.5 29.5t30.5 12.5h85v43l43 43h85l43 -43v-43h85zM171 352v-43h85v43h-85zM181 64l141 141l-30 30l-111 -111l-44 45l-30 -30z" />
-<glyph unicode="" d="M384 309q18 0 30.5 -12.5t12.5 -29.5v-235q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v235q0 17 12.5 29.5t30.5 12.5h85v43l43 43h85l43 -43v-43h85zM171 352v-43h85v43h-85zM213 32l107 107h-64v85h-85v-85h-64z" />
-<glyph unicode="" d="M299 320h128v-277q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v277h128v43q0 17 12.5 29.5t30.5 12.5h85q18 0 30.5 -12.5t12.5 -29.5v-43zM171 363v-43h85v43h-85zM149 64l160 107l-160 85v-192z" />
-<glyph unicode="" d="M384 320q18 0 30.5 -12.5t12.5 -30.5v-234q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v234q0 18 12.5 30.5t30.5 12.5h85v43q0 17 12.5 29.5t30.5 12.5h85q18 0 30.5 -12.5t12.5 -29.5v-43h85zM256 320v43h-85v-43h85z" />
-<glyph unicode="" horiz-adv-x="469" d="M0 64q27 0 45.5 -18.5t18.5 -45.5h-64v64zM0 149q62 0 105.5 -43.5t43.5 -105.5h-42q0 44 -31.5 75.5t-75.5 31.5v42zM384 299v-214h-120q-21 64 -68 111t-111 68v35h299zM0 235q97 0 166 -69t69 -166h-43q0 80 -56 136t-136 56v43zM427 384q17 0 29.5 -12.5t12.5 -30.5 v-298q0 -18 -12.5 -30.5t-29.5 -12.5h-150v43h150v298h-384v-64h-43v64q0 18 12.5 30.5t30.5 12.5h384z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 384q17 0 29.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-29.5 -12.5h-150v43h150v298h-384v-64h-43v64q0 18 12.5 30.5t30.5 12.5h384zM0 64q27 0 45.5 -18.5t18.5 -45.5h-64v64zM0 149q62 0 105.5 -43.5t43.5 -105.5h-42q0 44 -31.5 75.5t-75.5 31.5v42zM0 235 q97 0 166 -69t69 -166h-43q0 80 -56 136t-136 56v43z" />
-<glyph unicode="" d="M235 404q81 -8 136.5 -68.5t55.5 -143.5q0 -45 -19 -87l-56 33q11 27 11 54q0 56 -37 98t-91 50v64zM213 43q72 0 117 56l55 -33q-30 -41 -75 -64t-97 -23q-88 0 -150.5 62.5t-62.5 150.5q0 83 55.5 143.5t136.5 68.5v-64q-55 -8 -91.5 -50t-36.5 -98q0 -62 43.5 -105.5 t105.5 -43.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM128 85v150h-43v-150h43zM213 85v214h-42v-214h42zM299 85v86h-43v-86h43z" />
-<glyph unicode="" d="M213 299h214v-299h-427v384h213v-85zM85 43v42h-42v-42h42zM85 128v43h-42v-43h42zM85 213v43h-42v-43h42zM85 299v42h-42v-42h42zM171 43v42h-43v-42h43zM171 128v43h-43v-43h43zM171 213v43h-43v-43h43zM171 299v42h-43v-42h43zM384 43v213h-171v-43h43v-42h-43v-43h43 v-43h-43v-42h171zM341 213v-42h-42v42h42zM341 128v-43h-42v43h42z" />
-<glyph unicode="" horiz-adv-x="384" d="M256 213h128v-213h-384v299h128v42l64 64l64 -64v-128zM85 43v42h-42v-42h42zM85 128v43h-42v-43h42zM85 213v43h-42v-43h42zM213 43v42h-42v-42h42zM213 128v43h-42v-43h42zM213 213v43h-42v-43h42zM213 299v42h-42v-42h42zM341 43v42h-42v-42h42zM341 128v43h-42v-43 h42z" />
-<glyph unicode="" d="M269 277l30 -30l-56 -55l56 -55l-30 -30l-56 55l-55 -55l-30 30l55 55l-55 55l30 30l55 -55zM213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM213.5 21q70.5 0 120.5 50t50 121t-50 121t-120.5 50 t-120.5 -50t-50 -121t50 -121t120.5 -50z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM320 115l-77 77l77 77l-30 30l-77 -77l-76 77l-30 -30l76 -77l-76 -77l30 -30l76 77l77 -77z" />
-<glyph unicode="" horiz-adv-x="299" d="M299 311l-120 -119l120 -119l-30 -30l-120 119l-119 -119l-30 30l119 119l-119 119l30 30l119 -119l120 119z" />
-<glyph unicode="" horiz-adv-x="384" d="M171 171l-171 170v43h384v-43l-171 -170v-128h107v-43h-256v43h107v128zM96 299h192l43 42h-278z" />
-<glyph unicode="" horiz-adv-x="477" d="M148 304l-93 -112l93 -112l-33 -27l-115 139l115 139zM132 171v42h43v-42h-43zM345 213v-42h-42v42h42zM217 171v42h43v-42h-43zM362 331l115 -139l-115 -139l-33 27l93 112l-93 112z" />
-<glyph unicode="" horiz-adv-x="341" d="M64 341v-42h-43v85q0 18 12.5 30.5t30.5 12.5l213 -1q18 0 30.5 -12t12.5 -30v-85h-43v42h-213zM243 94l-30 30l68 68l-68 68l30 30l98 -98zM128 124l-30 -30l-98 98l98 98l30 -30l-68 -68zM277 43v42h43v-85q0 -18 -12.5 -30.5t-30.5 -12.5h-213q-18 0 -30.5 12.5 t-12.5 30.5v85h43v-42h213z" />
-<glyph unicode="" d="M158 94l-30 -30l-128 128l128 128l30 -30l-98 -98zM269 94l98 98l-98 98l30 30l128 -128l-128 -128z" />
-<glyph unicode="" d="M384 384q18 0 30.5 -12.5t12.5 -30.5v-64q0 -17 -12.5 -29.5t-30.5 -12.5h-43v-64q0 -36 -25 -61t-60 -25h-128q-35 0 -60 25t-25 61v213h341zM384 277v64h-43v-64h43zM0 0v43h384v-43h-384z" />
-<glyph unicode="" d="M43 320v-299h298v-42h-298q-18 0 -30.5 12.5t-12.5 29.5v299h43zM384 405q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-256q-18 0 -30.5 12.5t-12.5 30.5v256q0 17 12.5 29.5t30.5 12.5h256zM384 192v171h-107v-171l54 32z" />
-<glyph unicode="" horiz-adv-x="469" d="M43 256v-235h341q0 -17 -12.5 -29.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 29.5v235h43zM363 341h106v-234q0 -18 -12.5 -30.5t-29.5 -12.5h-299q-18 0 -30.5 12.5t-12.5 30.5v234h107v43q0 18 12.5 30.5t30.5 12.5h85q18 0 30.5 -12.5t12.5 -30.5v-43zM235 384v-43 h85v43h-85zM235 128l117 85l-117 64v-149z" />
-<glyph unicode="" horiz-adv-x="512" d="M43 320v-299h384v-42h-384q-18 0 -30.5 12.5t-12.5 29.5v192v107h43zM469 363q18 0 30.5 -12.5t12.5 -30.5v-213q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5l1 256q0 17 12 29.5t30 12.5h128l43 -42h170zM149 128h299l-75 96l-53 -64l-75 96z" />
-<glyph unicode="" horiz-adv-x="469" d="M319 228l76 -100h-235l59 75l41 -50zM43 341v-341h341v-43h-341q-18 0 -30.5 12.5t-12.5 30.5v341h43zM427 427q17 0 29.5 -12.5t12.5 -30.5v-299q0 -17 -12.5 -29.5t-29.5 -12.5h-299q-18 0 -30.5 12.5t-12.5 29.5v299q0 18 12.5 30.5t30.5 12.5h299zM427 85v299h-299 v-299h299z" />
-<glyph unicode="" d="M427 107q0 -18 -12.5 -30.5t-30.5 -12.5h-256q-18 0 -30.5 12.5t-12.5 30.5v256q0 17 12.5 29.5t30.5 12.5h256q18 0 30.5 -12.5t12.5 -29.5v-256zM192 192l-64 -85h256l-85 106l-64 -79zM0 320h43v-299h298v-42h-298q-18 0 -30.5 12.5t-12.5 29.5v299z" />
-<glyph unicode="" horiz-adv-x="469" d="M43 341v-341h341v-43h-341q-18 0 -30.5 12.5t-12.5 30.5v341h43zM277 128v171h-42v42h85v-213h-43zM427 427q17 0 29.5 -12.5t12.5 -30.5v-299q0 -17 -12.5 -29.5t-29.5 -12.5h-299q-18 0 -30.5 12.5t-12.5 29.5v299q0 18 12.5 30.5t30.5 12.5h299zM427 85v299h-299v-299 h299z" />
-<glyph unicode="" horiz-adv-x="469" d="M43 341v-341h341v-43h-341q-18 0 -30.5 12.5t-12.5 30.5v341h43zM427 427q17 0 29.5 -12.5t12.5 -30.5v-299q0 -17 -12.5 -29.5t-29.5 -12.5h-299q-18 0 -30.5 12.5t-12.5 29.5v299q0 18 12.5 30.5t30.5 12.5h299zM427 85v299h-299v-299h299zM341 171v-43h-128v85 q0 18 12.5 30.5t30.5 12.5h43v43h-86v42h86q17 0 29.5 -12.5t12.5 -29.5v-43q0 -18 -12.5 -30.5t-29.5 -12.5h-43v-42h85z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 427q17 0 29.5 -12.5t12.5 -30.5v-299q0 -17 -12.5 -29.5t-29.5 -12.5h-299q-18 0 -30.5 12.5t-12.5 29.5v299q0 18 12.5 30.5t30.5 12.5h299zM427 85v299h-299v-299h299zM43 341v-341h341v-43h-341q-18 0 -30.5 12.5t-12.5 30.5v341h43zM341 171q0 -18 -12.5 -30.5 t-29.5 -12.5h-86v43h86v42h-43v43h43v43h-86v42h86q17 0 29.5 -12.5t12.5 -29.5v-32q0 -14 -9 -23t-23 -9q14 0 23 -9.5t9 -22.5v-32z" />
-<glyph unicode="" horiz-adv-x="469" d="M43 341v-341h341v-43h-341q-18 0 -30.5 12.5t-12.5 30.5v341h43zM299 128v85h-86v128h43v-85h43v85h42v-213h-42zM427 427q17 0 29.5 -12.5t12.5 -30.5v-299q0 -17 -12.5 -29.5t-29.5 -12.5h-299q-18 0 -30.5 12.5t-12.5 29.5v299q0 18 12.5 30.5t30.5 12.5h299zM427 85 v299h-299v-299h299z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 427q17 0 29.5 -12.5t12.5 -30.5v-299q0 -17 -12.5 -29.5t-29.5 -12.5h-299q-18 0 -30.5 12.5t-12.5 29.5v299q0 18 12.5 30.5t30.5 12.5h299zM427 85v299h-299v-299h299zM43 341v-341h341v-43h-341q-18 0 -30.5 12.5t-12.5 30.5v341h43zM341 171q0 -18 -12.5 -30.5 t-29.5 -12.5h-86v43h86v42h-86v128h128v-42h-85v-43h43q17 0 29.5 -12.5t12.5 -30.5v-42z" />
-<glyph unicode="" horiz-adv-x="469" d="M43 341v-341h341v-43h-341q-18 0 -30.5 12.5t-12.5 30.5v341h43zM427 427q17 0 29.5 -12.5t12.5 -30.5v-299q0 -17 -12.5 -29.5t-29.5 -12.5h-299q-18 0 -30.5 12.5t-12.5 29.5v299q0 18 12.5 30.5t30.5 12.5h299zM427 85v299h-299v-299h299zM256 128q-18 0 -30.5 12.5 t-12.5 30.5v128q0 17 12.5 29.5t30.5 12.5h85v-42h-85v-43h43q17 0 29.5 -12.5t12.5 -30.5v-42q0 -18 -12.5 -30.5t-29.5 -12.5h-43zM256 213v-42h43v42h-43z" />
-<glyph unicode="" horiz-adv-x="469" d="M43 341v-341h341v-43h-341q-18 0 -30.5 12.5t-12.5 30.5v341h43zM427 427q17 0 29.5 -12.5t12.5 -30.5v-299q0 -17 -12.5 -29.5t-29.5 -12.5h-299q-18 0 -30.5 12.5t-12.5 29.5v299q0 18 12.5 30.5t30.5 12.5h299zM427 85v299h-299v-299h299zM256 128h-43l86 171h-86v42 h128v-42z" />
-<glyph unicode="" horiz-adv-x="469" d="M43 341v-341h341v-43h-341q-18 0 -30.5 12.5t-12.5 30.5v341h43zM427 427q17 0 29.5 -12.5t12.5 -30.5v-299q0 -17 -12.5 -29.5t-29.5 -12.5h-299q-18 0 -30.5 12.5t-12.5 29.5v299q0 18 12.5 30.5t30.5 12.5h299zM427 85v299h-299v-299h299zM256 128q-18 0 -30.5 12.5 t-12.5 30.5v32q0 13 9.5 22.5t22.5 9.5q-13 0 -22.5 9t-9.5 23v32q0 17 12.5 29.5t30.5 12.5h43q17 0 29.5 -12.5t12.5 -29.5v-32q0 -14 -9 -23t-23 -9q14 0 23 -9.5t9 -22.5v-32q0 -18 -12.5 -30.5t-29.5 -12.5h-43zM256 299v-43h43v43h-43zM256 213v-42h43v42h-43z" />
-<glyph unicode="" horiz-adv-x="469" d="M43 341v-341h341v-43h-341q-18 0 -30.5 12.5t-12.5 30.5v341h43zM277 192q0 -18 -12.5 -30.5t-29.5 -12.5h-64v43h64v21h-22q-17 0 -29.5 12.5t-12.5 30.5v21q0 18 12.5 30.5t29.5 12.5h22q17 0 29.5 -12.5t12.5 -30.5v-85zM213 256h22v21h-22v-21zM427 427 q17 0 29.5 -12.5t12.5 -30.5v-299q0 -17 -12.5 -29.5t-29.5 -12.5h-299q-18 0 -30.5 12.5t-12.5 29.5v299q0 18 12.5 30.5t30.5 12.5h299zM427 256v128h-299v-299h299v128h-43v-42h-43v42h-42v43h42v43h43v-43h43z" />
-<glyph unicode="" horiz-adv-x="469" d="M43 341v-341h341v-43h-341q-18 0 -30.5 12.5t-12.5 30.5v341h43zM427 427q17 0 29.5 -12.5t12.5 -30.5v-299q0 -17 -12.5 -29.5t-29.5 -12.5h-299q-18 0 -30.5 12.5t-12.5 29.5v299q0 18 12.5 30.5t30.5 12.5h299zM427 85v299h-299v-299h299zM299 341q17 0 29.5 -12.5 t12.5 -29.5v-128q0 -18 -12.5 -30.5t-29.5 -12.5h-86v43h86v42h-43q-18 0 -30.5 12.5t-12.5 30.5v43q0 17 12.5 29.5t30.5 12.5h43zM299 256v43h-43v-43h43z" />
-<glyph unicode="" horiz-adv-x="469" d="M43 341v-341h341v-43h-341q-18 0 -30.5 12.5t-12.5 30.5v341h43zM427 427q17 0 29.5 -12.5t12.5 -30.5v-299q0 -17 -12.5 -29.5t-29.5 -12.5h-299q-18 0 -30.5 12.5t-12.5 29.5v299q0 18 12.5 30.5t30.5 12.5h299zM427 85v299h-299v-299h299z" />
-<glyph unicode="" d="M384 405q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-256q-18 0 -30.5 12.5t-12.5 30.5v256q0 17 12.5 29.5t30.5 12.5h256zM341 299v42h-85v-117q-14 11 -32 11q-22 0 -37.5 -16t-15.5 -38t15.5 -37.5t37.5 -15.5t37.5 15.5t15.5 37.5v118h64z M43 320v-299h298v-42h-298q-18 0 -30.5 12.5t-12.5 29.5v299h43z" />
-<glyph unicode="" d="M384 405q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-256q-18 0 -30.5 12.5t-12.5 30.5v256q0 17 12.5 29.5t30.5 12.5h256zM203 245v22q0 13 -9.5 22.5t-22.5 9.5h-54v-128h32v42h22q13 0 22.5 9.5t9.5 22.5zM309 203v64q0 13 -9 22.5t-23 9.5h-53 v-128h53q14 0 23 9t9 23zM395 267v32h-64v-128h32v42h32v32h-32v22h32zM149 245v22h22v-22h-22zM43 320v-299h298v-42h-298q-18 0 -30.5 12.5t-12.5 29.5v299h43zM256 203v64h21v-64h-21z" />
-<glyph unicode="" d="M43 320v-299h298v-42h-298q-18 0 -30.5 12.5t-12.5 29.5v299h43zM384 405q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-256q-18 0 -30.5 12.5t-12.5 30.5v256q0 17 12.5 29.5t30.5 12.5h256zM363 213v43h-86v85h-42v-85h-86v-43h86v-85h42v85h86z " />
-<glyph unicode="" horiz-adv-x="341" d="M303 427q16 0 27 -11.5t11 -27.5v-307q0 -16 -11 -27t-27 -11h-179q-16 0 -27.5 11t-11.5 27v307q0 16 11.5 27.5t27.5 11.5h179zM213.5 384q-17.5 0 -30 -12.5t-12.5 -30t12.5 -30t30 -12.5t30 12.5t12.5 30t-12.5 30t-30 12.5zM213.5 96q35.5 0 60.5 25t25 60.5 t-25 60.5t-60.5 25t-60.5 -25t-25 -60.5t25 -60.5t60.5 -25zM160 181.5q0 53.5 53.5 53.5t53.5 -53.5t-53.5 -53.5t-53.5 53.5zM43 341v-341h213v-43h-213q-18 0 -30.5 12.5t-12.5 30.5v341h43z" />
-<glyph unicode="" d="M43 320v-299h298v-42h-298q-18 0 -30.5 12.5t-12.5 29.5v299h43zM384 405q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-256q-18 0 -30.5 12.5t-12.5 30.5v256q0 17 12.5 29.5t30.5 12.5h256zM363 213v43h-214v-43h214zM277 128v43h-128v-43h128z M363 299v42h-214v-42h214z" />
-<glyph unicode="" d="M43 320v-299h298v-42h-298q-18 0 -30.5 12.5t-12.5 29.5v299h43zM384 405q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-256q-18 0 -30.5 12.5t-12.5 30.5v256q0 17 12.5 29.5t30.5 12.5h256zM213 139l128 96l-128 96v-192z" />
-<glyph unicode="" d="M213.5 215q9.5 0 16.5 -6.5t7 -16.5t-7 -16.5t-16.5 -6.5t-16.5 6.5t-7 16.5t7 16.5t16.5 6.5zM213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM260 145l81 175l-174 -81l-82 -175z" />
-<glyph unicode="" horiz-adv-x="408" d="M114 163l-89 90q-25 25 -25 60t25 60l150 -149zM259 202l-31 -31l146 -147l-30 -30l-146 147l-147 -147l-31 30l209 208q-12 24 -4 56t33 57q31 30 69 35t61.5 -18.5t18.5 -61.5t-36 -69q-25 -25 -56.5 -33t-55.5 4z" />
-<glyph unicode="" horiz-adv-x="299" d="M21 43v256h256v-256q0 -18 -12.5 -30.5t-29.5 -12.5h-171q-18 0 -30.5 12.5t-12.5 30.5zM299 363v-43h-299v43h75l21 21h107l21 -21h75z" />
-<glyph unicode="" horiz-adv-x="341" d="M170.5 43q17.5 0 30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5t-30 12.5t-12.5 30.5t12.5 30.5t30 12.5zM42.5 427q17.5 0 30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5t-30 12.5t-12.5 30.5t12.5 30.5t30 12.5zM42.5 299q17.5 0 30 -12.5t12.5 -30.5t-12.5 -30.5 t-30 -12.5t-30 12.5t-12.5 30.5t12.5 30.5t30 12.5zM42.5 171q17.5 0 30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5t-30 12.5t-12.5 30.5t12.5 30.5t30 12.5zM298.5 341q-17.5 0 -30 12.5t-12.5 30.5t12.5 30.5t30 12.5t30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5z M170.5 171q17.5 0 30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5t-30 12.5t-12.5 30.5t12.5 30.5t30 12.5zM298.5 171q17.5 0 30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5t-30 12.5t-12.5 30.5t12.5 30.5t30 12.5zM298.5 299q17.5 0 30 -12.5t12.5 -30.5t-12.5 -30.5 t-30 -12.5t-30 12.5t-12.5 30.5t12.5 30.5t30 12.5zM170.5 299q17.5 0 30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5t-30 12.5t-12.5 30.5t12.5 30.5t30 12.5zM170.5 427q17.5 0 30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5t-30 12.5t-12.5 30.5t12.5 30.5t30 12.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M363 171q8 0 14.5 -6.5t6.5 -15.5v-128q0 -8 -6.5 -14.5t-14.5 -6.5h-342q-8 0 -14.5 6.5t-6.5 14.5v128q0 9 6.5 15.5t14.5 6.5h342zM85.5 43q17.5 0 30 12.5t12.5 30t-12.5 30t-30 12.5t-30 -12.5t-12.5 -30t12.5 -30t30 -12.5zM363 384q8 0 14.5 -6.5t6.5 -14.5v-128 q0 -9 -6.5 -15.5t-14.5 -6.5h-342q-8 0 -14.5 6.5t-6.5 15.5v128q0 8 6.5 14.5t14.5 6.5h342zM85.5 256q17.5 0 30 12.5t12.5 30t-12.5 30t-30 12.5t-30 -12.5t-12.5 -30t12.5 -30t30 -12.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 405h384l-43 -389q-2 -16 -14 -26.5t-28 -10.5h-214q-16 0 -28 10.5t-14 26.5zM192 43q27 0 45.5 18.5t18.5 45.5q0 19 -16 47.5t-32 48.5l-16 19q-7 -8 -17.5 -21.5t-28.5 -44t-18 -49.5q0 -27 18.5 -45.5t45.5 -18.5zM327 277l9 86h-288l9 -86h270z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 80l236 236l80 -80l-236 -236h-80v80zM378 298l-39 -39l-80 80l39 39q6 6 15 6t15 -6l50 -50q6 -6 6 -15t-6 -15z" />
-<glyph unicode="" d="M426 277l1 -213q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v213q0 24 20 37l193 113l193 -113q20 -13 20 -37zM213 171l177 110l-177 103l-176 -103z" />
-<glyph unicode="" d="M384 363q18 0 30.5 -12.5t12.5 -30.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h341zM384 277v43l-171 -107l-170 107v-43l170 -106z" />
-<glyph unicode="" horiz-adv-x="469" d="M235 299q-20 0 -39 -8l-46 46q41 15 84 15q79 0 143 -44.5t92 -115.5q-23 -60 -73 -101l-62 62q7 19 7 39q0 44 -31 75.5t-75 31.5zM21 357l27 27l379 -378l-27 -27l-63 62l-9 9q-45 -18 -93 -18q-79 0 -143 44.5t-92 115.5q25 64 80 106l-10 10zM139 239 q-11 -23 -11 -47q0 -44 31.5 -75.5t75.5 -31.5q24 0 47 12l-33 33q-8 -2 -14 -2q-27 0 -45.5 18.5t-18.5 45.5q0 7 1 14zM231 256h4q26 0 45 -19t19 -45l-1 -4z" />
-<glyph unicode="" horiz-adv-x="469" d="M235 352q79 0 142.5 -44.5t91.5 -115.5q-28 -71 -91.5 -115.5t-142.5 -44.5t-143 44.5t-92 115.5q28 71 92 115.5t143 44.5zM235 85q44 0 75 31.5t31 75.5t-31 75.5t-75 31.5t-75.5 -31.5t-31.5 -75.5t31.5 -75.5t75.5 -31.5zM234.5 256q26.5 0 45.5 -18.5t19 -45.5 t-19 -45.5t-45.5 -18.5t-45 18.5t-18.5 45.5t18.5 45.5t45 18.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M378 328q6 -6 6 -15t-6 -15l-67 -67l41 -41l-30 -30l-30 30l-191 -190h-101v101l190 191l-30 30l30 30l41 -41l67 67q6 6 15 6t15 -6zM84 43l172 172l-41 41l-172 -172z" />
-<glyph unicode="" d="M309 384q50 0 84 -34t34 -83q0 -24 -10 -48.5t-22 -43.5t-40.5 -49t-48 -48.5t-62.5 -56.5l-31 -28l-31 27q-42 39 -62 57.5t-48.5 48.5t-40.5 49t-21.5 43.5t-9.5 48.5q0 49 34 83t83 34q58 0 96 -45q38 45 96 45zM215 52q49 44 71.5 65.5t49.5 51.5t37.5 52.5 t10.5 45.5q0 32 -21.5 53t-53.5 21q-24 0 -45.5 -14t-30.5 -36h-40q-8 22 -29.5 36t-46.5 14q-32 0 -53 -21t-21 -53q0 -23 10 -45.5t37.5 -52.5t50 -51.5t70.5 -65.5l2 -2z" />
-<glyph unicode="" d="M213 -7l-31 28q-42 38 -62 56.5t-48 48.5t-40.5 49t-22 43.5t-9.5 48.5q0 49 34 83t83 34q58 0 96 -45q38 45 96 45q50 0 84 -34t34 -83q0 -24 -10 -48.5t-22 -43.5t-40.5 -49t-48 -48.5t-62.5 -57.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M149 64v43h86v-43h-86zM0 320h384v-43h-384v43zM64 171v42h256v-42h-256z" />
-<glyph unicode="" horiz-adv-x="341" d="M203 434q64 -52 101 -126t37 -159q0 -70 -50 -120t-120.5 -50t-120.5 50t-50 120q0 108 69 190l-1 -8q0 -33 22.5 -56t55.5 -23q32 0 52 23t20 56q0 21 -3.5 46.5t-7.5 40.5zM164 43q43 0 73 30t30 72q0 45 -13 86q-30 -41 -98 -55q-29 -6 -44.5 -23.5t-15.5 -42.5 q0 -28 20 -47.5t48 -19.5z" />
-<glyph unicode="" horiz-adv-x="320" d="M201 320h119v-213h-149l-9 42h-119v-149h-43v363h192z" />
-<glyph unicode="" horiz-adv-x="469" d="M128 213v-42h-128v42h128zM174 282l-30 -30l-45 46l30 30zM256 427v-128h-43v128h43zM370 298l-45 -46l-30 30l45 46zM341 213h128v-42h-128v42zM234.5 256q26.5 0 45.5 -18.5t19 -45.5t-19 -45.5t-45.5 -18.5t-45 18.5t-18.5 45.5t18.5 45.5t45 18.5zM295 102l30 30 l45 -46l-30 -30zM99 86l45 46l30 -30l-45 -46zM213 -43v128h43v-128h-43z" />
-<glyph unicode="" horiz-adv-x="410" d="M0 405h213l-85 -192h85l-149 -256v192h-64v256zM341 405l69 -192h-41l-15 43h-68l-15 -43h-41l69 192h42zM295 285h50l-25 78z" />
-<glyph unicode="" horiz-adv-x="363" d="M27 384l336 -336l-27 -27l-89 89l-76 -131v192h-64v79l-107 107zM320 235l-33 -57l-180 181v46h213l-85 -170h85z" />
-<glyph unicode="" horiz-adv-x="213" d="M0 405h213l-85 -170h85l-149 -256v192h-64v234z" />
-<glyph unicode="" horiz-adv-x="384" d="M256 0v43h43v-43h-43zM341 256v43h43v-43h-43zM0 341q0 18 12.5 30.5t30.5 12.5h85v-43h-85v-298h85v-43h-85q-18 0 -30.5 12.5t-12.5 30.5v298zM341 384q18 0 30.5 -12.5t12.5 -30.5h-43v43zM171 -43v470h42v-470h-42zM341 85v43h43v-43h-43zM256 341v43h43v-43h-43z M341 171v42h43v-42h-43zM341 0v43h43q0 -18 -12.5 -30.5t-30.5 -12.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M192 -21q0 79 56 135.5t136 56.5q0 -80 -56 -136t-136 -56zM55 229q0 34 31 48q-31 15 -31 48q0 22 16 38t38 16q17 0 30 -10v4q0 22 15.5 38t37.5 16t37.5 -16t15.5 -38v-4q14 10 30 10q22 0 38 -16t16 -38q0 -33 -31 -48q31 -14 31 -48q0 -22 -16 -37.5t-38 -15.5 q-17 0 -30 9v-4q0 -22 -15.5 -37.5t-37.5 -15.5t-37.5 15.5t-15.5 37.5v4q-14 -9 -30 -9q-22 0 -38 15.5t-16 37.5zM192 331q-22 0 -37.5 -16t-15.5 -38t15.5 -37.5t37.5 -15.5t37.5 15.5t15.5 37.5t-15.5 38t-37.5 16zM0 171q80 0 136 -56.5t56 -135.5q-80 0 -136 56 t-56 136z" />
-<glyph unicode="" horiz-adv-x="414" d="M350 183q30 -17 47 -47t17 -63q-29 -17 -63 -17.5t-65 17.5q-9 5 -17 11q2 -10 2 -20q0 -35 -17.5 -64.5t-46.5 -46.5q-29 17 -46.5 46.5t-17.5 64.5q0 10 2 20q-9 -7 -17 -11q-31 -17 -65 -17t-63 17q0 34 17 63.5t47 47.5q8 4 18 8q-10 4 -18 9q-30 17 -47 47t-17 63 q29 17 63 17.5t65 -17.5q8 -4 17 -11q-2 10 -2 20q0 35 17.5 64.5t46.5 46.5q29 -17 46.5 -46.5t17.5 -64.5q0 -10 -2 -20q9 7 17 11q31 18 65 17.5t63 -17.5q0 -33 -17 -63t-47 -47q-8 -5 -18 -9q10 -4 18 -9zM207 107q35 0 60 25t25 60t-25 60t-60 25t-60 -25t-25 -60 t25 -60t60 -25z" />
-<glyph unicode="" d="M169 160l44 118l44 -118h-88zM384 405q18 0 30.5 -12.5t12.5 -29.5v-342q0 -17 -12.5 -29.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 29.5v342q0 17 12.5 29.5t30.5 12.5h341zM298 53h44l-109 278h-40l-109 -278h45l24 64h120z" />
-<glyph unicode="" horiz-adv-x="469" d="M235 331l42 -54h-85zM363 235l53 -43l-53 -43v86zM107 235v-86l-54 43zM277 107l-42 -54l-43 54h85zM427 384q17 0 29.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-29.5 -12.5h-384q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h384zM427 42v300h-384 v-300h384z" />
-<glyph unicode="" horiz-adv-x="299" d="M0 107v42h107v-106h-43v64h-64zM64 277v64h43v-106h-107v42h64zM192 43v106h107v-42h-64v-64h-43zM235 277h64v-42h-107v106h43v-64z" />
-<glyph unicode="" horiz-adv-x="299" d="M43 149v-64h64v-42h-107v106h43zM0 235v106h107v-42h-64v-64h-43zM256 85v64h43v-106h-107v42h64zM192 341h107v-106h-43v64h-64v42z" />
-<glyph unicode="" horiz-adv-x="256" d="M256 363v-64h-149l106 -107l-106 -107h149v-64h-256v43l139 128l-139 128v43h256z" />
-<glyph unicode="" horiz-adv-x="352" d="M336 294q16 -16 16 -38v-203q0 -22 -15.5 -37.5t-37.5 -15.5t-38 15.5t-16 37.5v107h-32v-160h-213v341q0 18 12.5 30.5t30.5 12.5h128q17 0 29.5 -12.5t12.5 -30.5v-149h22q17 0 29.5 -12.5t12.5 -30.5v-96q0 -8 6.5 -14.5t15 -6.5t15 6.5t6.5 14.5v154q-11 -4 -21 -4 q-22 0 -38 15.5t-16 37.5q0 17 9.5 30.5t25.5 19.5l-45 45l22 22l80 -79h-1zM171 235v106h-128v-106h128zM298.5 235q8.5 0 15 6t6.5 15t-6.5 15t-15 6t-15 -6t-6.5 -15t6.5 -15t15 -6z" />
-<glyph unicode="" horiz-adv-x="387" d="M37 301l-37 36q5 6 19 20q26 27 58 27q18 0 35.5 -15t17.5 -46q0 -20 -6 -34t-21 -36q-29 -43 -40 -75q-5 -18 -2.5 -29.5t10.5 -11.5q9 0 24 18q16 17 48 58q18 22 46 41t60 19q42 0 62.5 -27.5t23.5 -61.5h52v-53h-52q-6 -69 -36.5 -100t-63.5 -31q-28 0 -48.5 19.5 t-20.5 46.5q0 33 30 69.5t85 45.5v3q-1 8 -2.5 12.5t-5 10.5t-11 9t-18.5 3q-18 0 -39 -20t-48 -53q-16 -19 -23.5 -28t-19.5 -18.5t-23 -12.5q-30 -10 -56 9q-29 22 -29 64q0 14 6 32.5t15 35.5t16.5 30t15.5 24.5t8 12.5q18 28 7 32q-8 3 -37 -26zM236 52q14 0 27.5 18 t17.5 57q-30 -8 -45.5 -27t-15.5 -32q0 -7 5 -11.5t11 -4.5z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM361 277q-32 56 -92 76q19 -35 29 -76h63zM213 362q-27 -39 -40 -85h81q-14 46 -41 85zM48 149h72q-3 25 -3 43t3 43h-72q-5 -23 -5 -43t5 -43zM66 107 q32 -56 92 -76q-19 35 -29 76h-63zM129 277q10 41 29 76q-60 -20 -92 -76h63zM213 22q27 39 41 85h-81q13 -46 40 -85zM263 149q4 25 4 43t-4 43h-100q-3 -25 -3 -43t3 -43h100zM269 31q60 20 92 76h-63q-10 -41 -29 -76zM306 149h72q6 23 6 43t-6 43h-72q3 -25 3 -43 t-3 -43z" />
-<glyph unicode="" horiz-adv-x="469" d="M448 363q9 0 15 -6.5t6 -15.5v-85q0 -9 -6 -15t-15 -6h-107q-8 0 -14.5 6t-6.5 15v85q0 9 6.5 15.5t14.5 6.5v10q0 22 16 38t38 16t37.5 -16t15.5 -38v-10zM431 363v10q0 15 -10.5 26t-25.5 11t-26 -11t-11 -26v-10h73zM382 192h44q1 -12 1 -21q0 -89 -62.5 -151.5 t-151 -62.5t-151 62.5t-62.5 151t62.5 151t150.5 62.5q33 0 64 -10v-54q0 -18 -12.5 -30.5t-29.5 -12.5h-43v-42q0 -9 -6.5 -15.5t-14.5 -6.5h-43v-42h128q9 0 15 -6.5t6 -15.5v-64h22q14 0 25 -8t15 -21q45 49 45 115q0 7 -2 21zM192 1v42q-18 0 -30.5 12.5t-12.5 29.5v22 l-102 102q-4 -20 -4 -38q0 -65 42.5 -113.5t106.5 -56.5z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM192 23v41q-18 0 -30.5 12.5t-12.5 30.5v21l-102 102q-4 -20 -4 -38q0 -65 42.5 -113t106.5 -56zM339 77q45 49 45 115q0 53 -29.5 96t-77.5 62v-9 q0 -17 -12.5 -29.5t-29.5 -12.5h-43v-43q0 -9 -6.5 -15t-14.5 -6h-43v-43h128q9 0 15 -6.5t6 -14.5v-64h22q14 0 25 -8.5t15 -21.5z" />
-<glyph unicode="" horiz-adv-x="469" d="M85 167l150 -82l149 82v-86l-149 -81l-150 81v86zM235 384l234 -128v-171h-42v148l-192 -105l-235 128z" />
-<glyph unicode="" d="M171 21h-107v171h-64l213 192l214 -192h-64v-171h-107v128h-85v-128z" />
-<glyph unicode="" horiz-adv-x="384" d="M384 341v-42l-43 -128l43 -128v-43h-384v43l43 128l-43 128v42h271l31 86l50 -19l-24 -67h56zM277 149v43h-64v64h-42v-64h-64v-43h64v-64h42v64h64z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM320 149v86h-85v85h-86v-85h-85v-86h85v-85h86v85h85z" />
-<glyph unicode="" horiz-adv-x="469" d="M128 171q-27 0 -45.5 18.5t-18.5 45t18.5 45.5t45.5 19t45.5 -19t18.5 -45.5t-18.5 -45t-45.5 -18.5zM384 299q35 0 60 -25t25 -61v-192h-42v64h-384v-64h-43v320h43v-192h170v150h171z" />
-<glyph unicode="" horiz-adv-x="256" d="M0 405h256v-128v0l-85 -85l85 -85v-1v-127h-256v127v1l85 85l-85 85v0v128zM213 96l-85 85l-85 -85h170zM43 288h170v75h-170v-75z" />
-<glyph unicode="" horiz-adv-x="256" d="M0 405h256v-128v0l-85 -85l85 -85v-1v-127h-256v127v1l85 85l-85 85v0v128zM213 96l-85 85l-85 -85v-75h170v75zM128 203l85 85v75h-170v-75z" />
-<glyph unicode="" horiz-adv-x="256" d="M0 405h256v-128v0l-85 -85l85 -85v-1v-127h-256v127v1l85 85l-85 85v0v128z" />
-<glyph unicode="" horiz-adv-x="469" d="M75 213v43h32v-128h-32v53h-43v-53h-32v128h32v-43h43zM128 224v32h96v-32h-32v-96h-32v96h-32zM245 224v32h96v-32h-32v-96h-32v96h-32zM437 256q13 0 22.5 -9.5t9.5 -22.5v-21q0 -13 -9.5 -22.5t-22.5 -9.5h-42v-43h-32v128h74zM437 203v21h-42v-21h42z" />
-<glyph unicode="" horiz-adv-x="469" d="M469 64q0 -18 -12.5 -30.5t-29.5 -12.5h-384q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h384q17 0 29.5 -12.5t12.5 -30.5v-256zM160 181l-75 -96h299l-96 128l-75 -96z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM341 43v298h-298v-298h298zM234 186l75 -101h-234l58 76l42 -51z" />
-<glyph unicode="" horiz-adv-x="384" d="M384 43q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298q18 0 30.5 -12.5t12.5 -30.5v-298zM117 160l-74 -96h298l-96 128l-74 -96z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-299q-17 0 -29.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t29.5 12.5h299zM341 128v213h-299v-213h86q0 -27 18.5 -45.5t45.5 -18.5t45.5 18.5t18.5 45.5h85zM277 235l-85 -86l-85 86h42v64h86v-64 h42z" />
-<glyph unicode="" horiz-adv-x="384" d="M377 3l7 -8l-27 -27l-58 58q-46 -38 -107 -38q-71 0 -121 50q-46 46 -49.5 112t37.5 116l-59 59l27 27l59 -59l30 -30l76 -76l134 -134zM192 30v103l-102 102q-26 -34 -26 -77q0 -53 38 -90q37 -38 90 -38zM192 339l-49 -48l-30 30l79 79l121 -121q38 -39 47 -92.5 t-13 -99.5l-155 154v98z" />
-<glyph unicode="" horiz-adv-x="341" d="M291 279q50 -50 50 -121t-50 -120.5t-120.5 -49.5t-120.5 49.5t-50 120.5t50 121l121 121zM171 30v309l-91 -90q-37 -38 -37 -91t37 -90q37 -38 91 -38z" />
-<glyph unicode="" horiz-adv-x="469" d="M249 235h220v-86h-42v-85h-86v85h-92q-14 -37 -47 -61t-74 -24q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q41 0 74 -24t47 -61zM128 149q18 0 30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5t12.5 -30.5t30.5 -12.5z" />
-<glyph unicode="" horiz-adv-x="405" d="M312 323l93 -131l-93 -131q-13 -18 -35 -18h-234q-18 0 -30.5 12.5t-12.5 29.5v214q0 17 12.5 29.5t30.5 12.5h234q22 0 35 -18zM277 85l76 107l-76 107h-234v-214h234z" />
-<glyph unicode="" horiz-adv-x="405" d="M312 323l93 -131l-93 -131q-13 -18 -35 -18h-234q-18 0 -30.5 12.5t-12.5 29.5v214q0 17 12.5 29.5t30.5 12.5h234q22 0 35 -18z" />
-<glyph unicode="" d="M414 201q13 -13 13 -30.5t-13 -29.5l-149 -150q-13 -12 -30.5 -12t-29.5 12l-192 192q-13 13 -13 30v150q0 17 12.5 29.5t30.5 12.5h149q18 0 30 -12zM74.5 299q13.5 0 23 9t9.5 22.5t-9.5 23t-23 9.5t-22.5 -9.5t-9 -23t9 -22.5t22.5 -9zM326 122q15 16 15 38 t-15.5 37.5t-37.5 15.5t-38 -15l-15 -16l-16 16q-15 15 -38 15q-22 0 -37.5 -15.5t-15.5 -37.5t16 -38l91 -91z" />
-<glyph unicode="" d="M414 201q13 -13 13 -30.5t-13 -29.5l-149 -150q-13 -12 -30.5 -12t-29.5 12l-192 192q-13 13 -13 30v150q0 17 12.5 29.5t30.5 12.5h149q18 0 30 -12zM74.5 299q13.5 0 23 9t9.5 22.5t-9.5 23t-23 9.5t-22.5 -9.5t-9 -23t9 -22.5t22.5 -9z" />
-<glyph unicode="" horiz-adv-x="446" d="M26 29q-16 7 -22.5 23t-0.5 32l52 125v-192zM442 108q7 -16 0 -32.5t-23 -23.5l-157 -65q-8 -3 -16 -3q-29 0 -39 26l-106 256q-4 8 -3 17q0 28 26 38l157 65q8 3 17 3q28 0 39 -26zM140.5 261q8.5 0 15 6.5t6.5 15t-6.5 15t-15 6.5t-15 -6.5t-6.5 -15t6.5 -15t15 -6.5z M98 27v135l73 -178h-31q-17 0 -29.5 12.5t-12.5 30.5z" />
-<glyph unicode="" horiz-adv-x="469" d="M54 52l39 39l30 -30l-39 -39zM213 -31v63h43v-63h-43zM64 224v-43h-64v43h64zM299 313q29 -17 46.5 -46t17.5 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5q0 35 17 64t47 46v103h128v-103zM405 224h64v-43h-64v43zM346 61l30 29l39 -38l-30 -30z" />
-<glyph unicode="" horiz-adv-x="469" d="M277 320l192 -256h-469l128 171l96 -128l34 25l-61 81z" />
-<glyph unicode="" d="M380 128l-31 31l26 19l30 -30zM370 229l-51 -40l-168 168l62 48l192 -149zM27 427l400 -400l-27 -27l-81 81l-106 -82l-192 149l35 27l157 -123l76 59l-31 30l-45 -34l-157 122l-35 27l69 54l-90 90z" />
-<glyph unicode="" horiz-adv-x="384" d="M192 52l157 123l35 -27l-192 -149l-192 149l35 27zM192 107l-157 122l-35 27l192 149l192 -149l-35 -27z" />
-<glyph unicode="" horiz-adv-x="384" d="M192 202q81 75 192 75v-234q-110 0 -192 -76q-81 76 -192 76v234q111 0 192 -75zM192 277q-27 0 -45.5 19t-18.5 45.5t18.5 45t45.5 18.5t45.5 -18.5t18.5 -45t-18.5 -45.5t-45.5 -19z" />
-<glyph unicode="" d="M41 192q0 -27 19 -46.5t47 -19.5h85v-41h-85q-44 0 -75.5 31.5t-31.5 75.5t31.5 75.5t75.5 31.5h85v-41h-85q-28 0 -47 -19.5t-19 -46.5zM128 171v42h171v-42h-171zM320 299q44 0 75.5 -31.5t31.5 -75.5t-31.5 -75.5t-75.5 -31.5h-85v41h85q27 0 46.5 19.5t19.5 46.5 t-19.5 46.5t-46.5 19.5h-85v41h85z" />
-<glyph unicode="" horiz-adv-x="341" d="M170.5 85q-17.5 0 -30 12.5t-12.5 30.5t12.5 30.5t30 12.5t30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5zM299 277q17 0 29.5 -12.5t12.5 -29.5v-214q0 -17 -12.5 -29.5t-29.5 -12.5h-256q-18 0 -30.5 12.5t-12.5 29.5v214q0 17 12.5 29.5t30.5 12.5h194v43 q0 27 -19.5 46.5t-47 19.5t-46.5 -19.5t-19 -46.5h-41q0 44 31.5 75.5t75.5 31.5t75 -31.5t31 -75.5v-43h22zM299 21v214h-256v-214h256z" />
-<glyph unicode="" horiz-adv-x="341" d="M299 277q17 0 29.5 -12.5t12.5 -29.5v-214q0 -17 -12.5 -29.5t-29.5 -12.5h-256q-18 0 -30.5 12.5t-12.5 29.5v214q0 17 12.5 29.5t30.5 12.5h21v43q0 44 31.5 75.5t75.5 31.5t75 -31.5t31 -75.5v-43h22zM170.5 386q-27.5 0 -46.5 -19.5t-19 -46.5h2v-43h130v43 q0 27 -19.5 46.5t-47 19.5zM299 21v214h-256v-214h256zM170.5 85q-17.5 0 -30 12.5t-12.5 30.5t12.5 30.5t30 12.5t30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5z" />
-<glyph unicode="" horiz-adv-x="341" d="M299 277q17 0 29.5 -12.5t12.5 -29.5v-214q0 -17 -12.5 -29.5t-29.5 -12.5h-256q-18 0 -30.5 12.5t-12.5 29.5v214q0 17 12.5 29.5t30.5 12.5h21v43q0 44 31.5 75.5t75.5 31.5t75 -31.5t31 -75.5v-43h22zM170.5 85q17.5 0 30 12.5t12.5 30.5t-12.5 30.5t-30 12.5 t-30 -12.5t-12.5 -30.5t12.5 -30.5t30 -12.5zM237 277v43q0 27 -19.5 46.5t-47 19.5t-46.5 -19.5t-19 -46.5v-43h132z" />
-<glyph unicode="" horiz-adv-x="512" d="M149 277l-85 -85l85 -85v-64l-149 149l149 149v-64zM277 256q54 -8 96.5 -30.5t69.5 -55.5t43.5 -69.5t25.5 -79.5q-78 109 -235 109v-87l-149 149l149 149v-85z" />
-<glyph unicode="" horiz-adv-x="384" d="M149 256q54 -8 96.5 -30.5t69.5 -55.5t43.5 -69.5t25.5 -79.5q-78 109 -235 109v-87l-149 149l149 149v-85z" />
-<glyph unicode="" horiz-adv-x="448" d="M0 0v149l320 43l-320 43v149l448 -192z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 320q18 0 30.5 -12.5t12.5 -30.5v-256q0 -17 -12.5 -29.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 29.5v256q0 18 12.5 30.5t30.5 12.5h42q0 44 31.5 75.5t75.5 31.5t75.5 -31.5t31.5 -75.5h42zM192 384q-27 0 -45.5 -18.5t-18.5 -45.5h128q0 27 -18.5 45.5 t-45.5 18.5zM192 171q44 0 75.5 31t31.5 75h-43q0 -26 -18.5 -45t-45.5 -19t-45.5 19t-18.5 45h-43q0 -44 31.5 -75t75.5 -31z" />
-<glyph unicode="" horiz-adv-x="384" d="M373 384q11 0 11 -11v-322q0 -8 -8 -10l-120 -41l-128 45l-114 -44l-3 -1q-11 0 -11 11v322q0 8 8 10l120 41l128 -45l114 44zM256 43v253l-128 45v-253z" />
-<glyph unicode="" horiz-adv-x="432" d="M0 48v48h432v-48h-432zM0 168v48h432v-48h-432zM0 336h432v-48h-432v48z" />
-<glyph unicode="" d="M192 85v22h-43v42h86v22h-64q-9 0 -15.5 6t-6.5 15v64q0 9 6.5 15t15.5 6h21v22h43v-22h42v-42h-85v-22h64q9 0 15 -6t6 -15v-64q0 -9 -6 -15t-15 -6h-21v-22h-43zM384 363q18 0 30.5 -12.5t12.5 -30.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5 t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h341zM384 64v256h-341v-256h341z" />
-<glyph unicode="" horiz-adv-x="339" d="M180 301q-18 0 -32 -6l-32 31q15 8 32 12v46h64v-47q32 -8 49.5 -30t19.5 -51h-48q-2 45 -53 45zM27 361l312 -312l-27 -27l-48 48q-19 -18 -52 -24v-46h-64v46q-33 7 -55 28t-23 54h46q5 -45 64 -45q38 0 52 20l-75 74q-84 25 -84 84l-73 73z" />
-<glyph unicode="" horiz-adv-x="217" d="M117 215q46 -11 73 -32t27 -61q0 -32 -20.5 -51t-53.5 -25v-46h-64v46q-34 7 -55.5 28t-23.5 54h47q4 -45 64 -45q31 0 44 12t13 26q0 17 -13.5 30t-50.5 22q-100 24 -100 88q0 29 21 49.5t54 27.5v46h64v-47q32 -8 49.5 -30t18.5 -51h-47q-2 45 -53 45q-27 0 -42.5 -11 t-15.5 -29q0 -15 14 -25.5t50 -20.5z" />
-<glyph unicode="" horiz-adv-x="85" d="M42.5 277q-17.5 0 -30 12.5t-12.5 30.5t12.5 30.5t30 12.5t30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5zM42.5 235q17.5 0 30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5t-30 12.5t-12.5 30.5t12.5 30.5t30 12.5zM42.5 107q17.5 0 30 -12.5t12.5 -30.5t-12.5 -30.5 t-30 -12.5t-30 12.5t-12.5 30.5t12.5 30.5t30 12.5z" />
-<glyph unicode="" horiz-adv-x="341" d="M42.5 235q17.5 0 30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5t-30 12.5t-12.5 30.5t12.5 30.5t30 12.5zM298.5 235q17.5 0 30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5t-30 12.5t-12.5 30.5t12.5 30.5t30 12.5zM170.5 235q17.5 0 30 -12.5t12.5 -30.5t-12.5 -30.5 t-30 -12.5t-30 12.5t-12.5 30.5t12.5 30.5t30 12.5z" />
-<glyph unicode="" horiz-adv-x="341" d="M299 384h42v-384h-42v43h-43v-43h-171v43h-42v-43h-43v384h43v-43h42v43h171v-43h43v43zM85 85v43h-42v-43h42zM85 171v42h-42v-42h42zM85 256v43h-42v-43h42zM299 85v43h-43v-43h43zM299 171v42h-43v-42h43zM299 256v43h-43v-43h43z" />
-<glyph unicode="" d="M341 363h86v-299q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h21l43 -86h64l-43 86h43l42 -86h64l-42 86h42l43 -86h64z" />
-<glyph unicode="" horiz-adv-x="430" d="M430 252q0 -57 -37.5 -99t-93.5 -49v-83h64v-42h-342v106h-21v86q0 8 6.5 14.5t14.5 6.5h64q9 0 15.5 -6.5t6.5 -14.5v-86h-22v-64h171v84q-53 9 -88.5 50.5t-35.5 96.5q0 62 43.5 106t105.5 44t105.5 -44t43.5 -106zM53.5 213q-13.5 0 -23 9.5t-9.5 23t9.5 22.5t23 9 t22.5 -9t9 -22.5t-9 -23t-22.5 -9.5z" />
-<glyph unicode="" horiz-adv-x="302" d="M171 104v-83h128v-42h-299v42h128v84q-53 9 -88.5 50.5t-35.5 96.5q0 62 43.5 106t105.5 44t105.5 -44t43.5 -106q0 -57 -37.5 -99t-93.5 -49z" />
-<glyph unicode="" horiz-adv-x="320" d="M160 405l160 -390l-15 -15l-145 64l-145 -64l-15 15z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 363q18 0 30.5 -12.5t12.5 -30.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-85v43h85v213h-298v-213h85v-43h-85q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h298zM192 235l85 -86h-64v-128h-42v128h-64z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 43v149h43v-149q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h149v-43h-149v-298h298zM235 384h149v-149h-43v76l-209 -209l-30 30l209 209h-76v43z" />
-<glyph unicode="" horiz-adv-x="384" d="M192 384q80 0 136 -50t56 -121q0 -44 -31.5 -75t-75.5 -31h-37q-14 0 -23 -9.5t-9 -22.5q0 -12 8 -21q8 -10 8 -22q0 -13 -9.5 -22.5t-22.5 -9.5q-80 0 -136 56t-56 136t56 136t136 56zM74.5 192q13.5 0 23 9.5t9.5 22.5t-9.5 22.5t-23 9.5t-22.5 -9.5t-9 -22.5t9 -22.5 t22.5 -9.5zM138.5 277q13.5 0 23 9.5t9.5 23t-9.5 22.5t-23 9t-22.5 -9t-9 -22.5t9 -23t22.5 -9.5zM245.5 277q13.5 0 22.5 9.5t9 23t-9 22.5t-22.5 9t-23 -9t-9.5 -22.5t9.5 -23t23 -9.5zM309.5 192q13.5 0 22.5 9.5t9 22.5t-9 22.5t-22.5 9.5t-23 -9.5t-9.5 -22.5 t9.5 -22.5t23 -9.5z" />
-<glyph unicode="" horiz-adv-x="277" d="M149 384q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5h-64v-128h-85v384h149zM154 213q17 0 29.5 12.5t12.5 30.5t-12.5 30.5t-29.5 12.5h-69v-86h69z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 405q18 0 30.5 -12.5t12.5 -29.5v-299q0 -18 -12.5 -30.5t-30.5 -12.5h-85l-64 -64l-64 64h-85q-18 0 -30.5 12.5t-12.5 30.5v299q0 17 12.5 29.5t30.5 12.5h298zM192 335q-24 0 -41 -17t-17 -41t17 -40.5t41 -16.5t41 16.5t17 40.5t-17 41t-41 17zM320 107v19 q0 20 -23.5 35.5t-52.5 23t-52 7.5t-52 -7.5t-52.5 -23t-23.5 -35.5v-19h256z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 405q18 0 30.5 -12.5t12.5 -29.5v-299q0 -18 -12.5 -30.5t-30.5 -12.5h-85l-64 -64l-64 64h-85q-18 0 -30.5 12.5t-12.5 30.5v299q0 17 12.5 29.5t30.5 12.5h298zM232 173l88 40l-88 40l-40 88l-40 -88l-88 -40l88 -40l40 -88z" />
-<glyph unicode="" horiz-adv-x="299" d="M277 277q0 -27 -13 -61t-32 -63t-37.5 -55t-31.5 -40l-14 -15q-5 5 -13.5 15t-30.5 39t-39 56.5t-31 62t-14 61.5q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM107 277.5q0 -17.5 12.5 -30t30 -12.5t30 12.5t12.5 30t-12.5 30t-30 12.5t-30 -12.5t-12.5 -30zM0 21 h299v-42h-299v42z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 405q18 0 30.5 -12.5t12.5 -29.5v-299q0 -18 -12.5 -30.5t-30.5 -12.5h-85l-64 -64l-64 64h-85q-18 0 -30.5 12.5t-12.5 30.5v299q0 17 12.5 29.5t30.5 12.5h298zM213 64v43h-42v-43h42zM257 229q20 20 20 48q0 36 -25 61t-60 25t-60 -25t-25 -61h42q0 18 12.5 30.5 t30.5 12.5t30.5 -12.5t12.5 -30.5q0 -17 -13 -30l-26 -27q-25 -25 -25 -60v-11h42q0 22 6 34.5t19 26.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M213 309q-23 0 -39 -18l-68 68q44 46 107 46q62 0 106 -43.5t44 -105.5q0 -48 -37 -117l-77 78q18 16 18 39q0 22 -16 37.5t-38 15.5zM307 105l77 -78l-27 -27l-72 71q-16 -23 -34 -46.5t-28 -34.5l-10 -11q-6 6 -16 18t-35.5 46.5t-45.5 67t-36 73.5t-16 72q0 16 4 33 l-68 68l27 27l178 -178l3 -3z" />
-<glyph unicode="" horiz-adv-x="299" d="M149 405q62 0 106 -43.5t44 -105.5q0 -31 -15.5 -71.5t-37.5 -75t-44 -65t-37 -48.5l-16 -17q-6 6 -16 18t-35.5 46.5t-45.5 67t-36 73.5t-16 72q0 62 43.5 105.5t105.5 43.5zM149 203q22 0 38 15.5t16 37.5t-16 37.5t-38 15.5t-37.5 -15.5t-15.5 -37.5t15.5 -37.5 t37.5 -15.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M192 405q56 0 105.5 -22.5t86.5 -62.5l-192 -341l-192 341q36 40 86 62.5t106 22.5zM85 298.5q0 -17.5 12.5 -30t30 -12.5t30 12.5t12.5 30t-12.5 30t-30 12.5t-30 -12.5t-12.5 -30zM191.5 128q17.5 0 30 12.5t12.5 30t-12.5 30t-30 12.5t-30 -12.5t-12.5 -30t12.5 -30 t30 -12.5z" />
-<glyph unicode="" horiz-adv-x="428" d="M336 192l86 -85q6 -7 6 -15.5t-6 -14.5l-93 -93q-6 -6 -15 -6t-15 6l-85 85l-85 -85q-6 -6 -15 -6t-15 6l-93 93q-6 6 -6 14.5t6 15.5l85 85l-85 84q-6 7 -6 15.5t6 15.5l93 92q6 6 14.5 6t15.5 -6l85 -85l85 85q6 6 15 6t15 -6l92 -92q7 -7 7 -15.5t-7 -15.5zM214 256 q-9 0 -15 -6.5t-6 -15t6 -15t15 -6.5t15.5 6.5t6.5 15t-6.5 15t-15.5 6.5zM114 214l77 78l-77 77l-78 -78zM171.5 171q8.5 0 15 6t6.5 15t-6.5 15t-15 6t-15 -6t-6.5 -15t6.5 -15t15 -6zM214 128q9 0 15.5 6.5t6.5 15t-6.5 15t-15.5 6.5t-15 -6.5t-6 -15t6 -15t15 -6.5z M257 213q-9 0 -15 -6t-6 -15t6 -15t15 -6t15 6t6 15t-6 15t-15 6zM314 14l77 78l-77 77l-78 -78z" />
-<glyph unicode="" horiz-adv-x="341" d="M64 -64v43h43v-43h-43zM149 -64v43h43v-43h-43zM192 405v-213h-43v213h43zM268 353q34 -23 53.5 -60t19.5 -80q0 -70 -50 -120t-120.5 -50t-120.5 50t-50 120q0 43 19.5 80t53.5 60l31 -30q-28 -18 -44.5 -47t-16.5 -63q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5 q0 34 -17 63t-45 46zM235 -64v43h42v-43h-42z" />
-<glyph unicode="" horiz-adv-x="384" d="M213 384v-213h-42v213h42zM316 338q68 -58 68 -146q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 88 68 146l30 -30q-55 -45 -55 -116q0 -62 43.5 -105.5t105.5 -43.5t105.5 43.5t43.5 105.5q0 71 -55 115z" />
-<glyph unicode="" d="M363 277q26 0 45 -18.5t19 -45.5v-128h-86v-85h-256v85h-85v128q0 27 18.5 45.5t45.5 18.5h299zM299 43v106h-171v-106h171zM362.5 192q8.5 0 15 6.5t6.5 15t-6.5 15t-15 6.5t-15 -6.5t-6.5 -15t6.5 -15t15 -6.5zM341 384v-85h-256v85h256z" />
-<glyph unicode="" horiz-adv-x="448" d="M395 213q22 0 37.5 -15.5t15.5 -37.5t-15.5 -37.5t-37.5 -15.5h-32v-86q0 -17 -12.5 -29.5t-30.5 -12.5h-81v32q0 24 -17 40.5t-41 16.5t-40.5 -16.5t-16.5 -40.5v-32h-81q-18 0 -30.5 12.5t-12.5 29.5v81h32q24 0 41 17t17 41t-17 41t-41 17h-32v81q0 17 12.5 29.5 t30.5 12.5h85v32q0 22 15.5 38t37.5 16t38 -16t16 -38v-32h85q18 0 30.5 -12.5t12.5 -29.5v-86h32z" />
-<glyph unicode="" horiz-adv-x="299" d="M21 85l43 86h-64v128h128v-128l-43 -86h-64zM192 85l43 86h-64v128h128v-128l-43 -86h-64z" />
-<glyph unicode="" horiz-adv-x="341" d="M0 117v224q0 27 12.5 45t38 26.5t53 11.5t67 3t67 -3t53 -11.5t38 -26.5t12.5 -45v-224q0 -31 -21.5 -52.5t-52.5 -21.5l32 -32v-11h-256v11l32 32q-31 0 -53 21.5t-22 52.5zM170.5 85q17.5 0 30 12.5t12.5 30.5t-12.5 30.5t-30 12.5t-30 -12.5t-12.5 -30.5t12.5 -30.5 t30 -12.5zM299 235v106h-256v-106h256z" />
-<glyph unicode="" horiz-adv-x="384" d="M320 85v43h-256v-43h256zM320 171v42h-256v-42h256zM320 256v43h-256v-43h256zM0 -21v426l32 -32l32 32l32 -32l32 32l32 -32l32 32l32 -32l32 32l32 -32l32 32l32 -32l32 32v-426l-32 32l-32 -32l-32 32l-32 -32l-32 32l-32 -32l-32 32l-32 -32l-32 32l-32 -32l-32 32z " />
-<glyph unicode="" horiz-adv-x="469" d="M384 277l85 -85h-64q0 -71 -50 -121t-120 -50q-49 0 -91 27l31 31q27 -15 60 -15q53 0 90.5 37.5t37.5 90.5h-64zM107 192h64l-86 -85l-85 85h64q0 71 50 121t121 50q49 0 91 -27l-32 -31q-27 15 -59 15q-53 0 -90.5 -37.5t-37.5 -90.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 192q0 59 36 105t92 60v-44q-38 -14 -61.5 -47t-23.5 -74q0 -53 37 -90l48 47v-128h-128l50 51q-50 50 -50 120zM171 85v43h42v-43h-42zM384 363l-50 -51q50 -50 50 -120q0 -59 -36 -105t-92 -60v44q38 14 61.5 47t23.5 74q0 53 -37 90l-48 -47v128h128zM171 171v128 h42v-128h-42z" />
-<glyph unicode="" horiz-adv-x="366" d="M152 313q-5 -2 -16 -8l-31 32q22 14 47 20v-44zM0 333l27 27l335 -336l-27 -27l-50 50q-22 -14 -48 -20v44q7 3 17 8l-173 172q-14 -28 -14 -59q0 -53 38 -90l47 47v-128h-128l51 51q-51 50 -51 120q0 49 26 90zM366 363l-51 -51q51 -50 51 -120q0 -49 -26 -90l-32 31 q15 28 15 59q0 53 -38 90l-47 -47v128h128z" />
-<glyph unicode="" horiz-adv-x="341" d="M171 363q70 0 120 -50t50 -121q0 -49 -26 -91l-31 31q15 28 15 60q0 53 -37.5 90.5t-90.5 37.5v-64l-86 85l86 86v-64zM171 64v64l85 -85l-85 -86v64q-71 0 -121 50t-50 121q0 49 26 91l32 -31q-15 -28 -15 -60q0 -53 37.5 -90.5t90.5 -37.5z" />
-<glyph unicode="" horiz-adv-x="341" d="M171 320q-53 0 -90.5 -37.5t-37.5 -90.5q0 -32 15 -60l-32 -31q-26 42 -26 91q0 71 50 121t121 50v64l85 -86l-85 -85v64zM315 283q26 -42 26 -91q0 -71 -50 -121t-120 -50v-64l-86 86l86 85v-64q53 0 90.5 37.5t37.5 90.5q0 31 -15 60z" />
-<glyph unicode="" horiz-adv-x="363" d="M299 363h64v-171h-171v-192q0 -9 -6.5 -15t-14.5 -6h-43q-9 0 -15 6t-6 15v235h213v85h-21v-21q0 -9 -6.5 -15.5t-15.5 -6.5h-256q-8 0 -14.5 6.5t-6.5 15.5v85q0 9 6.5 15t14.5 6h256q9 0 15.5 -6t6.5 -15v-21z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 320q17 0 29.5 -12.5t12.5 -30.5v-170q0 -18 -12.5 -30.5t-29.5 -12.5h-384q-18 0 -30.5 12.5t-12.5 30.5v170q0 18 12.5 30.5t30.5 12.5h384zM427 107v170h-43v-85h-43v85h-42v-85h-43v85h-43v-85h-42v85h-43v-85h-43v85h-42v-170h384z" />
-<glyph unicode="" d="M163 285l264 -264v-21h-64l-150 149l-50 -50q8 -17 8 -35q0 -35 -25 -60t-60.5 -25t-60.5 25t-25 60t25 60t60 25q19 0 35 -7l51 50l-51 50q-16 -7 -35 -7q-35 0 -60 25t-25 60t25 60t60.5 25t60.5 -25t25 -60q0 -18 -8 -35zM85.5 277q17.5 0 30 12.5t12.5 30.5 t-12.5 30.5t-30 12.5t-30 -12.5t-12.5 -30.5t12.5 -30.5t30 -12.5zM85.5 21q17.5 0 30 12.5t12.5 30.5t-12.5 30.5t-30 12.5t-30 -12.5t-12.5 -30.5t12.5 -30.5t30 -12.5zM213.5 181q10.5 0 10.5 11t-10.5 11t-10.5 -11t10.5 -11zM363 384h64v-21l-150 -150l-42 43z" />
-<glyph unicode="" horiz-adv-x="484" d="M475 176q9 -10 9 -23t-9 -23l-136 -135q-9 -10 -22.5 -10t-22.5 10l-257 256q-9 9 -9 22.5t9 22.5l136 136q9 9 22.5 9t22.5 -9l53 -52l-31 -30l-44 44l-121 -120l241 -242l121 121l-47 47l30 30zM159 11l29 28l81 -81l-14 -1q-100 0 -173.5 68t-81.5 167h32 q6 -60 40 -108t87 -73zM320 256q-9 0 -15 6.5t-6 14.5v86q0 8 6 14.5t15 6.5v11q0 22 15.5 37.5t37.5 15.5t38 -15.5t16 -37.5v-11q8 0 14.5 -6.5t6.5 -14.5v-86q0 -8 -6.5 -14.5t-14.5 -6.5h-107zM337 395v-11h73v11q0 15 -11 25.5t-26 10.5t-25.5 -10.5t-10.5 -25.5z" />
-<glyph unicode="" horiz-adv-x="510" d="M351 394l-29 -28l-81 81l14 1q100 0 173.5 -68t81.5 -167h-32q-6 60 -40.5 108t-86.5 73zM217 411l257 -257q9 -9 9 -22.5t-9 -22.5l-136 -136q-9 -9 -22.5 -9t-22.5 9l-257 257q-9 9 -9 22.5t9 22.5l136 136q9 9 22.5 9t22.5 -9zM315 -4l136 136l-256 256l-136 -136z M159 -10l29 28l81 -81l-14 -1q-100 0 -173.5 68t-81.5 167h32q6 -60 40 -108t87 -73z" />
-<glyph unicode="" d="M320 149l107 -106l-32 -32l-107 107v16l-6 6q-39 -33 -90 -33q-38 0 -70 19l31 31q19 -8 39 -8q40 0 68 28.5t28 68t-28 67.5t-68 28t-68 -28t-28 -68h75l-89 -85l-82 85h54q0 57 40.5 98t97.5 41q58 0 98.5 -40.5t40.5 -98.5q0 -51 -34 -90l6 -6h17z" />
-<glyph unicode="" horiz-adv-x="341" d="M341 30l-81 82q17 27 17 59q0 44 -31 75t-75 31t-75.5 -31t-31.5 -75t31.5 -75.5t75.5 -31.5q31 0 59 18l94 -95q-12 -8 -25 -8h-257q-17 0 -29.5 12.5t-12.5 29.5v342q0 17 12.5 29.5t30.5 12.5h170l128 -128v-247zM107 170.5q0 26.5 18.5 45.5t45 19t45.5 -19t19 -45.5 t-19 -45t-45.5 -18.5t-45 18.5t-18.5 45z" />
-<glyph unicode="" d="M203 256q22 0 37.5 -15.5t15.5 -37.5t-15.5 -38t-37.5 -16t-38 16t-16 38t16 37.5t38 15.5zM384 363q18 0 30.5 -12.5t12.5 -30.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h341zM316 60l30 30l-62 62 q15 23 15 51q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t67 -28q28 0 51 15z" />
-<glyph unicode="" horiz-adv-x="373" d="M149 320q-38 0 -67.5 -24.5t-36.5 -60.5h-43q8 54 49.5 91t97.5 37q62 0 106 -44l44 44v-128h-128l54 54q-32 31 -76 31zM270 125l103 -104l-32 -31l-103 103q-40 -29 -89 -29q-62 0 -105 44l-44 -44v128h128l-54 -54q31 -31 75 -31q39 0 68 24t37 61h43q-5 -37 -27 -67z " />
-<glyph unicode="" horiz-adv-x="373" d="M267 149l106 -106l-32 -32l-106 106v17l-6 6q-39 -33 -90 -33q-58 0 -98.5 40.5t-40.5 98t40.5 98t98 40.5t98 -40.5t40.5 -98.5q0 -51 -33 -90l6 -6h17zM139 149q40 0 68 28t28 68t-28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28z" />
-<glyph unicode="" d="M43 64v64h341v-128h-64v64h-213v-64h-64v64zM363 235h64v-64h-64v64zM0 235h64v-64h-64v64zM320 171h-213v170q0 18 12.5 30.5t29.5 12.5h128q18 0 30.5 -12.5t12.5 -30.5v-170z" />
-<glyph unicode="" horiz-adv-x="384" d="M192 235q18 0 30.5 -12.5t12.5 -30.5t-12.5 -30.5t-30.5 -12.5t-30.5 12.5t-12.5 30.5t12.5 30.5t30.5 12.5zM341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM304 192 q0 7 -1 15l32 24q4 5 1 10l-30 52q-3 5 -9 3l-37 -15q-12 9 -25 15l-6 39q-1 6 -7 6h-60q-6 0 -7 -6l-6 -40q-14 -5 -25 -14l-37 15q-6 2 -9 -4l-30 -51q-3 -6 1 -10l32 -24q-1 -8 -1 -15t1 -15l-32 -24q-4 -5 -1 -10l30 -52q3 -5 9 -3l37 15q12 -9 25 -15l6 -39q1 -6 7 -6 h60q6 0 7 6l6 40q14 5 25 14l37 -15q6 -2 9 4l30 51q3 6 -1 10l-32 24q1 8 1 15z" />
-<glyph unicode="" horiz-adv-x="415" d="M366 171l45 -35q7 -6 3 -14l-43 -74q-4 -8 -13 -4l-53 21q-18 -13 -36 -21l-8 -56q-1 -9 -11 -9h-85q-9 0 -11 9l-8 56q-19 8 -36 21l-53 -21q-9 -3 -13 4l-43 74q-4 8 3 14l45 35q-1 12 -1 21t1 21l-45 35q-7 6 -3 14l43 74q5 8 13 4l53 -21q18 13 36 21l8 56q2 9 11 9 h85q10 0 11 -9l8 -56q19 -8 36 -21l53 21q9 3 13 -4l43 -74q4 -8 -3 -14l-45 -35q2 -12 2 -21t-2 -21zM207.5 117q30.5 0 52.5 22t22 53t-22 53t-52.5 22t-52.5 -22t-22 -53t22 -53t52.5 -22z" />
-<glyph unicode="" horiz-adv-x="384" d="M192 427l192 -86v-128q0 -89 -55 -162.5t-137 -93.5q-82 20 -137 93.5t-55 162.5v128zM149 85l171 171l-30 30l-141 -140l-55 55l-30 -30z" />
-<glyph unicode="" horiz-adv-x="384" d="M192 427l192 -86v-128q0 -89 -55 -162.5t-137 -93.5q-82 20 -137 93.5t-55 162.5v128zM192 192v188l-149 -66v-122h149v-191q59 19 100 72t49 119h-149z" />
-<glyph unicode="" horiz-adv-x="469" d="M346 256h102q9 0 15 -6.5t6 -14.5v-6l-54 -198q-4 -13 -15.5 -22t-26.5 -9h-277q-15 0 -26 9t-15 22l-54 198q-1 2 -1 6q0 8 6.5 14.5t14.5 6.5h103l93 140q6 9 17.5 9t17.5 -9zM171 256h128l-64 94zM234.5 85q17.5 0 30 12.5t12.5 30.5t-12.5 30.5t-30 12.5t-30 -12.5 t-12.5 -30.5t12.5 -30.5t30 -12.5z" />
-<glyph unicode="" horiz-adv-x="430" d="M213 256v64h-64v43h64v64h43v-64h64v-43h-64v-64h-43zM128 64q18 0 30.5 -12.5t12.5 -30t-12.5 -30t-30.5 -12.5t-30 12.5t-12 30t12 30t30 12.5zM341.5 64q17.5 0 30 -12.5t12.5 -30t-12.5 -30t-30 -12.5t-30 12.5t-12.5 30t12.5 30t30 12.5zM132 133q0 -5 5 -5h247v-43 h-256q-18 0 -30.5 12.5t-12.5 30.5q0 11 6 20l28 53l-76 162h-43v42h70l20 -42l20 -43l48 -101l3 -6h149l59 107l24 43l37 -21l-82 -149q-12 -22 -38 -22h-159l-19 -35v-3z" />
-<glyph unicode="" d="M128 64q18 0 30.5 -12.5t12.5 -30t-12.5 -30t-30.5 -12.5t-30 12.5t-12 30t12 30t30 12.5zM0 405h70l20 -42h315q9 0 15.5 -6.5t6.5 -15.5q0 -5 -3 -10l-76 -138q-12 -22 -38 -22h-159l-19 -35v-3q0 -5 5 -5h247v-43h-256q-18 0 -30.5 12.5t-12.5 30.5q0 11 6 20l28 53 l-76 162h-43v42zM341.5 64q17.5 0 30 -12.5t12.5 -30t-12.5 -30t-30 -12.5t-30 12.5t-12.5 30t12.5 30t30 12.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M151 115l55 56h-206v42h206l-55 56l30 30l107 -107l-107 -107zM341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v85h43v-85h298v298h-298v-85h-43v85q0 18 12.5 30.5t30.5 12.5h298z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 320h128v-43h-128v43zM0 64v43h384v-43h-384zM0 213h256v-42h-256v42z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 64v43h128v-43h-128zM0 320h384v-43h-384v43zM0 171v42h256v-42h-256z" />
-<glyph unicode="" horiz-adv-x="417" d="M282 364h-147l74 73zM135 20h147l-73 -73zM70 157h81l-41 111zM93 315h35l93 -246h-38l-20 53h-106l-19 -53h-38zM285 103h132v-34h-184v28l128 183h-127v35h179v-27z" />
-<glyph unicode="" horiz-adv-x="417" d="M282 364h-147l74 73zM135 20h147l-73 -73zM266 157h81l-40 111zM290 315h34l93 -246h-38l-19 53h-106l-20 -53h-38zM52 103h132v-34h-184v28l128 183h-127v35h179v-27z" />
-<glyph unicode="" horiz-adv-x="438" d="M213 107l-24 64h-121l-23 -64h-45l109 277h40l109 -277h-45zM85 213h88l-44 118zM408 201l30 -30l-202 -203l-109 109l30 30l79 -79z" />
-<glyph unicode="" d="M0 21v86h427v-86h-427zM43 85v-42h42v42h-42zM0 363h427v-86h-427v86zM85 299v42h-42v-42h42zM0 149v86h427v-86h-427zM43 213v-42h42v42h-42z" />
-<glyph unicode="" d="M363 299h64v-278h-171v86h-85v-86h-171v278h64v64h299v-64zM192 235v64h-64v-22h43v-21h-43v-64h64v21h-43v22h43zM299 192v107h-22v-43h-21v43h-21v-64h42v-43h22z" />
-<glyph unicode="" horiz-adv-x="384" d="M363 363v-43h-342v43h342zM384 149h-21v-128h-43v128h-85v-128h-214v128h-21v43l21 107h342l21 -107v-43zM192 64v85h-128v-85h128z" />
-<glyph unicode="" horiz-adv-x="341" d="M170.5 405q39.5 0 67 -3t53 -11.5t38 -26t12.5 -44.5v-203q0 -31 -21.5 -52.5t-52.5 -21.5l32 -32v-11h-256v11l32 32q-31 0 -53 21.5t-22 52.5v203q0 27 12.5 44.5t38 26t53 11.5t67 3zM74.5 85q13.5 0 23 9.5t9.5 23t-9.5 22.5t-23 9t-22.5 -9t-9 -22.5t9 -23 t22.5 -9.5zM149 213v107h-106v-107h106zM266.5 85q13.5 0 23 9.5t9.5 23t-9.5 22.5t-23 9t-22.5 -9t-9 -22.5t9 -23t22.5 -9.5zM299 213v107h-107v-107h107z" />
-<glyph unicode="" horiz-adv-x="469" d="M123 345l-30 -30l-39 38l30 30zM64 224v-43h-64v43h64zM256 436v-63h-43v63h43zM415 353l-38 -38l-30 30l38 38zM346 61l30 29l39 -38l-30 -30zM405 224h64v-43h-64v43zM235 331q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5 t90.5 37.5zM213 -31v63h43v-63h-43zM54 52l39 39l30 -30l-39 -39z" />
-<glyph unicode="" horiz-adv-x="469" d="M0 256v43h43v-43h-43zM0 171v42h43v-42h-43zM0 341q0 18 12.5 30.5t30.5 12.5v-43h-43zM171 0v43h42v-43h-42zM0 85v43h43v-43h-43zM43 0q-18 0 -30.5 12.5t-12.5 30.5h43v-43zM427 384q17 0 29.5 -12.5t12.5 -30.5v-85h-213v128h171zM427 85v43h42v-43h-42zM171 341v43 h42v-43h-42zM85 0v43h43v-43h-43zM85 341v43h43v-43h-43zM427 0v43h42q0 -18 -12.5 -30.5t-29.5 -12.5zM427 171v42h42v-42h-42zM256 0v43h43v-43h-43zM341 0v43h43v-43h-43z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 384q17 0 29.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-29.5 -12.5h-384q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h384zM427 43v213h-171v85h-213v-298h384z" />
-<glyph unicode="" horiz-adv-x="512" d="M469 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-320q-21 0 -34 19l-115 173l115 173q13 19 34 19h320zM405 115l-76 77l76 77l-30 30l-76 -77l-77 77l-30 -30l77 -77l-77 -77l30 -30l77 77l76 -77z" />
-<glyph unicode="" horiz-adv-x="512" d="M469 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-318q-23 0 -36 19l-115 173l115 173q13 19 34 19h320zM192 160q13 0 22.5 9.5t9.5 22.5t-9.5 22.5t-22.5 9.5t-22.5 -9.5t-9.5 -22.5t9.5 -22.5t22.5 -9.5zM298.5 160q13.5 0 23 9.5t9.5 22.5 t-9.5 22.5t-23 9.5t-22.5 -9.5t-9 -22.5t9 -22.5t22.5 -9.5zM405.5 160q13.5 0 22.5 9.5t9 22.5t-9 22.5t-22.5 9.5t-23 -9.5t-9.5 -22.5t9.5 -22.5t23 -9.5z" />
-<glyph unicode="" horiz-adv-x="512" d="M469 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-320q-21 0 -34 19l-115 173l115 173q13 19 34 19h320z" />
-<glyph unicode="" horiz-adv-x="469" d="M299 384q17 0 29.5 -12.5t12.5 -30.5v-213q0 -18 -12 -30l-141 -141l-22 23q-10 9 -10 22l1 7l20 98h-134q-18 0 -30.5 12.5t-12.5 29.5v2v41q0 8 3 16l64 150q11 26 40 26h192zM384 384h85v-256h-85v256z" />
-<glyph unicode="" horiz-adv-x="512" d="M256 320v-27q0 -6 -2 -11l-49 -113q-8 -20 -29 -20h-144q-13 0 -22.5 9.5t-9.5 22.5v139q0 13 9 23l106 105l17 -17q7 -7 7 -17l-1 -5l-14 -68h111q8 0 14.5 -6t6.5 -15zM480 235q13 0 22.5 -9.5t9.5 -22.5v-139q0 -13 -9 -23l-106 -105l-17 17q-7 7 -7 17l1 5l14 68 h-111q-8 0 -14.5 6t-6.5 15v27q0 6 2 11l49 113q8 20 29 20h144z" />
-<glyph unicode="" horiz-adv-x="469" d="M0 0v256h85v-256h-85zM469 235v-2v-41q0 -8 -3 -16l-64 -150q-11 -26 -39 -26h-192q-18 0 -30.5 12.5t-12.5 30.5v213q0 18 13 30l140 141l23 -23q9 -9 9 -22l-1 -7l-20 -98h135q17 0 29.5 -12.5t12.5 -29.5z" />
-<glyph unicode="" d="M384 192q0 -18 12.5 -30.5t30.5 -12.5v-85q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v85q18 0 30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5v85q0 18 12.5 30.5t30.5 12.5h341q18 0 30.5 -12.5t12.5 -30.5v-85q-18 0 -30.5 -12.5t-12.5 -30.5z M290 90l-24 87l71 58l-91 5l-33 84l-33 -84l-90 -5l70 -58l-23 -87l76 49z" />
-<glyph unicode="" horiz-adv-x="469" d="M298.5 363q70.5 0 120.5 -50t50 -121t-50 -121t-120.5 -50t-120.5 50t-50 121t50 121t120.5 50zM299 64q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5zM43 192q0 -41 23.5 -74t61.5 -47v-44q-56 14 -92 60t-36 105 t36 105t92 60v-44q-38 -14 -61.5 -47t-23.5 -74z" />
-<glyph unicode="" horiz-adv-x="469" d="M235 192q0 48 34.5 82.5t82.5 34.5t82.5 -34.5t34.5 -82.5h-234zM235 192q0 -48 -35 -82.5t-83 -34.5t-82.5 34.5t-34.5 82.5h235zM235 192q-48 0 -83 34.5t-35 82.5t35 83t83 35v-235zM235 192q48 0 82.5 -34.5t34.5 -82.5t-34.5 -83t-82.5 -35v235z" />
-<glyph unicode="" horiz-adv-x="341" d="M341 235q0 -30 -18 -52.5t-46 -30.5v-24h64q0 -29 -18 -52t-46 -30v-25q0 -8 -6 -14.5t-15 -6.5h-171q-8 0 -14.5 6.5t-6.5 14.5v25q-28 7 -46 30t-18 52h64v24q-28 8 -46 30.5t-18 52.5h64v24q-28 7 -46 30t-18 52h64v22q0 8 6.5 14.5t14.5 6.5h171q9 0 15 -6.5t6 -14.5 v-22h64q0 -29 -18 -52t-46 -30v-24h64zM170.5 43q17.5 0 30 12.5t12.5 30t-12.5 30t-30 12.5t-30 -12.5t-12.5 -30t12.5 -30t30 -12.5zM170.5 149q17.5 0 30 12.5t12.5 30.5t-12.5 30.5t-30 12.5t-30 -12.5t-12.5 -30.5t12.5 -30.5t30 -12.5zM170.5 256q17.5 0 30 12.5 t12.5 30t-12.5 30t-30 12.5t-30 -12.5t-12.5 -30t12.5 -30t30 -12.5z" />
-<glyph unicode="" horiz-adv-x="469" d="M253 127l-16 -44l-66 66l-107 -106l-30 30l108 107q-40 44 -63 97h42q20 -39 50 -71q45 50 67 114h-238v43h149v42h43v-42h149v-43h-62q-24 -78 -79 -139l-1 -1zM373 235l96 -256h-42l-24 64h-102l-24 -64h-42l96 256h42zM317 85h70l-35 93z" />
-<glyph unicode="" d="M213 78l137 219h-273zM213 -2l-213 341h427z" />
-<glyph unicode="" d="M213 282l-136 -218h273zM213 363l214 -342h-427z" />
-<glyph unicode="" horiz-adv-x="469" d="M405 277l64 -85v-107h-42q0 -26 -19 -45t-45.5 -19t-45 19t-18.5 45h-128q0 -26 -19 -45t-45.5 -19t-45 19t-18.5 45h-43v235q0 18 12.5 30.5t30.5 12.5h298v-86h64zM106.5 53q13.5 0 23 9.5t9.5 23t-9.5 22.5t-23 9t-22.5 -9t-9 -22.5t9 -23t22.5 -9.5zM395 245h-54v-53 h95zM362.5 53q13.5 0 23 9.5t9.5 23t-9.5 22.5t-23 9t-22.5 -9t-9 -22.5t9 -23t22.5 -9.5z" />
-<glyph unicode="" d="M420 207q7 -6 7 -15t-7 -15l-192 -192q-6 -6 -15 -6t-15 6l-192 192q-6 6 -6 15t6 15l192 192q6 6 15 6t15 -6zM256 139l75 74l-75 75v-53h-107q-9 0 -15 -6.5t-6 -15.5v-85h43v64h85v-53z" />
-<glyph unicode="" d="M43 363v-150h-43v150q0 17 12.5 29.5t30.5 12.5h149v-42h-149zM171 171l63 -79l43 57l64 -85h-256zM320 266.5q0 -13.5 -9.5 -22.5t-22.5 -9t-22.5 9t-9.5 22.5t9.5 23t22.5 9.5t22.5 -9.5t9.5 -23zM384 405q18 0 30.5 -12.5t12.5 -29.5v-150h-43v150h-149v42h149z M384 21v150h43v-150q0 -17 -12.5 -29.5t-30.5 -12.5h-149v42h149zM43 171v-150h149v-42h-149q-18 0 -30.5 12.5t-12.5 29.5v150h43z" />
-<glyph unicode="" horiz-adv-x="341" d="M110 89l121 121q25 -25 25 -60.5t-25 -60.5t-60.5 -25t-60.5 25zM299 405q17 0 29.5 -12.5t12.5 -29.5v-342q0 -17 -12.5 -29.5t-29.5 -12.5h-256q-18 0 -30.5 12.5t-12.5 29.5v342q0 17 12.5 29.5t30.5 12.5h256zM128 363q-9 0 -15 -6.5t-6 -15t6 -15t15 -6.5t15 6.5 t6 15t-6 15t-15 6.5zM64 363q-9 0 -15 -6.5t-6 -15t6 -15t15 -6.5t15 6.5t6 15t-6 15t-15 6.5zM171 21q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5z" />
-<glyph unicode="" horiz-adv-x="341" d="M0 363h341v-342h-341v342zM43 277v-213h256v213h-256z" />
-<glyph unicode="" horiz-adv-x="341" d="M341 21h-341v86h341v-86z" />
-<glyph unicode="" horiz-adv-x="341" d="M0 277h85v86h256v-256h-85v-86h-256v256zM256 277v-128h43v171h-171v-43h128zM43 192v-128h170v128h-170z" />
-<glyph unicode="" horiz-adv-x="470" d="M464 43q6 -5 6 -14.5t-8 -15.5l-49 -49q-7 -7 -15.5 -7t-14.5 7l-194 194q-37 -15 -77.5 -6.5t-70.5 38.5q-31 32 -39 75.5t12 82.5l94 -92l64 64l-92 92q38 18 82 10.5t76 -38.5q30 -30 38.5 -70.5t-6.5 -76.5z" />
-<glyph unicode="" horiz-adv-x="373" d="M267 149l106 -106l-32 -32l-106 106v17l-6 6q-39 -33 -90 -33q-58 0 -98.5 40.5t-40.5 98t40.5 98t98 40.5t98 -40.5t40.5 -98.5q0 -51 -33 -90l6 -6h17zM139 149q40 0 68 28t28 68t-28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28zM192 235h-43v-43h-21v43h-43v21h43v43 h21v-43h43v-21z" />
-<glyph unicode="" horiz-adv-x="373" d="M267 149l106 -106l-32 -32l-106 106v17l-6 6q-39 -33 -90 -33q-58 0 -98.5 40.5t-40.5 98t40.5 98t98 40.5t98 -40.5t40.5 -98.5q0 -51 -33 -90l6 -6h17zM139 149q40 0 68 28t28 68t-28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28zM85 256h107v-21h-107v21z" />
-<glyph unicode="" d="M192 128h43v-43h-43v43zM192 299h43v-128h-43v128zM213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM213.5 21q70.5 0 120.5 50t50 121t-50 121t-120.5 50t-120.5 -50t-50 -121t50 -121t120.5 -50z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM235 85v43h-43v-43h43zM235 171v128h-43v-128h43z" />
-<glyph unicode="" horiz-adv-x="384" d="M272 384l112 -112v-160l-112 -112h-160l-112 112v160l112 112h160zM192 79q12 0 20 8t8 19.5t-8 19.5t-20 8t-20 -8t-8 -19.5t8 -19.5t20 -8zM213 171v128h-42v-128h42z" />
-<glyph unicode="" horiz-adv-x="469" d="M469 192l-52 -59l8 -79l-77 -17l-41 -68l-72 31l-73 -31l-40 67l-77 18l7 79l-52 59l52 60l-7 78l77 17l40 68l73 -31l72 31l41 -68l77 -17l-8 -79zM256 85v43h-43v-43h43zM256 171v128h-43v-128h43z" />
-<glyph unicode="" horiz-adv-x="469" d="M0 0l235 405l234 -405h-469zM256 64v43h-43v-43h43zM256 149v86h-43v-86h43z" />
-<glyph unicode="" d="M192 64v43h43v-43h-43zM213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM213.5 21q70.5 0 120.5 50t50 121t-50 121t-120.5 50t-120.5 -50t-50 -121t50 -121t120.5 -50zM213.5 320q35.5 0 60.5 -25t25 -60 q0 -18 -10 -32.5t-22 -23t-22 -22t-10 -29.5h-43q0 23 10 39.5t22 24t22 18.5t10 25q0 17 -12.5 29.5t-30 12.5t-30 -12.5t-12.5 -29.5h-43q0 35 25 60t60.5 25z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM235 43v42h-43v-42h43zM279 208q20 20 20 48q0 35 -25 60t-60.5 25t-60.5 -25t-25 -60h43q0 18 12.5 30.5t30 12.5t30 -12.5t12.5 -30.5t-13 -30l-26 -27 q-25 -25 -25 -60v-11h43q0 22 5.5 34.5t19.5 25.5z" />
-<glyph unicode="" d="M192 85v128h43v-128h-43zM213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM213.5 21q70.5 0 120.5 50t50 121t-50 121t-120.5 50t-120.5 -50t-50 -121t50 -121t120.5 -50zM192 256v43h43v-43h-43z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM235 85v128h-43v-128h43zM235 256v43h-43v-43h43z" />
-<glyph unicode="" horiz-adv-x="447" d="M118 372q-33 -24 -53 -60t-22 -77h-43q2 50 25.5 94t62.5 73zM404 235q-2 41 -22.5 77t-53.5 60l31 30q39 -29 62 -73t26 -94h-43zM362 224v-117l43 -43v-21h-363v21l43 43v117q0 49 30 86.5t76 48.5v14q0 14 9.5 23t23 9t22.5 -9t9 -23v-14q47 -11 77 -48.5t30 -86.5z M223 -21q-17 0 -29.5 12.5t-12.5 29.5h85q0 -8 -3 -16q-9 -21 -31 -25q-4 -1 -9 -1z" />
-<glyph unicode="" horiz-adv-x="384" d="M150 0h84q0 -18 -12 -30.5t-30 -12.5t-30 12.5t-12 30.5zM339 89l45 -45v-23h-384v23l45 45v124q0 52 32 91.5t81 51.5v15q0 14 10 24t24 10t24 -10t10 -24v-15q49 -12 81 -51.5t32 -91.5v-124zM277 170v43h-64v64h-42v-64h-64v-43h64v-64h42v64h64z" />
-<glyph unicode="" horiz-adv-x="363" d="M181.5 -21q-17.5 0 -30 12.5t-12.5 29.5h85q0 -17 -12.5 -29.5t-30 -12.5zM320 107l43 -43v-21h-363v21l43 43v117q0 49 30 86.5t76 48.5v14q0 14 9.5 23t23 9t22.5 -9t9 -23v-14q47 -11 77 -48.5t30 -86.5v-117zM277 85v139q0 40 -28 68t-68 28t-68 -28t-28 -68v-139 h192z" />
-<glyph unicode="" horiz-adv-x="384" d="M181.5 -21q-17.5 0 -30 12.5t-12.5 29.5h85q0 -17 -12.5 -29.5t-30 -12.5zM320 224v-79l-202 202q17 8 31 12v14q0 14 9.5 23t23 9t22.5 -9t9 -23v-14q47 -11 77 -48.5t30 -86.5zM314 43h-314v21l43 43v117q0 38 19 71l-62 62l27 27l357 -357l-27 -27z" />
-<glyph unicode="" horiz-adv-x="363" d="M181.5 -21q-17.5 0 -30 12.5t-12.5 29.5h85q0 -17 -12.5 -29.5t-30 -12.5zM320 107l43 -43v-21h-363v21l43 43v117q0 49 30 86.5t76 48.5v14q0 14 9.5 23t23 9t22.5 -9t9 -23v-14q47 -11 77 -48.5t30 -86.5v-117zM235 239v38h-107v-38h60l-60 -73v-38h107v38h-60z" />
-<glyph unicode="" horiz-adv-x="363" d="M181.5 -21q-17.5 0 -30 12.5t-12.5 29.5h85q0 -17 -12.5 -29.5t-30 -12.5zM320 107l43 -43v-21h-363v21l43 43v117q0 49 30 86.5t76 48.5v14q0 14 9.5 23t23 9t22.5 -9t9 -23v-14q47 -11 77 -48.5t30 -86.5v-117z" />
-<glyph unicode="" horiz-adv-x="469" d="M298.5 192q-35.5 0 -60.5 25t-25 60.5t25 60.5t60.5 25t60.5 -25t25 -60.5t-25 -60.5t-60.5 -25zM107 235h64v-43h-64v-64h-43v64h-64v43h64v64h43v-64zM298.5 149q31.5 0 69.5 -9t69.5 -29.5t31.5 -46.5v-43h-341v43q0 26 31.5 46.5t69.5 29.5t69.5 9z" />
-<glyph unicode="" horiz-adv-x="512" d="M448 277l-64 -42l-64 42v22l64 -43l64 43v-22zM469 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-426q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h426zM170.5 320q-26.5 0 -45 -18.5t-18.5 -45.5t18.5 -45.5t45 -18.5t45.5 18.5 t19 45.5t-19 45.5t-45.5 18.5zM299 64v21q0 20 -24 36t-52.5 23t-52 7t-52 -7t-52 -23t-23.5 -36v-21h256zM469 192v128h-170v-128h170z" />
-<glyph unicode="" horiz-adv-x="384" d="M192 187q-20 0 -34 14t-14 34t14 34t34 14t34 -14t14 -34t-14 -34t-34 -14zM288 101v-16h-192v16q0 22 33 35t63 13t63 -13t33 -35zM341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5 t30.5 12.5h298zM341 43v298h-298v-298h298z" />
-<glyph unicode="" horiz-adv-x="512" d="M469 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-426q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h426zM170.5 320q-26.5 0 -45 -18.5t-18.5 -45.5t18.5 -45.5t45 -18.5t45.5 18.5t19 45.5t-19 45.5t-45.5 18.5zM299 64v21 q0 20 -24 36t-52.5 23t-52 7t-52 -7t-52 -23t-23.5 -36v-21h256zM381 149q-8 22 -8 43t8 43h35l32 42l-42 43q-44 -33 -59 -85q-6 -22 -6 -43t6 -43q15 -52 59 -85l42 43l-32 42h-35z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 341q0 18 12.5 30.5t30.5 12.5h298q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298zM256 256q0 27 -18.5 45.5t-45.5 18.5t-45.5 -18.5t-18.5 -45.5t18.5 -45.5t45.5 -18.5t45.5 18.5t18.5 45.5zM64 85v-21h256 v21q0 20 -23.5 36t-52.5 23t-52 7t-52 -7t-52.5 -23t-23.5 -36z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h21v43h43v-43h170v43h43v-43h21zM192 320q-27 0 -45.5 -18.5t-18.5 -45.5t18.5 -45.5t45.5 -18.5t45.5 18.5t18.5 45.5 t-18.5 45.5t-45.5 18.5zM320 64v21q0 20 -23.5 36t-52.5 23t-52 7t-52 -7t-52.5 -23t-23.5 -36v-21h256z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM213.5 341q-26.5 0 -45.5 -18.5t-19 -45t19 -45.5t45.5 -19t45 19t18.5 45.5t-18.5 45t-45 18.5zM213.5 38q39.5 0 73 18.5t54.5 50.5q0 20 -23.5 35.5 t-52 23t-52 7.5t-52 -7.5t-52 -23t-24.5 -35.5q21 -32 55 -50.5t73.5 -18.5z" />
-<glyph unicode="" horiz-adv-x="341" d="M170.5 322q-18.5 0 -31.5 -13t-13 -31.5t13 -31.5t31.5 -13t31.5 13t13 31.5t-13 31.5t-31.5 13zM171 130q-44 0 -87 -16.5t-43 -28.5v-23h260v23q0 12 -43 28.5t-87 16.5zM170.5 363q35.5 0 60.5 -25t25 -60.5t-25 -60.5t-60.5 -25t-60.5 25t-25 60.5t25 60.5t60.5 25z M170.5 171q31.5 0 69.5 -9t69.5 -29.5t31.5 -47.5v-64h-341v64q0 27 31.5 47.5t69.5 29.5t69.5 9z" />
-<glyph unicode="" horiz-adv-x="341" d="M170.5 192q-35.5 0 -60.5 25t-25 60.5t25 60.5t60.5 25t60.5 -25t25 -60.5t-25 -60.5t-60.5 -25zM170.5 149q31.5 0 69.5 -9t69.5 -29.5t31.5 -46.5v-43h-341v43q0 26 31.5 46.5t69.5 29.5t69.5 9z" />
-<glyph unicode="" horiz-adv-x="512" d="M171 235v-43h-64v-64h-43v64h-64v43h64v64h43v-64h64zM384 213q-10 0 -19 3q19 28 19 61q0 34 -19 61q9 3 19 3q27 0 45.5 -18.5t18.5 -45t-18.5 -45.5t-45.5 -19zM277.5 213q-26.5 0 -45.5 19t-19 45.5t19 45t45.5 18.5t45 -18.5t18.5 -45t-18.5 -45.5t-45 -19zM419 167 q37 -6 65 -22t28 -38v-43h-64v43q0 34 -29 60zM277 171q40 0 84 -18t44 -46v-43h-256v43q0 28 44 46t84 18z" />
-<glyph unicode="" d="M309 192q-22 0 -37.5 15.5t-15.5 37.5t15.5 38t37.5 16t37.5 -16t15.5 -38t-15.5 -37.5t-37.5 -15.5zM149.5 213q-26.5 0 -45.5 19t-19 45.5t19 45t45.5 18.5t45 -18.5t18.5 -45t-18.5 -45.5t-45 -19zM309.5 149q36.5 0 77 -16t40.5 -42v-48h-235v48q0 26 40.5 42t77 16z M149 171q22 0 51 -6q-51 -28 -51 -74v-48h-149v53q0 23 27.5 41t61 26t60.5 8z" />
-<glyph unicode="" d="M384 448v-43h-341v43h341zM43 -64v43h341v-43h-341zM384 363q18 0 30.5 -12.5t12.5 -30.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h341zM213 304q-20 0 -34 -14t-14 -34t14 -34t34 -14t34 14t14 34t-14 34 t-34 14zM320 85v32q0 24 -36.5 39t-70 15t-70 -15t-36.5 -39v-32h213z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 341h42v-298h-42v298zM341 43v298h43v-298h-43zM277 341q9 0 15.5 -6t6.5 -15v-256q0 -9 -6.5 -15t-15.5 -6h-256q-8 0 -14.5 6t-6.5 15v256q0 9 6.5 15t14.5 6h256zM149 283q-20 0 -34 -14t-14 -34t14 -34t34 -14t34 14t14 34t-14 34t-34 14zM245 85v16q0 22 -33 35 t-63 13t-63 -13t-33 -35v-16h192z" />
-<glyph unicode="" horiz-adv-x="469" d="M331 171q25 0 56 -7.5t56.5 -24t25.5 -38.5v-58h-469v58q0 22 25.5 38.5t56.5 24t57 7.5q50 0 96 -22q46 22 96 22zM245 75v26q0 10 -35 24t-71.5 14t-71.5 -14t-35 -24v-26h213zM437 75v26q0 10 -35 24t-71 14q-32 0 -65 -12q11 -12 11 -26v-26h160zM139 192 q-31 0 -53 22t-22 53t22 52.5t53 21.5t52.5 -21.5t21.5 -52.5t-21.5 -53t-52.5 -22zM138.5 309q-17.5 0 -30 -12.5t-12.5 -30t12.5 -30t30 -12.5t30 12.5t12.5 30t-12.5 30t-30 12.5zM331 192q-31 0 -53 22t-22 53t22 52.5t53 21.5t52.5 -21.5t21.5 -52.5t-21.5 -53 t-52.5 -22zM330.5 309q-17.5 0 -30 -12.5t-12.5 -30t12.5 -30t30 -12.5t30 12.5t12.5 30t-12.5 30t-30 12.5z" />
-<glyph unicode="" horiz-adv-x="469" d="M320 213q-27 0 -45.5 19t-18.5 45.5t18.5 45t45.5 18.5t45.5 -18.5t18.5 -45t-18.5 -45.5t-45.5 -19zM149.5 213q-26.5 0 -45.5 19t-19 45.5t19 45t45.5 18.5t45 -18.5t18.5 -45t-18.5 -45.5t-45 -19zM149.5 171q27.5 0 60.5 -8t61 -26t28 -41v-53h-299v53q0 23 27.5 41 t61 26t61 8zM320 171q28 0 61 -8t60.5 -26t27.5 -41v-53h-128v53q0 43 -42 74q13 1 21 1z" />
-<glyph unicode="" d="M149 197q11 0 19 -7.5t8 -18.5t-8 -19t-19 -8t-18.5 8t-7.5 19t7.5 18.5t18.5 7.5zM277 197q11 0 19 -7.5t8 -18.5t-8 -19t-19 -8t-18.5 8t-7.5 19t7.5 18.5t18.5 7.5zM213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5 t62.5 150.5t151 62.5zM213.5 21q70.5 0 120.5 50t50 121q0 24 -7 48q-24 -5 -48 -5q-53 0 -99 24t-75 66q-33 -80 -111 -115q-1 -10 -1 -18q0 -71 50 -121t120.5 -50z" />
-<glyph unicode="" horiz-adv-x="192" d="M128 -21h-64v128h-64l54 162q4 14 15.5 22t25.5 8h2q14 0 25 -8t16 -22l54 -162h-64v-128zM96 320q-18 0 -30.5 12.5t-12.5 30t12.5 30t30.5 12.5t30.5 -12.5t12.5 -30t-12.5 -30t-30.5 -12.5z" />
-<glyph unicode="" horiz-adv-x="149" d="M32 -21v160h-32v117q0 18 12.5 30.5t30.5 12.5h64q17 0 29.5 -12.5t12.5 -30.5v-117h-32v-160h-85zM74.5 320q-17.5 0 -30 12.5t-12.5 30t12.5 30t30 12.5t30 -12.5t12.5 -30t-12.5 -30t-30 -12.5z" />
-<glyph unicode="" horiz-adv-x="363" d="M32 -21v160h-32v117q0 18 12.5 30.5t30.5 12.5h64q17 0 29.5 -12.5t12.5 -30.5v-117h-32v-160h-85zM299 -21h-64v128h-64l54 162q4 14 15.5 22t24.5 8h3q14 0 25 -8t15 -22l55 -162h-64v-128zM74.5 320q-17.5 0 -30 12.5t-12.5 30t12.5 30t30 12.5t30 -12.5t12.5 -30 t-12.5 -30t-30 -12.5zM266.5 320q-17.5 0 -30 12.5t-12.5 30t12.5 30t30 12.5t30 -12.5t12.5 -30t-12.5 -30t-30 -12.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M192 405q18 0 30.5 -12.5t12.5 -30t-12.5 -30t-30.5 -12.5t-30.5 12.5t-12.5 30t12.5 30t30.5 12.5zM384 256h-128v-277h-43v128h-42v-128h-43v277h-128v43h384v-43z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM213.5 21q70.5 0 120.5 50t50 121t-50 121t-120.5 50t-120.5 -50t-50 -121t50 -121t120.5 -50zM288 213q-13 0 -22.5 9.5t-9.5 23t9.5 22.5t22.5 9t22.5 -9 t9.5 -22.5t-9.5 -23t-22.5 -9.5zM138.5 213q-13.5 0 -22.5 9.5t-9 23t9 22.5t22.5 9t23 -9t9.5 -22.5t-9.5 -23t-23 -9.5zM213.5 149q36.5 0 66 -20.5t42.5 -53.5h-218q13 33 43 53.5t66.5 20.5z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM213.5 21q70.5 0 120.5 50t50 121t-50 121t-120.5 50t-120.5 -50t-50 -121t50 -121t120.5 -50zM288 213q-13 0 -22.5 9.5t-9.5 23t9.5 22.5t22.5 9t22.5 -9 t9.5 -22.5t-9.5 -23t-22.5 -9.5zM138.5 213q-13.5 0 -22.5 9.5t-9 23t9 22.5t22.5 9t23 -9t9.5 -22.5t-9.5 -23t-23 -9.5zM213.5 75q-36.5 0 -66.5 20.5t-43 53.5h218q-13 -33 -42.5 -53.5t-66 -20.5z" />
-<glyph unicode="" horiz-adv-x="343" d="M226.5 331q-17.5 0 -30.5 12.5t-13 30t13 30t30.5 12.5t30 -12.5t12.5 -30t-12.5 -30t-30 -12.5zM149 35l-149 29l9 43l104 -21l34 173l-38 -15v-73h-43v100l111 47q3 0 8.5 1t8.5 1q22 0 36 -21l22 -34q13 -23 37.5 -37t53.5 -14v-43q-71 0 -117 53l-13 -64l45 -42v-160 h-43v128l-44 42z" />
-<glyph unicode="" horiz-adv-x="277" d="M160 331q-18 0 -30.5 12.5t-12.5 30t12.5 30t30.5 12.5t30.5 -12.5t12.5 -30t-12.5 -30t-30.5 -12.5zM81 258l-60 -301h45l39 171l44 -43v-128h43v160l-45 43l13 64q46 -53 117 -53v42q-29 0 -53.5 14.5t-37.5 37.5l-22 34q-14 21 -36 21q-3 0 -8.5 -1t-8.5 -1l-111 -47 v-100h43v72l38 15v0z" />
-<glyph unicode="" horiz-adv-x="469" d="M171 107q-27 0 -45.5 18.5t-18.5 45.5q0 24 16.5 42.5t40.5 20.5h3q9 20 27.5 31.5t40.5 11.5q28 0 48.5 -18t24.5 -46h1q22 0 38 -15.5t16 -37.5t-16 -37.5t-38 -15.5h-138zM427 384q17 0 29.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-29.5 -12.5h-384 q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h384zM427 42v300h-384v-300h384z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM309 107q22 0 38 15.5t16 37.5t-16 37.5t-38 15.5h-10q0 36 -25 61t-61 25q-29 0 -52 -18.5t-30 -46.5l-3 1q-27 0 -45.5 -19t-18.5 -45.5t18.5 -45 t45.5 -18.5h181z" />
-<glyph unicode="" horiz-adv-x="512" d="M413 234q42 -3 70.5 -33.5t28.5 -72.5q0 -44 -31.5 -75.5t-75.5 -31.5h-277q-53 0 -90.5 37.5t-37.5 90.5q0 50 33 86t81 41q20 40 58 63.5t84 23.5q58 0 102 -37t55 -92zM213 85l141 141l-30 30l-111 -110l-44 44l-30 -30z" />
-<glyph unicode="" horiz-adv-x="512" d="M413 234q42 -3 70.5 -33.5t28.5 -72.5q0 -44 -31.5 -75.5t-75.5 -31.5h-277q-53 0 -90.5 37.5t-37.5 90.5q0 50 33 86t81 41q20 40 58 63.5t84 23.5q58 0 102 -37t55 -92zM363 171h-64v85h-86v-85h-64l107 -107z" />
-<glyph unicode="" horiz-adv-x="512" d="M413 234q42 -3 70.5 -33.5t28.5 -72.5q0 -55 -45 -87l-31 31q33 19 33 56q0 27 -18.5 45.5t-45.5 18.5h-32v11q0 48 -34 82.5t-83 34.5q-29 0 -54 -13l-32 31q40 25 86 25q58 0 102 -37t55 -92zM64 336l27 27l357 -357l-27 -27l-43 42h-250q-53 0 -90.5 37.5t-37.5 90.5 q0 52 35.5 89t87.5 39zM165 235h-37q-35 0 -60 -25t-25 -60.5t25 -60.5t60 -25h208z" />
-<glyph unicode="" horiz-adv-x="512" d="M413 234q42 -3 70.5 -33.5t28.5 -72.5q0 -44 -31.5 -75.5t-75.5 -31.5h-277q-53 0 -90.5 37.5t-37.5 90.5q0 50 33 86t81 41q21 40 59 63.5t83 23.5q58 0 102 -37t55 -92zM405 64q27 0 45.5 19t18.5 45t-18.5 45t-45.5 19h-32v11q0 48 -34.5 82.5t-82.5 34.5 q-58 0 -94 -47q41 -12 67.5 -46t26.5 -78h-43q0 36 -25 61t-60 25t-60 -25t-25 -60.5t25 -60.5t60 -25h277z" />
-<glyph unicode="" horiz-adv-x="512" d="M413 234q42 -3 70.5 -33.5t28.5 -72.5q0 -44 -31.5 -75.5t-75.5 -31.5h-277q-53 0 -90.5 37.5t-37.5 90.5q0 50 33 86t81 41q20 40 58 63.5t84 23.5q58 0 102 -37t55 -92zM405 64q27 0 45.5 18.5t18.5 45.5t-18.5 45.5t-45.5 18.5h-32v11q0 48 -34 82.5t-83 34.5 q-40 0 -71 -24t-42 -61h-15q-35 0 -60 -25t-25 -60.5t25 -60.5t60 -25h277z" />
-<glyph unicode="" horiz-adv-x="512" d="M413 234q42 -3 70.5 -33.5t28.5 -72.5q0 -44 -31.5 -75.5t-75.5 -31.5h-277q-53 0 -90.5 37.5t-37.5 90.5q0 50 33 86t81 41q20 40 58 63.5t84 23.5q58 0 102 -37t55 -92zM299 171h64l-107 106l-107 -106h64v-86h86v86z" />
-<glyph unicode="" horiz-adv-x="512" d="M413 234q42 -3 70.5 -33.5t28.5 -72.5q0 -44 -31.5 -75.5t-75.5 -31.5h-277q-53 0 -90.5 37.5t-37.5 90.5q0 50 33 86t81 41q20 40 58 63.5t84 23.5q58 0 102 -37t55 -92z" />
-<glyph unicode="" horiz-adv-x="299" d="M299 256l-150 -149l-149 149h85v128h128v-128h86zM0 64h299v-43h-299v43z" />
-<glyph unicode="" horiz-adv-x="341" d="M213 405l128 -128v-256q0 -17 -12.5 -29.5t-29.5 -12.5h-257q-17 0 -29.5 12.5t-12.5 29.5v342q0 17 12.5 29.5t30.5 12.5h170zM256 107v42h-64v64h-43v-64h-64v-42h64v-64h43v64h64zM192 256h117l-117 117v-117z" />
-<glyph unicode="" horiz-adv-x="341" d="M213 405l128 -128v-256q0 -17 -12.5 -29.5t-29.5 -12.5h-257q-17 0 -29.5 12.5t-12.5 29.5v342q0 17 12.5 29.5t30.5 12.5h170zM256 64v43h-171v-43h171zM256 149v43h-171v-43h171zM192 256h117l-117 117v-117z" />
-<glyph unicode="" horiz-adv-x="341" d="M43 405h170l128 -128v-256q0 -17 -12.5 -29.5t-29.5 -12.5h-257q-17 0 -29.5 12.5t-12.5 29.5v342q0 17 12.5 29.5t30.5 12.5zM192 256h117l-117 117v-117z" />
-<glyph unicode="" d="M384 320q18 0 30.5 -12.5t12.5 -30.5v-213q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h128l42 -43h171zM384 64v213h-341v-213h341z" />
-<glyph unicode="" d="M384 320q18 0 30.5 -12.5t12.5 -30.5v-213q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h128l42 -43h171zM277.5 256q-17.5 0 -30 -12.5t-12.5 -30t12.5 -30t30 -12.5t30 12.5t12.5 30t-12.5 30t-30 12.5zM363 85v22 q0 19 -29.5 30.5t-56 11.5t-56 -11.5t-29.5 -30.5v-22h171z" />
-<glyph unicode="" d="M384 320q18 0 30.5 -12.5t12.5 -30.5v-213q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h128l42 -43h171zM247 64l-20 87l67 58l-89 8l-34 82l-35 -82l-89 -8l68 -58l-21 -87l77 45z" />
-<glyph unicode="" d="M43 363h128l42 -43h171q18 0 30.5 -12.5t12.5 -30.5v-213q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5zM276 256l-25 -60l-65 -5l49 -43l-15 -63l56 33l56 -33l-14 63l49 43l-65 5z" />
-<glyph unicode="" d="M171 363l42 -43h171q18 0 30.5 -12.5t12.5 -30.5v-213q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h128z" />
-<glyph unicode="" horiz-adv-x="299" d="M139 256h32v-128h-32v128zM85 256q10 0 16 -6.5t6 -14.5v-11h-75v-64h43v32h32v-43q0 -8 -6 -14.5t-16 -6.5h-64q-9 0 -15 6.5t-6 14.5v86q0 8 6 14.5t15 6.5h64zM299 224h-64v-21h42v-32h-42v-43h-32v128h96v-32z" />
-<glyph unicode="" horiz-adv-x="299" d="M0 363h299v-43h-299v43zM0 149l149 150l150 -150h-86v-128h-128v128h-85z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 384h384v-384h-384v384zM171 43v128h-128v-128h128zM171 213v128h-128v-128h128zM341 43v128h-128v-128h128zM341 213v128h-128v-128h128z" />
-<glyph unicode="" horiz-adv-x="384" d="M128 213v-42h-43v42h43zM213 128v-43h-42v43h42zM128 384v-43h-43v43h43zM213 213v-42h-42v42h42zM43 384v-43h-43v43h43zM213 299v-43h-42v43h42zM299 213v-42h-43v42h43zM213 384v-43h-42v43h42zM299 384v-43h-43v43h43zM341 171v42h43v-42h-43zM341 85v43h43v-43h-43z M43 299v-43h-43v43h43zM341 384h43v-43h-43v43zM341 256v43h43v-43h-43zM43 213v-42h-43v42h43zM0 0v43h384v-43h-384zM43 128v-43h-43v43h43z" />
-<glyph unicode="" horiz-adv-x="384" d="M85 341v43h43v-43h-43zM85 171v42h43v-42h-43zM85 0v43h43v-43h-43zM171 85v43h42v-43h-42zM171 0v43h42v-43h-42zM0 0v43h43v-43h-43zM0 85v43h43v-43h-43zM0 171v42h43v-42h-43zM0 256v43h43v-43h-43zM0 341v43h43v-43h-43zM171 171v42h42v-42h-42zM341 85v43h43v-43 h-43zM341 171v42h43v-42h-43zM341 0v43h43v-43h-43zM341 256v43h43v-43h-43zM171 256v43h42v-43h-42zM341 384h43v-43h-43v43zM171 341v43h42v-43h-42zM256 0v43h43v-43h-43zM256 171v42h43v-42h-43zM256 341v43h43v-43h-43z" />
-<glyph unicode="" horiz-adv-x="512" d="M379 299l-214 -214h-80v80l214 214zM442 362l-42 -42l-80 80l42 42q6 6 15 6t15 -6l50 -50q6 -6 6 -15t-6 -15zM0 21h512v-85h-512v85z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 0v43h43v-43h-43zM43 299v-43h-43v43h43zM0 85v43h43v-43h-43zM85 0v43h43v-43h-43zM43 384v-43h-43v43h43zM128 384v-43h-43v43h43zM299 384v-43h-43v43h43zM213 299v-43h-42v43h42zM213 384v-43h-42v43h42zM341 85v43h43v-43h-43zM171 0v43h42v-43h-42zM0 171v42h384 v-42h-384zM341 384h43v-43h-43v43zM341 256v43h43v-43h-43zM171 85v43h42v-43h-42zM256 0v43h43v-43h-43zM341 0v43h43v-43h-43z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 0v43h43v-43h-43zM85 0v43h43v-43h-43zM43 299v-43h-43v43h43zM0 85v43h43v-43h-43zM128 384v-43h-43v43h43zM43 384v-43h-43v43h43zM299 384v-43h-43v43h43zM341 256v43h43v-43h-43zM341 384h43v-43h-43v43zM256 0v43h43v-43h-43zM213 384v-171h171v-42h-171v-171h-42 v171h-171v42h171v171h42zM341 0v43h43v-43h-43zM341 85v43h43v-43h-43z" />
-<glyph unicode="" horiz-adv-x="384" d="M171 0v43h42v-43h-42zM171 85v43h42v-43h-42zM171 341v43h42v-43h-42zM171 256v43h42v-43h-42zM171 171v42h42v-42h-42zM85 0v43h43v-43h-43zM85 341v43h43v-43h-43zM85 171v42h43v-42h-43zM0 0v384h43v-384h-43zM341 256v43h43v-43h-43zM256 0v43h43v-43h-43zM341 85v43 h43v-43h-43zM341 384h43v-43h-43v43zM341 171v42h43v-42h-43zM341 0v43h43v-43h-43zM256 171v42h43v-42h-43zM256 341v43h43v-43h-43z" />
-<glyph unicode="" horiz-adv-x="384" d="M213 299v-43h-42v43h42zM213 213v-42h-42v42h42zM299 213v-42h-43v42h43zM0 384h384v-384h-384v384zM341 43v298h-298v-298h298zM213 128v-43h-42v43h42zM128 213v-42h-43v42h43z" />
-<glyph unicode="" horiz-adv-x="384" d="M85 0v43h43v-43h-43zM0 341v43h43v-43h-43zM85 341v43h43v-43h-43zM85 171v42h43v-42h-43zM0 0v43h43v-43h-43zM171 0v43h42v-43h-42zM0 171v42h43v-42h-43zM0 85v43h43v-43h-43zM0 256v43h43v-43h-43zM171 85v43h42v-43h-42zM256 171v42h43v-42h-43zM341 384h43v-384 h-43v384zM256 0v43h43v-43h-43zM256 341v43h43v-43h-43zM171 171v42h42v-42h-42zM171 341v43h42v-43h-42zM171 256v43h42v-43h-42z" />
-<glyph unicode="" horiz-adv-x="384" d="M256 0v43h43v-43h-43zM341 0v43h43v-43h-43zM85 0v43h43v-43h-43zM171 0v43h42v-43h-42zM341 85v43h43v-43h-43zM341 171v42h43v-42h-43zM0 384h384v-43h-341v-341h-43v384zM341 256v43h43v-43h-43z" />
-<glyph unicode="" horiz-adv-x="384" d="M85 0v43h43v-43h-43zM85 171v42h43v-42h-43zM171 171v42h42v-42h-42zM171 0v43h42v-43h-42zM0 85v43h43v-43h-43zM0 0v43h43v-43h-43zM0 171v42h43v-42h-43zM0 256v43h43v-43h-43zM171 85v43h42v-43h-42zM341 256v43h43v-43h-43zM341 171v42h43v-42h-43zM0 384h384v-43 h-384v43zM341 85v43h43v-43h-43zM256 0v43h43v-43h-43zM171 256v43h42v-43h-42zM341 0v43h43v-43h-43zM256 171v42h43v-42h-43z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 256v43h43v-43h-43zM0 341v43h43v-43h-43zM85 0v43h43v-43h-43zM85 171v42h43v-42h-43zM0 171v42h43v-42h-43zM0 0v43h43v-43h-43zM0 85v43h43v-43h-43zM85 341v43h43v-43h-43zM341 85v43h43v-43h-43zM171 0v384h42v-384h-42zM341 0v43h43v-43h-43zM341 171v42h43v-42 h-43zM341 384h43v-43h-43v43zM341 256v43h43v-43h-43zM256 341v43h43v-43h-43zM256 0v43h43v-43h-43zM256 171v42h43v-42h-43z" />
-<glyph unicode="" horiz-adv-x="405" d="M299 427v-43h-256v-299h-43v299q0 18 12.5 30.5t30.5 12.5h256zM363 341q17 0 29.5 -12.5t12.5 -29.5v-299q0 -18 -12.5 -30.5t-29.5 -12.5h-235q-18 0 -30.5 12.5t-12.5 30.5v299q0 17 12.5 29.5t30.5 12.5h235zM363 0v299h-235v-299h235z" />
-<glyph unicode="" horiz-adv-x="469" d="M341 128v171h-170v42h170q18 0 30.5 -12.5t12.5 -29.5v-171h-43zM128 85h341v-42h-85v-86h-43v86h-213q-18 0 -30.5 12.5t-12.5 29.5v214h-85v42h85v86h43v-342z" />
-<glyph unicode="" horiz-adv-x="384" d="M85 128h214v-43h-214v43zM0 0v43h384v-43h-384zM0 171v42h384v-42h-384zM85 299h214v-43h-214v43zM0 384h384v-43h-384v43z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 0v43h384v-43h-384zM0 85v43h384v-43h-384zM0 171v42h384v-42h-384zM0 256v43h384v-43h-384zM0 384h384v-43h-384v43z" />
-<glyph unicode="" horiz-adv-x="384" d="M256 128v-43h-256v43h256zM256 299v-43h-256v43h256zM0 171v42h384v-42h-384zM0 0v43h384v-43h-384zM0 384h384v-43h-384v43z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 0v43h384v-43h-384zM128 85v43h256v-43h-256zM0 171v42h384v-42h-384zM128 256v43h256v-43h-256zM0 384h384v-43h-384v43z" />
-<glyph unicode="" horiz-adv-x="229" d="M183 218q21 -10 33.5 -29.5t12.5 -43.5q0 -34 -23 -57.5t-56 -23.5h-150v299h133q36 0 61 -25t25 -61q0 -35 -36 -59zM64 309v-64h64q13 0 22.5 9.5t9.5 23t-9.5 22.5t-22.5 9h-64zM139 117q13 0 22.5 9.5t9.5 23t-9.5 22.5t-22.5 9h-75v-64h75z" />
-<glyph unicode="" horiz-adv-x="384" d="M43 171v42h298v-42h-298zM0 85v43h299v-43h-299zM85 299h299v-43h-299v43z" />
-<glyph unicode="" horiz-adv-x="384" d="M27 341l6 -5l308 -309l-27 -27l-121 121l-33 -78h-64l53 123l-149 148zM85 341h299v-64h-124l-34 -80l-45 44l16 36h-52l-60 60v4z" />
-<glyph unicode="" horiz-adv-x="512" d="M353 257q10 -9 10 -22.5t-10 -22.5l-117 -117q-9 -10 -22.5 -10t-22.5 10l-118 117q-9 9 -9 22.5t9 22.5l110 110l-51 51l31 30zM111 235h205l-103 102zM405 203q43 -47 43 -75q0 -18 -12.5 -30.5t-30 -12.5t-30 12.5t-12.5 30.5q0 13 10.5 31.5t21.5 30.5zM0 21h512v-85 h-512v85z" />
-<glyph unicode="" horiz-adv-x="338" d="M299 149q0 -14 -3 -28l-184 184q14 19 28.5 37.5t22.5 27.5l8 10q5 -6 13.5 -16.5t30.5 -40t39 -56.5t31 -60.5t14 -57.5zM280 83l58 -59l-27 -27l-56 56q-36 -32 -84 -32q-53 0 -90.5 37.5t-37.5 90.5q0 35 28 88l-71 71l27 28l154 -155z" />
-<glyph unicode="" horiz-adv-x="512" d="M0 21h512v-85h-512v85zM235 384h42l117 -299h-48l-23 64h-134l-24 -64h-48zM205 192h102l-51 135z" />
-<glyph unicode="" horiz-adv-x="384" d="M171 85v43h213v-43h-213zM0 192l85 85v-170zM0 0v43h384v-43h-384zM0 384h384v-43h-384v43zM171 256v43h213v-43h-213zM171 171v42h213v-42h-213z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 0v43h384v-43h-384zM0 277l85 -85l-85 -85v170zM171 85v43h213v-43h-213zM0 384h384v-43h-384v43zM171 256v43h213v-43h-213zM171 171v42h213v-42h-213z" />
-<glyph unicode="" horiz-adv-x="256" d="M85 363h171v-64h-60l-72 -171h47v-64h-171v64h60l72 171h-47v64z" />
-<glyph unicode="" horiz-adv-x="437" d="M96 299v-214h53l-74 -74l-75 74h53v214h-53l75 74l74 -74h-53zM181 341h256v-42h-256v42zM181 43v42h256v-42h-256zM181 171v42h256v-42h-256z" />
-<glyph unicode="" horiz-adv-x="395" d="M32 224q13 0 22.5 -9.5t9.5 -22.5t-9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5zM32 352q13 0 22.5 -9.5t9.5 -22.5t-9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5zM32 92q12 0 20 -8t8 -20t-8 -20t-20 -8t-20 8t-8 20t8 20t20 8z M96 43v42h299v-42h-299zM96 171v42h299v-42h-299zM96 341h299v-42h-299v42z" />
-<glyph unicode="" horiz-adv-x="405" d="M0 85v22h64v-86h-64v22h43v10h-22v22h22v10h-43zM21 277v64h-21v22h43v-86h-22zM0 213v22h64v-20l-38 -44h38v-22h-64v20l38 44h-38zM107 341h298v-42h-298v42zM107 43v42h298v-42h-298zM107 171v42h298v-42h-298z" />
-<glyph unicode="" horiz-adv-x="341" d="M85 235q-35 0 -60 25t-25 60t25 60t60 25h171v-42h-43v-235h-42v235h-43v-235h-43v107zM341 64l-85 -85v64h-256v42h256v64z" />
-<glyph unicode="" horiz-adv-x="341" d="M128 235q-35 0 -60 25t-25 60t25 60t60 25h171v-42h-43v-235h-43v235h-42v-235h-43v107zM85 85h256v-42h-256v-64l-85 85l85 85v-64z" />
-<glyph unicode="" horiz-adv-x="405" d="M128 363h277v-64h-106v-256h-64v256h-107v64zM0 192v64h192v-64h-64v-149h-64v149h-64z" />
-<glyph unicode="" horiz-adv-x="469" d="M105 235q-5 4 -7 8q-11 22 -11 47t13 47q8 18 30 36q19 14 49 24q26 8 62 8q40 0 66 -10q25 -6 49 -26q20 -16 30 -40q11 -25 11 -52h-86q0 11 -4 24q-3 13 -13 19q-10 10 -21 13q-17 4 -30 4t-30 -4q-8 -2 -21 -11q-10 -7 -13 -15q-4 -13 -4 -19q0 -22 21 -34 q14 -9 43 -19h-134zM469 192v-43h-91q1 -1 1.5 -2t1 -3t1.5 -3q8 -20 8 -47q0 -24 -10 -49q-8 -18 -30 -36q-21 -18 -47 -24q-26 -8 -62 -8q-15 0 -40 4q-13 2 -39 10q-13 7 -34 20q-14 8 -28 25q-13 17 -19 34q-6 20 -6 45h85q0 -21 6 -34q5 -8 17 -21q10 -10 26 -13 q21 -4 34 -4t30 4q3 2 10 5t9 6q10 6 13 15q4 12 4 19q0 13 -2 19q-3 11 -13 17q-17 12 -25 15q-2 1 -7.5 3t-7.5 3h-254v43h469z" />
-<glyph unicode="" horiz-adv-x="384" d="M149 43v64h86v-64h-86zM43 363h298v-64h-106v-64h-86v64h-106v64zM0 149v43h384v-43h-384z" />
-<glyph unicode="" horiz-adv-x="341" d="M213 85v-42h-213v42h213zM341 256v-43h-341v43h341zM0 128v43h341v-43h-341zM0 341h341v-42h-341v42z" />
-<glyph unicode="" horiz-adv-x="299" d="M149 85q-53 0 -90.5 37.5t-37.5 90.5v171h54v-171q0 -31 21.5 -52.5t52.5 -21.5t53 21.5t22 52.5v171h53v-171q0 -53 -37.5 -90.5t-90.5 -37.5zM0 43h299v-43h-299v43z" />
-<glyph unicode="" horiz-adv-x="341" d="M256 171l-85 -86l-86 86h64v213h43v-213h64zM0 43h341v-43h-341v43z" />
-<glyph unicode="" horiz-adv-x="341" d="M85 43l86 85l85 -85h-64v-86h-43v86h-64zM256 341l-85 -85l-86 85h64v86h43v-86h64zM0 213h341v-42h-341v42z" />
-<glyph unicode="" horiz-adv-x="341" d="M85 213l86 86l85 -86h-64v-213h-43v213h-64zM0 384h341v-43h-341v43z" />
-<glyph unicode="" horiz-adv-x="436" d="M360 222l76 77v-192h-192l78 77q-48 40 -110 40q-56 0 -100.5 -33t-61.5 -84l-50 16q22 68 80.5 111t131.5 43q84 0 148 -55z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 341q0 18 12.5 30.5t30.5 12.5v-43h-43zM0 171v42h43v-42h-43zM85 0v43h43v-43h-43zM0 256v43h43v-43h-43zM213 384v-43h-42v43h42zM341 384q18 0 30.5 -12.5t12.5 -30.5h-43v43zM43 0q-18 0 -30.5 12.5t-12.5 30.5h43v-43zM0 85v43h43v-43h-43zM128 384v-43h-43v43h43 zM171 0v43h42v-43h-42zM341 171v42h43v-42h-43zM341 0v43h43q0 -18 -12.5 -30.5t-30.5 -12.5zM341 256v43h43v-43h-43zM341 85v43h43v-43h-43zM256 0v43h43v-43h-43zM256 341v43h43v-43h-43zM85 85v214h214v-214h-214zM128 256v-128h128v128h-128z" />
-<glyph unicode="" horiz-adv-x="341" d="M299 256h42v-128h-341v128h43v-85h256v85z" />
-<glyph unicode="" horiz-adv-x="299" d="M0 85h299v-42h-299v42zM96 175l-19 -47h-45l101 235h32l102 -235h-45l-19 47h-107zM149 320l-40 -107h80z" />
-<glyph unicode="" d="M427 64h-86v-43h43l-64 -64l-64 64h43v43h-171q-18 0 -30.5 12.5t-12.5 30.5v170h-85v43h85v43h-42l64 64l64 -64h-43v-256h299v-43zM171 277v43h128q17 0 29.5 -12.5t12.5 -30.5v-128h-42v128h-128z" />
-<glyph unicode="" horiz-adv-x="437" d="M224 277q73 0 131.5 -43t81.5 -111l-51 -16q-17 51 -61.5 84t-100.5 33q-61 0 -109 -40l77 -77h-192v192l77 -77q64 55 147 55z" />
-<glyph unicode="" horiz-adv-x="363" d="M0 43v42h128v-42h-128zM341 341v-42h-341v42h341zM277 213q36 0 61 -25t25 -60t-25 -60t-61 -25h-42v-43l-64 64l64 64v-43h48q17 0 29.5 12.5t12.5 30.5t-12.5 30.5t-29.5 12.5h-283v42h277z" />
-<glyph unicode="" d="M384 405q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-299l-85 -85v384q0 17 12.5 29.5t30.5 12.5h341zM235 149v43h-43v-43h43zM235 235v85h-43v-85h43z" />
-<glyph unicode="" d="M384 405q18 0 30.5 -12.5t12.5 -29.5v-384l-86 85h-298q-18 0 -30.5 12.5t-12.5 30.5v256q0 17 12.5 29.5t30.5 12.5h341zM341 149v43h-256v-43h256zM341 213v43h-256v-43h256zM341 277v43h-256v-43h256z" />
-<glyph unicode="" d="M426 363l1 -384l-86 85h-298q-18 0 -30.5 12.5t-12.5 30.5v256q0 17 12.5 29.5t30.5 12.5h341q18 0 30 -12.5t12 -29.5z" />
-<glyph unicode="" d="M384 405q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-299l-85 -85v384q0 17 12.5 29.5t30.5 12.5h341zM85 149h53l147 147q8 7 0 15l-38 38q-7 7 -15 0l-147 -147v-53zM341 149v43h-117l-43 -43h160z" />
-<glyph unicode="" d="M384 405q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-299l-85 -85v384q0 17 12.5 29.5t30.5 12.5h341zM64 149h299l-96 128l-75 -96l-53 64z" />
-<glyph unicode="" d="M384 405q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-299l-85 -85v384q0 17 12.5 29.5t30.5 12.5h341zM128 149v43h-43v-43h43zM128 213v43h-43v-43h43zM128 277v43h-43v-43h43zM277 149v43h-106v-43h106zM341 213v43h-170v-43h170zM341 277v43 h-170v-43h170z" />
-<glyph unicode="" d="M384 405q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-299l-85 -85v384q0 17 12.5 29.5t30.5 12.5h341zM149 213v43h-42v-43h42zM235 213v43h-43v-43h43zM320 213v43h-43v-43h43z" />
-<glyph unicode="" d="M384 405q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-299l-85 -85v384q0 17 12.5 29.5t30.5 12.5h341zM384 107v256h-341v-299l42 43h299z" />
-<glyph unicode="" d="M384 405q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-299l-85 -85v384q0 17 12.5 29.5t30.5 12.5h341zM85 256v-43h256v43h-256zM256 149v43h-171v-43h171zM341 277v43h-256v-43h256z" />
-<glyph unicode="" d="M384 405q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-299l-85 -85v384q0 17 12.5 29.5t30.5 12.5h341zM341 149v43h-256v-43h256zM341 213v43h-256v-43h256zM341 277v43h-256v-43h256z" />
-<glyph unicode="" d="M384 405q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-299l-85 -85v384q0 17 12.5 29.5t30.5 12.5h341zM341 149v171l-85 -68v68h-171v-171h171v69z" />
-<glyph unicode="" d="M384 405q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-299l-85 -85v384q0 17 12.5 29.5t30.5 12.5h341z" />
-<glyph unicode="" d="M405 320q9 0 15.5 -6.5t6.5 -14.5v-320l-86 85h-234q-9 0 -15.5 6.5t-6.5 14.5v43h278v192h42zM320 192q0 -9 -6.5 -15t-14.5 -6h-214l-85 -86v299q0 9 6.5 15t14.5 6h278q8 0 14.5 -6t6.5 -15v-192z" />
-<glyph unicode="" horiz-adv-x="496" d="M375 299l-135 -136l-30 30l135 136zM466 329l30 -30l-256 -256l-119 119l30 30l89 -89zM0 162l30 30l119 -119l-30 -30z" />
-<glyph unicode="" d="M213 405q88 0 151 -62.5t63 -150.5t-63 -150.5t-151 -62.5t-150.5 62.5t-62.5 150.5t62.5 150.5t150.5 62.5zM320 64v43h-213v-43h213zM177 149l143 143l-30 30l-113 -113l-40 41l-30 -30z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM171 85l192 192l-30 31l-162 -162l-77 76l-30 -30z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM149 85l192 192l-30 31l-162 -162l-76 76l-30 -30z" />
-<glyph unicode="" horiz-adv-x="375" d="M119 102l227 227l29 -30l-256 -256l-119 119l30 30z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM213.5 21q70.5 0 120.5 50t50 121t-50 121t-120.5 50t-120.5 -50t-50 -121t50 -121t120.5 -50z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5z" />
-<glyph unicode="" d="M213 405q88 0 151 -62.5t63 -150.5t-63 -150.5t-151 -62.5t-150.5 62.5t-62.5 150.5t62.5 150.5t150.5 62.5zM213.5 21q70.5 0 120.5 50t50 121t-50 121t-120.5 50t-120.5 -50t-50 -121t50 -121t120.5 -50zM277 192q0 -27 -18.5 -45.5t-45 -18.5t-45.5 18.5t-19 45.5 t19 45.5t45.5 18.5t45 -18.5t18.5 -45.5z" />
-<glyph unicode="" d="M213 299q44 0 75.5 -31.5t31.5 -75.5t-31.5 -75.5t-75.5 -31.5t-75 31.5t-31 75.5t31 75.5t75 31.5zM213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM213.5 21q70.5 0 120.5 50t50 121t-50 121t-120.5 50 t-120.5 -50t-50 -121t50 -121t120.5 -50z" />
-<glyph unicode="" d="M107 213h213v-42h-213v42zM213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM213.5 21q70.5 0 120.5 50t50 121t-50 121t-120.5 50t-120.5 -50t-50 -121t50 -121t120.5 -50z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM320 171v42h-213v-42h213z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM299 171v42h-214v-42h214z" />
-<glyph unicode="" horiz-adv-x="299" d="M299 171h-299v42h299v-42z" />
-<glyph unicode="" horiz-adv-x="512" d="M341 277v-64h64v-42h-64v-64h-42v64h-64v42h64v64h42zM43 192q0 -44 23.5 -80.5t61.5 -54.5v-46q-56 20 -92 69.5t-36 111.5t36 111.5t92 69.5v-46q-38 -18 -61.5 -54.5t-23.5 -80.5zM320 384q79 0 135.5 -56.5t56.5 -135.5t-56.5 -135.5t-135.5 -56.5t-135.5 56.5 t-56.5 135.5t56.5 135.5t135.5 56.5zM320 43q62 0 105.5 43.5t43.5 105.5t-43.5 105.5t-105.5 43.5t-105.5 -43.5t-43.5 -105.5t43.5 -105.5t105.5 -43.5z" />
-<glyph unicode="" d="M235 299v-86h85v-42h-85v-86h-43v86h-85v42h85v86h43zM213 405q88 0 151 -62.5t63 -150.5t-63 -150.5t-151 -62.5t-150.5 62.5t-62.5 150.5t62.5 150.5t150.5 62.5zM213.5 21q70.5 0 120.5 50t50 121t-50 121t-120.5 50t-120.5 -50t-50 -121t50 -121t120.5 -50z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM320 171v42h-85v86h-43v-86h-85v-42h85v-86h43v86h85z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM299 171v42h-86v86h-42v-86h-86v-42h86v-86h42v86h86z" />
-<glyph unicode="" horiz-adv-x="299" d="M299 171h-128v-128h-43v128h-128v42h128v128h43v-128h128v-42z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 341h-298v-298h298v298zM341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM304 64l-24 103l79 69l-105 9l-41 96l-41 -97l-105 -8l80 -69l-24 -103l90 54z" />
-<glyph unicode="" d="M427 240l-117 -101l35 -150l-132 80l-132 -80l35 150l-116 101l153 13l60 142l60 -142zM213 109l81 -49l-22 91l71 62l-93 8l-37 86v-198z" />
-<glyph unicode="" d="M427 251l-117 -101l35 -150l-132 80l-132 -80l35 150l-116 101l153 13l60 141l60 -141zM213 119l81 -48l-22 91l71 62l-93 8l-37 86l-36 -86l-93 -8l70 -62l-21 -91z" />
-<glyph unicode="" d="M213 80l-132 -80l35 150l-116 101l153 13l60 141l60 -141l154 -13l-117 -101l35 -150z" />
-<glyph unicode="" horiz-adv-x="384" d="M85 192l-42 -43l-43 43l43 43zM314 284l-92 -92l92 -92l-122 -121h-21v162l-98 -98l-30 30l119 119l-119 119l30 30l98 -98v162h21zM213 324v-81l40 41zM253 100l-40 41v-81zM341 235l43 -43l-43 -43l-42 43z" />
-<glyph unicode="" horiz-adv-x="341" d="M192 324v-69l-43 43v107h22l121 -121l-64 -65l-30 30l34 35zM30 363l311 -312l-30 -30l-49 49l-91 -91h-22v162l-98 -98l-30 30l120 119l-141 141zM192 60l40 40l-40 41v-81z" />
-<glyph unicode="" horiz-adv-x="384" d="M240 192l49 49q10 -24 10 -49q0 -26 -10 -50zM353 305q31 -51 31 -111q0 -61 -33 -113l-25 25q21 41 21 86q0 46 -21 86zM271 284l-92 -92l92 -92l-122 -121h-21v162l-98 -98l-30 30l119 119l-119 119l30 30l98 -98v162h21zM171 324v-81l40 41zM211 100l-40 41v-81z" />
-<glyph unicode="" horiz-adv-x="271" d="M128 -64v43h43v-43h-43zM43 -64v43h42v-43h-42zM213 -64v43h43v-43h-43zM271 326l-92 -91l92 -92l-122 -122h-21v162l-98 -98l-30 30l119 120l-119 119l30 30l98 -98v162h21zM171 366v-80l40 40zM211 143l-40 40v-80z" />
-<glyph unicode="" horiz-adv-x="271" d="M271 284l-92 -92l92 -92l-122 -121h-21v162l-98 -98l-30 30l119 119l-119 119l30 30l98 -98v162h21zM171 324v-81l40 41zM211 100l-40 41v-81z" />
-<glyph unicode="" d="M149 384h128l39 -43h68q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 17 12.5 29.5t30.5 12.5h67zM213 64q44 0 75.5 31.5t31.5 75.5t-31.5 75t-75.5 31t-75 -31t-31 -75t31 -75.5t75 -31.5zM213 85l-26 59 l-59 27l59 26l26 59l27 -59l59 -26l-59 -27z" />
-<glyph unicode="" d="M158 224l-1 -2l-78 135q58 48 134 48q23 0 47 -5zM417 256h-206l78 135q46 -17 79.5 -52.5t48.5 -82.5zM422 235q5 -22 5 -43q0 -83 -57 -144l-101 176l-6 11h159zM140 192l24 -43h-160q-4 22 -4 43q0 82 56 144zM10 128h206l-78 -135q-46 17 -79.5 52.5t-48.5 82.5z M250 128l20 34l78 -135q-59 -48 -135 -48q-22 0 -46 5z" />
-<glyph unicode="" d="M384 341q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 17 12.5 29.5t30.5 12.5h68l38 43h128l39 -43h68zM384 43v256h-171v-22q-44 0 -75 -31t-31 -75.5t31 -75.5t75 -31v-21h171zM320 170.5 q0 -44.5 -31 -75.5t-76 -31v38q29 0 49 20t20 48.5t-20 48.5t-49 20v38q45 0 76 -31t31 -75.5zM145 170.5q0 28.5 20 48.5t48 20v-137q-28 0 -48 20t-20 48.5z" />
-<glyph unicode="" horiz-adv-x="299" d="M107 21v43l64 -64l-64 -64v43h-107v42h107zM192 21h107v-42h-107v42zM149.5 277q-17.5 0 -30 12.5t-12.5 30.5t12.5 30.5t30 12.5t30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5zM256 448q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-213 q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h213zM43 405v-224q0 24 36.5 39t70 15t70 -15t36.5 -39v224h-213z" />
-<glyph unicode="" d="M384 341q18 0 30.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-149v45q45 7 75.5 43t30.5 83h-42q0 -36 -25 -61t-60.5 -25t-60.5 25t-25 61h-43q0 -47 30.5 -83t76.5 -43v-45h-149q-18 0 -30.5 12.5t-12.5 30.5v256q0 17 12.5 29.5t30.5 12.5h67l39 43h128 l39 -43h68zM256 171v85q0 18 -12.5 30.5t-30 12.5t-30 -12.5t-12.5 -30.5v-85q0 -18 12.5 -30.5t30 -12.5t30 12.5t12.5 30.5z" />
-<glyph unicode="" d="M384 363q18 0 30.5 -12.5t12.5 -30.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h67l39 42h128l39 -42h68zM213 299q-44 0 -75 -31.5t-31 -75.5q0 -10 2 -21h44q-4 10 -4 21q0 27 19 45.5t45 18.5h85 q-32 43 -85 43zM213 85q44 0 75.5 31.5t31.5 75.5q0 12 -2 21h-45q4 -10 4 -21q0 -27 -18.5 -45.5t-45.5 -18.5h-85q33 -43 85 -43z" />
-<glyph unicode="" horiz-adv-x="299" d="M107 21v43l64 -64l-64 -64v43h-107v42h107zM192 21h107v-42h-107v42zM256 448q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-213q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h213zM149.5 320q17.5 0 30 12.5t12.5 30t-12.5 30 t-30 12.5t-30 -12.5t-12.5 -30t12.5 -30t30 -12.5z" />
-<glyph unicode="" d="M256 341h171v-320h-171q0 -17 -12.5 -29.5t-30.5 -12.5h-170q-18 0 -30.5 12.5t-12.5 29.5v320q0 18 12.5 30.5t30.5 12.5h21v21q0 9 6.5 15.5t14.5 6.5h86q8 0 14.5 -6.5t6.5 -15.5v-21h21q18 0 30.5 -12.5t12.5 -30.5zM213 64v43h-42v-43h42zM213 256v43h-42v-43h42z M299 64v43h-43v-43h43zM299 256v43h-43v-43h43zM384 64v43h-43v-43h43zM384 256v43h-43v-43h43z" />
-<glyph unicode="" d="M384 363q18 0 30.5 -12.5t12.5 -30.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h67l39 42h128l39 -42h68zM277 117l75 75l-75 75v-54h-128v54l-74 -75l74 -75v54h128v-54z" />
-<glyph unicode="" d="M145 192q0 68 68.5 68t68.5 -68t-68.5 -68t-68.5 68zM149 405h128l39 -42h68q18 0 30.5 -12.5t12.5 -30.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h67zM213 85q44 0 75.5 31.5t31.5 75.5t-31.5 75.5 t-75.5 31.5t-75 -31.5t-31 -75.5t31 -75.5t75 -31.5z" />
-<glyph unicode="" horiz-adv-x="341" d="M299 405q17 0 29.5 -12.5t12.5 -29.5v-342q0 -17 -12.5 -29.5t-29.5 -12.5h-256q-18 0 -30.5 12.5t-12.5 29.5v256l128 128h171zM192 85v43h-43v-43h43zM192 171v106h-43v-106h43z" />
-<glyph unicode="" horiz-adv-x="400" d="M354 341l1 -249l-242 242l50 50h149q17 0 29.5 -12.5t12.5 -30.5zM27 365l373 -372l-27 -28l-40 41q-10 -6 -21 -6h-213q-18 0 -30.5 12.5t-12.5 30.5v239l-56 56z" />
-<glyph unicode="" horiz-adv-x="341" d="M299 405q17 0 29.5 -12.5t12.5 -29.5v-342q0 -17 -12.5 -29.5t-29.5 -12.5h-256q-18 0 -30.5 12.5t-12.5 29.5v256l128 128h171zM171 277v86h-43v-86h43zM235 277v86h-43v-86h43zM299 277v86h-43v-86h43z" />
-<glyph unicode="" horiz-adv-x="341" d="M341 363v-342q0 -17 -12.5 -29.5t-29.5 -12.5h-256q-18 0 -30.5 12.5t-12.5 29.5v256l128 128h171q17 0 29.5 -12.5t12.5 -29.5zM107 43v42h-43v-42h43zM277 43v42h-42v-42h42zM107 128v85h-43v-85h43zM192 43v85h-43v-85h43zM192 171v42h-43v-42h43zM277 128v85h-42v-85 h42z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 405q17 0 29.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-29.5 -12.5h-150l43 -64v-21h-171v21l43 64h-149q-18 0 -30.5 12.5t-12.5 30.5v256q0 17 12.5 29.5t30.5 12.5h384zM427 149v214h-384v-214h384z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 405q17 0 29.5 -12.5t12.5 -29.5v-256q0 -18 -12.5 -30.5t-29.5 -12.5h-150v-43h43v-42h-171v42h43v43h-149q-18 0 -30.5 12.5t-12.5 30.5v256q0 17 12.5 29.5t30.5 12.5h384zM427 107v256h-384v-256h384z" />
-<glyph unicode="" horiz-adv-x="384" d="M299 107h85v-107h-107v65l-85 90l-85 -90v-65h-107v107h85l86 85v68q-19 7 -31 23.5t-12 36.5q0 27 18.5 45.5t45.5 18.5t45.5 -18.5t18.5 -45.5q0 -20 -12 -36.5t-31 -23.5v-68z" />
-<glyph unicode="" horiz-adv-x="512" d="M469 320h-281l-43 43h324v-43zM41 413l42 -42l372 -373l-27 -27l-50 50h-378v64h43v235q0 15 10 27l-39 39zM85 314v-229h229zM491 277q8 0 14.5 -6t6.5 -15v-213q0 -9 -6.5 -15.5t-14.5 -6.5h-4l-64 64h46v150h-85v-111l-43 43v89q0 9 6.5 15t15.5 6h128z" />
-<glyph unicode="" horiz-adv-x="512" d="M85 320v-235h214v-64h-299v64h43v235q0 18 12.5 30.5t29.5 12.5h384v-43h-384zM491 277q8 0 14.5 -6t6.5 -15v-213q0 -9 -6.5 -15.5t-14.5 -6.5h-128q-9 0 -15.5 6.5t-6.5 15.5v213q0 9 6.5 15t15.5 6h128zM469 85v150h-85v-150h85z" />
-<glyph unicode="" horiz-adv-x="256" d="M43 -43v43h170v-43h-170zM213 426q18 0 30.5 -12t12.5 -30v-299q0 -17 -12.5 -29.5t-30.5 -12.5h-170q-18 0 -30.5 12.5t-12.5 29.5v299q0 18 12.5 30.5t30.5 12.5zM213 128v213h-170v-213h170z" />
-<glyph unicode="" horiz-adv-x="384" d="M299 384l85 -85v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h256zM192 43q27 0 45.5 18.5t18.5 45t-18.5 45.5t-45.5 19t-45.5 -19t-18.5 -45.5t18.5 -45t45.5 -18.5zM256 256v85h-213v-85h213z" />
-<glyph unicode="" d="M277 288l-64 -64l-64 64v117h128v-117zM117 256l64 -64l-64 -64h-117v128h117zM149 96l64 64l64 -64v-117h-128v117zM309 256h118v-128h-118l-64 64z" />
-<glyph unicode="" horiz-adv-x="469" d="M234.5 277q35.5 0 60.5 -25t25 -60t-25 -60t-60.5 -25t-60.5 25t-25 60t25 60t60.5 25zM425 213h44v-42h-44q-7 -67 -54.5 -114.5t-114.5 -55.5v-44h-43v44q-66 8 -114 55.5t-55 114.5h-44v42h44q7 67 55 114.5t114 55.5v44h43v-44q67 -8 114.5 -55.5t54.5 -114.5z M235 43q62 0 105.5 43.5t43.5 105.5t-43.5 105.5t-105.5 43.5t-106 -43.5t-44 -105.5t44 -105.5t106 -43.5z" />
-<glyph unicode="" horiz-adv-x="469" d="M425 213h44v-42h-43q-4 -36 -21 -68l-32 32q11 28 11 57q0 62 -43.5 105.5t-105.5 43.5q-30 0 -57 -11l-32 32q32 17 67 21v44h43v-44q67 -8 114.5 -55.5t54.5 -114.5zM43 357l27 27l357 -357l-27 -27l-44 44q-44 -36 -100 -43v-44h-43v44q-66 8 -114 55.5t-55 114.5h-44 v42h44q6 56 42 100zM326 74l-210 209q-31 -40 -31 -91q0 -62 44 -105.5t106 -43.5q50 0 91 31z" />
-<glyph unicode="" horiz-adv-x="469" d="M425 213h44v-42h-44q-7 -67 -54.5 -114.5t-114.5 -55.5v-44h-43v44q-66 8 -114 55.5t-55 114.5h-44v42h44q7 67 55 114.5t114 55.5v44h43v-44q67 -8 114.5 -55.5t54.5 -114.5zM235 43q62 0 105.5 43.5t43.5 105.5t-43.5 105.5t-105.5 43.5t-106 -43.5t-44 -105.5 t44 -105.5t106 -43.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M192 427q80 0 136 -56.5t56 -135.5v-214q0 -26 -18.5 -45t-45.5 -19h-128v43h149v21h-85v171h85v43q0 62 -43.5 105.5t-105.5 43.5t-105.5 -43.5t-43.5 -105.5v-43h85v-171h-64q-27 0 -45.5 19t-18.5 45v150q0 79 56 135.5t136 56.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M192 427q80 0 136 -56.5t56 -135.5v-150q0 -26 -18.5 -45t-45.5 -19h-64v171h85v43q0 62 -43.5 105.5t-105.5 43.5t-105.5 -43.5t-43.5 -105.5v-43h85v-171h-64q-27 0 -45.5 19t-18.5 45v150q0 79 56 135.5t136 56.5z" />
-<glyph unicode="" horiz-adv-x="469" d="M235 341q62 0 105.5 -43.5t43.5 -105.5h-43q0 44 -31 75.5t-75 31.5t-75.5 -31.5t-31.5 -75.5h-43q0 62 44 105.5t106 43.5zM256 143v-70l73 -73l-30 -30l-64 64l-64 -64l-30 30l72 73v70q-14 6 -23 19.5t-9 29.5q0 22 16 37.5t38 15.5t37.5 -15.5t15.5 -37.5 q0 -35 -32 -49zM235 427q97 0 165.5 -69t68.5 -166h-42q0 80 -56.5 136t-136 56t-135.5 -56t-56 -136h-43q0 97 69 166t166 69z" />
-<glyph unicode="" horiz-adv-x="469" d="M85 405v-85h43v-128h-128v128h43v85q0 9 6 15.5t15 6.5t15 -6.5t6 -15.5zM171 107v42h128v-42q0 -21 -12 -37.5t-31 -22.5v-90h-43v90q-19 6 -30.5 22.5t-11.5 37.5zM0 107v42h128v-42q0 -21 -12 -37.5t-31 -22.5v-90h-42v90q-19 6 -31 22.5t-12 37.5zM427 320h42v-128 h-128v128h43v85q0 9 6.5 15.5t15 6.5t15 -6.5t6.5 -15.5v-85zM256 405v-85h43v-128h-128v128h42v85q0 9 6.5 15.5t15 6.5t15 -6.5t6.5 -15.5zM341 107v42h128v-42q0 -21 -11.5 -37.5t-30.5 -22.5v-90h-43v90q-19 6 -31 22.5t-12 37.5z" />
-<glyph unicode="" horiz-adv-x="299" d="M277 299h22v-128l-64 -128v-64h-171v64l-64 128v128h21v64q0 17 12.5 29.5t30.5 12.5h171q17 0 29.5 -12.5t12.5 -29.5v-64zM64 363v-64h43v42h21v-42h43v42h21v-42h43v64h-171z" />
-<glyph unicode="" horiz-adv-x="256" d="M214 299q15 0 28.5 -13.5t13.5 -29.5v-117l-75 -75v-64h-106v64l-75 75v117q0 16 13.5 29.5t28.5 13.5h1v85h42v-85h86v85h42z" />
-<glyph unicode="" horiz-adv-x="469" d="M149 202.5q0 -13.5 -9 -22.5t-22.5 -9t-23 9t-9.5 22.5t9.5 23t23 9.5t22.5 -9.5t9 -23zM299 309.5q0 -13.5 -9.5 -23t-22.5 -9.5h-64q-14 0 -23 9.5t-9 23t9 22.5t23 9h64q13 0 22.5 -9t9.5 -22.5zM160 128q13 0 22.5 -9.5t9.5 -22.5t-9.5 -22.5t-22.5 -9.5t-22.5 9.5 t-9.5 22.5t9.5 22.5t22.5 9.5zM235 427q97 0 165.5 -69t68.5 -166t-68.5 -166t-165.5 -69t-166 69t-69 166t69 166t166 69zM234.5 0q79.5 0 136 56.5t56.5 135.5t-56.5 135.5t-136 56.5t-135.5 -56.5t-56 -135.5t56 -135.5t135.5 -56.5zM352 235q13 0 22.5 -9.5t9.5 -23 t-9.5 -22.5t-22.5 -9t-22.5 9t-9.5 22.5t9.5 23t22.5 9.5zM309.5 128q13.5 0 22.5 -9.5t9 -22.5t-9 -22.5t-22.5 -9.5t-23 9.5t-9.5 22.5t9.5 22.5t23 9.5z" />
-<glyph unicode="" d="M384 384q18 0 30.5 -12.5t12.5 -30.5v-213q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v213q0 18 12.5 30.5t30.5 12.5h341zM192 320v-43h43v43h-43zM192 256v-43h43v43h-43zM128 320v-43h43v43h-43zM128 256v-43h43v43h-43zM107 213v43h-43v-43h43 zM107 277v43h-43v-43h43zM299 128v43h-171v-43h171zM299 213v43h-43v-43h43zM299 277v43h-43v-43h43zM363 213v43h-43v-43h43zM363 277v43h-43v-43h43zM213 -43l-85 86h171z" />
-<glyph unicode="" d="M384 341q18 0 30.5 -12.5t12.5 -29.5v-214q0 -17 -12.5 -29.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 29.5v214q0 17 12.5 29.5t30.5 12.5h341zM192 277v-42h43v42h-43zM192 213v-42h43v42h-43zM128 277v-42h43v42h-43zM128 213v-42h43v42h-43zM107 171v42h-43v-42h43 zM107 235v42h-43v-42h43zM299 85v43h-171v-43h171zM299 171v42h-43v-42h43zM299 235v42h-43v-42h43zM363 171v42h-43v-42h43zM363 235v42h-43v-42h43z" />
-<glyph unicode="" horiz-adv-x="512" d="M469 64h43v-43h-512v43h43v320h426v-320zM299 64v21h-86v-21h86zM427 128v213h-342v-213h342z" />
-<glyph unicode="" horiz-adv-x="512" d="M427 64h85q0 -18 -12.5 -30.5t-30.5 -12.5h-426q-18 0 -30.5 12.5t-12.5 30.5h85q-17 0 -29.5 12.5t-12.5 30.5v234q0 18 12.5 30.5t29.5 12.5h342q17 0 29.5 -12.5t12.5 -30.5v-234q0 -18 -12.5 -30.5t-29.5 -12.5zM85 341v-234h342v234h-342zM256 43q9 0 15 6t6 15 t-6 15t-15 6t-15 -6t-6 -15t6 -15t15 -6z" />
-<glyph unicode="" horiz-adv-x="512" d="M427 64h85v-43h-512v43h85q-17 0 -29.5 12.5t-12.5 30.5v213q0 18 12.5 30.5t29.5 12.5h342q17 0 29.5 -12.5t12.5 -30.5v-213q0 -18 -12.5 -30.5t-29.5 -12.5zM85 320v-213h342v213h-342z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 213q0 -36 -19 -70l-26 27q9 21 9 43h36zM256 210l-128 127v4q0 27 18.5 45.5t45.5 18.5t45.5 -18.5t18.5 -45.5v-128v-1.5v-1.5zM27 384l357 -357l-27 -27l-89 89q-26 -15 -55 -19v-70h-42v70q-54 8 -91 49t-37 94h36q0 -46 33.5 -77t79.5 -31q25 0 49 11l-35 35 q-7 -2 -14 -2q-27 0 -45.5 19t-18.5 45v16l-128 128z" />
-<glyph unicode="" horiz-adv-x="299" d="M149.5 139q-26.5 0 -45.5 18.5t-19 45.5v128q0 26 19 45t45.5 19t45 -19t18.5 -45v-128q0 -27 -18.5 -45.5t-45 -18.5zM124 333v-132q0 -11 7.5 -18.5t18 -7.5t18 7.5t7.5 18.5v132q0 10 -7.5 17.5t-18 7.5t-18 -7.5t-7.5 -17.5zM262 203h37q0 -54 -37.5 -95t-90.5 -49 v-70h-43v70q-53 8 -90.5 49t-37.5 95h36q0 -47 34 -78t79.5 -31t79 31t33.5 78z" />
-<glyph unicode="" horiz-adv-x="299" d="M43 -64v43h42v-43h-42zM149.5 171q-26.5 0 -45.5 18.5t-19 45.5v128q0 26 19 45t45.5 19t45 -19t18.5 -45v-128q0 -27 -18.5 -45.5t-45 -18.5zM128 -64v43h43v-43h-43zM213 -64v43h43v-43h-43zM299 235q0 -54 -37.5 -95t-90.5 -49v-70h-43v70q-53 8 -90.5 49t-37.5 95h36 q0 -47 34 -78t79.5 -31t79 31t33.5 78h37z" />
-<glyph unicode="" horiz-adv-x="299" d="M149.5 149q-26.5 0 -45.5 19t-19 45v128q0 27 19 45.5t45.5 18.5t45 -18.5t18.5 -45.5v-128q0 -26 -18.5 -45t-45 -19zM262 213h37q0 -54 -37.5 -94.5t-90.5 -48.5v-70h-43v70q-53 8 -90.5 49t-37.5 94h36q0 -46 34 -77t79.5 -31t79 31t33.5 77z" />
-<glyph unicode="" horiz-adv-x="341" d="M192 425q64 -8 106.5 -56t42.5 -113h-149v169zM0 128v85h341v-85q0 -71 -50 -121t-120.5 -50t-120.5 50t-50 121zM149 425v-169h-149q0 65 43 113t106 56z" />
-<glyph unicode="" d="M384 64v171h43v-171h-43zM384 -21v42h43v-42h-43zM0 -21l427 426v-128h-86v-298h-341z" />
-<glyph unicode="" horiz-adv-x="469" d="M395 235q-40 0 -68 -28.5t-28 -67.5v-6q-22 -19 -22 -48v-64h-277l405 406v-193q-9 1 -10 1zM448 107q9 0 15 -6.5t6 -15.5v-85q0 -9 -6 -15t-15 -6h-107q-8 0 -14.5 6t-6.5 15v85q0 9 6.5 15.5t14.5 6.5v32q0 22 16 37.5t38 15.5t37.5 -15.5t15.5 -37.5v-32zM427 107v32 q0 13 -9.5 22.5t-23 9.5t-22.5 -9.5t-9 -22.5v-32h64z" />
-<glyph unicode="" horiz-adv-x="448" d="M427 427v-367l-184 183zM80 352l368 -368l-27 -27l-43 43h-378l189 189l-136 136z" />
-<glyph unicode="" d="M384 302l-281 -281h281v281zM427 405v-426h-427z" />
-<glyph unicode="" horiz-adv-x="509" d="M405 203q-66 0 -113 -47t-47 -113q0 -9 2 -22h-247l427 427l-1 -247q-12 2 -21 2zM484 32l23 -17q3 -3 1 -7l-21 -37q-2 -4 -7 -3l-26 11q-8 -6 -18 -10l-4 -29q-1 -4 -6 -4h-42q-5 0 -6 4l-4 29q-9 3 -18 10l-26 -11q-5 -1 -7 3l-21 37q-2 4 1 7l23 17q-1 5 -1 10.5 t1 10.5l-23 18q-3 3 -1 7l21 37q3 3 7 2l26 -11q8 6 18 11l4 28q1 4 6 4h42q5 0 6 -4l4 -28q9 -4 18 -11l26 11q5 1 7 -2l21 -37q2 -4 -1 -7l-23 -18q1 -4 1 -10q0 -4 -1 -11zM405 11q13 0 22.5 9t9.5 22.5t-9.5 23t-22.5 9.5t-22.5 -9.5t-9.5 -23t9.5 -22.5t22.5 -9z" />
-<glyph unicode="" d="M0 -21l427 426v-426h-427z" />
-<glyph unicode="" horiz-adv-x="384" d="M250 245l-15 15l59 60l-59 60l15 15l49 -49v81h10l61 -61l-46 -46l46 -46l-61 -61h-10v81zM320 386v-40l20 20zM320 294v-40l20 20zM363 117q8 0 14.5 -6t6.5 -15v-75q0 -8 -6.5 -14.5t-14.5 -6.5q-99 0 -182.5 48.5t-132 132t-48.5 182.5q0 8 6.5 14.5t14.5 6.5h75 q9 0 15 -6.5t6 -14.5q0 -40 12 -76q4 -13 -5 -22l-47 -47q47 -93 141 -141l47 47q9 9 22 5q36 -12 76 -12z" />
-<glyph unicode="" horiz-adv-x="512" d="M256 256q-51 0 -98 -15v-66q0 -14 -12 -20q-31 -15 -57 -39q-6 -6 -15 -6t-15 6l-53 53q-6 6 -6 15t6 15q105 100 250 100t250 -100q6 -6 6 -15t-6 -15l-53 -53q-6 -6 -15 -6t-15 6q-25 23 -57 39q-12 6 -12 19v66q-47 16 -98 16z" />
-<glyph unicode="" d="M320 213v64h-85v86h85v64l107 -107zM363 117q8 0 14.5 -6t6.5 -15v-75q0 -8 -6.5 -14.5t-14.5 -6.5q-99 0 -182.5 48.5t-132 132t-48.5 182.5q0 8 6.5 14.5t14.5 6.5h75q9 0 15 -6.5t6 -14.5q0 -40 12 -76q4 -13 -5 -22l-47 -47q47 -93 141 -141l47 47q9 9 22 5 q36 -12 76 -12z" />
-<glyph unicode="" horiz-adv-x="384" d="M363 117q8 0 14.5 -6t6.5 -15v-75q0 -8 -6.5 -14.5t-14.5 -6.5q-99 0 -182.5 48.5t-132 132t-48.5 182.5q0 8 6.5 14.5t14.5 6.5h75q9 0 15 -6.5t6 -14.5q0 -40 12 -76q4 -13 -5 -22l-47 -47q47 -93 141 -141l47 47q9 9 22 5q36 -12 76 -12zM341 192q0 62 -43.5 105.5 t-105.5 43.5v43q80 0 136 -56t56 -136h-43zM256 192q0 27 -18.5 45.5t-45.5 18.5v43q44 0 75.5 -31.5t31.5 -75.5h-43z" />
-<glyph unicode="" horiz-adv-x="384" d="M363 117q8 0 14.5 -6t6.5 -15v-75q0 -8 -6.5 -14.5t-14.5 -6.5q-99 0 -182.5 48.5t-132 132t-48.5 182.5q0 8 6.5 14.5t14.5 6.5h75q9 0 15 -6.5t6 -14.5q0 -40 12 -76q4 -13 -5 -22l-47 -47q47 -93 141 -141l47 47q9 9 22 5q36 -12 76 -12zM363 363q8 0 14.5 -6.5 t6.5 -15.5v-85q0 -9 -6.5 -15t-14.5 -6h-107q-9 0 -15 6t-6 15v85q0 9 6 15.5t15 6.5v10q0 22 15.5 38t37.5 16t38 -16t16 -38v-10zM346 363v10q0 15 -11 26t-26 11t-25.5 -11t-10.5 -26v-10h73z" />
-<glyph unicode="" horiz-adv-x="512" d="M139 331v-75h-32v128h128v-32h-75l96 -96l128 128l21 -21l-149 -150zM506 92q6 -6 6 -15t-6 -15l-53 -53q-6 -6 -15 -6t-15 6q-27 24 -57 40q-12 5 -12 19v66q-47 15 -98 15t-98 -15v-66q0 -14 -12 -20q-32 -16 -57 -39q-6 -6 -15 -6t-15 6l-53 53q-6 6 -6 15t6 15 q105 100 250 100t250 -100z" />
-<glyph unicode="" horiz-adv-x="384" d="M363 117q8 0 14.5 -6t6.5 -15v-75q0 -8 -6.5 -14.5t-14.5 -6.5q-99 0 -182.5 48.5t-132 132t-48.5 182.5q0 8 6.5 14.5t14.5 6.5h75q9 0 15 -6.5t6 -14.5q0 -40 12 -76q4 -13 -5 -22l-47 -47q47 -93 141 -141l47 47q9 9 22 5q36 -12 76 -12zM192 384h192v-149h-128 l-64 -64v213z" />
-<glyph unicode="" horiz-adv-x="384" d="M299 384v-149h-43v149h43zM363 117q8 0 14.5 -6t6.5 -15v-75q0 -8 -6.5 -14.5t-14.5 -6.5q-99 0 -182.5 48.5t-132 132t-48.5 182.5q0 8 6.5 14.5t14.5 6.5h75q9 0 15 -6.5t6 -14.5q0 -40 12 -76q4 -13 -5 -22l-47 -47q47 -93 141 -141l47 47q9 9 22 5q36 -12 76 -12z M341 384h43v-149h-43v149z" />
-<glyph unicode="" horiz-adv-x="512" d="M506 92q6 -6 6 -15t-6 -15l-53 -53q-6 -6 -15 -6t-15 6q-26 24 -57 40q-12 5 -12 19v66q-47 15 -98 15t-98 -15v-66q0 -14 -12 -20q-32 -16 -57 -39q-6 -6 -15 -6t-15 6l-53 53q-6 6 -6 15t6 15q105 100 250 100t250 -100zM451 314l-76 -75l-30 30l76 76zM277 405v-106 h-42v106h42zM137 239q-74 75 -76 75l30 31l76 -76z" />
-<glyph unicode="" horiz-adv-x="384" d="M213 256v-43h-42v43h42zM299 256v-43h-43v43h43zM363 117q8 0 14.5 -6t6.5 -15v-75q0 -8 -6.5 -14.5t-14.5 -6.5q-99 0 -182.5 48.5t-132 132t-48.5 182.5q0 8 6.5 14.5t14.5 6.5h75q9 0 15 -6.5t6 -14.5q0 -40 12 -76q4 -13 -5 -22l-47 -47q47 -93 141 -141l47 47 q9 9 22 5q36 -12 76 -12zM341 256h43v-43h-43v43z" />
-<glyph unicode="" horiz-adv-x="384" d="M299 384v-107h-22v107h22zM256 341v-64h-64v22h43v21h-43v64h64v-21h-43v-22h43zM320 384h64v-64h-43v-43h-21v107zM363 341v22h-22v-22h22zM363 117q8 0 14.5 -6t6.5 -15v-75q0 -8 -6.5 -14.5t-14.5 -6.5q-99 0 -182.5 48.5t-132 132t-48.5 182.5q0 8 6.5 14.5t14.5 6.5 h75q9 0 15 -6.5t6 -14.5q0 -40 12 -76q4 -13 -5 -22l-47 -47q48 -93 141 -141l47 47q9 9 22 5q36 -12 76 -12z" />
-<glyph unicode="" horiz-adv-x="384" d="M77 218q47 -93 141 -141l47 47q9 10 22 5q36 -12 76 -12q8 0 14.5 -6t6.5 -15v-75q0 -8 -6.5 -14.5t-14.5 -6.5q-99 0 -182.5 48.5t-132 132t-48.5 182.5q0 8 6.5 14.5t14.5 6.5h75q9 0 15 -6.5t6 -14.5q0 -40 12 -76q4 -13 -5 -22z" />
-<glyph unicode="" d="M364 343q63 -63 63 -151t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t150.5 62.5h22v-176q21 -12 21 -37q0 -18 -12.5 -30.5t-30 -12.5t-30 12.5t-12.5 30.5q0 24 21 37v45q-28 -7 -46 -30t-18 -52q0 -35 25 -60t60.5 -25t60.5 25t25 60t-25 60l30 30 q37 -37 37 -90t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5q0 47 30.5 82.5t76.5 43.5v43q-64 -8 -106.5 -56t-42.5 -113q0 -71 50 -121t120.5 -50t120.5 50t50 121q0 70 -50 121z" />
-<glyph unicode="" d="M332 144l-34 35q1 7 1 13q0 35 -25 60t-61 25q-4 0 -13 -1l-34 35q23 9 47 9q53 0 90.5 -37.5t37.5 -90.5q0 -25 -9 -48zM213 363q-42 0 -80 -20l-31 31q52 31 111 31q89 0 151.5 -62.5t62.5 -150.5q0 -60 -32 -111l-31 31q20 38 20 80q0 71 -50 121t-121 50zM27 395 l21 -22l357 -357l-27 -27l-160 161l-5 -1q-17 0 -29.5 12.5t-12.5 30.5v4l-34 34q-9 -19 -9 -38q0 -49 43 -74l-22 -37q-29 17 -46.5 46.5t-17.5 64.5q0 38 21 69l-31 31q-32 -44 -32 -100q0 -47 23 -86t62 -62l-22 -37q-48 29 -77 78t-29 107q0 73 45 131l-45 45z" />
-<glyph unicode="" d="M213.5 213q17.5 0 30 -12.5t12.5 -30t-12.5 -30t-30 -12.5t-30 12.5t-12.5 30t12.5 30t30 12.5zM341 171q0 -35 -17 -64.5t-47 -46.5l-21 37q43 25 43 74q0 35 -25 60t-60.5 25t-60.5 -25t-25 -60q0 -49 43 -74l-22 -37q-29 17 -46.5 46.5t-17.5 64.5q0 53 37.5 90.5 t90.5 37.5t90.5 -37.5t37.5 -90.5zM213.5 384q88.5 0 151 -62.5t62.5 -150.5q0 -59 -29 -108t-78 -77l-21 37q39 23 62 62t23 86q0 70 -50 120t-120.5 50t-120.5 -50t-50 -120q0 -47 23 -86t62 -62l-22 -37q-48 28 -77 77t-29 108q0 88 62.5 150.5t151 62.5z" />
-<glyph unicode="" d="M26 317l270 110l15 -36l-177 -71h250q18 0 30.5 -12.5t12.5 -30.5v-256q0 -17 -12.5 -29.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 29.5v256q0 14 7.5 24.5t18.5 15.5zM106.5 21q26.5 0 45.5 19t19 45.5t-19 45t-45.5 18.5t-45 -18.5t-18.5 -45t18.5 -45.5t45 -19z M384 192v85h-341v-85h256v43h42v-43h43z" />
-<glyph unicode="" horiz-adv-x="469" d="M256 192h149v-32h-149v32zM256 213h149h-149zM256 107h149h-149zM427 363q17 0 29.5 -12.5t12.5 -30.5v-277q0 -18 -12.5 -30.5t-29.5 -12.5h-384q-18 0 -30.5 12.5t-12.5 30.5v277q0 18 12.5 30.5t30.5 12.5h384zM427 43v277h-192v-277h192z" />
-<glyph unicode="" horiz-adv-x="331" d="M59 297q44 44 106.5 44t106.5 -44l-31 -30q-31 31 -75.5 31t-76.5 -31zM165.5 427q96.5 0 165.5 -69l-30 -30q-56 56 -135.5 56t-135.5 -56l-30 30q69 69 165.5 69zM226 234q10 0 17.5 -7t6.5 -17v-207q0 -10 -7 -17t-17 -7h-122q-10 0 -17 7t-7 17v207q0 10 7 17.5 t17 7.5zM229 21v171h-128v-171h128z" />
-<glyph unicode="" horiz-adv-x="332" d="M230 256q9 0 15 -6.5t6 -14.5v-256q0 -9 -6 -15.5t-15 -6.5h-128q-9 0 -15 6.5t-6 15.5v256q0 8 6 14.5t15 6.5h128zM166 128q18 0 30.5 12.5t12.5 30t-12.5 30t-30.5 12.5t-30.5 -12.5t-12.5 -30t12.5 -30t30.5 -12.5zM60 319q44 44 106 44t106 -44l-31 -30 q-31 31 -75 31t-76 -31zM166 448q98 0 166 -69l-30 -30q-56 56 -136 56q-79 0 -136 -56l-30 30q69 69 166 69z" />
-<glyph unicode="" horiz-adv-x="384" d="M367 322q-40 36 -90 36t-89 -36l-17 17q44 45 106 45t107 -45zM348 305l-17 -17q-22 21 -54 21t-53 -21l-17 17q30 30 70.5 30t70.5 -30zM341 171q18 0 30.5 -12.5t12.5 -30.5v-85q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v85q0 18 12.5 30.5 t30.5 12.5h213v85h43v-85h42zM107 64v43h-43v-43h43zM181 64v43h-42v-43h42zM256 64v43h-43v-43h43z" />
-<glyph unicode="" horiz-adv-x="384" d="M358 220q11 -3 18.5 -14.5t7.5 -24.5v-117q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v85q0 18 12.5 30.5t30.5 12.5h268l-300 109l15 40zM85 85v43h-42v-43h42zM341 85v43h-213v-43h213z" />
-<glyph unicode="" horiz-adv-x="299" d="M235 427q26 0 45 -19t19 -45v-342q0 -26 -19 -45t-45 -19h-171q-27 0 -45.5 19t-18.5 45v342q0 26 18.5 45t45.5 19h171zM192 0v21h-85v-21h85zM261 64v299h-224v-299h224z" />
-<glyph unicode="" horiz-adv-x="299" d="M256 426q18 0 30.5 -12t12.5 -30v-384q0 -18 -12.5 -30.5t-30.5 -12.5h-213q-18 0 -30.5 12.5t-12.5 30.5v384q0 18 12.5 30.5t30.5 12.5zM256 43v298h-213v-298h213zM235 171l-86 -86l-85 86h64v106h43v-106h64z" />
-<glyph unicode="" horiz-adv-x="384" d="M213 273l-85 -85l85 -86l-21 -21l-85 85l-86 -85l-21 21l85 86l-85 85l21 21l86 -85l85 85zM341 427q18 0 30.5 -12.5t12.5 -30.5v-384q0 -18 -12.5 -30.5t-30.5 -12.5h-213q-18 0 -30.5 12.5t-12.5 30.5v64h43v-43h213v342h-213v-43h-43v64q0 18 12.5 30.5t30.5 12.5 h213z" />
-<glyph unicode="" horiz-adv-x="299" d="M171 299v-43h-43v43h43zM171 213v-128h-43v128h43zM256 426q18 0 30.5 -12t12.5 -30v-384q0 -18 -12.5 -30.5t-30.5 -12.5h-213q-18 0 -30.5 12.5t-12.5 30.5v384q0 18 12.5 30.5t30.5 12.5zM256 43v298h-213v-298h213z" />
-<glyph unicode="" horiz-adv-x="277" d="M224 427q22 0 37.5 -16t15.5 -38v-362q0 -22 -15.5 -38t-37.5 -16h-171q-22 0 -37.5 16t-15.5 38v362q0 22 15.5 38t37.5 16h171zM138.5 -21q13.5 0 23 9t9.5 22.5t-9.5 23t-23 9.5t-22.5 -9.5t-9 -23t9 -22.5t22.5 -9zM235 64v299h-192v-299h192z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 341q17 0 29.5 -12.5t12.5 -29.5v-214q0 -17 -12.5 -29.5t-29.5 -12.5h-384q-18 0 -30.5 12.5t-12.5 29.5v214q0 17 12.5 29.5t30.5 12.5h384zM384 85v214h-299v-214h299zM192 107q-9 0 -15 6t-6 15v64q0 9 6 15t15 6v22q0 17 12.5 29.5t30 12.5t30 -12.5t12.5 -29.5 v-22q9 0 15.5 -6t6.5 -15v-64q0 -9 -6.5 -15t-15.5 -6h-85zM209 235v-22h51v22q0 10 -7.5 17.5t-18 7.5t-18 -7.5t-7.5 -17.5z" />
-<glyph unicode="" horiz-adv-x="469" d="M0 299q0 17 12.5 29.5t30.5 12.5h384q17 0 29.5 -12.5t12.5 -29.5v-214q0 -17 -12.5 -29.5t-29.5 -12.5h-384q-18 0 -30.5 12.5t-12.5 29.5v214zM384 299h-299v-214h299v214z" />
-<glyph unicode="" horiz-adv-x="363" d="M320 427q18 0 30.5 -12.5t12.5 -30.5v-384q0 -18 -12.5 -30.5t-30.5 -12.5h-213q-18 0 -30.5 12.5t-12.5 30.5v64h43v-43h213v342h-213v-43h-43v64q0 18 12.5 30.5t30.5 12.5h213zM145 213q10 0 18 -8t8 -19v-75q0 -10 -8.5 -18t-19.5 -8h-117q-10 0 -18 8.5t-8 19.5v75 q0 9 8 17t18 8v32q0 22 18 38t41 16t41.5 -16t18.5 -38v-32zM117 213v32q0 13 -9 20.5t-22.5 7.5t-23 -7.5t-9.5 -20.5v-32h64z" />
-<glyph unicode="" horiz-adv-x="299" d="M107 107q-9 0 -15.5 6t-6.5 15v64q0 9 6.5 15t15.5 6v22q0 17 12.5 29.5t30 12.5t30 -12.5t12.5 -29.5v-22q9 0 15 -6t6 -15v-64q0 -9 -6 -15t-15 -6h-85zM124 235v-22h51v22q0 10 -7.5 17.5t-18 7.5t-18 -7.5t-7.5 -17.5zM256 427q18 0 30.5 -12.5t12.5 -30.5v-384 q0 -18 -12.5 -30.5t-30.5 -12.5h-213q-18 0 -30.5 12.5t-12.5 30.5v384q0 18 12.5 30.5t30.5 12.5h213zM256 43v298h-213v-298h213z" />
-<glyph unicode="" horiz-adv-x="426" d="M386 284q40 -39 40 -92t-40 -90l-21 22q29 30 29 70t-29 68zM341 239q20 -21 20 -47t-20 -45l-21 22q18 24 0 49zM256 427q18 0 30.5 -12.5t12.5 -30.5v-384q0 -18 -12.5 -30.5t-30.5 -12.5h-213q-18 0 -30.5 12.5t-12.5 30.5v384q0 18 12.5 30.5t30.5 12.5h213zM256 21 v342h-213v-342h213z" />
-<glyph unicode="" horiz-adv-x="256" d="M21 -64v43h43v-43h-43zM107 -64v43h42v-43h-42zM192 -64v43h43v-43h-43zM213 448q18 0 30.5 -12.5t12.5 -30.5v-341q0 -18 -12.5 -30.5t-30.5 -12.5h-170q-18 0 -30.5 12.5t-12.5 30.5v341q0 18 12.5 30.5t30.5 12.5h170zM213 107v256h-170v-256h170z" />
-<glyph unicode="" horiz-adv-x="385" d="M189 181l23 -19q4 -4 2 -6l-21 -37q-2 -2 -7 -2l-27 11q-13 -9 -19 -11l-5 -27q-4 -5 -6 -5h-43q-2 0 -3.5 1.5t-0.5 3.5l-4 27q-7 2 -20 11l-29 -9q-3 -2 -7 3l-21 36q0 4 2 8l23 17v22l-23 17q-4 4 -2 6l21 37q2 2 7 2l27 -11q13 9 20 11l4 27q4 5 6 5h43q6 0 6 -5 l5 -27q6 -2 19 -11l27 9q3 2 7 -3l21 -36q0 -4 -2 -6l-23 -17v-22zM107.5 149q17.5 0 30 12.5t12.5 30.5t-12.5 30.5t-30 12.5t-30 -12.5t-12.5 -30.5t12.5 -30.5t30 -12.5zM342 427q18 0 30.5 -12.5t12.5 -30.5v-384q0 -18 -12.5 -30.5t-30.5 -12.5h-213q-18 0 -30.5 12.5 t-12.5 30.5v64h43v-43h213v342h-213v-43h-43v64q0 18 12.5 30.5t30.5 12.5h213z" />
-<glyph unicode="" horiz-adv-x="299" d="M256 426q18 0 30.5 -12t12.5 -30v-384q0 -18 -12.5 -30.5t-30.5 -12.5h-213q-18 0 -30.5 12.5t-12.5 30.5v384q0 18 12.5 30.5t30.5 12.5zM256 43v298h-213v-298h213z" />
-<glyph unicode="" horiz-adv-x="299" d="M256 405q18 0 30.5 -12.5t12.5 -29.5v-342q0 -17 -12.5 -29.5t-30.5 -12.5h-213q-18 0 -30.5 12.5t-12.5 29.5v342q0 17 12.5 29.5t30.5 12.5h213zM149.5 363q-17.5 0 -30 -12.5t-12.5 -30.5t12.5 -30.5t30 -12.5t30 12.5t12.5 30.5t-12.5 30.5t-30 12.5zM149 21 q44 0 75.5 31.5t31.5 75.5t-31.5 75.5t-75.5 31.5t-75 -31.5t-31 -75.5t31 -75.5t75 -31.5zM149.5 192q26.5 0 45 -18.5t18.5 -45.5t-18.5 -45.5t-45 -18.5t-45.5 18.5t-19 45.5t19 45.5t45.5 18.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M320 448q27 0 45.5 -18.5t18.5 -45.5v-384q0 -27 -18.5 -45.5t-45.5 -18.5h-256q-27 0 -45.5 18.5t-18.5 45.5v384q0 27 18.5 45.5t45.5 18.5h256zM235 -21v21h-86v-21h86zM347 43v341h-310v-341h310z" />
-<glyph unicode="" horiz-adv-x="405" d="M352 448q22 0 37.5 -15.5t15.5 -37.5v-406q0 -22 -15.5 -37.5t-37.5 -15.5h-299q-22 0 -37.5 15.5t-15.5 37.5v406q0 22 15.5 37.5t37.5 15.5h299zM202.5 -43q13.5 0 23 9.5t9.5 23t-9.5 22.5t-23 9t-22.5 -9t-9 -22.5t9 -23t22.5 -9.5zM363 43v341h-320v-341h320z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 363q17 0 29.5 -12.5t12.5 -30.5v-256q0 -18 -12.5 -30.5t-29.5 -12.5h-384q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h384zM384 64v256h-299v-256h299z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 320q17 0 29.5 -12.5t12.5 -30.5v-256q0 -17 -12.5 -29.5t-29.5 -12.5h-384q-18 0 -30.5 12.5t-12.5 29.5v256q0 18 12.5 30.5t30.5 12.5h162l-71 70l15 15l86 -85l85 85l15 -15l-70 -70h162zM427 21v256h-384v-256h384zM171 235l149 -86l-149 -85v171z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 384q17 0 29.5 -12.5t12.5 -30.5v-256q0 -17 -12.5 -29.5t-29.5 -12.5h-107v-43h-171v43h-106q-18 0 -30.5 12.5t-12.5 29.5v256q0 18 12.5 30.5t30.5 12.5h384zM427 85v256h-384v-256h384zM384 277v-42h-235v42h235zM384 192v-43h-235v43h235zM128 277v-42h-43v42 h43zM128 192v-43h-43v43h43z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 384q17 0 29.5 -12.5t12.5 -30.5v-256q0 -17 -12.5 -29.5t-29.5 -12.5h-107v-43h-171v43h-106q-18 0 -30.5 12.5t-12.5 29.5v256q0 18 12.5 30.5t30.5 12.5h384zM427 85v256h-384v-256h384zM320 213l-149 -85v171z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 384q17 0 29.5 -12.5t12.5 -30.5v-256q0 -17 -12.5 -29.5t-29.5 -12.5h-107v-43h-171v43h-106q-18 0 -30.5 12.5t-12.5 29.5v256q0 18 12.5 30.5t30.5 12.5h384zM427 85v256h-384v-256h384z" />
-<glyph unicode="" horiz-adv-x="303" d="M218 299h85v-86h-21v-42q0 -18 -12.5 -30.5t-30.5 -12.5h-64v-65q26 -13 26 -42q0 -19 -14 -33t-33.5 -14t-33 14t-13.5 33q0 29 25 42v65h-64q-17 0 -29.5 12.5t-12.5 30.5v44q-26 13 -26 41q0 19 14 33t33 14t33 -14t14 -33q0 -28 -26 -41v-44h64v170h-42l64 86l64 -86 h-43v-170h64v42h-21v86z" />
-<glyph unicode="" horiz-adv-x="405" d="M405 309v-228l-238 239h132q8 0 14.5 -6.5t6.5 -14.5v-75zM27 405l378 -378l-27 -27l-68 68q-6 -4 -11 -4h-256q-9 0 -15.5 6.5t-6.5 14.5v214q0 8 6.5 14.5t15.5 6.5h15l-58 58z" />
-<glyph unicode="" d="M341 245l86 86v-278l-86 86v-75q0 -9 -6 -15t-15 -6h-299q-8 0 -14.5 6t-6.5 15v256q0 9 6.5 15t14.5 6h299q9 0 15 -6t6 -15v-75zM235 117l74 75l-74 75v-54h-128v54l-75 -75l75 -75v54h128v-54z" />
-<glyph unicode="" horiz-adv-x="384" d="M299 224l85 85v-234l-85 85v-75q0 -8 -6.5 -14.5t-15.5 -6.5h-256q-8 0 -14.5 6.5t-6.5 14.5v214q0 8 6.5 14.5t14.5 6.5h256q9 0 15.5 -6.5t6.5 -14.5v-75z" />
-<glyph unicode="" horiz-adv-x="341" d="M341 192q0 -40 -17 -75t-48 -59l-20 -122h-171l-20 122q-65 51 -65 134t65 134l20 122h171l20 -122q31 -24 48 -59t17 -75zM43 192q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
-<glyph unicode="" horiz-adv-x="497" d="M249 350q-107 1 -190 -55l43 -53q49 29 107 38q108 15 187 -38l42 53q-83 56 -189 55zM248.5 389q138.5 0 248.5 -85l-248 -309l-249 309q110 85 248.5 85z" />
-<glyph unicode="" horiz-adv-x="469" d="M0 256q64 64 149.5 86.5t171 0t148.5 -86.5l-42 -43q-80 80 -192.5 80t-191.5 -80zM171 85q26 27 63.5 27t64.5 -27l-64 -64zM85 171q62 61 149.5 61t149.5 -61l-43 -43q-44 44 -106.5 44t-106.5 -44z" />
-<glyph unicode="" horiz-adv-x="512" d="M256 384q136 0 256 -91l-256 -314l-256 315q119 90 256 90zM277 107v128h-42v-128h42zM235 277h42v43h-42v-43z" />
-<glyph unicode="" horiz-adv-x="503" d="M482 107q8 0 14.5 -7t6.5 -15v-85q0 -8 -6.5 -14.5t-14.5 -6.5h-107q-8 0 -14.5 6.5t-6.5 14.5v85q0 8 6.5 15t14.5 7v32q0 22 15.5 37.5t38 15.5t38 -15.5t15.5 -37.5v-32zM461 107v32q0 12 -9.5 22t-22.5 10t-22.5 -10t-9.5 -22v-32h64zM322 139v-56l-75 -94l-247 310 q114 85 247.5 85t247.5 -85l-45 -56q-6 2 -21 2q-45 0 -76 -31t-31 -75z" />
-<glyph unicode="" horiz-adv-x="497" d="M497 299l-117 -145l-220 220q44 10 88 10q136 0 249 -85zM356 123l74 -74l-27 -27l-71 71l-83 -103l-1 -1v1l-248 309q35 27 79 47l-44 44l27 27z" />
-<glyph unicode="" horiz-adv-x="497" d="M249 350q-105 0 -190 -55l190 -237l189 237q-84 55 -189 55zM248.5 389q49.5 0 96 -11t80.5 -29.5t47 -27t25 -17.5l-248 -309v0l-249 309q12 9 25 17.5t47.5 27t80.5 29.5t95.5 11z" />
-<glyph unicode="" horiz-adv-x="497" d="M249 -10l-1 -1v1l-248 309q113 85 248.5 85t248.5 -85zM68 214q82 63 180.5 63t180.5 -63l-180 -224l-1 -1v1z" />
-<glyph unicode="" horiz-adv-x="320" d="M320 333l-247 -248h140v-42h-213v213h43v-141l247 248z" />
-<glyph unicode="" horiz-adv-x="341" d="M341 213v-42h-259l119 -120l-30 -30l-171 171l171 171l30 -30l-119 -120h259z" />
-<glyph unicode="" horiz-adv-x="273" d="M243 13l-72 72l30 30l72 -72zM41 277l96 96l96 -96h-75v-136l-128 -128l-30 30l115 115v119h-74z" />
-<glyph unicode="" horiz-adv-x="384" d="M354 299l30 -30l-192 -192l-149 149v-98h-43v171h171v-43h-98l119 -119z" />
-<glyph unicode="" horiz-adv-x="320" d="M107 341h213v-213h-43v141l-247 -248l-30 30l247 248h-140v42z" />
-<glyph unicode="" horiz-adv-x="341" d="M171 363l170 -171l-170 -171l-30 30l119 120h-260v42h260l-119 120z" />
-<glyph unicode="" horiz-adv-x="341" d="M213 363h128v-128l-49 49l-61 -62l-30 30l61 62zM128 363l-49 -49l113 -113v-180h-43v162l-100 101l-49 -49v128h128z" />
-<glyph unicode="" horiz-adv-x="469" d="M192 256v64h-64l107 107l106 -107h-64v-64h-85zM171 235v-86h-64v-64l-107 107l107 107v-64h64zM469 192l-106 -107v64h-64v86h64v64zM277 128v-64h64l-106 -107l-107 107h64v64h85z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM107 235l106 -107l107 107h-213z" />
-<glyph unicode="" horiz-adv-x="213" d="M0 245h213l-106 -106z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM256 299l-107 -107l107 -107v214z" />
-<glyph unicode="" horiz-adv-x="107" d="M107 299v-214l-107 107z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM171 299v-214l106 107z" />
-<glyph unicode="" horiz-adv-x="107" d="M0 85v214l107 -107z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM213 260l-106 -106h213z" />
-<glyph unicode="" horiz-adv-x="213" d="M213 139h-213l107 106z" />
-<glyph unicode="" horiz-adv-x="256" d="M226 265l30 -30l-128 -128l-128 128l30 30l98 -98z" />
-<glyph unicode="" horiz-adv-x="158" d="M158 290l-98 -98l98 -98l-30 -30l-128 128l128 128z" />
-<glyph unicode="" horiz-adv-x="158" d="M30 320l128 -128l-128 -128l-30 30l98 98l-98 98z" />
-<glyph unicode="" horiz-adv-x="256" d="M128 277l128 -128l-30 -30l-98 98l-98 -98l-30 30z" />
-<glyph unicode="" horiz-adv-x="341" d="M171 277v86l170 -171l-170 -171v86h-171v170h171z" />
-<glyph unicode="" horiz-adv-x="256" d="M149 384v-302l77 76l30 -30l-128 -128l-128 128l30 30l77 -76v302h42z" />
-<glyph unicode="" horiz-adv-x="384" d="M384 213v-42h-302l76 -77l-30 -30l-128 128l128 128l30 -30l-76 -77h302z" />
-<glyph unicode="" horiz-adv-x="405" d="M363 299h42v-128h-323l76 -77l-30 -30l-128 128l128 128l30 -30l-76 -77h281v86z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 213h302l-76 77l30 30l128 -128l-128 -128l-30 30l76 77h-302v42z" />
-<glyph unicode="" horiz-adv-x="448" d="M226 290l30 30l128 -128l-128 -128l-30 30l76 77h-302v42h302zM405 320h43v-256h-43v256z" />
-<glyph unicode="" horiz-adv-x="256" d="M107 0v302l-77 -76l-30 30l128 128l128 -128l-30 -30l-77 76v-302h-42z" />
-<glyph unicode="" horiz-adv-x="451" d="M138 298l139 -138l-139 -139l-138 139zM60 160l78 -78l78 78l-78 78zM394 293q57 -56 57 -135.5t-57 -135.5q-56 -56 -135 -56q-49 0 -93 24l32 31q29 -13 61 -13q62 0 105.5 44t43.5 105.5t-43.5 105.5t-105.5 44v-69l-91 90l91 90v-69q79 0 135 -56z" />
-<glyph unicode="" horiz-adv-x="451" d="M312 298l139 -138l-139 -139l-138 139zM390 160l-78 78l-78 -78l78 -78zM56 293q56 56 136 56v69l90 -90l-90 -90v69q-62 0 -105.5 -44t-43.5 -105.5t43.5 -105.5t105.5 -44q31 0 60 13l32 -31q-43 -24 -92 -24q-80 0 -136 56t-56 135.5t56 135.5z" />
-<glyph unicode="" horiz-adv-x="340" d="M65 266q-17 -24 -22 -53h-43q6 46 35 83zM43 171q5 -28 22 -53l-30 -30q-29 37 -35 83h43zM65 57l30 31q24 -17 53 -22v-43q-46 5 -83 34zM191 361q63 -8 106 -56t43 -113t-43 -113t-106 -56v43q45 8 75.5 43.5t30.5 82.5t-30.5 82.5t-75.5 43.5v-83l-98 95l98 97v-66z " />
-<glyph unicode="" horiz-adv-x="340" d="M246 330l-97 -95v83q-45 -8 -75.5 -43.5t-30.5 -82.5t30.5 -82.5t75.5 -43.5v-43q-63 8 -106 56t-43 113t43 113t106 56v66zM340 213h-43q-5 29 -22 53l30 30q29 -37 35 -83zM192 66q28 5 52 22l31 -31q-37 -28 -83 -34v43zM275 118q17 24 22 53h43q-6 -46 -35 -83z" />
-<glyph unicode="" horiz-adv-x="469" d="M235 96l-86 85h64v192h43v-192h64zM427 373q17 0 29.5 -12.5t12.5 -29.5v-299q0 -18 -12.5 -30.5t-29.5 -12.5h-384q-18 0 -30.5 12.5t-12.5 30.5v299q0 17 12.5 29.5t30.5 12.5h128v-42h-128v-299h384v299h-128v42h128z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 384q17 0 29.5 -12.5t12.5 -30.5v-299q0 -17 -12.5 -29.5t-29.5 -12.5h-384q-18 0 -30.5 12.5t-12.5 29.5v86h43v-86h384v300h-384v-86h-43v85q0 18 12.5 30.5t30.5 12.5h384zM213 107v64h-213v42h213v64l86 -85z" />
-<glyph unicode="" d="M341 363l86 -86h-64v-149q0 -35 -25 -60t-60.5 -25t-60.5 25t-25 60v149q0 18 -12.5 30.5t-30 12.5t-30 -12.5t-12.5 -30.5v-149h64l-86 -85l-85 85h64v149q0 36 25 61t60.5 25t60.5 -25t25 -61v-149q0 -18 12.5 -30.5t30 -12.5t30 12.5t12.5 30.5v149h-64z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM96 256h53v-85h43v85h53l-74 75zM331 128h-54v85h-42v-85h-54l75 -75z" />
-<glyph unicode="" horiz-adv-x="299" d="M235 85h64l-86 -85l-85 85h64v150h43v-150zM85 384l86 -85h-64v-150h-43v150h-64z" />
-<glyph unicode="" horiz-adv-x="384" d="M85 213v-64h150v-42h-150v-64l-85 85zM384 256l-85 -85v64h-150v42h150v64z" />
-<glyph unicode="" d="M299 64l49 49l-105 104l-85 -85l-158 158l30 30l128 -128l85 85l135 -134l49 49v-128h-128z" />
-<glyph unicode="" horiz-adv-x="405" d="M405 192l-85 -85v64h-320v42h320v64z" />
-<glyph unicode="" d="M299 320h128v-128l-49 49l-135 -134l-85 85l-128 -128l-30 30l158 158l85 -85l105 104z" />
-<glyph unicode="" horiz-adv-x="196" d="M0 51l98 98l98 -98l-30 -30l-68 68l-68 -68zM196 333l-98 -98l-98 98l30 30l68 -68l68 68z" />
-<glyph unicode="" horiz-adv-x="196" d="M98 324l-68 -68l-30 30l98 98l98 -98l-30 -30zM98 60l68 68l30 -30l-98 -98l-98 98l30 30z" />
-<glyph unicode="" horiz-adv-x="341" d="M0 277v86h85v-86h-85zM128 21v86h85v-86h-85zM0 21v86h85v-86h-85zM0 149v86h85v-86h-85zM128 149v86h85v-86h-85zM256 363h85v-86h-85v86zM128 277v86h85v-86h-85zM256 149v86h85v-86h-85zM256 21v86h85v-86h-85z" />
-<glyph unicode="" horiz-adv-x="485" d="M171 363h-31l-43 42h330q17 0 29.5 -12.5t12.5 -29.5v-330l-42 43v31h-31l-43 42h74v86h-86v-74l-42 43v31h-31l-43 42h74v86h-86v-74l-42 43v31zM341 363v-86h86v86h-86zM27 421l458 -458l-27 -27l-43 43h-330q-17 0 -29.5 12.5t-12.5 29.5v330l-43 43zM213 180v-31h31z M85 308v-31h31zM171 21v86h-86v-86h86zM171 149v74l-12 12h-74v-86h86zM299 21v74l-12 12h-74v-86h86zM341 21h31l-31 31v-31z" />
-<glyph unicode="" d="M384 405q18 0 30.5 -12.5t12.5 -29.5v-342q0 -17 -12.5 -29.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 29.5v342q0 17 12.5 29.5t30.5 12.5h341zM128 21v86h-85v-86h85zM128 149v86h-85v-86h85zM128 277v86h-85v-86h85zM256 21v86h-85v-86h85zM256 149v86h-85v-86h85z M256 277v86h-85v-86h85zM384 21v86h-85v-86h85zM384 149v86h-85v-86h85zM384 277v86h-85v-86h85z" />
-<glyph unicode="" horiz-adv-x="405" d="M384 171q9 0 15 -6.5t6 -15.5v-128q0 -8 -6 -14.5t-15 -6.5h-363q-8 0 -14.5 6.5t-6.5 14.5v128q0 9 6.5 15.5t14.5 6.5h363zM384 384q9 0 15 -6.5t6 -14.5v-128q0 -9 -6 -15.5t-15 -6.5h-363q-8 0 -14.5 6.5t-6.5 15.5v128q0 8 6.5 14.5t14.5 6.5h363z" />
-<glyph unicode="" horiz-adv-x="363" d="M0 64v277h64v-277h-64zM299 341h64v-277h-64v277zM85 64v277h192v-277h-192z" />
-<glyph unicode="" d="M107 43v320h213v-320h-213zM0 85v235h85v-235h-85zM341 320h86v-235h-86v235z" />
-<glyph unicode="" horiz-adv-x="363" d="M128 64v277h107v-277h-107zM0 64v277h107v-277h-107zM256 341h107v-277h-107v277z" />
-<glyph unicode="" horiz-adv-x="405" d="M0 256v85h85v-85h-85zM0 149v86h85v-86h-85zM107 149v86h85v-86h-85zM213 149v86h86v-86h-86zM107 256v85h85v-85h-85zM213 341h86v-85h-86v85zM320 149v86h85v-86h-85zM0 43v85h85v-85h-85zM107 43v85h85v-85h-85zM213 43v85h86v-85h-86zM320 43v85h85v-85h-85zM320 341 h85v-85h-85v85z" />
-<glyph unicode="" horiz-adv-x="405" d="M0 43v149h128v-149h-128zM149 43v149h256v-149h-256zM0 341h405v-128h-405v128z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 171v213h171v-213h-171zM0 0v128h171v-128h-171zM213 0v213h171v-213h-171zM213 384h171v-128h-171v128z" />
-<glyph unicode="" horiz-adv-x="405" d="M0 0v64h405v-64h-405zM384 277q9 0 15 -6t6 -15v-128q0 -9 -6 -15t-15 -6h-363q-8 0 -14.5 6t-6.5 15v128q0 9 6.5 15t14.5 6h363zM0 384h405v-64h-405v64z" />
-<glyph unicode="" horiz-adv-x="341" d="M0 128v43h341v-43h-341zM0 43v42h341v-42h-341zM0 213v43h341v-43h-341zM0 341h341v-42h-341v42z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 171v42h43v-42h-43zM0 85v43h43v-43h-43zM0 256v43h43v-43h-43zM85 171v42h299v-42h-299zM85 85v43h299v-43h-299zM85 299h299v-43h-299v43z" />
-<glyph unicode="" horiz-adv-x="363" d="M0 149v86h85v-86h-85zM0 43v85h85v-85h-85zM0 256v85h85v-85h-85zM107 149v86h256v-86h-256zM107 43v85h256v-85h-256zM107 341h256v-85h-256v85z" />
-<glyph unicode="" horiz-adv-x="363" d="M0 213v128h107v-128h-107zM0 64v128h107v-128h-107zM128 64v128h107v-128h-107zM256 64v128h107v-128h-107zM128 213v128h107v-128h-107zM256 341h107v-128h-107v128z" />
-<glyph unicode="" horiz-adv-x="363" d="M128 64v128h107v-128h-107zM0 64v277h107v-277h-107zM256 64v128h107v-128h-107zM128 341h235v-128h-235v128z" />
-<glyph unicode="" horiz-adv-x="363" d="M0 64v128h363v-128h-363zM0 341h363v-128h-363v128z" />
-<glyph unicode="" d="M384 363q18 0 30.5 -12.5t12.5 -30.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h341zM43 192v-43h85v43h-85zM256 64v43h-213v-43h213zM384 64v43h-85v-43h85zM384 149v43h-213v-43h213z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 256v43h299v-43h-299zM0 171v42h299v-42h-299zM0 85v43h299v-43h-299zM341 85v43h43v-43h-43zM341 299h43v-43h-43v43zM341 171v42h43v-42h-43z" />
-<glyph unicode="" d="M384 363q18 0 30.5 -12.5t12.5 -30.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h341zM277 64v85h-234v-85h234zM277 171v85h-234v-85h234zM384 64v192h-85v-192h85z" />
-<glyph unicode="" horiz-adv-x="405" d="M85 341q9 0 15.5 -6t6.5 -15v-256q0 -9 -6.5 -15t-15.5 -6h-64q-8 0 -14.5 6t-6.5 15v256q0 9 6.5 15t14.5 6h64zM384 341q9 0 15 -6t6 -15v-256q0 -9 -6 -15t-15 -6h-64q-9 0 -15 6t-6 15v256q0 9 6 15t15 6h64zM235 341q8 0 14.5 -6t6.5 -15v-256q0 -9 -6.5 -15 t-14.5 -6h-64q-9 0 -15.5 6t-6.5 15v256q0 9 6.5 15t15.5 6h64z" />
-<glyph unicode="" horiz-adv-x="412" d="M213 171h171v-171h-171v171zM0 0v171h171v-171h-171zM0 384h171v-171h-171v171zM291 412l121 -121l-121 -120l-120 120z" />
-<glyph unicode="" d="M427 326l-28 -33l-98 83l28 32zM125 376l-97 -82l-28 32l98 82zM213.5 363q79.5 0 135.5 -56.5t56 -136t-56 -135.5t-135.5 -56t-136 56t-56.5 135.5t56.5 136t136 56.5zM213 21q62 0 106 44t44 106t-44 105.5t-106 43.5t-105.5 -43.5t-43.5 -105.5t43.5 -106t105.5 -44z M182 138l105 106l23 -23l-128 -128l-68 68l23 22z" />
-<glyph unicode="" horiz-adv-x="434" d="M221 320q-26 0 -51 -9l-33 32q40 20 84 20q79 0 135.5 -56.5t56.5 -135.5q0 -44 -20 -84l-32 32q9 26 9 52q0 62 -43.5 105.5t-105.5 43.5zM434 326l-27 -33l-99 83l28 32zM27 399l21 -21l372 -372l-27 -27l-47 47q-54 -47 -125 -47q-80 0 -136 56t-56 136q0 71 47 125 l-17 17l-24 -20l-30 31l23 19l-28 29zM316 56l-210 210q-35 -42 -35 -95q0 -62 44 -106t106 -44q54 0 95 35zM136 378l-18 -15l-31 30l19 15z" />
-<glyph unicode="" d="M125 376l-97 -82l-28 32l98 82zM427 326l-28 -33l-98 83l28 32zM213.5 363q79.5 0 135.5 -56.5t56 -136t-56 -135.5t-135.5 -56t-136 56t-56.5 135.5t56.5 136t136 56.5zM213 21q62 0 106 44t44 106t-44 105.5t-106 43.5t-105.5 -43.5t-43.5 -105.5t43.5 -106t105.5 -44z M235 256v-64h64v-43h-64v-64h-43v64h-64v43h64v64h43z" />
-<glyph unicode="" d="M125 376l-97 -82l-28 32l98 82zM427 326l-28 -33l-98 83l28 32zM213.5 363q79.5 0 135.5 -56.5t56 -136t-56 -135.5t-135.5 -56t-136 56t-56.5 135.5t56.5 136t136 56.5zM213 21q62 0 106 44t44 106t-44 105.5t-106 43.5t-105.5 -43.5t-43.5 -105.5t43.5 -106t105.5 -44z M149 213v43h128v-38l-77 -90h77v-43h-128v39l78 89h-78z" />
-<glyph unicode="" d="M427 326l-28 -33l-98 83l28 32zM125 376l-97 -82l-28 32l98 82zM224 277v-112l85 -50l-16 -26l-101 60v128h32zM213.5 363q79.5 0 135.5 -56.5t56 -136t-56 -135.5t-135.5 -56t-136 56t-56.5 135.5t56.5 136t136 56.5zM213 21q62 0 106 44t44 106t-44 105.5t-106 43.5 t-105.5 -43.5t-43.5 -105.5t43.5 -106t105.5 -44z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h21v43h43v-43h170v43h43v-43h21zM341 43v234h-298v-234h298zM85 235h107v-107h-107v107z" />
-<glyph unicode="" horiz-adv-x="384" d="M289 212l-127 -127l-68 68l23 23l45 -45l104 104zM341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h21v43h43v-43h170v43h43v-43h21zM341 43v234h-298v-234h298z" />
-<glyph unicode="" horiz-adv-x="384" d="M135 85l-23 23l52 52l-52 52l23 23l52 -52l52 52l22 -23l-52 -52l52 -52l-22 -23l-52 52zM341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h21v43h43v-43h170v43h43v-43h21z M341 43v234h-298v-234h298z" />
-<glyph unicode="" horiz-adv-x="384" d="M299 235v-43h-214v43h214zM341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h21v43h43v-43h170v43h43v-43h21zM341 43v234h-298v-234h298zM235 149v-42h-150v42h150z" />
-<glyph unicode="" horiz-adv-x="384" d="M299 192v-107h-107v107h107zM277 427h43v-43h21q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h21v43h43v-43h170v43zM341 43v234h-298v-234h298z" />
-<glyph unicode="" horiz-adv-x="384" d="M171 85.5q0 8.5 6 15t15 6.5t15 -6.5t6 -15t-6 -15t-15 -6.5t-15 6.5t-6 15zM171 384h21q80 0 136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136q0 46 20.5 86.5t56.5 66.5v1l145 -145l-30 -30l-116 115q-33 -41 -33 -94q0 -62 43.5 -105.5t105.5 -43.5t105.5 43.5 t43.5 105.5q0 56 -36.5 98t-91.5 50v-41h-42v85zM320 192q0 -9 -6.5 -15t-15 -6t-15 6t-6.5 15t6.5 15t15 6t15 -6t6.5 -15zM64 192q0 9 6.5 15t15 6t15 -6t6.5 -15t-6.5 -15t-15 -6t-15 6t-6.5 15z" />
-<glyph unicode="" d="M303.5 282.5q37.5 -37.5 37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90 38l90 90v128q53 0 90.5 -37.5zM213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM213.5 21q70.5 0 120.5 50t50 121t-50 121t-120.5 50 t-120.5 -50t-50 -121t50 -121t120.5 -50z" />
-<glyph unicode="" horiz-adv-x="448" d="M299 192q0 -18 -12.5 -30.5t-30.5 -12.5t-30.5 12.5t-12.5 30.5t12.5 30.5t30.5 12.5t30.5 -12.5t12.5 -30.5zM256 384q80 0 136 -56t56 -136t-56 -136t-136 -56q-65 0 -117 40l30 30q40 -27 87 -27q62 0 105.5 43.5t43.5 105.5t-43.5 105.5t-105.5 43.5t-105.5 -43.5 t-43.5 -105.5h64l-86 -85l-85 85h64q0 80 56 136t136 56z" />
-<glyph unicode="" horiz-adv-x="448" d="M256 384q80 0 136 -56t56 -136t-56 -136t-136 -56q-79 0 -136 56l31 31q43 -44 105 -44t105.5 43.5t43.5 105.5t-43.5 105.5t-105.5 43.5t-105.5 -43.5t-43.5 -105.5h64l-87 -86l-1 3l-83 83h64q0 80 56 136t136 56zM235 277h32v-90l74 -45l-15 -26l-91 55v106z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM213.5 21q70.5 0 120.5 50t50 121t-50 121t-120.5 50t-120.5 -50t-50 -121t50 -121t120.5 -50zM224 299v-112l96 -57l-16 -27l-112 68v128h32z" />
-<glyph unicode="" horiz-adv-x="411" d="M369 351l30 -30l-30 -31q42 -52 42 -119q0 -58 -32 -106l-31 31q20 35 20 75q0 62 -43.5 105.5t-105.5 43.5q-40 0 -75 -20l-31 31q48 32 106 32q67 0 120 -42zM283 427v-43h-128v43h128zM197 247v30h43v-73zM27 363l214 -214l164 -165l-27 -27l-53 54q-48 -32 -106 -32 q-80 0 -136 56t-56 136q0 58 32 106l-59 59zM219 21q40 0 75 21l-204 204q-21 -35 -21 -75q0 -62 44 -106t106 -44z" />
-<glyph unicode="" horiz-adv-x="384" d="M256 427v-43h-128v43h128zM171 149v128h42v-128h-42zM342 290q42 -52 42 -119q0 -80 -56 -136t-136 -56t-136 56t-56 135.5t56 136t136 56.5q67 0 120 -43l30 31q16 -13 30 -30zM192 21q62 0 105.5 44t43.5 106t-43.5 105.5t-105.5 43.5t-105.5 -43.5t-43.5 -105.5 t43.5 -106t105.5 -44z" />
-<glyph unicode="" horiz-adv-x="299" d="M0 107v85h299v-85q0 -62 -44 -106t-106 -44t-105.5 44t-43.5 106zM237 355q29 -21 45.5 -52.5t16.5 -67.5v-22h-299v22q0 36 16.5 67.5t44.5 52.5l-44 45l17 17l49 -49q32 16 66 16t66 -16l50 49l17 -17zM85.5 256q8.5 0 15 6.5t6.5 15t-6.5 15t-15 6.5t-15 -6.5 t-6.5 -15t6.5 -15t15 -6.5zM213.5 256q8.5 0 15 6.5t6.5 15t-6.5 15t-15 6.5t-15 -6.5t-6.5 -15t6.5 -15t15 -6.5z" />
-<glyph unicode="" d="M85 64v213h256v-213q0 -9 -6 -15t-15 -6h-21v-75q0 -13 -9.5 -22.5t-23 -9.5t-22.5 9.5t-9 22.5v75h-43v-75q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5v75h-21q-9 0 -15.5 6t-6.5 15zM32 277q13 0 22.5 -9t9.5 -23v-149q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5 t-9.5 22.5v149q0 14 9.5 23t22.5 9zM394.5 277q13.5 0 23 -9t9.5 -23v-149q0 -13 -9.5 -22.5t-23 -9.5t-22.5 9.5t-9 22.5v149q0 14 9 23t22.5 9zM289 402q52 -38 52 -103h-256q0 64 53 103l-28 28q-8 7 -0.5 14.5t15.5 0.5l32 -32q26 14 56 14t57 -14l31 32q8 7 15.5 -0.5 t-0.5 -14.5zM171 341v22h-22v-22h22zM277 341v22h-21v-22h21z" />
-<glyph unicode="" horiz-adv-x="363" d="M353 262q-21 -7 -35 -32.5t-14 -50.5q0 -31 16 -57.5t43 -33.5q-8 -27 -26.5 -55.5t-37.5 -42.5q-16 -11 -40 -11q-16 0 -37 8q-18 9 -31 9q-10 0 -40 -12q-18 -5 -26 -5q-24 0 -49 20q-36 34 -56 81t-20 98q0 53 30.5 93.5t77.5 40.5q26 0 48 -11q17 -11 34 -11 q16 0 31 6q39 16 52 16q35 0 61 -23q12 -12 19 -27zM179 309q0 32 25 63q25 27 61 33q0 -38 -24 -67q-27 -29 -62 -29z" />
-<glyph unicode="" d="M384 281h-107v26h107v-26zM208 180.5q12 -17.5 12 -42.5q0 -20 -8 -35q-7 -14 -21 -23q-12 -9 -30 -14q-14 -4 -34 -4h-127v266h124q12 0 34 -5q13 -3 26 -12q11 -7 18 -20q6 -13 6 -31q0 -20 -9.5 -33.5t-26.5 -21.5q24 -7 36 -24.5zM55 221h61q17 0 26 6q10 7 10 23 q0 9 -3.5 15t-9.5 9q-6 4 -12 5q-9 2 -15 2h-57v-60zM162 141q0 20 -11 29q-11 8 -30 8h-66v-73h64q7 0 17 2q8 2 13.5 5.5t9.5 11.5q3 6 3 17zM426 144h-137q0 -24 13 -37q12 -11 34 -11q15 0 27 8q12 9 14 18h46q-10 -35 -34 -50q-24 -16 -55 -16q-22 0 -40 7t-31 21 q-13 13 -19 32q-7 18 -7 40t7 40.5t20 32.5q13 13 30 21q18 8 40 8q24 0 42 -9.5t30 -25.5q11 -15 17 -37q5 -21 3 -42zM374 178q-2 18 -12 30q-9 10 -29 10q-13 0 -21 -4.5t-13.5 -10.5t-6.5 -13q-3 -7 -3 -12h85z" />
-<glyph unicode="" d="M390 161v62l-46 -31zM232 31l143 96l-64 43l-79 -53v-86zM213 149l65 43l-65 43l-65 -43zM195 31v86l-80 53l-64 -43zM37 223v-62l46 31zM195 353l-144 -96l64 -43l80 53v86zM232 353v-86l79 -53l64 43zM427 259v-2v-130v-2v-1q0 -1 -1 -2v-1q-1 0 -1 -1v-1l-1 -1v-1 l-0.5 -0.5l-0.5 -0.5q0 -1 -1 -1l-1 -1v0l-1 -1l-1 -1l-195 -130q-5 -3 -10.5 -3t-10.5 3l-195 130h-1v1l-1 0.5l-1 0.5v1h-1v1l-1 1v1h-1v1l-1 1v1v1q-1 1 -1 2v1v2v130v2v1q0 1 1 2v1v1l1 1v1l1 1l0.5 0.5l0.5 0.5v1q1 0 1 0.5v0.5h0.5t0.5 1h1l1 1l195 130q10 7 21 0 l195 -130v0l1 -1h1v-1q1 0 1 -1q1 0 1 -0.5v-0.5l1 -1v-1q1 0 1 -1v-1l1 -1v-1q1 -1 1 -2v-1z" />
-<glyph unicode="" d="M308 42q56 40 69 107q-35 8 -66 8v0q-17 0 -34 -3q19 -57 31 -112zM213 13q31 0 59 11q-12 63 -32 121q-49 -16 -87 -52q-23 -22 -39 -47q44 -33 99 -33zM47 179q0 -60 39 -106q19 28 46 53q42 38 94 55q-4 10 -10 22q-67 -21 -151 -22q-13 0 -18 1v-3zM140 329 q-33 -16 -56 -45t-32 -64q3 -1 13 -1h3q70 0 131 19q-29 54 -59 91zM213 346q-16 0 -35 -4q32 -42 57 -91q53 23 82 58q-45 37 -104 37zM344 282q-36 -41 -92 -66q4 -8 11 -25q24 4 48 4v0q33 0 69 -8q-3 53 -36 95zM213.5 393q88.5 0 151 -62.5t62.5 -151t-62.5 -151 t-151 -62.5t-151 62.5t-62.5 151t62.5 151t151 62.5z" />
-<glyph unicode="" d="M126 389l87 -72l88 72l126 -81l-87 -69l87 -69l-126 -82l-88 73l-87 -73l-126 82l87 69l-87 69zM213 317l-126 -78l126 -78l127 78zM213 145l89 -73l37 25v-27l-126 -75l-125 75v27l38 -25z" />
-<glyph unicode="" horiz-adv-x="366" d="M249 200h50q3 10 -8 21q-12 12 -27 3.5t-15 -24.5zM332 348q11 -14 17.5 -34.5t8 -32t4.5 -38.5q4 -39 3.5 -88.5t-10.5 -87.5q-9 -61 -49 -80.5t-95 -4.5q-22 6 -32 27t-7 44q4 21 24 31.5t43 10.5v-21q2 -7 -1 -9.5t-8.5 -2t-11.5 -0.5q-8 -5 -9 -16.5t8.5 -21 t27.5 -9.5q33 1 40 12t5 48q2 19 -14 32t-36 14q-37 -3 -65 43q-1 -2 -1 -10.5v-16.5v-15q-1 -15 -15 -23.5t-31 -11.5q-60 -5 -84 19q-34 36 -43 120q-7 48 22 69h81q4 2 10.5 9.5t7.5 8.5v43q1 4 0.5 14.5t1 17t6.5 11.5q22 11 47 4t38 -28h27h28q43 -6 62 -27zM87 313 h-69l86 88v-70z" />
-<glyph unicode="" d="M363 320h-54q-31 0 -52.5 -22t-21.5 -53v-53h-43v-64h43v-149h64v149h64v64h-64v43q0 8 6 14.5t15 6.5h43v64zM0 405h427v-426h-427v426z" />
-<glyph unicode="" horiz-adv-x="224" d="M145 -21h-79v194h-66v76h66v56q0 48 27 74t72 26q36 0 59 -3v-67l-41 -1q-22 0 -30 -9t-8 -27v-49h76l-10 -76h-66v-194z" />
-<glyph unicode="" d="M43 405h341q18 0 30.5 -12.5t12.5 -29.5v-342q0 -17 -12.5 -29.5t-30.5 -12.5h-110q-7 1 -7 21v58q0 27 -15 40q44 5 70.5 27t26.5 78q0 33 -22 57q11 26 -2 57q-18 6 -58 -22q-26 7 -54 7t-53 -7q-18 12 -32.5 17.5t-20.5 4.5h-6q-12 -31 -2 -57q-22 -24 -22 -57 q0 -55 27 -77.5t70 -27.5q-11 -10 -13 -29q-42 -18 -62 18q-12 20 -33 22q-2 0 -4.5 -0.5t-5.5 -3.5t8 -9q15 -7 24 -31q1 -2 2 -4.5t6.5 -9.5t13 -10.5t20.5 -6.5t30 2v-36q0 -20 -8 -21h-109q-18 0 -30.5 12.5t-12.5 29.5v342q0 17 12.5 29.5t30.5 12.5z" />
-<glyph unicode="" d="M213.5 400q88.5 0 151 -62.5t62.5 -150.5q0 -70 -41 -125.5t-105 -77.5q-14 -2 -14 11v58q0 27 -15 40q44 5 70.5 27t26.5 77q0 34 -22 58q11 26 -2 57q-18 5 -58 -22q-26 7 -54 7t-53 -7q-18 12 -32.5 17.5t-20.5 4.5h-6q-12 -31 -2 -57q-22 -24 -22 -58q0 -55 27 -77 t70 -27q-11 -10 -13 -29q-42 -18 -62 18q-12 20 -33 22q-2 0 -4.5 -0.5t-5 -3.5t8.5 -9q14 -7 23 -31q1 -2 2 -4.5t6.5 -9.5t13 -10.5t20.5 -6.5t30 2v-36q0 -13 -14 -11q-64 22 -105 77.5t-41 125.5q0 88 62.5 150.5t151 62.5z" />
-<glyph unicode="" horiz-adv-x="463" d="M140 373l73 -128l-140 -245l-73 128zM183 128h280l-73 -128h-280zM451 149h-146l-147 256h1h145z" />
-<glyph unicode="" d="M222 287q114 -108 165 -114q1 11 1 19q0 25 -7 50q-4 -9 -11 -10t-15.5 5.5t-15.5 14.5t-14.5 18.5t-10 15t-3.5 6.5q-47 66 -163 62q-32 -13 -56 -36q65 30 130 -31zM365 105q11 20 16 39q-33 3 -85.5 29.5t-87.5 51.5l-35 25q-74 58 -127 -9q-8 -24 -8 -49 q0 -38 16 -73q9 26 25 26q15 0 40.5 -13.5t41.5 -18.5q10 -3 31 -10l31.5 -10.5t26.5 -6.5t30 -3q12 0 22 1.5t20 4.5t15.5 4.5t15.5 6t12 5.5zM213 17q76 0 128 56q-45 -13 -83.5 -13t-62.5 7l-25 8q-26 8 -31 -6t7 -38q32 -14 67 -14zM213 405q88 0 151 -62.5t63 -150.5 t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t150.5 62.5z" />
-<glyph unicode="" horiz-adv-x="416" d="M235 213h181v-21q0 -89 -58 -151t-145 -62q-88 0 -150.5 62.5t-62.5 150.5t62.5 150.5t150.5 62.5q89 0 148 -65l-38 -38q-43 50 -110 50q-66 0 -113 -47t-47 -113t47 -113t113 -47q56 0 96.5 36t50.5 92h-125v53z" />
-<glyph unicode="" horiz-adv-x="448" d="M341 427q44 0 75.5 -31.5t31.5 -75.5q0 -22 -26.5 -67.5t-52 -92.5t-22.5 -75q0 -5 -5.5 -5t-5.5 5q2 28 -23 75t-51.5 92.5t-26.5 67.5q0 44 31 75.5t75 31.5zM341.5 363q-17.5 0 -30 -12.5t-12.5 -30.5t12.5 -30.5t30 -12.5t30 12.5t12.5 30.5t-12.5 30.5t-30 12.5z M43 384h185q-20 -32 -20 -69q0 -26 32 -83l-239 -239l-1 7v341q0 18 12.5 30.5t30.5 12.5zM310 109l-51 51l14 15q24 -39 37 -66zM371 -43h-315l157 158zM427 205v-205l-1 -7l-72 72q3 9 7 18.5t9 20t9.5 19t12 21.5t11 19.5t12.5 21.5zM100 181q-17 0 -27 7t-10 19 q0 14 18 21q10 3 22 3h5q13 -10 18 -15t5 -12q0 -9 -9 -16t-22 -7zM75 303q0 10 5.5 15.5t12.5 5.5q13 0 20.5 -12t7.5 -25q0 -11 -6.5 -15.5t-13.5 -4.5q-11 0 -18.5 11.5t-7.5 24.5zM127 241l-7 6q-6 5 -6 9q0 7 7 12q17 13 17 29q0 14 -14 26h12l9 9h-43 q-21 0 -32.5 -11.5t-11.5 -27.5q0 -13 9 -23t25 -10h5l-2 -8q0 -7 6 -14q-24 -1 -40 -11q-16 -9 -16 -25q0 -13 11.5 -21.5t33.5 -8.5q25 0 39.5 12t14.5 27q0 16 -17 30z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 341q0 18 12.5 30.5t30.5 12.5h128v-107l-86 22l22 -86h-107v128zM107 171l-22 -86l86 22v-107h-128q-18 0 -30.5 12.5t-12.5 30.5v128h107zM299 85l-22 86h107v-128q0 -18 -12.5 -30.5t-30.5 -12.5h-128v107zM341 384q18 0 30.5 -12.5t12.5 -30.5v-128h-107l22 86 l-86 -22v107h128z" />
-<glyph unicode="" horiz-adv-x="379" d="M0 11v362q0 21 18 29l210 -210l-210 -210q-18 9 -18 29zM295 125l-230 -132l181 181zM366 217q13 -10 13 -25t-12 -25l-49 -28l-54 53l54 53zM65 391l230 -132l-49 -49z" />
-<glyph unicode="" d="M43 405h340q17 0 30.5 -17t13.5 -36v-330q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 29.5v341q0 18 12.5 30.5t30.5 12.5zM151 301q-45 0 -76.5 -32t-31.5 -77t31.5 -77t76.5 -32q47 0 75.5 29.5t28.5 76.5q0 13 -2 19h-102v-38h62q-3 -17 -18 -31.5 t-44 -14.5q-28 0 -47.5 20t-19.5 48t19.5 48t47.5 20q27 0 43 -16l30 28q-29 29 -73 29zM322 239v-31h-31v-31h31v-31h31v31h30l1 31h-31v31h-31z" />
-<glyph unicode="" d="M137 217h128q7 -37 -3 -72q-10 -34 -35 -57q-23 -21 -56 -29q-36 -8 -70 1q-27 7 -49 25q-24 19 -37 45q-22 42 -12 89q3 18 12 34q24 50 77 68q46 16 92 -1q24 -9 44 -27q-2 -3 -7 -7.5t-6 -6.5q-4 -3 -12.5 -11.5t-12.5 -13.5q-13 13 -30 18q-20 6 -40 1 q-24 -5 -41 -22q-13 -14 -20 -33q-9 -26 0 -53q9 -26 32 -42q14 -10 30 -13q15 -3 33 0q17 3 30 12q23 15 27 42h-74v26.5v26.5zM427 214v-34h-47v-46h-34v46h-47v34h47v47h34v-47h47z" />
-<glyph unicode="" horiz-adv-x="418" d="M214 222v1h201q3 -12 3 -36q0 -93 -56.5 -150.5t-148.5 -57.5q-88 0 -150.5 62t-62.5 151t62 151t151 62q87 0 144 -57l-57 -56q-33 33 -86 33q-54 0 -92.5 -39.5t-38.5 -95t38.5 -94.5t92.5 -39q31 0 55 9.5t37.5 24.5t20.5 29.5t10 27.5h-123v74z" />
-<glyph unicode="" d="M384 309v43q0 11 -11 11h-42q-11 0 -11 -11v-43q0 -10 11 -10h42q11 0 11 10zM53 21h320q11 0 11 11v181h-45q2 -12 2 -21q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5q0 11 2 21h-44v-181q0 -11 10 -11zM213.5 277q-35.5 0 -60.5 -25t-25 -60t25 -60t60.5 -25 t60.5 25t25 60t-25 60t-60.5 25zM384 405q18 0 30.5 -12.5t12.5 -29.5v-342q0 -17 -12.5 -29.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 29.5v342q0 17 12.5 29.5t30.5 12.5h341z" />
-<glyph unicode="" horiz-adv-x="401" d="M59 354h342l-31 -156l-5 -25l-24 -121l-183 -61l-158 61l16 80h67l-6 -33l95 -36l111 36l15 77h-274l13 67h274l9 44h-274z" />
-<glyph unicode="" horiz-adv-x="357" d="M179 50l91 25l13 138h-163l-4 45h171l4 45h-225l13 -135h155l-5 -58l-50 -14l-50 14l-4 37h-45l7 -72zM0 378h357l-32 -365l-146 -51l-147 51z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 384h384v-384h-384v384zM101 63q15 -33 54 -33q25 0 39.5 13.5t14.5 40.5v124h-36v-123q0 -23 -19 -23q-13 0 -24 19zM228 67q19 -37 66 -37q27 0 43.5 13.5t16.5 36.5q0 22 -11.5 34t-36.5 23l-9 4q-12 5 -17 9.5t-5 12.5q0 6 4.5 10.5t12.5 4.5q15 0 24 -15l27 18 q-16 29 -51 29q-24 0 -38.5 -13.5t-14.5 -34.5t11 -33t33 -21l9 -4q10 -5 14.5 -7t8 -6.5t3.5 -10.5q0 -8 -6.5 -13t-17.5 -5q-23 0 -36 22z" />
-<glyph unicode="" horiz-adv-x="458" d="M0 294q45 29 82 35.5t60 -5.5t39 -35.5t23 -48t8 -49.5q3 -37 -18.5 -72.5t-57.5 -47.5t-83 16v-120l-53 34v293zM51 256v-121q41 -25 65.5 -21t35 24.5t10.5 56.5q0 47 -17 68t-41.5 17.5t-52.5 -24.5zM299 328q-4 -78 0 -155q3 -21 14.5 -30.5t26.5 -8t30 6t25 10.5 l10 5v155l53 -6v-207q0 -28 -8 -50.5t-20 -36t-27 -23t-30.5 -13.5t-27.5 -6t-20 -2h-8l-18 51q35 0 59 8.5t33 20t13.5 23.5t3.5 20l-1 8q-42 -16 -73.5 -17.5t-47.5 7.5t-25.5 20.5t-11.5 20.5l-2 10v155z" />
-<glyph unicode="" d="M366 288q25 0 43 -18t18 -43v-81q0 -25 -18 -43t-43 -18h-153q0 -6 5 -13t10 -7h92v-36q0 -25 -18 -43t-43 -18h-91q-26 0 -43.5 18t-17.5 43v80q0 25 17.5 43t43.5 18h112q25 0 42.5 18t17.5 43v57h26zM274 36q-15 0 -15 -19q0 -15 15 -15q7 0 11 4.5t4 10.5 q0 19 -15 19zM61 75q-25 0 -43 17.5t-18 43.5v80q0 26 18 43.5t43 17.5h152q0 7 -4.5 14t-10.5 7h-91v36q0 25 17.5 43t43.5 18h91q25 0 43 -18t18 -43v-80q0 -26 -18 -43.5t-43 -17.5h-112q-25 0 -43 -18t-18 -43v-57h-25zM152 326q16 0 16 19q0 15 -16 15q-15 0 -15 -15 q0 -19 15 -19z" />
-<glyph unicode="" d="M325 72q-58 0 -87 22.5t-42 64.5l-16 49q-11 32 -25 48t-44 16q-25 0 -42.5 -20t-17.5 -62q0 -35 16 -56t42 -21q17 0 33 7t23 14l8 7l15 -43q-3 -3 -9 -7t-27 -11.5t-45 -7.5q-52 0 -79.5 30t-27.5 86q0 59 28.5 91.5t81.5 32.5q49 0 76 -20t42 -68l16 -50 q10 -30 28.5 -46t53.5 -16q51 0 51 26q0 23 -33 30l-34 8q-56 14 -56 65q0 38 24.5 54.5t62.5 16.5q78 0 84 -63l-49 -6q-3 30 -38 30t-35 -26q0 -23 28 -29l31 -7q65 -15 65 -71q0 -68 -102 -68z" />
-<glyph unicode="" d="M363 43v121q0 31 -22 53t-53 22q-15 0 -30 -8.5t-23 -21.5v26h-64v-192h64v113q0 13 9 22.5t22.5 9.5t23 -9.5t9.5 -22.5v-113h64zM96 271q16 0 27.5 11t11.5 27t-11.5 27.5t-27.5 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27t27.5 -11zM128 43v192h-64v-192h64zM384 405 q18 0 30.5 -12.5t12.5 -29.5v-342q0 -17 -12.5 -29.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 29.5v342q0 17 12.5 29.5t30.5 12.5h341z" />
-<glyph unicode="" horiz-adv-x="371" d="M237 405q79 0 112 -39q30 -35 20 -99q-23 -146 -175 -146h-49q-8 0 -14 -5t-7 -13l-17 -106q-1 -8 -7 -13t-14 -5h-73q-6 0 -10 4.5t-3 9.5l62 394q2 8 7.5 13t13.5 5h154zM255 261q4 29 -8 43q-6 8 -18 11.5t-21.5 4t-27.5 0.5h-11q-11 0 -12 -11l-17 -103h23 q17 0 25.5 0.5t22 3.5t21 8.5t14 16.5t9.5 26z" />
-<glyph unicode="" d="M235 102q53 0 82 35t29 82q0 52 -39 89.5t-93.5 37.5t-93.5 -37.5t-39 -89.5q0 -34 18 -63q6 -11 18 -11q9 0 15.5 6.5t6.5 14.5q0 5 -4 11q-11 20 -11 42q0 35 26 59.5t63 24.5t63.5 -24.5t26.5 -59.5q0 -30 -16.5 -51.5t-51.5 -21.5q-12 0 -20 8.5t-8 20.5 q0 9 9.5 28.5t9.5 35.5q0 28 -31 28q-14 0 -24.5 -11.5t-10.5 -36.5q0 -8 1 -16t2 -12l1 -3l-39 -119l-1 -4v-1.5v-1.5q0 -10 6.5 -17t16.5 -7q14 0 20 12l1 -1l1 4l20 69q19 -20 46 -20zM384 405q18 0 30.5 -12.5t12.5 -29.5v-342q0 -17 -12.5 -29.5t-30.5 -12.5h-341 q-18 0 -30.5 12.5t-12.5 29.5v342q0 17 12.5 29.5t30.5 12.5h341z" />
-<glyph unicode="" d="M427 332v-37v-75q0 -39 -10 -69q-18 -60 -68 -102q-53 -44 -121 -48q-70 -5 -129 32q-54 35 -80 93q-15 33 -18 66q-1 18 -1 75v36.5v38.5q0 14 7.5 25t20.5 15q8 2 16 2h20h38h74h21h16q25 0 75.5 -0.5t75.5 -0.5q27 0 35 -2q14 -4 22 -17q6 -9 6 -32zM342 235 q5 15 -6 27q-10 13 -27 10q-5 0 -9.5 -3t-7 -5t-8 -7.5l-6.5 -6.5q-56 -55 -64 -62q-2 1 -56 53q-7 7 -15 14q-11 11 -14 13q-13 9 -27 2q-15 -6 -17.5 -21.5t8.5 -26.5q1 0 58 -56l28 -26q1 -2 5.5 -6.5t7 -6.5t7 -5t8.5 -4q15 -3 27 8q4 4 9 8.5t11 10.5l9 9q52 50 58 55 l5.5 5.5l6.5 6.5t5 6t4 8z" />
-<glyph unicode="" horiz-adv-x="491" d="M395 363l96 -171l-96 -171h-86l96 171l-55 99l-169 -270h-85l-96 171l96 171h85l-96 -171l56 -99l168 270h86z" />
-<glyph unicode="" horiz-adv-x="384" d="M320 105q26 0 44 -18.5t18 -44t-18 -44t-44 -18.5t-44 18.5t-18 44.5q0 6 1 14l-151 88q-19 -17 -44 -17q-27 0 -45.5 18.5t-18.5 45.5t18.5 45.5t45.5 18.5q25 0 44 -17l150 87q-2 9 -2 15q0 27 18.5 45.5t45.5 18.5t45.5 -18.5t18.5 -45t-18.5 -45.5t-45.5 -19 q-25 0 -44 18l-150 -88q2 -9 2 -15t-2 -15l152 -88q18 16 42 16z" />
-<glyph unicode="" horiz-adv-x="336" d="M245 13v145h34v-179h-279v178l32 -1l-1 -143h214zM52 73h167v-35h-167v35zM57 136l168 -16l-4 -36l-168 16zM72 209l163 -46l-10 -35l-163 46zM112 291l144 -87l-19 -32l-144 87zM262 210l-98 137l30 21l98 -137zM272 399l36 6l28 -166l-36 -6z" />
-<glyph unicode="" horiz-adv-x="439" d="M355 263q0 23 -16.5 39t-39 16t-39 -16t-16.5 -39t16.5 -39t39 -16t39 16t16.5 39zM181 95q0 -24 -17 -40t-40 -16q-16 0 -29.5 8t-20.5 22q15 -6 28 -12q17 -6 34 1t25 25q6 17 -1 34t-25 24l-23 9q6 2 12 2q23 0 40 -16.5t17 -40.5zM439 329v-274q0 -34 -24 -58 t-58 -24h-275q-34 0 -58 24t-24 58v44l49 -20q6 -26 27 -43.5t48 -17.5q30 0 52 20t25 50l98 72q43 0 73 30t30 73q0 42 -30 72.5t-73 30.5q-42 0 -72 -30t-31 -72l-64 -92h-8q-21 0 -39 -11l-85 34v134q0 34 24 58t58 24h275q34 0 58 -24t24 -58zM368 263q0 -29 -20 -49 t-48.5 -20t-49 20t-20.5 48.5t20.5 49t48.5 20.5q29 0 49 -20.5t20 -48.5z" />
-<glyph unicode="" d="M372 273q0 -26 -18 -44.5t-44 -18.5t-44.5 18.5t-18.5 44.5t18.5 44.5t44.5 18.5t44 -18.5t18 -44.5zM0 73v110l65 -26q20 12 45 12h9l73 105q0 48 34.5 82t82.5 34q49 0 83.5 -34.5t34.5 -83t-34.5 -83t-83.5 -34.5l-112 -82q-3 -34 -28 -56.5t-59 -22.5q-32 0 -56 19.5 t-30 49.5zM309.5 352q-32.5 0 -55.5 -23.5t-23 -56t23 -55.5t55.5 -23t55.5 23t23 55.5t-23 56t-55.5 23.5zM110 146q-7 0 -14 -2l27 -10q19 -8 27.5 -27.5t0.5 -39.5t-27.5 -28t-39.5 -1q-6 3 -16.5 7.5t-14.5 5.5q18 -34 57 -34q26 0 45 19t19 45.5t-19 45.5t-45 19z" />
-<glyph unicode="" d="M335 249q22 18 28 30q-13 -6 -31 -9q18 13 24 32q-20 -11 -37 -14q-12 14 -31 16.5t-35.5 -5t-26.5 -25t-5 -38.5q-67 4 -118 59q-11 -20 -4.5 -43.5t21.5 -32.5q-11 1 -24 7q1 -43 44 -57q-12 -3 -24 -1q12 -36 53 -40q-15 -13 -39 -19.5t-45 -3.5q45 -28 92 -26 q70 3 113.5 49.5t44.5 120.5zM384 405q18 0 30.5 -12.5t12.5 -29.5v-342q0 -17 -12.5 -29.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 29.5v342q0 17 12.5 29.5t30.5 12.5h341z" />
-<glyph unicode="" d="M383 279v-11q0 -45 -16.5 -88.5t-47 -79.5t-79 -58.5t-106.5 -22.5q-73 0 -134 39q10 -1 21 -1q61 0 109 37q-29 1 -51.5 18t-30.5 43q8 -2 16 -2q12 0 23 4q-30 6 -50 30t-20 55v1q19 -10 40 -11q-39 27 -39 73q0 24 12 44q33 -40 79.5 -64t100.5 -27q-2 10 -2 20 q0 36 25.5 61.5t61.5 25.5q38 0 64 -27q30 6 56 21q-10 -31 -39 -48q27 3 51 13q-18 -26 -44 -45z" />
-<glyph unicode="" horiz-adv-x="549" d="M548 299q7 -18 -43 -84q-7 -9 -18 -24q-23 -28 -26 -37q-5 -12 4 -23q5 -6 23 -24h1v-1q41 -37 55 -63l2 -4t2 -7.5t0 -9.5t-7 -7.5t-17 -3.5l-73 -2q-7 -1 -16.5 2t-14.5 6l-6 4q-9 6 -20 18t-19.5 22t-17.5 16.5t-16 4.5q-1 0 -2.5 -1t-5 -4.5t-6 -8.5t-4.5 -14.5 t-2 -22.5q0 -4 -1 -7.5t-2 -5.5l-1 -1q-6 -6 -16 -6h-32q-21 -2 -42.5 4t-37.5 15.5t-29 19t-20 16.5l-7 7q-3 2 -8 8t-20.5 26t-30.5 43t-35 60.5t-37 77.5q-2 5 -2 8t1 5l1 1q4 6 16 6h79q3 0 6 -1.5l5 -2.5l1 -1q5 -3 7 -9q6 -14 13.5 -29.5t11.5 -23.5l4 -8 q9 -17 16.5 -29.5t13.5 -19.5t12 -11t10 -4t8 1l1 1.5t3.5 6.5t4 13t2.5 23t0 36q-1 11 -3 20.5t-4 13.5l-1 3q-7 10 -25 13q-3 0 2 7q5 5 11 8q15 8 68 7q23 0 39 -4q5 -1 9 -3.5t6 -7t3 -9t1 -13v-15.5q-1 -8 -1 -20v-24q0 -3 -0.5 -12t-0.5 -14t1 -11.5t3.5 -11t6.5 -6.5 q2 -1 4.5 -1.5t7.5 3t11 10t15 19.5t19 30q17 30 31 65q1 2 2.5 4.5t3.5 3.5h1l1 1l4 1h6l82 1q11 1 18.5 -1t8.5 -5z" />
-<glyph unicode="" d="M40 280q-17 29 -38 37l-2 1v15h1h109v-15q-13 -1 -21.5 -7t-5.5 -17q14 -33 40.5 -94t38.5 -89l46 87q-7 14 -23 51.5t-27 58.5q-7 10 -36 11v14h102l1 -14q-6 -1 -10 -2t-7 -4.5t-2 -8.5l29 -64q28 60 28 61q3 11 -5 14.5t-21 3.5l-1 14h92v-14q-24 -2 -33 -15 q-14 -20 -46 -89q23 -53 43 -95l78 180q-6 13 -29 19l-1 14l87 -1v-14q-6 -1 -11 -3q-11 -5 -18 -17l-107 -247h-18l-52 120l-62 -120h-18q-16 33 -48 111t-53 118z" />
-<glyph unicode="" horiz-adv-x="363" d="M0 192v112l128 28v-138zM363 384v-187l-214 -3v143zM0 171l128 -2v-146l-128 25v123zM363 165v-186l-214 40v150z" />
-<glyph unicode="" horiz-adv-x="469" d="M384 192v-107h-107v43h64v64h43zM128 256v-64h-43v107h107v-43h-64zM427 384q17 0 29.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-29.5 -12.5h-384q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h384zM427 42v300h-384v-300h384z" />
-<glyph unicode="" d="M299 235v-43h-43v43h43zM299 149v-42h-43v42h43zM128 235v-43h-43v43h43zM213 235v-43h-42v43h42zM384 363q18 0 30.5 -12.5t12.5 -30.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h341zM384 64v256h-341v-256 h341z" />
-<glyph unicode="" d="M170.5 256q8.5 0 15 -6.5t6.5 -15t-6.5 -15t-15 -6.5t-15 6.5t-6.5 15t6.5 15t15 6.5zM170.5 171q8.5 0 15 -6.5t6.5 -15t-6.5 -15t-15 -6.5t-15 6.5t-6.5 15t6.5 15t15 6.5zM106.5 245q10.5 0 10.5 -10.5t-10.5 -10.5t-10.5 10.5t10.5 10.5zM170.5 96q10.5 0 10.5 -10.5 t-10.5 -10.5t-10.5 10.5t10.5 10.5zM106.5 160q10.5 0 10.5 -10.5t-10.5 -10.5t-10.5 10.5t10.5 10.5zM170.5 288q-10.5 0 -10.5 10.5t10.5 10.5t10.5 -10.5t-10.5 -10.5zM256 256q9 0 15 -6.5t6 -15t-6 -15t-15 -6.5t-15 6.5t-6 15t6 15t15 6.5zM256 288q-11 0 -11 10.5 t11 10.5t11 -10.5t-11 -10.5zM320 160q11 0 11 -10.5t-11 -10.5t-11 10.5t11 10.5zM320 245q11 0 11 -10.5t-11 -10.5t-11 10.5t11 10.5zM213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM213.5 21 q70.5 0 120.5 50t50 121t-50 121t-120.5 50t-120.5 -50t-50 -121t50 -121t120.5 -50zM256 96q11 0 11 -10.5t-11 -10.5t-11 10.5t11 10.5zM256 171q9 0 15 -6.5t6 -15t-6 -15t-15 -6.5t-15 6.5t-6 15t6 15t15 6.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M42.5 75q-13.5 0 -22.5 9t-9 22.5t9 23t22.5 9.5t23 -9.5t9.5 -23t-9.5 -22.5t-23 -9zM128 171q-9 0 -15 6t-6 15t6 15t15 6t15 -6t6 -15t-6 -15t-15 -6zM128 256q-9 0 -15 6.5t-6 15t6 15t15 6.5t15 -6.5t6 -15t-6 -15t-15 -6.5zM0 0v43h384v-43h-384zM42.5 245 q-13.5 0 -22.5 9.5t-9 23t9 22.5t22.5 9t23 -9t9.5 -22.5t-9.5 -23t-23 -9.5zM42.5 160q-13.5 0 -22.5 9.5t-9 22.5t9 22.5t22.5 9.5t23 -9.5t9.5 -22.5t-9.5 -22.5t-23 -9.5zM128 85q-9 0 -15 6.5t-6 15t6 15t15 6.5t15 -6.5t6 -15t-6 -15t-15 -6.5zM298.5 96 q-10.5 0 -10.5 10.5t10.5 10.5t10.5 -10.5t-10.5 -10.5zM0 384h384v-43h-384v43zM298.5 267q-10.5 0 -10.5 10.5t10.5 10.5t10.5 -10.5t-10.5 -10.5zM298.5 181q-10.5 0 -10.5 11t10.5 11t10.5 -11t-10.5 -11zM213.5 256q-8.5 0 -15 6.5t-6.5 15t6.5 15t15 6.5t15 -6.5 t6.5 -15t-6.5 -15t-15 -6.5zM213.5 171q-8.5 0 -15 6t-6.5 15t6.5 15t15 6t15 -6t6.5 -15t-6.5 -15t-15 -6zM213.5 85q-8.5 0 -15 6.5t-6.5 15t6.5 15t15 6.5t15 -6.5t6.5 -15t-6.5 -15t-15 -6.5z" />
-<glyph unicode="" horiz-adv-x="405" d="M245.5 299q-8.5 0 -15 6t-6.5 15t6.5 15t15 6t15 -6t6.5 -15t-6.5 -15t-15 -6zM241 203q-11 2 -18.5 9.5t-8.5 17.5l-1 5q0 13 9.5 22.5t23 9.5t22.5 -9.5t9 -23t-9 -22.5t-23 -9h-4zM245.5 373q-10.5 0 -10.5 11t10.5 11t10.5 -11t-10.5 -11zM160 373q-11 0 -11 11 t11 11t11 -11t-11 -11zM394.5 224q-10.5 0 -10.5 10.5t10.5 10.5t10.5 -10.5t-10.5 -10.5zM160 299q-9 0 -15 6t-6 15t6 15t15 6t15 -6t6 -15t-6 -15t-15 -6zM330.5 128q-8.5 0 -15 6.5t-6.5 15t6.5 15t15 6.5t15 -6.5t6.5 -15t-6.5 -15t-15 -6.5zM330.5 213q-8.5 0 -15 6.5 t-6.5 15t6.5 15t15 6.5t15 -6.5t6.5 -15t-6.5 -15t-15 -6.5zM330.5 299q-8.5 0 -15 6t-6.5 15t6.5 15t15 6t15 -6t6.5 -15t-6.5 -15t-15 -6zM245.5 11q10.5 0 10.5 -11t-10.5 -11t-10.5 11t10.5 11zM0 336l27 27l346 -347l-27 -27l-81 81q2 -4 2 -6q0 -9 -6.5 -15t-15 -6 t-15 6t-6.5 15t6.5 15t14.5 6q2 0 6 -1l-60 60q-1 -11 -10 -19t-21 -8q-13 0 -22.5 9.5t-9.5 22.5q0 12 7.5 21t19.5 11l-60 60q1 -4 1 -6q0 -9 -6.5 -15.5t-15 -6.5t-15 6.5t-6.5 15t6.5 15t15.5 6.5l6 -1zM160 85q9 0 15 -6t6 -15t-6 -15t-15 -6t-15 6t-6 15t6 15t15 6z M394.5 160q10.5 0 10.5 -10.5t-10.5 -10.5t-10.5 10.5t10.5 10.5zM74.5 171q8.5 0 15 -6.5t6.5 -15t-6.5 -15t-15 -6.5t-15 6.5t-6.5 15t6.5 15t15 6.5zM10.5 245q10.5 0 10.5 -10.5t-10.5 -10.5t-10.5 10.5t10.5 10.5zM160 11q11 0 11 -11t-11 -11t-11 11t11 11zM74.5 85 q8.5 0 15 -6t6.5 -15t-6.5 -15t-15 -6t-15 6t-6.5 15t6.5 15t15 6zM10.5 160q10.5 0 10.5 -10.5t-10.5 -10.5t-10.5 10.5t10.5 10.5z" />
-<glyph unicode="" horiz-adv-x="405" d="M74.5 171q8.5 0 15 -6.5t6.5 -15t-6.5 -15t-15 -6.5t-15 6.5t-6.5 15t6.5 15t15 6.5zM74.5 85q8.5 0 15 -6t6.5 -15t-6.5 -15t-15 -6t-15 6t-6.5 15t6.5 15t15 6zM74.5 256q8.5 0 15 -6.5t6.5 -15t-6.5 -15t-15 -6.5t-15 6.5t-6.5 15t6.5 15t15 6.5zM10.5 245 q10.5 0 10.5 -10.5t-10.5 -10.5t-10.5 10.5t10.5 10.5zM74.5 341q8.5 0 15 -6t6.5 -15t-6.5 -15t-15 -6t-15 6t-6.5 15t6.5 15t15 6zM394.5 224q-10.5 0 -10.5 10.5t10.5 10.5t10.5 -10.5t-10.5 -10.5zM245.5 299q-8.5 0 -15 6t-6.5 15t6.5 15t15 6t15 -6t6.5 -15t-6.5 -15 t-15 -6zM245.5 373q-10.5 0 -10.5 11t10.5 11t10.5 -11t-10.5 -11zM10.5 160q10.5 0 10.5 -10.5t-10.5 -10.5t-10.5 10.5t10.5 10.5zM160 11q11 0 11 -11t-11 -11t-11 11t11 11zM160 373q-11 0 -11 11t11 11t11 -11t-11 -11zM160 299q-9 0 -15 6t-6 15t6 15t15 6t15 -6 t6 -15t-6 -15t-15 -6zM160 181q13 0 22.5 -9t9.5 -22.5t-9.5 -23t-22.5 -9.5t-22.5 9.5t-9.5 23t9.5 22.5t22.5 9zM330.5 171q8.5 0 15 -6.5t6.5 -15t-6.5 -15t-15 -6.5t-15 6.5t-6.5 15t6.5 15t15 6.5zM330.5 85q8.5 0 15 -6t6.5 -15t-6.5 -15t-15 -6t-15 6t-6.5 15t6.5 15 t15 6zM330.5 256q8.5 0 15 -6.5t6.5 -15t-6.5 -15t-15 -6.5t-15 6.5t-6.5 15t6.5 15t15 6.5zM330.5 341q8.5 0 15 -6t6.5 -15t-6.5 -15t-15 -6t-15 6t-6.5 15t6.5 15t15 6zM394.5 160q10.5 0 10.5 -10.5t-10.5 -10.5t-10.5 10.5t10.5 10.5zM245.5 85q8.5 0 15 -6t6.5 -15 t-6.5 -15t-15 -6t-15 6t-6.5 15t6.5 15t15 6zM245.5 11q10.5 0 10.5 -11t-10.5 -11t-10.5 11t10.5 11zM160 267q13 0 22.5 -9.5t9.5 -23t-9.5 -22.5t-22.5 -9t-22.5 9t-9.5 22.5t9.5 23t22.5 9.5zM160 85q9 0 15 -6t6 -15t-6 -15t-15 -6t-15 6t-6 15t6 15t15 6zM245.5 181 q13.5 0 22.5 -9t9 -22.5t-9 -23t-22.5 -9.5t-23 9.5t-9.5 23t9.5 22.5t23 9zM245.5 267q13.5 0 22.5 -9.5t9 -23t-9 -22.5t-22.5 -9t-23 9t-9.5 22.5t9.5 23t23 9.5z" />
-<glyph unicode="" horiz-adv-x="320" d="M107 405q88 0 150.5 -62.5t62.5 -150.5t-62.5 -150.5t-150.5 -62.5q-57 0 -107 28q49 29 78 78t29 107t-29 107t-78 78q50 28 107 28z" />
-<glyph unicode="" horiz-adv-x="277" d="M64 405q88 0 150.5 -62.5t62.5 -150.5t-62.5 -150.5t-150.5 -62.5q-33 0 -64 9q66 21 107.5 77t41.5 127t-41.5 127t-107.5 77q31 9 64 9z" />
-<glyph unicode="" horiz-adv-x="483" d="M412 263l71 -71l-71 -71v-100h-100l-71 -70l-70 70h-100v100l-71 71l71 71v100h100l70 70l71 -70h100v-100zM241 64q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5q-28 0 -53 -12q33 -15 54 -46.5t21 -69.5t-21 -69.5t-54 -46.5q25 -12 53 -12z" />
-<glyph unicode="" horiz-adv-x="483" d="M412 121v-100h-100l-71 -70l-70 70h-100v100l-71 71l71 71v100h100l70 70l71 -70h100v-100l71 -71zM241 64q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5z" />
-<glyph unicode="" horiz-adv-x="483" d="M412 121v-100h-100l-71 -70l-70 70h-100v100l-71 71l71 71v100h100l70 70l71 -70h100v-100l71 -71zM241 64q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5v-256z" />
-<glyph unicode="" horiz-adv-x="483" d="M412 263l71 -71l-71 -71v-100h-100l-71 -70l-70 70h-100v100l-71 71l71 71v100h100l70 70l71 -70h100v-100zM241 64q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5zM241.5 277q35.5 0 60.5 -25t25 -60t-25 -60 t-60.5 -25t-60.5 25t-25 60t25 60t60.5 25z" />
-<glyph unicode="" horiz-adv-x="483" d="M217 178l24 78l25 -78h-49zM412 263l71 -71l-71 -71v-100h-100l-71 -70l-70 70h-100v100l-71 71l71 71v100h100l70 70l71 -70h100v-100zM290 107h41l-68 192h-43l-68 -192h40l15 42h68z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 384q17 0 29.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-29.5 -12.5h-384q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h384zM427 42v300h-384v-300h384zM149 107v53l-32 32l32 32v53h54l32 32l32 -32h53v-53l32 -32l-32 -32v-53h-53l-32 -32l-32 32 h-54zM235 256v-128q26 0 45 18.5t19 45.5t-19 45.5t-45 18.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M384 341v-140l-64 64l-85 -86l-86 86l-85 -86l-64 65v97q0 18 12.5 30.5t30.5 12.5h298q18 0 30.5 -12.5t12.5 -30.5zM320 204l64 -64v-97q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v140l64 -64l85 86l86 -86z" />
-<glyph unicode="" horiz-adv-x="384" d="M192 277q35 0 60 -25t25 -60t-25 -60t-60 -25t-60 25t-25 60t25 60t60 25zM43 128v-85h85v-43h-85q-18 0 -30.5 12.5t-12.5 30.5v85h43zM43 341v-85h-43v85q0 18 12.5 30.5t30.5 12.5h85v-43h-85zM341 384q18 0 30.5 -12.5t12.5 -30.5v-85h-43v85h-85v43h85zM341 43v85 h43v-85q0 -18 -12.5 -30.5t-30.5 -12.5h-85v43h85z" />
-<glyph unicode="" horiz-adv-x="384" d="M43 128v-85h85v-43h-85q-18 0 -30.5 12.5t-12.5 30.5v85h43zM43 341v-85h-43v85q0 18 12.5 30.5t30.5 12.5h85v-43h-85zM341 384q18 0 30.5 -12.5t12.5 -30.5v-85h-43v85h-85v43h85zM341 43v85h43v-85q0 -18 -12.5 -30.5t-30.5 -12.5h-85v43h85zM192 277q35 0 60 -25 t25 -60t-25 -60t-60 -25t-60 25t-25 60t25 60t60 25zM192 149q18 0 30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5t-30.5 -12.5t-12.5 -30.5t12.5 -30.5t30.5 -12.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M149 384v43h43v-470h-43v43h-106q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h106zM149 64v128l-106 -128h106zM341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-106v192l106 -128v277h-106v43h106z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 320q18 0 30.5 -12.5t12.5 -30.5v-170q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v170q0 18 12.5 30.5t30.5 12.5h298zM341 107v170h-298v-170h298z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 363q18 0 30.5 -12.5t12.5 -30.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h298zM341 64v256h-298v-256h298z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 341q18 0 30.5 -12.5t12.5 -29.5v-214q0 -17 -12.5 -29.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 29.5v214q0 17 12.5 29.5t30.5 12.5h298zM341 85v214h-298v-214h298z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 299q18 0 30.5 -12.5t12.5 -30.5v-128q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v128q0 18 12.5 30.5t30.5 12.5h298zM341 128v128h-298v-128h298z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM341 43v298h-298v-298h298z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 341q0 18 12.5 30.5t30.5 12.5h85v-43h-85v-85h-43v85zM43 128v-85h85v-43h-85q-18 0 -30.5 12.5t-12.5 30.5v85h43zM341 43v85h43v-85q0 -18 -12.5 -30.5t-30.5 -12.5h-85v43h85zM341 384q18 0 30.5 -12.5t12.5 -30.5v-85h-43v85h-85v43h85z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 341q18 0 30.5 -12.5t12.5 -29.5v-214q0 -17 -12.5 -29.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 29.5v214q0 17 12.5 29.5t30.5 12.5h298zM341 85v214h-298v-214h298z" />
-<glyph unicode="" horiz-adv-x="299" d="M256 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-213q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h213zM256 43v298h-213v-298h213z" />
-<glyph unicode="" horiz-adv-x="341" d="M299 363q17 0 29.5 -12.5t12.5 -30.5v-256q0 -18 -12.5 -30.5t-29.5 -12.5h-256q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h256zM299 64v256h-256v-256h256z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM53 288v-32h43v-43h32v43h43v32h-43v43h-32v-43h-43zM341 43v298l-298 -298h298zM299 85h-107v32h107v-32z" />
-<glyph unicode="" d="M277 85h-42v43h42v43h43v-43h43v-43h-43v-42h-43v42zM384 405q18 0 30.5 -12.5t12.5 -29.5v-342q0 -17 -12.5 -29.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 29.5v342q0 17 12.5 29.5t30.5 12.5h341zM64 341v-42h128v42h-128zM384 21v342l-341 -342h341z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM341 43v298h-149v-128l-149 -170h149v170z" />
-<glyph unicode="" horiz-adv-x="384" d="M43 128v-85h85v-43h-85q-18 0 -30.5 12.5t-12.5 30.5v85h43zM43 341v-85h-43v85q0 18 12.5 30.5t30.5 12.5h85v-43h-85zM341 384q18 0 30.5 -12.5t12.5 -30.5v-85h-43v85h-85v43h85zM341 43v85h43v-85q0 -18 -12.5 -30.5t-30.5 -12.5h-85v43h85zM192 256q27 0 45.5 -18.5 t18.5 -45.5t-18.5 -45.5t-45.5 -18.5t-45.5 18.5t-18.5 45.5t18.5 45.5t45.5 18.5z" />
-<glyph unicode="" d="M384 363q18 0 30.5 -12.5t12.5 -30.5v-299q0 -17 -12.5 -29.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 29.5v299q0 18 12.5 30.5t30.5 12.5h85l85 85l86 -85h85zM384 21v299h-96l-74 75l-75 -75h-96v-299h341zM341 277h-256v-213h256v213z" />
-<glyph unicode="" horiz-adv-x="425" d="M191 361q-46 -5 -83 -34l-31 30q50 41 114 47v-43zM347 357l-30 -30q-38 29 -83 34v43q63 -6 113 -47zM381 213q-5 46 -34 84l30 30q41 -50 48 -114h-44zM78 297q-29 -38 -35 -84h-43q6 64 47 114zM43 171q6 -46 35 -83l-31 -31q-41 50 -47 114h43zM276 192 q0 -27 -18.5 -45.5t-45 -18.5t-45.5 18.5t-19 45.5t19 45.5t45.5 18.5t45 -18.5t18.5 -45.5zM347 87q29 38 34 83h44q-7 -63 -48 -113zM234 23q46 6 83 34l30 -30q-50 -41 -113 -47v43zM77 27l31 30q37 -29 83 -34v-43q-64 6 -114 47z" />
-<glyph unicode="" horiz-adv-x="384" d="M171 256h42v-43h-42v43zM128 213h43v-42h-43v42zM213 213h43v-42h-43v42zM256 256h43v-43h-43v43zM85 256h43v-43h-43v43zM341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298z M128 64v43h-43v-43h43zM213 64v43h-42v-43h42zM299 64v43h-43v-43h43zM341 213v128h-298v-128h42v-42h-42v-43h42v43h43v-43h43v43h42v-43h43v43h43v-43h42v43h-42v42h42z" />
-<glyph unicode="" horiz-adv-x="341" d="M128 192q18 0 30.5 -12.5t12.5 -30t-12.5 -30t-30.5 -12.5t-30.5 12.5t-12.5 30t12.5 30t30.5 12.5zM42.5 277q17.5 0 30 -12.5t12.5 -30t-12.5 -30t-30 -12.5t-30 12.5t-12.5 30t12.5 30t30 12.5zM42.5 107q17.5 0 30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5t-30 12.5 t-12.5 30.5t12.5 30.5t30 12.5zM298.5 277q-17.5 0 -30 12.5t-12.5 30.5t12.5 30.5t30 12.5t30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5zM213.5 107q17.5 0 30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5t-30 12.5t-12.5 30.5t12.5 30.5t30 12.5zM298.5 192q17.5 0 30 -12.5 t12.5 -30t-12.5 -30t-30 -12.5t-30 12.5t-12.5 30t12.5 30t30 12.5zM213.5 277q17.5 0 30 -12.5t12.5 -30t-12.5 -30t-30 -12.5t-30 12.5t-12.5 30t12.5 30t30 12.5zM128 363q18 0 30.5 -12.5t12.5 -30.5t-12.5 -30.5t-30.5 -12.5t-30.5 12.5t-12.5 30.5t12.5 30.5 t30.5 12.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M85 64v256h43v-256h-43zM171 -21v426h42v-426h-42zM0 149v86h43v-86h-43zM256 64v256h43v-256h-43zM341 235h43v-86h-43v86z" />
-<glyph unicode="" horiz-adv-x="431" d="M343 128h-8l-24 23v105h75q13 0 22.5 -9.5t9.5 -22.5v-21q0 -10 -5.5 -18.5t-13.5 -11.5l19 -45h-32l-19 43h-24v-43zM343 224v-21h43v21h-43zM247 224h-8l-32 32h40q13 0 22.5 -9.5t9.5 -22.5v-41l-32 32v9zM173 245l258 -256l-24 -23l-162 162h-72v73l-32 32v-105h-32 v53h-43v-53h-32v128h32v-43h43v43h8l-117 117l23 22z" />
-<glyph unicode="" horiz-adv-x="469" d="M341 320q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5zM85.5 277q35.5 0 60.5 -25t25 -60t-25 -60t-60.5 -25t-60.5 25t-25 60t25 60t60.5 25zM85.5 149q17.5 0 30 12.5t12.5 30.5t-12.5 30.5t-30 12.5t-30 -12.5 t-12.5 -30.5t12.5 -30.5t30 -12.5z" />
-<glyph unicode="" horiz-adv-x="469" d="M85.5 277q35.5 0 60.5 -25t25 -60t-25 -60t-60.5 -25t-60.5 25t-25 60t25 60t60.5 25zM341 320q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5zM341.5 107q35.5 0 60.5 25t25 60t-25 60t-60.5 25t-60.5 -25t-25 -60 t25 -60t60.5 -25z" />
-<glyph unicode="" horiz-adv-x="384" d="M384 203q0 -19 -19 -30l19 -45h-32l-19 43h-24v-43h-32v128h75q13 0 22.5 -9.5t9.5 -22.5v-21zM352 203v21h-43v-21h43zM75 213v43h32v-128h-32v53h-43v-53h-32v128h32v-43h43zM213 256q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-74v128h74zM213 160 v64h-42v-64h42z" />
-<glyph unicode="" horiz-adv-x="361" d="M31 139v128h299v-128h-299zM159 436h43v-63h-43v63zM330 383l31 -30l-39 -38l-30 30zM202 -31h-43v63h43v-63zM361 52l-31 -30l-38 39l30 30zM0 353l30 30l38 -38l-30 -30zM30 22l-30 31l38 38l30 -30z" />
-<glyph unicode="" horiz-adv-x="384" d="M149 384q0 -30 -11 -57l-34 34q3 11 3 23h42zM0 357l27 27l357 -357l-27 -27l-61 61q-19 -28 -19 -61h-42q0 51 31 91l-31 30q-43 -52 -43 -121h-43q0 86 56 152l-53 53q-66 -56 -152 -56v43q68 0 122 43l-31 31q-40 -31 -91 -31v42q33 0 61 19zM235 384q0 -64 -34 -120 l-31 31q22 42 22 89h43zM361 104l-34 34q28 11 57 11v-42q-12 0 -23 -3zM264 201q56 34 120 34v-43q-47 0 -89 -22z" />
-<glyph unicode="" horiz-adv-x="384" d="M64 384q0 -27 -18.5 -45.5t-45.5 -18.5v64h64zM235 384q0 -97 -69 -166t-166 -69v43q80 0 136 56t56 136h43zM149 384q0 -62 -43.5 -105.5t-105.5 -43.5v42q44 0 75.5 31.5t31.5 75.5h42zM149 0q0 97 69 166t166 69v-43q-80 0 -136 -56t-56 -136h-43zM320 0 q0 27 18.5 45.5t45.5 18.5v-64h-64zM235 0q0 62 43.5 105.5t105.5 43.5v-42q-44 0 -75.5 -31.5t-31.5 -75.5h-42z" />
-<glyph unicode="" horiz-adv-x="469" d="M234.5 235q61.5 0 105.5 -44t44 -106h-43q0 44 -31 75.5t-75 31.5t-75.5 -31.5t-31.5 -75.5h-43q0 62 44 106t105.5 44zM235 320q97 0 165.5 -69t68.5 -166h-42q0 80 -56.5 136t-136 56t-135.5 -56t-56 -136h-43q0 97 69 166t166 69z" />
-<glyph unicode="" d="M235 299v-86h85v-42h-85v-86h-43v86h-85v42h85v86h43zM213 405q88 0 151 -62.5t63 -150.5v-171q0 -17 -12.5 -29.5t-30.5 -12.5h-171q-88 0 -150.5 62.5t-62.5 150.5t62.5 150.5t150.5 62.5zM213.5 21q70.5 0 120.5 50t50 121t-50 121t-120.5 50t-120.5 -50t-50 -121 t50 -121t120.5 -50z" />
-<glyph unicode="" d="M384 308q-84 -25 -171 -24q-87 0 -170 24v-232q83 24 170 24t171 -24v232zM415 363q12 0 12 -14v-314q0 -14 -12 -14q-4 0 -7 2q-94 35 -195 35t-194 -35q-4 -2 -7 -2q-12 0 -12 14v314q0 14 12 14q3 0 7 -2q94 -35 194 -35q101 0 195 35q3 2 7 2z" />
-<glyph unicode="" horiz-adv-x="342" d="M340 -3l2 -6q0 -12 -14 -12h-315q-13 0 -13 12q0 3 1 6q35 95 35 195t-35 195q-1 3 -1 6q0 12 13 12h315q13 0 13 -12q0 -3 -1 -6q-35 -95 -35 -195q0 -101 35 -195zM54 21h233q-25 84 -25 171t25 171h-233q25 -84 25 -171t-25 -171z" />
-<glyph unicode="" d="M213.5 320q-75.5 0 -155.5 -14q-15 -57 -15 -114t15 -114q80 -14 155.5 -14t155.5 14q15 57 15 114t-15 114q-80 14 -155.5 14zM213 363q83 0 170 -16l20 -3l5 -19q19 -67 19 -133t-19 -133l-5 -19l-20 -3q-87 -16 -170 -16t-169 16l-20 3l-5 19q-19 67 -19 133t19 133 l5 19l20 3q87 16 169 16z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 128h42v-43h-42v43zM427 213h42v-42h-42v42zM469 43q0 -16 -13 -29.5t-29 -13.5v43h42zM256 384h43v-43h-43v43zM427 299h42v-43h-42v43zM427 384q16 0 29 -13.5t13 -29.5h-42v43zM0 299h43v-43h-43v43zM341 384h43v-43h-43v43zM341 43h43v-43h-43v43zM43 384v-43 h-43q0 16 13.5 29.5t29.5 13.5zM171 384h42v-43h-42v43zM85 384h43v-43h-43v43zM0 213h299v-213h-256q-18 0 -30.5 12.5t-12.5 30.5v170zM43 43h213l-68 91l-54 -69l-38 46z" />
-<glyph unicode="" horiz-adv-x="469" d="M469 128v-43h-42v43h42zM469 213v-42h-42v42h42zM469 43q0 -16 -13 -29.5t-29 -13.5v43h42zM299 384v-43h-43v43h43zM469 299v-43h-42v43h42zM427 384q16 0 29 -13.5t13 -29.5h-42v43zM43 0q-18 0 -30.5 12.5t-12.5 30.5v85h213v-128h-170zM43 299v-43h-43v43h43zM299 43 v-43h-43v43h43zM384 384v-43h-43v43h43zM384 43v-43h-43v43h43zM43 384v-43h-43q0 16 13.5 29.5t29.5 13.5zM43 213v-42h-43v42h43zM213 384v-43h-42v43h42zM128 384v-43h-43v43h43z" />
-<glyph unicode="" horiz-adv-x="469" d="M384 299v-128h-171v128h171zM427 384q17 0 29.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-29.5 -12.5h-384q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h384zM427 42v300h-384v-300h384z" />
-<glyph unicode="" horiz-adv-x="384" d="M149 277l107 -85l-107 -85v170zM341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM341 43v298h-298v-298h298z" />
-<glyph unicode="" horiz-adv-x="384" d="M352 382q24 -6 31 -30l-351 -350q-11 3 -19 11t-11 19zM189 384h61l-250 -250v61zM43 384h42l-85 -85v42q0 18 12.5 30.5t30.5 12.5zM341 0h-42l85 85v-42q0 -18 -13 -30q-12 -13 -30 -13zM134 0l250 250v-61l-189 -189h-61z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM192 23v338q-64 -8 -106.5 -56t-42.5 -113t43 -113t106 -56zM235 361v-20h61q-29 16 -61 20zM235 299v-22h126q-7 12 -15 22h-111zM235 235v-22h148 q-2 9 -5 22h-143zM235 23q32 4 61 20h-61v-20zM346 85q8 10 15 22h-126v-22h111zM378 149q3 13 5 22h-148v-22h143z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 384q17 0 29.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-29.5 -12.5h-384q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h384zM234.5 64q70.5 0 120.5 37.5t50 90.5t-50 90.5t-120.5 37.5t-120.5 -37.5t-50 -90.5t50 -90.5t120.5 -37.5z" />
-<glyph unicode="" horiz-adv-x="508" d="M146 178l25 78l24 -78h-49zM469 299h39l-44 -192h-37l-32 130l-32 -130h-38l-2 9q-21 -43 -62 -69t-90 -26q-71 0 -121 50t-50 121t50 121t121 50q81 0 133 -64h16l26 -135l32 135h34l32 -135zM220 107h40l-68 192h-43l-68 -192h41l15 42h68z" />
-<glyph unicode="" horiz-adv-x="256" d="M128 269l-98 -98l-30 30l128 128l128 -128l-30 -30zM0 64v43h256v-43h-256z" />
-<glyph unicode="" horiz-adv-x="299" d="M0 85h299v-42h-299v42zM149 299l143 -171h-285z" />
-<glyph unicode="" horiz-adv-x="341" d="M128 21v342h85v-342h-85zM0 21v171h85v-171h-85zM256 256h85v-235h-85v235z" />
-<glyph unicode="" horiz-adv-x="373" d="M0 64v256l181 -128zM192 320l181 -128l-181 -128v256z" />
-<glyph unicode="" horiz-adv-x="373" d="M181 64l-181 128l181 128v-256zM192 192l181 128v-256z" />
-<glyph unicode="" horiz-adv-x="341" d="M0 170.5q0 70.5 50 120.5t121 50v86l106 -107l-106 -107v86q-53 0 -90.5 -38t-37.5 -90.5t37.5 -90t90 -37.5t90.5 37.5t38 90.5h42q0 -71 -50 -121t-120.5 -50t-120.5 50t-50 120.5zM145 107h-17v70l-21 -6v15l38 12h2v-91h-2zM239 145q0 -13 -2 -17l-7 -13 q-6 -6 -10 -6q-2 0 -6.5 -1t-6.5 -1q-9 0 -13 2q-2 1 -5 3t-6 3q-2 1 -6 13q-2 6 -2 17v15q0 13 2 17l6 13q7 6 11 6q2 0 6.5 1t6.5 1q8 0 13 -2q2 -1 5 -3t5 -3q3 -1 7 -13q2 -6 2 -17v-15zM222 162v11q-2 4 -2 6l-5 4q-2 3 -6 3t-6 -3l-5 -4q-2 -4 -2 -6v-43q2 -4 2 -6 t2 -3t3 -2q2 -2 6 -2t6 2l5 5q2 4 2 6v32z" />
-<glyph unicode="" horiz-adv-x="341" d="M119 160h9q6 0 10.5 4.5t4.5 8.5v4q-2 2 -2 4t-4 2h-11q-2 -2 -4.5 -2t-2.5 -4v-4h-21q0 6 2 10.5t6.5 8.5t8.5 4q1 0 5.5 1t5.5 1q8 0 13 -2q2 -1 5 -2t5 -2q3 -1 7 -9q2 -4 2 -10v-7q-2 -4 -2 -6q0 -4 -5 -4q-2 0 -6 -5q9 -4 11 -8q4 -9 4 -13q0 -8 -2 -11q-1 -1 -3 -4 t-4 -4q-4 -4 -10 -4q-2 0 -6.5 -1t-6.5 -1q-9 0 -11 2q-1 1 -5 2t-5 2q-3 1 -7 8q-2 5 -2 13h17v-4q2 -2 2 -4t5 -2h10q2 2 4.5 2t2.5 4v11q-2 2 -2 4t-5 2h-13v15zM241 145q0 -13 -2 -17l-6 -13q-7 -6 -11 -6q-2 0 -6.5 -1t-6.5 -1q-8 0 -13 2q-2 1 -5 3t-5 3q-3 1 -7 13 q-2 6 -2 17v15q0 13 2 17l7 13q6 6 10 6q2 0 6.5 1t6.5 1q9 0 13 -2q2 -1 5 -3t6 -3q2 -1 6 -13q2 -6 2 -17v-15zM222 162v11q-2 4 -2 6l-5 4q-2 3 -6 3t-6 -3l-5 -4q-2 -4 -2 -6v-43q2 -4 2 -6l5 -5q2 -2 6 -2t6 2l5 5q2 4 2 6v32zM0 170.5q0 70.5 50 120.5t121 50v86 l106 -107l-106 -107v86q-53 0 -90.5 -38t-37.5 -90.5t37.5 -90t90 -37.5t90.5 37.5t38 90.5h42q0 -71 -50 -121t-120.5 -50t-120.5 50t-50 120.5z" />
-<glyph unicode="" horiz-adv-x="341" d="M0 170.5q0 70.5 50 120.5t121 50v86l106 -107l-106 -107v86q-53 0 -90.5 -38t-37.5 -90.5t37.5 -90t90 -37.5t90.5 37.5t38 90.5h42q0 -71 -50 -121t-120.5 -50t-120.5 50t-50 120.5zM143 151l4 47h51v-15h-36l-2 -19q2 0 2 2q0 1 1 1t1 2h5h4q8 0 10 -3q2 -1 5 -3t4 -3 q2 -2 6 -11q3 -4 3 -12.5t-3 -10.5q0 -1 -2 -4.5t-4 -6.5q-2 -2 -11 -6q-4 -2 -12.5 -2t-10.5 2q-1 1 -5 2t-6 2q-3 1 -6 9q-2 4 -2 10h17q0 -4 4 -8q2 -2 9 -2q4 0 6 2l4 4q2 4 2 6v13l-2 4l-4 5q-4 2 -6 2h-5q-2 0 -4 -2q-1 -1 -1.5 -1t-0.5 -1l-2 -3h-13z" />
-<glyph unicode="" horiz-adv-x="384" d="M299 21q17 0 29.5 12.5t12.5 30.5h43q0 -35 -25 -60t-60 -25q-19 0 -35 7q-41 21 -59 76q-4 14 -12 22.5t-24 21.5q-41 31 -61 67q-23 41 -23 83q0 63 43.5 106t106.5 43t106 -43t43 -106h-43q0 45 -31 76t-75.5 31t-75.5 -31t-31 -76q0 -31 17 -63q16 -27 50 -54 q13 -10 20 -16t16.5 -19t14.5 -29q13 -38 36 -50q8 -4 17 -4zM99 392q-56 -56 -56 -136q0 -79 56 -136l-30 -30q-69 69 -69 166t69 166zM181 256q0 22 16 37.5t38 15.5t37.5 -15.5t15.5 -37.5t-15.5 -37.5t-37.5 -15.5t-38 15.5t-16 37.5z" />
-<glyph unicode="" d="M149 107v170h43v-170h-43zM213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM213.5 21q70.5 0 120.5 50t50 121t-50 121t-120.5 50t-120.5 -50t-50 -121t50 -121t120.5 -50zM235 107v170h42v-170h-42z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM192 107v170h-43v-170h43zM277 107v170h-42v-170h42z" />
-<glyph unicode="" horiz-adv-x="256" d="M0 43v298h85v-298h-85zM171 341h85v-298h-85v298z" />
-<glyph unicode="" d="M171 96v192l128 -96zM213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM213.5 21q70.5 0 120.5 50t50 121t-50 121t-120.5 50t-120.5 -50t-50 -121t50 -121t120.5 -50z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM171 96l128 96l-128 96v-192z" />
-<glyph unicode="" horiz-adv-x="235" d="M0 341l235 -149l-235 -149v298z" />
-<glyph unicode="" horiz-adv-x="405" d="M256 320v-43h-256v43h256zM256 235v-43h-256v43h256zM0 107v42h171v-42h-171zM299 320h106v-43h-64v-192q0 -26 -18.5 -45t-45 -19t-45.5 19t-19 45.5t19 45t45 18.5q11 0 22 -4v175z" />
-<glyph unicode="" d="M256 235v-43h-256v43h256zM256 320v-43h-256v43h256zM341 149h86v-42h-86v-86h-42v86h-86v42h86v86h42v-86zM0 107v42h171v-42h-171z" />
-<glyph unicode="" horiz-adv-x="384" d="M85 299v-86h-42v128h256v64l85 -85l-85 -85v64h-214zM299 85v86h42v-128h-256v-64l-85 85l85 85v-64h214zM213 128h-32v85h-32v22l43 21h21v-128z" />
-<glyph unicode="" horiz-adv-x="384" d="M85 299v-86h-42v128h256v64l85 -85l-85 -85v64h-214zM299 85v86h42v-128h-256v-64l-85 85l85 85v-64h214z" />
-<glyph unicode="" horiz-adv-x="341" d="M239 124q0 -20 -8 -30t-23 -10t-23 10t-8 29v17q0 19 8 29t23 10t23 -10t8 -28v-17zM221 142q0 12 -3 17t-10 5t-10 -5t-3 -15v-23q0 -11 3 -16.5t10 -5.5t10 5t3 16v22zM147 85h-19v71l-22 -7v15l39 14h2v-93zM171 320q70 0 120 -50t50 -120.5t-50 -120.5t-120.5 -50 t-120.5 50t-50 120h43q0 -52 37.5 -90t90 -38t90.5 38t38 90.5t-38 90t-90 37.5v-85l-107 107l107 106v-85z" />
-<glyph unicode="" horiz-adv-x="341" d="M239 123q0 -20 -8 -30t-23.5 -10t-23.5 10t-8 29v17q0 20 8 30t23.5 10t23.5 -10t8 -29v-17zM221 142q0 11 -3.5 16.5t-10 5.5t-9.5 -5t-3 -16v-23q0 -11 3 -16.5t10 -5.5t10 5t3 16v23zM120 139h10q7 0 10 3.5t3 9.5t-3 9t-9 3t-9.5 -3t-3.5 -8h-18q0 8 4 13.5t11 9 t15 3.5q15 0 23.5 -7t8.5 -20q0 -6 -4 -11.5t-10 -8.5q8 -3 11.5 -8.5t3.5 -13.5q0 -12 -9 -19.5t-24 -7.5q-14 0 -23 7t-9 20h19q0 -6 4 -9t10 -3t10 3.5t4 8.5q0 14 -16 14h-9v15zM171 320q70 0 120 -50t50 -120.5t-50 -120.5t-120.5 -50t-120.5 50t-50 120h43 q0 -52 37.5 -90t90 -38t90.5 38t38 90.5t-38 90t-90 37.5v-85l-107 107l107 106v-85z" />
-<glyph unicode="" horiz-adv-x="341" d="M142 131l5 46h51v-15h-36l-2 -20q6 4 13 4q13 0 20.5 -8t7.5 -23q0 -8 -4 -15t-10.5 -11t-16.5 -4q-8 0 -15 3.5t-11 9.5t-4 13h18q0 -5 3.5 -8t8.5 -3q6 0 9.5 4t3.5 12t-4 12t-11 4q-6 0 -10 -3l-2 -2zM171 320q70 0 120 -50t50 -120.5t-50 -120.5t-120.5 -50 t-120.5 50t-50 120h43q0 -52 37.5 -90t90 -38t90.5 38t38 90.5t-38 90t-90 37.5v-85l-107 107l107 106v-85z" />
-<glyph unicode="" horiz-adv-x="341" d="M171 341q70 0 120 -50t50 -120.5t-50 -120.5t-120.5 -50t-120.5 50t-50 121h43q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5v-86l-107 107l107 107v-86z" />
-<glyph unicode="" horiz-adv-x="341" d="M141 252l-31 -30l-110 111l30 30zM224 363h117v-118l-43 44l-268 -268l-30 30l268 268zM231 162l67 -67l43 44v-118h-117l44 44l-67 67z" />
-<glyph unicode="" horiz-adv-x="256" d="M0 64v256l181 -128zM213 320h43v-256h-43v256z" />
-<glyph unicode="" horiz-adv-x="256" d="M0 320h43v-256h-43v256zM75 192l181 128v-256z" />
-<glyph unicode="" horiz-adv-x="256" d="M0 320h256v-256h-256v256z" />
-<glyph unicode="" d="M384 363q18 0 30.5 -12.5t12.5 -30.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h341zM123 102q-38 37 -38 90t38 91l-30 30q-50 -50 -50 -121t50 -121zM213.5 107q35.5 0 60.5 25t25 60t-25 60t-60.5 25 t-60.5 -25t-25 -60t25 -60t60.5 -25zM334 71q50 50 50 121t-50 121l-30 -31q37 -37 37 -90t-37 -91zM213.5 235q17.5 0 30 -12.5t12.5 -30.5t-12.5 -30.5t-30 -12.5t-30 12.5t-12.5 30.5t12.5 30.5t30 12.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 85h128v-42h-128v42zM0 341h213v-42h-213v42zM213 0h-42v128h42v-43h171v-42h-171v-43zM85 256h43v-128h-43v43h-85v42h85v43zM384 171h-213v42h213v-42zM256 256v128h43v-43h85v-42h-85v-43h-43z" />
-<glyph unicode="" horiz-adv-x="288" d="M288 192q0 -28 -14.5 -51t-38.5 -35v172q24 -12 38.5 -35t14.5 -51zM0 256h85l107 107v-342l-107 107h-85v128z" />
-<glyph unicode="" horiz-adv-x="192" d="M0 256h85l107 107v-342l-107 107h-85v128z" />
-<glyph unicode="" horiz-adv-x="384" d="M288 192q0 -6 -1 -13l-52 52v47q24 -12 38.5 -35t14.5 -51zM341 192q0 50 -30 89.5t-76 53.5v44q64 -15 106.5 -67t42.5 -120q0 -47 -22 -89l-32 33q11 27 11 56zM27 384l165 -165l192 -192l-27 -27l-44 44q-35 -29 -78 -39v44q25 8 48 25l-91 91v-144l-107 107h-85v128 h101l-101 101zM192 363v-90l-45 45z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 256h85l107 107v-342l-107 107h-85v128zM288 192q0 -28 -14.5 -51t-38.5 -35v172q24 -12 38.5 -35t14.5 -51zM235 379q64 -15 106.5 -67t42.5 -120t-42.5 -120t-106.5 -67v44q46 14 76 53.5t30 89.5t-30 89.5t-76 53.5v44z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM235 85v214h-86v-43h43v-171h43z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM256 213v43q0 18 -12.5 30.5t-30.5 12.5h-85v-43h85v-43h-42q-18 0 -30.5 -12.5t-12.5 -29.5v-86h128v43h-85v43h42 q18 0 30.5 12.5t12.5 29.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM256 224v32q0 18 -12.5 30.5t-30.5 12.5h-85v-43h85v-43h-42v-42h42v-43h-85v-43h85q18 0 30.5 12.5t12.5 30.5v32 q0 13 -9.5 22.5t-22.5 9.5q13 0 22.5 9.5t9.5 22.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM256 85v214h-43v-86h-42v86h-43v-128h85v-86h43z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM256 256v43h-128v-128h85v-43h-85v-43h85q18 0 30.5 12.5t12.5 30.5v43q0 17 -12.5 29.5t-30.5 12.5h-42v43h85z" />
-<glyph unicode="" horiz-adv-x="384" d="M171 128v43h42v-43h-42zM341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM256 256v43h-85q-18 0 -30.5 -12.5t-12.5 -30.5v-128q0 -18 12.5 -30.5t30.5 -12.5h42 q18 0 30.5 12.5t12.5 30.5v43q0 17 -12.5 29.5t-30.5 12.5h-42v43h85z" />
-<glyph unicode="" horiz-adv-x="320" d="M0 213h171v-42h-171v42zM320 64h-43v227l-64 -22v36l101 36h6v-277z" />
-<glyph unicode="" horiz-adv-x="405" d="M278 100h127v-36h-184v32l89 97q10 11 19 22q7 8 12 18q4 7 6 14q2 8 2 14q0 9 -3 18q-3 8 -8 13q-5 7 -12.5 10t-17.5 3q-12 0 -20 -4q-9 -4 -15 -10q-6 -8 -8 -16q-3 -9 -3 -19h-46q1 17 6 32q6 16 18 28t29 19q18 6 40 6q20 0 36 -5q17 -6 27 -15q11 -10 17 -24t6 -31 q0 -13 -4 -25q-5 -12 -12 -25q-8 -13 -17 -25q-13 -15 -23 -25zM0 213h171v-42h-171v42z" />
-<glyph unicode="" horiz-adv-x="341" d="M128 299v-86h85v-42h-85v-86h-43v86h-85v42h85v86h43zM341 64h-42v227l-64 -22v36l100 36h6v-277z" />
-<glyph unicode="" d="M300 100h127v-36h-184v32l89 97q10 11 18 22q7 8 12 18q4 7 6 14q2 8 2 14q0 9 -3 18q-3 8 -8 13q-5 7 -12 10t-17 3q-12 0 -21 -4t-14 -10q-6 -8 -9 -16q-2 -9 -3 -19h-45q0 17 6 32q6 16 17.5 28t29.5 19q17 6 39 6q20 0 37 -5q16 -6 27 -15q10 -10 16 -24t6 -31 q0 -13 -4 -25t-12 -25q-7 -13 -17 -25q-13 -15 -22 -25zM128 299v-86h85v-42h-85v-86h-43v86h-85v42h85v86h43z" />
-<glyph unicode="" horiz-adv-x="512" d="M0 283l101 37h6v-256h-43v205l-64 -22v36zM507 141q5 -8 5 -21t-5 -23q-6 -11 -15 -18q-10 -7 -24 -11q-13 -4 -30 -4q-20 0 -34.5 5t-24.5 14q-9 9 -14.5 20t-5.5 22h41q0 -8 3 -14q4 -6 9 -9q5 -4 12 -5q6 -2 14 -2q16 0 24.5 6t8.5 17q0 4 -1 8q-2 4 -6 7q-5 4 -12 6 q-8 3 -20 6q-16 3 -28 8t-20 11q-9 6 -14 15t-5 21t5 21q5 11 14 18.5t23 12.5q13 4 29 4q18 0 32 -5t23 -12q10 -8 15 -19t5 -23h-42q0 4 -2 10t-6 9q-5 4 -10 6q-7 3 -14.5 3t-13.5 -2t-10 -5q-3 -3 -6 -8q-1 -4 -1 -8.5t1.5 -8t5.5 -6.5t12 -5q8 -3 19 -5q15 -4 28 -8 q12 -5 22 -12q9 -6 13 -16zM295 298q11 -13 16 -34q6 -21 6 -51v-41q0 -30 -6 -51q-5 -21 -16 -34q-11 -14 -26 -19q-15 -6 -34 -6q-18 0 -34 6q-15 5 -26 19q-11 12 -17 34q-6 20 -6 51v41q0 29 6 51q6 21 16.5 34t26 18.5t34.5 5.5t34 -5.5t26 -18.5zM275 166v54 q0 18 -2 32q-3 13 -8 21t-13 11.5t-17 3.5q-10 0 -18 -3q-7 -4 -12.5 -12t-8.5 -21q-2 -13 -2 -33v-53q0 -20 2 -33q3 -13 9 -21q5 -9 12.5 -12.5t17.5 -3.5t17.5 3.5t12.5 12t7.5 22t2.5 32.5z" />
-<glyph unicode="" horiz-adv-x="361" d="M158 171q5 -7 8 -16q2 -9 2 -18q0 -18 -6.5 -32t-17.5 -23q-12 -10 -27 -15q-16 -5 -34 -5q-16 0 -31 4.5t-27 13.5t-18 23q-7 13 -7 31h42q0 -9 3 -16t8.5 -12t13.5 -7q7 -3 17 -3q20 0 31 10q11 11 11 31q0 10 -3 18t-10 13q-5 5 -14 8q-9 2 -20 2h-25v33h25q11 0 19 3 t13 8q6 5 8.5 12t2.5 16q0 18 -9 28q-10 10 -29 10q-9 0 -16 -2.5t-12 -6.5q-5 -5 -8 -11.5t-3 -14.5h-43q0 15 7 27q5 12 16 22t26 15q14 5 32 5t32.5 -4t25.5 -13.5t17 -22.5q6 -14 6 -32q0 -8 -2 -15t-8 -15q-4 -7 -12 -14q-6 -6 -17 -11q12 -4 20 -10t13 -14zM356 141 q4 -8 5 -21q0 -13 -5 -23q-6 -11 -16 -18q-9 -7 -23 -11t-31 -4q-19 0 -33.5 5t-24.5 14t-15 20t-5 22h40q0 -8 4 -14t9 -9q5 -4 12 -5q6 -2 13 -2q17 0 25.5 6t8.5 17q0 4 -2 8q-1 4 -5 7q-5 4 -13 6q-8 3 -20 6q-15 3 -27 8q-13 5 -21 11q-9 7 -14 15q-4 10 -4 21 q0 12 4 21q6 11 15 18.5t22 12.5q13 4 30 4q18 0 31 -5q14 -5 23 -12q10 -8 15 -19t5 -23h-41q0 4 -2 10q-3 6 -7 9q-4 4 -10 6q-6 3 -14 3t-13.5 -2t-9.5 -5t-6 -8q-2 -4 -2 -8.5t1.5 -8t6 -6.5t11.5 -5q9 -3 19 -5q15 -4 29 -8q12 -5 21 -12q9 -6 14 -16z" />
-<glyph unicode="" horiz-adv-x="177" d="M177 181q0 -32 -6.5 -54t-18 -36t-28 -20.5t-35.5 -6.5q-20 0 -37 6q-16 7 -27 21q-12 14 -19 36q-6 22 -6 54v44q0 32 6.5 54t18 36t28 20t36 6t36 -6t28 -20t18 -36t6.5 -54v-44zM132 232q0 19 -3 34q-3 14 -8 23q-6 8 -14 12t-18 4q-11 0 -19 -4t-13 -12 q-6 -9 -9 -22.5t-3 -34.5v-57q0 -20 3 -35q3 -13 9 -23q5 -9 13 -13t19 -4t19 4t13 13t8 23t3 35v57z" />
-<glyph unicode="" horiz-adv-x="448" d="M443 143l-15 -40l-264 95l45 121l182 -66q34 -12 49 -44t3 -66zM0 189l15 40l405 -146l-14 -40l-97 34v-34h-170v96zM124 230.5q-24 -11.5 -49 -3t-36.5 32.5t-3 49t32.5 36.5t49 3t36.5 -32.5t3 -49t-32.5 -36.5z" />
-<glyph unicode="" d="M427 213v-42h-278v128h192q36 0 61 -25t25 -61zM0 149h427v-42h-128v-43h-171v43h-128v42zM109.5 190q-18.5 -19 -45 -19.5t-45.5 18.5t-19 45t18.5 45t45 19.5t45.5 -18t19 -45t-18.5 -45.5z" />
-<glyph unicode="" horiz-adv-x="469" d="M128 171q-26 0 -45 18.5t-19 45t19 45.5t45 19t45 -19t19 -45.5t-19 -45t-45 -18.5zM384 299q35 0 60 -25t25 -61v-128h-469v214h43v-150h170v150h171z" />
-<glyph unicode="" horiz-adv-x="448" d="M43 192q0 -27 18.5 -45.5t45.5 -18.5h128v-43h-128q-44 0 -75.5 31.5t-31.5 75.5v192h43v-192zM444 80q7 -12 2.5 -25t-17.5 -19l-79 -36l-73 149h-149q-27 0 -45.5 19t-18.5 45v171h128v-128h75q26 0 38 -24l73 -149l23 11q12 5 24.5 1.5t18.5 -15.5z" />
-<glyph unicode="" horiz-adv-x="405" d="M43 192q0 -27 18.5 -45.5t45.5 -18.5h128v-43h-128q-44 0 -75.5 31.5t-31.5 75.5v192h43v-192zM373 64q14 0 23 -9.5t9 -22.5t-9 -22.5t-23 -9.5h-96v149h-149q-26 0 -45 19t-19 45v171h128v-128h107q17 0 29.5 -12.5t12.5 -30.5v-149h32z" />
-<glyph unicode="" horiz-adv-x="363" d="M362 38q3 -15 -6.5 -26.5t-24.5 -11.5h-96v64l21 85h-128q-26 0 -45 19t-19 45v171h128v-128h107q17 0 29.5 -12.5t12.5 -30.5l-42 -149h30q12 0 21.5 -7t11.5 -19zM43 192q0 -27 18.5 -45.5t45.5 -18.5h85v-43h-85q-44 0 -75.5 31.5t-31.5 75.5v192h43v-192z" />
-<glyph unicode="" d="M71.5 328q-14.5 10 -17.5 27.5t7 32t27.5 17.5t32 -7.5t17.5 -27.5t-7 -31.5t-27.5 -17.5t-32 7zM299 43v-43h-151q-39 0 -69 25.5t-37 64.5l-42 209h43l42 -202q3 -24 21 -39t42 -15h151zM304 128l123 -96l-32 -32l-82 64h-146q-23 0 -40.5 14.5t-22.5 37.5l-29 126 q-3 20 8.5 36.5t31.5 19.5q10 2 21 -1q10 -3 16 -8l35 -27q47 -37 100 -27v-46q-48 -8 -110 26l22 -87h105z" />
-<glyph unicode="" horiz-adv-x="341" d="M76.5 332.5q-12.5 12.5 -12.5 30t12.5 30t30 12.5t30 -12.5t12.5 -30t-12.5 -30t-30 -12.5t-30 12.5zM43 107q0 -27 18.5 -45.5t45.5 -18.5h128v-43h-128q-44 0 -75.5 31.5t-31.5 75.5v192h43v-192zM341 20l-30 -31l-75 75h-108q-27 0 -45.5 18.5t-18.5 45.5v123 q0 20 14 34t34 14h1q10 0 20 -5q9 -4 15 -11l30 -33q17 -19 45 -31.5t54 -11.5v-47q-29 0 -61 13.5t-56 33.5v-79h73z" />
-<glyph unicode="" horiz-adv-x="469" d="M107 -21l128 128l128 -128h-256zM427 384q17 0 29.5 -12.5t12.5 -30.5v-256q0 -17 -12.5 -29.5t-29.5 -12.5h-86v42h86v256h-384v-256h85v-42h-85q-18 0 -30.5 12.5t-12.5 29.5v256q0 18 12.5 30.5t30.5 12.5h384z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 363q18 0 30.5 -12.5t12.5 -30.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h298zM171 213v22q0 8 -6.5 14.5t-15.5 6.5h-64q-8 0 -14.5 -6.5t-6.5 -14.5v-86q0 -8 6.5 -14.5t14.5 -6.5h64q9 0 15.5 6.5 t6.5 14.5v22h-32v-11h-43v64h43v-11h32zM320 213v22q0 8 -6.5 14.5t-14.5 6.5h-64q-9 0 -15.5 -6.5t-6.5 -14.5v-86q0 -8 6.5 -14.5t15.5 -6.5h64q8 0 14.5 6.5t6.5 14.5v22h-32v-11h-43v64h43v-11h32z" />
-<glyph unicode="" d="M427 235q-18 0 -30.5 -12.5t-12.5 -30.5t12.5 -30.5t30.5 -12.5v-85q0 -18 -12.5 -30.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 30.5v85q18 0 30.5 12.5t12.5 30.5t-12.5 30.5t-30.5 12.5v85q0 18 12.5 30.5t30.5 12.5h341q18 0 30.5 -12.5t12.5 -30.5v-85zM235 75v42 h-43v-42h43zM235 171v42h-43v-42h43zM235 267v42h-43v-42h43z" />
-<glyph unicode="" d="M427 256h-43v-43h43v-42h-43v-43h43v-43h-43v-42q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298q18 0 30.5 -12.5t12.5 -30.5v-42h43v-43zM341 43v298h-298v-298h298zM85 171h107v-86h-107v86zM213 213h86v-64h-86 v64zM85 299h107v-107h-107v107zM213 107h86v-128h-86v128z" />
-<glyph unicode="" d="M384 107v42h43v-42h-43zM384 299h43v-107h-43v107zM170.5 363q70.5 0 120.5 -50t50 -121t-50 -121t-120.5 -50t-120.5 50t-50 121t50 121t120.5 50zM170.5 149q17.5 0 30 12.5t12.5 30.5t-12.5 30.5t-30 12.5t-30 -12.5t-12.5 -30.5t12.5 -30.5t30 -12.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM256 256v43h-128v-214h128v43h-85v43h85v42h-85v43h85z" />
-<glyph unicode="" horiz-adv-x="405" d="M0 32h405v-43h-405v43zM153 154l-113 31l-34 9v110l31 -8l20 -50l106 -28v177l41 -11l59 -193l113 -30q13 -3 19.5 -14.5t3 -24.5t-15 -19.5t-24.5 -3.5l-113 30z" />
-<glyph unicode="" horiz-adv-x="433" d="M14 49h405v-43h-405v43zM431.5 248.5q3.5 -12.5 -3 -24t-19.5 -15.5l-114 -30l-92 -25l-114 -30l-34 -10l-16 29l-39 67l31 9l42 -33l106 28l-88 153l41 11l147 -137l113 30q13 4 24.5 -3t15 -19.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M128 299v-43h-43v43h43zM128 213v-42h-43v42h43zM128 384v-43h-43q0 18 12.5 30.5t30.5 12.5zM213 128v-43h-42v43h42zM341 384q18 0 30.5 -12.5t12.5 -30.5h-43v43zM213 384v-43h-42v43h42zM128 85q-18 0 -30.5 12.5t-12.5 30.5h43v-43zM341 171v42h43v-42h-43zM341 256 v43h43v-43h-43zM341 85v43h43q0 -18 -12.5 -30.5t-30.5 -12.5zM43 299v-256h256v-43h-256q-18 0 -30.5 12.5t-12.5 30.5v256h43zM256 341v43h43v-43h-43zM256 85v43h43v-43h-43z" />
-<glyph unicode="" horiz-adv-x="384" d="M0 171v42h43v-42h-43zM0 85v43h43v-43h-43zM43 0q-18 0 -30.5 12.5t-12.5 30.5h43v-43zM0 256v43h43v-43h-43zM256 0v43h43v-43h-43zM341 384q18 0 30.5 -12.5t12.5 -30.5v-213q0 -18 -12.5 -30.5t-30.5 -12.5h-213q-18 0 -30.5 12.5t-12.5 30.5v213q0 18 12.5 30.5 t30.5 12.5h213zM341 128v213h-213v-213h213zM171 0v43h42v-43h-42zM85 0v43h43v-43h-43z" />
-<glyph unicode="" d="M213.5 405q88.5 0 151 -62.5t62.5 -150.5t-62.5 -150.5t-151 -62.5t-151 62.5t-62.5 150.5t62.5 150.5t151 62.5zM128 75q22 0 37.5 15.5t15.5 37.5t-15.5 37.5t-37.5 15.5t-37.5 -15.5t-15.5 -37.5t15.5 -37.5t37.5 -15.5zM160 277q0 -22 15.5 -37.5t37.5 -15.5t38 15.5 t16 37.5t-16 38t-38 16t-37.5 -16t-15.5 -38zM299 75q22 0 37.5 15.5t15.5 37.5t-15.5 37.5t-37.5 15.5t-38 -15.5t-16 -37.5t16 -37.5t38 -15.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM171 128v128h-32v-53h-43v53h-32v-128h32v43h43v-43h32zM213 256v-128h86q8 0 14.5 6.5t6.5 14.5v86q0 8 -6.5 14.5 t-14.5 6.5h-86zM245 160v64h43v-64h-43z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 363q18 0 30.5 -12.5t12.5 -30.5v-256q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v256q0 18 12.5 30.5t30.5 12.5h298zM171 128v128h-32v-53h-43v53h-32v-128h32v43h43v-43h32zM320 149v86q0 8 -6.5 14.5t-14.5 6.5h-64q-9 0 -15.5 -6.5 t-6.5 -14.5v-86q0 -8 6.5 -14.5t15.5 -6.5h16v-32h32v32h16q8 0 14.5 6.5t6.5 14.5zM245 160v64h43v-64h-43z" />
-<glyph unicode="" d="M384 320q18 0 30.5 -12.5t12.5 -30.5v-256q0 -17 -12.5 -29.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 29.5v256q0 18 12.5 30.5t30.5 12.5h42v128h171v-85h-128v-171h43v128h213z" />
-<glyph unicode="" horiz-adv-x="384" d="M256 256v-128h-128v128h128zM213 171v42h-42v-42h42zM384 213h-43v-42h43v-43h-43v-43q0 -17 -12.5 -29.5t-29.5 -12.5h-43v-43h-43v43h-42v-43h-43v43h-43q-17 0 -29.5 12.5t-12.5 29.5v43h-43v43h43v42h-43v43h43v43q0 17 12.5 29.5t29.5 12.5h43v43h43v-43h42v43h43 v-43h43q17 0 29.5 -12.5t12.5 -29.5v-43h43v-43zM299 85v214h-214v-214h214z" />
-<glyph unicode="" d="M384 405q18 0 30.5 -12.5t12.5 -29.5v-342q0 -17 -12.5 -29.5t-30.5 -12.5h-341q-18 0 -30.5 12.5t-12.5 29.5v342q0 17 12.5 29.5t30.5 12.5h341zM384 21v342h-341v-342h341zM341 320v-256h-256v256h86v-43h-43v-170h171v170h-64v-48q21 -12 21 -37q0 -18 -12.5 -30.5 t-30 -12.5t-30 12.5t-12.5 30.5q0 24 21 37v48q0 18 12.5 30.5t30.5 12.5h106z" />
-<glyph unicode="" horiz-adv-x="256" d="M107 341h42v-119h75l-96 -96l-96 96h75v119zM0 149h43q0 -35 25 -60t60 -25t60 25t25 60h43q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5z" />
-<glyph unicode="" horiz-adv-x="405" d="M0 256h405v-43h-405v43zM0 128v43h107v-43h-107zM149 128v43h107v-43h-107zM299 128v43h106v-43h-106z" />
-<glyph unicode="" horiz-adv-x="469" d="M427 384q17 0 29.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-29.5 -12.5h-384q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h384zM427 42v300h-384v-300h384zM192 192h-43l86 85l85 -85h-43v-85h-85v85z" />
-<glyph unicode="" horiz-adv-x="384" d="M341 384q18 0 30.5 -12.5t12.5 -30.5v-298q0 -18 -12.5 -30.5t-30.5 -12.5h-298q-18 0 -30.5 12.5t-12.5 30.5v298q0 18 12.5 30.5t30.5 12.5h298zM43 342v-65q26 0 45 19t19 46h-64zM43 192q62 0 105.5 44t43.5 106h-43q0 -45 -31 -76t-75 -31v-43zM43 64h298l-96 128 l-74 -96l-54 64z" />
-<glyph unicode="" horiz-adv-x="363" d="M0 107q62 0 105.5 -44t43.5 -106h-42q0 44 -31.5 75.5t-75.5 31.5v43zM0 21q27 0 45.5 -18.5t18.5 -45.5h-64v64zM0 192q97 0 166 -68.5t69 -166.5h-43q0 80 -56 136t-136 56v43zM320 426q18 0 30.5 -12t12.5 -30v-363q0 -17 -12.5 -29.5t-30.5 -12.5h-44q-4 45 -21 85 h65v277h-213v-128q-20 8 -43 14v157q0 18 12.5 30.5t30.5 12.5z" />
-<glyph unicode="" horiz-adv-x="512" d="M0 128v128h43v-128h-43zM64 85v214h43v-214h-43zM469 256h43v-128h-43v128zM405 85v214h43v-214h-43zM352 384q13 0 22.5 -9.5t9.5 -22.5v-320q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v320q0 13 9.5 22.5t22.5 9.5h192zM341 43v298h-170v-298h170z " />
-<glyph unicode="" horiz-adv-x="512" d="M394.5 320q48.5 0 83 -34.5t34.5 -83t-34.5 -83t-82.5 -34.5h-278q-48 0 -82.5 34.5t-34.5 83t34.5 83t83 34.5t83 -34.5t34.5 -82.5q0 -43 -27 -75h96q-27 32 -27 75q0 48 34.5 82.5t83 34.5zM117 128q31 0 53 22t22 53t-22 52.5t-53 21.5t-52.5 -21.5t-21.5 -52.5 t21.5 -53t52.5 -22zM395 128q31 0 52.5 22t21.5 53t-21.5 52.5t-52.5 21.5t-53 -21.5t-22 -52.5t22 -53t53 -22z" />
-<glyph unicode="" horiz-adv-x="469" d="M149 277v-85h107v85h-107zM0 427h85v-22h299v22h85v-86h-21v-298h21v-86h-85v22h-299v-22h-85v86h21v298h-21v86zM85 43v-22h299v22h21v298h-21v22h-299v-22h-21v-298h21zM107 320h192v-85h64v-171h-214v85h-42v171zM299 149h-107v-42h128v85h-21v-43z" />
-<glyph unicode="" horiz-adv-x="341" d="M47 115q19 0 33 -13.5t14 -33t-14 -33.5t-33 -14t-33 14t-14 33.5t14 33t33 13.5zM0 238q90 0 153.5 -63.5t63.5 -153.5h-62q0 64 -45.5 109.5t-109.5 45.5v62zM0 363q93 0 171.5 -46t124 -124.5t45.5 -171.5h-62q0 116 -81.5 198t-197.5 82v62z" />
-<glyph unicode="" horiz-adv-x="474" d="M79 384h164q16 2 29.5 -9t14.5 -28v-55.5v-55.5l36 59q30 -47 84 -135.5t67 -110.5h-241q-29 -30 -52 -39q-42 -18 -88 -4t-71 53q-27 39 -21 89t41 82v106q-2 18 8.5 33t28.5 15zM91 331v-72q40 13 82 -1t65 -49v122h-147zM131 217q-30 -1 -51 -18.5t-31 -47.5 q-8 -34 13 -65.5t56 -36.5q34 -6 64 17t32 58q5 36 -21 65t-62 28zM323 201l-62 -102h125z" />
-<glyph unicode="" horiz-adv-x="423" d="M212.5 409q18.5 0 31.5 -13.5t13 -31.5t-13 -31.5t-31.5 -13.5t-31.5 13.5t-13 31.5t13 31.5t31.5 13.5zM337 362q22 0 37.5 -16t15.5 -37.5t-15.5 -37.5t-37.5 -16t-38 16t-16 37.5t16 37.5t38 16zM91.5 352q16.5 0 28 -12t11.5 -28.5t-11.5 -28.5t-28 -12t-28.5 12 t-12 28.5t12 28.5t28.5 12zM34 218q14 0 24 -10t10 -24t-10 -24t-24 -10t-24 10t-10 24t10 24t24 10zM389 218q14 0 24 -10t10 -24t-10 -24t-24 -10t-24 10t-10 24t10 24t24 10zM85 91q14 0 24 -10t10 -24t-10 -24t-24 -10t-24 10t-10 24t10 24t24 10zM340 91q14 0 24 -10 t10 -24t-10 -24t-24 -10t-24 10t-10 24t10 24t24 10zM212 44q14 0 24.5 -10.5t10.5 -24.5t-10.5 -24t-24.5 -10t-24 10t-10 24t10 24.5t24 10.5z" />
-<glyph unicode="" d="M0 405h85v-21h150v21h85v-85h-21v-64h42v21h86v-85h-22v-128h22v-85h-86v21h-128v-21h-85v85h21v43h-64v-22h-85v86h21v149h-21v85zM341 192v21h-42v-42h21v-86h-85v22h-43v-43h21v-21h128v21h22v128h-22zM235 320v21h-150v-21h-21v-149h21v-22h64v43h-21v85h85v-21h43 v64h-21zM213 192h-21v-43h43v22h21v42h-43v-21z" />
-<glyph unicode="" d="M281 137q-12 -13 -12 -14q-14 -13 -21 -17q-26 -19 -59 -12q-30 6 -45 36q-1 2 -2 3q-8 -12 -8 -13q-21 -28 -57 -29q-23 -1 -40 6q-36 16 -37 56h40l1 -4q5 -20 21 -24q21 -5 35 9q9 10 10.5 25t-6.5 26q-8 12 -23 14.5t-26 -6.5q-4 -3 -6 -5q-3 -5 -11 -5h-29 q9 53 20 110h111v-33h-4h-75q-3 0 -4 -3q-1 -4 -7 -39v-3q21 19 52 14q27 -5 42 -34q1 1 1 3q2 2 2 3q21 43 69 36q26 -3 46 -22q1 -1 23 -24l2 2q22 23 24 25q17 16 38 19q23 3 43 -5.5t30 -30.5q16 -38 -2 -74q-16 -33 -55 -35q-29 -1 -51 17q-3 2 -25 22q0 1 -5 6z M205 132q12 0 24 7q8 4 28 23q1 2 0 4q-2 1 -9.5 8t-11.5 11q-9 8 -21 12q-14 4 -25 -2t-15 -20q-1 -4 -1 -8q-1 -16 8 -25.5t23 -9.5zM304 164q22 -20 24 -21q13 -12 30 -11q25 0 30 24q1 7 0 15q-2 13 -11.5 21t-22.5 6q-15 -1 -28 -13q-1 -1 -22 -21z" />
-<glyph unicode="" d="M117 213h193q31 0 53 22t22 53t-22 53.5t-53.5 22.5t-53.5 -22.5t-22 -53.5v-33h-42v33q0 49 34.5 83.5t83 34.5t83 -34.5t34.5 -83t-34.5 -83t-82.5 -34.5h-193q-31 0 -53 -22t-22 -53t22 -53t53 -22t53 22t22 53v34h42v-34q0 -48 -34 -82.5t-82.5 -34.5t-83 34.5 t-34.5 83t34.5 82.5t82.5 34z" />
-<glyph unicode="" d="M379 87q6 2 9 -2.5t-2 -8.5q-34 -25 -81 -39t-92 -14q-122 0 -211 81q-3 3 -1 5.5t6 0.5q96 -56 211 -56q83 0 161 33zM425 113q5 -6 -2.5 -31.5t-23.5 -39.5q-3 -3 -5 -2t-1 5q18 45 12 53t-54 2q-4 0 -4.5 2t2.5 4q18 13 46 13.5t30 -6.5zM237 271v6q0 22 -6 30 q-7 11 -23 11q-28 0 -33 -25q-2 -8 -8 -8l-40 4q-8 2 -6 9q6 34 32.5 49t60.5 15q41 0 63 -21q3 -3 5.5 -6t4.5 -7.5t3.5 -7t2 -8t1.5 -8t1 -9v-8v-9v-9.5v-65q0 -17 16 -38q5 -7 0 -12q-16 -12 -32 -27q-5 -4 -10 -1q-11 9 -24 28q-17 -18 -32 -24.5t-37 -6.5 q-27 0 -44.5 17t-17.5 48q0 49 44 69q17 7 79 14zM229 184q8 14 8 45v9q-62 0 -62 -42q0 -14 6.5 -22.5t18.5 -8.5q18 0 29 19z" />
-<glyph unicode="" d="M397 243q30 0 30 -31v-103q0 -53 -39.5 -91.5t-92.5 -38.5h-171q-48 0 -86 38.5t-38 90.5v162q0 57 39 96t96 39h90q44 0 84.5 -39.5t40.5 -85.5v-11q0 -11 7.5 -18.5t20.5 -7.5h19zM135 294q-10 0 -17.5 -7.5t-7.5 -18t7.5 -18t17.5 -7.5h78q10 0 17 8t7 18t-7 17.5 t-17 7.5h-78zM289 90q10 0 17.5 6.5t7.5 16.5t-7.5 17t-17.5 7h-154q-10 0 -17.5 -7t-7.5 -17t7.5 -16.5t17.5 -6.5h154z" />
-<glyph unicode="" d="M427 192h-214v-213h-213v213h213v213h214v-213z" />
-<glyph unicode="" d="M219 243q26 0 42 -13t16 -38t-16 -38t-42 -13h-23v102h23zM221 400q85 0 145.5 -61t60.5 -147t-60.5 -147t-145.5 -61q-75 0 -133 49l-88 -12l34 85q-18 41 -18 86q0 86 60 147t145 61zM333 193v0q0 46 -30.5 74t-83.5 28h-78v-206h76q54 0 85 29t31 75z" />
-<glyph unicode="" d="M426 145q0 -46 -13 -81q-25 -66 -96 -81q-20 -4 -43 -4h-240h-3v1l45 45l124 124l0.5 0.5t1.5 0.5q4 4 7 3q4 -2 4 -8v-63v-4q0 -1 2 -1q47 1 55 1q8 1 19 5q28 9 35 42q3 16 3 33v114q0 3 3 6l93 93q0 1 2 4l1 -1h1v-4q0 -24 -1 -225zM100 112q0 -3 -3 -6l-94 -94l-3 -3 v5v111.5v112.5q0 45 12 79q25 69 99 84q19 4 42 4h75h89h75h4q-1 0 -2 -2q0 -1 -1 -1q-27 -28 -82.5 -83.5l-83.5 -83.5q-3 -2 -3 -3q-4 -3 -7 -1q-1 2 -4 6v3v32v31v3q0 1 -1 1q-50 -1 -59 -2q-4 0 -13 -3q-31 -9 -37 -44q-3 -15 -3 -34q-1 -25 0 -112z" />
-<glyph unicode="" d="M97 95q-40 0 -68.5 28.5t-28.5 68t28.5 67.5t68.5 28t68 -28t28 -67.5t-28 -68t-68 -28.5zM330 95q-40 0 -68.5 28.5t-28.5 68t28.5 67.5t68.5 28t68.5 -28t28.5 -67.5t-28.5 -68t-68.5 -28.5z" />
-<glyph unicode="" horiz-adv-x="384" d="M384 257q0 -38 -10.5 -65t-30.5 -41.5t-40 -21t-47 -9.5q19 -16 19 -51v-55.5v-34.5h-139v14v26.5v24.5q-16 -3 -29.5 -3t-23 2.5t-17 6.5t-12 8.5t-7.5 8.5t-4 7l-1 3q-6 14 -13.5 24t-12.5 13l-5 3q-11 9 -11 12.5t7 4.5h6q12 -1 23 -8t15 -14l5 -6q27 -47 81 -23 q3 24 18 37q-27 3 -47 9.5t-39.5 21t-30.5 41.5t-11 65q0 43 29 74q-13 33 3 74q3 -1 8 0.5t25 -6t44 -23.5q33 9 70 10q36 -1 70 -10q23 16 42.5 23t26.5 7l7 -1q17 -41 3 -74q29 -31 29 -74zM32 121.5q1 2.5 -2.5 4t-4.5 -1t2.5 -4t4.5 1zM43.5 109q2.5 2 -1 5.5t-6 1.5 t1 -5.5t6 -1.5zM54 93q3 2 0 6.5t-6 2.5t0 -6.5t6 -2.5zM69.5 77q2.5 3 -1.5 7.5t-7 1.5t1.5 -7.5t7 -1.5zM90 68.5q1 3.5 -4.5 5.5t-6.5 -2t4.5 -5.5t6.5 2zM107 63q6 0 6 4t-6 4t-6 -4t6 -4zM129 65q3 1 4.5 2.5t0.5 2.5q0 5 -6 4q-3 -1 -4.5 -2.5t-0.5 -3.5q0 -4 6 -3z " />
-<glyph unicode="" horiz-adv-x="267" d="M147 5q36 0 59 17.5t23 41.5q0 20 -12 33.5t-48 39.5h-14q-33 0 -59 -9q-48 -17 -48 -57q0 -30 27 -48t72 -18zM81 329q0 -36 19 -66.5t50 -30.5q17 0 34.5 12.5t17.5 42.5q0 33 -20 66t-52 33q-21 0 -35 -14.5t-14 -42.5zM220 164q22 -19 33.5 -36t11.5 -43 q0 -43 -38.5 -74.5t-107.5 -31.5q-58 0 -88.5 23.5t-30.5 57.5q0 43 42 67q39 24 107 29q-17 19 -17 36q0 6 7 23h-15q-41 0 -65.5 26.5t-24.5 60.5q0 44 31.5 73.5t88.5 29.5h113l-23 -22h-32q37 -32 37 -71q0 -19 -7.5 -34.5t-15.5 -23.5t-23 -20q-18 -14 -18 -29 q0 -13 15 -26z" />
-<glyph unicode="" d="M319 186.5q-8 10.5 -30 10.5q-27 0 -38 -16t-11 -45v-146q0 -5 -3 -8t-8 -3h-76q-4 0 -7.5 3t-3.5 8v270q0 4 3.5 7.5t7.5 3.5h74q4 0 6.5 -2t3.5 -6v-5q1 -2 1 -7q28 27 76 27q53 0 83 -27t30 -79v-182q0 -5 -3.5 -8t-7.5 -3h-78q-4 0 -7.5 3t-3.5 8v164q0 22 -8 32.5z M88 316.5q-15 -15.5 -36.5 -15.5t-36.5 15.5t-15 37t15 36.5t36.5 15t36.5 -15t15 -36.5t-15 -37zM101 260v-270q0 -5 -3.5 -8t-7.5 -3h-76q-5 0 -8 3t-3 8v270q0 4 3 7.5t8 3.5h76q4 0 7.5 -3.5t3.5 -7.5z" />
-<glyph unicode="" horiz-adv-x="256" d="M128 189q-45 0 -76.5 32t-31.5 76.5t31.5 76t76.5 31.5t76.5 -31.5t31.5 -76t-31.5 -76.5t-76.5 -32zM128 350q-22 0 -37.5 -15.5t-15.5 -37.5t15.5 -37.5t37.5 -15.5t37.5 15.5t15.5 37.5t-15.5 37.5t-37.5 15.5zM252 176q8 -15 1 -24.5t-29 -24.5q-27 -17 -75 -22 l81 -81q7 -7 7 -17.5t-7 -17.5l-3 -3q-8 -7 -18 -7t-17 7q-12 11 -64 64l-63 -64q-7 -7 -17.5 -7t-17.5 7l-3 3q-7 7 -7 17.5t7 17.5l63 63l18 18q-48 4 -76 22q-22 15 -29 24.5t1 24.5q5 11 16 13.5t29 -8.5q14 -11 33.5 -17t32.5 -6l13 -1q49 0 79 24q18 11 29 8.5 t16 -13.5z" />
-<glyph unicode="" d="M267 315h145q4 0 9.5 -5t5.5 -12l-127 -85h-4l-29 18v84zM267 200l27 -18q2 -1 4 -1h3l1 1q-2 -1 29 19.5t64 41.5l32 21v-153q0 -12 -6.5 -18t-16.5 -6h-137v113v0zM128 239q13 0 20.5 -12.5t7.5 -34.5t-7.5 -34t-21.5 -12q-13 0 -21 12.5t-8 33.5t8 34t22 13zM0 357 l251 48v-426l-251 52v326zM168 139q16 21 16 54t-15.5 53.5t-40.5 20.5q-26 0 -42 -21t-16 -56q0 -32 16 -52t41 -20t41 21z" />
-<glyph unicode="" horiz-adv-x="356" d="M225 276q0 34 -52 34h-15q-7 0 -13 -4.5t-7 -11.5l-14 -60v-3q0 -5 3.5 -8.5t8.5 -3.5h12q15 0 28 3t24.5 9t18 17.5t6.5 27.5zM356 243q0 -58 -48 -93q-47 -35 -133 -35h-13q-7 0 -13 -4.5t-7 -11.5l-16 -69q-2 -7 -9 -12.5t-15 -5.5h-46q-7 0 -11.5 4t-4.5 11q0 2 3 14 h32q8 0 14.5 5t7.5 12l16 69q2 7 8.5 12t13.5 5h13q85 0 132 35t47 92q0 28 -11 44q40 -20 40 -72zM316 283q0 -57 -48 -93q-47 -35 -133 -35h-13q-7 0 -13 -4.5t-7 -11.5l-16 -68q-2 -8 -8.5 -13.5t-15.5 -5.5h-46q-7 0 -11.5 4t-4.5 11v4l66 283q1 7 8 12.5t15 5.5h97 q14 0 26.5 -0.5t26.5 -3t24.5 -6.5t21 -11t17 -16t10.5 -22.5t4 -29.5z" />
-<glyph unicode="" horiz-adv-x="341" d="M99 242q0 27 14 46t34 19q17 0 25.5 -11t8.5 -27q0 -10 -3 -25q-4 -14 -10 -34q-6 -19 -9 -31q-5 -20 7.5 -34.5t32.5 -14.5q35 0 57.5 39.5t22.5 95.5q0 43 -27.5 70t-77.5 27q-56 0 -90.5 -35.5t-34.5 -85.5q0 -29 17 -50q6 -6 4 -14q-2 -5 -5 -20q-2 -5 -5.5 -6.5 t-7.5 -0.5q-26 11 -39 37t-13 60q0 22 7 44t22 42.5t36 36.5t51 25.5t65 9.5t65.5 -12t51 -32t32 -46.5t11.5 -54.5q0 -75 -38 -124t-98 -49q-20 0 -37.5 9t-24.5 22q-15 -58 -18 -69q-8 -30 -36 -70h-17q-6 51 2 84l33 138q-8 17 -8 41z" />
-<glyph unicode="" d="M426 121q2 -9 -6.5 -18t-27.5 -15l-2 -1l-64 20l17 6q21 7 21 13q-2 10 -37 4l-36 -12l-61 -21v-22l96 32l64 -20l-99 -34l-61 -21v1v-1l-69 22v39v-19q-40 -14 -84 -6q-3 0 -11 1.5t-12 2t-11 1.5t-11.5 2.5t-10 3t-8.5 3t-6.5 4t-5 5t-1.5 5.5q-2 25 34 37l59 -18 l-15 -6q-15 -5 -6 -13q9 -9 25 -4l64 22v44l-27 8l27 9v177l88 -23q91 -24 90 -95q-1 -90 -82 -67v117q0 6 -7 9t-13.5 1t-6.5 -9v-148l6 2q58 20 104 17q80 -6 86 -35zM34 133h0.5h1.5l98 33l27 -8v-19l-68 -24z" />
-<glyph unicode="" d="M427 195q0 -28 -27 -39q2 -9 2 -19q0 -51 -55.5 -87.5t-134 -36.5t-134 36.5t-55.5 87.5q0 10 2 20q-25 11 -25 38q0 18 12.5 30.5t29.5 12.5q19 0 32 -15q52 36 129 39l35 104q3 7 10 5l83 -20q1 0 3 -1q8 20 30 20q13 0 23 -10t10 -23.5t-10 -23.5t-23 -10 q-14 0 -23.5 9.5t-9.5 23.5q-2 -1 -3 0l-77 18l-31 -92q79 -2 132 -40q13 16 33 16q17 0 29.5 -12.5t12.5 -30.5zM116 161.5q0 -12.5 9 -21.5t21.5 -9t21.5 9t9 21.5t-9 22t-21.5 9.5t-21.5 -9.5t-9 -22zM282 77q4 3 0.5 6.5t-7.5 0.5q-18 -19 -62 -19t-62 19 q-3 3 -6.5 -0.5t-0.5 -6.5q21 -22 70 -22q47 0 68 22zM280.5 131q12.5 0 21.5 9t9 21.5t-9 22t-21.5 9.5t-22 -9.5t-9.5 -22t9.5 -21.5t22 -9z" />
-<glyph unicode="" d="M414 147q13 -25 13 -52q0 -48 -34.5 -82t-83.5 -34q-30 0 -56 13q-19 -3 -37 -3q-85 0 -144.5 59t-59.5 142q0 20 4 40q-16 27 -16 59q0 48 34.5 82t83.5 34q34 0 63 -18q17 3 35 3q84 0 143.5 -58.5t59.5 -141.5q0 -22 -5 -43zM318.5 94.5q14.5 19.5 14.5 44.5 q0 21 -8.5 35.5t-23.5 23.5q-14 10 -34 16q-21 6 -45 12q-20 4 -29 7q-8 2 -16 6t-12 9t-4 12q0 11 12 19q14 8 36 8q23 0 34 -7q10 -8 18 -23q6 -11 12 -16t18 -5t20.5 8.5t8.5 19.5t-6.5 22.5t-20 22t-33.5 17t-47 6.5q-35 0 -60 -10q-26 -9 -39.5 -27t-13.5 -40 q0 -24 13 -41q13 -16 35 -25q21 -9 53 -16q23 -4 37 -9q14 -4 22 -11q8 -8 8 -20q0 -14 -15 -25q-16 -10 -41 -10q-18 0 -29.5 5t-17.5 13t-11 21q-5 11 -12 17q-8 6 -18 6q-13 0 -21.5 -8t-8.5 -19q0 -18 13 -36t34 -29q28 -15 72 -15q37 0 64 11t41.5 30.5z" />
-<glyph unicode="" horiz-adv-x="420" d="M153 276q21 0 35.5 -14t14.5 -33.5t-14.5 -33t-35.5 -13.5t-36 13.5t-15 33t15 33.5t36 14zM272 276q21 0 35.5 -13.5t14.5 -33t-14.5 -33.5t-35.5 -14t-36 14t-15 33.5t15 33t36 13.5zM403 202q10 7 15 0.5t-1 -15.5q-29 -36 -88 -60q26 -89 -22 -131q-32 -27 -64 -14 q-27 10 -26 42q0 -1 -0.5 24.5t-0.5 53.5l-4 1t-7 2v-36v-33t0 -12q1 -36 -32 -44q-36 -9 -65 23q-40 43 -16 124q-60 25 -89 60q-6 9 -1 15.5t14 -0.5l4 -3v165q0 17 12.5 29t28.5 12h300q16 0 26 -12t10 -29v-165q2 0 6 3zM376 186v159q0 22 -6.5 30.5t-24.5 8.5h-266 q-20 0 -26.5 -8.5t-6.5 -30.5v-160q23 -14 51 -19.5t46 -4.5t34 0q15 1 22 -6q1 0 1.5 -1l0.5 -1q9 -8 15 -12q1 22 27 20q16 1 34 0t46 5t53 20z" />
-<glyph unicode="" d="M9 124h-9v51h9v-51zM30 107h-9v81h9v-81zM47 103h-9v94h9v-94zM64 99h-9v94h9v-94zM85 99h-8v123h8v-123zM102 99h-8v140h8v-140zM124 99h-9v149h9v-149zM141 99h-9v153h9v-153zM162 99h-8v149h8v-149zM179 99h-8v145h8v-145zM196 99h-8v162h8v-162zM218 99h-9v175h9 v-175zM374 100h-146q-6 0 -6 6v167q0 4 5 6q17 6 34 6q36 0 62.5 -24.5t30.5 -59.5q9 4 20 4q22 0 37.5 -15.5t15.5 -37.5t-15.5 -37t-37.5 -15z" />
-<glyph unicode="" horiz-adv-x="265" d="M0 231v60q25 8 43 23.5t29 36.5t15 54h61v-108h102v-66h-102v-110q0 -37 4 -47.5t15 -16.5q14 -9 33 -9q32 0 65 21v-67q-28 -13 -50.5 -18t-48.5 -5q-29 0 -51.5 7t-38.5 21t-22.5 29.5t-6.5 44.5v149h-47v1z" />
-<glyph unicode="" horiz-adv-x="407" d="M296 34h-83l-56 -55h-55v55h-102v297l28 74h379v-259zM370 164v204h-305v-269h83v-55l56 55h102zM269 294h37v-111h-37v111zM167 183v111h37v-111h-37z" />
-<glyph unicode="" d="M276 284q-15 0 -32 -7q32 103 120 101q66 -2 62 -86q-2 -63 -87 -172q-87 -114 -147 -114q-37 0 -63 70q-18 66 -34 127q-19 69 -41 69q-5 0 -34 -20l-20 26q33 29 62 56q42 36 63 38q50 5 62 -68q12 -80 17 -99q14 -65 32 -65q13 0 40 42.5t29 64.5q3 37 -29 37z" />
-<glyph unicode="" d="M364.5 343q62.5 -62 62.5 -149.5t-62.5 -149.5t-150.5 -62v0q-54 0 -101 26l-113 -29l30 109q-28 49 -28 106q0 87 62 149t150 62t150.5 -62zM214 18q73 0 125 51.5t52 124.5t-52 124.5t-125 51.5t-124.5 -51.5t-51.5 -124.5q0 -51 27 -94l4 -6l-18 -65l67 17l6 -3 q42 -25 90 -25zM311 150q9 -5 10 -7q4 -6 -3 -25q-3 -8 -15 -15.5t-21 -9.5q-18 -2 -33 2q-17 6 -30 11q-8 4 -15.5 8.5t-14.5 9t-13 9.5t-11.5 10t-10.5 10.5t-8.5 9.5t-7 8.5t-5.5 7t-3.5 5l-1.5 2.5q-22 29 -22 55q0 24 19 44q6 7 14 7q6 0 10 -1q8 0 12 -9q2 -3 6 -13 l7 -17.5t3 -8.5q3 -5 1 -9q-3 -7 -5 -9l-3 -3t-3 -3.5t-2 -2.5q-6 -6 -3 -11q13 -22 30 -37q13 -11 43 -26q7 -3 11 1q12 15 17 21q4 6 12 3q6 -3 36 -17z" />
-<glyph unicode="" d="M213 323q-24 18 -47 27.5t-38.5 10.5t-28 0t-18.5 -4l-6 -3q59 51 138 51t139 -51q-3 1 -7 3t-17.5 4t-28.5 0t-38.5 -11t-47.5 -27v0zM157 282q-39 -40 -65 -78t-34.5 -63.5t-12 -44.5t-1.5 -28l3 -9q-47 58 -47 133q0 84 57 145q38 -16 100 -55zM427 192 q0 -75 -47 -133q1 3 2.5 9t-1.5 27.5t-12 45.5t-34.5 62.5t-65.5 78.5q28 17 53 31t36 19l11 5q58 -61 58 -145zM212 236q38 -27 67.5 -57t45 -53t26 -42t13.5 -29l3 -10q-62 -66 -153.5 -66t-154.5 66q2 4 5 11.5t15 30t28 44.5t44 51t61 54z" />
-<glyph unicode="" d="M414 271q-5 0 -49 -10q-10 -3 -62.5 -45.5t-56.5 -55.5q-2 -10 -2 -27l-1 -15q0 -9 4 -39q4 -1 32 -1t32 -1l-1 -20q-6 1 -105 1q-6 0 -44 -1t-49 -1l4 19h15.5t27 2t15.5 6q1 1 1.5 2t1 2.5t0.5 3v4.5v6v8v10v13q0 17 -1 27q-3 10 -51.5 69.5t-65.5 72.5q-3 1 -28.5 4 t-29.5 4l-1 18q2 1 17.5 1t35.5 -0.5t44 0.5q23 0 61 -0.5t45 -0.5l-3 -16q-4 -1 -30.5 -2.5t-31.5 -3.5q16 -24 50 -68.5t39 -51.5q2 3 41.5 36t40.5 43q-38 7 -54 7l-3 20h20h38.5h30.5q72 0 86 -2z" />
-<glyph unicode="" d="M422 277q5 -35 5 -69v-32l-5 -69q-4 -29 -17 -42q-14 -14 -42 -18q-27 -2 -64.5 -3t-61.5 -1h-24q-111 1 -145 4l-8 1t-13 2t-12.5 5t-13 10t-10 16.5t-5.5 18.5l-2 7q-4 35 -4 69v32l4 69q4 29 17 42q14 15 43 18q27 2 64 3t61 1h24q90 0 150 -4q28 -3 42 -18 q4 -4 7 -9.5t5 -11t3 -10.5t2 -8v-3zM271 189l14 7l-115 60v-120z" />
-<glyph unicode="" horiz-adv-x="352" d="M170 224q18 0 57.5 -1t59.5 -2q15 0 26 -3q28 -6 34 -40q5 -35 5 -59q0 -39 -3 -87q-1 -12 -7 -25q-11 -24 -43 -25q-103 -3 -152 -3q-17 0 -47.5 1t-40.5 1t-22 4q-20 5 -29 26q-6 17 -8 52q-1 41 2 94q1 15 5 31q9 31 42 33q31 0 121 3zM202 33q4 -3 13 -9 q9 -5 17.5 -1t10.5 15q2 9 2 14v60q0 8 -3 15q-3 13 -12 16.5t-20 -4.5q-2 -1 -4.5 -3.5l-3.5 -3.5v50h-21v-158h21q-1 4 0 9zM162 24v118h-22v-7v-76q0 -8 -6 -12q-4 -5 -9 -3q-3 1 -3 7v84v7h-22v-3v-96q0 -3 1 -9q4 -16 20 -11q4 1 13 7q2 1 6 6v-12h22zM323 79 q0 4 0.5 11t0.5 12.5t-1 10.5q-1 14 -9 22t-21 9q-14 1 -23.5 -6.5t-10.5 -21.5q-3 -33 0 -67q2 -15 14 -22.5t28 -3.5q13 3 19.5 15.5t2.5 26.5h-22q0 -10 -1 -14q-1 -9 -9 -9t-9 8q-1 9 -2 30q16 -1 43 -1zM103 159v23h-74v-23h24v-135h25v135h25zM247 364v-34v-59 q0 -6 4 -7q3 -1 7 2q7 5 7 14v26v31v27h22v-119h-22v12l-5 -5q-8 -6 -11 -7q-8 -4 -14.5 -0.5t-8.5 11.5q-1 4 -1 7v100q7 1 22 1zM66 405h22q2 0 4 -4q10 -34 14 -51q0 -1 2 -3q4 18 9 32q1 3 3 10.5t3 11.5q1 3 4 4h22q0 -1 -1 -4q-1 -1 -1 -2q-4 -14 -13 -42t-13 -42 q-2 -6 -2 -10v-59h-23q0 3 -0.5 8.5t-0.5 9.5t1 8q2 36 -13 78q-9 27 -17 55zM208 304v-11t-0.5 -13t-1.5 -11q-1 -11 -10 -18.5t-21 -7.5t-20 7.5t-11 18.5q-1 7 -1 21q0 38 1 49q4 27 31 27q26 0 31 -27q0 -1 0.5 -2.5t0.5 -2.5q0 -5 0.5 -15t0.5 -15zM167 305v-28 q0 -6 1 -8q4 -5 8 -5t8 5q1 2 1 8v49v12q-1 7 -9 7q-7 0 -9 -7q-1 -2 -1 -6t0.5 -13t0.5 -14zM206 83v31q0 9 11 9q8 0 8 -7v-5.5v-4.5v-50v-3.5v-3.5q-1 -7 -8 -7q-11 1 -11 9q-1 16 0 32zM299 97h-20q0 4 0.5 10.5t0.5 10.5q1 6 9 6q7 0 8 -6q2 -10 2 -21z" />
-</font>
-</defs></svg>
\ No newline at end of file diff --git a/mpv/fonts/Material-Design-Iconic-Font.ttf b/mpv/fonts/Material-Design-Iconic-Font.ttf Binary files differdeleted file mode 100644 index 5d489fd..0000000 --- a/mpv/fonts/Material-Design-Iconic-Font.ttf +++ /dev/null diff --git a/mpv/fonts/Material-Design-Iconic-Font.woff b/mpv/fonts/Material-Design-Iconic-Font.woff Binary files differdeleted file mode 100644 index 933b2bf..0000000 --- a/mpv/fonts/Material-Design-Iconic-Font.woff +++ /dev/null diff --git a/mpv/fonts/Material-Design-Iconic-Font.woff2 b/mpv/fonts/Material-Design-Iconic-Font.woff2 Binary files differdeleted file mode 100644 index 35970e2..0000000 --- a/mpv/fonts/Material-Design-Iconic-Font.woff2 +++ /dev/null diff --git a/mpv/input.conf b/mpv/input.conf deleted file mode 100644 index 8309354..0000000 --- a/mpv/input.conf +++ /dev/null @@ -1,209 +0,0 @@ -# mpv keybindings -# -# Location of user-defined bindings: ~/.config/mpv/input.conf -# -# Lines starting with # are comments. Use SHARP to assign the # key. -# Copy this file and uncomment and edit the bindings you want to change. -# -# List of commands and further details: DOCS/man/input.rst -# List of special keys: --input-keylist -# Keybindings testing mode: mpv --input-test --force-window --idle -# -# Use 'ignore' to unbind a key fully (e.g. 'ctrl+a ignore'). -# -# Strings need to be quoted and escaped: -# KEY show-text "This is a single backslash: \\ and a quote: \" !" -# -# You can use modifier-key combinations like Shift+Left or Ctrl+Alt+x with -# the modifiers Shift, Ctrl, Alt and Meta (may not work on the terminal). -# -# The default keybindings are hardcoded into the mpv binary. -# You can disable them completely with: --no-input-default-bindings - -# Developer note: -# On compilation, this file is baked into the mpv binary, and all lines are -# uncommented (unless '#' is followed by a space) - thus this file defines the -# default key bindings. - -# If this is enabled, treat all the following bindings as default. -#default-bindings start - -#MBTN_LEFT ignore # don't do anything -#MBTN_LEFT_DBL cycle fullscreen # toggle fullscreen on/off -#MBTN_RIGHT cycle pause # toggle pause on/off - -# Mouse wheels, touchpad or other input devices that have axes -# if the input devices supports precise scrolling it will also scale the -# numeric value accordingly -#WHEEL_UP seek 10 -#WHEEL_DOWN seek -10 -#WHEEL_LEFT add volume -2 -#WHEEL_RIGHT add volume 2 - -## Seek units are in seconds, but note that these are limited by keyframes -#RIGHT seek 5 -#LEFT seek -5 -#UP seek 60 -#DOWN seek -60 -# Do smaller, always exact (non-keyframe-limited), seeks with shift. -# Don't show them on the OSD (no-osd). -#Shift+RIGHT no-osd seek 1 exact -#Shift+LEFT no-osd seek -1 exact -#Shift+UP no-osd seek 5 exact -#Shift+DOWN no-osd seek -5 exact -# Skip to previous/next subtitle (subject to some restrictions; see manpage) -#Ctrl+LEFT no-osd sub-seek -1 -#Ctrl+RIGHT no-osd sub-seek 1 -# Adjust timing to previous/next subtitle -#Ctrl+Shift+LEFT sub-step -1 -#Ctrl+Shift+RIGHT sub-step 1 -# Move video rectangle -#Alt+left add video-pan-x 0.1 -#Alt+right add video-pan-x -0.1 -#Alt+up add video-pan-y 0.1 -#Alt+down add video-pan-y -0.1 -# Zoom/unzoom video -#Alt++ add video-zoom 0.1 -#Alt+- add video-zoom -0.1 -# Reset video zoom/pan settings -#Alt+BS set video-zoom 0 ; set video-pan-x 0 ; set video-pan-y 0 -#PGUP add chapter 1 # skip to next chapter -#PGDWN add chapter -1 # skip to previous chapter -#Shift+PGUP seek 600 -#Shift+PGDWN seek -600 -#[ multiply speed 1/1.1 # scale playback speed -#] multiply speed 1.1 -#{ multiply speed 0.5 -#} multiply speed 2.0 -#BS set speed 1.0 # reset speed to normal -#Shift+BS revert-seek # undo previous (or marked) seek -#Shift+Ctrl+BS revert-seek mark # mark position for revert-seek -#q quit -#Q quit-watch-later -#q {encode} quit 4 -#ESC set fullscreen no -#ESC {encode} quit 4 -#p cycle pause # toggle pause/playback mode -#. frame-step # advance one frame and pause -#, frame-back-step # go back by one frame and pause -#SPACE cycle pause -#> playlist-next # skip to next file -#ENTER playlist-next # skip to next file -#< playlist-prev # skip to previous file -#O no-osd cycle-values osd-level 3 1 # cycle through OSD mode -#o show-progress -#P show-progress -#i script-binding stats/display-stats -#I script-binding stats/display-stats-toggle -#z add sub-delay -0.1 # subtract 100 ms delay from subs -#Z add sub-delay +0.1 # add -#x add sub-delay +0.1 # same as previous binding (discouraged) -#ctrl++ add audio-delay 0.100 # this changes audio/video sync -#ctrl+- add audio-delay -0.100 -#9 add volume -2 -#/ add volume -2 -#0 add volume 2 -#* add volume 2 -#m cycle mute -#1 add contrast -1 -#2 add contrast 1 -#3 add brightness -1 -#4 add brightness 1 -#5 add gamma -1 -#6 add gamma 1 -#7 add saturation -1 -#8 add saturation 1 -#Alt+0 set window-scale 0.5 -#Alt+1 set window-scale 1.0 -#Alt+2 set window-scale 2.0 -# toggle deinterlacer (automatically inserts or removes required filter) -#d cycle deinterlace -#r add sub-pos -1 # move subtitles up -#R add sub-pos +1 # down -#t add sub-pos +1 # same as previous binding (discouraged) -#v cycle sub-visibility -# stretch SSA/ASS subtitles with anamorphic videos to match historical -#V cycle sub-ass-vsfilter-aspect-compat -# switch between applying no style overrides to SSA/ASS subtitles, and -# overriding them almost completely with the normal subtitle style -#u cycle-values sub-ass-override "force" "no" -#j cycle sub # cycle through subtitles -#J cycle sub down # ...backwards -#SHARP cycle audio # switch audio streams -#_ cycle video -#T cycle ontop # toggle video window ontop of other windows -#f cycle fullscreen # toggle fullscreen -#s async screenshot # take a screenshot -#S async screenshot video # ...without subtitles -#Ctrl+s async screenshot window # ...with subtitles and OSD, and scaled -#Alt+s screenshot each-frame # automatically screenshot every frame -#w add panscan -0.1 # zoom out with -panscan 0 -fs -#W add panscan +0.1 # in -#e add panscan +0.1 # same as previous binding (discouraged) -# cycle video aspect ratios; "-1" is the container aspect -#A cycle-values video-aspect "16:9" "4:3" "2.35:1" "-1" -#POWER quit -#PLAY cycle pause -#PAUSE cycle pause -#PLAYPAUSE cycle pause -#STOP quit -#FORWARD seek 60 -#REWIND seek -60 -#NEXT playlist-next -#PREV playlist-prev -#VOLUME_UP add volume 2 -#VOLUME_DOWN add volume -2 -#MUTE cycle mute -#CLOSE_WIN quit -#CLOSE_WIN {encode} quit 4 -#E cycle edition # next edition -#l ab-loop # Set/clear A-B loop points -#L cycle-values loop-file "inf" "no" # toggle infinite looping -#ctrl+c quit 4 -#DEL script-binding osc/visibility # cycle OSC display -#ctrl+h cycle-values hwdec "auto" "no" # cycle hardware decoding -#F8 show_text ${playlist} # show playlist -#F9 show_text ${track-list} # show list of audio/sub streams - -# Apple Remote section -#AR_PLAY cycle pause -#AR_PLAY_HOLD quit -#AR_CENTER cycle pause -#AR_CENTER_HOLD quit -#AR_NEXT seek 10 -#AR_NEXT_HOLD seek 120 -#AR_PREV seek -10 -#AR_PREV_HOLD seek -120 -#AR_MENU show-progress -#AR_MENU_HOLD cycle mute -#AR_VUP add volume 2 -#AR_VUP_HOLD add chapter 1 -#AR_VDOWN add volume -2 -#AR_VDOWN_HOLD add chapter -1 - -# -# Legacy bindings (may or may not be removed in the future) -# -#! add chapter -1 # skip to previous chapter -#@ add chapter 1 # next - -# -# Not assigned by default -# (not an exhaustive list of unbound commands) -# - -# ? add sub-scale +0.1 # increase subtitle font size -# ? add sub-scale -0.1 # decrease subtitle font size -# ? cycle angle # switch DVD/Bluray angle -# ? cycle sub-forced-only # toggle DVD forced subs -# ? cycle program # cycle transport stream programs -# ? stop # stop playback (quit or enter idle mode) -CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Upscale_CNN_L_x2_Denoise.glsl:~~/shaders/Anime4K_Auto_Downscale_Pre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_M_x2_Deblur.glsl"; show-text "Anime4k: 480/720p (Faithful)" -CTRL+2 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Upscale_CNN_L_x2_Denoise.glsl:~~/shaders/Anime4K_Auto_Downscale_Pre_x4.glsl:~~/shaders/Anime4K_DarkLines_HQ.glsl:~~/shaders/Anime4K_ThinLines_HQ.glsl:~~/shaders/Anime4K_Upscale_CNN_M_x2_Deblur.glsl"; show-text "Anime4k: 480/720p (Perceptual Quality)" -CTRL+3 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Upscale_CNN_L_x2_Denoise.glsl:~~/shaders/Anime4K_Auto_Downscale_Pre_x4.glsl:~~/shaders/Anime4K_Deblur_DoG.glsl:~~/shaders/Anime4K_DarkLines_HQ.glsl:~~/shaders/Anime4K_ThinLines_HQ.glsl:~~/shaders/Anime4K_Upscale_CNN_M_x2_Deblur.glsl"; show-text "Anime4k: 480/720p (Perceptual Quality and Deblur)" -CTRL+4 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Denoise_Bilateral_Mode.glsl:~~/shaders/Anime4K_Upscale_CNN_M_x2_Deblur.glsl"; show-text "Anime4k: 1080p (Faithful)" -CTRL+5 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Denoise_Bilateral_Mode.glsl:~~/shaders/Anime4K_DarkLines_HQ.glsl:~~/shaders/Anime4K_ThinLines_HQ.glsl:~~/shaders/Anime4K_Upscale_CNN_M_x2_Deblur.glsl"; show-text "Anime4k: 1080p (Perceptual Quality)" -CTRL+6 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Denoise_Bilateral_Mode.glsl:~~/shaders/Anime4K_Deblur_DoG.glsl:~~/shaders/Anime4K_DarkLines_HQ.glsl:~~/shaders/Anime4K_ThinLines_HQ.glsl:~~/shaders/Anime4K_Upscale_CNN_M_x2_Deblur.glsl"; show-text "Anime4k: 1080p (Perceptual Quality and Deblur)" -CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared" - -F1 vf toggle rotate=1 diff --git a/mpv/mpv.conf b/mpv/mpv.conf index 286a922..63e83f0 100644 --- a/mpv/mpv.conf +++ b/mpv/mpv.conf @@ -1,10 +1,16 @@ # High Quality profile=gpu-hq +vo=gpu +gpu-api=vulkan hwdec=auto scale=ewa_lanczossharp dscale=mitchell cscale=spline36 +glsl-shader="~~/shaders/ravu-r4.hook" +glsl-shader="~~/shaders/SSimDownscaler.glsl" +glsl-shader="~~/shaders/KrigBilateral.glsl" + ################## # audio/subtitles settings # ################## @@ -15,7 +21,7 @@ slang=eng,en,en-US,enUS blend-subtitles=yes # disable osc -osc=no +#osc=no [idle] profile-cond=p["idle-active"] diff --git a/mpv/script_modules/mpvSockets/LICENSE b/mpv/script_modules/mpvSockets/LICENSE deleted file mode 100644 index c5551bb..0000000 --- a/mpv/script_modules/mpvSockets/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 Wis - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/mpv/script_modules/mpvSockets/README.md b/mpv/script_modules/mpvSockets/README.md deleted file mode 100644 index 9d3e1fb..0000000 --- a/mpv/script_modules/mpvSockets/README.md +++ /dev/null @@ -1,76 +0,0 @@ -# mpvSockets -create one sockets per mpv instance (with the instance's process **ID** (PID), (**unique**)), instead of one socket for the last started instance - -dangling sockets for crashed or killed instances is an issue, -not sure if this script should handle/remove them or the clients/users, or both. - -# Installation -Download the single script file to your mpv-scripts-directory -## Linux / unixes: -``` bash -curl "https://raw.githubusercontent.com/wis/mpvSockets/master/mpvSockets.lua" --create-dirs -o "$Your_Mpv_Scripts_Directory_Location/mpvSockets.lua" -``` -if you're on Linux, most likely the location is `~/.config/mpv/scripts`, so run this before: -``` bash -$Your_Mpv_Scripts_Directory_Location=$HOME/config/mpv/scripts -``` -## Windows (untested) -powershell: -``` powershell -Invoke-WebRequest -OutFile "$env:LOCALAPPDATA\mpv\scripts\mpvSockets.lua" "https://raw.githubusercontent.com/wis/mpvSockets/master/mpvSockets.lua" -``` - -# Usage, with Mpv's [JSON IPC](https://github.com/mpv-player/mpv/blob/master/DOCS/man/ipc.rst) -## Linux / unixes (unix sockets): -a script that pauses all running mpv instances: -bash: -``` bash -#!/bin/bash -for i in $(ls /tmp/mpvSockets/*); do - echo '{ "command": ["set_property", "pause", true] }' | socat - "$i"; -done -# Socat is a command line based utility that establishes two bidirec-tional byte streams and transfers data between them. -# available on Linux and FreeBSD, propably most unixes. you can also use -``` - -## Windows (named pipes): -quote from https://mpv.io/manual/stable/#command-prompt-example -> Unfortunately, it's not as easy to test the IPC protocol on Windows, since Windows ports of socat (in Cygwin and MSYS2) don't understand named pipes. In the absence of a simple tool to send and receive from bidirectional pipes, the echo command can be used to send commands, but not receive replies from the command prompt. -> -> Assuming mpv was started with: -> -> `mpv file.mkv --input-ipc-server=\\.\pipe\mpvsocket` -> You can send commands from a command prompt: -> -> `echo show-text ${playback-time} >\\.\pipe\mpvsocket` -To be able to simultaneously read and write from the IPC pipe, like on Linux, it's necessary to write an external program that uses overlapped file I/O (or some wrapper like .NET's NamedPipeClientStream.) - -powershell client writer and reader (untested): -``` powershell -# socat.ps1 -# usage: socat.ps1 <Pipe-name> <Message> -$sockedName = args[0] -$message = args[1] - -$npipeClient = new-object System.IO.Pipes.NamedPipeClientStream('.', $socketName, [System.IO.Pipes.PipeDirection]::InOut, [System.IO.Pipes.PipeOptions]::None, [System.Security.Principal.TokenImpersonationLevel]::Impersonation) - -$pipeReader = $pipeWriter = $null -try { - $npipeClient.Connect() - $pipeReader = new-object System.IO.StreamReader($npipeClient) - $pipeWriter = new-object System.IO.StreamWriter($npipeClient) - $pipeWriter.AutoFlush = $true - - $pipeWriter.WriteLine($message) - - while (($data = $pipeReader.ReadLine()) -ne $null) { - $data - } -} -catch { - "An error occurred that could not be resolved." -} -finally { - $npipeClient.Dispose() -} -```
\ No newline at end of file diff --git a/mpv/script_modules/mpvSockets/mpvSockets.lua b/mpv/script_modules/mpvSockets/mpvSockets.lua deleted file mode 100644 index df8d078..0000000 --- a/mpv/script_modules/mpvSockets/mpvSockets.lua +++ /dev/null @@ -1,36 +0,0 @@ --- mpvSockets, one socket per instance, removes socket on exit - -local utils = require 'mp.utils' - -local function get_temp_path() - local directory_seperator = package.config:match("([^\n]*)\n?") - local example_temp_file_path = os.tmpname() - - -- remove generated temp file - pcall(os.remove, example_temp_file_path) - - local seperator_idx = example_temp_file_path:reverse():find(directory_seperator) - local temp_path_length = #example_temp_file_path - seperator_idx - - return example_temp_file_path:sub(1, temp_path_length) -end - -tempDir = get_temp_path() - -function join_paths(...) - local arg={...} - path = "" - for i,v in ipairs(arg) do - path = utils.join_path(path, tostring(v)) - end - return path; -end - -ppid = utils.getpid() -os.execute("mkdir " .. join_paths(tempDir, "mpvSockets") .. " 2>/dev/null") -mp.set_property("options/input-ipc-server", join_paths(tempDir, "mpvSockets", ppid)) - -function shutdown_handler() - os.remove(join_paths(tempDir, "mpvSockets", ppid)) -end -mp.register_event("shutdown", shutdown_handler) diff --git a/mpv/scripts/modules.lua b/mpv/scripts/modules.lua deleted file mode 100644 index 703f372..0000000 --- a/mpv/scripts/modules.lua +++ /dev/null @@ -1,3 +0,0 @@ -local mpv_config_dir_path = require("mp").command_native({"expand-path", "~~/"}) -function load(relative_path) dofile(mpv_config_dir_path .. "/script_modules/" .. relative_path) end -load("mpvSockets/mpvSockets.lua") diff --git a/mpv/scripts/morden.lua b/mpv/scripts/morden.lua deleted file mode 100644 index b62c6e2..0000000 --- a/mpv/scripts/morden.lua +++ /dev/null @@ -1,2041 +0,0 @@ --- by maoiscat
--- email:valarmor@163.com
--- https://github.com/maoiscat/mpv-osc-morden
-
-local assdraw = require 'mp.assdraw'
-local msg = require 'mp.msg'
-local opt = require 'mp.options'
-local utils = require 'mp.utils'
-
---
--- Parameters
---
--- default user option values
--- may change them in osc.conf
-local user_opts = {
- showwindowed = true, -- show OSC when windowed?
- showfullscreen = true, -- show OSC when fullscreen?
- scalewindowed = 1, -- scaling of the controller when windowed
- scalefullscreen = 1, -- scaling of the controller when fullscreen
- scaleforcedwindow = 2, -- scaling when rendered on a forced window
- vidscale = false, -- scale the controller with the video?
- hidetimeout = 1000, -- duration in ms until the OSC hides if no
- -- mouse movement. enforced non-negative for the
- -- user, but internally negative is 'always-on'.
- fadeduration = 500, -- duration of fade out in ms, 0 = no fade
- minmousemove = 3, -- minimum amount of pixels the mouse has to
- -- move between ticks to make the OSC show up
- iamaprogrammer = false, -- use native mpv values and disable OSC
- -- internal track list management (and some
- -- functions that depend on it)
- font = 'mpv-osd-symbols', -- default osc font
- seekbarhandlesize = 1.0, -- size ratio of the slider handle, range 0 ~ 1
- seekrange = true, -- show seekrange overlay
- seekrangealpha = 128, -- transparency of seekranges
- seekbarkeyframes = true, -- use keyframes when dragging the seekbar
- title = '${media-title}', -- string compatible with property-expansion
- -- to be shown as OSC title
- showtitle = true, -- show title and no hide timeout on pause
- timetotal = true, -- display total time instead of remaining time?
- visibility = 'auto', -- only used at init to set visibility_mode(...)
- windowcontrols = 'auto', -- whether to show window controls
- language = 'eng', -- eng=English, chs=Chinese
-}
-
--- Localization
-local language = {
- ['eng'] = {
- welcome = '{\\fs24\\1c&H0&\\3c&HFFFFFF&}Drop files or URLs to play here.', -- this text appears when mpv starts
- off = 'OFF',
- na = 'n/a',
- none = 'none',
- video = 'Video',
- audio = 'Audio',
- subtitle = 'Subtitle',
- available = 'Available ',
- track = ' Tracks:',
- playlist = 'Playlist',
- nolist = 'Empty playlist.',
- chapter = 'Chapter',
- nochapter = 'No chapters.',
- },
- ['chs'] = {
- welcome = '{\\1c&H00\\bord0\\fs30\\fn微软雅黑 light\\fscx125}MPV{\\fscx100} 播放器', -- this text appears when mpv starts
- off = '关闭',
- na = 'n/a',
- none = '无',
- video = '视频',
- audio = '音频',
- subtitle = '字幕',
- available = '可选',
- track = ':',
- playlist = '播放列表',
- nolist = '无列表信息',
- chapter = '章节',
- nochapter = '无章节信息',
- }
-}
--- read options from config and command-line
-opt.read_options(user_opts, 'osc', function(list) update_options(list) end)
--- apply lang opts
-local texts = language[user_opts.language]
-local osc_param = { -- calculated by osc_init()
- playresy = 0, -- canvas size Y
- playresx = 0, -- canvas size X
- display_aspect = 1,
- unscaled_y = 0,
- areas = {},
-}
-
-local osc_styles = {
- TransBg = '{\\blur100\\bord140\\1c&H000000&\\3c&H000000&}',
- SeekbarBg = '{\\blur0\\bord0\\1c&HFFFFFF&}',
- SeekbarFg = '{\\blur1\\bord1\\1c&HE39C42&}',
- Ctrl1 = '{\\blur0\\bord0\\1c&HFFFFFF&\\3c&HFFFFFF&\\fs36\\fnmaterial-design-iconic-font}',
- Ctrl2 = '{\\blur0\\bord0\\1c&HFFFFFF&\\3c&HFFFFFF&\\fs24\\fnmaterial-design-iconic-font}',
- Ctrl3 = '{\\blur0\\bord0\\1c&HFFFFFF&\\3c&HFFFFFF&\\fs24\\fnmaterial-design-iconic-font}',
- Time = '{\\blur0\\bord0\\1c&HFFFFFF&\\3c&H000000&\\fs17\\fn' .. user_opts.font .. '}',
- Tooltip = '{\\blur1\\bord0.5\\1c&HFFFFFF&\\3c&H000000&\\fs18\\fn' .. user_opts.font .. '}',
- Title = '{\\blur1\\bord0.5\\1c&HFFFFFF&\\3c&H0\\fs48\\q2\\fn' .. user_opts.font .. '}',
- WinCtrl = '{\\blur1\\bord0.5\\1c&HFFFFFF&\\3c&H0\\fs20\\fnmpv-osd-symbols}',
- elementDown = '{\\1c&H999999&}',
-}
-
--- internal states, do not touch
-local state = {
- showtime, -- time of last invocation (last mouse move)
- osc_visible = false,
- anistart, -- time when the animation started
- anitype, -- current type of animation
- animation, -- current animation alpha
- mouse_down_counter = 0, -- used for softrepeat
- active_element = nil, -- nil = none, 0 = background, 1+ = see elements[]
- active_event_source = nil, -- the 'button' that issued the current event
- rightTC_trem = not user_opts.timetotal, -- if the right timecode should display total or remaining time
- mp_screen_sizeX, mp_screen_sizeY, -- last screen-resolution, to detect resolution changes to issue reINITs
- initREQ = false, -- is a re-init request pending?
- last_mouseX, last_mouseY, -- last mouse position, to detect significant mouse movement
- mouse_in_window = false,
- message_text,
- message_hide_timer,
- fullscreen = false,
- tick_timer = nil,
- tick_last_time = 0, -- when the last tick() was run
- hide_timer = nil,
- cache_state = nil,
- idle = false,
- enabled = true,
- input_enabled = true,
- showhide_enabled = false,
- dmx_cache = 0,
- border = true,
- maximized = false,
- osd = mp.create_osd_overlay('ass-events'),
- lastvisibility = user_opts.visibility, -- save last visibility on pause if showtitle
-}
-
-local window_control_box_width = 138
-local tick_delay = 0.03
-
---
--- Helperfunctions
---
-
-function set_osd(res_x, res_y, text)
- if state.osd.res_x == res_x and
- state.osd.res_y == res_y and
- state.osd.data == text then
- return
- end
- state.osd.res_x = res_x
- state.osd.res_y = res_y
- state.osd.data = text
- state.osd.z = 1000
- state.osd:update()
-end
-
--- scale factor for translating between real and virtual ASS coordinates
-function get_virt_scale_factor()
- local w, h = mp.get_osd_size()
- if w <= 0 or h <= 0 then
- return 0, 0
- end
- return osc_param.playresx / w, osc_param.playresy / h
-end
-
--- return mouse position in virtual ASS coordinates (playresx/y)
-function get_virt_mouse_pos()
- if state.mouse_in_window then
- local sx, sy = get_virt_scale_factor()
- local x, y = mp.get_mouse_pos()
- return x * sx, y * sy
- else
- return -1, -1
- end
-end
-
-function set_virt_mouse_area(x0, y0, x1, y1, name)
- local sx, sy = get_virt_scale_factor()
- mp.set_mouse_area(x0 / sx, y0 / sy, x1 / sx, y1 / sy, name)
-end
-
-function scale_value(x0, x1, y0, y1, val)
- local m = (y1 - y0) / (x1 - x0)
- local b = y0 - (m * x0)
- return (m * val) + b
-end
-
--- returns hitbox spanning coordinates (top left, bottom right corner)
--- according to alignment
-function get_hitbox_coords(x, y, an, w, h)
-
- local alignments = {
- [1] = function () return x, y-h, x+w, y end,
- [2] = function () return x-(w/2), y-h, x+(w/2), y end,
- [3] = function () return x-w, y-h, x, y end,
-
- [4] = function () return x, y-(h/2), x+w, y+(h/2) end,
- [5] = function () return x-(w/2), y-(h/2), x+(w/2), y+(h/2) end,
- [6] = function () return x-w, y-(h/2), x, y+(h/2) end,
-
- [7] = function () return x, y, x+w, y+h end,
- [8] = function () return x-(w/2), y, x+(w/2), y+h end,
- [9] = function () return x-w, y, x, y+h end,
- }
-
- return alignments[an]()
-end
-
-function get_hitbox_coords_geo(geometry)
- return get_hitbox_coords(geometry.x, geometry.y, geometry.an,
- geometry.w, geometry.h)
-end
-
-function get_element_hitbox(element)
- return element.hitbox.x1, element.hitbox.y1,
- element.hitbox.x2, element.hitbox.y2
-end
-
-function mouse_hit(element)
- return mouse_hit_coords(get_element_hitbox(element))
-end
-
-function mouse_hit_coords(bX1, bY1, bX2, bY2)
- local mX, mY = get_virt_mouse_pos()
- return (mX >= bX1 and mX <= bX2 and mY >= bY1 and mY <= bY2)
-end
-
-function limit_range(min, max, val)
- if val > max then
- val = max
- elseif val < min then
- val = min
- end
- return val
-end
-
--- translate value into element coordinates
-function get_slider_ele_pos_for(element, val)
-
- local ele_pos = scale_value(
- element.slider.min.value, element.slider.max.value,
- element.slider.min.ele_pos, element.slider.max.ele_pos,
- val)
-
- return limit_range(
- element.slider.min.ele_pos, element.slider.max.ele_pos,
- ele_pos)
-end
-
--- translates global (mouse) coordinates to value
-function get_slider_value_at(element, glob_pos)
-
- local val = scale_value(
- element.slider.min.glob_pos, element.slider.max.glob_pos,
- element.slider.min.value, element.slider.max.value,
- glob_pos)
-
- return limit_range(
- element.slider.min.value, element.slider.max.value,
- val)
-end
-
--- get value at current mouse position
-function get_slider_value(element)
- return get_slider_value_at(element, get_virt_mouse_pos())
-end
-
-function countone(val)
- if not (user_opts.iamaprogrammer) then
- val = val + 1
- end
- return val
-end
-
--- multiplies two alpha values, formular can probably be improved
-function mult_alpha(alphaA, alphaB)
- return 255 - (((1-(alphaA/255)) * (1-(alphaB/255))) * 255)
-end
-
-function add_area(name, x1, y1, x2, y2)
- -- create area if needed
- if (osc_param.areas[name] == nil) then
- osc_param.areas[name] = {}
- end
- table.insert(osc_param.areas[name], {x1=x1, y1=y1, x2=x2, y2=y2})
-end
-
-function ass_append_alpha(ass, alpha, modifier)
- local ar = {}
-
- for ai, av in pairs(alpha) do
- av = mult_alpha(av, modifier)
- if state.animation then
- av = mult_alpha(av, state.animation)
- end
- ar[ai] = av
- end
-
- ass:append(string.format('{\\1a&H%X&\\2a&H%X&\\3a&H%X&\\4a&H%X&}',
- ar[1], ar[2], ar[3], ar[4]))
-end
-
-function ass_draw_cir_cw(ass, x, y, r)
- ass:round_rect_cw(x-r, y-r, x+r, y+r, r)
-end
-
-function ass_draw_rr_h_cw(ass, x0, y0, x1, y1, r1, hexagon, r2)
- if hexagon then
- ass:hexagon_cw(x0, y0, x1, y1, r1, r2)
- else
- ass:round_rect_cw(x0, y0, x1, y1, r1, r2)
- end
-end
-
-function ass_draw_rr_h_ccw(ass, x0, y0, x1, y1, r1, hexagon, r2)
- if hexagon then
- ass:hexagon_ccw(x0, y0, x1, y1, r1, r2)
- else
- ass:round_rect_ccw(x0, y0, x1, y1, r1, r2)
- end
-end
-
-
---
--- Tracklist Management
---
-
-local nicetypes = {video = texts.video, audio = texts.audio, sub = texts.subtitle}
-
--- updates the OSC internal playlists, should be run each time the track-layout changes
-function update_tracklist()
- local tracktable = mp.get_property_native('track-list', {})
-
- -- by osc_id
- tracks_osc = {}
- tracks_osc.video, tracks_osc.audio, tracks_osc.sub = {}, {}, {}
- -- by mpv_id
- tracks_mpv = {}
- tracks_mpv.video, tracks_mpv.audio, tracks_mpv.sub = {}, {}, {}
- for n = 1, #tracktable do
- if not (tracktable[n].type == 'unknown') then
- local type = tracktable[n].type
- local mpv_id = tonumber(tracktable[n].id)
-
- -- by osc_id
- table.insert(tracks_osc[type], tracktable[n])
-
- -- by mpv_id
- tracks_mpv[type][mpv_id] = tracktable[n]
- tracks_mpv[type][mpv_id].osc_id = #tracks_osc[type]
- end
- end
-end
-
--- return a nice list of tracks of the given type (video, audio, sub)
-function get_tracklist(type)
- local msg = texts.available .. nicetypes[type] .. texts.track
- if #tracks_osc[type] == 0 then
- msg = msg .. texts.none
- else
- for n = 1, #tracks_osc[type] do
- local track = tracks_osc[type][n]
- local lang, title, selected = 'unknown', '', '○'
- if not(track.lang == nil) then lang = track.lang end
- if not(track.title == nil) then title = track.title end
- if (track.id == tonumber(mp.get_property(type))) then
- selected = '●'
- end
- msg = msg..'\n'..selected..' '..n..': ['..lang..'] '..title
- end
- end
- return msg
-end
-
--- relatively change the track of given <type> by <next> tracks
- --(+1 -> next, -1 -> previous)
-function set_track(type, next)
- local current_track_mpv, current_track_osc
- if (mp.get_property(type) == 'no') then
- current_track_osc = 0
- else
- current_track_mpv = tonumber(mp.get_property(type))
- current_track_osc = tracks_mpv[type][current_track_mpv].osc_id
- end
- local new_track_osc = (current_track_osc + next) % (#tracks_osc[type] + 1)
- local new_track_mpv
- if new_track_osc == 0 then
- new_track_mpv = 'no'
- else
- new_track_mpv = tracks_osc[type][new_track_osc].id
- end
-
- mp.commandv('set', type, new_track_mpv)
-
--- if (new_track_osc == 0) then
--- show_message(nicetypes[type] .. ' Track: none')
--- else
--- show_message(nicetypes[type] .. ' Track: '
--- .. new_track_osc .. '/' .. #tracks_osc[type]
--- .. ' ['.. (tracks_osc[type][new_track_osc].lang or 'unknown') ..'] '
--- .. (tracks_osc[type][new_track_osc].title or ''))
--- end
-end
-
--- get the currently selected track of <type>, OSC-style counted
-function get_track(type)
- local track = mp.get_property(type)
- if track ~= 'no' and track ~= nil then
- local tr = tracks_mpv[type][tonumber(track)]
- if tr then
- return tr.osc_id
- end
- end
- return 0
-end
-
--- WindowControl helpers
-function window_controls_enabled()
- val = user_opts.windowcontrols
- if val == 'auto' then
- return (not state.border) or state.fullscreen
- else
- return val ~= 'no'
- end
-end
-
---
--- Element Management
---
-
-local elements = {}
-
-function prepare_elements()
-
- -- remove elements without layout or invisble
- local elements2 = {}
- for n, element in pairs(elements) do
- if not (element.layout == nil) and (element.visible) then
- table.insert(elements2, element)
- end
- end
- elements = elements2
-
- function elem_compare (a, b)
- return a.layout.layer < b.layout.layer
- end
-
- table.sort(elements, elem_compare)
-
-
- for _,element in pairs(elements) do
-
- local elem_geo = element.layout.geometry
-
- -- Calculate the hitbox
- local bX1, bY1, bX2, bY2 = get_hitbox_coords_geo(elem_geo)
- element.hitbox = {x1 = bX1, y1 = bY1, x2 = bX2, y2 = bY2}
-
- local style_ass = assdraw.ass_new()
-
- -- prepare static elements
- style_ass:append('{}') -- hack to troll new_event into inserting a \n
- style_ass:new_event()
- style_ass:pos(elem_geo.x, elem_geo.y)
- style_ass:an(elem_geo.an)
- style_ass:append(element.layout.style)
-
- element.style_ass = style_ass
-
- local static_ass = assdraw.ass_new()
-
-
- if (element.type == 'box') then
- --draw box
- static_ass:draw_start()
- ass_draw_rr_h_cw(static_ass, 0, 0, elem_geo.w, elem_geo.h,
- element.layout.box.radius, element.layout.box.hexagon)
- static_ass:draw_stop()
-
- elseif (element.type == 'slider') then
- --draw static slider parts
- local slider_lo = element.layout.slider
- -- calculate positions of min and max points
- element.slider.min.ele_pos = user_opts.seekbarhandlesize * elem_geo.h / 2
- element.slider.max.ele_pos = elem_geo.w - element.slider.min.ele_pos
- element.slider.min.glob_pos = element.hitbox.x1 + element.slider.min.ele_pos
- element.slider.max.glob_pos = element.hitbox.x1 + element.slider.max.ele_pos
-
- static_ass:draw_start()
- -- a hack which prepares the whole slider area to allow center placements such like an=5
- static_ass:rect_cw(0, 0, elem_geo.w, elem_geo.h)
- static_ass:rect_ccw(0, 0, elem_geo.w, elem_geo.h)
- -- marker nibbles
- if not (element.slider.markerF == nil) and (slider_lo.gap > 0) then
- local markers = element.slider.markerF()
- for _,marker in pairs(markers) do
- if (marker >= element.slider.min.value) and (marker <= element.slider.max.value) then
- local s = get_slider_ele_pos_for(element, marker)
- if (slider_lo.gap > 5) then -- draw triangles
- --top
- if (slider_lo.nibbles_top) then
- static_ass:move_to(s - 3, slider_lo.gap - 5)
- static_ass:line_to(s + 3, slider_lo.gap - 5)
- static_ass:line_to(s, slider_lo.gap - 1)
- end
- --bottom
- if (slider_lo.nibbles_bottom) then
- static_ass:move_to(s - 3, elem_geo.h - slider_lo.gap + 5)
- static_ass:line_to(s, elem_geo.h - slider_lo.gap + 1)
- static_ass:line_to(s + 3, elem_geo.h - slider_lo.gap + 5)
- end
- else -- draw 2x1px nibbles
- --top
- if (slider_lo.nibbles_top) then
- static_ass:rect_cw(s - 1, 0, s + 1, slider_lo.gap);
- end
- --bottom
- if (slider_lo.nibbles_bottom) then
- static_ass:rect_cw(s - 1, elem_geo.h-slider_lo.gap, s + 1, elem_geo.h);
- end
- end
- end
- end
- end
- end
-
- element.static_ass = static_ass
-
- -- if the element is supposed to be disabled,
- -- style it accordingly and kill the eventresponders
- if not (element.enabled) then
- element.layout.alpha[1] = 136
- element.eventresponder = nil
- end
- end
-end
-
---
--- Element Rendering
---
-function render_elements(master_ass)
-
- for n=1, #elements do
- local element = elements[n]
- local style_ass = assdraw.ass_new()
- style_ass:merge(element.style_ass)
- ass_append_alpha(style_ass, element.layout.alpha, 0)
-
- if element.eventresponder and (state.active_element == n) then
- -- run render event functions
- if not (element.eventresponder.render == nil) then
- element.eventresponder.render(element)
- end
- if mouse_hit(element) then
- -- mouse down styling
- if (element.styledown) then
- style_ass:append(osc_styles.elementDown)
- end
- if (element.softrepeat) and (state.mouse_down_counter >= 15
- and state.mouse_down_counter % 5 == 0) then
-
- element.eventresponder[state.active_event_source..'_down'](element)
- end
- state.mouse_down_counter = state.mouse_down_counter + 1
- end
- end
-
- local elem_ass = assdraw.ass_new()
- elem_ass:merge(style_ass)
-
- if not (element.type == 'button') then
- elem_ass:merge(element.static_ass)
- end
-
- if (element.type == 'slider') then
-
- local slider_lo = element.layout.slider
- local elem_geo = element.layout.geometry
- local s_min = element.slider.min.value
- local s_max = element.slider.max.value
- -- draw pos marker
- local pos = element.slider.posF()
- local seekRanges = element.slider.seekRangesF()
- local rh = user_opts.seekbarhandlesize * elem_geo.h / 2 -- Handle radius
- local xp
-
- if pos then
- xp = get_slider_ele_pos_for(element, pos)
- ass_draw_cir_cw(elem_ass, xp, elem_geo.h/2, rh)
- elem_ass:rect_cw(0, slider_lo.gap, xp, elem_geo.h - slider_lo.gap)
- end
-
- if seekRanges then
- elem_ass:draw_stop()
- elem_ass:merge(element.style_ass)
- ass_append_alpha(elem_ass, element.layout.alpha, user_opts.seekrangealpha)
- elem_ass:merge(element.static_ass)
-
- for _,range in pairs(seekRanges) do
- local pstart = get_slider_ele_pos_for(element, range['start'])
- local pend = get_slider_ele_pos_for(element, range['end'])
- elem_ass:rect_cw(pstart - rh, slider_lo.gap, pend + rh, elem_geo.h - slider_lo.gap)
- end
- end
-
- elem_ass:draw_stop()
-
- -- add tooltip
- if not (element.slider.tooltipF == nil) then
- if mouse_hit(element) then
- local sliderpos = get_slider_value(element)
- local tooltiplabel = element.slider.tooltipF(sliderpos)
- local an = slider_lo.tooltip_an
- local ty
- if (an == 2) then
- ty = element.hitbox.y1
- else
- ty = element.hitbox.y1 + elem_geo.h/2
- end
-
- local tx = get_virt_mouse_pos()
- if (slider_lo.adjust_tooltip) then
- if (an == 2) then
- if (sliderpos < (s_min + 3)) then
- an = an - 1
- elseif (sliderpos > (s_max - 3)) then
- an = an + 1
- end
- elseif (sliderpos > (s_max-s_min)/2) then
- an = an + 1
- tx = tx - 5
- else
- an = an - 1
- tx = tx + 10
- end
- end
-
- -- tooltip label
- elem_ass:new_event()
- elem_ass:pos(tx, ty)
- elem_ass:an(an)
- elem_ass:append(slider_lo.tooltip_style)
- ass_append_alpha(elem_ass, slider_lo.alpha, 0)
- elem_ass:append(tooltiplabel)
- end
- end
-
- elseif (element.type == 'button') then
-
- local buttontext
- if type(element.content) == 'function' then
- buttontext = element.content() -- function objects
- elseif not (element.content == nil) then
- buttontext = element.content -- text objects
- end
-
- buttontext = buttontext:gsub(':%((.?.?.?)%) unknown ', ':%(%1%)') --gsub('%) unknown %(\'', '')
-
- local maxchars = element.layout.button.maxchars
- -- 认为1个中文字符约等于1.5个英文字符
- -- local charcount = buttontext:len()- (buttontext:len()-select(2, buttontext:gsub('[^\128-\193]', '')))/1.5
- local charcount = (buttontext:len() + select(2, buttontext:gsub('[^\128-\193]', ''))*2) / 3
- if not (maxchars == nil) and (charcount > maxchars) then
- local limit = math.max(0, maxchars - 3)
- if (charcount > limit) then
- while (charcount > limit) do
- buttontext = buttontext:gsub('.[\128-\191]*$', '')
- charcount = (buttontext:len() + select(2, buttontext:gsub('[^\128-\193]', ''))*2) / 3
- end
- buttontext = buttontext .. '...'
- end
- end
-
- elem_ass:append(buttontext)
-
- -- add tooltip
- if not (element.tooltipF == nil) and element.enabled then
- if mouse_hit(element) then
- local tooltiplabel = element.tooltipF
- local an = 1
- local ty = element.hitbox.y1
- local tx = get_virt_mouse_pos()
-
- if ty < osc_param.playresy / 2 then
- ty = element.hitbox.y2
- an = 7
- end
-
- -- tooltip label
- if type(element.tooltipF) == 'function' then
- tooltiplabel = element.tooltipF()
- else
- tooltiplabel = element.tooltipF
- end
- elem_ass:new_event()
- elem_ass:pos(tx, ty)
- elem_ass:an(an)
- elem_ass:append(element.tooltip_style)
- elem_ass:append(tooltiplabel)
- end
- end
- end
-
- master_ass:merge(elem_ass)
- end
-end
-
---
--- Message display
---
-
--- pos is 1 based
-function limited_list(prop, pos)
- local proplist = mp.get_property_native(prop, {})
- local count = #proplist
- if count == 0 then
- return count, proplist
- end
-
- local fs = tonumber(mp.get_property('options/osd-font-size'))
- local max = math.ceil(osc_param.unscaled_y*0.75 / fs)
- if max % 2 == 0 then
- max = max - 1
- end
- local delta = math.ceil(max / 2) - 1
- local begi = math.max(math.min(pos - delta, count - max + 1), 1)
- local endi = math.min(begi + max - 1, count)
-
- local reslist = {}
- for i=begi, endi do
- local item = proplist[i]
- item.current = (i == pos) and true or nil
- table.insert(reslist, item)
- end
- return count, reslist
-end
-
-function get_playlist()
- local pos = mp.get_property_number('playlist-pos', 0) + 1
- local count, limlist = limited_list('playlist', pos)
- if count == 0 then
- return texts.nolist
- end
-
- local message = string.format(texts.playlist .. ' [%d/%d]:\n', pos, count)
- for i, v in ipairs(limlist) do
- local title = v.title
- local _, filename = utils.split_path(v.filename)
- if title == nil then
- title = filename
- end
- message = string.format('%s %s %s\n', message,
- (v.current and '●' or '○'), title)
- end
- return message
-end
-
-function get_chapterlist()
- local pos = mp.get_property_number('chapter', 0) + 1
- local count, limlist = limited_list('chapter-list', pos)
- if count == 0 then
- return texts.nochapter
- end
-
- local message = string.format(texts.chapter.. ' [%d/%d]:\n', pos, count)
- for i, v in ipairs(limlist) do
- local time = mp.format_time(v.time)
- local title = v.title
- if title == nil then
- title = string.format(texts.chapter .. ' %02d', i)
- end
- message = string.format('%s[%s] %s %s\n', message, time,
- (v.current and '●' or '○'), title)
- end
- return message
-end
-
-function show_message(text, duration)
-
- --print('text: '..text..' duration: ' .. duration)
- if duration == nil then
- duration = tonumber(mp.get_property('options/osd-duration')) / 1000
- elseif not type(duration) == 'number' then
- print('duration: ' .. duration)
- end
-
- -- cut the text short, otherwise the following functions
- -- may slow down massively on huge input
- text = string.sub(text, 0, 4000)
-
- -- replace actual linebreaks with ASS linebreaks
- text = string.gsub(text, '\n', '\\N')
-
- state.message_text = text
-
- if not state.message_hide_timer then
- state.message_hide_timer = mp.add_timeout(0, request_tick)
- end
- state.message_hide_timer:kill()
- state.message_hide_timer.timeout = duration
- state.message_hide_timer:resume()
- request_tick()
-end
-
-function render_message(ass)
- if state.message_hide_timer and state.message_hide_timer:is_enabled() and
- state.message_text
- then
- local _, lines = string.gsub(state.message_text, '\\N', '')
-
- local fontsize = tonumber(mp.get_property('options/osd-font-size'))
- local outline = tonumber(mp.get_property('options/osd-border-size'))
- local maxlines = math.ceil(osc_param.unscaled_y*0.75 / fontsize)
- local counterscale = osc_param.playresy / osc_param.unscaled_y
-
- fontsize = fontsize * counterscale / math.max(0.65 + math.min(lines/maxlines, 1), 1)
- outline = outline * counterscale / math.max(0.75 + math.min(lines/maxlines, 1)/2, 1)
-
- local style = '{\\bord' .. outline .. '\\fs' .. fontsize .. '}'
-
-
- ass:new_event()
- ass:append(style .. state.message_text)
- else
- state.message_text = nil
- end
-end
-
---
--- Initialisation and Layout
---
-
-function new_element(name, type)
- elements[name] = {}
- elements[name].type = type
-
- -- add default stuff
- elements[name].eventresponder = {}
- elements[name].visible = true
- elements[name].enabled = true
- elements[name].softrepeat = false
- elements[name].styledown = (type == 'button')
- elements[name].state = {}
-
- if (type == 'slider') then
- elements[name].slider = {min = {value = 0}, max = {value = 100}}
- end
-
-
- return elements[name]
-end
-
-function add_layout(name)
- if not (elements[name] == nil) then
- -- new layout
- elements[name].layout = {}
-
- -- set layout defaults
- elements[name].layout.layer = 50
- elements[name].layout.alpha = {[1] = 0, [2] = 255, [3] = 255, [4] = 255}
-
- if (elements[name].type == 'button') then
- elements[name].layout.button = {
- maxchars = nil,
- }
- elseif (elements[name].type == 'slider') then
- -- slider defaults
- elements[name].layout.slider = {
- border = 1,
- gap = 1,
- nibbles_top = true,
- nibbles_bottom = true,
- adjust_tooltip = true,
- tooltip_style = '',
- tooltip_an = 2,
- alpha = {[1] = 0, [2] = 255, [3] = 88, [4] = 255},
- }
- elseif (elements[name].type == 'box') then
- elements[name].layout.box = {radius = 0, hexagon = false}
- end
-
- return elements[name].layout
- else
- msg.error('Can\'t add_layout to element \''..name..'\', doesn\'t exist.')
- end
-end
-
--- Window Controls
-function window_controls()
- local wc_geo = {
- x = 0,
- y = 32,
- an = 1,
- w = osc_param.playresx,
- h = 32,
- }
-
- local controlbox_w = window_control_box_width
- local titlebox_w = wc_geo.w - controlbox_w
-
- -- Default alignment is 'right'
- local controlbox_left = wc_geo.w - controlbox_w
- local titlebox_left = wc_geo.x
- local titlebox_right = wc_geo.w - controlbox_w
-
- add_area('window-controls',
- get_hitbox_coords(controlbox_left, wc_geo.y, wc_geo.an,
- controlbox_w, wc_geo.h))
-
- local lo
-
- local button_y = wc_geo.y - (wc_geo.h / 2)
- local first_geo =
- {x = controlbox_left + 27, y = button_y, an = 5, w = 40, h = wc_geo.h}
- local second_geo =
- {x = controlbox_left + 69, y = button_y, an = 5, w = 40, h = wc_geo.h}
- local third_geo =
- {x = controlbox_left + 115, y = button_y, an = 5, w = 40, h = wc_geo.h}
-
- -- Window control buttons use symbols in the custom mpv osd font
- -- because the official unicode codepoints are sufficiently
- -- exotic that a system might lack an installed font with them,
- -- and libass will complain that they are not present in the
- -- default font, even if another font with them is available.
-
- -- Close: ??
- ne = new_element('close', 'button')
- ne.content = '\238\132\149'
- ne.eventresponder['mbtn_left_up'] =
- function () mp.commandv('quit') end
- lo = add_layout('close')
- lo.geometry = third_geo
- lo.style = osc_styles.WinCtrl
- lo.alpha[3] = 0
-
- -- Minimize: ??
- ne = new_element('minimize', 'button')
- ne.content = '\\n\238\132\146'
- ne.eventresponder['mbtn_left_up'] =
- function () mp.commandv('cycle', 'window-minimized') end
- lo = add_layout('minimize')
- lo.geometry = first_geo
- lo.style = osc_styles.WinCtrl
- lo.alpha[3] = 0
-
- -- Maximize: ?? /??
- ne = new_element('maximize', 'button')
- if state.maximized or state.fullscreen then
- ne.content = '\238\132\148'
- else
- ne.content = '\238\132\147'
- end
- ne.eventresponder['mbtn_left_up'] =
- function ()
- if state.fullscreen then
- mp.commandv('cycle', 'fullscreen')
- else
- mp.commandv('cycle', 'window-maximized')
- end
- end
- lo = add_layout('maximize')
- lo.geometry = second_geo
- lo.style = osc_styles.WinCtrl
- lo.alpha[3] = 0
-end
-
---
--- Layouts
---
-
-local layouts = {}
-
--- Default layout
-layouts = function ()
-
- local osc_geo = {w, h}
-
- osc_geo.w = osc_param.playresx
- osc_geo.h = 180
-
- -- origin of the controllers, left/bottom corner
- local posX = 0
- local posY = osc_param.playresy
-
- osc_param.areas = {} -- delete areas
-
- -- area for active mouse input
- add_area('input', get_hitbox_coords(posX, posY, 1, osc_geo.w, 104))
-
- -- area for show/hide
- add_area('showhide', 0, 0, osc_param.playresx, osc_param.playresy)
-
- -- fetch values
- local osc_w, osc_h=
- osc_geo.w, osc_geo.h
-
- --
- -- Controller Background
- --
- local lo
-
- new_element('TransBg', 'box')
- lo = add_layout('TransBg')
- lo.geometry = {x = posX, y = posY, an = 7, w = osc_w, h = 1}
- lo.style = osc_styles.TransBg
- lo.layer = 10
- lo.alpha[3] = 0
-
- --
- -- Alignment
- --
- local refX = osc_w / 2
- local refY = posY
- local geo
-
- --
- -- Seekbar
- --
- new_element('bgbar1', 'box')
- lo = add_layout('bgbar1')
- lo.geometry = {x = refX , y = refY - 96 , an = 5, w = osc_geo.w - 50, h = 2}
- lo.layer = 13
- lo.style = osc_styles.SeekbarBg
- lo.alpha[1] = 128
- lo.alpha[3] = 128
-
- lo = add_layout('seekbar')
- lo.geometry = {x = refX, y = refY - 96 , an = 5, w = osc_geo.w - 50, h = 16}
- lo.style = osc_styles.SeekbarFg
- lo.slider.gap = 7
- lo.slider.tooltip_style = osc_styles.Tooltip
- lo.slider.tooltip_an = 2
-
- -- buttons
- lo = add_layout('pl_prev')
- lo.geometry = {x = refX - 120, y = refY - 40 , an = 5, w = 30, h = 24}
- lo.style = osc_styles.Ctrl2
-
- lo = add_layout('skipback')
- lo.geometry = {x = refX - 60, y = refY - 40 , an = 5, w = 30, h = 24}
- lo.style = osc_styles.Ctrl2
-
-
- lo = add_layout('playpause')
- lo.geometry = {x = refX, y = refY - 40 , an = 5, w = 45, h = 45}
- lo.style = osc_styles.Ctrl1
-
- lo = add_layout('skipfrwd')
- lo.geometry = {x = refX + 60, y = refY - 40 , an = 5, w = 30, h = 24}
- lo.style = osc_styles.Ctrl2
-
- lo = add_layout('pl_next')
- lo.geometry = {x = refX + 120, y = refY - 40 , an = 5, w = 30, h = 24}
- lo.style = osc_styles.Ctrl2
-
-
- -- Time
- lo = add_layout('tc_left')
- lo.geometry = {x = 25, y = refY - 84, an = 7, w = 64, h = 20}
- lo.style = osc_styles.Time
-
-
- lo = add_layout('tc_right')
- lo.geometry = {x = osc_geo.w - 25 , y = refY -84, an = 9, w = 64, h = 20}
- lo.style = osc_styles.Time
-
- lo = add_layout('cy_audio')
- lo.geometry = {x = 37, y = refY - 40, an = 5, w = 24, h = 24}
- lo.style = osc_styles.Ctrl3
-
- lo = add_layout('cy_sub')
- lo.geometry = {x = 87, y = refY - 40, an = 5, w = 24, h = 24}
- lo.style = osc_styles.Ctrl3
-
- lo = add_layout('tog_fs')
- lo.geometry = {x = osc_geo.w - 37, y = refY - 40, an = 5, w = 24, h = 24}
- lo.style = osc_styles.Ctrl3
-
- lo = add_layout('tog_info')
- lo.geometry = {x = osc_geo.w - 87, y = refY - 40, an = 5, w = 24, h = 24}
- lo.style = osc_styles.Ctrl3
-
- geo = { x = 25, y = refY - 132, an = 1, w = osc_geo.w - 50, h = 48 }
- lo = add_layout('title')
- lo.geometry = geo
- lo.style = string.format('%s{\\clip(%f,%f,%f,%f)}', osc_styles.Title,
- geo.x, geo.y - geo.h, geo.x + geo.w , geo.y)
- lo.alpha[3] = 0
-end
-
--- Validate string type user options
-function validate_user_opts()
- if user_opts.windowcontrols ~= 'auto' and
- user_opts.windowcontrols ~= 'yes' and
- user_opts.windowcontrols ~= 'no' then
- msg.warn('windowcontrols cannot be \'' ..
- user_opts.windowcontrols .. '\'. Ignoring.')
- user_opts.windowcontrols = 'auto'
- end
-end
-
-function update_options(list)
- validate_user_opts()
- request_tick()
- visibility_mode(user_opts.visibility, true)
- request_init()
-end
-
--- OSC INIT
-function osc_init()
- msg.debug('osc_init')
-
- -- set canvas resolution according to display aspect and scaling setting
- local baseResY = 720
- local display_w, display_h, display_aspect = mp.get_osd_size()
- local scale = 1
-
- if (mp.get_property('video') == 'no') then -- dummy/forced window
- scale = user_opts.scaleforcedwindow
- elseif state.fullscreen then
- scale = user_opts.scalefullscreen
- else
- scale = user_opts.scalewindowed
- end
-
- if user_opts.vidscale then
- osc_param.unscaled_y = baseResY
- else
- osc_param.unscaled_y = display_h
- end
- osc_param.playresy = osc_param.unscaled_y / scale
- if (display_aspect > 0) then
- osc_param.display_aspect = display_aspect
- end
- osc_param.playresx = osc_param.playresy * osc_param.display_aspect
-
- -- stop seeking with the slider to prevent skipping files
- state.active_element = nil
-
- elements = {}
-
- -- some often needed stuff
- local pl_count = mp.get_property_number('playlist-count', 0)
- local have_pl = (pl_count > 1)
- local pl_pos = mp.get_property_number('playlist-pos', 0) + 1
- local have_ch = (mp.get_property_number('chapters', 0) > 0)
- local loop = mp.get_property('loop-playlist', 'no')
-
- local ne
-
- -- playlist buttons
- -- prev
- ne = new_element('pl_prev', 'button')
-
- ne.content = '\xEF\x8E\xB5'
- ne.enabled = (pl_pos > 1) or (loop ~= 'no')
- ne.eventresponder['mbtn_left_up'] =
- function ()
- mp.commandv('playlist-prev', 'weak')
- end
- ne.eventresponder['mbtn_right_up'] =
- function () show_message(get_playlist()) end
-
- --next
- ne = new_element('pl_next', 'button')
-
- ne.content = '\xEF\x8E\xB4'
- ne.enabled = (have_pl and (pl_pos < pl_count)) or (loop ~= 'no')
- ne.eventresponder['mbtn_left_up'] =
- function ()
- mp.commandv('playlist-next', 'weak')
- end
- ne.eventresponder['mbtn_right_up'] =
- function () show_message(get_playlist()) end
-
-
- --play control buttons
- --playpause
- ne = new_element('playpause', 'button')
-
- ne.content = function ()
- if mp.get_property('pause') == 'yes' then
- return ('\xEF\x8E\xA7')
- else
- return ('\xEF\x8E\xAA')
- end
- end
- ne.eventresponder['mbtn_left_up'] =
- function () mp.commandv('cycle', 'pause') end
- --ne.eventresponder['mbtn_right_up'] =
- -- function () mp.commandv('script-binding', 'open-file-dialog') end
-
- --skipback
- ne = new_element('skipback', 'button')
-
- ne.softrepeat = true
- ne.content = '\xEF\x8E\xA0'
- ne.eventresponder['mbtn_left_down'] =
- --function () mp.command('seek -5') end
- function () mp.commandv('seek', -5, 'relative', 'keyframes') end
- ne.eventresponder['shift+mbtn_left_down'] =
- function () mp.commandv('frame-back-step') end
- ne.eventresponder['mbtn_right_down'] =
- --function () mp.command('seek -60') end
- function () mp.commandv('seek', -60, 'relative', 'keyframes') end
-
- --skipfrwd
- ne = new_element('skipfrwd', 'button')
-
- ne.softrepeat = true
- ne.content = '\xEF\x8E\x9F'
- ne.eventresponder['mbtn_left_down'] =
- --function () mp.command('seek +5') end
- function () mp.commandv('seek', 5, 'relative', 'keyframes') end
- ne.eventresponder['shift+mbtn_left_down'] =
- function () mp.commandv('frame-step') end
- ne.eventresponder['mbtn_right_down'] =
- --function () mp.command('seek +60') end
- function () mp.commandv('seek', 60, 'relative', 'keyframes') end
-
- --
- update_tracklist()
-
- --cy_audio
- ne = new_element('cy_audio', 'button')
- ne.enabled = (#tracks_osc.audio > 0)
- ne.visible = (osc_param.playresx >= 540)
- ne.content = '\xEF\x8E\xB7'
- ne.tooltip_style = osc_styles.Tooltip
- ne.tooltipF = function ()
- local msg = texts.off
- if not (get_track('audio') == 0) then
- msg = (texts.audio .. ' [' .. get_track('audio') .. ' ∕ ' .. #tracks_osc.audio .. '] ')
- local prop = mp.get_property('current-tracks/audio/lang')
- if not prop then
- prop = texts.na
- end
- msg = msg .. '[' .. prop .. ']'
- prop = mp.get_property('current-tracks/audio/title')
- if prop then
- msg = msg .. ' ' .. prop
- end
- return msg
- end
- return msg
- end
- ne.eventresponder['mbtn_left_up'] =
- function () set_track('audio', 1) end
- ne.eventresponder['mbtn_right_up'] =
- function () set_track('audio', -1) end
- ne.eventresponder['mbtn_mid_up'] =
- function () show_message(get_tracklist('audio')) end
-
- --cy_sub
- ne = new_element('cy_sub', 'button')
- ne.enabled = (#tracks_osc.sub > 0)
- ne.visible = (osc_param.playresx >= 600)
- ne.content = '\xEF\x8F\x93'
- ne.tooltip_style = osc_styles.Tooltip
- ne.tooltipF = function ()
- local msg = texts.off
- if not (get_track('sub') == 0) then
- msg = (texts.subtitle .. ' [' .. get_track('sub') .. ' ∕ ' .. #tracks_osc.sub .. '] ')
- local prop = mp.get_property('current-tracks/sub/lang')
- if not prop then
- prop = texts.na
- end
- msg = msg .. '[' .. prop .. ']'
- prop = mp.get_property('current-tracks/sub/title')
- if prop then
- msg = msg .. ' ' .. prop
- end
- return msg
- end
- return msg
- end
- ne.eventresponder['mbtn_left_up'] =
- function () set_track('sub', 1) end
- ne.eventresponder['mbtn_right_up'] =
- function () set_track('sub', -1) end
- ne.eventresponder['mbtn_mid_up'] =
- function () show_message(get_tracklist('sub')) end
-
- --tog_fs
- ne = new_element('tog_fs', 'button')
- ne.content = function ()
- if (state.fullscreen) then
- return ('\xEF\x85\xAC')
- else
- return ('\xEF\x85\xAD')
- end
- end
- ne.visible = (osc_param.playresx >= 540)
- ne.eventresponder['mbtn_left_up'] =
- function () mp.commandv('cycle', 'fullscreen') end
-
- --tog_info
- ne = new_element('tog_info', 'button')
- ne.content = ''
- ne.visible = (osc_param.playresx >= 600)
- ne.eventresponder['mbtn_left_up'] =
- function () mp.commandv('script-binding', 'stats/display-stats-toggle') end
-
- -- title
- ne = new_element('title', 'button')
- ne.content = function ()
- local title = mp.command_native({'expand-text', user_opts.title})
- if state.paused then
- title = title:gsub('\\n', ' '):gsub('\\$', ''):gsub('{','\\{')
- else
- title = ' '
- end
- return not (title == '') and title or ' '
- end
- ne.visible = osc_param.playresy >= 320 and user_opts.showtitle
-
- --seekbar
- ne = new_element('seekbar', 'slider')
-
- ne.enabled = not (mp.get_property('percent-pos') == nil)
- ne.slider.markerF = function ()
- local duration = mp.get_property_number('duration', nil)
- if not (duration == nil) then
- local chapters = mp.get_property_native('chapter-list', {})
- local markers = {}
- for n = 1, #chapters do
- markers[n] = (chapters[n].time / duration * 100)
- end
- return markers
- else
- return {}
- end
- end
- ne.slider.posF =
- function () return mp.get_property_number('percent-pos', nil) end
- ne.slider.tooltipF = function (pos)
- local duration = mp.get_property_number('duration', nil)
- if not ((duration == nil) or (pos == nil)) then
- possec = duration * (pos / 100)
- return mp.format_time(possec)
- else
- return ''
- end
- end
- ne.slider.seekRangesF = function()
- if not user_opts.seekrange then
- return nil
- end
- local cache_state = state.cache_state
- if not cache_state then
- return nil
- end
- local duration = mp.get_property_number('duration', nil)
- if (duration == nil) or duration <= 0 then
- return nil
- end
- local ranges = cache_state['seekable-ranges']
- if #ranges == 0 then
- return nil
- end
- local nranges = {}
- for _, range in pairs(ranges) do
- nranges[#nranges + 1] = {
- ['start'] = 100 * range['start'] / duration,
- ['end'] = 100 * range['end'] / duration,
- }
- end
- return nranges
- end
- ne.eventresponder['mouse_move'] = --keyframe seeking when mouse is dragged
- function (element)
- if not element.state.mbtnleft then return end -- allow drag for mbtnleft only!
- -- mouse move events may pile up during seeking and may still get
- -- sent when the user is done seeking, so we need to throw away
- -- identical seeks
- local seekto = get_slider_value(element)
- if (element.state.lastseek == nil) or
- (not (element.state.lastseek == seekto)) then
- local flags = 'absolute-percent'
- if not user_opts.seekbarkeyframes then
- flags = flags .. '+exact'
- end
- mp.commandv('seek', seekto, flags)
- element.state.lastseek = seekto
- end
-
- end
- ne.eventresponder['mbtn_left_down'] = --exact seeks on single clicks
- function (element)
- mp.commandv('seek', get_slider_value(element), 'absolute-percent', 'exact')
- element.state.mbtnleft = true
- end
- ne.eventresponder['mbtn_left_up'] =
- function (element) element.state.mbtnleft = false end
- ne.eventresponder['mbtn_right_down'] = --seeks to chapter start
- function (element)
- local duration = mp.get_property_number('duration', nil)
- if not (duration == nil) then
- local chapters = mp.get_property_native('chapter-list', {})
- if #chapters > 0 then
- local pos = get_slider_value(element)
- local ch = #chapters
- for n = 1, ch do
- if chapters[n].time / duration * 100 >= pos then
- ch = n - 1
- break
- end
- end
- mp.commandv('set', 'chapter', ch - 1)
- --if chapters[ch].title then show_message(chapters[ch].time) end
- end
- end
- end
- ne.eventresponder['reset'] =
- function (element) element.state.lastseek = nil end
-
-
- -- tc_left (current pos)
- ne = new_element('tc_left', 'button')
- ne.content = function () return (mp.get_property_osd('playback-time')) end
-
- -- tc_right (total/remaining time)
- ne = new_element('tc_right', 'button')
- ne.content = function ()
- if (mp.get_property_number('duration', 0) <= 0) then return '--:--:--' end
- if (state.rightTC_trem) then
- return ('-'..mp.get_property_osd('playtime-remaining'))
- else
- return (mp.get_property_osd('duration'))
- end
- end
- ne.eventresponder['mbtn_left_up'] =
- function () state.rightTC_trem = not state.rightTC_trem end
-
- -- load layout
- layouts()
-
- -- load window controls
- if window_controls_enabled() then
- window_controls()
- end
-
- --do something with the elements
- prepare_elements()
-end
-
-function shutdown()
-
-end
-
---
--- Other important stuff
---
-
-
-function show_osc()
- -- show when disabled can happen (e.g. mouse_move) due to async/delayed unbinding
- if not state.enabled then return end
-
- msg.trace('show_osc')
- --remember last time of invocation (mouse move)
- state.showtime = mp.get_time()
-
- osc_visible(true)
-
- if (user_opts.fadeduration > 0) then
- state.anitype = nil
- end
-end
-
-function hide_osc()
- msg.trace('hide_osc')
- if not state.enabled then
- -- typically hide happens at render() from tick(), but now tick() is
- -- no-op and won't render again to remove the osc, so do that manually.
- state.osc_visible = false
- render_wipe()
- elseif (user_opts.fadeduration > 0) then
- if not(state.osc_visible == false) then
- state.anitype = 'out'
- request_tick()
- end
- else
- osc_visible(false)
- end
-end
-
-function osc_visible(visible)
- if state.osc_visible ~= visible then
- state.osc_visible = visible
- end
- request_tick()
-end
-
-function pause_state(name, enabled)
- state.paused = enabled
- if user_opts.showtitle then
- if enabled then
- state.lastvisibility = user_opts.visibility
- visibility_mode("always", true)
- show_osc()
- else
- visibility_mode(state.lastvisibility, true)
- end
- end
- request_tick()
-end
-
-function cache_state(name, st)
- state.cache_state = st
- request_tick()
-end
-
--- Request that tick() is called (which typically re-renders the OSC).
--- The tick is then either executed immediately, or rate-limited if it was
--- called a small time ago.
-function request_tick()
- if state.tick_timer == nil then
- state.tick_timer = mp.add_timeout(0, tick)
- end
-
- if not state.tick_timer:is_enabled() then
- local now = mp.get_time()
- local timeout = tick_delay - (now - state.tick_last_time)
- if timeout < 0 then
- timeout = 0
- end
- state.tick_timer.timeout = timeout
- state.tick_timer:resume()
- end
-end
-
-function mouse_leave()
- if get_hidetimeout() >= 0 then
- hide_osc()
- end
- -- reset mouse position
- state.last_mouseX, state.last_mouseY = nil, nil
- state.mouse_in_window = false
-end
-
-function request_init()
- state.initREQ = true
- request_tick()
-end
-
--- Like request_init(), but also request an immediate update
-function request_init_resize()
- request_init()
- -- ensure immediate update
- state.tick_timer:kill()
- state.tick_timer.timeout = 0
- state.tick_timer:resume()
-end
-
-function render_wipe()
- msg.trace('render_wipe()')
- state.osd:remove()
-end
-
-function render()
- msg.trace('rendering')
- local current_screen_sizeX, current_screen_sizeY, aspect = mp.get_osd_size()
- local mouseX, mouseY = get_virt_mouse_pos()
- local now = mp.get_time()
-
- -- check if display changed, if so request reinit
- if not (state.mp_screen_sizeX == current_screen_sizeX
- and state.mp_screen_sizeY == current_screen_sizeY) then
-
- request_init_resize()
-
- state.mp_screen_sizeX = current_screen_sizeX
- state.mp_screen_sizeY = current_screen_sizeY
- end
-
- -- init management
- if state.initREQ then
- osc_init()
- state.initREQ = false
-
- -- store initial mouse position
- if (state.last_mouseX == nil or state.last_mouseY == nil)
- and not (mouseX == nil or mouseY == nil) then
-
- state.last_mouseX, state.last_mouseY = mouseX, mouseY
- end
- end
-
-
- -- fade animation
- if not(state.anitype == nil) then
-
- if (state.anistart == nil) then
- state.anistart = now
- end
-
- if (now < state.anistart + (user_opts.fadeduration/1000)) then
-
- if (state.anitype == 'in') then --fade in
- osc_visible(true)
- state.animation = scale_value(state.anistart,
- (state.anistart + (user_opts.fadeduration/1000)),
- 255, 0, now)
- elseif (state.anitype == 'out') then --fade out
- state.animation = scale_value(state.anistart,
- (state.anistart + (user_opts.fadeduration/1000)),
- 0, 255, now)
- end
-
- else
- if (state.anitype == 'out') then
- osc_visible(false)
- end
- state.anistart = nil
- state.animation = nil
- state.anitype = nil
- end
- else
- state.anistart = nil
- state.animation = nil
- state.anitype = nil
- end
-
- --mouse show/hide area
- for k,cords in pairs(osc_param.areas['showhide']) do
- set_virt_mouse_area(cords.x1, cords.y1, cords.x2, cords.y2, 'showhide')
- end
- if osc_param.areas['showhide_wc'] then
- for k,cords in pairs(osc_param.areas['showhide_wc']) do
- set_virt_mouse_area(cords.x1, cords.y1, cords.x2, cords.y2, 'showhide_wc')
- end
- else
- set_virt_mouse_area(0, 0, 0, 0, 'showhide_wc')
- end
- do_enable_keybindings()
-
- --mouse input area
- local mouse_over_osc = false
-
- for _,cords in ipairs(osc_param.areas['input']) do
- if state.osc_visible then -- activate only when OSC is actually visible
- set_virt_mouse_area(cords.x1, cords.y1, cords.x2, cords.y2, 'input')
- end
- if state.osc_visible ~= state.input_enabled then
- if state.osc_visible then
- mp.enable_key_bindings('input')
- else
- mp.disable_key_bindings('input')
- end
- state.input_enabled = state.osc_visible
- end
-
- if (mouse_hit_coords(cords.x1, cords.y1, cords.x2, cords.y2)) then
- mouse_over_osc = true
- end
- end
-
- if osc_param.areas['window-controls'] then
- for _,cords in ipairs(osc_param.areas['window-controls']) do
- if state.osc_visible then -- activate only when OSC is actually visible
- set_virt_mouse_area(cords.x1, cords.y1, cords.x2, cords.y2, 'window-controls')
- mp.enable_key_bindings('window-controls')
- else
- mp.disable_key_bindings('window-controls')
- end
-
- if (mouse_hit_coords(cords.x1, cords.y1, cords.x2, cords.y2)) then
- mouse_over_osc = true
- end
- end
- end
-
- if osc_param.areas['window-controls-title'] then
- for _,cords in ipairs(osc_param.areas['window-controls-title']) do
- if (mouse_hit_coords(cords.x1, cords.y1, cords.x2, cords.y2)) then
- mouse_over_osc = true
- end
- end
- end
-
- -- autohide
- if not (state.showtime == nil) and (get_hidetimeout() >= 0) then
- local timeout = state.showtime + (get_hidetimeout()/1000) - now
- if timeout <= 0 then
- if (state.active_element == nil) and not (mouse_over_osc) then
- hide_osc()
- end
- else
- -- the timer is only used to recheck the state and to possibly run
- -- the code above again
- if not state.hide_timer then
- state.hide_timer = mp.add_timeout(0, tick)
- end
- state.hide_timer.timeout = timeout
- -- re-arm
- state.hide_timer:kill()
- state.hide_timer:resume()
- end
- end
-
-
- -- actual rendering
- local ass = assdraw.ass_new()
-
- -- Messages
- render_message(ass)
-
- -- actual OSC
- if state.osc_visible then
- render_elements(ass)
- end
-
- -- submit
- set_osd(osc_param.playresy * osc_param.display_aspect,
- osc_param.playresy, ass.text)
-end
-
---
--- Eventhandling
---
-
-local function element_has_action(element, action)
- return element and element.eventresponder and
- element.eventresponder[action]
-end
-
-function process_event(source, what)
- local action = string.format('%s%s', source,
- what and ('_' .. what) or '')
-
- if what == 'down' or what == 'press' then
-
- for n = 1, #elements do
-
- if mouse_hit(elements[n]) and
- elements[n].eventresponder and
- (elements[n].eventresponder[source .. '_up'] or
- elements[n].eventresponder[action]) then
-
- if what == 'down' then
- state.active_element = n
- state.active_event_source = source
- end
- -- fire the down or press event if the element has one
- if element_has_action(elements[n], action) then
- elements[n].eventresponder[action](elements[n])
- end
-
- end
- end
-
- elseif what == 'up' then
-
- if elements[state.active_element] then
- local n = state.active_element
-
- if n == 0 then
- --click on background (does not work)
- elseif element_has_action(elements[n], action) and
- mouse_hit(elements[n]) then
-
- elements[n].eventresponder[action](elements[n])
- end
-
- --reset active element
- if element_has_action(elements[n], 'reset') then
- elements[n].eventresponder['reset'](elements[n])
- end
-
- end
- state.active_element = nil
- state.mouse_down_counter = 0
-
- elseif source == 'mouse_move' then
-
- state.mouse_in_window = true
-
- local mouseX, mouseY = get_virt_mouse_pos()
- if (user_opts.minmousemove == 0) or
- (not ((state.last_mouseX == nil) or (state.last_mouseY == nil)) and
- ((math.abs(mouseX - state.last_mouseX) >= user_opts.minmousemove)
- or (math.abs(mouseY - state.last_mouseY) >= user_opts.minmousemove)
- )
- ) then
- show_osc()
- end
- state.last_mouseX, state.last_mouseY = mouseX, mouseY
-
- local n = state.active_element
- if element_has_action(elements[n], action) then
- elements[n].eventresponder[action](elements[n])
- end
- request_tick()
- end
-end
-
-function show_logo()
- local osd_w, osd_h = 640, 360
- local logo_x, logo_y = osd_w/2, osd_h/2-20
- local ass = assdraw.ass_new()
- ass:new_event()
- ass:pos(logo_x, logo_y)
- ass:append('{\\1c&H8E348D&\\3c&H0&\\3a&H60&\\blur1\\bord0.5}')
- ass:draw_start()
- ass_draw_cir_cw(ass, 0, 0, 100)
- ass:draw_stop()
-
- ass:new_event()
- ass:pos(logo_x, logo_y)
- ass:append('{\\1c&H632462&\\bord0}')
- ass:draw_start()
- ass_draw_cir_cw(ass, 6, -6, 75)
- ass:draw_stop()
-
- ass:new_event()
- ass:pos(logo_x, logo_y)
- ass:append('{\\1c&HFFFFFF&\\bord0}')
- ass:draw_start()
- ass_draw_cir_cw(ass, -4, 4, 50)
- ass:draw_stop()
-
- ass:new_event()
- ass:pos(logo_x, logo_y)
- ass:append('{\\1c&H632462&\\bord&}')
- ass:draw_start()
- ass:move_to(-20, -20)
- ass:line_to(23.3, 5)
- ass:line_to(-20, 30)
- ass:draw_stop()
-
- ass:new_event()
- ass:pos(logo_x, logo_y+110)
- ass:an(8)
- ass:append(texts.welcome)
- set_osd(osd_w, osd_h, ass.text)
-end
-
--- called by mpv on every frame
-function tick()
- if (not state.enabled) then return end
-
- if (state.idle) then
- show_logo()
- -- render idle message
- msg.trace('idle message')
-
- if state.showhide_enabled then
- mp.disable_key_bindings('showhide')
- mp.disable_key_bindings('showhide_wc')
- state.showhide_enabled = false
- end
-
-
- elseif (state.fullscreen and user_opts.showfullscreen)
- or (not state.fullscreen and user_opts.showwindowed) then
-
- -- render the OSC
- render()
- else
- -- Flush OSD
- set_osd(osc_param.playresy, osc_param.playresy, '')
- end
-
- state.tick_last_time = mp.get_time()
-
- if state.anitype ~= nil then
- request_tick()
- end
-end
-
-function do_enable_keybindings()
- if state.enabled then
- if not state.showhide_enabled then
- mp.enable_key_bindings('showhide', 'allow-vo-dragging+allow-hide-cursor')
- mp.enable_key_bindings('showhide_wc', 'allow-vo-dragging+allow-hide-cursor')
- end
- state.showhide_enabled = true
- end
-end
-
-function enable_osc(enable)
- state.enabled = enable
- if enable then
- do_enable_keybindings()
- else
- hide_osc() -- acts immediately when state.enabled == false
- if state.showhide_enabled then
- mp.disable_key_bindings('showhide')
- mp.disable_key_bindings('showhide_wc')
- end
- state.showhide_enabled = false
- end
-end
-
-validate_user_opts()
-
-mp.register_event('shutdown', shutdown)
-mp.register_event('start-file', request_init)
-mp.observe_property('track-list', nil, request_init)
-mp.observe_property('playlist', nil, request_init)
-
-mp.register_script_message('osc-message', show_message)
-mp.register_script_message('osc-chapterlist', function(dur)
- show_message(get_chapterlist(), dur)
-end)
-mp.register_script_message('osc-playlist', function(dur)
- show_message(get_playlist(), dur)
-end)
-mp.register_script_message('osc-tracklist', function(dur)
- local msg = {}
- for k,v in pairs(nicetypes) do
- table.insert(msg, get_tracklist(k))
- end
- show_message(table.concat(msg, '\n\n'), dur)
-end)
-
-mp.observe_property('fullscreen', 'bool',
- function(name, val)
- state.fullscreen = val
- request_init_resize()
- end
-)
-mp.observe_property('border', 'bool',
- function(name, val)
- state.border = val
- request_init_resize()
- end
-)
-mp.observe_property('window-maximized', 'bool',
- function(name, val)
- state.maximized = val
- request_init_resize()
- end
-)
-mp.observe_property('idle-active', 'bool',
- function(name, val)
- state.idle = val
- request_tick()
- end
-)
-mp.observe_property('pause', 'bool', pause_state)
-mp.observe_property('demuxer-cache-state', 'native', cache_state)
-mp.observe_property('vo-configured', 'bool', function(name, val)
- request_tick()
-end)
-mp.observe_property('playback-time', 'number', function(name, val)
- request_tick()
-end)
-mp.observe_property('osd-dimensions', 'native', function(name, val)
- -- (we could use the value instead of re-querying it all the time, but then
- -- we might have to worry about property update ordering)
- request_init_resize()
-end)
-
--- mouse show/hide bindings
-mp.set_key_bindings({
- {'mouse_move', function(e) process_event('mouse_move', nil) end},
- {'mouse_leave', mouse_leave},
-}, 'showhide', 'force')
-mp.set_key_bindings({
- {'mouse_move', function(e) process_event('mouse_move', nil) end},
- {'mouse_leave', mouse_leave},
-}, 'showhide_wc', 'force')
-do_enable_keybindings()
-
---mouse input bindings
-mp.set_key_bindings({
- {'mbtn_left', function(e) process_event('mbtn_left', 'up') end,
- function(e) process_event('mbtn_left', 'down') end},
- {'mbtn_right', function(e) process_event('mbtn_right', 'up') end,
- function(e) process_event('mbtn_right', 'down') end},
- {'mbtn_mid', function(e) process_event('mbtn_mid', 'up') end,
- function(e) process_event('mbtn_mid', 'down') end},
- {'wheel_up', function(e) process_event('wheel_up', 'press') end},
- {'wheel_down', function(e) process_event('wheel_down', 'press') end},
- {'mbtn_left_dbl', 'ignore'},
- {'mbtn_right_dbl', 'ignore'},
-}, 'input', 'force')
-mp.enable_key_bindings('input')
-
-mp.set_key_bindings({
- {'mbtn_left', function(e) process_event('mbtn_left', 'up') end,
- function(e) process_event('mbtn_left', 'down') end},
-}, 'window-controls', 'force')
-mp.enable_key_bindings('window-controls')
-
-function get_hidetimeout()
- if user_opts.visibility == 'always' then
- return -1 -- disable autohide
- end
- return user_opts.hidetimeout
-end
-
-function always_on(val)
- if state.enabled then
- if val then
- show_osc()
- else
- hide_osc()
- end
- end
-end
-
--- mode can be auto/always/never/cycle
--- the modes only affect internal variables and not stored on its own.
-function visibility_mode(mode, no_osd)
- if mode == 'auto' then
- always_on(false)
- enable_osc(true)
- elseif mode == 'always' then
- enable_osc(true)
- always_on(true)
- elseif mode == 'never' then
- enable_osc(false)
- else
- msg.warn('Ignoring unknown visibility mode \"' .. mode .. '\"')
- return
- end
-
- user_opts.visibility = mode
-
- if not no_osd and tonumber(mp.get_property('osd-level')) >= 1 then
- mp.osd_message('OSC visibility: ' .. mode)
- end
-
- -- Reset the input state on a mode change. The input state will be
- -- recalcuated on the next render cycle, except in 'never' mode where it
- -- will just stay disabled.
- mp.disable_key_bindings('input')
- mp.disable_key_bindings('window-controls')
- state.input_enabled = false
- request_tick()
-end
-
-visibility_mode(user_opts.visibility, true)
-mp.register_script_message('osc-visibility', visibility_mode)
-mp.add_key_binding(nil, 'visibility', function() visibility_mode('cycle') end)
-
-set_virt_mouse_area(0, 0, 0, 0, 'input')
-set_virt_mouse_area(0, 0, 0, 0, 'window-controls')
diff --git a/mpv/shaders/KrigBilateral.glsl b/mpv/shaders/KrigBilateral.glsl new file mode 100644 index 0000000..57c17f9 --- /dev/null +++ b/mpv/shaders/KrigBilateral.glsl @@ -0,0 +1,214 @@ +// KrigBilateral by Shiandow +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 3.0 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library. + +//!HOOK CHROMA +//!BIND HOOKED +//!BIND LUMA +//!SAVE LOWRES_Y +//!WIDTH LUMA.w +//!WHEN CHROMA.w LUMA.w < +//!DESC KrigBilateral Downscaling Y pass 1 + +#define offset vec2(0) + +#define axis 1 + +#define Kernel(x) dot(vec3(0.42659, -0.49656, 0.076849), cos(vec3(0, 1, 2) * acos(-1.) * (x + 1.))) + +vec4 hook() { + // Calculate bounds + float low = ceil((LUMA_pos - CHROMA_pt) * LUMA_size - offset - 0.5)[axis]; + float high = floor((LUMA_pos + CHROMA_pt) * LUMA_size - offset - 0.5)[axis]; + + float W = 0.0; + vec4 avg = vec4(0); + vec2 pos = LUMA_pos; + + for (float k = low; k <= high; k++) { + pos[axis] = LUMA_pt[axis] * (k - offset[axis] + 0.5); + float rel = (pos[axis] - LUMA_pos[axis])*CHROMA_size[axis]; + float w = Kernel(rel); + + vec4 y = textureGrad(LUMA_raw, pos, vec2(0.0), vec2(0.0)).xxxx * LUMA_mul; + y.y *= y.y; + avg += w * y; + W += w; + } + avg /= W; + avg.y = abs(avg.y - avg.x * avg.x); + return avg; +} + +//!HOOK CHROMA +//!BIND HOOKED +//!BIND LOWRES_Y +//!SAVE LOWRES_Y +//!WHEN CHROMA.w LUMA.w < +//!DESC KrigBilateral Downscaling Y pass 2 + +#define offset vec2(0) + +#define axis 0 + +#define Kernel(x) dot(vec3(0.42659, -0.49656, 0.076849), cos(vec3(0, 1, 2) * acos(-1.) * (x + 1.))) + +vec4 hook() { + // Calculate bounds + float low = ceil((LOWRES_Y_pos - CHROMA_pt) * LOWRES_Y_size - offset - 0.5)[axis]; + float high = floor((LOWRES_Y_pos + CHROMA_pt) * LOWRES_Y_size - offset - 0.5)[axis]; + + float W = 0.0; + vec4 avg = vec4(0); + vec2 pos = LOWRES_Y_pos; + + for (float k = low; k <= high; k++) { + pos[axis] = LOWRES_Y_pt[axis] * (k - offset[axis] + 0.5); + float rel = (pos[axis] - LOWRES_Y_pos[axis])*CHROMA_size[axis]; + float w = Kernel(rel); + + vec4 y = textureGrad(LOWRES_Y_raw, pos, vec2(0.0), vec2(0.0)).xxxx * LOWRES_Y_mul; + y.y *= y.y; + avg += w * y; + W += w; + } + avg /= W; + avg.y = abs(avg.y - avg.x * avg.x) + LOWRES_Y_texOff(0).y; + return avg; +} + +//!HOOK CHROMA +//!BIND HOOKED +//!BIND LUMA +//!BIND LOWRES_Y +//!WIDTH LUMA.w +//!HEIGHT LUMA.h +//!WHEN CHROMA.w LUMA.w < +//!OFFSET ALIGN +//!DESC KrigBilateral Upscaling UV + +#define sqr(x) dot(x,x) +#define sigma_nsq 256.0/(255.0*255.0) + +#define N 8 + +#define M(i,j) Mx[min(i,j)*N + max(i,j) - (min(i,j)*(min(i,j)+1))/2] + +#define C(i,j) (inversesqrt(1.0 + (X[i].y + X[j].y) / Var) * exp(-0.5 * (sqr(X[i].x - X[j].x) / (localVar + X[i].y + X[j].y) + sqr((coords[i] - coords[j]) / radius))) /*+ (X[i].x - y) * (X[j].x - y) / Var*/) // commented out part works well only on test patterns +#define c(i) (inversesqrt(1.0 + X[i].y / Var) * exp(-0.5 * (sqr(X[i].x - y) / (localVar + X[i].y) + sqr((coords[i] - offset) / radius)))) + +#define getnsum(i) X[i] = vec4(LOWRES_Y_tex(LOWRES_Y_pt*(pos+coords[i]+vec2(0.5))).xy, \ + CHROMA_tex(CHROMA_pt*(pos+coords[i]+vec2(0.5))).xy); \ + w = clamp(1.5 - abs(coords[i]), 0.0, 1.0); \ + total += w.x*w.y*vec4(X[i].x, X[i].x * X[i].x, X[i].y, 1.0); + +#define I3(f, n) f(n) f(n+1) f(n+2) +#define I9(f, n) I3(f, n) I3(f, n+3) I3(f, n+6) + +vec4 hook() { + vec2 pos = CHROMA_pos * HOOKED_size - vec2(0.5); + vec2 offset = pos - round(pos); + pos -= offset; + + vec2 coords[N+1]; + vec4 X[N+1]; + vec2 w; + vec4 total = vec4(0); + + coords[0] = vec2(-1,-1); coords[1] = vec2(-1, 0); coords[2] = vec2(-1, 1); + coords[3] = vec2( 0,-1); coords[4] = vec2( 0, 1); coords[5] = vec2( 1,-1); + coords[6] = vec2( 1, 0); coords[7] = vec2( 1, 1); coords[8] = vec2( 0, 0); + + I9(getnsum, 0) + + total.xyz /= total.w; + float localVar = abs(total.y - total.x * total.x) + sigma_nsq; + float Var = localVar + total.z; + float radius = 1.0; + + float y = LUMA_texOff(0).x; + float Mx[(N*(N+1))/2]; + float b[N]; + vec2 interp = X[N].zw; + + b[0] = c(0) - c(N) - C(0,N) + C(N,N); M(0, 0) = C(0,0) - C(0,N) - C(0,N) + C(N,N); M(0, 1) = C(0,1) - C(1,N) - C(0,N) + C(N,N); M(0, 2) = C(0,2) - C(2,N) - C(0,N) + C(N,N); M(0, 3) = C(0,3) - C(3,N) - C(0,N) + C(N,N); M(0, 4) = C(0,4) - C(4,N) - C(0,N) + C(N,N); M(0, 5) = C(0,5) - C(5,N) - C(0,N) + C(N,N); M(0, 6) = C(0,6) - C(6,N) - C(0,N) + C(N,N); M(0, 7) = C(0,7) - C(7,N) - C(0,N) + C(N,N); + b[1] = c(1) - c(N) - C(1,N) + C(N,N); M(1, 1) = C(1,1) - C(1,N) - C(1,N) + C(N,N); M(1, 2) = C(1,2) - C(2,N) - C(1,N) + C(N,N); M(1, 3) = C(1,3) - C(3,N) - C(1,N) + C(N,N); M(1, 4) = C(1,4) - C(4,N) - C(1,N) + C(N,N); M(1, 5) = C(1,5) - C(5,N) - C(1,N) + C(N,N); M(1, 6) = C(1,6) - C(6,N) - C(1,N) + C(N,N); M(1, 7) = C(1,7) - C(7,N) - C(1,N) + C(N,N); + b[2] = c(2) - c(N) - C(2,N) + C(N,N); M(2, 2) = C(2,2) - C(2,N) - C(2,N) + C(N,N); M(2, 3) = C(2,3) - C(3,N) - C(2,N) + C(N,N); M(2, 4) = C(2,4) - C(4,N) - C(2,N) + C(N,N); M(2, 5) = C(2,5) - C(5,N) - C(2,N) + C(N,N); M(2, 6) = C(2,6) - C(6,N) - C(2,N) + C(N,N); M(2, 7) = C(2,7) - C(7,N) - C(2,N) + C(N,N); + b[3] = c(3) - c(N) - C(3,N) + C(N,N); M(3, 3) = C(3,3) - C(3,N) - C(3,N) + C(N,N); M(3, 4) = C(3,4) - C(4,N) - C(3,N) + C(N,N); M(3, 5) = C(3,5) - C(5,N) - C(3,N) + C(N,N); M(3, 6) = C(3,6) - C(6,N) - C(3,N) + C(N,N); M(3, 7) = C(3,7) - C(7,N) - C(3,N) + C(N,N); + b[4] = c(4) - c(N) - C(4,N) + C(N,N); M(4, 4) = C(4,4) - C(4,N) - C(4,N) + C(N,N); M(4, 5) = C(4,5) - C(5,N) - C(4,N) + C(N,N); M(4, 6) = C(4,6) - C(6,N) - C(4,N) + C(N,N); M(4, 7) = C(4,7) - C(7,N) - C(4,N) + C(N,N); + b[5] = c(5) - c(N) - C(5,N) + C(N,N); M(5, 5) = C(5,5) - C(5,N) - C(5,N) + C(N,N); M(5, 6) = C(5,6) - C(6,N) - C(5,N) + C(N,N); M(5, 7) = C(5,7) - C(7,N) - C(5,N) + C(N,N); + b[6] = c(6) - c(N) - C(6,N) + C(N,N); M(6, 6) = C(6,6) - C(6,N) - C(6,N) + C(N,N); M(6, 7) = C(6,7) - C(7,N) - C(6,N) + C(N,N); + b[7] = c(7) - c(N) - C(7,N) + C(N,N); M(7, 7) = C(7,7) - C(7,N) - C(7,N) + C(N,N); + + b[1] -= b[0] * M(0, 1) / M(0, 0); M(1, 1) -= M(0, 1) * M(0, 1) / M(0, 0); M(1, 2) -= M(0, 2) * M(0, 1) / M(0, 0); M(1, 3) -= M(0, 3) * M(0, 1) / M(0, 0); M(1, 4) -= M(0, 4) * M(0, 1) / M(0, 0); M(1, 5) -= M(0, 5) * M(0, 1) / M(0, 0); M(1, 6) -= M(0, 6) * M(0, 1) / M(0, 0); M(1, 7) -= M(0, 7) * M(0, 1) / M(0, 0); + b[2] -= b[0] * M(0, 2) / M(0, 0); M(2, 2) -= M(0, 2) * M(0, 2) / M(0, 0); M(2, 3) -= M(0, 3) * M(0, 2) / M(0, 0); M(2, 4) -= M(0, 4) * M(0, 2) / M(0, 0); M(2, 5) -= M(0, 5) * M(0, 2) / M(0, 0); M(2, 6) -= M(0, 6) * M(0, 2) / M(0, 0); M(2, 7) -= M(0, 7) * M(0, 2) / M(0, 0); + b[3] -= b[0] * M(0, 3) / M(0, 0); M(3, 3) -= M(0, 3) * M(0, 3) / M(0, 0); M(3, 4) -= M(0, 4) * M(0, 3) / M(0, 0); M(3, 5) -= M(0, 5) * M(0, 3) / M(0, 0); M(3, 6) -= M(0, 6) * M(0, 3) / M(0, 0); M(3, 7) -= M(0, 7) * M(0, 3) / M(0, 0); + b[4] -= b[0] * M(0, 4) / M(0, 0); M(4, 4) -= M(0, 4) * M(0, 4) / M(0, 0); M(4, 5) -= M(0, 5) * M(0, 4) / M(0, 0); M(4, 6) -= M(0, 6) * M(0, 4) / M(0, 0); M(4, 7) -= M(0, 7) * M(0, 4) / M(0, 0); + b[5] -= b[0] * M(0, 5) / M(0, 0); M(5, 5) -= M(0, 5) * M(0, 5) / M(0, 0); M(5, 6) -= M(0, 6) * M(0, 5) / M(0, 0); M(5, 7) -= M(0, 7) * M(0, 5) / M(0, 0); + b[6] -= b[0] * M(0, 6) / M(0, 0); M(6, 6) -= M(0, 6) * M(0, 6) / M(0, 0); M(6, 7) -= M(0, 7) * M(0, 6) / M(0, 0); + b[7] -= b[0] * M(0, 7) / M(0, 0); M(7, 7) -= M(0, 7) * M(0, 7) / M(0, 0); + + b[2] -= b[1] * M(1, 2) / M(1, 1); M(2, 2) -= M(1, 2) * M(1, 2) / M(1, 1); M(2, 3) -= M(1, 3) * M(1, 2) / M(1, 1); M(2, 4) -= M(1, 4) * M(1, 2) / M(1, 1); M(2, 5) -= M(1, 5) * M(1, 2) / M(1, 1); M(2, 6) -= M(1, 6) * M(1, 2) / M(1, 1); M(2, 7) -= M(1, 7) * M(1, 2) / M(1, 1); + b[3] -= b[1] * M(1, 3) / M(1, 1); M(3, 3) -= M(1, 3) * M(1, 3) / M(1, 1); M(3, 4) -= M(1, 4) * M(1, 3) / M(1, 1); M(3, 5) -= M(1, 5) * M(1, 3) / M(1, 1); M(3, 6) -= M(1, 6) * M(1, 3) / M(1, 1); M(3, 7) -= M(1, 7) * M(1, 3) / M(1, 1); + b[4] -= b[1] * M(1, 4) / M(1, 1); M(4, 4) -= M(1, 4) * M(1, 4) / M(1, 1); M(4, 5) -= M(1, 5) * M(1, 4) / M(1, 1); M(4, 6) -= M(1, 6) * M(1, 4) / M(1, 1); M(4, 7) -= M(1, 7) * M(1, 4) / M(1, 1); + b[5] -= b[1] * M(1, 5) / M(1, 1); M(5, 5) -= M(1, 5) * M(1, 5) / M(1, 1); M(5, 6) -= M(1, 6) * M(1, 5) / M(1, 1); M(5, 7) -= M(1, 7) * M(1, 5) / M(1, 1); + b[6] -= b[1] * M(1, 6) / M(1, 1); M(6, 6) -= M(1, 6) * M(1, 6) / M(1, 1); M(6, 7) -= M(1, 7) * M(1, 6) / M(1, 1); + b[7] -= b[1] * M(1, 7) / M(1, 1); M(7, 7) -= M(1, 7) * M(1, 7) / M(1, 1); + + b[3] -= b[2] * M(2, 3) / M(2, 2); M(3, 3) -= M(2, 3) * M(2, 3) / M(2, 2); M(3, 4) -= M(2, 4) * M(2, 3) / M(2, 2); M(3, 5) -= M(2, 5) * M(2, 3) / M(2, 2); M(3, 6) -= M(2, 6) * M(2, 3) / M(2, 2); M(3, 7) -= M(2, 7) * M(2, 3) / M(2, 2); + b[4] -= b[2] * M(2, 4) / M(2, 2); M(4, 4) -= M(2, 4) * M(2, 4) / M(2, 2); M(4, 5) -= M(2, 5) * M(2, 4) / M(2, 2); M(4, 6) -= M(2, 6) * M(2, 4) / M(2, 2); M(4, 7) -= M(2, 7) * M(2, 4) / M(2, 2); + b[5] -= b[2] * M(2, 5) / M(2, 2); M(5, 5) -= M(2, 5) * M(2, 5) / M(2, 2); M(5, 6) -= M(2, 6) * M(2, 5) / M(2, 2); M(5, 7) -= M(2, 7) * M(2, 5) / M(2, 2); + b[6] -= b[2] * M(2, 6) / M(2, 2); M(6, 6) -= M(2, 6) * M(2, 6) / M(2, 2); M(6, 7) -= M(2, 7) * M(2, 6) / M(2, 2); + b[7] -= b[2] * M(2, 7) / M(2, 2); M(7, 7) -= M(2, 7) * M(2, 7) / M(2, 2); + + b[4] -= b[3] * M(3, 4) / M(3, 3); M(4, 4) -= M(3, 4) * M(3, 4) / M(3, 3); M(4, 5) -= M(3, 5) * M(3, 4) / M(3, 3); M(4, 6) -= M(3, 6) * M(3, 4) / M(3, 3); M(4, 7) -= M(3, 7) * M(3, 4) / M(3, 3); + b[5] -= b[3] * M(3, 5) / M(3, 3); M(5, 5) -= M(3, 5) * M(3, 5) / M(3, 3); M(5, 6) -= M(3, 6) * M(3, 5) / M(3, 3); M(5, 7) -= M(3, 7) * M(3, 5) / M(3, 3); + b[6] -= b[3] * M(3, 6) / M(3, 3); M(6, 6) -= M(3, 6) * M(3, 6) / M(3, 3); M(6, 7) -= M(3, 7) * M(3, 6) / M(3, 3); + b[7] -= b[3] * M(3, 7) / M(3, 3); M(7, 7) -= M(3, 7) * M(3, 7) / M(3, 3); + + b[5] -= b[4] * M(4, 5) / M(4, 4); M(5, 5) -= M(4, 5) * M(4, 5) / M(4, 4); M(5, 6) -= M(4, 6) * M(4, 5) / M(4, 4); M(5, 7) -= M(4, 7) * M(4, 5) / M(4, 4); + b[6] -= b[4] * M(4, 6) / M(4, 4); M(6, 6) -= M(4, 6) * M(4, 6) / M(4, 4); M(6, 7) -= M(4, 7) * M(4, 6) / M(4, 4); + b[7] -= b[4] * M(4, 7) / M(4, 4); M(7, 7) -= M(4, 7) * M(4, 7) / M(4, 4); + + b[6] -= b[5] * M(5, 6) / M(5, 5); M(6, 6) -= M(5, 6) * M(5, 6) / M(5, 5); M(6, 7) -= M(5, 7) * M(5, 6) / M(5, 5); + b[7] -= b[5] * M(5, 7) / M(5, 5); M(7, 7) -= M(5, 7) * M(5, 7) / M(5, 5); + + b[7] -= b[6] * M(6, 7) / M(6, 6); M(7, 7) -= M(6, 7) * M(6, 7) / M(6, 6); + + b[7] /= M(7, 7); + interp += b[7] * (X[7] - X[N]).zw; + + b[6] -= M(6, 7) * b[7]; b[6] /= M(6, 6); + interp += b[6] * (X[6] - X[N]).zw; + + b[5] -= M(5, 6) * b[6]; b[5] -= M(5, 7) * b[7]; b[5] /= M(5, 5); + interp += b[5] * (X[5] - X[N]).zw; + + b[4] -= M(4, 5) * b[5]; b[4] -= M(4, 6) * b[6]; b[4] -= M(4, 7) * b[7]; b[4] /= M(4, 4); + interp += b[4] * (X[4] - X[N]).zw; + + b[3] -= M(3, 4) * b[4]; b[3] -= M(3, 5) * b[5]; b[3] -= M(3, 6) * b[6]; b[3] -= M(3, 7) * b[7]; b[3] /= M(3, 3); + interp += b[3] * (X[3] - X[N]).zw; + + b[2] -= M(2, 3) * b[3]; b[2] -= M(2, 4) * b[4]; b[2] -= M(2, 5) * b[5]; b[2] -= M(2, 6) * b[6]; b[2] -= M(2, 7) * b[7]; b[2] /= M(2, 2); + interp += b[2] * (X[2] - X[N]).zw; + + b[1] -= M(1, 2) * b[2]; b[1] -= M(1, 3) * b[3]; b[1] -= M(1, 4) * b[4]; b[1] -= M(1, 5) * b[5]; b[1] -= M(1, 6) * b[6]; b[1] -= M(1, 7) * b[7]; b[1] /= M(1, 1); + interp += b[1] * (X[1] - X[N]).zw; + + b[0] -= M(0, 1) * b[1]; b[0] -= M(0, 2) * b[2]; b[0] -= M(0, 3) * b[3]; b[0] -= M(0, 4) * b[4]; b[0] -= M(0, 5) * b[5]; b[0] -= M(0, 6) * b[6]; b[0] -= M(0, 7) * b[7]; b[0] /= M(0, 0); + interp += b[0] * (X[0] - X[N]).zw; + + return interp.xyxy; +} diff --git a/mpv/shaders/SSimDownscaler.glsl b/mpv/shaders/SSimDownscaler.glsl new file mode 100644 index 0000000..1cc0ff7 --- /dev/null +++ b/mpv/shaders/SSimDownscaler.glsl @@ -0,0 +1,214 @@ +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 3.0 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library. + +//!HOOK POSTKERNEL +//!BIND HOOKED +//!BIND PREKERNEL +//!SAVE L2 +//!WIDTH NATIVE_CROPPED.w +//!WHEN NATIVE_CROPPED.h POSTKERNEL.h > +//!COMPONENTS 3 +//!DESC SSimDownscaler L2 pass 1 + +#define axis 1 + +#define offset vec2(0,0) + +#define MN(B,C,x) (x < 1.0 ? ((2.-1.5*B-(C))*x + (-3.+2.*B+C))*x*x + (1.-(B)/3.) : (((-(B)/6.-(C))*x + (B+5.*C))*x + (-2.*B-8.*C))*x+((4./3.)*B+4.*C)) +#define Kernel(x) MN(.0, .5, abs(x)) +#define taps 2.0 + +vec4 hook() { + vec2 base = PREKERNEL_pt * (PREKERNEL_pos * input_size + tex_offset); + + float low = ceil((PREKERNEL_pos - taps*POSTKERNEL_pt) * input_size - offset + tex_offset - 0.5)[axis]; + float high = floor((PREKERNEL_pos + taps*POSTKERNEL_pt) * input_size - offset + tex_offset - 0.5)[axis]; + + float W = 0.0; + vec4 avg = vec4(0); + vec2 pos = base; + + for (float k = low; k <= high; k++) { + pos[axis] = PREKERNEL_pt[axis] * (k - offset[axis] + 0.5); + float rel = (pos[axis] - base[axis])*POSTKERNEL_size[axis]; + float w = Kernel(rel); + + vec4 tex = textureLod(PREKERNEL_raw, pos, 0.0) * PREKERNEL_mul; + avg += w * tex * tex; + W += w; + } + avg /= W; + + return avg; +} + +//!HOOK POSTKERNEL +//!BIND HOOKED +//!BIND L2 +//!SAVE L2 +//!WHEN NATIVE_CROPPED.w POSTKERNEL.w > +//!COMPONENTS 3 +//!DESC SSimDownscaler L2 pass 2 + +#define axis 0 + +#define offset vec2(0,0) + +#define MN(B,C,x) (x < 1.0 ? ((2.-1.5*B-(C))*x + (-3.+2.*B+C))*x*x + (1.-(B)/3.) : (((-(B)/6.-(C))*x + (B+5.*C))*x + (-2.*B-8.*C))*x+((4./3.)*B+4.*C)) +#define Kernel(x) MN(.0, .5, abs(x)) +#define taps 2.0 + +vec4 hook() { + float low = ceil((L2_pos - taps*POSTKERNEL_pt) * L2_size - offset - 0.5)[axis]; + float high = floor((L2_pos + taps*POSTKERNEL_pt) * L2_size - offset - 0.5)[axis]; + + float W = 0.0; + vec4 avg = vec4(0); + vec2 pos = L2_pos; + + for (float k = low; k <= high; k++) { + pos[axis] = L2_pt[axis] * (k - offset[axis] + 0.5); + float rel = (pos[axis] - L2_pos[axis])*POSTKERNEL_size[axis]; + float w = Kernel(rel); + + avg += w * textureLod(L2_raw, pos, 0.0) * L2_mul; + W += w; + } + avg /= W; + + return avg; +} + +//!HOOK POSTKERNEL +//!BIND HOOKED +//!BIND L2 +//!SAVE MR +//!WHEN NATIVE_CROPPED.h POSTKERNEL.h > +//!COMPONENTS 4 +//!DESC SSimDownscaler mean & R + +#define oversharp 0.0 + +#define sigma_nsq 10. / (255.*255.) +#define locality 2.0 + +#define offset vec2(0,0) + +#define Kernel(x) pow(1.0 / locality, abs(x)) +#define taps 3.0 + +#define Luma(rgb) ( dot(rgb, vec3(0.2126, 0.7152, 0.0722)) ) + +mat3x3 ScaleH(vec2 pos) { + float low = ceil(-0.5*taps - offset)[0]; + float high = floor(0.5*taps - offset)[0]; + + float W = 0.0; + mat3x3 avg = mat3x3(0); + + for (float k = low; k <= high; k++) { + pos[0] = HOOKED_pos[0] + HOOKED_pt[0] * k; + float rel = k + offset[0]; + float w = Kernel(rel); + + vec3 L = POSTKERNEL_tex(pos).rgb; + avg += w * mat3x3(L, L*L, L2_tex(pos).rgb); + W += w; + } + avg /= W; + + return avg; +} + +vec4 hook() { + vec2 pos = HOOKED_pos; + + float low = ceil(-0.5*taps - offset)[1]; + float high = floor(0.5*taps - offset)[1]; + + float W = 0.0; + mat3x3 avg = mat3x3(0); + + for (float k = low; k <= high; k++) { + pos[1] = HOOKED_pos[1] + HOOKED_pt[1] * k; + float rel = k + offset[1]; + float w = Kernel(rel); + + avg += w * ScaleH(pos); + W += w; + } + avg /= W; + + float Sl = Luma(max(avg[1] - avg[0] * avg[0], 0.)); + float Sh = Luma(max(avg[2] - avg[0] * avg[0], 0.)); + return vec4(avg[0], mix(sqrt((Sh + sigma_nsq) / (Sl + sigma_nsq)) * (1. + oversharp), clamp(Sh / Sl, 0., 1.), int(Sl > Sh))); +} + +//!HOOK POSTKERNEL +//!BIND HOOKED +//!BIND MR +//!WHEN NATIVE_CROPPED.h POSTKERNEL.h > +//!DESC SSimDownscaler final pass + +#define locality 2.0 + +#define offset vec2(0,0) + +#define Kernel(x) pow(1.0 / locality, abs(x)) +#define taps 3.0 + +#define Gamma(x) ( pow(x, vec3(1.0/2.0)) ) +#define GammaInv(x) ( pow(clamp(x, 0.0, 1.0), vec3(2.0)) ) + +mat3x3 ScaleH(vec2 pos) { + float low = ceil(-0.5*taps - offset)[0]; + float high = floor(0.5*taps - offset)[0]; + + float W = 0.0; + mat3x3 avg = mat3x3(0); + + for (float k = low; k <= high; k++) { + pos[0] = HOOKED_pos[0] + HOOKED_pt[0] * k; + float rel = k + offset[0]; + float w = Kernel(rel); + + vec4 MR = MR_tex(pos); + avg += w * mat3x3(MR.a*MR.rgb, MR.rgb, MR.aaa); + W += w; + } + avg /= W; + + return avg; +} + +vec4 hook() { + vec2 pos = HOOKED_pos; + + float low = ceil(-0.5*taps - offset)[1]; + float high = floor(0.5*taps - offset)[1]; + + float W = 0.0; + mat3x3 avg = mat3x3(0); + + for (float k = low; k <= high; k++) { + pos[1] = HOOKED_pos[1] + HOOKED_pt[1] * k; + float rel = k + offset[1]; + float w = Kernel(rel); + + avg += w * ScaleH(pos); + W += w; + } + avg /= W; + vec4 L = POSTKERNEL_texOff(0); + return vec4(avg[1] + avg[2] * L.rgb - avg[0], L.a); +} diff --git a/mpv/shaders/ravu-r4.hook b/mpv/shaders/ravu-r4.hook new file mode 100644 index 0000000..ebb2972 --- /dev/null +++ b/mpv/shaders/ravu-r4.hook @@ -0,0 +1,757 @@ +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. + +//!DESC RAVU (step1, luma, r4) +//!HOOK LUMA +//!BIND HOOKED +//!BIND ravu_lut4 +//!SAVE ravu_int11 +//!WHEN HOOKED.w OUTPUT.w / 0.750001 < HOOKED.h OUTPUT.h / 0.750001 < * +vec4 hook() { +float sample0 = HOOKED_texOff(vec2(-3.0, -3.0)).x; +float sample1 = HOOKED_texOff(vec2(-3.0, -2.0)).x; +float sample2 = HOOKED_texOff(vec2(-3.0, -1.0)).x; +float sample3 = HOOKED_texOff(vec2(-3.0, 0.0)).x; +float sample4 = HOOKED_texOff(vec2(-3.0, 1.0)).x; +float sample5 = HOOKED_texOff(vec2(-3.0, 2.0)).x; +float sample6 = HOOKED_texOff(vec2(-3.0, 3.0)).x; +float sample7 = HOOKED_texOff(vec2(-3.0, 4.0)).x; +float sample8 = HOOKED_texOff(vec2(-2.0, -3.0)).x; +float sample9 = HOOKED_texOff(vec2(-2.0, -2.0)).x; +float sample10 = HOOKED_texOff(vec2(-2.0, -1.0)).x; +float sample11 = HOOKED_texOff(vec2(-2.0, 0.0)).x; +float sample12 = HOOKED_texOff(vec2(-2.0, 1.0)).x; +float sample13 = HOOKED_texOff(vec2(-2.0, 2.0)).x; +float sample14 = HOOKED_texOff(vec2(-2.0, 3.0)).x; +float sample15 = HOOKED_texOff(vec2(-2.0, 4.0)).x; +float sample16 = HOOKED_texOff(vec2(-1.0, -3.0)).x; +float sample17 = HOOKED_texOff(vec2(-1.0, -2.0)).x; +float sample18 = HOOKED_texOff(vec2(-1.0, -1.0)).x; +float sample19 = HOOKED_texOff(vec2(-1.0, 0.0)).x; +float sample20 = HOOKED_texOff(vec2(-1.0, 1.0)).x; +float sample21 = HOOKED_texOff(vec2(-1.0, 2.0)).x; +float sample22 = HOOKED_texOff(vec2(-1.0, 3.0)).x; +float sample23 = HOOKED_texOff(vec2(-1.0, 4.0)).x; +float sample24 = HOOKED_texOff(vec2(0.0, -3.0)).x; +float sample25 = HOOKED_texOff(vec2(0.0, -2.0)).x; +float sample26 = HOOKED_texOff(vec2(0.0, -1.0)).x; +float sample27 = HOOKED_texOff(vec2(0.0, 0.0)).x; +float sample28 = HOOKED_texOff(vec2(0.0, 1.0)).x; +float sample29 = HOOKED_texOff(vec2(0.0, 2.0)).x; +float sample30 = HOOKED_texOff(vec2(0.0, 3.0)).x; +float sample31 = HOOKED_texOff(vec2(0.0, 4.0)).x; +float sample32 = HOOKED_texOff(vec2(1.0, -3.0)).x; +float sample33 = HOOKED_texOff(vec2(1.0, -2.0)).x; +float sample34 = HOOKED_texOff(vec2(1.0, -1.0)).x; +float sample35 = HOOKED_texOff(vec2(1.0, 0.0)).x; +float sample36 = HOOKED_texOff(vec2(1.0, 1.0)).x; +float sample37 = HOOKED_texOff(vec2(1.0, 2.0)).x; +float sample38 = HOOKED_texOff(vec2(1.0, 3.0)).x; +float sample39 = HOOKED_texOff(vec2(1.0, 4.0)).x; +float sample40 = HOOKED_texOff(vec2(2.0, -3.0)).x; +float sample41 = HOOKED_texOff(vec2(2.0, -2.0)).x; +float sample42 = HOOKED_texOff(vec2(2.0, -1.0)).x; +float sample43 = HOOKED_texOff(vec2(2.0, 0.0)).x; +float sample44 = HOOKED_texOff(vec2(2.0, 1.0)).x; +float sample45 = HOOKED_texOff(vec2(2.0, 2.0)).x; +float sample46 = HOOKED_texOff(vec2(2.0, 3.0)).x; +float sample47 = HOOKED_texOff(vec2(2.0, 4.0)).x; +float sample48 = HOOKED_texOff(vec2(3.0, -3.0)).x; +float sample49 = HOOKED_texOff(vec2(3.0, -2.0)).x; +float sample50 = HOOKED_texOff(vec2(3.0, -1.0)).x; +float sample51 = HOOKED_texOff(vec2(3.0, 0.0)).x; +float sample52 = HOOKED_texOff(vec2(3.0, 1.0)).x; +float sample53 = HOOKED_texOff(vec2(3.0, 2.0)).x; +float sample54 = HOOKED_texOff(vec2(3.0, 3.0)).x; +float sample55 = HOOKED_texOff(vec2(3.0, 4.0)).x; +float sample56 = HOOKED_texOff(vec2(4.0, -3.0)).x; +float sample57 = HOOKED_texOff(vec2(4.0, -2.0)).x; +float sample58 = HOOKED_texOff(vec2(4.0, -1.0)).x; +float sample59 = HOOKED_texOff(vec2(4.0, 0.0)).x; +float sample60 = HOOKED_texOff(vec2(4.0, 1.0)).x; +float sample61 = HOOKED_texOff(vec2(4.0, 2.0)).x; +float sample62 = HOOKED_texOff(vec2(4.0, 3.0)).x; +float sample63 = HOOKED_texOff(vec2(4.0, 4.0)).x; +vec3 abd = vec3(0.0); +float gx, gy; +gx = (sample17-sample1)/2.0; +gy = (sample10-sample8)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533; +gx = (sample18-sample2)/2.0; +gy = (-sample12+8.0*sample11-8.0*sample9+sample8)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (sample19-sample3)/2.0; +gy = (-sample13+8.0*sample12-8.0*sample10+sample9)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (sample20-sample4)/2.0; +gy = (-sample14+8.0*sample13-8.0*sample11+sample10)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (sample21-sample5)/2.0; +gy = (-sample15+8.0*sample14-8.0*sample12+sample11)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (sample22-sample6)/2.0; +gy = (sample15-sample13)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533; +gx = (-sample33+8.0*sample25-8.0*sample9+sample1)/12.0; +gy = (sample18-sample16)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (-sample34+8.0*sample26-8.0*sample10+sample2)/12.0; +gy = (-sample20+8.0*sample19-8.0*sample17+sample16)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854; +gx = (-sample35+8.0*sample27-8.0*sample11+sample3)/12.0; +gy = (-sample21+8.0*sample20-8.0*sample18+sample17)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample36+8.0*sample28-8.0*sample12+sample4)/12.0; +gy = (-sample22+8.0*sample21-8.0*sample19+sample18)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample37+8.0*sample29-8.0*sample13+sample5)/12.0; +gy = (-sample23+8.0*sample22-8.0*sample20+sample19)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854; +gx = (-sample38+8.0*sample30-8.0*sample14+sample6)/12.0; +gy = (sample23-sample21)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (-sample41+8.0*sample33-8.0*sample17+sample9)/12.0; +gy = (sample26-sample24)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (-sample42+8.0*sample34-8.0*sample18+sample10)/12.0; +gy = (-sample28+8.0*sample27-8.0*sample25+sample24)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample43+8.0*sample35-8.0*sample19+sample11)/12.0; +gy = (-sample29+8.0*sample28-8.0*sample26+sample25)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013; +gx = (-sample44+8.0*sample36-8.0*sample20+sample12)/12.0; +gy = (-sample30+8.0*sample29-8.0*sample27+sample26)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013; +gx = (-sample45+8.0*sample37-8.0*sample21+sample13)/12.0; +gy = (-sample31+8.0*sample30-8.0*sample28+sample27)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample46+8.0*sample38-8.0*sample22+sample14)/12.0; +gy = (sample31-sample29)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (-sample49+8.0*sample41-8.0*sample25+sample17)/12.0; +gy = (sample34-sample32)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (-sample50+8.0*sample42-8.0*sample26+sample18)/12.0; +gy = (-sample36+8.0*sample35-8.0*sample33+sample32)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample51+8.0*sample43-8.0*sample27+sample19)/12.0; +gy = (-sample37+8.0*sample36-8.0*sample34+sample33)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013; +gx = (-sample52+8.0*sample44-8.0*sample28+sample20)/12.0; +gy = (-sample38+8.0*sample37-8.0*sample35+sample34)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013; +gx = (-sample53+8.0*sample45-8.0*sample29+sample21)/12.0; +gy = (-sample39+8.0*sample38-8.0*sample36+sample35)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample54+8.0*sample46-8.0*sample30+sample22)/12.0; +gy = (sample39-sample37)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (-sample57+8.0*sample49-8.0*sample33+sample25)/12.0; +gy = (sample42-sample40)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (-sample58+8.0*sample50-8.0*sample34+sample26)/12.0; +gy = (-sample44+8.0*sample43-8.0*sample41+sample40)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854; +gx = (-sample59+8.0*sample51-8.0*sample35+sample27)/12.0; +gy = (-sample45+8.0*sample44-8.0*sample42+sample41)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample60+8.0*sample52-8.0*sample36+sample28)/12.0; +gy = (-sample46+8.0*sample45-8.0*sample43+sample42)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample61+8.0*sample53-8.0*sample37+sample29)/12.0; +gy = (-sample47+8.0*sample46-8.0*sample44+sample43)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854; +gx = (-sample62+8.0*sample54-8.0*sample38+sample30)/12.0; +gy = (sample47-sample45)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (sample57-sample41)/2.0; +gy = (sample50-sample48)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533; +gx = (sample58-sample42)/2.0; +gy = (-sample52+8.0*sample51-8.0*sample49+sample48)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (sample59-sample43)/2.0; +gy = (-sample53+8.0*sample52-8.0*sample50+sample49)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (sample60-sample44)/2.0; +gy = (-sample54+8.0*sample53-8.0*sample51+sample50)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (sample61-sample45)/2.0; +gy = (-sample55+8.0*sample54-8.0*sample52+sample51)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (sample62-sample46)/2.0; +gy = (sample55-sample53)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533; +float a = abd.x, b = abd.y, d = abd.z; +float T = a + d, D = a * d - b * b; +float delta = sqrt(max(T * T / 4.0 - D, 0.0)); +float L1 = T / 2.0 + delta, L2 = T / 2.0 - delta; +float sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2); +float theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7); +float lambda = sqrtL1; +float mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7); +float angle = floor(theta * 24.0 / 3.141592653589793); +float strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0); +float coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5); +float coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0; +float res = 0.0; +vec4 w; +w = texture(ravu_lut4, vec2(0.0625, coord_y)); +res += (sample0 + sample63) * w[0]; +res += (sample1 + sample62) * w[1]; +res += (sample2 + sample61) * w[2]; +res += (sample3 + sample60) * w[3]; +w = texture(ravu_lut4, vec2(0.1875, coord_y)); +res += (sample4 + sample59) * w[0]; +res += (sample5 + sample58) * w[1]; +res += (sample6 + sample57) * w[2]; +res += (sample7 + sample56) * w[3]; +w = texture(ravu_lut4, vec2(0.3125, coord_y)); +res += (sample8 + sample55) * w[0]; +res += (sample9 + sample54) * w[1]; +res += (sample10 + sample53) * w[2]; +res += (sample11 + sample52) * w[3]; +w = texture(ravu_lut4, vec2(0.4375, coord_y)); +res += (sample12 + sample51) * w[0]; +res += (sample13 + sample50) * w[1]; +res += (sample14 + sample49) * w[2]; +res += (sample15 + sample48) * w[3]; +w = texture(ravu_lut4, vec2(0.5625, coord_y)); +res += (sample16 + sample47) * w[0]; +res += (sample17 + sample46) * w[1]; +res += (sample18 + sample45) * w[2]; +res += (sample19 + sample44) * w[3]; +w = texture(ravu_lut4, vec2(0.6875, coord_y)); +res += (sample20 + sample43) * w[0]; +res += (sample21 + sample42) * w[1]; +res += (sample22 + sample41) * w[2]; +res += (sample23 + sample40) * w[3]; +w = texture(ravu_lut4, vec2(0.8125, coord_y)); +res += (sample24 + sample39) * w[0]; +res += (sample25 + sample38) * w[1]; +res += (sample26 + sample37) * w[2]; +res += (sample27 + sample36) * w[3]; +w = texture(ravu_lut4, vec2(0.9375, coord_y)); +res += (sample28 + sample35) * w[0]; +res += (sample29 + sample34) * w[1]; +res += (sample30 + sample33) * w[2]; +res += (sample31 + sample32) * w[3]; +res = clamp(res, 0.0, 1.0); +return vec4(res, 0.0, 0.0, 0.0); +} +//!DESC RAVU (step2, luma, r4) +//!HOOK LUMA +//!BIND HOOKED +//!BIND ravu_lut4 +//!BIND ravu_int11 +//!SAVE ravu_int10 +//!WHEN HOOKED.w OUTPUT.w / 0.750001 < HOOKED.h OUTPUT.h / 0.750001 < * +vec4 hook() { +float sample0 = HOOKED_texOff(vec2(-3.0, 0.0)).x; +float sample16 = HOOKED_texOff(vec2(-2.0, -1.0)).x; +float sample9 = HOOKED_texOff(vec2(-2.0, 0.0)).x; +float sample2 = HOOKED_texOff(vec2(-2.0, 1.0)).x; +float sample32 = HOOKED_texOff(vec2(-1.0, -2.0)).x; +float sample25 = HOOKED_texOff(vec2(-1.0, -1.0)).x; +float sample18 = HOOKED_texOff(vec2(-1.0, 0.0)).x; +float sample11 = HOOKED_texOff(vec2(-1.0, 1.0)).x; +float sample4 = HOOKED_texOff(vec2(-1.0, 2.0)).x; +float sample48 = HOOKED_texOff(vec2(0.0, -3.0)).x; +float sample41 = HOOKED_texOff(vec2(0.0, -2.0)).x; +float sample34 = HOOKED_texOff(vec2(0.0, -1.0)).x; +float sample27 = HOOKED_texOff(vec2(0.0, 0.0)).x; +float sample20 = HOOKED_texOff(vec2(0.0, 1.0)).x; +float sample13 = HOOKED_texOff(vec2(0.0, 2.0)).x; +float sample6 = HOOKED_texOff(vec2(0.0, 3.0)).x; +float sample57 = HOOKED_texOff(vec2(1.0, -3.0)).x; +float sample50 = HOOKED_texOff(vec2(1.0, -2.0)).x; +float sample43 = HOOKED_texOff(vec2(1.0, -1.0)).x; +float sample36 = HOOKED_texOff(vec2(1.0, 0.0)).x; +float sample29 = HOOKED_texOff(vec2(1.0, 1.0)).x; +float sample22 = HOOKED_texOff(vec2(1.0, 2.0)).x; +float sample15 = HOOKED_texOff(vec2(1.0, 3.0)).x; +float sample59 = HOOKED_texOff(vec2(2.0, -2.0)).x; +float sample52 = HOOKED_texOff(vec2(2.0, -1.0)).x; +float sample45 = HOOKED_texOff(vec2(2.0, 0.0)).x; +float sample38 = HOOKED_texOff(vec2(2.0, 1.0)).x; +float sample31 = HOOKED_texOff(vec2(2.0, 2.0)).x; +float sample61 = HOOKED_texOff(vec2(3.0, -1.0)).x; +float sample54 = HOOKED_texOff(vec2(3.0, 0.0)).x; +float sample47 = HOOKED_texOff(vec2(3.0, 1.0)).x; +float sample63 = HOOKED_texOff(vec2(4.0, 0.0)).x; +float sample8 = ravu_int11_texOff(vec2(-3.0, -1.0)).x; +float sample1 = ravu_int11_texOff(vec2(-3.0, 0.0)).x; +float sample24 = ravu_int11_texOff(vec2(-2.0, -2.0)).x; +float sample17 = ravu_int11_texOff(vec2(-2.0, -1.0)).x; +float sample10 = ravu_int11_texOff(vec2(-2.0, 0.0)).x; +float sample3 = ravu_int11_texOff(vec2(-2.0, 1.0)).x; +float sample40 = ravu_int11_texOff(vec2(-1.0, -3.0)).x; +float sample33 = ravu_int11_texOff(vec2(-1.0, -2.0)).x; +float sample26 = ravu_int11_texOff(vec2(-1.0, -1.0)).x; +float sample19 = ravu_int11_texOff(vec2(-1.0, 0.0)).x; +float sample12 = ravu_int11_texOff(vec2(-1.0, 1.0)).x; +float sample5 = ravu_int11_texOff(vec2(-1.0, 2.0)).x; +float sample56 = ravu_int11_texOff(vec2(0.0, -4.0)).x; +float sample49 = ravu_int11_texOff(vec2(0.0, -3.0)).x; +float sample42 = ravu_int11_texOff(vec2(0.0, -2.0)).x; +float sample35 = ravu_int11_texOff(vec2(0.0, -1.0)).x; +float sample28 = ravu_int11_texOff(vec2(0.0, 0.0)).x; +float sample21 = ravu_int11_texOff(vec2(0.0, 1.0)).x; +float sample14 = ravu_int11_texOff(vec2(0.0, 2.0)).x; +float sample7 = ravu_int11_texOff(vec2(0.0, 3.0)).x; +float sample58 = ravu_int11_texOff(vec2(1.0, -3.0)).x; +float sample51 = ravu_int11_texOff(vec2(1.0, -2.0)).x; +float sample44 = ravu_int11_texOff(vec2(1.0, -1.0)).x; +float sample37 = ravu_int11_texOff(vec2(1.0, 0.0)).x; +float sample30 = ravu_int11_texOff(vec2(1.0, 1.0)).x; +float sample23 = ravu_int11_texOff(vec2(1.0, 2.0)).x; +float sample60 = ravu_int11_texOff(vec2(2.0, -2.0)).x; +float sample53 = ravu_int11_texOff(vec2(2.0, -1.0)).x; +float sample46 = ravu_int11_texOff(vec2(2.0, 0.0)).x; +float sample39 = ravu_int11_texOff(vec2(2.0, 1.0)).x; +float sample62 = ravu_int11_texOff(vec2(3.0, -1.0)).x; +float sample55 = ravu_int11_texOff(vec2(3.0, 0.0)).x; +vec3 abd = vec3(0.0); +float gx, gy; +gx = (sample17-sample1)/2.0; +gy = (sample10-sample8)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533; +gx = (sample18-sample2)/2.0; +gy = (-sample12+8.0*sample11-8.0*sample9+sample8)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (sample19-sample3)/2.0; +gy = (-sample13+8.0*sample12-8.0*sample10+sample9)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (sample20-sample4)/2.0; +gy = (-sample14+8.0*sample13-8.0*sample11+sample10)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (sample21-sample5)/2.0; +gy = (-sample15+8.0*sample14-8.0*sample12+sample11)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (sample22-sample6)/2.0; +gy = (sample15-sample13)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533; +gx = (-sample33+8.0*sample25-8.0*sample9+sample1)/12.0; +gy = (sample18-sample16)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (-sample34+8.0*sample26-8.0*sample10+sample2)/12.0; +gy = (-sample20+8.0*sample19-8.0*sample17+sample16)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854; +gx = (-sample35+8.0*sample27-8.0*sample11+sample3)/12.0; +gy = (-sample21+8.0*sample20-8.0*sample18+sample17)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample36+8.0*sample28-8.0*sample12+sample4)/12.0; +gy = (-sample22+8.0*sample21-8.0*sample19+sample18)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample37+8.0*sample29-8.0*sample13+sample5)/12.0; +gy = (-sample23+8.0*sample22-8.0*sample20+sample19)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854; +gx = (-sample38+8.0*sample30-8.0*sample14+sample6)/12.0; +gy = (sample23-sample21)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (-sample41+8.0*sample33-8.0*sample17+sample9)/12.0; +gy = (sample26-sample24)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (-sample42+8.0*sample34-8.0*sample18+sample10)/12.0; +gy = (-sample28+8.0*sample27-8.0*sample25+sample24)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample43+8.0*sample35-8.0*sample19+sample11)/12.0; +gy = (-sample29+8.0*sample28-8.0*sample26+sample25)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013; +gx = (-sample44+8.0*sample36-8.0*sample20+sample12)/12.0; +gy = (-sample30+8.0*sample29-8.0*sample27+sample26)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013; +gx = (-sample45+8.0*sample37-8.0*sample21+sample13)/12.0; +gy = (-sample31+8.0*sample30-8.0*sample28+sample27)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample46+8.0*sample38-8.0*sample22+sample14)/12.0; +gy = (sample31-sample29)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (-sample49+8.0*sample41-8.0*sample25+sample17)/12.0; +gy = (sample34-sample32)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (-sample50+8.0*sample42-8.0*sample26+sample18)/12.0; +gy = (-sample36+8.0*sample35-8.0*sample33+sample32)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample51+8.0*sample43-8.0*sample27+sample19)/12.0; +gy = (-sample37+8.0*sample36-8.0*sample34+sample33)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013; +gx = (-sample52+8.0*sample44-8.0*sample28+sample20)/12.0; +gy = (-sample38+8.0*sample37-8.0*sample35+sample34)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013; +gx = (-sample53+8.0*sample45-8.0*sample29+sample21)/12.0; +gy = (-sample39+8.0*sample38-8.0*sample36+sample35)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample54+8.0*sample46-8.0*sample30+sample22)/12.0; +gy = (sample39-sample37)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (-sample57+8.0*sample49-8.0*sample33+sample25)/12.0; +gy = (sample42-sample40)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (-sample58+8.0*sample50-8.0*sample34+sample26)/12.0; +gy = (-sample44+8.0*sample43-8.0*sample41+sample40)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854; +gx = (-sample59+8.0*sample51-8.0*sample35+sample27)/12.0; +gy = (-sample45+8.0*sample44-8.0*sample42+sample41)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample60+8.0*sample52-8.0*sample36+sample28)/12.0; +gy = (-sample46+8.0*sample45-8.0*sample43+sample42)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample61+8.0*sample53-8.0*sample37+sample29)/12.0; +gy = (-sample47+8.0*sample46-8.0*sample44+sample43)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854; +gx = (-sample62+8.0*sample54-8.0*sample38+sample30)/12.0; +gy = (sample47-sample45)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (sample57-sample41)/2.0; +gy = (sample50-sample48)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533; +gx = (sample58-sample42)/2.0; +gy = (-sample52+8.0*sample51-8.0*sample49+sample48)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (sample59-sample43)/2.0; +gy = (-sample53+8.0*sample52-8.0*sample50+sample49)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (sample60-sample44)/2.0; +gy = (-sample54+8.0*sample53-8.0*sample51+sample50)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (sample61-sample45)/2.0; +gy = (-sample55+8.0*sample54-8.0*sample52+sample51)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (sample62-sample46)/2.0; +gy = (sample55-sample53)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533; +float a = abd.x, b = abd.y, d = abd.z; +float T = a + d, D = a * d - b * b; +float delta = sqrt(max(T * T / 4.0 - D, 0.0)); +float L1 = T / 2.0 + delta, L2 = T / 2.0 - delta; +float sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2); +float theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7); +float lambda = sqrtL1; +float mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7); +float angle = floor(theta * 24.0 / 3.141592653589793); +float strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0); +float coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5); +float coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0; +float res = 0.0; +vec4 w; +w = texture(ravu_lut4, vec2(0.0625, coord_y)); +res += (sample0 + sample63) * w[0]; +res += (sample1 + sample62) * w[1]; +res += (sample2 + sample61) * w[2]; +res += (sample3 + sample60) * w[3]; +w = texture(ravu_lut4, vec2(0.1875, coord_y)); +res += (sample4 + sample59) * w[0]; +res += (sample5 + sample58) * w[1]; +res += (sample6 + sample57) * w[2]; +res += (sample7 + sample56) * w[3]; +w = texture(ravu_lut4, vec2(0.3125, coord_y)); +res += (sample8 + sample55) * w[0]; +res += (sample9 + sample54) * w[1]; +res += (sample10 + sample53) * w[2]; +res += (sample11 + sample52) * w[3]; +w = texture(ravu_lut4, vec2(0.4375, coord_y)); +res += (sample12 + sample51) * w[0]; +res += (sample13 + sample50) * w[1]; +res += (sample14 + sample49) * w[2]; +res += (sample15 + sample48) * w[3]; +w = texture(ravu_lut4, vec2(0.5625, coord_y)); +res += (sample16 + sample47) * w[0]; +res += (sample17 + sample46) * w[1]; +res += (sample18 + sample45) * w[2]; +res += (sample19 + sample44) * w[3]; +w = texture(ravu_lut4, vec2(0.6875, coord_y)); +res += (sample20 + sample43) * w[0]; +res += (sample21 + sample42) * w[1]; +res += (sample22 + sample41) * w[2]; +res += (sample23 + sample40) * w[3]; +w = texture(ravu_lut4, vec2(0.8125, coord_y)); +res += (sample24 + sample39) * w[0]; +res += (sample25 + sample38) * w[1]; +res += (sample26 + sample37) * w[2]; +res += (sample27 + sample36) * w[3]; +w = texture(ravu_lut4, vec2(0.9375, coord_y)); +res += (sample28 + sample35) * w[0]; +res += (sample29 + sample34) * w[1]; +res += (sample30 + sample33) * w[2]; +res += (sample31 + sample32) * w[3]; +res = clamp(res, 0.0, 1.0); +return vec4(res, 0.0, 0.0, 0.0); +} +//!DESC RAVU (step3, luma, r4) +//!HOOK LUMA +//!BIND HOOKED +//!BIND ravu_lut4 +//!BIND ravu_int11 +//!SAVE ravu_int01 +//!WHEN HOOKED.w OUTPUT.w / 0.750001 < HOOKED.h OUTPUT.h / 0.750001 < * +vec4 hook() { +float sample8 = HOOKED_texOff(vec2(-3.0, 0.0)).x; +float sample1 = HOOKED_texOff(vec2(-3.0, 1.0)).x; +float sample24 = HOOKED_texOff(vec2(-2.0, -1.0)).x; +float sample17 = HOOKED_texOff(vec2(-2.0, 0.0)).x; +float sample10 = HOOKED_texOff(vec2(-2.0, 1.0)).x; +float sample3 = HOOKED_texOff(vec2(-2.0, 2.0)).x; +float sample40 = HOOKED_texOff(vec2(-1.0, -2.0)).x; +float sample33 = HOOKED_texOff(vec2(-1.0, -1.0)).x; +float sample26 = HOOKED_texOff(vec2(-1.0, 0.0)).x; +float sample19 = HOOKED_texOff(vec2(-1.0, 1.0)).x; +float sample12 = HOOKED_texOff(vec2(-1.0, 2.0)).x; +float sample5 = HOOKED_texOff(vec2(-1.0, 3.0)).x; +float sample56 = HOOKED_texOff(vec2(0.0, -3.0)).x; +float sample49 = HOOKED_texOff(vec2(0.0, -2.0)).x; +float sample42 = HOOKED_texOff(vec2(0.0, -1.0)).x; +float sample35 = HOOKED_texOff(vec2(0.0, 0.0)).x; +float sample28 = HOOKED_texOff(vec2(0.0, 1.0)).x; +float sample21 = HOOKED_texOff(vec2(0.0, 2.0)).x; +float sample14 = HOOKED_texOff(vec2(0.0, 3.0)).x; +float sample7 = HOOKED_texOff(vec2(0.0, 4.0)).x; +float sample58 = HOOKED_texOff(vec2(1.0, -2.0)).x; +float sample51 = HOOKED_texOff(vec2(1.0, -1.0)).x; +float sample44 = HOOKED_texOff(vec2(1.0, 0.0)).x; +float sample37 = HOOKED_texOff(vec2(1.0, 1.0)).x; +float sample30 = HOOKED_texOff(vec2(1.0, 2.0)).x; +float sample23 = HOOKED_texOff(vec2(1.0, 3.0)).x; +float sample60 = HOOKED_texOff(vec2(2.0, -1.0)).x; +float sample53 = HOOKED_texOff(vec2(2.0, 0.0)).x; +float sample46 = HOOKED_texOff(vec2(2.0, 1.0)).x; +float sample39 = HOOKED_texOff(vec2(2.0, 2.0)).x; +float sample62 = HOOKED_texOff(vec2(3.0, 0.0)).x; +float sample55 = HOOKED_texOff(vec2(3.0, 1.0)).x; +float sample0 = ravu_int11_texOff(vec2(-4.0, 0.0)).x; +float sample16 = ravu_int11_texOff(vec2(-3.0, -1.0)).x; +float sample9 = ravu_int11_texOff(vec2(-3.0, 0.0)).x; +float sample2 = ravu_int11_texOff(vec2(-3.0, 1.0)).x; +float sample32 = ravu_int11_texOff(vec2(-2.0, -2.0)).x; +float sample25 = ravu_int11_texOff(vec2(-2.0, -1.0)).x; +float sample18 = ravu_int11_texOff(vec2(-2.0, 0.0)).x; +float sample11 = ravu_int11_texOff(vec2(-2.0, 1.0)).x; +float sample4 = ravu_int11_texOff(vec2(-2.0, 2.0)).x; +float sample48 = ravu_int11_texOff(vec2(-1.0, -3.0)).x; +float sample41 = ravu_int11_texOff(vec2(-1.0, -2.0)).x; +float sample34 = ravu_int11_texOff(vec2(-1.0, -1.0)).x; +float sample27 = ravu_int11_texOff(vec2(-1.0, 0.0)).x; +float sample20 = ravu_int11_texOff(vec2(-1.0, 1.0)).x; +float sample13 = ravu_int11_texOff(vec2(-1.0, 2.0)).x; +float sample6 = ravu_int11_texOff(vec2(-1.0, 3.0)).x; +float sample57 = ravu_int11_texOff(vec2(0.0, -3.0)).x; +float sample50 = ravu_int11_texOff(vec2(0.0, -2.0)).x; +float sample43 = ravu_int11_texOff(vec2(0.0, -1.0)).x; +float sample36 = ravu_int11_texOff(vec2(0.0, 0.0)).x; +float sample29 = ravu_int11_texOff(vec2(0.0, 1.0)).x; +float sample22 = ravu_int11_texOff(vec2(0.0, 2.0)).x; +float sample15 = ravu_int11_texOff(vec2(0.0, 3.0)).x; +float sample59 = ravu_int11_texOff(vec2(1.0, -2.0)).x; +float sample52 = ravu_int11_texOff(vec2(1.0, -1.0)).x; +float sample45 = ravu_int11_texOff(vec2(1.0, 0.0)).x; +float sample38 = ravu_int11_texOff(vec2(1.0, 1.0)).x; +float sample31 = ravu_int11_texOff(vec2(1.0, 2.0)).x; +float sample61 = ravu_int11_texOff(vec2(2.0, -1.0)).x; +float sample54 = ravu_int11_texOff(vec2(2.0, 0.0)).x; +float sample47 = ravu_int11_texOff(vec2(2.0, 1.0)).x; +float sample63 = ravu_int11_texOff(vec2(3.0, 0.0)).x; +vec3 abd = vec3(0.0); +float gx, gy; +gx = (sample17-sample1)/2.0; +gy = (sample10-sample8)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533; +gx = (sample18-sample2)/2.0; +gy = (-sample12+8.0*sample11-8.0*sample9+sample8)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (sample19-sample3)/2.0; +gy = (-sample13+8.0*sample12-8.0*sample10+sample9)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (sample20-sample4)/2.0; +gy = (-sample14+8.0*sample13-8.0*sample11+sample10)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (sample21-sample5)/2.0; +gy = (-sample15+8.0*sample14-8.0*sample12+sample11)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (sample22-sample6)/2.0; +gy = (sample15-sample13)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533; +gx = (-sample33+8.0*sample25-8.0*sample9+sample1)/12.0; +gy = (sample18-sample16)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (-sample34+8.0*sample26-8.0*sample10+sample2)/12.0; +gy = (-sample20+8.0*sample19-8.0*sample17+sample16)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854; +gx = (-sample35+8.0*sample27-8.0*sample11+sample3)/12.0; +gy = (-sample21+8.0*sample20-8.0*sample18+sample17)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample36+8.0*sample28-8.0*sample12+sample4)/12.0; +gy = (-sample22+8.0*sample21-8.0*sample19+sample18)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample37+8.0*sample29-8.0*sample13+sample5)/12.0; +gy = (-sample23+8.0*sample22-8.0*sample20+sample19)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854; +gx = (-sample38+8.0*sample30-8.0*sample14+sample6)/12.0; +gy = (sample23-sample21)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (-sample41+8.0*sample33-8.0*sample17+sample9)/12.0; +gy = (sample26-sample24)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (-sample42+8.0*sample34-8.0*sample18+sample10)/12.0; +gy = (-sample28+8.0*sample27-8.0*sample25+sample24)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample43+8.0*sample35-8.0*sample19+sample11)/12.0; +gy = (-sample29+8.0*sample28-8.0*sample26+sample25)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013; +gx = (-sample44+8.0*sample36-8.0*sample20+sample12)/12.0; +gy = (-sample30+8.0*sample29-8.0*sample27+sample26)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013; +gx = (-sample45+8.0*sample37-8.0*sample21+sample13)/12.0; +gy = (-sample31+8.0*sample30-8.0*sample28+sample27)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample46+8.0*sample38-8.0*sample22+sample14)/12.0; +gy = (sample31-sample29)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (-sample49+8.0*sample41-8.0*sample25+sample17)/12.0; +gy = (sample34-sample32)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (-sample50+8.0*sample42-8.0*sample26+sample18)/12.0; +gy = (-sample36+8.0*sample35-8.0*sample33+sample32)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample51+8.0*sample43-8.0*sample27+sample19)/12.0; +gy = (-sample37+8.0*sample36-8.0*sample34+sample33)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013; +gx = (-sample52+8.0*sample44-8.0*sample28+sample20)/12.0; +gy = (-sample38+8.0*sample37-8.0*sample35+sample34)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013; +gx = (-sample53+8.0*sample45-8.0*sample29+sample21)/12.0; +gy = (-sample39+8.0*sample38-8.0*sample36+sample35)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample54+8.0*sample46-8.0*sample30+sample22)/12.0; +gy = (sample39-sample37)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (-sample57+8.0*sample49-8.0*sample33+sample25)/12.0; +gy = (sample42-sample40)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (-sample58+8.0*sample50-8.0*sample34+sample26)/12.0; +gy = (-sample44+8.0*sample43-8.0*sample41+sample40)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854; +gx = (-sample59+8.0*sample51-8.0*sample35+sample27)/12.0; +gy = (-sample45+8.0*sample44-8.0*sample42+sample41)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample60+8.0*sample52-8.0*sample36+sample28)/12.0; +gy = (-sample46+8.0*sample45-8.0*sample43+sample42)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872; +gx = (-sample61+8.0*sample53-8.0*sample37+sample29)/12.0; +gy = (-sample47+8.0*sample46-8.0*sample44+sample43)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854; +gx = (-sample62+8.0*sample54-8.0*sample38+sample30)/12.0; +gy = (sample47-sample45)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (sample57-sample41)/2.0; +gy = (sample50-sample48)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533; +gx = (sample58-sample42)/2.0; +gy = (-sample52+8.0*sample51-8.0*sample49+sample48)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (sample59-sample43)/2.0; +gy = (-sample53+8.0*sample52-8.0*sample50+sample49)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (sample60-sample44)/2.0; +gy = (-sample54+8.0*sample53-8.0*sample51+sample50)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275; +gx = (sample61-sample45)/2.0; +gy = (-sample55+8.0*sample54-8.0*sample52+sample51)/12.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175; +gx = (sample62-sample46)/2.0; +gy = (sample55-sample53)/2.0; +abd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533; +float a = abd.x, b = abd.y, d = abd.z; +float T = a + d, D = a * d - b * b; +float delta = sqrt(max(T * T / 4.0 - D, 0.0)); +float L1 = T / 2.0 + delta, L2 = T / 2.0 - delta; +float sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2); +float theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7); +float lambda = sqrtL1; +float mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7); +float angle = floor(theta * 24.0 / 3.141592653589793); +float strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0); +float coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5); +float coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0; +float res = 0.0; +vec4 w; +w = texture(ravu_lut4, vec2(0.0625, coord_y)); +res += (sample0 + sample63) * w[0]; +res += (sample1 + sample62) * w[1]; +res += (sample2 + sample61) * w[2]; +res += (sample3 + sample60) * w[3]; +w = texture(ravu_lut4, vec2(0.1875, coord_y)); +res += (sample4 + sample59) * w[0]; +res += (sample5 + sample58) * w[1]; +res += (sample6 + sample57) * w[2]; +res += (sample7 + sample56) * w[3]; +w = texture(ravu_lut4, vec2(0.3125, coord_y)); +res += (sample8 + sample55) * w[0]; +res += (sample9 + sample54) * w[1]; +res += (sample10 + sample53) * w[2]; +res += (sample11 + sample52) * w[3]; +w = texture(ravu_lut4, vec2(0.4375, coord_y)); +res += (sample12 + sample51) * w[0]; +res += (sample13 + sample50) * w[1]; +res += (sample14 + sample49) * w[2]; +res += (sample15 + sample48) * w[3]; +w = texture(ravu_lut4, vec2(0.5625, coord_y)); +res += (sample16 + sample47) * w[0]; +res += (sample17 + sample46) * w[1]; +res += (sample18 + sample45) * w[2]; +res += (sample19 + sample44) * w[3]; +w = texture(ravu_lut4, vec2(0.6875, coord_y)); +res += (sample20 + sample43) * w[0]; +res += (sample21 + sample42) * w[1]; +res += (sample22 + sample41) * w[2]; +res += (sample23 + sample40) * w[3]; +w = texture(ravu_lut4, vec2(0.8125, coord_y)); +res += (sample24 + sample39) * w[0]; +res += (sample25 + sample38) * w[1]; +res += (sample26 + sample37) * w[2]; +res += (sample27 + sample36) * w[3]; +w = texture(ravu_lut4, vec2(0.9375, coord_y)); +res += (sample28 + sample35) * w[0]; +res += (sample29 + sample34) * w[1]; +res += (sample30 + sample33) * w[2]; +res += (sample31 + sample32) * w[3]; +res = clamp(res, 0.0, 1.0); +return vec4(res, 0.0, 0.0, 0.0); +} +//!DESC RAVU (step4, luma, r4) +//!HOOK LUMA +//!BIND HOOKED +//!BIND ravu_int01 +//!BIND ravu_int10 +//!BIND ravu_int11 +//!WIDTH 2 HOOKED.w * +//!HEIGHT 2 HOOKED.h * +//!OFFSET -0.500000 -0.500000 +//!WHEN HOOKED.w OUTPUT.w / 0.750001 < HOOKED.h OUTPUT.h / 0.750001 < * +vec4 hook() { + vec2 dir = fract(HOOKED_pos * HOOKED_size) - 0.5; + if (dir.x < 0.0) { + if (dir.y < 0.0) + return HOOKED_texOff(-dir); + return ravu_int01_texOff(-dir); + } else { + if (dir.y < 0.0) + return ravu_int10_texOff(-dir); + return ravu_int11_texOff(-dir); + } +} +//!TEXTURE ravu_lut4 +//!SIZE 8 648 +//!FORMAT rgba16hf +//!FILTER NEAREST +010c8894c4929a12f81137937d946f0ce995e01e2c9cee164917429cef1ed1967f938f9e4221631f171e24211e9f1e92ec12b81b1c24b73214332925c31c3815330a9b900c9897194018d796218de809ea966c1ede9d3b1f681d88a00b1d7c955a9cb0a13620c9269b261e1d50a412a0aa1c0320f7239530d931c92bee2892231c030d057a0c541ab9196d8c128dac013905ed9b0e9cc1276b2663a46aa54691c997dfaa869c152d5e2d79a2fda8539aa8947ea618a5d42db32f5e2efd304724c906ae92f40a7d900c929f0cbd9249061c95281a3098421b041cc398661a8795938a5c9a9e1f29a55da5a21f459af284dd0fcf1ad6a251346c3482a27a1b5811f708be9091922a07270761930a914d096198891d089c1c17ff162a9d821d50992a9c55a10e1e1219b418771d1ba2379c8f17491ee125b732403339280722571c0809419005959c14d211b99657923109ef985819e19faf203321f59fa612df9a9c9e83a20b1d6b27aa27c41cdda341a0a61dc520db25d03029315f2a632aa2260a09109142109395c894be02ac8f2307e3925a1a8299071f141f3698271a0c912895a59b0b1cb2a8cca848197c9acb985a8d7b1f31a8e234f93414a8b71f4c1584086e8ff20ed7925f8cc18e0c87b1031b8eff190e94121b841d2698a11c2e939e9cde9f89190ca756a7cb9436a0639e0418f61baca06134a334de990320aa1d2607a3885d8c4d0dbd10ec8f01016106e0907219cd99ed18d81b049de61afe94f69f5ba2ca9b86913b955ba025a4daa18817d61bea26e8327533bf29c1243f23b509578e6d89d5979595c593f68ba701fe93ce1c3498a0218721108e941ced8ddb936b98de8a70aa8eaaa09a3098bf98939976225caa44355f3528aa3d23d593260a9490510f60924492368dd98f270a2808f8195d953b1dc11e7d0cd11c50172d98d39dac14aca80da9e89deda009a1ec9a071c91a7ce34113584a55623a7206b0661891601298e2a8f298e53847e0984075a16978dac1bf41dee8d041d0319149e8f9f4d9b5fa5ffa5cfa108a498a497986a84559427347b341d246a2425258100e088ce09de9aaf9bae8d6f8a458b2896931b19923423cb2372109a1c3294470e0c14821798abf0abb3967b0caa94879e7d24fdab7235943596abf624059c300d3e922d1123945e96cd897c958c0e188d0f18ac94f41e4d209019fd1d5e1942103b96ba1665a936aaa7a00aa27ca17e9f441b4baa0e35603541a87525c62130031484ad0129897492f090588cb30b8e89ae971596600ff41d658333207420771b771a99190da5faa6e2a2cca5b9a879a64fa39fa65d34d53410174d28222a5291d7938e1b839e1d9e001af796f58ff59bdf93631626229522521ad212139c4221568d3c2411ac48acec216983d61fdfa2482432ac68359c35eaab8224a9a00b0fd19623197898ba98f811ee984b0c8e8530952615fd1c29202c20a01a281b8118c394bc2211aa56ab5d9f0da3b8a005a0c70dc8ab0c35973545a87426ba206689980534075706439011902a0e6595d911cd9cf99bdd99ab1ca9960d21be24e51f3a246a22eea2bba632a57da79fab4ea9b1a803ab5534283502187b2bad2c0c0e7b983516899ce29c170c2699c781a58c44183b14d4239b24781cc31afa101618279b142032ac97ac4c91979b35904e9f7e25cbac8a35d83552ac3926849ccd85c09309150495879655933f9840964b16510a1d930c1b8721c11f1c1f771ee798980d1b2352a984ab7da421a378a27c9dad1f4ead0535d13551a86c28921ea2916b0fe70a0011f30c2e12b015849deb18c09e539d16a0111c279c1420b827bc8025282d262f143ea70ea712a81aadfda86fab82ae32344d35d9270d2d972ddd8ed194418c8099e998fa989e95dd93ce14181b6c171722eb23941e981c54182b97a79b261755ab49ac78a0499cca9a1a9b6525a5ac6c35dd3501ac2e26f199e991678e2d0e698bda8fb89ba396079ca7195c196c9a3519b521e820b620ae20cb9e570e8521cfa7b4abbea691a3eca2ab90062205aedc34ff3537a79d28411cc38d9f14df14d213ba159a0878199aa135153b9da7a2a09e791b3019a7170629729e0a298b28e51f50a84caa6ca62eadd3a514aca4b00234b7353f2a542e652c8299a315009ef19e5da1e99bce92c99512185f1d9e19f0274b28271d5a2031112d9cb39f732123add7ad3f19b5a0a494689f152861adaa350f36c7ac5e27759daa99119b5398ac9af79fc99f329a609c7d20811e8e1c7d21ba250925a3207f2270a17da0de0862a881ac01a866a4cea1cc1c0324c3aca634e535f69813252517d513bc1763162e1cdf0db4997199e4a34e9faf0eff9fdfa0201c9d23f7184729201d2a1eef29da2853a750ae59a948a940182daa33b26a3110365931a02eec20290df89411924d10230d3f903395f90dde96561f589a9505b711b59a551fed987792d19d4f22e11c140c3f21ce9f130fda8bd216e7216232bd336c26b11beb10f50cd48e959624176a12ba93c593740cc99897205598751c1a124ca02120049ab39b1ca14b210525f6240d187ca68c9ebf990119220ff42d9e32e62ff72a9b219c000c04bf93071c98931798b5913380c995492000a2b02172258ba4459dfe9c78949096381d1a2053268c250ca594a2e4a170a0eba7b02b952d36306832372a4e07a192da1058921e9099822f92c8047e950e1a8b98321b1c1ce998071bea95ae01099a1a203ea5b9a5e21f7f9a06846689881acfa33b348d345da2661b14142c0adc91ec92c50451092a921b94eb0a0d97711ead9a38120511079f981e309b7c9a89a01e211797cf96bd20f1a20798e694730895223d32fe339229a5227519870df2934d991e193d13cd9af6941f0a9999da1f479fd11efc1daea17a1c1f9e9b9d89a0fb2367245a250c20c9a50ca2cea1899fff224c301b31032e142d0a28bf0b4d93a3149c97e7917491338b7202aa942a1b089cb11f491f8996691937900b901a9cfd1db6a8fba87017ff9816982495811f82a8d234143517a8941f8d15c10cd994d9170b99b41448971711ca855b803d15128994153620bd9c071f3d99f790f39fe420f7a729a8779ac39efa9c13987d1207a5383402350296a620ea1c3a0d3c953b15c39717193498bf14408c2914290f8c186b9c8a1e21a21b21259e8a97fca14621c5a0179d139feda2b6a0e29e53a164208c322f345f2bfb25bb21280c1391710edb974f96ea95808c71838a94b01c209b0922c721a6143f1c110eaa0b7c99961982aad4aa6c9d8798a39a129c1f22b2aa33357d3515aa9d23600cd70c5c935717c79676093298ac80460015930d17cc9ae61cbe20b5168e1e5818bf1b309de5212da9c0a910a333a116a2f7a0319396a9a534783514a58f251722320d7095fc18be981e1686996b0ca40a6915899c1d1d019e172418a05c234f97fa1cf4a0fe24b5a8cfa662a656a0bea4cba161a270a6e7332f35f824f4265b24a3099a8da10d1e9aa29b729490927d01e3931c1b21985c2352248e17d51dba8e7209370ec41a7eab29accf9d5295a499319e412431ac5d35bb3576ab59252b98dd0aa1916414718896963f94ea98cd0591902e18439e121eb220b81ed220cf1db0192f186423fda80bab16a503a55ba4e8a2ad9b76accb34c33576a55d289f24e90811915e12480d65145195aa94a9900110b094129b689d7d1ef79488228a22021bd11d22264ca581a842a6f4a67aa944a6b3a6e7ab12348d351122a22ab8297281eb90c114239c049d62957d964d8f9791e9195099eb2358257719d11e79120417f294f22005aca0ac4c9ee398e89a4ca00925cbac5d35f43522acc126409a8e0d7896f0176e93b48c279805991897f3124117a29ea619d42084206e22d120139494195a2643a89aabc0a75ea62ea540a0b39d21ae9f341a3675a2e629a123350c299150896d90bb105d173018769cbc145f17d698979c759bdf9fa01c4227d49d03209c27fe11e4a40ca67fa834acdca1c4a925ae4233a8353f283e2d8f2a5d05ac95fa127e9ab69cc799a9983992cd14a81b0a9a9f23cf25861ee71e4d1b0a9796998521ddabf3acada27f9b829e2a9d37253bad50352a3620ac8b27f79873867e94b011e6842b15df9881987e9cf718cf17289cfb9c2521941f41240723489e070cdb2790a430ab00aa8da6a5a67c98381801b03d347036cc1de82ac021be10dd91a78fdb97a5880719a41c7b9e3c156819371bbc9b819c35a47b9cc5285aa2ff19b3267e247e195da63da837ad672177aa2bb00c328735102da72e522914089f962e15a096419a2c9c0698dc969312ce1b0e99c120b024a621d41d971bc0988c9c412142aad5ace7a41b9d0d9cfb95ed240fadfa344f360aab0d273a9dfe8c4995071014119a16b89a9496559f901b081bb09cbf9da51e86226923542441a12e9a8327f51010acd1aa4fa6bda6681b31215bb07633c536cb26ad29e120c6119d057b9711993910fe140a20cfa0fb0e3c1dd71bf0998d9cc1a387a29c2918a4150d9326bd26ba1dcda839a57bad222635a941b16f31bf356d2e162f1827a38c6c94a099309d3ba2469e4d98f48fa7141a215594762636284d233120130acf99f8a0881f99ab67aeb9a23099c49abc9e3b28faac0535773627ac8a2729a0c29521947409560c439bb49ef39d4ba0321e3d1f2d992a16811ecc26ab2449248ea187a21b24052179ac32aca7a362a6021a0627f6ae15314a37442cce1e23216411858e2996c79905123e18a11e16a2d3151f1e141ce48a9d9df9a0a8a5ed2a27a22aa3a7249e282b1ce6a8d5a196adfb262e18fcb1cb2dc7353e32832d3720c50d99951a911811100b508f1f96710f2097a01fac9a8d8dcc0e499b9d1f9d9997921f9d1b23811ce198aa214b9fb1157889a50be51f133225344d26b118808e7a0e34929b9717164f15ed97ea9608103399b221709cd418f994449e8d21f59f9498899da023c422a51f3697a4a5dc21999c1316f212b72c39348e303521a29a3403b90cb097b7140d93971446980502c499652255a0d51a200f9d9f7a24799fb11a97a222269b99d7a2ce28d9a7b616cd9c89a01ca8f1242f32ab341424c422430858938d11bf93b18f2c89a692d004a794f619bc989f1b731c7399301b78953308e39944205da520a65020169af90ae490611a6fa42a34b13437a3511bac126f0bf0922694b7093608ef917a956e0cbc960a204f9bef08e90a99a00820e89c6d98b89fbd23899f0ba00323f2a26d1883994f9c3b19d9317b342d2a5a1fc88cb00e01953096740ebf1373996298650ad4992e22559f231df396cda10b20d0a00e950ca1412669169e1d362336a4102101a1a0a2cc1c3d303c32ca30c025d21b7d0c3394911736996b8d21957185eb820b962f1c099d0320881fec94fc18e98d0711ea9c341fbba825a9861798963098f8983a20c8a8c4342f3546a80a1f7e16bb0eb8977b1bb29c031aaf9bfc16f08c0e85f4111f91ce1530216d9e921fbb9b7c1868a0fd2389a8aaa8669a559b9799b59b1a18c2a719345f35319d0820d4180a10d799c01a539d8c1d299c69182590f519a698071fb1a0b920c8a40c2383a15d18c8a2eb2524a59fa00097049e3e84c39d86a2e49e1832a734112c51240099040e6993d2127d98419623985804f88667950a1dc49c7a22f621c218d41a0e0e2615449cc41daeaafdaad99e7196fe99ac9cb02206ab23359c3543aab8235905660fbf95261aaa99c215589ca513648c2494b716189d291e6c216f1cc21c0612b41d56a05b25fba948aae6a4349dd29e04a0ca19f3aa8834d135cda543256e1c390edf98cd1ba699298e0310b79b7c18961a02a1cf2176a2012641a1c422e49daf21a5a57b2964ab95a45ba9f6200ba10f9fc89fffa85133da35031e34285b9cec0c748f121091999f9bf197639282017693e61a3d9a6723ad242d1ac21df288130f8492be1d82ab48ac45a0ce96ff98509d292446ac4a35da3576ab5825a7986c0f4694c9149d828492ec98c49af8876093051c41a0ef1e3420d222da20341c4318669be02508a9d6abc9a787a42ca0bb9ebe1a2ead93342136bca3b8273f1d5e09b890b600d217098d90138c9e9f106f0e8005479c7e9c441f952183219a1c141c26a0172953a834a90eaa73a4d2a1d49dd8a1e1ac98332f364f24952900197e0b70940815679b8d9c9e9af496568f1f0b991ad89a962304267f1c5a209916d00b0099dd21edabc8ac03a35198bd9d999efb24f8ac3d35263609ac122710995812c497e514579503184f9a079c8a98d010a41b719c009336205722cd24551f7c97bb9fa02740a689ab8daab7a621a1190851200eaf2f3489363a1c70290497180dfc8e4f8f7f9441188b171498f29bd28ce81cab9c9b8654a00320912322237399889e2e272d1612a81cabd8a924a2ad1e38a1bfae78323f36862c882a229d240d8596b2148498c09c989c04995e9352138a1c789dea223126f720fb1f2d1bad96e09bb5234eab3fad17a5a6998f9eff9b14255dad0e3572360eac0528519cca13f99521838297db1a97980d98e49de10f6b1c540b6f9e1b1c71217925ed21bf9911a3e226719181aa62ac02a8dfa13219142625b0d43208370227c9292f9f590bc5086e9176960391d21a2019159f278a231a31131418efa0d69c4b22bd25fd9860a0fd20cc253f9f66ab1aac21a3d020391e73afa5302a365330ff2952a28b0f67992318e690119b439d4e9b0791d013151d429d2520e324ec23341ff619e6986d9f262489a930ad2ba75a9b0b9b310be9241bad9534b536c0aa12274f9f6d13f89305957795f9188f923b933da0b284c41d4e15079db49a3323ff243d2331998ea4ca246f2599aa96acc3a885a1bb183f2816b02d3179374c2a6728d49c03066214f29405989697e4193c1ed9a0318eec16621deb113e9e0fa2ac217726da94fda1ec18f527f51c28ac54ab88a5cc1e14262ab0732f38364a31622813a0879035955d95e599d8a3029af09c1913bd12ae21119a152523285825341f6e999e9c72a10b1faaa9ddaefca4cf95650b7797fa27c2ac7634f9361eacae27bba23d14ca984998821534989e99419c89a001184a20991c389ba99bc425ff25d6217a9c06a5031a252831aac9accca876a03a9251295dae302d0c38e82c731f1413b910cf118696b094b496a612421fb2a1c2943117641aed1c7a9975a2411ca4277f1989a07aa1de264024dfaa15ab01a8cf9ea82a2bafc7282436bc332a9e7819ce0d20960191c6101a071d91e796a1101697b61f499bdd92a80d159ce01f5c9924932d9c6d23cb1b159d49238c9ed01546015393db1dd2316c34ea24b512959360101c94ee986115e31189982796f210c39a1223029e968a0e98f593571d24a05e9ab09b86252220069edc1473a07724d7994f9deb1a4b2c2235f12e2ba0079d4407c2180ca00f1b9c9d501ef59e2f084fa0ce27f4a4881d579f669c6227b1a3c09761a22c2a8fa568aac82911a9522aa11f5ea691a3282c9a34f131f9a20aa2b4081d94d91361946c8d2a8bb6923107c094b21aae99791bae1c0c9af21b92952c0f059a6c206ca590a62321549a8c0c8c93b81ae9a41a34d53461a4291bd7113b0c7a937d949905368ce488a697c50e559764204e9b5e8db9080da14720739d5496d69e042548a22ba44b2571a1a31a8898019eab9da73107352d28c2182a94020f83910b9c2114498b9390289cd910659c9524019fac836a97c9a2802053a1d29ae3a0fa2851a286a17f27b91b3023fa9a70a466967a303e34422d3d21e19f330eac959a18029ab8091d98320b83860497a71c169e60209b1fd8935218ea82d4168b9d5520cea84fa95b18aa906f98389bbc20fca8b834493589a8281e4217980f9b97041c7a9d8d1a839c8118ab8e6c94161a509c591d4d20a99c8a1c3b998a1a70a0b724d0a863a99f185099c495059dfd1ddca80c34aa3531a3bd1cbe169c0c0e9699898b980d193d931e900010bb106a1c3a0ef69a60170da453200aa1701188a07d26f5a4a4a597251c9dea1d0f9cbba003a4e731223570293a1cdb9ded0ffd9484152a9964943a9a6a11d78bcb95771dcd9dbf221822b0192c198c11bd16839dbb1fc7aa28ab849ecd8a769aee9c51231cab1635b53591aae822db0f65107e95171afb9a6717009e74196d9108970d1c41a07b219520422021941e0a601d92a1212661aa23abe4a3dc85b795509ec621afab7a341336d5a7a1225890b206a58ef608be14089de917b2907a15570dbc98308f6a192320011d519f51991f2107a56929ddaa6ba8aaa4dc1e141bce9edd1c1aaa3233373647a1a4244ba11d0f9b939314aa9a8e9a3a999592a60c4e93491b359b8423bc24671cd41cc18d9c105a988d1f7aab68acc5a06e895b98759c372441ac3235fa35b3ab1a25be999f106f9447154c911080e09c00984b0c0d96e41c7ca050208820c324651ca6110b1afaa0bd2664a956ac3ea8859f2307a89a66232fad65347a36eca5bc243e9ba084ea103397a41cc39b06973f9968154292f1161c9f7a1b061bac26369fb595751e7ca474294da9ceaa7ca9f313ca1fde94a02089ac3233c0364ea07b255da3080f00964217f79bfe9bc49c3195148e5801a61b699c86233526521e4e2035156610609cf922d3abe2ac75a4fa8f5d9d9d9d1b25ebac1735503619ace5263f9b4b147c98a518c09b6a1d1ca0ec9bea8ee78d0f1afb951199e521dc24d6246a9002177aa2a626aca55bacdaabbca23411bf94cf2564aeac33ff36e096ac250ba0ee8566121796ac0e251a9499359d23106994841a6a9c141990a0a6272121269b351b95a304275ba15baab2aceca123228a1556241badd0311e37c128ae1d18a3a70c09974114f395ff9c6c9d3199f688720f7a1d589e66227026d52107205a185193fa9d622412ab5bad50a63b0eb79d489a34252eadd734ac3635acc127039ef8113393190f6199d91b0f9a709e8898a79026191917f79b11172e251c26ae18bb1988a30a24c81b4cab72ad4ea45b10419a65288faeb931a7371e246f255ca1698dbe15509734101090761c3a9f7d961b93ed169195401dfda3c424d2254103231a33a16720c72157a713aeaea5d7203b95ff2594accd2f5437e62d76a4279f730c3099d716ed05139b1a9e389c11107f12bd1d139e4a1f19259824fc1ea5170d97a3a05f240ea965ad40a8d30e219b1715e524baac4734053754abba2650a0f7127e8ff78d6399e518108fc69d639dd3959d1ad4186489259e9a254326901c761b7da30c1c76258eaadead49a66d1bca9a952888add22f1238ce27e32371a1f20a370591104a999314141c859ab29d7a92e61326122519b5a1001cd227091c38165299189f552775a52eaefaa74b1ce49c4327b7acdf2d5c370d3005a8ec177014e5984c96ab8a10a4669c8e9c0617328c1b22549b59242728b625661da79bf29c4aa16c1fdea8e8aed2a6dc1cf01086134b274aac0b34643794acb62718a449124e8148980a981c123996c29e329fd38e431b041ee2167a9f13262d26191d88166aa102a02127cca8f7ad34a7bf1c649e0328caaa7e295f38bc299a1b329def0d6a0f078f3d919f9016198510a9a0b9940a13d596131e9d9f209c4f2716218d1737180fa22725680f8cad40aabc16c39e3d2560a8d11fde37cf3011a99a1f4b0eb396cd8f28114b8cb28e0498d6113d97d41f939b7c950a80d09c54201e99f7902f9c7e23bc1bc39da0242a9e64123610f5957d1ca431a8344a2197006894d8108794b2994015aa90ea98be888b0caf99b222da9c1a9cfc13129bdd180c00149b499c0226c81ef7a26323881d9c16b30c7e9e0b1b952cf7354329149fb499ff091a0c129e4f8565155f986b19c8814e9ce425a29d5aa1f49ab69a019a7022b2a0e29b3129d317e6a88f242725219e461533a6451ace2acb365f23a51c01981d0936944114a694448d3b88ef938408a994f11afa997b1bf81c5a9ba51c169538113a9a862067a5e9a63322149bf20b3b94911a25a50a34f63482a5ed1b2710930c41944694e28f7b907a0d00996c103f963e205f9b4294c715a1a1c1202d9cd794ae9d42253aa3d7a5aa2790a13e174796949c4fa188318d351e1d0316ef922610c195609cc5880496f890f99c4f113a9ace247a9cd89d669ce6a15820491c079d9ea0a429daa1b6a45129bd1f109b979844a262940c3087357a21521c35a0380fce96cc19b69b50126299be11968b0298411dbe9ef1201a1f86907117860daf186d9ecc20dfa85fa9b71929818399339c152101a9ad345c35e4a8ee1de417a4104797341c5f9e781b269d9c188e90aa98ab1dbe9fb220cd1ee29afa18dc89311cc5a0d724faa8fea9b6201499e3998d9e1c2136a90334ea3544a77319921a570ded91d99517974818f50def9ab114e4956a203e9c899052994ca459206f9df788dc9e72268ea473a70b2a6ea1d4155499579e9aa4bd319535b7214a9cc292eb105f97af18949a9f8c2b9c9814ca8d0b968e1e4e9fed2203227a1a8719911100171e9fb920c3aa44abfa9d57108f9bf79ce62322ab0a35c735e2aa5e2234147712b8963d1ba69c7619c59f6a1c12954a991e1e62a10b234c203c20039c2d18251d2da2102687aac5abfb9faf1b7a9b019f6e24afab7634403695a9fd1ea117070fcb053010c89b111b2c9d611e5998a099ab1db3a0dd217a184f94729fdb07a01d79a13f271ea90bab3324fb915118c99eaa2011aa72334536fba58295600ccf11db956815e999209b29991592370e0c95871c9b9c9523bd24a71c3a1c329129148e9b91208bab6eac9aa0fa132b97339c3e241fac2135113611ace924189a4813c19520183a986e14a79f2d1656872499131ee3a0b621f92029252b9cb514881c3da21926aca9b0ac16a78c1e5e97c69d952589ac3d34cc36bca9bb205095e10cad0f618c4f94091b0da20d212a99fd98511c76a06420791f522437a4e617071e03a3c127b9a8a8ac77a22223a810eb9d972491ab4033f836b3a803932e9827149498bd18969c079bdf9d7191a48120944f1db29dd9238026ae1e0e204f0b1e16489eeb2300acf5ac6ba43113d19c9b9d1325b8acfe34703666ace426b59b33154298ab1a389d591e29a25d911716fd97d6180697f592c822f726b71ccf9b251d20a29a2514a619ad34ab9a205513d29d5d26f5ac25336b3755a7b91e9f9abb0a370e0101cd97b71eaba20f1d9189e4960f184c9ae212311cf2277ca26b917f1cf8a09124a1a2dcac98aaf7263e9a9d9dc224acaab631a93785a528a2ae1804126a98541526976e9dff9d0298ee112f90661ed69ead22d2260d22d21e470ac60ac09f8b2433ab76ad66a6f71bb89cf8992225c7acb334d736a3ac7227859eea0fda90ae105798751b159f6f9ec71871946218750375915b1b5b281a21569b111b63a02d201294bdac6aad54229d92e29de82644ac4a31173853a6bc1f989c6e07e80eb9084798891db59e009afe155295d51448979017229e822809975697441a889c401d2a1e1fac58ad9527759ecd9dcf23fda806301338c6152aa5ae1ed512bb996215ae0f4a9cf69e4e9afd16da90061f8c9e07207125c324531d5b90c4853da1232422a974ad85a82e1ec19a7a1097241fac1434403743ac552620a0e0123b940f84dd9888193e9bd6a06f18dc942b1acd139218979a67283624b29d0f19fd9e689489212aac55ae2720441a099bac2535aa802f5338cca3191cc09df60de38c4f143c99151b7287f59f7216de92660ac68822153da18127d521f19a0b175989a19bee24c3aa55ae0b25549c3e9d192378a8af2d3b38a0240fa5781ee8121e9704992417c5a3a79c279d711b7e94cf21379d6d24112820256e1ce99d2b9cc3a0571fb9a8d4aef6a60c21f110c519202662aba833a4374faded2772a42d109a91df949a8e1c8a5b95f2a1521239929416e01b2417299c9a27d324899d4118129ddc9da62428aa95aec01d911afb9a94233aa7412b8a38679c27147b991e0fe189e80e0994f9137819e29e0e995093c61192979f1cc6a2d5247d25bf93751292145a9d762416a6d3aef78c00927f97b91d30a34f25833823276ba14819f90e41973c8e40112d90288c81987b123e970020f39bd497b90bcf9db320fc98748fe59b7523731c949b56252c9eda00d6102297721c8031cd345e170982f19362108b96cd9779149a96989706956f10e997f2217c9c749d9316549eb11f3a15fa99f89c7b25921cdba02028ed9b39994a163b9d4a19ea2c3a36df1ca59143967008f6892c9a5b14499601011096e4827493b32065982da1bc0bd79aed1c1d1f4f9ce2935026c61829a051276d9cde98750ebfa07b983c274337ec9dd214ab969c0a2795b31467950b0a458e319481090095bf1baa9a9f1ba91cf49b4f1d159472138d9ab7205ea5f2a60823009c048ba2942f1b4ea5fd330c3579a61c1cde0ff40c5194d192e2927e8f2211c39a84124395fe1f0a9cfc953519a9a200226d9b5594949cbc24d2a283a6c528bca266141994cc9816a25d31ed3599a4b1183890440bbd901c9c87021f98ff8a7a9c8b14db946d22b599de9ebc9831a2882394959d9c969a2627389c72a4422b60a16e94b090b39e399ae32d6036b2a1e194fb99471012987e1a5c9c2a16b49a3312388c6098f01d959f37217a1e4b8a4f1897113a1a5e9f5721f2a861a9d71b6d00ca9ab19c6b21fca8a634673536a9071ee9176812d298ef1cb19ff31c569e2919e492e799691fffa0e121971d4b9a301902180c1d11a1c324f8a846aa7523d299e19df99f1a2209a9eb331b3692a9971b441d1c0d599293951a958c144e13cd9d8318d2940a202a9c4597019569a4f322bd9dd092a29c852501a4fca71b2b33a471106a97039bbaa32d312c3685a5739693149e11eb9723190d9cfa10959c0b13f38c2797b31f4da07123f5211a18341b6513271860a08121deaa45ab159c3013919cab9cec23f6aa0435ce352eabf321bc15fa14a499d21c769e3b1dbda0d11c99976a9a8120baa20624cd1f181e909a0a1d191d29a3f62599aafaab3681f31cc0a0ec9fcc2406ab7134593666ab231e5c1e231411955618f29ddd1d4a9d591a1098069b861f7ea00a212f19ca9fc914a51a481ca9a0c225c2a8faaae4275d9eda9dea9ed620f4a845336c36dfa9b90a651e9513f49641159e9af2999099b290d50ea497121eba9dda23fa2469197a1ca6915716119ed521ccab76aca09e9616c698169c4b24fdab153522365cace1243c994316869aa71cfd9c901c7aa14a1d0d98a89a3420dca15f226721f8236e9f5e1d3e1d99a24625d0a9c1ac52a4472214a117a0f72405ab2034f63654ac6b20fd1dea1441911c17d89cb91d0aa16820409c1d9c0c1d4c9f04208b21bb18aba03520671eafa08125c1a8ccacf921731d42a175a0f42168a942330d373cacbc1dcf1f4d16c299f118019c9f9c559dae0f91904299b22079a14b24d0276a096a20e30ce218b5a16e2672ac38ad299f11987b9c979cd524beac07357d36f9ace227d99c0c19819ba01db99d431deda2d91e94964d9c511c4e9f2c18bb24d8252ca2dc1b611faca12d27b4a874adeda7e12407a05a9f7e2209ab1b33983757ace821b01a2e13af8a4b14b598e61a0ea14f20109bb099f1153598418e8d2485204ea2f31ee01c249d6a221ea5d3ad1f9ab322c9a0949ea01f0ea81c32bd37bbaca91e731e2517529aaf15c6939f9f019d858f740b6a99fb2051a1ab232328971d051f83860d16b5a1062616acabad10a48f181e9c60978c2480acb234ed3663ad462801a0271807995b150596171913a3c81cab93aa9a2c1eed9cba142b243e2815a14b1bfe1a47a0112468a5bfad44ab7e261ea1bb9b0f2282a9ca312638aeac3f24918c63136c8e631323983b1c9ba1271fde994498f4108f8da299572304259ea25d1e181b1d998a1ea09fd9ada8a693249ba03d9d941de3a5e430263886ac891e121dce15b9990a1498114d9e019eae9833196598ff1fa69f152159261624631a2b970114eda02424f3a968ad63a8cb21139cac10372304ab04346037fdac8426ce9f8b16179837058889d8164ca13798031a44986d1c6097d80fec20e428229a29987d15559c331d699f48ad39ad9d27ef9f8a947c1fe9a66230693849ac3122b1939716b69570145798a01c82a0a5180791a0980116d78d6d9a791fd62638a0ce1981180595d91b62174aad50aa0625139f9b9ac7196fa4782f5b38cfab531ea61add13d39af60e6d1234a42e96fb9c571bc99b4223f9a07b2530284e248717b19d838e34a2e520f4a9c1aecfa51523770e331668261fab0134a4372eae02287aa4c3159c982892121a0d9a25a01b9dcb1c42985c1cfd947995422238288884f79c4d161b9d9a1d478d0aadf9acf1263a9e0f82011f31a61b2f7f3807acd223849cba1504961d12cb910118aa9a349a2b140997471767923f98f60aed25d013df923415fc931919291fcbaa6dacc922d49a7a9553147fa1d92b803830a84d1c6b13f60e3e97448f0f1107948100fc9877124297f81fe59b0197df81319eb3208098118ef39b6f23721c3a175525d59d408c7811ae97741c8131cd34a49bba0b4a906310e597fd993f1630964199351570108896ef21ee9c3c9d8d91e89bb91f0d95d097739c78254c19ee1c1f28569ea9976d14749d911ceb2c3936d6a0951687963e07d191769cb7102197ca98581efb07a2849d202493c6a0e4144b9d771e8f97849a4198502672983c9e7f27929bc40ae21446a1e518392744372da0340d00979b0a00957213a294de0f048b159480092795bf1b8d9a2f1b1c1c009c4f1d3194b314aa9ab7204ea579a60823f49b458e67959f1b5ea5fd330c35f2a6a91c0b0af40c439556941994389066146d9b84125194fe1f949ccc98b218bca20022c39ad2920a9cbc2417a299a4c528a9a22211e192fc95d2a25d31ed3583a635197e8f200bc894a59c50900a9a29949696fc14a3906a22829abd9ea89482a1c923af9c229ca3992327119acba14c2b4fa28688fa04ed9e219ce12d62367ea491983798471060983a1ab19ce917ca9a9711388c1298f01d5e9f6b21071e6d004f1834127e1a959f5721fca836a9d71b4a8ab49a5c9c3721f2a8a634673561a97a1e2a166812e7990c1df99f441de19d0218e492d298691f11a11a22971bd29930192919ef1cffa0c32409a992a975234b9a569eb19fe121f8a8eb331b3646aa971df31c160dca94e09260978614a910ca9d9218549209209f9c0a9b5a9636a4fd22d99d9a95289c8425b7a388a51d2b6ca485131095549700a42c312c36ffa7e7947f149e1127972718ab9cbc15919c6513f38ceb97b31f60a0ec23f3213013341b0c1323194da08121f6aa2eab159c1a18959c0d9c7123deaa0435ce3545abf521fa10fa146a9a191dec9f5c1ec0a00a1d9997a499812029a3cc24231ef31c909ad11cd21cbaa2f62506ab66ab3681181ebda0769e062499aa71345936faabcd1f3b1d2014049b461ce89e641ed89da01a0d980d95851fa8a0d520f40a609ed714541a53187ea0c225f4a8e0a9e427cd9f489df09d0921c2a845336c36faaa3219db1d9513a4975716169c3c99c698a691d40ef496121e119e4b24e12496167a1cb2904115ba9dd521fdab5caca09e691990999e9ada23ccab1535223676acfa24f2994316a89a3e1d17a0fd1d14a15e1d0d98869a342099a2f7246b2047226e9f4a1da71cdca1462505ab54ac52a4f8237aa1fd9c5f22d0a92034f636c1ac6721901ce9141d9c651e73a0cc1f41a13420409c41910b1dafa0f321be1d711daaa067201b174b9f802567a93cacf921b81809a1d69c0320c1a841330d37ccac8c21b61d4d164299e218979cd99c7b9ce30c9190c299b220b5a1d524e22711986a20ae0ff11879a16e26beacf9ac299f6a09559d019c4b2472ac07357d3638add0279f9c0c194d9c611f5a9fb01a07a0dc1b9496819b511caca17e22e821e1242ca2d91ea01d4e9f2d2709ab57aceda7d825eda2b99d2c18b4a81b33983774adbb24431d2e13af99e01c929e701ec7a0ee1e0b9bb68af115249d9f1fad1eb1224ba24d204c14359869220ea8bbac169a83200ca1b598538e1da51c32bd37d3ad8d24e31a25176a990d16609701a01e9c8386740b529afb20b5a18c2446288f18051f858faf1551a1062680ac63ad10a4971d019dc693ab2316acb234ed36abad23289f9f2718aa9afe1abb9b918c1ea14b1bab9307992c1e47a00f223f247e2615a1c81c5b15ed9c112482a9aeac44ab3e2813a30596ba1468a5ca312638bfad2b24171963134498171b3c9d111d9aa05c1edd996c8ef4101d99941d8a1e93249da2261f63138e8d8a1ee3a586aca8a604259ba12298a299a09fe4302638d9ad57233a1cce1565980114ac10ce9f139c2b973319b999ff1feda037238426cb21631aae980a14a69f242404abfdac63a81624019e98111521f3a90434603768ad59264d9e8b1644987d158a94b193ef9f2998031a17986d1c559c7c1f31229d27229a379837056097331de9a649ac39ade4284ca18889d80f699f6230693848adec20d8169616a09881189a9aa61a129fce190691b69501160595c719541e062538a0a4187014d68dd91b6fa4cfab50aad62682a057986d9a6317782f5b384aad7a1fa01cdd13c99b838e33167aa4770eb19d571bd39a422334a26826022815238717fb9cf60ef9a0e5201fab2eaecfa54e242e966d127b25f4a90134a437c1ae302834a4c31542984d160f82849c3a9ef79ccb1c9c985c1c1b9d011fd223f12688841b9d2892fd949a1d31a607acf9ac382825a0121a7995478d1b2f7f380aad42220d9ab915089734157a956b13d49ae0922c1403964717fc9352144d1cc922d113349a1c12679219197fa130a86daced25a99aca913f98291fd92b8038cbaaf80a01184b0e3d97f7903610689464121e99d611b396d41f2f9cf59597002a9e54200498cd8f939b7e237d1c4a21a024d09cb28e28117c95bc1ba431a834c39d0a804b8cd810af99149bb30cb4999c160c008b0c8794b222499c7e9e149f881ddd18be88b299da9c02260b1b43296323129bea9840151a9cc81e952cf735f7a2fc13aa90ff094e9cb2a046150198219e7022c8811a0ce425e29b33a6a51c2725019a6b19129ea29d3129451a5f238f24b69a5f984f855aa1d317ce2acb36e6a8f49a65151d09a99438113b942710f20b169584083694f11a3a9a911aed1b149ba51cef934114fa99862025a582a533225a9b3b88a6947b1b67a50a34f634e9a6f81c448d930c3f96d7944796ef923e172d9c6c1041943e20ae9d949c031690a1c120009946945f9b42254fa11e1daa27a1a17a0de28f42943aa388318d35d7a5c7157b9026103a9a079d979835a0109b491c4f11c195ce249ea044a2521cbd1f5820f99c609c7a9ca42962947a215129e6a1f890c588d89ddaa10c308735b6a4669c0496380f0298af18339ce4178399860d968bce96411d6d9e1521ee1d29817117be11cc19be9ecc2001a9e4a8b71986906299b69bf120dfa8ad345c355fa91a1f5012a410aa98311c8d9e921ae399dc898e904797ab1dc5a01c2173191499fa189c18341cbe9fd72436a944a7b620e29a269d5f9eb220faa80334ea35fea9cd1e781b570de495f7885499c292d4156f9db114ed916a20dc9e579e4a9c6ea15920ef9ad9953e9c72269aa4b7210b2a4ca4f50d179789908ea4bd31953573a752994818eb100b960017f79c34148f9b9111ca8d5f978e1e1e9fe6235e22571087199814af184e9fb92022abe2aafa9d7a1a2b9c949aed22c3aa0a35c73544ab03229f8c77124a99251d019fa1177a9b2d181295b8961e1e2da26e24fd1eaf1b039c6a1c3d1b62a11026afab95a9fb9f3c20c59fa69c0b2387aa76344036c5ab4c207619070fa099a01dc99e600c5118db075998cb05ab1d79a1aa208295fb91729f611e3010b3a03f2711aafba533244f942c9dc89bdd211ea9723345360bab7a18111bcf110c952914339c189a2b973291370edb95871c8e9b3e24e924fa133a1c159268159b9c91201fac11ac9aa0a71c2999e99995238bab213511366eacbd24209b48132499881cc69d50955e97b5145687c195131e3da29525bb208c1e2b9c2d162018e3a0192689acbca916a72925a79f3a98b621aca93d34cc36b0acf9206e14e10cfd98071eeb9d2e98a810e6172a99ad0f511c03a397240393222337a40d21618c76a0c12791abb3a877a252240da24f946420b9a84033f836a8ac791f091b271420941e169b9db59bd19c4f0ba48194984f1d489e1325e42631130e207191bd18b29deb23b8ac66ac6ba4ae1edf9d969cd92300acfe347036f5ac8026079b3315fd97251dd29d9f9a5513cf9b17164298d61820a25d26b91e9a20b71c5d91ab1a06979a25f5ac55a734abf72629a2389df59214a625336b3719adc822591ebb0ae4967f1c9d9dae183e9a6b919189370e0f18f8a0c22428a2f7267ca20f1d01014c9a9124acaa85a598aaf227aba2cd97e212a1a2b631a937dcac311cb71e04122f90c60af899859eb89c470aee116a98661ec09f22257227f71bd21e02985415d69e8b24c7aca3ac66a60d22ff9d2697ad2233abb334d73676add2266e9dea0f7194111be29d989c9d92569bc718da90621863a0e826bc1f54221a216f9eae1075032d2044ac53a66aad5b28159f5798759112944a311738bdac5b1b751b6e075295441acd9dae1e759e5697fe15e80ed514889ccf232aa595270997009ab9084897401dfda8c61558ad8228b59e479890172a1e063013381fac229e891dd512da90c4857a1020a0c19a5b90fd16bb99061f3da1972455262e1e531d4e9a62158c9e23241fac43ac85a8c324f69eae0f072022a91434403774ad71254a9ce012dc940f19099bc09d441ab29d6f183b942b1afd9eac25191c27203624d6a00f84cd13689435aacca355ae67283e9bdd9892188921802f53382aac979a8819f60dde920b173e9d781e549cf19a7216e38c660a598919230fa50b25d521f59f4f14c688a19b78a8a02455ae812772873c992215ee24af2d3b38c3aa3da1151be8127e942b9cc51972a4f110e99d711b1e97cf21c3a02026ed270c216e1c279d0499379d571f62ab4fadf6a62025a79c24176d24b9a8a833a437d4ae1128c5a32d1039924118fb9a7b99911a899d52129a919416129d94232714c01dd324f2a1df94e01bdc9d3aa7679c95ae9a275b959a8e2417a624412b8a3828aa299c1c8a1e0f509375127f9748190092bf930e99e189c6119214b91d6ba1f78c7d25e29ee80e92975a9d30a32327d3aed524781909949f1c76244f25833816a6c6a2f913ce0d1697249346019593d0155c99a1102096b61f2d9c5393b5128c9ee01fe7960191499b6d23db1dea244923159c1d91c610dd92cb1bd2316c34159da80d1a076010c39a5e9ad799079d772424a0f2101c941223b09b4f9d2ba073a0571d2796ee98029e8625eb1af12edc14f59389986115968a22204b2c2235069e0e98e31144074fa0c097a11f0aa2522ab1a32f08c218ce2761a25ea6f9a211a96227f59e0ca0f4a42c2a91a3f131c829669c501e0f1b881d8fa5282c9a3468aa579f9c9db408c0942c0f8c93d7118c0c929531071d94b21a059ab81a291b549af21bb692d913ae996c20e9a461a423210c9a2a8b6194791b6ca51a34d53490a6ae1c6c8d3b0c5597549688982a94a31a739dc50e7a936420d69e019ec21871a14720a6977d944e9b0425ab9d2d284b250da1e48899055e8d48a2a73107352ba4b908368c020f659cd29afa9ae19f302353a1d91083919524e3a070a43d21b91b8020289c0b9c019ffa286696422d7f27c9a293902114ac8351a27a303e3486a16a97498b330e0497d416389b42176f98ea828386ac95a71c8b9dbc20281eaa905218320b9a18169e5520fca889a85b18d8931d98029a6020cea8b83449354fa99b1fb809980f6c948a1a059dbe16c4953b99ab8e9b97161a70a0fd1dbd1c50998a1c8118041c509cb724dca831a39f18a99c839c7a9d591dd0a80c34aa3563a94d208d1a9c0cbb1070110f9cdb9dea1d0aa100100e966a1c88a0bba03a1c1c9d53201e9099893a0e7d2603a4702997250da43d938b98f69af5a4e7312235a4a560170d19ed0fcb95bd16ee9cdb0f769a8c11d78bfd94771d839d5123e822cd8a2c196a118415cd9dbb1f1cab91aa849eb0193a9a2a99bf22c7aa1635b53528ab1822649465100897601d509e5890b7951e0a6d917e950d1c92a1c621a122dc8521947419171a41a02126afabd5a7e4a34220009efb9a7b2161aa7a34133623ab95206717b206570d1f21ce9e4ba1141b51997a15a58ebc9807a5dd1ca424dc1e519fb290f608308f69291aaa47a1aaa4011de917be146a19ddaa323337366ba82320089d1d0f4e939c10759cbe995b98c18da60c9b93491b5a9837241a256e89d41c95929314359b8d1f41acb3abc5a0671c3a99aa9a84237aab3235fa3568acbc248e9a9f100d960b1aa89a3e9b2307a6114b0c6f94e41cfaa06623bc24859f651c009847157ca0bd262fadeca53ea8c324e09c4c91502064a965347a3656ac88201080a0844292751ede945da3ca1fb5956815ea10f1167ca4a0207b25f313369f3f9933971c9f742989ac4ea07ca9ac260697a41c7a1b4da93233c036ceaa061bc39b080f580166109d9d3f9b5d9d3515148e0096a61b609c1b25e526fa8f4e2031954217699cf922ebac19ac75a4521ec49cf79b8623d3ab17355036e2ac3526fe9b4b14e78d0217bf940ba034116a90ea8e7c980f1a7aa2cf25ac25bca2d624ec9ba518fb95a62664aee096daabdc241ca0c09b1199aca5ac33ff365bace5216a1dee856994351b8a1518a32322269b23106612841a95a35624ae1deca12121359d17966a9c04271badc128b2aca6279499ac0e14195ba1d0311e375baa90a0251aa70c720f5193489a039eb79d5a18f68809977a1dfa9d3425c1273b0e072031994114589e62242ead35ac50a6d5216c9df395662212abd734ac365bad7026ff9cf811a790bb19419a5ca15b10ae1888983393261988a365286f254ea41c26709e190f19170a248fae1e2472ad2e250f9a6199f79bc81bb931a7374cab1117d91b698d1b93231a3b95279fd72041037d96be15ed1633a1ff2576a4aea5d2253a9f50979195672094ace62d13aec424761c3410401dc721cd2f543757a7fda31090730c7f120d97171550a0219ba51711103099bd1da3a0e524ba26d30efc1e389cd716139e5f24baac54ab40a898241a9eed054a1f0ea94734053765ad1925139bf712d395761bca9a71a16d1b901c639d7e8f9d1a7da39528e32349a64326c69df78dd4180c1c88adce27dead9a25108f639964897625d22f12388eaa259ee518f20a7a923816e49cec174b1c091cb29d3705e6135299432705a8faa7d227859a91102612189fb7ac0d302eae001c141c4a9925195527df2d5c3775a5b5a193147014328cf29c861318a4f010a79b0617e5981b224aa14b27b627dc1c661d8e9c4c96549b6c1f4aac94acd2a6b625669cab8a5924dea80b346437e8ae272810a44912d38e8816649e329dbf1c191d329f4e81431b6aa103289a1b34a72d26c29e4898041e02a0caaabc29f7ad132639960a98e21621277e295f38cca87a9f1c12ef0db9948d17c39e9a1fbc161621a9a06a0f0a1337183d2511a940aa4f278510078fd5960fa260a8cf308cad209c16193d91131e2725d11fde37680f9d9f9f90c50d209797927889808eb1159d99710f9995a01f1f9da50bb1184b9f9d1f1f961a91ac9a1b23e51f4d26aa21499b508f18118d8d811c13322534e198cc0e0f0b7a0e33999498999ca29adc21f59f08103492b221899d13163521a4a58d21ea969b97709ca023f2128e303697449eed971716d418c422b72c3934a51ff9944f153403c499b11acd9cc422b616799f0502b90c652297a289a01424d9a77a244698b09755a022261ca8ab34ce289d9f9714b714d51a9b99f1242f32d7a2200f0d934308a7943308e490ac12f90a7895d0045893f619e399611a511b169a301ba6928d11bc9844206fa437a3502073992c89bf939f1b5da52a34b13420a6731cb18f6f0bbc966d988399c88c6d18e89c6e0cf0920a20b89f4f9c5a1ff2a208207a9526944f9bbd233b192d2a032399a0ef91b709ef08899fd9317b340ba0e90a3608b00ed4990e9501a1d21b1021d0a0650a01952e220ca1a0a2c02536a40b2062983096559f4126cc1cca303623cda17399740e231d69163d303c329e1df396bf137d0c0b960711f8987e163098e98deb8233942f1cea9c3a200a1f9896fc1871859117099d341fc8a846a88617ec94219536990320bba8c4342f3525a9881f6b8dbb0e0e857c18b59bd4189799bb9bf08cb897f41168a01a180820559b921ffc167b1b1f91fd23c2a7319d669a6d9eaf9bb29cce1589a819345f35aaa83021031a0a10f5195d18c39d00993e8483a12590d799a698c8a286a25124049e0c236918c01a071feb25e49e112c0097c8a4299c539db1a024a51832a7349fa0b9208c1d040e67952615ac9c5905fe990e0ef88669930a1d449cb022b8237196d41a5804d212c49cc41d06ab43aad99ec21823987d987a22aeaa23359c35fdaaf6214196660f2494b41d04a06e1cd29e0612648cbf95b71656a0ca194325349dc21ca513261a189d5b25f3aacda5e6a46f1c589caa99291efba98834d13548aa6c21c215390e961aaf210f9f5b9c0ba1e49d7c18df9802a1a5a5c89f3428f620c422b79bcd1bcf217b29ffa8031e5ba941a10310a69976a264ab5133da3595a40126298eec0c7693130f509da798ff98f2888201748fe61a849229245825ce96c21d639212103d9abe1d46ac76ab45a02d1af1979199672382ab4a35da3548acad249f9b6c0f60934318bb9e3f1d2ca0341cf8874694051c669bbe1ab82787a4da20c49ac91441a0e0252eadbca3c9a7d222ec989d82ef1e08a993342136d6ab342084925e096f0e141cd49d0019d2a19a1c9f10b890800526a0d8a1952973a483218c9eb600479c1729e1ac4f240eaa95219013d2177e9c53a898332f3634a9441f098d7e0b1f0bd00b999e1099bd9d9916568f7094991a0099fb24122751985a20f4960815d89add21f8ac09ac03a37f1c9e9a679b9623edab3d352636c8ac04268d9c5812d0107c971908049721a1551f8a98c497a41bbb9f51207029b7a6cd24079ce514719ca0270eaf3a1c8daa57224f9a5795009340a62f34893689ab36200318180dd28c7399ad1e229d24a22223f29bfc8ee81c889e38a1882ad8a9912314984f8fab9c2e27bfae862c1cab03208b177f949b862d1678323f3612a854a04118240d5213ad96ff9b519c8f9e2d1b5e9385968a1ce09b14250528a699fb1f0499b214789db5235dad0eac17a5f720989c8498ea224eab0e3572363fad3126c09cca13e10fbf9932192f9fdfa1ed21e49df9956b1c11a31426c92902a879250d982183540be22625b0022762ac7121979882976f9e7191d432083781aa1b1cdb1a590b278afd98d02052a221a3bd25159fc508231a60a0391eff291aac4b2220196e913113fd2073af533066abd69cd21a76961418cc25a5302a363f9fefa003918b0fd013e698310b4f9f0b9bf61907916799151d6d9fe92412275a9b341f4e9b2318429d26241badc0aa2ba7ec23439de690252089a99534b53630ade324119b6d13b2843199bb18d49c85a13d233da0f893c41d8ea43f286728c3a8ff243b9305954e15ca2416b04c2a96ac33238f927795079d6f252d31793799aab49af9180306318eda94cc1e13a088a57726d9a06214ec16fda11426622854abac213c1ef294621dec182ab04a3128ac0fa2e4190598eb11f527732f3836f51c3e9e96978790bd129e9c7797bba2650b6e9919133595ae2172a1fa27ae27cf95341ff09c5d95119a0b1fc2ac1eacfca45825029ae5991525aaa97634f936ddae2328d8a33d1401187a9c3a92141376a0d62189a0ca984a2006a55129731fcca8ff25419c4998991c031a5daee82cc9acc4259e998215389b2528302d0c3831aaa99b3498b910c2947f19cf9e781901a8a427b2a1cf11311789a0a82a2a9e15ab411c421f8696641a7aa12bafbc33dfaa75a2a612b094ed1cde26c728243640247a99b496290dde967792da8beb10130fed98f90df894561fd19dd216b11bce9f551f33951192589a4f22e7216c263f21b59a3f904d109505e11c6232bd33140cb711230df50cc998b39bbf999b218c9e049a740cd48e97201ca10119f72a7ca62120c593959655984b21220fe62f0d184ca0ba932417751c0525f42d9e32f6241a126a129c00c9957894e4a1372a94a2fe9c33800c044920909670a068320ca5459db591bf9300a2381deba736308c258ba41798071cb0211a20b02b952d5326722598934e077e95ae01668914140684ea95c804a1920e1a099a881a661b7f9a071b2f92da108b981a20cfa35da2e21fe99899825892321b3ea53b348d34b9a51c1c1e902c0a0d977c9ae69475190798309beb0adc91711e89a07308a522f1a2981e1b94ec92ad9a1e2195229229bd20079f2a92c504381217973d32fe33cf9605115109870d99999b9dcea10a280ca21f9e1f0af293da1f89a0899f142dc9a57a1cf6944d99479ffb23ff22032e0c20aea1cd9a1e19d11e67244c301b315a25fc1d3d13bf0baa940b9024958d151698379072024d932a1b1a9c811f941fff986919338ba314089cfd1d82a817a87017899674919c97b11fb6a8d2341435fba8491fe791c10c5b80f7901398ea1cfa9c3d99ca85d9943d15f39f7d12a620c39e071f1711d9171289e42007a50296779abd9c48970b999415f7a73834023529a83620b4143a0d29148a97e29ebb21b6a0259e408c3c95290ffca153a1fb25eda21b21bf143b158c18462164205f2b139f21a23498c3976b9cc5a08c322f34179d8a1e1719280c8a94aa0b129c600ca39a110e71831391b01c7c991f229d2387983f1c808c710e219b9619b2aa15aa6c9da614ea95db97092282aa33357d35d4aac7214f96d70c1593bf1bf7a0172216a2581846005c930d17309d31938f2533a18e1eac805717cc9ae52196a914a510a3b5163298c796e61c2da9a5347835c0a9be207609320d6915fa1ccba15b24bea44f97a40a7095899cf4a061a2f42656a05c236b0cfc181d1dfe2470a6f82462a618a08699be98019eb5a8e7332f35cfa617241e16a309e3937209319e2b98a499ba8e7d019a8d1c1b370e412459255295d51d9092a10d2198c41a31ac76abcf9d8e1772941e9a5c237eab5d35bb3529ac5224a29bdd0a9190b019e8a29f245ba4cf1dcd05a1912e182f18ad9b5d2803a5d220ea986414439e642376ac76a516a5b81e3f947188121efda8cb34c3350babb2209696e9080110021b44a6b8297aa98a22a9901191b094d11db3a6a22af4a68822aa945e12129b2226e7ab112242a6f7945195480d689d4ca512348d3581a87d1e65147281979104174ca0409ae89a79124d8feb90e919f2940925c126e398d11e7d96c1145099f220cbac22ac4c9e77196295239ceb2305ac5d35f435a0ac5825049d8e0df312139440a0a1232ea5d1201897789641179419b39de6295ea66e220599f017a29e5a2621ae75a2c0a7842027986e93a61943a89f341a369aabd420b48c350cbc14d49ddca18f2a34ac4227769c29915f170320c4a93e2d7fa8a01c30185089d6989c2725ae3f280ca6df9f5d176d90979cfe114233a835e4a4759bbb105d05cd140a972a9df798829e4d1b3992ac95a81b969937258b277f9be71ea998fa120a9a85213bad20acada2861ec7997e9a9f23ddab50352a36f3accf25b69c7386f718489e7c98c021a5a607237e9c7e94cf17070c3818e82a8da641248198b011289cdb2701b0cc1d00aa941fdf98e684fb9c90a43d34703630ab25212b15be103c155aa26721522937adc5287b9edd916819ff1977aaa72e3da87b9ca41ca78f371bb3262bb0102d5da635a40719db97bc9b7e240c3287357e19819ca58814089312c098fb953a9d0d9c971bdc969f96ce1b8c9ced240d271b9dd41d06982e150e9941210fad0aabe7a4a6212c9ca096c12042aafa344f36d5acb024419afe8c901b41a1681be120bda65424559f4995081b2e9a3121ad294fa6692394960710b09c83275bb0cb26d1aa8622b89a1411bf9df5107633c53610aca51e9a16c611fb0e18a4222618277bad9c29cfa09d053c1d150d35a9162f39a587a20a207b97d71b932641b16d2ecda8c1a3fe141199f099bd266f31bf35ba1d8d9c3910a38ca714cf99bc9e29a0c49a130af48f6c941a21f8a03b288a27309931204d98a0995594881ffaac27acb9a24d23469e309d762699ab0535773667ae36283ba2c295321e8ea1021a232162a649244ba021943d1f87a20627ce1ea7a3ab24f39d74092d991b24f6ae442c32accc26b49e560c2a16052115314a3779ac811e439b6411d31527a2fb26372096aded2a16a2858e1f1e2aa32e18832dd5a1a8a5a11e2996141ca724fcb13e32e6a8f9a03e18c799e48a9e28cb2dc7352b1c9d9d0512b00c4397bc929c0e1414f2904a98790df6943b1fcd9e251b611cb99f4d1ffe949f90919acc211b247e258021899a1691170f9810c81cbb323a33c1194314b00dcb0ba3982d9d1a1c1724dea0db97a20be08e841f65a1c91f33295fa4e61d058a7796689b6d22db24522c9220149f9a948717d91bd4256030be31ae25e2183c156b070098aba1b69ecb2dcc9dd79fcd0119107a216ca6c09572303fa45b9fab92c68f7181941ef511a52ea99ad5a2b793381964237a2a0529c12c1c2b53220115ab063995f48a2b10ad118485a9951606a3922e1a6e9acd1a691b559a6e1ab092580b2698ad1fbea265a2ae1fbb98d10ca7903c1b35a550346d346ca50d1c4792e00876983b9c6117581c4a9c6c99300988909f1d49a1501e122215a2991dd1901d92859b641ef8254928c91de59cd6926b01da150a18b3323f336517e1155d02a208c49c22a1f0200a29cba26f9e1207c48d081c1ea2db1fb729d5a3611828923c95629f991dfe25432a3d1d8d9ffd96e9146e205527cd3027319027132163110b09ee9233954d8d6715d99811911a071191641aad9b7f1fba1f7f9a301aa58f551086990e1c31a814a84519369801039b95081fb3a8e234f934cda8161fce948f08478ea49cff17ae1d6e9e6b93a3037f8f071add9fea1b012035a0ab1cf586580f9093ca199ea09a9963940498618e0993ea1a14a76134a3345da7751daa8cbe0512957ca03e17ad2384a2729810032484f71afda1211cb924e2a37b1cd10664890f98cb992e27de29b49f1c9c5c8d8c083f16f396df326c33ae98151a300fc209fd93da939899e093c198e28dbd01588ecf1c689877223e232c98941cf28b528933986b8b5caa28aaad9af68dc393da97a02170aa44355f358eaa87219895260a27083498ef9aa9200da15217290a9390f819d09d051c5623eca0d21cda8f590f4795cc1490a783a5e19ddb0c2c8d6692351dada8ce3411350ea9bd1e489200060a86889e18994b25d7a4b1184f0997887d17169fa6055f24b3a3511dad83a502af816b9a219133248da1bd84558d078fe11a79a5253479341aa68e1dd38f620025962c0e859e039cb2942e94588bbe88921b0d147d24f5247f0c991c4a8a9b0917928917fcab95abae967510ca8ddb9a332398ab71359435f0abcb23ac9b310d198d48107f9fc6217ca15e198e0e40920e183b96451b75250ba2fd1d7e953211a694be164baa40a8a7a09419b5892594f31e65a90e35603536aa4d206096e1029a89621ba5a64c2ae0a89120180c6c839d97e41a20a3342895a52e20b68c5e016c95a01987a6a616b3a2ee84bb901b89a90b10a55c34d43409a7dc1da3925691f49b4221dfa2a9a0d61f139cfc8fd293ec935d8d482482248283c512f4968e1b65163d2432aceaabec21531a001a839e252211ac68359c3548ac95221d9e0d0f8e85811805a0ba20b8a0281b4c0cd1962f95c494c40d74260da3a01aee9823192715bc22c8ab45a85d9f2c20f8117998fd1c11aa0c35973556ab2920ba989f890312f91f6ca9c82ccfabda2466957506e39c40249da84f2b2ca7df20de0dcb064c9b6b22edaae7170ea56196788f7906799afaa252342735d9a6951c7c90080e9f8c15184e9f849c3990fe10dc817a984318269b7e253a26969bc31a259934163c141420cbac53ac5291781c0f0c899cd42332ac8a35d83597ac9b24e29cd2854c16e7987c9d921e78a2771e4096bf93410a9e0dae1f6c2821a31b1f3f98091518931b234ead51a87da4c11f559304950b1b52a90535d13584ab87218896a991e218188909a9a42d28adc127829dc20fa49e32285eab032ddca71220ab15450a4d9d21267faed22710a7369c5412041124a0b01331344d354fa7051c9a0cdd8ece142b971a9bf199ca9a5418dd93d294181ba79b65252e26499c981c9f953f8c6c172517a5ac01ac78a0931efa988099172255ab6c35dd3549aceb23e998e791a619cb9eac90411ceca2ae20069c6a8e5c19580e06229d2891a3b620a4962e0e6b9a852105ae37a7bea6e820b89b698b3519cfa7dc34ff35b4abb521da8f248ec814b19ee2a5652c34ad04299fa11015f69c1c290bac582e3ea64118a919b2149ca29028a2b0482a47aa741946087513e29e6c1f0034b53560a8f21a8b15829912182d9c689f759da4943111c995a3155f1db39f15285e27b5a05a20ce92009e9e19732161adc7ac3f19271de99bf19ef02723adaa350f36d7ad4b285da1aa997d2070a1cc1c2517cea17f22609c119b811e7da00324132566a4a320329a53988f1cd308c3acf69801a80925c99fac9a7d2162a8a634e53581acba25f79f06145a9ff71ce717dc204aa94829e3a303180a10371e2caaa02e59a9f0185c99c816529f282a22b26a3136aee4238599d61b43a1a3285a310836b4a74a1b890c790d4a98f29014149c0ebc924397b00cfe944d1fb99f611c251bcd9e3b1ff6941691899a80217e251b24cc21919a9f90b00d4314c1193a33bb32c81c9810170fa20bdb97dea017241a1c2d9da398cb0b058ae61d5fa43329c91f65a1841fe08e9a94149f9220522cdb246d22689b77963c15e218ae25be316030d425d91b8717cd01d79fcc9dcb2db69eaba100986b07ab925b9f3fa47230c0956ca67a211910b793d5a2a99aa52ef511941e7181c68f011553221c2bc12c05297a2a642338191606a9958485ad112b10f48a3995ab06b0926e1a559a691bcd1a6e9a2e1aa392d10cbb98ae1f65a2bea2ad1f2698580b47920d1c6ca56d34503435a53c1ba79030096c994a9c581c61173b9c7698e008d190991d15a21222501e49a19f1d8890d692e59cc91d4928f825641e859b1d925d02e11565173f33b3320a18da156b0112076f9ecba20a29f02022a1c49ca20828926118d5a3b729db1f1ea2081cc48dfd968d9f3d1d432afe25991d629f3c956311132190272731cd3055276e20e9141a071191d99867154d8d3395ee920b09a58f301a7f9aba1f7f1fad9b641a119101033698451914a831a80e1c86995510ce94161fcda8f934e234b3a8081f9b95a3036b936e9eae1dff17a49c478e8f08f586ab1c35a00120ea1bdd9f071a7f8f618e049863949a999ea0ca199093580faa8c751d5da7a334613414a7ea1a09931003729884a2ad233e177ca01295be05d1067b1ce2a3b924211cfda1f71a24845c8d1c9cb49fde292e27cb990f986489300f151aae986c33df32f3963f168c08bd01e28dc198e0939899da93fd93c209f28b941c2c983e2377226898cf1c588ec393f68dad9a28aa5caa6b8b33985289989587218eaa5f35443570aaa021da97290a52170da1a920ef9a34982708260ada8fd21ceca05623051cd09df81993902c8ddb0ce19d83a590a7cc144795590f4892bd1e0ea91135ce34ada8351d66924f09b118d7a44b251899889e0a860006ad83511db3a35f24a605169f7d179788558dbd848da1332421916b9aaf81a502d38f8e1d1aa67934253479a5e11a078f588b2e94b294039c859e2c0e259662004a8a991c7f0cf5247d240d14921bbe88ca8d7510ae9695abfcab891717929b09ac9bcb23f0ab9435713598ab3323db9a8e0e5e197ca1c6217f9f4810198d310d7e95fd1d0ba27525451b3b960e184092b5899419a7a040a84baabe16a694321160964d2036aa60350e3565a9f31e2594180c9120e0a84c2aa5a6621b9a89e102b68c2e2095a5342820a3e41a9d976c83bb90ee84b3a2a61687a6a0196c955e01a392dc1d09a7d4345c3410a5a90b1b89fc8f139cd61fa9a0dfa24221f49b5691f496c5128283822448245d8dec93d293001a531aec21eaab32ac3d2465168e1b1d9e952248ac9c35683511ac2522839e4c0c281bb8a0ba2005a081188e850d0fee98a01a0da37426c40dc4942f95d196f8112c205d9f45a8c8abbc2227152319ba98292056ab97350c3511aafd1c79986695da24cfabc82c6ca9f91f03129f89de0ddf202ca74f2b9da84024e39c7506788f61960ea5e717edaa6b224c9bcb067c90951cd9a627355234faa2799a7906dc81fe103990849c4e9f15189f8c080e2599c31a969b3a267e25269b43187a980f0c781c529153accbac14203c143416e29c9b2497acd8358a3532acd423899c4096771e78a2921e7c9de7984c16d2853f981b1f21a36c28ae1f9e0d410abf935593c11f7da451a84ead1b23189309158896872184abd135053552a90b1b0495829dc12728ada42d09a91889e218a991ab151220dca7032d5eab3228a49ec20f5412369c10a7d2277fae21264d9d450a9a0c051c4fa74d353134b01324a00411dd935418ca9af1991a9b2b97ce14dd8e9f95981c499c2e266525a79b181bd294fa98931e78a001aca5ac25176c173f8ce998eb2349acdd356c3555ab17228099069cae20eca2411cac90cb9ea619e791a496b62091a39d280622580e5c196a8eb89be820bea637a705ae85216b9a2e0eda8fb521b4abff35dc34cfa73519698b9fa1042934ad652ce2a5b19ec814248ea91941183ea6582e0bac1c29f69c10154608741947aa482aa2b090289ca2b2148b15f21a60a8b53500346c1fe29e7513c9953111a494759d689f2d9c12188299ce925a20b5a05e271528b39f5f1da315e99b271d3f19c7ac61ad73219e19009e5da14b28d7ad0f36aa3523adf027f19e609c7f22cea12517cc1c70a17d20aa99329aa32066a4132503247da0811e119bc99f092501a8f698c3acd3088f1c5398f79fba2581ace535a63462a87d21ac9ae3a348294aa9dc20e717f71c5a9f06145c99f01859a9a02e2caa371e0a1003188599e42336ae6a3122b2282a529fc816890c4a1bb4a708365a31a32843a1d61bf90ded98130feb10da8b7792de96290d3395551fce9fb11bd216d19d561ff8943f90b59a3f216c26e7214f22589a1192230db711140cbd336232e11c95054d10740c049a8c9e9b21bf99b39bc998f50cc59321207ca6f72a01191ca19720d48eba934ca00d18e62f220f4b21559895966a121a12f6249e32f42d0525751c24173380fe9c94a2372ae4a17894c9959c00b591459d0ca5683270a0909649200c0417988ba48c253630eba7381d00a2bf93989372255326952db02b1a20b021071cc804ea95068414146689ae017e954e072f92071b7f9a661b881a099a0e1aa1929982e998e21f5da2cfa31a208b98da101e901c1cb9a58d343b343ea5321b5892eb0a309b07987519e6947c9a0d972c0a1b94981ef1a2a522730889a0711edc912a92079fbd20922995221e21ad9aec9251090511cf96fe333d3217973812c5041f0a1f9e0ca20a28cea19b9d9999870df6947a1cc9a5142d899f89a0da1ff293cd9aaea10c20032eff22fb23479f4d993d13fc1d5a251b314c306724d11e1e197202379016988d1524950b90aa94bf0b338b6919ff98941f811f1a9c2a1b4d9374918996701717a882a8fd1d089ca314e791491ffba81435d234b6a8b11f9c97ca853d99fa9cea1c1398f7905b80c10c1711071fc39ea6207d12f39f3d15d9944897bd9c779a029607a5e4201289d917b414362029a802353834f7a794150b99408c259eb6a0bb21e29e8a9729143a0dbf141b21eda2fb2553a1fca1290f3c95349821a2139f5f2b642046218c183b1517198a1e179d2f348c32c5a06b9cc3977183110ea39a600c129caa0b8a94280c808c3f1c87989d231f227c99b01c1391ea95a6146c9d15aab2aa9619209b710e4f96c721d4aa7d35333582aa0922db974600581816a21722f7a0bf1b1593d70cac808e1e33a18f253193309d0d175c933298b51610a314a596a9e521cc9a57177609be20c0a97835a5342da9e61cc796a40a4f97bea45b24cba1fa1c6915320d6b0c5c2356a0f42661a2f4a0899c7095869918a062a6f82470a6fe241d1dfc181e161724cfa62f35e733b5a8019ebe987d01ba8ea4992b98319e7209e393a3099092d51d529559254124370e1c1b9a8d72948e17cf9d76ab31acc41a2198a10da29b522429acbb355d357eab5c231e9acd05cf1d5ba49f24e8a2b0199190dd0aea98d22003a55d28ad9b2f182e18a1913f94b81e16a576a576ac6423439e64149696b2200babc335cb34fda8121e7188a9908a227aa9b82944a6021b0110e908aa948822f4a6a22ab3a6d11db09411915195f79442a61122e7ab2226129b5e1265147d1e81a88d3512344ca5689d480d4d8f7912e89a409a4ca00417979172817d96d11ee398c1260925f294e919eb90629577194c9e22accbacf2205099c114049d5825a0acf4355d3505aceb23239c1897d1202ea5a12340a01394f3128e0d05996e225ea6e629b39d94194117789627988420c0a775a221ae5a26a29ef017b48cd4209aab1a369f3443a8a6196e93769c422734ac8f2adca1d49dbc14350c3018a01c7fa83e2dc4a903205f1729915d17df9f0ca63f2825ae9c27d6985089bb10759be4a4a8354233fe11979c6d9039924d1b829ef7982a9d0a97cd145d05a998e71e7f9b8b2737259699a81bac95c799861eada220ac3bad85210a9afa12b69ccf25f3ac2a365035ddab9f237e9a7e9c0723a5a6c0217c98489ef7187386819841248da6e82a3818070ccf177e94df98941f00aacc1d01b0db27289cb0112b15252130ab70363d3490a4fb9ce6847b9ec52837ad522967215aa23c15be10a41c7b9c3da8a72e77aaff196819dd91071935a45da6102d2bb0b326371ba78fa588819c7e1987350c327e24bc9bdb97dc96971b0d9c3a9dfb95c098931214080698d41d1b9d0d27ed248c9cce1b9f962c9ca621e7a40aab0fad41210e992e15419ab024d5ac4f36fa3442aac120a096559f5424bda6e120681b41a1901bfe8c949669234fa6ad2931212e9a081b4995b89a8622d1aacb265bb08327b09c07109a16a51e10acc5367633f510bf9d1411cfa09c297bad1827222618a4fb0ec6110a2087a239a5162f35a9150d3c1d9d05fe14c1a3cda86d2e41b19326d71b7b9739108d9cba1dbf356f31bd26f0991199f48f130ac49a29a0bc9ecf99a714a38c4d98312030998a273b28f8a01a216c94469e4d23b9a227acfaac881f5594a0993ba2362867ae7736053599ab7626309d4ba0492462a62321021a8ea1321ec295f39dab24a7a3ce1e062787a23d1f2194b49ecc2632ac442cf6ae1b242d997409439b811e79ac4a37153105212a16560c16a2ed2a96ad3720fb2627a2d3156411a11ea8a5d5a1832d2e182aa31f1e858e3e18f9a0e6a83e32fcb1a724141c299605129d9d2b1cc735cb2d9e28e48ac799710f9d99b115808e788997922097c50d1f969d1f4b9fb118a50b1f9da01f9995508f499baa214d26e51f1b23ac9a1a91100bcc0ee19825341332811c8d8d18110810f59fdc21a29a999c949833997a0eea968d21a4a535211316899db2213492ed97449e36978e30f212a023709c9b974f15f994a51f3934b72cc422d41817160502799fb616c422cd9cb11ac499340346987a24d9a7142489a097a26522b90c97149d9fce28ab341ca8222655a0b0970d93200fd7a22f32f1249b99d51ab714d0047895f90aac12e4903308a7944308a692301b169a511b611ae399f61958932c897399502037a36fa44420bc988d11b18f731c20a6b1342a345da59f1bbf936e0ce89c6d18c88c83996d98bc966f0b7a950820f2a25a1f4f9cb89f0a20f092ef9199a003232d2a3b19bd234f9b26943608e90a0ba07b34d931899fef08b709650ad0a01021d21b01a10e95d499b00e62980b2036a4c025a0a20ca12e2201957399cda13623ca30cc1c4126559f3096bf13f3969e1d3c323d306916231d740eeb82e98d30987e16f89807110b967d0c7185fc1898960a1f3a20ea9c2f1c33942195ec94861746a8c8a8341f099d91176b8d881f25a92f35c434bba803203699f08cbb9b9799d418b59b7c180e85bb0efc16921f559b08201a1868a0f411b897af9b6d9e669a319dc2a7fd231f917b1b031a3021aaa85f35193489a8ce15b29c259083a13e840099c39d5d18f5190a1069180c23049e512486a2c8a2a698d799299cc8a40097112ce49eeb25071fc01a8c1db9209fa0a734183224a5b1a0539df8860e0efe995905ac9c26156795040e5804d41a7196b823b022449c0a1d69932398c218d99e43aa06abc41dc49cd2124196f621fdaa9c352335aeaa7a227d98648c0612d29e6e1c04a0b41d2494660fa513c21c349d4325ca1956a0b716bf95589c6f1ce6a4cda5f3aa5b25189d261ac2156c2148aad1358834fba9291eaa997c18e49d0ba15b9c0f9faf21961a390eb79bc422f6203428c89fa5a502a1df98031041a15ba9031effa87b29cf21cd1b298e012695a4da35513364ab76a2a6998201f288ff98a798509d130f7693ec0c6392c21dce96582529248492e61a748ff1972d1a45a076ab46acbe1d3d9a12109f9bad2448acda354a3582ab67239199f887341c2ca03f1dbb9e431860936c0fc49ada2087a4b827be1a669b051c4694ec98d222c9a7bca32eade02541a0c91484923420d6ab2136933408a9ef1e9d829f109a1cd2a10019d49d141c6f0e5e098c9e832173a49529d8a126a08005b890901395210eaa4f24e1ac1729479cb600098d441f34a92f36983353a87e9cd217568f9916bd9d1099999ed00b1f0b7e0bf4965a2051981227fb240099991a70949e9a7f1c03a309acf8acdd21d89a08158d9c0426c8ac26363d35edab9623679b8a98551f21a1049719087c97d0105812079ccd24b7a670295120bb9fa41bc4974f9a57228daa3a1c0eafa027719ce5140318362089ab89362f3440a600935795f29b222324a2229dad1e7399d28c180d14989123d8a9882a38a1889ee81cfc8e8b1703201cab862cbfae2e27ab9c4f8f411854a012a83f3678322d169b867f945e932d1b8f9e519cff9bad965213240d0499fb1fa69905281425e09b8a1c8596989cf72017a50eac5dadb523789db214c09c31263fad72360e354eabea228498e49ded21dfa12f9f3219bf99e10fca130d98792502a8c929142611a36b1cf9959798712162ac022725b0e226540b2183db1a1b1c81aa0837d43271916f9e8297159fbd2521a352a2d020fd98278a590b20194b221aacff29391e60a0231ac508d21ad69c66ab533073affd2031136e910391efa03f9f2a36a530cc25141876960791f6190b9b4f9f310be698d0138b0f4e9b341f5a9b1227e9246d9f151d6799439dec232ba7c0aa1bad2624429d2318119be32430adb536953489a92520e6903da03d2385a1d49cbb183199b2846d133b93ff24c3a867283f288ea4c41df8938f92332396ac4c2a16b0ca244e150595f918b49a99aa79372d316f25079d7795d9a0772688a513a0cc1eda94318e03063c1eac2154ab62281426fda1ec166214e4190fa228ac4a312ab0ec18621df29496973e9ef51c3836732ff527eb11059819136e99650bbba277979e9cbd128790f09c341fcf95ae27fa2772a1ae213595029a5825fca41eacc2ac0b1f119a5d95d8a32328ddaef9367634aaa91525e59989a0d62176a014133a927a9c01183d14419cff25cca8731f512906a54a20ca989e99c425c9ace82c5dae031a991c49983498a99b31aa0c38302d2528389b8215b2a1a42701a87819cf9e7f19c294b910421f411c15ab2a9ea82a89a03117cf11a61275a2dfaabc332baf7aa1641a8696b4967a9940242436c728de26ed1cb094a1105c99d0159593460124931697ce0de796e01f8c9eb51253932d9cb61f20961d91159c4923ea24db1d6d23499b01911a07a80d159d6c34d231cb1bdd92c610f21024a07724079dd7995e9ac39a60102796571d73a02ba04f9db09b12231c948998f593dc14f12eeb1a8625029eee98e3110e98069e22354b2c2220968a61152f08b1a3522a0aa2a11fc0974fa04407f59e622711a9f9a25ea661a2ce27c218501e669cc829f13191a32c2af4a40ca09c9d579f68aa9a34282c8fa5881d0f1b310792958c0cd7118c932c0fc094b408b692f21b549a291bb81a059ab21a1d942a8b0c9a232161a4e9a46c20ae99d9136c8dae1c90a6d5341a346ca5791b6194c50e739da31a2a948898549655973b0ca697472071a1c218019ed69e64207a93e4880da14b252d28ab9d04254e9b7d94368cb9082ba40735a73148a25e8d9905d91053a13023e19ffa9ad29a659c020f289c8020b91b3d2170a4e3a0952483919390c9a27f27422d6696fa28019f0b9c498b6a9786a13e347a3051a2ac8321148386ea826f984217389bd4160497330e320b5218aa90281ebc208b9da71cac951d98d8935b1889a8fca85520169e9a18b8099b1f4fa94935b834cea86020029aab8e3b99c495be16059d8a1a6c94980f81188a1c5099bd1cfd1d70a0161a9b97839ca99c9f1831a3dca8b724509c041c8d1a4d2063a9aa350c34d0a8591d7a9d00100aa1ea1ddb9d0f9c7011bb109c0c1e9053201c9d3a1cbba088a06a1c0e963d930da49725702903a47d263a0e99890d196017a4a52235e731f5a4f69a8b98d78b8c11769adb0fee9cbd16cb95ed0f6a112c19cd8ae8225123839d771dfd943a9ab019849e91aa1cabbb1fcd9d84156494182228abb5351635c7aabf222a996d911e0ab7955890509e601d0897651074192194dc85a122c62192a10d1c7e95009e4220e4a3d5a7afab212641a0171a6717952023ab13367a3461aa7b21fb9a7a155199141b4ba1ce9e1f21570db206b290519fdc1ea424dd1c07a5bc98a58ee917011daaa447a11aaa6929308ff608089d23206ba837363233ddaa6a19be14a60cc18d5b98be99759c9c104e931d0f9592d41c6e891a2537245a98491b9b933a99671cc5a0b3ab41ac8d1f359b93148e9abc2468acfa3532357aab8423aa9a4b0ca61123073e9ba89a0b1a0d969f100098651c859fbc246623faa0e41c6f94e09cc3243ea8eca52fadbd267ca047151080882056ac7a36653464a950204c916815b595ca1f5da3de94751e4292a0843f99369ff3137b25a0207ca4f116ea100697ac267ca94ea089ac74291c9f3397c39b061bceaac03632334da97a1ba41c148e35155d9d3f9b9d9d66105801080f31954e20fa8fe5261b25609ca61b0096c49c521e75a419acebacf922699c4217fe9b3526e2ac50361735d3ab8623f79bea8e6a9034110ba0bf940217e78d4b14ec9bd624bca2ac25cf257aa20f1a7c981ca0dc24daabe09664aea626fb95a5186a1de5215bacff36ac33aca51199c09b2310269b232218a38a15351b6994ee85359d2121eca1ae1d562495a3841a66129499a627b2acc1281bad04276a9c1796251a90a05baa1e37d0315ba11419ac0ef6885a18b79d039e489a5193720fa70c319907203b0ec1273425fa9d7a1d09976c9dd52150a635ac2ead6224589e4114ff9c70265badac36d73412ab6622f3958898ae185b105ca1419abb19a790f811709e1c264ea46f25652888a3261933930f9a2e2572ad1e248fae0a241917190fd91b11174caba737b931c81bf79b61997d964103d720279f3b95231a1b93698d3a9fd225aea576a4ff2533a1ed16be15761cc42413aee62d94ac6720919550971090fda357a75437cd2fc721401d34101110a517219b50a017150d977f12730c389cfc1ed30eba26e524a3a0bd1d30991a9e982440a854abbaac5f24139ed716139b192565ad053747340ea94a1fed05639d901c6d1b71a1ca9a761bd395f712c69d432649a6e32395287da39d1a7e8f108f9a25deadce2788ad0c1cd418f78de518259e8eaa1238d22f762564896399b29d091c4b1cec17e49c38167a92f20a859ad227faa705a843275299e6133705141c001c2eae0d30b7ac189f261291109314b5a175a55c37df2d552725194a990617a79bf01018a48613f29c328c70148e9c661ddc1cb6274b274aa11b22e598669cb625d2a694ac4aac6c1f549b4c9610a42728e8ae64370b34dea85924ab8a329f191dbf1c329d649e8816d38e4912c29e2d2634a79a1b03286aa1431b4e8139961326f7adbc29caaa02a0041e48981c127a9fcca85f387e292127e2160a98a9a01621bc169a1fc39e8d17b994ef0d85104f2740aa11a93d2537180a136a0f1619209c8cadcf3060a80fa2d596078f9f909d9f680fde37d11f2725131e3d91d6111e99641268943610f7903d974b0e049854202a9e9700f5952f9cd41fb396b28ed09ca0244a217d1c7e23939bcd8f4b8c0a80c39da834a431bc1b7c9528118b0c0c009c16b499b30c149baf99d810be88dd18881d149f7e9e499cb2228794ea98129b632343290b1b0226da9cb299aa90fc13f7a2f735952cc81e1a9c4015c8817022219e01984615b2a04e9cff096b19019a2725a51c33a6e29be4251a0c5f98b69a8f245f23451a3129a29d129e6515f49ae6a8cb36ce2ad3175aa14f8584081695f20b27103b943811a9941d09ef93a51c149bed1b911a3a9af11a36943b885a9b332282a525a58620fa994114448df81ce9a6f6340a3467a57b1ba6946c102d9c3e17ef924796d7943f96930c0099c12090a10316949cae9d3e2041947a0da1a1aa271e1d4fa142255f9b46947b90c715d7a58d3588313aa34294e28f4f11491c109b35a09798079d3a9a2610f99c5820bd1f521c44a29ea0ce24c195f890e6a151297a216294a4297a9c609c0496669cb6a487350c30daa1d89dc588968b860d8399e417339caf180298380fbe1171172981ee1d15216d9e411dce9662998690b719e4a801a9cc20be9ecc1950121a1f5fa95c35ad34dfa8f120b69b8e90dc89e399921a8d9e311caa98a4109c18fa18149973191c21c5a0ab1d4797269de29ab62044a736a9d724be9f341c781bcd1efea9ea350334faa8b2205f9eb1146f9dd415c2925499f788e495570def9a59206ea14a9c579edc9e6a20ed91f50d4ca40b2ab7219aa472263e9cd9954818529973a79535bd318ea489901797ca8d91118f9b3414f79c00170b96eb109814871957105e22e6231e9f8e1e5f972b9c7a1afa9de2aa22abb9204e9faf189f8c032244abc7350a35c3aaed22949a12952d187a9ba117019f251d4a9977126a1c039caf1bfd1e6e242da21e1eb896c59f3c20fb9f95a9afab102662a13d1b76194c20c5ab4036763487aa0b23a69c5998db075118600cc99ea01da099070f611e729ffb918295aa2079a1ab1dcb052c9d4f943324fba511aa3f27b3a03010111b7a180bab453672331ea9dd21c89b370e32912b97189a339c29140c95cf1115923a1cfa13e9243e248e9b871cdb952999a71c9aa011ac1fac91209b9c6815209bbd246eac113621358bab9523e9995687b5145e975095c69d881c249948132d162b9c8c1ebb2095253da2131ec195a79f292516a7bca989ac1926e3a020186e14f920b0accc363d34aca9b6213a982a99e617a8102e98eb9d071efd98e10c0d2137a422230393972403a3511cad0f0da2522477a2b3a891abc12776a0618c091b791fa8acf8364033b9a864204f94a4814f0bd19cb59b9b9d1e162094271471910e203113e4261325489e4f1d9498df9dae1e6ba466acb8aceb23b29dbd18079b8026f5ac7036fe3400acd923969c1716cf9b55139f9ad29d251dfd9733155d91b71c9a20b91e5d2620a2d618429829a2f72634ab55a7f5ac9a250697ab1a591ec82219ad6b37253314a6f592389d91896b913e9aae189d9d7f1ce496bb0a0f1d7ca2f72628a2c224f8a00f18370eaba2f22798aa85a5acaa91244c9a0101b71e311cdcaca937b631a1a2e212cd97ee11470ab89c859ef899c60a2f9004120298d21ef71b72272225c09f661e6a98ff9d0d2266a6a3acc7ac8b24d69e54156e9dd22676add736b33433abad222697c718569b9d92989ce29d111b7194ea0f6f9e1a215422bc1fe82663a06218da90159f5b286aad53a644ac2d207503ae10751b5b1bbdac17384a31129475915798fe155697759eae1ecd9d441a52956e07009a099795272aa5cf23889cd514e80eb59e822858adc615fda8401d4897b908891d229e1fac133806302a1e90174798fd165b90c19a20a07a10c485da90d5124e9a531d2e1e552697243da1061fbb99f69ec32485a843ac1fac23248c9e62154a9c712574ad4037143422a90720ae0f6f18b29d441ac09d099b0f19dc94e012d6a036242720191cac25fd9e2b1a3b943e9b672855aecca335aa6894cd130f848819979a2aac5338802f89219218dd987216f19a549c781e3e9d0b17de92f60df59fd5210b250fa519235989660ae38c7287812755aea02478a8a19bc6884f14151b3da1c3aa3b38af2dee2422153c99711be99df11072a4c5192b9c7e94e812279d6e1c0c21ed272026c3a0cf211e97a79c2025f6a64fad62ab571f379d0499c5a31128d4aea437a833b9a86d2424175212899d911a7b99fb9a411839922d10f2a1d324c01d27149423129d94169a915b959a2795ae679c3aa7dc9de01bdf941c8a299c28aa8a38412ba62424179a8e0e99bf93009248197f97751250931e0fe29e7d25f78c6ba1b91d9214c611e1897819d524d3ae232730a35a9d9297e80ef913c6a216a683384f2576249f1c09947b12fc98da00f193d610748f3e97f90e8198b3202c9e09822297e59b00204197288ccf9d56255e17721c7523f39b3c8e2d90b90b949bcd348031731cd49740116f103a15399943964a16fa99e99762100695b11fed9ba5913b9df89cf2218b969897549e2028df1c4a197b257c9ccd979a969316dba03a36ea2c921c749d7914e4821d1fde98ab96750e4f9c749370081096ed1c6d9cd214bfa0e293b320f6890101d79a5127ec9d7b98502665982c9a4996bc0b29a043373c27c6182da15b1481091594048bde0fa294721300959c0a31944f1d009c1c1c2f1b8d9abf1b2795458ef49b082379a64ea5b720aa9ab3140b0aa91cf2a60c35fd335ea59f1b679584126d9b66143890199455944395f40cc39a0022bca2b118cc98949cfe1f51942211a9a2c52899a416a2bc240a9cd1927e8f351983a6ed355d31d2a2fc95e2928b1494956e94fb99b0909d9cdb94440b7a9c882360a1e194b39e969a6d22bd90ff8a31a2422bb2a1399a2627b5991c9c1f98bc9872a46036e32d389cde9e8702388c9711ca9ae917b19c3a1a6098471033124f186d00071e6b215e9ff01d1298b49a4b8ad71b36a9fca85721959f7e1a2a167a1e61a96735a634f2a837215c9ce4920218e19d441df99f0c1de799681229193019d299971b1a2211a1691fd298569e4b9a752392a909a9c324ffa0ef1cf31c971d46aa1b36eb33f8a8e121b19f8318bd9d711093146a97d092d2941c0dcd9df32233a47396039ba29c0a2059924e1369a41b2b85a5baa385252a9c93958c140195fca72c362d3101a445971a95f38c6513919cbc15ab9c271827979e110b13341b3013f321ec2360a0b31feb97959c1a18159c2eabf6aa81214da02319fa10f52145abce350435deaa71230d9c99970a1dc0a05c1eec9f191d6a9afa14d11c909af31c231ecc2429a38120a499bda0181e368166ab06abf625baa2d21c3b1dcd1ffaab5936713499aa0624769e1098a51ada9d651eea9e481c069b2314591ac9145d9eb90ad620a9a0861f11954a9dca9fe427dfa9f4a8c2257ea05618dd1d2f19faaa6c364533c2a80a21f29dd50ea691c6983c99169c5716a4979513b2907a1c9616e1244b24119e121ef49690996919a09e5cacfdabd521ba9d4115f299fa2476ac22361535ccabda239e9a0d985e1d14a1fd1d17a03e1da89a43164a1d6e9f47226b20f72499a23420869a7aa1f82352a454ac05ab4625dca1a71c901c6721c1acf6362034d0a95f22fd9c409c352042a1cf1f75a0671e1d9cea146820aba0731dbc1df421afa00c1d41910aa1bb18f9213cac68a981254c9f1c17b91d8b21ccac0d374233c1a80420d89c9190e30c7b9cd99c979ce21842994d16ae0f6a201198e227d524b5a1b220c299559d6a09299ff9acbeac6e2679a1f1189f9cd02738ad7d36073572ac4b24019c9496dc1b07a0b01a5a9f611f4d9c0c19d91e2ca2e124e8217e22aca1511c819beda2d825eda757ac09ab2d274e9fa01d431dbb2474ad98371b33b4a82c18b99d109bf31ec9a0731e949ee01cb0992e134f204ea2b322a91ea01f249df115af8a0ea185201f9abbac0ea86a2235984b14e61a8d24d3adbd371c321ea5418eb598740b83861e9c01a060970d166a992517858f051f8f1846288c24b5a1fb20529a019d971d10a463ad80ac062651a1af159f9f2328abaded36b23416acab23c693ab934b1b1ea1918cbb9bfe1aaa9a2718c81c15a17e263f240f2247a02c1e079913a33e2844abaeac82a91124ed9c5b1517192b24bfad2638ca3168a5ba140596de995d1e9ba0121d3d9d181b44986313271f9ea29324891e941d1d99f4106c8e9ba10425a8a686ace3a58a1e8f8d63133b1c5723d9ad2638e430a09fa299239833192b97139cce9fac1001146598ce15ae98631acb2184263723eda0ff1fb999019e162463a8fdac04ab2424a69f0a144d9e592668ad60370434f3a915219811031a2998ef9fb1938a947d1544988b163798229a9d2731227c1f559c6d1c17984ca1e42839ad49ace9a6331d60973705d816ec2048ad69386230699fd80f88890791ce19139fa61a9b9a8118a0989716a51838a00625531ec71905950116b69582a0d62650aacfab6fa4d91bd78d7014a01c791f4aad5b38782f62176d9a5798571bb19d770e7aa43316838ec99bdd13fb9c871715230228682634a24223d39a2e964e24cfa52eae1fabe520f9a0f60e34a43028c1aea4370134f4a97b256d12cb1cf79c3a9e849c0f824d164298c3151b9d8884f126d223011f1b9d5c1c9c9825a03828f9ac07ac31a69a1dfd9428920d9a42220aad7f381b2f478d7995121a2b14df92d49a6b137a9534150997ba15349ad013c9224d1c5314fc9347170496aa9aed256dac30a87fa1191967921d120118f60acbaa8038d92b291f3f98cb9177128098408c4a907811118e4297f60efc98b320d59dba0bae97f39bf81f3e978100319e5525a49b741c6f23e59b448f0794df813a17cd348131721c01970f1170100d95a99787966d14d097889663103515b91f569e9516749d739cef21e5974199e89b1f28d6a0911c7825ee9cfd9930968d91ee1c3936eb2c4c193c9d3f16fb078f97c40a0097e214849aa2843e07581e771e929b340d46a141989d20d191ca984b9d7f272da0e51850262493769c2197e4143c9e443739277298c6a0b71080093194458e0b0a6795b31427959b0a15944f1df49ba91c9f1baa9abf1b0095048b009c0823f2a65ea5b7208d9a7213de0f1c1c79a60c35fd334ea52f1ba2948412c39a22117e8fe192d2925194f40c6d9b0022a9a23519fc950a9cfe1f43956614bca2c52883a6d2a2bc24949c56943890b21899a4ed355d3117a2cc981994fc14af9c86883798fa04229ca390200b9696c9234fa29198ed9ea3996a22c894299482a14c2b7ea4219c2327829aa59c0a9aa894cba16236e12d119abd9e5090388c3412b49a2a165c9c7e1a1298471097114f184a8a7a1e3721959ff01d6098ca9a6d00d71b61a9f2a857215e9f3a1ae917071e36a96735a634fca86b21b19ce4922919569ef31cb19fef1cd2986812021830194b9a971de121ffa0691fe799e19dd299752346aaf8a8c32411a10c1d441d971b92a91b36eb3309a91a22f99f9218d99d85137f1410959a955492160dca9dfd226ca4e7945497289c0920ca94a91036a41d2bffa700a484259f9ce09286145a9688a52c362c31b7a30a9b6097f38c0c13959cfa100d9c2319eb979e116513341b1a18f52171234da0b31f2797919c3013159c45abdeaa812160a02718bc15f3212eabce350435f6aaec23ab9c9997d11cbda03b1d769ed21ca499fa140a1d909a181ecd1f0624baa281206a9ac0a0f31c3681faab99aaf62529a3191d5c1e231e66ab5936713406abcc24ec9f0d98541a489ddb1df09d53180d952014a01ad714cd9f321909217ea0851f049bd89d609ee427faaac2a8c225a8a0461c641ef40ae0a96c364533f4a8d520e89ed40eb2909099f2999e9a4115f4969513a6917a1c6919fa24da23ba9d121ea497c6989616a09e76acccabd521119e57163c99e1245cac22361535fdab4b24169c0d984a1d7aa1901cfd9ca71c869a43165e1d6e9ff82367215f22dca13420a89a14a1472252a4c1acd0a9462599a23e1dfd1d6b2054acf636203405abf72417a0409c672009a1b61dd69c1b174191e9143420aaa0b8188c2103204b9f0b1d1d9c41a1711df921ccacc1a88025afa0651ecc1fbe1d3cac0d37413367a9f32173a09190ae0f559d9f9c019cf118c2994d16e30c6a206a09d0274b2479a1b22042997b9c1198299f38ad72ac6e26b5a1e218d99ce227f9ac7d360735beacd524979c9496d91eeda2431db99da01d819b0c19dc1b2ca2d825bb242c184e9f511c4d9c07a0e124eda774adb4a82d27aca1611fb01ae82157ac98371b3309ab7e225a9f0b9b4d200ca1e31ab5984c14b68a2e13ee1e4ba283208d24538e3598f115af99c7a0b122169ad3ad1da56922249de01c701ead1ebbacbd371c320ea89f1f929e740b858f019d9f9fc693af15529a25178386051f971d2328ab2351a1fb206a991e9c8f1810a4abad16ac0626b5a10d1601a0462863aded36b23480ac8c246097ab93c81c13a3171905965b15079927184b1b15a13e282b24ba14ed9c2c1eaa9a1ea17e2644abbfad68a5112447a0fe1a918c3f24aeac2638ca3182a90f22bb9bdd99261f9ba13a1c229863136c8e63135c1e9da204255723a2998e8df41044989aa09324a8a6d9ada09f8a1e1d99171b111d8a1e86ac2638e430e3a5941d3c9d3319ae98019e4d9e98110a14b999ce152b97631a162459261521a69fff1f6598139ccb2163a868adf3a92424eda00114ce9f8426fdac6037043404ab3723ac10031a37984ca1d8168889370517988b162998229ae428ec20d80f60976d1c4498ef9f9d2739ad48ad699f331d559c7d15b193312249ac69386230e9a67c1f8a940691a41882a0a01c57987014b6959616ce1938a0d6267a1f6d9ad68d0116a098129f062550aa4aad6317d91b05958118a61a541ecfab5b38782f6fa4c7199a9a571bfb9c2e9634a46d12f60ed39add13b19d87174e2430287b25f9a04223c99b770e1523cfa5c1aef4a9e52034a2838e7aa402282eaea43701341fab68263316cb1c1b9d25a00d9a121a28929c98c315f79c8884382842227995fd945c1c42983a9ef126f9ac0aad478d9a1d1b9d4d16849cd22307ac7f381b2f31a6011f0f822c14349aa99a0118ca911c120396b915e092d113ed25f80a3f98679247170897d49ac9226daccbaa291f1919fc9334156b134d1c30a88038d92b7fa152147a95d6110498b28e4b8c2811cd8fb3964b0e1e995420d09c0a807c95939bd41f3d9764122a9ea024c39dbc1b7e232f9cf790689497004a21a834a4317d1cf59536108b0cbe88ea98aa904015b2998794d8100c00dd18129bfc131a9cda9cb222af999c16881d6323f7a2c81e0226499c149bb499149f4329f735952c0b1b7e9eb30cc8816b195f9865154f85129e1a0cff097022019ab69af49a5aa1a29de4254e9c219e27258f24e6a8d3173129e29bb2a00198a51c5f23cb36ce2a451a33a646158408ef933b88448da694411436941d091695a51c5a9bf81c7b1bfa99f11aa994f20b149b3322e9a667a586203a9a38112710ed1b82a5f6340a3425a5911a3b946c1000997a0d7b90e28f46944194930c2d9cc120a1a1c71542945f9b3e203f963e1790a1aa27d7a53aa34225ae9dd794ef9203161e1d8d3588314fa1949c47964f11f99cf8900496c588609cc1952610491c5820e6a1669cd89d7a9cce243a9a109bbd1f5129b6a4daa1a4299ea0079d35a0521c7a2187350c30629444a29798968bbe1162995012b69bcc19ce96380f860d711786901a1ff120be9e411d029883992981b7195fa9dfa8cc206d9eaf18e417ee1de4a85c35ad3401a91521339c8e909c18269d781b5f9e341c4797a410dc89fa18e29acd1eb220be9fab1daa98e3991499b620fea9faa8d724c5a0311c921a731944a7ea35033436a91c218d9eb114ef9af50d48181797d995ed91570d6f9d59204ca4529989903e9c6a20e495d4156ea10b2a73a78ea47226dc9ef788c2924a9cb7219535bd319aa4579e5499ca8d98142b9c9f8c949aaf185f97eb10911187197a1a0322ed224e9f8e1e0b968f9b5710fa9d44abc3aab9201e9f001734145e22e2aac7350a3522abe623f79c12956a1cc59f7619a69c3d1bb89677122d18039c3c204c200b2362a11e1e4a997a9baf1bfb9fc5ab87aa10262da2251da117fd1e95a940367634afab6e24019f5998611e2c9d111bc89b3010cb05070fdb07729f4f947a18dd21b3a0ab1da0995118fb9133240bab1ea93f2779a1a01d600c8295fba54536723311aaaa20c99e370e15922999209be9996815db95cf1132913a1ca71cbd2495239b9c871c0c952b97fa139aa06eac8bab91208e9b2914189ae92411ac113621351fac3e24339c56872d16a79f6e143a982018c1954813b5142b9c2925f920b621e3a0131e24995e978c1e16a7b0acaca919263da2881c5095bb20bca9cc363d3489ac9525c69d2a990d210da2091b4f94618cad0fe10ce61737a45224791f642076a0511cfd98a810222377a2a8acb9a8c12703a3071e2e980393b3a8f836403391ab9724eb9da4817191df9d079b969cbd18949827144f0b0e20ae1e8026d923b29d4f1d2094d19c31136ba4f5ac00aceb23489e1e16b59be42666ac7036fe34b8ac13259b9d17165d9129a2591e389dab1a42983315cf9bb71cf726c822f5920697d618fd9755139a2034ab19ad14a69a2520a2251d9f9ab91e55a76b372533f5ac5d26d29d91890f1daba2b71ecd970101370ebb0a6b917ca2f227311ce2124c9a0f18e4963e9af72698aadcaca1a29124f8a07f1cae1828a285a5a937b631acaac2249d9dee110298ff9d6e9d269754156a980412470ad21e0d22d226ad22d69e661e2f90b89cf71b66a676ad33ab8b24c09fc60a859e7227a3acd736b334c7ac2225f899c7186f9e159f751b5798ae10da90ea0f569b1a215b285b1b75917503621871949d9254226aadbdac12942d2063a0111b989cbc1f53a617384a3144ace826e29dfe15009ab59e891d4798b908e80e6e07569709978228229e90174897d5145295759e952758ad1fac2a1e401d889c441aae1e2aa5c61513380630fda8cf23cd9dfd164e9af69e4a9cae0f6215bb99d5125b90531dc324712507208c9e061fda90c19a2e1e85a874ad22a923243da1c48520a0552643ac403714341fac97247a106f18d6a03e9b8819dd980f843b94e012b29d36246728979a9218cd132b1adc94441a272055ae2aac89216894fd9e0f19c09d191ccca35338802f35aaac25099b7216f59f7287151b3c994f14e38cf60df19ad52181273da12215c688660ade92549c0b2555aec3aaee24a19b59890b17781e0fa5a0243b38af2d78a819233e9d711b279da79cc5a3241704991e97e812e99d6e1c202511286d24379dcf217e94f1100c21f6a6d4aeb9a8571fc3a02b9c72a4ed274fada437a83362ab2026c5195212f2a15b951c8a9a8edf949a912d10899dd3249a27299c2417e01b94163992911ac01d95ae28aaa624dc9d129d41187b992714679c8a38412b3aa79423fb9a0e99e29e7819f9130994e80ee1891e0fbf937d25d524c6a29f1c9297c61150930092f78cd3ae16a676245a9d9214751248196ba1232783384f2530a3b91d7f97a110e7961d911a07c61001912096ce0d5c99e01f159ca80ddd92499bb61f1697d0158c9e4923159dcb1b6d232d9c24939593b512ea246c34d231db1d53934601f21027968998e3116115ee981c94601024a0571df5930e98968a029e1223c39a772473a0dc14069e22208625b09b5e9a079d2ba0f12e22354b2ceb1a4f9dd7992f08f59e501e9c9d0f1b0ca0c2184407b1a36227669c579f881df4a4ce274fa0522a11a9c82968aa8fa52c2a61a2c0970aa2f9a2f1319a34282c91a35ea6a11f3107b6922a8b6c8d6194d9131d94b4089295f21b0c9aae1c791bae99b21ac0948c0c549a232190a66ca56c20059a2c0fd711291b61a4d5341a34e9a4b81a8c93c50ea697e488368c99057d947a933b0c739d47200da1b9085e8d4e9b64205597a31a71a14b252ba448a20425d69e54962a94c2182d280735a731ab9d019e8898d910289c9390498b21140b9c8391020f53a18020c9a26a97ac83019f9524659c3023b91b7f2786a151a2fa28e3a0d29ae19f3d21422d3e347a30669670a4fa9a8386320b1d98b809029a9a18ac95330eea825218d8939b1f6020169ea71c04976f98aa905b184fa9cea855208b9dd4164217281e89a84935b834fca8bc20389bab8e8118839c8d1a7a9d041c9b97980f3b998a1ca99c4d20591d509c161a6c94c49550999f1863a9d0a8b72470a08a1abe16bd1c31a3aa350c34dca8fd1d059d00101e903d930d198b9899890e969c0c0aa153200da46017f69a3a0e6a1cbb10ea1d1c9d9725a4a5f5a47d2688a07011db9d3a1c70292235e73103a4bba00f9cd78b6a113a9a64942a998415fd94ed0f8c112c19b0191822bf22cd9d771dcb95769acd8a849e28abc7aabb1f839dbd16db0fe82291aab53516351cab5123ee9c6d917419009e6717fb9a171a7e9565101e0a2194422095207b2141a00d1c0897b795dc85e4a323ab61aa212692a1601d5890a122d5a713367a34afabc621509e7a15b290e917089dbe14f608a58eb2065199519f011d23206a19308fbc98570d141bdc1eaaa46ba8ddaa692907a51f214ba1a42447a1373632331aaadd1cce9ea60c95923a998e9aaa9a93149b931d0fc18dd41c671cbc248423359b491b4e935b986e89c5a068ac7aab8d1f5a989c10be991a25b3abfa35323541ac3724759c4b0c0098e09c10804c9147156f949f10a611651cc324882050207ca0e41c0d962307859f3ea856ac64a9bd26faa00b1a3e9bbc24eca57a3665342fad6623a89a68153f990697c39ba41c3397ea10a084b595369fac26061b7a1b1c9ff1164292ca1ff3137ca9ceaa4da974297ca4751e5da37b254ea0c036323389aca020de94148e3195c49cfe9bf79b42170096080f35154e20521e35268623699ca61b58015d9dfa8f75a4e2acd3abf922609c66103f9be52619ac50361735ebac1b259d9dea8eec9b1ca06a1dc09ba5187c984b146a90d624dc24e5211199fb950f1ae78d3411bca2daab5bacaca5a6267aa202170ba0ac25e096ff36ac3364aecf25bf942310359d9499251aac0e17966612ee85269b2121a62790a014196a9c841a69942322eca1b2ac5baa5ba1042795a3351b18a3ae1dc1281e37d0311bad56248a15f68831996c9dff9cf39541140997a70c5a180720d52170266622589e7a1d720fb79d3b0e50a65bad12ab6224fa9d5193039ec12735acac36d7342ead3425489a8898709e0f9ad91b6199190f3393f811ae181c262e251117f79b19172619a7905b104ea472ad4cabc81b0a2488a3bb195ca16f251e24a737b9318fae6528419a7d963a9f761c109034105097be15698d4103d225c424fda3401d9195ed161b93d720aea513ae57a7c721672033a1231a279f76a4e62d5437cd2f94acff253b951110389c1a9e139bed05d7163099730ca517fc1e982419254a1f139ebd1d7f12219bd30e40a865ad0ea95f24a3a00d9750a0ba2654ab05374734baace5241715639dc69d108fe5186399f78d7e8ff712901c43269a25259e6489d4189d1ad3956d1b49a6dead8eaa76250c1c7da3761b71a1e323ce271238d22f88ad9528ca9ab29d859a141c93144a9991103705f20a091cd227001cb5a125192612e6137a924b1cfaa72eae75a55527189f52993816ec1705a80d305c37df2db7ac4327e49c06178e9c669c10a4ab8a4c96e5987014a79b661db62527285924549b1b22328cf010dc1cd2a6e8aedea86c1f4aa1f29c18a4b62794ac64370b344aac4b278613329fc29e39961c120a9848984e814912191d2d2613267a9fe216041e431bd38ebf1c34a7f7adcca8212702a06aa18816329d9a1bbc295f387e29caaa0328649ea9a0851016199f903d91078f6a0fef0d16214f27209c9d9f131ed5960a13b994bc1640aa8cad680f27250fa237188d179a1f11a9cf30de37d11f60a83d25c39e710f1f96508f0f0b18111a919995c50d9d999d1f499bcc0e8d8dac9aa01f2097b1154b9faa21e198811c1b231f9d9792808eb1184d2625341332e51fa50b78890810ea96ed974f1517169b9734927a0ef59f8d21449ef994d418709cb2213399dc21a4a53697a51fc422a023899d9498a29a35218e303934b72cf2121316999c0502469897140d93b714b097b90c3403799f7a249d9f200fd51a55a06522c499b616d9a7ce28d7a29b99222697a2b11ac4221424ab342f32f1241ca889a0cd9cd004a6922c89b18fbf938d11589343087895301b7399731c9f1bbc98f619a794f90a169a502020a65da54420e3993308ac12511b37a3b1342a346fa4611ae4906e0c7a95ef913608b7092694f0926f0be89c082099a0e90aef084f9b0a20bc966d18f2a203230ba0899fbd23b89f6d98c88c5a1f2d2a7b34d9313b194f9c8399650a62987399bf13740e30960195b00ed0a00b20cda1f396231d559f2e22d499102136a436239e1d691641260ca10e95d21bc025ca303c323d30cc1ca0a201a1eb82718521956b8d3699911733947d0ce98dfc18ec94881f0320099d2f1c0b9630989896861725a9bba8341fea9c07117e160a1f46a82f35c434c8a83a20f898f08cfc16af9b031ab29c7b1bb897bb0ebb9b921f6d9e3021ce151f91f4110e859799559b669aaaa889a8fd2368a07c18d4180820319d5f351934c2a71a18b59b25906918299c8c1d539dc01ad7990a1083a10c23c8a4b920b1a0071fa698f5193e84049e00979fa024a5eb25c8a25d1800995124112ca7341832e49e86a2c39df8865804239841967d98d2126993040e0e0ed41ac218f6217a22c49c0a1d6795fe997196d99efdaaaeaac41d449c26155905b82343aa9c35233506abb022ac9c648ca513589cc215aa99261abf95660f0612c21c6f1c6c21291e189db7162494d29e349de6a448aafba95b2556a0b41d6e1c4325cda5d1358834f3aaca1904a07c18b79b0310298ea699cd1bdf98390ee49dc42241a1012676a2cf2102a1961a0ba1f6205ba995a464ab7b29a5a5af215b9c3428031eda355133ffa8c89f0f9f82016392f1979f9b91991210748fec0cf288c21d2d1aad2467233d9ae61a7693ff98ce9645a048ac82abbe1d8492130fa798582576abda354a3546ac2924509df887c49aec9884929d82c91446946c0f341cda20d2223420ef1e41a0051c60932ca087a4c9a7d6ab08a9e025669b43183f1db827bca3213693342eadbe1abb9e9f108c9e9013098dd217b600b8905e099a1c83219521441f7e9c479c80056f0ed2a173a40eaa34a953a8172926a0141c001995294f242f369833e1acd8a1d49d568ff4969e9a8d9c679b081570947e0b99165a207f1c04269623d89a991a1f0bbd9d519803a3c8acedabdd210099d00b1099122709ac26363d35f8acfb24999e8a98079c4f9a03185795e514c4975812551fcd24572236200093719ca41bd01021a1b7a68daa89ab40a6a027bb9f7c97049770293a1c89362f340eaf51201908f29b14988b1741187f944f8ffc8e180d22239123032054a09b86ab9ce81cd28c24a2d8a91cab12a82d162e27889e7399229d882a862c3f367832bfae38a1ad1e5e930499989cc09c8498b2148596240d2d1bfb1ff7203126ea22789d8a1c52138f9ea69917a53fad4eabb523e09bad96519c05280eac72360e355dad1425ff9be49d0d989798db1a82972183f995ca13ed21792571211b1c6f9e540b6b1ce10fdfa102a862ac81aa7191e22611a3bf992f9fc92902270837d43225b014263219159f2019d21a039176966e91c508590bbd254b22d69cefa014183113231a278a21a31aac66ab3f9fcc25fd2060a0fd9852a2ff2953302a36a53073af391ed02007914e9b439d119be690231867998b0ff619341fec23e3242520429d151dd0130b9b5a9b2ba730ad89a926246d9fe6984f9f1227c0aab53695341bade924310b3da03b938f92f91877950595f8936d133d23ff243323b49a079d4e15c41db28485a1c3a896ac99aa6f25ca248ea43199d49c67284c2a79372d3116b03f28bb18d9a03c1ee41996970598f294621403067726ac210fa23e9eeb11621dec16318e88a554ab28acf51cf527ec18fda1da9413a062284a313836732f2ab01426cc1e1913f09c029ad8a3e5995d95359587906e99341f582523281525119aae21bd12650bcf95fca4ddaeaaa90b1f72a19e9cbba2ae271eacf9367634c2acfa27779789a0419c9e99349882154998ca983d14d621ff25c425a99b389b991c4a20011876a0cca8c9ac31aa2528031a06a57a9c1413731fe82c0c38302d5dae51293a92b2a1421fa612b496b0948696cf11b910a427411c75a27a99ed1c641a3117c29401a815abdfaa4024de267aa189a07f1978192a9ebc332436c7282bafa82acf9ef90d33953f90230d4d101192f894290ded98551fb59ab7119505589a561fde96130fce9f3f21140ce11c4f22d19d7792eb10b11b6c26bd336232e721d216da8b740cc593ba936a1224179596d48ef50c049a21204ca01a12751c55989720c9988c9e7ca60d18f62405254b211ca1b39b9b21f72ae62f9e32f42d220f0119bf993380b59117989893071cbf930c049c00fe9c459d8ba47225b02100a24920c99594a20ca58c2553261a20381d90967894372a68323630952db02beba770a0e4a1c8042f9299821e905892da10a1924e07ea95071be9981c1c321b8b980e1a7e9506847f9ae21fb9a53ea51a20099aae011414661b5da28d343b34cfa3881a6689eb0a1b942a925109c504ec92dc912c0a309b981e079f05113812ad9a711e0d970798f1a2bd20cf9617971e2189a07c9a7519a5229229fe333d3295227308e6941f0af694cd9a3d131e194d99f293870d1f9e7a1caea1fc1dd11e479fda1f99990ca2c9a50c205a256724fb2389a09b9d0a28142d032e1b314c30ff22899fcea17202338b7491e7919c97a3144d93bf0b379069198996491fb11f089c2a1baa941698ff987017fba8b6a8fd1d1a9c0b908d15941f17a81435d23482a8811f2495ca8517114897b4140b99d917d994c10c3d99071fbd9c3620941512893d155b80fa9cc39e779a29a8f7a7e420f39ff790ea1ca62002960235383407a57d121398408cbf1434981719c3973b153c953a0d259e1b2121a28a1e6b9c8c18290f2914b6a0eda2139f179dc5a04621fca18a97bb21fb255f2b2f348c32642053a1e29e7183808cea954f96db97710e1391280c110e3f1ca614c7210922219bb01c8a94a39a87986c9dd4aa82aa96197c99aa0b600c9d2315aa7d353335b2aa1f22129c4600ac8032987609c79657175c93d70c58188e1eb516be20e61ccc9a0d17159316a233a110a3c0a92da9e521309dbf1b17228f2514a57835a53496a93193f7a0a40a6b0c86991e16be98fc187095320d4f975c2318a01724019e1d1d899c6915bea456a062a6cfa6b5a8fe24f4a0fa1c5b24f426f8242f35e73370a661a2cba17d0190927294a29b1e9aa10d9a8da309ba8ed51d8e1752245c2321981c1be393a4995295cf9d29ac7eabc41a370e72092b98592576abbb355d3531ac4124319ecd05ea983f94969671886414a191dd0acf1dd220b81eb220121e439e2e1891905ba403a516a50babfda864232f18b0199f245d2876a5c335cb3476acad9be8a2a990aa9451956514480d5e121191e9088a228822f7947d1e689d129bb09401107aa9f4a642a681a84ca52226d11d021bb829a22a11228d351234e7abb3a644a64d8f7d966295049d239cc114eb9072817912d11e77195825eb235099e9199791e89ae3984c9ea0ac05acf220f2940417409ac12622acf4355d35cbac09254ca0189705992798b48c6e93f01778968e0dd1206e228420d420a619a29e4117f3122ea55ea6c0a79aab43a85a2694191394a123e62975a21a369f3421aeb39d40a0769c30185d17bb106d9050892991350c4227a01cdf9f759b979cd6985f17bc1434ac7fa80ca6e4a4fe119c270320d49d8f2a3e2d3f28a835423325aec4a9dca13992a998c799b69c7e9afa12ac955d054d1be71e861ecf259f230a9aa81bcd14829e7f9bada2f3acddab852196990a97f7988b2720ac2a3650353bad37252a9d7e9c8198df982b15e684b0117e94738607234124941f2521fb9c289ccf17f718a5a68da600aa30ab90a4db27070c489ec021e82acc1d70363d3401b038187c987b9ea41c0719a588db97a78fdd91be10c5287b9c35a4819cbc9b371b68193c1537ad3da85da67e197e24b326ff195aa25229a72e102d87350c322bb077aa6721dc9606982c9c419aa0962e159f961408971bd41da621b024c1200e99ce1b93120d9c1b9de7a4d5ac42aa41218c9cc0983a9d0d270aab4f36fa340faded24fb95559f9496b89a9a16141107104995fe8c542469238622a51ebf9db09c081b901bbda64fa6d1aa10acf51083272e9a41a1e120ad29cb26c53676335bb03121681bcfa00a20fe14391011997b979d05c6119c2987a2c1a38d9cf099d71b3c1dfb0e7bad39a5cda8ba1dbd269326150d18a41827162f6d2ebf356f3141b135a92226f48f4d98469e3ba2309da0996c94a38c130a31204d233628762655941a21a714c49a3099b9a267ae99ab881ff8a0cf9929a08a2727ac77360535faac3b28bc9e4ba0f39db49e439b560c74092194c2954924ab24cc26811e2a162d993d1f321e62a6a7a332ac79ac05211b2487a28ea12321ce1e442c4a371531f6ae0627021a16a2a11e3e180512c7992996858e6411ed2aa8a5f9a09d9de48a141c1f1ed31596add5a1e6a82b1c9e28a7242aa327a23720832d3e32c735cb2dfcb12e18fb26790dfe941691b00d170f9f90f694b00c4a984d1f899a43149810919a3b1f4397f290b99f8021c119c81ccc21cd9ebc921414611c7e253a33bb321b24251b9c0ea20b058a9a943c1587177796e08ecb0bdb97e61d149fe218d91b689b841fa398dea05fa49220ae25d4256d2265a12d9d17243329522cbe316030db24c91f1a1ccd01ab92b79301153819c68f19106b07d79f5b9fd5a25322642371817a210098cc9d3fa4a99a1c2b7a2a941e6ca6aba1cb2d7230a52ec12c0529f511c095b69e1606b092d10c4792a790580ba392ab06a9956e1abb980d1c3c1b26982e1a39958485559aae1f6ca535a5ad1f6e9af48aad11691b65a26d345034bea2cd1a2b103009d190d6925d026b011d928890e0086c99991de59ce115da15859b9f1d76984a9c15a2c91d65170a18641e49a13b9c581c122249283f33b332f825501e611712072892fd966311e9143c95c48da2086f9e61188d9f13216e20629f081cc49ccba2d5a33d1d90275527991d1ea222a10a29b729432a2731cd30fe25db1ff0201a07a58f0103ce949b95551011910b091191301a3698161f081f8699641aee92d9987f9a4519cda8b3a80e1cad9b33956715ba1f14a8f934e23431a87f1f4d8da303f586618eaa8c0993580f7f8f8f086b93ab1c0498751dea1a9093071a478e6e9e35a063945da714a7ca19dd9fa49cae1d01209a99a33461349ea0ea1bff171003d1065c8d300f8c0864892484be0572987b1c1c9c151a3f160f98f71a129584a2e2a3b49fae98f396cb99fda17ca0ad23b924de296c33df322e27211c3e17bd01f28bc3939895da975289588ec209e28d941cf68d8721a0213398cf1cfd93c1982c98ad9a8eaa70aa6b8b6898da93e0933e2328aa5f3544355caa77229899290ada8f2c8d48926692590f9390260a5217d21cdb0cbd1e351d4795f81927080da1eca0e19d0ea9ada8cc14d09d3498a920562383a51135ce3490a7051cef9a4f09ad83558dd38f078fa50297880006b118511dbd848e1de11aaf817d170a86d7a4b3a38da11aa679a56b9a169f889e4b255f243324793425342191a6051899588b4a8aca8dac9bdb9a9b09be8862002e94991c7510cb2333231792921b2596b2947f0cae96f0ab98ab89170d142c0e039cf52495ab94357135fcab7d24859e8e0e7e95b5896096259432114092310d5e19fd1d94194d20f31ea6940e18198d7ca10ba2a7a036aa65a9be163b964810c621752540a860350e354baa451b7f9f180cb68cbb90a3921b895e016c83e10291202e20ee84dc1da90b6c959d979a89e0a895a5b3a209a710a5a019e41a621b4c2a3428a616d4345c3487a620a3a5a6fc8ff496001a1d9e839e8e1bd2935691139cc512531a952225226516ec93f49bd61f8283ec2148ac11ac3d245d8d4221a9a08224eaab9c35683532ac4824dfa24c0cee98f811ba9879982319d1960d0f281ba01a2c202920fd1c27152f958e85b8a00da35d9f56ab11aabc22c4948118ba20742645a897350c35c8abc40d05a06695de0d788f7c907906cb0675069f89da24df206196951c799a4c9be39c0312cfab2ca70ea5d9a6faa26b224024f91fc82c4f2be71727355234edaa9da86ca9dc8125990f0ce29c899c34167a98080efe10c31a781c9b24d4233c1443189f8c3990969b529197ac32ac1420269b1518849c3a2653acd8358a35cbac7e254e9f40963f985593889604950915bf93d285771e1b1fc11f87210b1b1893410a4c1678a221a37da484ab52a91b239e0de798921e6c2851a8d13505354eadae1f7c9d829dab1554129a0c0411450ac20fa991c1271220369c051c24a04d9da49ee21828addca710a74fa7b013212632281889a42d032dd2274d3531347fae5eab09a9dd939f95fa98e99880993f8cd294dd8e5418981c931eeb2317226c17181bce14ca9a499c78a049ac55ab2517a79b2b97f1992e2601acdd356c35a5ac65251a9b069ca496b89bda8f698b2e0e6a8ee791ae20b620e820b52135196b9a5c19a619eca291a3bea6b4abcfa78521580ecb9e411c9d2837a7ff35dc3405ae0622ac909fa1a91946088b157513b2141015248e042941187419f21ae29e9ca2f69cc81434ad3ea647aa60a86c1f90281c29b19e652c582e482ab5350034a2b00bace2a5c995ce92e99b5da1f19e009ea315829931115a20271d4b28f0279e195f1d1218a494b5a03f19d7ad23ad7321b39f2d9c759d5e27c7ac0f36aa3561ad1528689f609c329ac99ff79fac9a5398119baa997f22a3200925ba257d218f1c811e7d20cea166a401a881ac62a8d3087da070a125171325f698e535a634c3ac0324cc1ce3a35c998599890cd61bc816031806144829f018e4234a1b43a1529f0a105a9f4aa959a936aeb4a7a328282a371ef71cdc20a02e6a3108365a3122b22caae717 diff --git a/mpv/watch_later/99533EEF7D7C98388A098612D29CE95A b/mpv/watch_later/99533EEF7D7C98388A098612D29CE95A deleted file mode 100644 index 47706c9..0000000 --- a/mpv/watch_later/99533EEF7D7C98388A098612D29CE95A +++ /dev/null @@ -1,5 +0,0 @@ -start=827.473000 -volume=100.000000 -fullscreen=yes -aid=1 -sid=no |
