diff --git a/README.md b/README.md index 96dfbce..75c2116 100644 --- a/README.md +++ b/README.md @@ -5,4 +5,5 @@ zlorfi's dotfiles * create symlinks via the `make_my_dotfiles.sh` script * install patched `Source Code Pro` font for the `vim-airline` plugin * change the font of your default terminal app to patched `Source Code Pro` +* download plug.vim into autoload directory `curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim` * launch `vim` with `vim +PlugInstall +qall` to install plugins diff --git a/gvimrc b/gvimrc index 9638191..bf40c06 100644 --- a/gvimrc +++ b/gvimrc @@ -16,7 +16,7 @@ set transp=1 " let g:molokai_original = 1 " colorscheme molokai set background=light -colorscheme one +colorscheme solarized "set cmdheight=2 diff --git a/terminal_setting/Michi_terminal_solarized.terminal b/terminal_setting/Michi_terminal_solarized.terminal new file mode 100644 index 0000000..bdfde60 --- /dev/null +++ b/terminal_setting/Michi_terminal_solarized.terminal @@ -0,0 +1,1691 @@ + + + + + ANSIBlackColor + + YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECgw + LjAyNzQ1MDk4MDM5IDAuMjExNzY0NzA1OSAwLjI1ODgyMzUyOTQAEAGAAtIQERITWiRj + bGFzc25hbWVYJGNsYXNzZXNXTlNDb2xvcqISFFhOU09iamVjdF8QD05TS2V5ZWRBcmNo + aXZlctEXGFRyb290gAEIERojLTI3O0FITltijY+RlqGqsrW+0NPYAAAAAAAAAQEAAAAA + AAAAGQAAAAAAAAAAAAAAAAAAANo= + + ANSIBlueColor + + YnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T + Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjE0OTAxOTYw + NzggMC41NDUwOTgwMzkyIDAuODIzNTI5NDExOCAxTxAnMC4xMDM5MTkwNDQxIDAuNDU1 + NDA1NDE0MSAwLjc5NDcxNzQzMTEAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu + ZGF0YU8RDzAAAA8wYXBwbAIQAABtbnRyUkdCIFhZWiAH4AAKABkAFwAKADphY3NwQVBQ + TAAAAABBUFBMAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFkZXNjAAABUAAAAGJk + c2NtAAABtAAABBhjcHJ0AAAFzAAAACN3dHB0AAAF8AAAABRyWFlaAAAGBAAAABRnWFla + AAAGGAAAABRiWFlaAAAGLAAAABRyVFJDAAAGQAAACAxhYXJnAAAOTAAAACB2Y2d0AAAO + bAAAADBuZGluAAAOnAAAAD5jaGFkAAAO3AAAACxtbW9kAAAPCAAAAChiVFJDAAAGQAAA + CAxnVFJDAAAGQAAACAxhYWJnAAAOTAAAACBhYWdnAAAOTAAAACBkZXNjAAAAAAAAAAhE + aXNwbGF5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAiAAAA + DGhySFIAAAAUAAABqGtvS1IAAAAMAAABvG5iTk8AAAASAAAByGlkAAAAAAASAAAB2mh1 + SFUAAAAUAAAB7GNzQ1oAAAAWAAACAGRhREsAAAAcAAACFnVrVUEAAAAcAAACMmFyAAAA + AAAUAAACTml0SVQAAAAUAAACYnJvUk8AAAASAAACdm5sTkwAAAAWAAACiGhlSUwAAAAW + AAACnmVzRVMAAAASAAACdmZpRkkAAAAQAAACtHpoVFcAAAAMAAACxHZpVk4AAAAOAAAC + 0HNrU0sAAAAWAAAC3npoQ04AAAAMAAACxHJ1UlUAAAAkAAAC9GZyRlIAAAAWAAADGG1z + AAAAAAASAAADLmNhRVMAAAAYAAADQHRoVEgAAAAMAAADWGVzWEwAAAASAAACdmRlREUA + AAAQAAADZGVuVVMAAAASAAADdHB0QlIAAAAYAAADhnBsUEwAAAASAAADnmVsR1IAAAAi + AAADsHN2U0UAAAAQAAAD0nRyVFIAAAAUAAAD4mphSlAAAAAMAAAD9nB0UFQAAAAWAAAE + AgBMAEMARAAgAHUAIABiAG8AagBpzuy37AAgAEwAQwBEAEYAYQByAGcAZQAtAEwAQwBE + AEwAQwBEACAAVwBhAHIAbgBhAFMAegDtAG4AZQBzACAATABDAEQAQgBhAHIAZQB2AG4A + /QAgAEwAQwBEAEwAQwBEAC0AZgBhAHIAdgBlAHMAawDmAHIAbQQaBD4EOwRMBD4EQAQ+ + BDIEOAQ5ACAATABDAEQgDwBMAEMARAAgBkUGRAZIBkYGKQBMAEMARAAgAGMAbwBsAG8A + cgBpAEwAQwBEACAAYwBvAGwAbwByAEsAbABlAHUAcgBlAG4ALQBMAEMARCAPAEwAQwBE + ACAF5gXRBeIF1QXgBdkAVgDkAHIAaQAtAEwAQwBEX2mCcgAgAEwAQwBEAEwAQwBEACAA + TQDgAHUARgBhAHIAZQBiAG4A6QAgAEwAQwBEBCYEMgQ1BEIEPQQ+BDkAIAQWBBoALQQ0 + BDgEQQQ/BDsENQQ5AEwAQwBEACAAYwBvAHUAbABlAHUAcgBXAGEAcgBuAGEAIABMAEMA + RABMAEMARAAgAGUAbgAgAGMAbwBsAG8AcgBMAEMARAAgDioONQBGAGEAcgBiAC0ATABD + AEQAQwBvAGwAbwByACAATABDAEQATABDAEQAIABDAG8AbABvAHIAaQBkAG8ASwBvAGwA + bwByACAATABDAEQDiAOzA8cDwQPJA7wDtwAgA78DuAPMA70DtwAgAEwAQwBEAEYA5ABy + AGcALQBMAEMARABSAGUAbgBrAGwAaQAgAEwAQwBEMKsw6TD8AEwAQwBEAEwAQwBEACAA + YQAgAEMAbwByAGUAc3RleHQAAAAAQ29weXJpZ2h0IEFwcGxlIEluYy4sIDIwMTYAAFhZ + WiAAAAAAAADzFgABAAAAARbKWFlaIAAAAAAAAHHAAAA5igAAAWdYWVogAAAAAAAAYSMA + ALnmAAAT9lhZWiAAAAAAAAAj8gAADJAAAL3QY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZ + AB4AIwAoAC0AMgA2ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUA + mgCfAKMAqACtALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEf + ASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB + 2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLB + AssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD + 7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJ + BVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG + 9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjS + COcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvML + CwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10 + DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQ + QxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxND + E2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8W + shbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpR + GncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAe + ah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKv + It0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kn + eierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxu + LKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox + 8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDec + N9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE9 + 4D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RH + RIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxL + U0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8 + UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4Wgda + VlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJ + Ypxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q + 92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4 + dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9 + QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobX + hzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaR + P5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuv + nByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum + /adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJL + ssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+ + hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3 + yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX + 4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T8 + 5YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozz + GfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//9wYXJh + AAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKDnZjZ3QAAAAAAAAAAQABAAAAAAAAAAEA + AAABAAAAAAAAAAEAAAABAAAAAAAAAAEAAG5kaW4AAAAAAAAANgAAp0AAAFWAAABMwAAA + nsAAACWAAAAMwAAAUAAAAFRAAAIzMwACMzMAAjMzAAAAAAAAAABzZjMyAAAAAAABDHIA + AAX4///zHQAAB7oAAP1y///7nf///aQAAAPZAADAcW1tb2QAAAAAAAAGEAAAoCIAAAAA + zSOCzAAAAAAAAAAAAAAAAAAAAACABNIcHR4fWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNN + dXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN00hwdIyRcTlNDb2xvclNwYWNloiUh + XE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFfEA9OU0tleWVkQXJjaGl2ZXLRKyxU + cm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBjAHAAhQCMALcA4QDjAOUA5wDsAPIA + 9AD2APsBAxA3EDkQPhBJEFIQYBBkEGsQdBB5EIYQiRCWEJsQoxCmELgQuxDAAAAAAAAA + AgEAAAAAAAAALQAAAAAAAAAAAAAAAAAAEMI= + + ANSIBrightBlackColor + + YnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T + Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPEBwwIDAuMTY4NjI3 + NDUxIDAuMjExNzY0NzA1OSAxTxAcMCAwLjEyNjA2MzczNDMgMC4xNjE2MDI5NDQxABAB + gAKABtIUDRUWVU5TSUNDgAOABdIYDRkaV05TLmRhdGFPEQ8wAAAPMGFwcGwCEAAAbW50 + clJHQiBYWVogB+AACgAZABcACgA6YWNzcEFQUEwAAAAAQVBQTAAAAAAAAAAAAAAAAAAA + AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAARZGVzYwAAAVAAAABiZHNjbQAAAbQAAAQYY3BydAAABcwAAAAj + d3RwdAAABfAAAAAUclhZWgAABgQAAAAUZ1hZWgAABhgAAAAUYlhZWgAABiwAAAAUclRS + QwAABkAAAAgMYWFyZwAADkwAAAAgdmNndAAADmwAAAAwbmRpbgAADpwAAAA+Y2hhZAAA + DtwAAAAsbW1vZAAADwgAAAAoYlRSQwAABkAAAAgMZ1RSQwAABkAAAAgMYWFiZwAADkwA + AAAgYWFnZwAADkwAAAAgZGVzYwAAAAAAAAAIRGlzcGxheQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAG1sdWMAAAAAAAAAIgAAAAxockhSAAAAFAAAAahrb0tSAAAADAAA + AbxuYk5PAAAAEgAAAchpZAAAAAAAEgAAAdpodUhVAAAAFAAAAexjc0NaAAAAFgAAAgBk + YURLAAAAHAAAAhZ1a1VBAAAAHAAAAjJhcgAAAAAAFAAAAk5pdElUAAAAFAAAAmJyb1JP + AAAAEgAAAnZubE5MAAAAFgAAAohoZUlMAAAAFgAAAp5lc0VTAAAAEgAAAnZmaUZJAAAA + EAAAArR6aFRXAAAADAAAAsR2aVZOAAAADgAAAtBza1NLAAAAFgAAAt56aENOAAAADAAA + AsRydVJVAAAAJAAAAvRmckZSAAAAFgAAAxhtcwAAAAAAEgAAAy5jYUVTAAAAGAAAA0B0 + aFRIAAAADAAAA1hlc1hMAAAAEgAAAnZkZURFAAAAEAAAA2RlblVTAAAAEgAAA3RwdEJS + AAAAGAAAA4ZwbFBMAAAAEgAAA55lbEdSAAAAIgAAA7BzdlNFAAAAEAAAA9J0clRSAAAA + FAAAA+JqYUpQAAAADAAAA/ZwdFBUAAAAFgAABAIATABDAEQAIAB1ACAAYgBvAGoAac7s + t+wAIABMAEMARABGAGEAcgBnAGUALQBMAEMARABMAEMARAAgAFcAYQByAG4AYQBTAHoA + 7QBuAGUAcwAgAEwAQwBEAEIAYQByAGUAdgBuAP0AIABMAEMARABMAEMARAAtAGYAYQBy + AHYAZQBzAGsA5gByAG0EGgQ+BDsETAQ+BEAEPgQyBDgEOQAgAEwAQwBEIA8ATABDAEQA + IAZFBkQGSAZGBikATABDAEQAIABjAG8AbABvAHIAaQBMAEMARAAgAGMAbwBsAG8AcgBL + AGwAZQB1AHIAZQBuAC0ATABDAEQgDwBMAEMARAAgBeYF0QXiBdUF4AXZAFYA5AByAGkA + LQBMAEMARF9pgnIAIABMAEMARABMAEMARAAgAE0A4AB1AEYAYQByAGUAYgBuAOkAIABM + AEMARAQmBDIENQRCBD0EPgQ5ACAEFgQaAC0ENAQ4BEEEPwQ7BDUEOQBMAEMARAAgAGMA + bwB1AGwAZQB1AHIAVwBhAHIAbgBhACAATABDAEQATABDAEQAIABlAG4AIABjAG8AbABv + AHIATABDAEQAIA4qDjUARgBhAHIAYgAtAEwAQwBEAEMAbwBsAG8AcgAgAEwAQwBEAEwA + QwBEACAAQwBvAGwAbwByAGkAZABvAEsAbwBsAG8AcgAgAEwAQwBEA4gDswPHA8EDyQO8 + A7cAIAO/A7gDzAO9A7cAIABMAEMARABGAOQAcgBnAC0ATABDAEQAUgBlAG4AawBsAGkA + IABMAEMARDCrMOkw/ABMAEMARABMAEMARAAgAGEAIABDAG8AcgBlAHN0ZXh0AAAAAENv + cHlyaWdodCBBcHBsZSBJbmMuLCAyMDE2AABYWVogAAAAAAAA8xYAAQAAAAEWylhZWiAA + AAAAAABxwAAAOYoAAAFnWFlaIAAAAAAAAGEjAAC55gAAE/ZYWVogAAAAAAAAI/IAAAyQ + AAC90GN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAtADIANgA7AEAARQBKAE8A + VABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCjAKgArQCyALcAvADBAMYAywDQ + ANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIBWQFgAWcB + bgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4 + AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgD + QwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQtBDsESARVBGMEcQR+ + BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF1QXlBfYG + BgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeGB5kHrAe/ + B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJTwlkCXkJjwmkCboJ + zwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1ELaQuAC5gLsAvIC+EL+QwS + DCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakNww3eDfgOEw4uDkkOZA5/DpsO + tg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDXEPURExExEU8RbRGM + EaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MTpBPFE+UUBhQnFEkUahSLFK0U + zhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhA + GGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4obshvaHAIc + KhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/H+ogFSBB + IGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk + 2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymd + KdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYtqy3hLhYuTC6CLrcu + 7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy1DMNM0YzfzO4M/E0KzRl + NJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85vDn5OjY6 + dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/iQCNAZECm + QOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdGq0bwRzVH + e0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2TTdxOJU5u + TrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtVKFV1VcJW + D1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0VblVvlXDVchlzWXSddeF3J + XhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBjQ2OXY+tkQGSUZOllPWWSZedm + PWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2una/9sV2yvbQhtYG25bhJua27E + bx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUodYV14XY+dpt2+HdWd7N4 + EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+wn8jf4R/5YBHgKiBCoFr + gc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZif6KZIrKizCL + lov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS45NNk7aUIJSKlPSVX5XJ + ljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc951kndKeQJ6unx2fi5/6oGmg + 2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqPqwKrdavp + rFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2ebbwt2i3 + 4LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48JfwtvDWMPU + xFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQ + utE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF3IrdEN2W + 3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3mlucf56noMui86Ubp0Opb6uXr + cOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe9m32+/eK+Bn4qPk4 + +cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf//cGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT + 0AAACg52Y2d0AAAAAAAAAAEAAQAAAAAAAAABAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAB + AABuZGluAAAAAAAAADYAAKdAAABVgAAATMAAAJ7AAAAlgAAADMAAAFAAAABUQAACMzMA + AjMzAAIzMwAAAAAAAAAAc2YzMgAAAAAAAQxyAAAF+P//8x0AAAe6AAD9cv//+53///2k + AAAD2QAAwHFtbW9kAAAAAAAABhAAAKAiAAAAAM0jgswAAAAAAAAAAAAAAAAAAAAAgATS + HB0eH1okY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHiAhVk5TRGF0YVhO + U09iamVjdNIcHSMkXE5TQ29sb3JTcGFjZaIlIVxOU0NvbG9yU3BhY2XSHB0nKFdOU0Nv + bG9yoichXxAPTlNLZXllZEFyY2hpdmVy0SssVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8A + RQBQAF0AYwBwAIUAjACrAMoAzADOANAA1QDbAN0A3wDkAOwQIBAiECcQMhA7EEkQTRBU + EF0QYhBvEHIQfxCEEIwQjxChEKQQqQAAAAAAAAIBAAAAAAAAAC0AAAAAAAAAAAAAAAAA + ABCr + + ANSIBrightBlueColor + + YnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T + Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjUxMzcyNTQ5 + MDIgMC41ODAzOTIxNTY5IDAuNTg4MjM1Mjk0MSAxTxAnMC40Mzg1Njk4NDM4IDAuNTA5 + Nzg2NTQ2MiAwLjUxNzg4NDE5NDkAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu + ZGF0YU8RDzAAAA8wYXBwbAIQAABtbnRyUkdCIFhZWiAH4AAKABkAFwAKADphY3NwQVBQ + TAAAAABBUFBMAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFkZXNjAAABUAAAAGJk + c2NtAAABtAAABBhjcHJ0AAAFzAAAACN3dHB0AAAF8AAAABRyWFlaAAAGBAAAABRnWFla + AAAGGAAAABRiWFlaAAAGLAAAABRyVFJDAAAGQAAACAxhYXJnAAAOTAAAACB2Y2d0AAAO + bAAAADBuZGluAAAOnAAAAD5jaGFkAAAO3AAAACxtbW9kAAAPCAAAAChiVFJDAAAGQAAA + CAxnVFJDAAAGQAAACAxhYWJnAAAOTAAAACBhYWdnAAAOTAAAACBkZXNjAAAAAAAAAAhE + aXNwbGF5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAiAAAA + DGhySFIAAAAUAAABqGtvS1IAAAAMAAABvG5iTk8AAAASAAAByGlkAAAAAAASAAAB2mh1 + SFUAAAAUAAAB7GNzQ1oAAAAWAAACAGRhREsAAAAcAAACFnVrVUEAAAAcAAACMmFyAAAA + AAAUAAACTml0SVQAAAAUAAACYnJvUk8AAAASAAACdm5sTkwAAAAWAAACiGhlSUwAAAAW + AAACnmVzRVMAAAASAAACdmZpRkkAAAAQAAACtHpoVFcAAAAMAAACxHZpVk4AAAAOAAAC + 0HNrU0sAAAAWAAAC3npoQ04AAAAMAAACxHJ1UlUAAAAkAAAC9GZyRlIAAAAWAAADGG1z + AAAAAAASAAADLmNhRVMAAAAYAAADQHRoVEgAAAAMAAADWGVzWEwAAAASAAACdmRlREUA + AAAQAAADZGVuVVMAAAASAAADdHB0QlIAAAAYAAADhnBsUEwAAAASAAADnmVsR1IAAAAi + AAADsHN2U0UAAAAQAAAD0nRyVFIAAAAUAAAD4mphSlAAAAAMAAAD9nB0UFQAAAAWAAAE + AgBMAEMARAAgAHUAIABiAG8AagBpzuy37AAgAEwAQwBEAEYAYQByAGcAZQAtAEwAQwBE + AEwAQwBEACAAVwBhAHIAbgBhAFMAegDtAG4AZQBzACAATABDAEQAQgBhAHIAZQB2AG4A + /QAgAEwAQwBEAEwAQwBEAC0AZgBhAHIAdgBlAHMAawDmAHIAbQQaBD4EOwRMBD4EQAQ+ + BDIEOAQ5ACAATABDAEQgDwBMAEMARAAgBkUGRAZIBkYGKQBMAEMARAAgAGMAbwBsAG8A + cgBpAEwAQwBEACAAYwBvAGwAbwByAEsAbABlAHUAcgBlAG4ALQBMAEMARCAPAEwAQwBE + ACAF5gXRBeIF1QXgBdkAVgDkAHIAaQAtAEwAQwBEX2mCcgAgAEwAQwBEAEwAQwBEACAA + TQDgAHUARgBhAHIAZQBiAG4A6QAgAEwAQwBEBCYEMgQ1BEIEPQQ+BDkAIAQWBBoALQQ0 + BDgEQQQ/BDsENQQ5AEwAQwBEACAAYwBvAHUAbABlAHUAcgBXAGEAcgBuAGEAIABMAEMA + RABMAEMARAAgAGUAbgAgAGMAbwBsAG8AcgBMAEMARAAgDioONQBGAGEAcgBiAC0ATABD + AEQAQwBvAGwAbwByACAATABDAEQATABDAEQAIABDAG8AbABvAHIAaQBkAG8ASwBvAGwA + bwByACAATABDAEQDiAOzA8cDwQPJA7wDtwAgA78DuAPMA70DtwAgAEwAQwBEAEYA5ABy + AGcALQBMAEMARABSAGUAbgBrAGwAaQAgAEwAQwBEMKsw6TD8AEwAQwBEAEwAQwBEACAA + YQAgAEMAbwByAGUAc3RleHQAAAAAQ29weXJpZ2h0IEFwcGxlIEluYy4sIDIwMTYAAFhZ + WiAAAAAAAADzFgABAAAAARbKWFlaIAAAAAAAAHHAAAA5igAAAWdYWVogAAAAAAAAYSMA + ALnmAAAT9lhZWiAAAAAAAAAj8gAADJAAAL3QY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZ + AB4AIwAoAC0AMgA2ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUA + mgCfAKMAqACtALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEf + ASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB + 2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLB + AssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD + 7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJ + BVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG + 9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjS + COcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvML + CwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10 + DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQ + QxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxND + E2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8W + shbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpR + GncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAe + ah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKv + It0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kn + eierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxu + LKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox + 8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDec + N9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE9 + 4D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RH + RIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxL + U0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8 + UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4Wgda + VlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJ + Ypxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q + 92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4 + dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9 + QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobX + hzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaR + P5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuv + nByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum + /adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJL + ssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+ + hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3 + yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX + 4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T8 + 5YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozz + GfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//9wYXJh + AAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKDnZjZ3QAAAAAAAAAAQABAAAAAAAAAAEA + AAABAAAAAAAAAAEAAAABAAAAAAAAAAEAAG5kaW4AAAAAAAAANgAAp0AAAFWAAABMwAAA + nsAAACWAAAAMwAAAUAAAAFRAAAIzMwACMzMAAjMzAAAAAAAAAABzZjMyAAAAAAABDHIA + AAX4///zHQAAB7oAAP1y///7nf///aQAAAPZAADAcW1tb2QAAAAAAAAGEAAAoCIAAAAA + zSOCzAAAAAAAAAAAAAAAAAAAAACABNIcHR4fWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNN + dXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN00hwdIyRcTlNDb2xvclNwYWNloiUh + XE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFfEA9OU0tleWVkQXJjaGl2ZXLRKyxU + cm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBjAHAAhQCMALcA4QDjAOUA5wDsAPIA + 9AD2APsBAxA3EDkQPhBJEFIQYBBkEGsQdBB5EIYQiRCWEJsQoxCmELgQuxDAAAAAAAAA + AgEAAAAAAAAALQAAAAAAAAAAAAAAAAAAEMI= + + ANSIBrightCyanColor + + YnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T + Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECYwLjU3NjQ3MDU4 + ODIgMC42MzEzNzI1NDkgMC42MzEzNzI1NDkgMU8QJzAuNTA0MzIxOTMyOCAwLjU2NTE1 + NzA1NTkgMC41NjQyMTY2NzM0ABABgAKABtIUDRUWVU5TSUNDgAOABdIYDRkaV05TLmRh + dGFPEQ8wAAAPMGFwcGwCEAAAbW50clJHQiBYWVogB+AACgAZABcACgA6YWNzcEFQUEwA + AAAAQVBQTAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARZGVzYwAAAVAAAABiZHNj + bQAAAbQAAAQYY3BydAAABcwAAAAjd3RwdAAABfAAAAAUclhZWgAABgQAAAAUZ1hZWgAA + BhgAAAAUYlhZWgAABiwAAAAUclRSQwAABkAAAAgMYWFyZwAADkwAAAAgdmNndAAADmwA + AAAwbmRpbgAADpwAAAA+Y2hhZAAADtwAAAAsbW1vZAAADwgAAAAoYlRSQwAABkAAAAgM + Z1RSQwAABkAAAAgMYWFiZwAADkwAAAAgYWFnZwAADkwAAAAgZGVzYwAAAAAAAAAIRGlz + cGxheQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1sdWMAAAAAAAAAIgAAAAxo + ckhSAAAAFAAAAahrb0tSAAAADAAAAbxuYk5PAAAAEgAAAchpZAAAAAAAEgAAAdpodUhV + AAAAFAAAAexjc0NaAAAAFgAAAgBkYURLAAAAHAAAAhZ1a1VBAAAAHAAAAjJhcgAAAAAA + FAAAAk5pdElUAAAAFAAAAmJyb1JPAAAAEgAAAnZubE5MAAAAFgAAAohoZUlMAAAAFgAA + Ap5lc0VTAAAAEgAAAnZmaUZJAAAAEAAAArR6aFRXAAAADAAAAsR2aVZOAAAADgAAAtBz + a1NLAAAAFgAAAt56aENOAAAADAAAAsRydVJVAAAAJAAAAvRmckZSAAAAFgAAAxhtcwAA + AAAAEgAAAy5jYUVTAAAAGAAAA0B0aFRIAAAADAAAA1hlc1hMAAAAEgAAAnZkZURFAAAA + EAAAA2RlblVTAAAAEgAAA3RwdEJSAAAAGAAAA4ZwbFBMAAAAEgAAA55lbEdSAAAAIgAA + A7BzdlNFAAAAEAAAA9J0clRSAAAAFAAAA+JqYUpQAAAADAAAA/ZwdFBUAAAAFgAABAIA + TABDAEQAIAB1ACAAYgBvAGoAac7st+wAIABMAEMARABGAGEAcgBnAGUALQBMAEMARABM + AEMARAAgAFcAYQByAG4AYQBTAHoA7QBuAGUAcwAgAEwAQwBEAEIAYQByAGUAdgBuAP0A + IABMAEMARABMAEMARAAtAGYAYQByAHYAZQBzAGsA5gByAG0EGgQ+BDsETAQ+BEAEPgQy + BDgEOQAgAEwAQwBEIA8ATABDAEQAIAZFBkQGSAZGBikATABDAEQAIABjAG8AbABvAHIA + aQBMAEMARAAgAGMAbwBsAG8AcgBLAGwAZQB1AHIAZQBuAC0ATABDAEQgDwBMAEMARAAg + BeYF0QXiBdUF4AXZAFYA5AByAGkALQBMAEMARF9pgnIAIABMAEMARABMAEMARAAgAE0A + 4AB1AEYAYQByAGUAYgBuAOkAIABMAEMARAQmBDIENQRCBD0EPgQ5ACAEFgQaAC0ENAQ4 + BEEEPwQ7BDUEOQBMAEMARAAgAGMAbwB1AGwAZQB1AHIAVwBhAHIAbgBhACAATABDAEQA + TABDAEQAIABlAG4AIABjAG8AbABvAHIATABDAEQAIA4qDjUARgBhAHIAYgAtAEwAQwBE + AEMAbwBsAG8AcgAgAEwAQwBEAEwAQwBEACAAQwBvAGwAbwByAGkAZABvAEsAbwBsAG8A + cgAgAEwAQwBEA4gDswPHA8EDyQO8A7cAIAO/A7gDzAO9A7cAIABMAEMARABGAOQAcgBn + AC0ATABDAEQAUgBlAG4AawBsAGkAIABMAEMARDCrMOkw/ABMAEMARABMAEMARAAgAGEA + IABDAG8AcgBlAHN0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSBJbmMuLCAyMDE2AABYWVog + AAAAAAAA8xYAAQAAAAEWylhZWiAAAAAAAABxwAAAOYoAAAFnWFlaIAAAAAAAAGEjAAC5 + 5gAAE/ZYWVogAAAAAAAAI/IAAAyQAAC90GN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAe + ACMAKAAtADIANgA7AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoA + nwCjAKgArQCyALcAvADBAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwEl + ASsBMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB + 4QHpAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLL + AtUC4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD + +QQGBBMEIAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVY + BWcFdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUH + BwcZBysHPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjn + CPsJEAklCToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsL + Igs5C1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2O + DakNww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQ + YRB+EJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNj + E4MTpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW + 1hb6Fx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3 + Gp4axRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoe + lB6+HukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLd + IwojOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3on + qyfcKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyi + LNctDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIy + KjJjMpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfX + OBQ4UDiMOMg5BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ + ID5gPqA+4D8hP2E/oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SK + RM5FEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NL + mkviTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLH + UxNTX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZa + plr1W0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKc + YvBjQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdr + T2una/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQU + dHB0zHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9 + oX4BfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7 + h5+IBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+R + qJIRknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wc + nImc951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2n + bqfgqFKoxKk3qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LC + szizrrQltJy1E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+ + /796v/XAcMDswWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2 + y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DY + ZNjo2WzZ8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE + 5g3mlucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnz + p/Q09ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf//cGFyYQAA + AAAAAwAAAAJmZgAA8qcAAA1ZAAAT0AAACg52Y2d0AAAAAAAAAAEAAQAAAAAAAAABAAAA + AQAAAAAAAAABAAAAAQAAAAAAAAABAABuZGluAAAAAAAAADYAAKdAAABVgAAATMAAAJ7A + AAAlgAAADMAAAFAAAABUQAACMzMAAjMzAAIzMwAAAAAAAAAAc2YzMgAAAAAAAQxyAAAF + +P//8x0AAAe6AAD9cv//+53///2kAAAD2QAAwHFtbW9kAAAAAAAABhAAAKAiAAAAAM0j + gswAAAAAAAAAAAAAAAAAAAAAgATSHB0eH1okY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0 + YWJsZURhdGGjHiAhVk5TRGF0YVhOU09iamVjdNIcHSMkXE5TQ29sb3JTcGFjZaIlIVxO + U0NvbG9yU3BhY2XSHB0nKFdOU0NvbG9yoichXxAPTlNLZXllZEFyY2hpdmVy0SssVHJv + b3SAAQAIABEAGgAjAC0AMgA3AD8ARQBQAF0AYwBwAIUAjAC1AN8A4QDjAOUA6gDwAPIA + 9AD5AQEQNRA3EDwQRxBQEF4QYhBpEHIQdxCEEIcQlBCZEKEQpBC2ELkQvgAAAAAAAAIB + AAAAAAAAAC0AAAAAAAAAAAAAAAAAABDA + + ANSIBrightGreenColor + + YnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T + Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECcwLjM0NTA5ODAz + OTIgMC40MzEzNzI1NDkgMC40NTg4MjM1Mjk0IDFPECcwLjI3NDIwODY5NDcgMC4zNTY0 + MzE2OTI4IDAuMzg0ODE5NjI2OAAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5k + YXRhTxEPMAAADzBhcHBsAhAAAG1udHJSR0IgWFlaIAfgAAoAGQAXAAoAOmFjc3BBUFBM + AAAAAEFQUEwAAAAAAAAAAAAAAAAAAAAAAAD21gABAAAAANMtYXBwbAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWRlc2MAAAFQAAAAYmRz + Y20AAAG0AAAEGGNwcnQAAAXMAAAAI3d0cHQAAAXwAAAAFHJYWVoAAAYEAAAAFGdYWVoA + AAYYAAAAFGJYWVoAAAYsAAAAFHJUUkMAAAZAAAAIDGFhcmcAAA5MAAAAIHZjZ3QAAA5s + AAAAMG5kaW4AAA6cAAAAPmNoYWQAAA7cAAAALG1tb2QAAA8IAAAAKGJUUkMAAAZAAAAI + DGdUUkMAAAZAAAAIDGFhYmcAAA5MAAAAIGFhZ2cAAA5MAAAAIGRlc2MAAAAAAAAACERp + c3BsYXkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAACIAAAAM + aHJIUgAAABQAAAGoa29LUgAAAAwAAAG8bmJOTwAAABIAAAHIaWQAAAAAABIAAAHaaHVI + VQAAABQAAAHsY3NDWgAAABYAAAIAZGFESwAAABwAAAIWdWtVQQAAABwAAAIyYXIAAAAA + ABQAAAJOaXRJVAAAABQAAAJicm9STwAAABIAAAJ2bmxOTAAAABYAAAKIaGVJTAAAABYA + AAKeZXNFUwAAABIAAAJ2ZmlGSQAAABAAAAK0emhUVwAAAAwAAALEdmlWTgAAAA4AAALQ + c2tTSwAAABYAAALeemhDTgAAAAwAAALEcnVSVQAAACQAAAL0ZnJGUgAAABYAAAMYbXMA + AAAAABIAAAMuY2FFUwAAABgAAANAdGhUSAAAAAwAAANYZXNYTAAAABIAAAJ2ZGVERQAA + ABAAAANkZW5VUwAAABIAAAN0cHRCUgAAABgAAAOGcGxQTAAAABIAAAOeZWxHUgAAACIA + AAOwc3ZTRQAAABAAAAPSdHJUUgAAABQAAAPiamFKUAAAAAwAAAP2cHRQVAAAABYAAAQC + AEwAQwBEACAAdQAgAGIAbwBqAGnO7LfsACAATABDAEQARgBhAHIAZwBlAC0ATABDAEQA + TABDAEQAIABXAGEAcgBuAGEAUwB6AO0AbgBlAHMAIABMAEMARABCAGEAcgBlAHYAbgD9 + ACAATABDAEQATABDAEQALQBmAGEAcgB2AGUAcwBrAOYAcgBtBBoEPgQ7BEwEPgRABD4E + MgQ4BDkAIABMAEMARCAPAEwAQwBEACAGRQZEBkgGRgYpAEwAQwBEACAAYwBvAGwAbwBy + AGkATABDAEQAIABjAG8AbABvAHIASwBsAGUAdQByAGUAbgAtAEwAQwBEIA8ATABDAEQA + IAXmBdEF4gXVBeAF2QBWAOQAcgBpAC0ATABDAERfaYJyACAATABDAEQATABDAEQAIABN + AOAAdQBGAGEAcgBlAGIAbgDpACAATABDAEQEJgQyBDUEQgQ9BD4EOQAgBBYEGgAtBDQE + OARBBD8EOwQ1BDkATABDAEQAIABjAG8AdQBsAGUAdQByAFcAYQByAG4AYQAgAEwAQwBE + AEwAQwBEACAAZQBuACAAYwBvAGwAbwByAEwAQwBEACAOKg41AEYAYQByAGIALQBMAEMA + RABDAG8AbABvAHIAIABMAEMARABMAEMARAAgAEMAbwBsAG8AcgBpAGQAbwBLAG8AbABv + AHIAIABMAEMARAOIA7MDxwPBA8kDvAO3ACADvwO4A8wDvQO3ACAATABDAEQARgDkAHIA + ZwAtAEwAQwBEAFIAZQBuAGsAbABpACAATABDAEQwqzDpMPwATABDAEQATABDAEQAIABh + ACAAQwBvAHIAZQBzdGV4dAAAAABDb3B5cmlnaHQgQXBwbGUgSW5jLiwgMjAxNgAAWFla + IAAAAAAAAPMWAAEAAAABFspYWVogAAAAAAAAccAAADmKAAABZ1hZWiAAAAAAAABhIwAA + ueYAABP2WFlaIAAAAAAAACPyAAAMkAAAvdBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkA + HgAjACgALQAyADYAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCa + AJ8AowCoAK0AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8B + JQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZ + AeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsEC + ywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APs + A/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkF + WAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1 + BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII + 5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsL + CyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQN + jg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBD + EGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MT + YxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxay + FtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEa + dxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5q + HpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i + 3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6 + J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4s + oizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHy + MioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w3 + 1zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3g + PiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdE + ikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtT + S5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxS + x1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pW + WqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1Ykli + nGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3 + a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0 + FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1B + faF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteH + O4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/ + kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c + HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9 + p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuy + wrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6E + vv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfL + Nsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg + 2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5Pzl + hOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ + 86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//3BhcmEA + AAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAAoOdmNndAAAAAAAAAABAAEAAAAAAAAAAQAA + AAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAbmRpbgAAAAAAAAA2AACnQAAAVYAAAEzAAACe + wAAAJYAAAAzAAABQAAAAVEAAAjMzAAIzMwACMzMAAAAAAAAAAHNmMzIAAAAAAAEMcgAA + Bfj///MdAAAHugAA/XL///ud///9pAAAA9kAAMBxbW1vZAAAAAAAAAYQAACgIgAAAADN + I4LMAAAAAAAAAAAAAAAAAAAAAIAE0hwdHh9aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011 + dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TSHB0jJFxOU0NvbG9yU3BhY2WiJSFc + TlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8QD05TS2V5ZWRBcmNoaXZlctErLFRy + b290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMAcACFAIwAtgDgAOIA5ADmAOsA8QDz + APUA+gECEDYQOBA9EEgQURBfEGMQahBzEHgQhRCIEJUQmhCiEKUQtxC6EL8AAAAAAAAC + AQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAQwQ== + + ANSIBrightMagentaColor + + YnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T + Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECcwLjQyMzUyOTQx + MTggMC40NDMxMzcyNTQ5IDAuNzY4NjI3NDUxIDFPECcwLjM0NTU2MTI2NTkgMC4zNDA5 + NzgyNjQ4IDAuNzI5MzUyODkxNAAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5k + YXRhTxEPMAAADzBhcHBsAhAAAG1udHJSR0IgWFlaIAfgAAoAGQAXAAoAOmFjc3BBUFBM + AAAAAEFQUEwAAAAAAAAAAAAAAAAAAAAAAAD21gABAAAAANMtYXBwbAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWRlc2MAAAFQAAAAYmRz + Y20AAAG0AAAEGGNwcnQAAAXMAAAAI3d0cHQAAAXwAAAAFHJYWVoAAAYEAAAAFGdYWVoA + AAYYAAAAFGJYWVoAAAYsAAAAFHJUUkMAAAZAAAAIDGFhcmcAAA5MAAAAIHZjZ3QAAA5s + AAAAMG5kaW4AAA6cAAAAPmNoYWQAAA7cAAAALG1tb2QAAA8IAAAAKGJUUkMAAAZAAAAI + DGdUUkMAAAZAAAAIDGFhYmcAAA5MAAAAIGFhZ2cAAA5MAAAAIGRlc2MAAAAAAAAACERp + c3BsYXkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAACIAAAAM + aHJIUgAAABQAAAGoa29LUgAAAAwAAAG8bmJOTwAAABIAAAHIaWQAAAAAABIAAAHaaHVI + VQAAABQAAAHsY3NDWgAAABYAAAIAZGFESwAAABwAAAIWdWtVQQAAABwAAAIyYXIAAAAA + ABQAAAJOaXRJVAAAABQAAAJicm9STwAAABIAAAJ2bmxOTAAAABYAAAKIaGVJTAAAABYA + AAKeZXNFUwAAABIAAAJ2ZmlGSQAAABAAAAK0emhUVwAAAAwAAALEdmlWTgAAAA4AAALQ + c2tTSwAAABYAAALeemhDTgAAAAwAAALEcnVSVQAAACQAAAL0ZnJGUgAAABYAAAMYbXMA + AAAAABIAAAMuY2FFUwAAABgAAANAdGhUSAAAAAwAAANYZXNYTAAAABIAAAJ2ZGVERQAA + ABAAAANkZW5VUwAAABIAAAN0cHRCUgAAABgAAAOGcGxQTAAAABIAAAOeZWxHUgAAACIA + AAOwc3ZTRQAAABAAAAPSdHJUUgAAABQAAAPiamFKUAAAAAwAAAP2cHRQVAAAABYAAAQC + AEwAQwBEACAAdQAgAGIAbwBqAGnO7LfsACAATABDAEQARgBhAHIAZwBlAC0ATABDAEQA + TABDAEQAIABXAGEAcgBuAGEAUwB6AO0AbgBlAHMAIABMAEMARABCAGEAcgBlAHYAbgD9 + ACAATABDAEQATABDAEQALQBmAGEAcgB2AGUAcwBrAOYAcgBtBBoEPgQ7BEwEPgRABD4E + MgQ4BDkAIABMAEMARCAPAEwAQwBEACAGRQZEBkgGRgYpAEwAQwBEACAAYwBvAGwAbwBy + AGkATABDAEQAIABjAG8AbABvAHIASwBsAGUAdQByAGUAbgAtAEwAQwBEIA8ATABDAEQA + IAXmBdEF4gXVBeAF2QBWAOQAcgBpAC0ATABDAERfaYJyACAATABDAEQATABDAEQAIABN + AOAAdQBGAGEAcgBlAGIAbgDpACAATABDAEQEJgQyBDUEQgQ9BD4EOQAgBBYEGgAtBDQE + OARBBD8EOwQ1BDkATABDAEQAIABjAG8AdQBsAGUAdQByAFcAYQByAG4AYQAgAEwAQwBE + AEwAQwBEACAAZQBuACAAYwBvAGwAbwByAEwAQwBEACAOKg41AEYAYQByAGIALQBMAEMA + RABDAG8AbABvAHIAIABMAEMARABMAEMARAAgAEMAbwBsAG8AcgBpAGQAbwBLAG8AbABv + AHIAIABMAEMARAOIA7MDxwPBA8kDvAO3ACADvwO4A8wDvQO3ACAATABDAEQARgDkAHIA + ZwAtAEwAQwBEAFIAZQBuAGsAbABpACAATABDAEQwqzDpMPwATABDAEQATABDAEQAIABh + ACAAQwBvAHIAZQBzdGV4dAAAAABDb3B5cmlnaHQgQXBwbGUgSW5jLiwgMjAxNgAAWFla + IAAAAAAAAPMWAAEAAAABFspYWVogAAAAAAAAccAAADmKAAABZ1hZWiAAAAAAAABhIwAA + ueYAABP2WFlaIAAAAAAAACPyAAAMkAAAvdBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkA + HgAjACgALQAyADYAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCa + AJ8AowCoAK0AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8B + JQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZ + AeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsEC + ywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APs + A/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkF + WAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1 + BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII + 5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsL + CyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQN + jg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBD + EGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MT + YxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxay + FtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEa + dxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5q + HpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i + 3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6 + J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4s + oizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHy + MioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w3 + 1zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3g + PiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdE + ikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtT + S5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxS + x1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pW + WqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1Ykli + nGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3 + a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0 + FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1B + faF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteH + O4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/ + kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c + HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9 + p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuy + wrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6E + vv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfL + Nsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg + 2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5Pzl + hOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ + 86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//3BhcmEA + AAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAAoOdmNndAAAAAAAAAABAAEAAAAAAAAAAQAA + AAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAbmRpbgAAAAAAAAA2AACnQAAAVYAAAEzAAACe + wAAAJYAAAAzAAABQAAAAVEAAAjMzAAIzMwACMzMAAAAAAAAAAHNmMzIAAAAAAAEMcgAA + Bfj///MdAAAHugAA/XL///ud///9pAAAA9kAAMBxbW1vZAAAAAAAAAYQAACgIgAAAADN + I4LMAAAAAAAAAAAAAAAAAAAAAIAE0hwdHh9aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011 + dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TSHB0jJFxOU0NvbG9yU3BhY2WiJSFc + TlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8QD05TS2V5ZWRBcmNoaXZlctErLFRy + b290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMAcACFAIwAtgDgAOIA5ADmAOsA8QDz + APUA+gECEDYQOBA9EEgQURBfEGMQahBzEHgQhRCIEJUQmhCiEKUQtxC6EL8AAAAAAAAC + AQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAQwQ== + + ANSIBrightRedColor + + YnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T + Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjc5NjA3ODQz + MTQgMC4yOTQxMTc2NDcxIDAuMDg2Mjc0NTA5OCAxTxApMC43NTEzODc4MzQ1IDAuMjEx + MzY4Mzk2OSAwLjAwNjE4MjEwNDM0OQAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldO + Uy5kYXRhTxEPMAAADzBhcHBsAhAAAG1udHJSR0IgWFlaIAfgAAoAGQAXAAoAOmFjc3BB + UFBMAAAAAEFQUEwAAAAAAAAAAAAAAAAAAAAAAAD21gABAAAAANMtYXBwbAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWRlc2MAAAFQAAAA + YmRzY20AAAG0AAAEGGNwcnQAAAXMAAAAI3d0cHQAAAXwAAAAFHJYWVoAAAYEAAAAFGdY + WVoAAAYYAAAAFGJYWVoAAAYsAAAAFHJUUkMAAAZAAAAIDGFhcmcAAA5MAAAAIHZjZ3QA + AA5sAAAAMG5kaW4AAA6cAAAAPmNoYWQAAA7cAAAALG1tb2QAAA8IAAAAKGJUUkMAAAZA + AAAIDGdUUkMAAAZAAAAIDGFhYmcAAA5MAAAAIGFhZ2cAAA5MAAAAIGRlc2MAAAAAAAAA + CERpc3BsYXkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAACIA + AAAMaHJIUgAAABQAAAGoa29LUgAAAAwAAAG8bmJOTwAAABIAAAHIaWQAAAAAABIAAAHa + aHVIVQAAABQAAAHsY3NDWgAAABYAAAIAZGFESwAAABwAAAIWdWtVQQAAABwAAAIyYXIA + AAAAABQAAAJOaXRJVAAAABQAAAJicm9STwAAABIAAAJ2bmxOTAAAABYAAAKIaGVJTAAA + ABYAAAKeZXNFUwAAABIAAAJ2ZmlGSQAAABAAAAK0emhUVwAAAAwAAALEdmlWTgAAAA4A + AALQc2tTSwAAABYAAALeemhDTgAAAAwAAALEcnVSVQAAACQAAAL0ZnJGUgAAABYAAAMY + bXMAAAAAABIAAAMuY2FFUwAAABgAAANAdGhUSAAAAAwAAANYZXNYTAAAABIAAAJ2ZGVE + RQAAABAAAANkZW5VUwAAABIAAAN0cHRCUgAAABgAAAOGcGxQTAAAABIAAAOeZWxHUgAA + ACIAAAOwc3ZTRQAAABAAAAPSdHJUUgAAABQAAAPiamFKUAAAAAwAAAP2cHRQVAAAABYA + AAQCAEwAQwBEACAAdQAgAGIAbwBqAGnO7LfsACAATABDAEQARgBhAHIAZwBlAC0ATABD + AEQATABDAEQAIABXAGEAcgBuAGEAUwB6AO0AbgBlAHMAIABMAEMARABCAGEAcgBlAHYA + bgD9ACAATABDAEQATABDAEQALQBmAGEAcgB2AGUAcwBrAOYAcgBtBBoEPgQ7BEwEPgRA + BD4EMgQ4BDkAIABMAEMARCAPAEwAQwBEACAGRQZEBkgGRgYpAEwAQwBEACAAYwBvAGwA + bwByAGkATABDAEQAIABjAG8AbABvAHIASwBsAGUAdQByAGUAbgAtAEwAQwBEIA8ATABD + AEQAIAXmBdEF4gXVBeAF2QBWAOQAcgBpAC0ATABDAERfaYJyACAATABDAEQATABDAEQA + IABNAOAAdQBGAGEAcgBlAGIAbgDpACAATABDAEQEJgQyBDUEQgQ9BD4EOQAgBBYEGgAt + BDQEOARBBD8EOwQ1BDkATABDAEQAIABjAG8AdQBsAGUAdQByAFcAYQByAG4AYQAgAEwA + QwBEAEwAQwBEACAAZQBuACAAYwBvAGwAbwByAEwAQwBEACAOKg41AEYAYQByAGIALQBM + AEMARABDAG8AbABvAHIAIABMAEMARABMAEMARAAgAEMAbwBsAG8AcgBpAGQAbwBLAG8A + bABvAHIAIABMAEMARAOIA7MDxwPBA8kDvAO3ACADvwO4A8wDvQO3ACAATABDAEQARgDk + AHIAZwAtAEwAQwBEAFIAZQBuAGsAbABpACAATABDAEQwqzDpMPwATABDAEQATABDAEQA + IABhACAAQwBvAHIAZQBzdGV4dAAAAABDb3B5cmlnaHQgQXBwbGUgSW5jLiwgMjAxNgAA + WFlaIAAAAAAAAPMWAAEAAAABFspYWVogAAAAAAAAccAAADmKAAABZ1hZWiAAAAAAAABh + IwAAueYAABP2WFlaIAAAAAAAACPyAAAMkAAAvdBjdXJ2AAAAAAAABAAAAAAFAAoADwAU + ABkAHgAjACgALQAyADYAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAA + lQCaAJ8AowCoAK0AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZ + AR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB + 0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2 + AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD + 4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6 + BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG + 4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+ + CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK + 8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1a + DXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQ + JhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMj + E0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwW + jxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoq + GlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYe + QB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKC + Iq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgn + SSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5 + LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIx + ujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdg + N5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9 + oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQD + REdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRL + DEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIx + UnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbha + B1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1 + YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhq + n2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNd + c7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF8 + 4X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZy + hteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q + 1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtC + m6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqm + i6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHW + skuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++ + Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4 + yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjX + XNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz + 5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/y + jPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//3Bh + cmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAAoOdmNndAAAAAAAAAABAAEAAAAAAAAA + AQAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAbmRpbgAAAAAAAAA2AACnQAAAVYAAAEzA + AACewAAAJYAAAAzAAABQAAAAVEAAAjMzAAIzMwACMzMAAAAAAAAAAHNmMzIAAAAAAAEM + cgAABfj///MdAAAHugAA/XL///ud///9pAAAA9kAAMBxbW1vZAAAAAAAAAYQAACgIgAA + AADNI4LMAAAAAAAAAAAAAAAAAAAAAIAE0hwdHh9aJGNsYXNzbmFtZVgkY2xhc3Nlc11O + U011dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TSHB0jJFxOU0NvbG9yU3BhY2Wi + JSFcTlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8QD05TS2V5ZWRBcmNoaXZlctEr + LFRyb290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMAcACFAIwAtwDjAOUA5wDpAO4A + 9AD2APgA/QEFEDkQOxBAEEsQVBBiEGYQbRB2EHsQiBCLEJgQnRClEKgQuhC9EMIAAAAA + AAACAQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAQxA== + + ANSIBrightWhiteColor + + YnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T + Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjk5MjE1Njg2 + MjcgMC45NjQ3MDU4ODI0IDAuODkwMTk2MDc4NCAxTxAnMC45OTA0OTMyOTc2IDAuOTU5 + NzI0MjQ3NSAwLjg1OTU0ODY4NzkAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu + ZGF0YU8RDzAAAA8wYXBwbAIQAABtbnRyUkdCIFhZWiAH4AAKABkAFwAKADphY3NwQVBQ + TAAAAABBUFBMAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFkZXNjAAABUAAAAGJk + c2NtAAABtAAABBhjcHJ0AAAFzAAAACN3dHB0AAAF8AAAABRyWFlaAAAGBAAAABRnWFla + AAAGGAAAABRiWFlaAAAGLAAAABRyVFJDAAAGQAAACAxhYXJnAAAOTAAAACB2Y2d0AAAO + bAAAADBuZGluAAAOnAAAAD5jaGFkAAAO3AAAACxtbW9kAAAPCAAAAChiVFJDAAAGQAAA + CAxnVFJDAAAGQAAACAxhYWJnAAAOTAAAACBhYWdnAAAOTAAAACBkZXNjAAAAAAAAAAhE + aXNwbGF5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAiAAAA + DGhySFIAAAAUAAABqGtvS1IAAAAMAAABvG5iTk8AAAASAAAByGlkAAAAAAASAAAB2mh1 + SFUAAAAUAAAB7GNzQ1oAAAAWAAACAGRhREsAAAAcAAACFnVrVUEAAAAcAAACMmFyAAAA + AAAUAAACTml0SVQAAAAUAAACYnJvUk8AAAASAAACdm5sTkwAAAAWAAACiGhlSUwAAAAW + AAACnmVzRVMAAAASAAACdmZpRkkAAAAQAAACtHpoVFcAAAAMAAACxHZpVk4AAAAOAAAC + 0HNrU0sAAAAWAAAC3npoQ04AAAAMAAACxHJ1UlUAAAAkAAAC9GZyRlIAAAAWAAADGG1z + AAAAAAASAAADLmNhRVMAAAAYAAADQHRoVEgAAAAMAAADWGVzWEwAAAASAAACdmRlREUA + AAAQAAADZGVuVVMAAAASAAADdHB0QlIAAAAYAAADhnBsUEwAAAASAAADnmVsR1IAAAAi + AAADsHN2U0UAAAAQAAAD0nRyVFIAAAAUAAAD4mphSlAAAAAMAAAD9nB0UFQAAAAWAAAE + AgBMAEMARAAgAHUAIABiAG8AagBpzuy37AAgAEwAQwBEAEYAYQByAGcAZQAtAEwAQwBE + AEwAQwBEACAAVwBhAHIAbgBhAFMAegDtAG4AZQBzACAATABDAEQAQgBhAHIAZQB2AG4A + /QAgAEwAQwBEAEwAQwBEAC0AZgBhAHIAdgBlAHMAawDmAHIAbQQaBD4EOwRMBD4EQAQ+ + BDIEOAQ5ACAATABDAEQgDwBMAEMARAAgBkUGRAZIBkYGKQBMAEMARAAgAGMAbwBsAG8A + cgBpAEwAQwBEACAAYwBvAGwAbwByAEsAbABlAHUAcgBlAG4ALQBMAEMARCAPAEwAQwBE + ACAF5gXRBeIF1QXgBdkAVgDkAHIAaQAtAEwAQwBEX2mCcgAgAEwAQwBEAEwAQwBEACAA + TQDgAHUARgBhAHIAZQBiAG4A6QAgAEwAQwBEBCYEMgQ1BEIEPQQ+BDkAIAQWBBoALQQ0 + BDgEQQQ/BDsENQQ5AEwAQwBEACAAYwBvAHUAbABlAHUAcgBXAGEAcgBuAGEAIABMAEMA + RABMAEMARAAgAGUAbgAgAGMAbwBsAG8AcgBMAEMARAAgDioONQBGAGEAcgBiAC0ATABD + AEQAQwBvAGwAbwByACAATABDAEQATABDAEQAIABDAG8AbABvAHIAaQBkAG8ASwBvAGwA + bwByACAATABDAEQDiAOzA8cDwQPJA7wDtwAgA78DuAPMA70DtwAgAEwAQwBEAEYA5ABy + AGcALQBMAEMARABSAGUAbgBrAGwAaQAgAEwAQwBEMKsw6TD8AEwAQwBEAEwAQwBEACAA + YQAgAEMAbwByAGUAc3RleHQAAAAAQ29weXJpZ2h0IEFwcGxlIEluYy4sIDIwMTYAAFhZ + WiAAAAAAAADzFgABAAAAARbKWFlaIAAAAAAAAHHAAAA5igAAAWdYWVogAAAAAAAAYSMA + ALnmAAAT9lhZWiAAAAAAAAAj8gAADJAAAL3QY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZ + AB4AIwAoAC0AMgA2ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUA + mgCfAKMAqACtALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEf + ASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB + 2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLB + AssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD + 7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJ + BVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG + 9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjS + COcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvML + CwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10 + DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQ + QxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxND + E2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8W + shbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpR + GncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAe + ah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKv + It0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kn + eierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxu + LKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox + 8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDec + N9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE9 + 4D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RH + RIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxL + U0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8 + UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4Wgda + VlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJ + Ypxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q + 92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4 + dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9 + QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobX + hzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaR + P5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuv + nByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum + /adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJL + ssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+ + hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3 + yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX + 4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T8 + 5YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozz + GfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//9wYXJh + AAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKDnZjZ3QAAAAAAAAAAQABAAAAAAAAAAEA + AAABAAAAAAAAAAEAAAABAAAAAAAAAAEAAG5kaW4AAAAAAAAANgAAp0AAAFWAAABMwAAA + nsAAACWAAAAMwAAAUAAAAFRAAAIzMwACMzMAAjMzAAAAAAAAAABzZjMyAAAAAAABDHIA + AAX4///zHQAAB7oAAP1y///7nf///aQAAAPZAADAcW1tb2QAAAAAAAAGEAAAoCIAAAAA + zSOCzAAAAAAAAAAAAAAAAAAAAACABNIcHR4fWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNN + dXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN00hwdIyRcTlNDb2xvclNwYWNloiUh + XE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFfEA9OU0tleWVkQXJjaGl2ZXLRKyxU + cm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBjAHAAhQCMALcA4QDjAOUA5wDsAPIA + 9AD2APsBAxA3EDkQPhBJEFIQYBBkEGsQdBB5EIYQiRCWEJsQoxCmELgQuxDAAAAAAAAA + AgEAAAAAAAAALQAAAAAAAAAAAAAAAAAAEMI= + + ANSIBrightYellowColor + + YnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T + Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjM5NjA3ODQz + MTQgMC40ODIzNTI5NDEyIDAuNTEzNzI1NDkwMiAxTxAnMC4zMjE3NzAzMTA0IDAuNDA2 + ODYxNzIyNSAwLjQ0MDU2MzMyMTEAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu + ZGF0YU8RDzAAAA8wYXBwbAIQAABtbnRyUkdCIFhZWiAH4AAKABkAFwAKADphY3NwQVBQ + TAAAAABBUFBMAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFkZXNjAAABUAAAAGJk + c2NtAAABtAAABBhjcHJ0AAAFzAAAACN3dHB0AAAF8AAAABRyWFlaAAAGBAAAABRnWFla + AAAGGAAAABRiWFlaAAAGLAAAABRyVFJDAAAGQAAACAxhYXJnAAAOTAAAACB2Y2d0AAAO + bAAAADBuZGluAAAOnAAAAD5jaGFkAAAO3AAAACxtbW9kAAAPCAAAAChiVFJDAAAGQAAA + CAxnVFJDAAAGQAAACAxhYWJnAAAOTAAAACBhYWdnAAAOTAAAACBkZXNjAAAAAAAAAAhE + aXNwbGF5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAiAAAA + DGhySFIAAAAUAAABqGtvS1IAAAAMAAABvG5iTk8AAAASAAAByGlkAAAAAAASAAAB2mh1 + SFUAAAAUAAAB7GNzQ1oAAAAWAAACAGRhREsAAAAcAAACFnVrVUEAAAAcAAACMmFyAAAA + AAAUAAACTml0SVQAAAAUAAACYnJvUk8AAAASAAACdm5sTkwAAAAWAAACiGhlSUwAAAAW + AAACnmVzRVMAAAASAAACdmZpRkkAAAAQAAACtHpoVFcAAAAMAAACxHZpVk4AAAAOAAAC + 0HNrU0sAAAAWAAAC3npoQ04AAAAMAAACxHJ1UlUAAAAkAAAC9GZyRlIAAAAWAAADGG1z + AAAAAAASAAADLmNhRVMAAAAYAAADQHRoVEgAAAAMAAADWGVzWEwAAAASAAACdmRlREUA + AAAQAAADZGVuVVMAAAASAAADdHB0QlIAAAAYAAADhnBsUEwAAAASAAADnmVsR1IAAAAi + AAADsHN2U0UAAAAQAAAD0nRyVFIAAAAUAAAD4mphSlAAAAAMAAAD9nB0UFQAAAAWAAAE + AgBMAEMARAAgAHUAIABiAG8AagBpzuy37AAgAEwAQwBEAEYAYQByAGcAZQAtAEwAQwBE + AEwAQwBEACAAVwBhAHIAbgBhAFMAegDtAG4AZQBzACAATABDAEQAQgBhAHIAZQB2AG4A + /QAgAEwAQwBEAEwAQwBEAC0AZgBhAHIAdgBlAHMAawDmAHIAbQQaBD4EOwRMBD4EQAQ+ + BDIEOAQ5ACAATABDAEQgDwBMAEMARAAgBkUGRAZIBkYGKQBMAEMARAAgAGMAbwBsAG8A + cgBpAEwAQwBEACAAYwBvAGwAbwByAEsAbABlAHUAcgBlAG4ALQBMAEMARCAPAEwAQwBE + ACAF5gXRBeIF1QXgBdkAVgDkAHIAaQAtAEwAQwBEX2mCcgAgAEwAQwBEAEwAQwBEACAA + TQDgAHUARgBhAHIAZQBiAG4A6QAgAEwAQwBEBCYEMgQ1BEIEPQQ+BDkAIAQWBBoALQQ0 + BDgEQQQ/BDsENQQ5AEwAQwBEACAAYwBvAHUAbABlAHUAcgBXAGEAcgBuAGEAIABMAEMA + RABMAEMARAAgAGUAbgAgAGMAbwBsAG8AcgBMAEMARAAgDioONQBGAGEAcgBiAC0ATABD + AEQAQwBvAGwAbwByACAATABDAEQATABDAEQAIABDAG8AbABvAHIAaQBkAG8ASwBvAGwA + bwByACAATABDAEQDiAOzA8cDwQPJA7wDtwAgA78DuAPMA70DtwAgAEwAQwBEAEYA5ABy + AGcALQBMAEMARABSAGUAbgBrAGwAaQAgAEwAQwBEMKsw6TD8AEwAQwBEAEwAQwBEACAA + YQAgAEMAbwByAGUAc3RleHQAAAAAQ29weXJpZ2h0IEFwcGxlIEluYy4sIDIwMTYAAFhZ + WiAAAAAAAADzFgABAAAAARbKWFlaIAAAAAAAAHHAAAA5igAAAWdYWVogAAAAAAAAYSMA + ALnmAAAT9lhZWiAAAAAAAAAj8gAADJAAAL3QY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZ + AB4AIwAoAC0AMgA2ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUA + mgCfAKMAqACtALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEf + ASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB + 2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLB + AssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD + 7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJ + BVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG + 9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjS + COcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvML + CwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10 + DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQ + QxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxND + E2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8W + shbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpR + GncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAe + ah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKv + It0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kn + eierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxu + LKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox + 8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDec + N9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE9 + 4D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RH + RIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxL + U0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8 + UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4Wgda + VlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJ + Ypxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q + 92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4 + dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9 + QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobX + hzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaR + P5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuv + nByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum + /adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJL + ssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+ + hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3 + yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX + 4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T8 + 5YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozz + GfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//9wYXJh + AAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKDnZjZ3QAAAAAAAAAAQABAAAAAAAAAAEA + AAABAAAAAAAAAAEAAAABAAAAAAAAAAEAAG5kaW4AAAAAAAAANgAAp0AAAFWAAABMwAAA + nsAAACWAAAAMwAAAUAAAAFRAAAIzMwACMzMAAjMzAAAAAAAAAABzZjMyAAAAAAABDHIA + AAX4///zHQAAB7oAAP1y///7nf///aQAAAPZAADAcW1tb2QAAAAAAAAGEAAAoCIAAAAA + zSOCzAAAAAAAAAAAAAAAAAAAAACABNIcHR4fWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNN + dXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN00hwdIyRcTlNDb2xvclNwYWNloiUh + XE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFfEA9OU0tleWVkQXJjaGl2ZXLRKyxU + cm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBjAHAAhQCMALcA4QDjAOUA5wDsAPIA + 9AD2APsBAxA3EDkQPhBJEFIQYBBkEGsQdBB5EIYQiRCWEJsQoxCmELgQuxDAAAAAAAAA + AgEAAAAAAAAALQAAAAAAAAAAAAAAAAAAEMI= + + ANSICyanColor + + YnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T + Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECcwLjE2NDcwNTg4 + MjQgMC42MzEzNzI1NDkgMC41OTYwNzg0MzE0IDFPECcwLjEyMzQ0MzY3MDYgMC41NzI5 + MDg4NzgzIDAuNTI2OTUyNjI0MwAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5k + YXRhTxEPMAAADzBhcHBsAhAAAG1udHJSR0IgWFlaIAfgAAoAGQAXAAoAOmFjc3BBUFBM + AAAAAEFQUEwAAAAAAAAAAAAAAAAAAAAAAAD21gABAAAAANMtYXBwbAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWRlc2MAAAFQAAAAYmRz + Y20AAAG0AAAEGGNwcnQAAAXMAAAAI3d0cHQAAAXwAAAAFHJYWVoAAAYEAAAAFGdYWVoA + AAYYAAAAFGJYWVoAAAYsAAAAFHJUUkMAAAZAAAAIDGFhcmcAAA5MAAAAIHZjZ3QAAA5s + AAAAMG5kaW4AAA6cAAAAPmNoYWQAAA7cAAAALG1tb2QAAA8IAAAAKGJUUkMAAAZAAAAI + DGdUUkMAAAZAAAAIDGFhYmcAAA5MAAAAIGFhZ2cAAA5MAAAAIGRlc2MAAAAAAAAACERp + c3BsYXkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAACIAAAAM + aHJIUgAAABQAAAGoa29LUgAAAAwAAAG8bmJOTwAAABIAAAHIaWQAAAAAABIAAAHaaHVI + VQAAABQAAAHsY3NDWgAAABYAAAIAZGFESwAAABwAAAIWdWtVQQAAABwAAAIyYXIAAAAA + ABQAAAJOaXRJVAAAABQAAAJicm9STwAAABIAAAJ2bmxOTAAAABYAAAKIaGVJTAAAABYA + AAKeZXNFUwAAABIAAAJ2ZmlGSQAAABAAAAK0emhUVwAAAAwAAALEdmlWTgAAAA4AAALQ + c2tTSwAAABYAAALeemhDTgAAAAwAAALEcnVSVQAAACQAAAL0ZnJGUgAAABYAAAMYbXMA + AAAAABIAAAMuY2FFUwAAABgAAANAdGhUSAAAAAwAAANYZXNYTAAAABIAAAJ2ZGVERQAA + ABAAAANkZW5VUwAAABIAAAN0cHRCUgAAABgAAAOGcGxQTAAAABIAAAOeZWxHUgAAACIA + AAOwc3ZTRQAAABAAAAPSdHJUUgAAABQAAAPiamFKUAAAAAwAAAP2cHRQVAAAABYAAAQC + AEwAQwBEACAAdQAgAGIAbwBqAGnO7LfsACAATABDAEQARgBhAHIAZwBlAC0ATABDAEQA + TABDAEQAIABXAGEAcgBuAGEAUwB6AO0AbgBlAHMAIABMAEMARABCAGEAcgBlAHYAbgD9 + ACAATABDAEQATABDAEQALQBmAGEAcgB2AGUAcwBrAOYAcgBtBBoEPgQ7BEwEPgRABD4E + MgQ4BDkAIABMAEMARCAPAEwAQwBEACAGRQZEBkgGRgYpAEwAQwBEACAAYwBvAGwAbwBy + AGkATABDAEQAIABjAG8AbABvAHIASwBsAGUAdQByAGUAbgAtAEwAQwBEIA8ATABDAEQA + IAXmBdEF4gXVBeAF2QBWAOQAcgBpAC0ATABDAERfaYJyACAATABDAEQATABDAEQAIABN + AOAAdQBGAGEAcgBlAGIAbgDpACAATABDAEQEJgQyBDUEQgQ9BD4EOQAgBBYEGgAtBDQE + OARBBD8EOwQ1BDkATABDAEQAIABjAG8AdQBsAGUAdQByAFcAYQByAG4AYQAgAEwAQwBE + AEwAQwBEACAAZQBuACAAYwBvAGwAbwByAEwAQwBEACAOKg41AEYAYQByAGIALQBMAEMA + RABDAG8AbABvAHIAIABMAEMARABMAEMARAAgAEMAbwBsAG8AcgBpAGQAbwBLAG8AbABv + AHIAIABMAEMARAOIA7MDxwPBA8kDvAO3ACADvwO4A8wDvQO3ACAATABDAEQARgDkAHIA + ZwAtAEwAQwBEAFIAZQBuAGsAbABpACAATABDAEQwqzDpMPwATABDAEQATABDAEQAIABh + ACAAQwBvAHIAZQBzdGV4dAAAAABDb3B5cmlnaHQgQXBwbGUgSW5jLiwgMjAxNgAAWFla + IAAAAAAAAPMWAAEAAAABFspYWVogAAAAAAAAccAAADmKAAABZ1hZWiAAAAAAAABhIwAA + ueYAABP2WFlaIAAAAAAAACPyAAAMkAAAvdBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkA + HgAjACgALQAyADYAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCa + AJ8AowCoAK0AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8B + JQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZ + AeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsEC + ywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APs + A/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkF + WAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1 + BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII + 5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsL + CyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQN + jg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBD + EGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MT + YxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxay + FtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEa + dxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5q + HpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i + 3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6 + J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4s + oizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHy + MioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w3 + 1zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3g + PiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdE + ikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtT + S5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxS + x1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pW + WqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1Ykli + nGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3 + a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0 + FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1B + faF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteH + O4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/ + kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c + HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9 + p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuy + wrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6E + vv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfL + Nsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg + 2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5Pzl + hOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ + 86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//3BhcmEA + AAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAAoOdmNndAAAAAAAAAABAAEAAAAAAAAAAQAA + AAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAbmRpbgAAAAAAAAA2AACnQAAAVYAAAEzAAACe + wAAAJYAAAAzAAABQAAAAVEAAAjMzAAIzMwACMzMAAAAAAAAAAHNmMzIAAAAAAAEMcgAA + Bfj///MdAAAHugAA/XL///ud///9pAAAA9kAAMBxbW1vZAAAAAAAAAYQAACgIgAAAADN + I4LMAAAAAAAAAAAAAAAAAAAAAIAE0hwdHh9aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011 + dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TSHB0jJFxOU0NvbG9yU3BhY2WiJSFc + TlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8QD05TS2V5ZWRBcmNoaXZlctErLFRy + b290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMAcACFAIwAtgDgAOIA5ADmAOsA8QDz + APUA+gECEDYQOBA9EEgQURBfEGMQahBzEHgQhRCIEJUQmhCiEKUQtxC6EL8AAAAAAAAC + AQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAQwQ== + + ANSIGreenColor + + YnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T + Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPEBQwLjUyMTU2ODYy + NzUgMC42IDAgMU8QHDAuNDQ4NjM2NDEyNiAwLjU0NzU2MDM5MzggMAAQAYACgAbSFA0V + FlVOU0lDQ4ADgAXSGA0ZGldOUy5kYXRhTxEPMAAADzBhcHBsAhAAAG1udHJSR0IgWFla + IAfgAAoAGQAXAAoAOmFjc3BBUFBMAAAAAEFQUEwAAAAAAAAAAAAAAAAAAAAAAAD21gAB + AAAAANMtYXBwbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAEWRlc2MAAAFQAAAAYmRzY20AAAG0AAAEGGNwcnQAAAXMAAAAI3d0cHQAAAXw + AAAAFHJYWVoAAAYEAAAAFGdYWVoAAAYYAAAAFGJYWVoAAAYsAAAAFHJUUkMAAAZAAAAI + DGFhcmcAAA5MAAAAIHZjZ3QAAA5sAAAAMG5kaW4AAA6cAAAAPmNoYWQAAA7cAAAALG1t + b2QAAA8IAAAAKGJUUkMAAAZAAAAIDGdUUkMAAAZAAAAIDGFhYmcAAA5MAAAAIGFhZ2cA + AA5MAAAAIGRlc2MAAAAAAAAACERpc3BsYXkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAABtbHVjAAAAAAAAACIAAAAMaHJIUgAAABQAAAGoa29LUgAAAAwAAAG8bmJOTwAA + ABIAAAHIaWQAAAAAABIAAAHaaHVIVQAAABQAAAHsY3NDWgAAABYAAAIAZGFESwAAABwA + AAIWdWtVQQAAABwAAAIyYXIAAAAAABQAAAJOaXRJVAAAABQAAAJicm9STwAAABIAAAJ2 + bmxOTAAAABYAAAKIaGVJTAAAABYAAAKeZXNFUwAAABIAAAJ2ZmlGSQAAABAAAAK0emhU + VwAAAAwAAALEdmlWTgAAAA4AAALQc2tTSwAAABYAAALeemhDTgAAAAwAAALEcnVSVQAA + ACQAAAL0ZnJGUgAAABYAAAMYbXMAAAAAABIAAAMuY2FFUwAAABgAAANAdGhUSAAAAAwA + AANYZXNYTAAAABIAAAJ2ZGVERQAAABAAAANkZW5VUwAAABIAAAN0cHRCUgAAABgAAAOG + cGxQTAAAABIAAAOeZWxHUgAAACIAAAOwc3ZTRQAAABAAAAPSdHJUUgAAABQAAAPiamFK + UAAAAAwAAAP2cHRQVAAAABYAAAQCAEwAQwBEACAAdQAgAGIAbwBqAGnO7LfsACAATABD + AEQARgBhAHIAZwBlAC0ATABDAEQATABDAEQAIABXAGEAcgBuAGEAUwB6AO0AbgBlAHMA + IABMAEMARABCAGEAcgBlAHYAbgD9ACAATABDAEQATABDAEQALQBmAGEAcgB2AGUAcwBr + AOYAcgBtBBoEPgQ7BEwEPgRABD4EMgQ4BDkAIABMAEMARCAPAEwAQwBEACAGRQZEBkgG + RgYpAEwAQwBEACAAYwBvAGwAbwByAGkATABDAEQAIABjAG8AbABvAHIASwBsAGUAdQBy + AGUAbgAtAEwAQwBEIA8ATABDAEQAIAXmBdEF4gXVBeAF2QBWAOQAcgBpAC0ATABDAERf + aYJyACAATABDAEQATABDAEQAIABNAOAAdQBGAGEAcgBlAGIAbgDpACAATABDAEQEJgQy + BDUEQgQ9BD4EOQAgBBYEGgAtBDQEOARBBD8EOwQ1BDkATABDAEQAIABjAG8AdQBsAGUA + dQByAFcAYQByAG4AYQAgAEwAQwBEAEwAQwBEACAAZQBuACAAYwBvAGwAbwByAEwAQwBE + ACAOKg41AEYAYQByAGIALQBMAEMARABDAG8AbABvAHIAIABMAEMARABMAEMARAAgAEMA + bwBsAG8AcgBpAGQAbwBLAG8AbABvAHIAIABMAEMARAOIA7MDxwPBA8kDvAO3ACADvwO4 + A8wDvQO3ACAATABDAEQARgDkAHIAZwAtAEwAQwBEAFIAZQBuAGsAbABpACAATABDAEQw + qzDpMPwATABDAEQATABDAEQAIABhACAAQwBvAHIAZQBzdGV4dAAAAABDb3B5cmlnaHQg + QXBwbGUgSW5jLiwgMjAxNgAAWFlaIAAAAAAAAPMWAAEAAAABFspYWVogAAAAAAAAccAA + ADmKAAABZ1hZWiAAAAAAAABhIwAAueYAABP2WFlaIAAAAAAAACPyAAAMkAAAvdBjdXJ2 + AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADYAOwBAAEUASgBPAFQAWQBeAGMA + aABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8AowCoAK0AsgC3ALwAwQDGAMsA0ADVANsA4ADl + AOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMB + iwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJd + AmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YD + cgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2 + BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcG + SAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgL + CB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEK + Jwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1 + DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkP + JQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIH + EiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQV + VhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjV + GPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMc + zBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw + IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgl + lyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpo + KpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Ev + xy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVN + NYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07 + azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGs + Qe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtI + kUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+T + T91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdX + RFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8P + X2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1n + k2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XAr + cIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5 + iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0 + g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqN + MY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1 + l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiai + lqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24 + ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5 + wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XI + xkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/S + wdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v + 4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHt + nO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3 + /Af8mP0p/br+S/7c/23//3BhcmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAAoOdmNn + dAAAAAAAAAABAAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAbmRpbgAA + AAAAAAA2AACnQAAAVYAAAEzAAACewAAAJYAAAAzAAABQAAAAVEAAAjMzAAIzMwACMzMA + AAAAAAAAAHNmMzIAAAAAAAEMcgAABfj///MdAAAHugAA/XL///ud///9pAAAA9kAAMBx + bW1vZAAAAAAAAAYQAACgIgAAAADNI4LMAAAAAAAAAAAAAAAAAAAAAIAE0hwdHh9aJGNs + YXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TS + HB0jJFxOU0NvbG9yU3BhY2WiJSFcTlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8Q + D05TS2V5ZWRBcmNoaXZlctErLFRyb290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMA + cACFAIwAowDCAMQAxgDIAM0A0wDVANcA3ADkEBgQGhAfECoQMxBBEEUQTBBVEFoQZxBq + EHcQfBCEEIcQmRCcEKEAAAAAAAACAQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAQow== + + ANSIMagentaColor + + YnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T + Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPEB0xIDAuNDE1Njg2 + Mjc0NSAwLjc1Njg2Mjc0NTEgMU8QJzAuOTk4OTY3MDUxNSAwLjI4MTA1MTY2NTUgMC43 + MDk1NjE3MDU2ABABgAKABtIUDRUWVU5TSUNDgAOABdIYDRkaV05TLmRhdGFPEQ8wAAAP + MGFwcGwCEAAAbW50clJHQiBYWVogB+AACgAZABcACgA6YWNzcEFQUEwAAAAAQVBQTAAA + AAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARZGVzYwAAAVAAAABiZHNjbQAAAbQAAAQY + Y3BydAAABcwAAAAjd3RwdAAABfAAAAAUclhZWgAABgQAAAAUZ1hZWgAABhgAAAAUYlhZ + WgAABiwAAAAUclRSQwAABkAAAAgMYWFyZwAADkwAAAAgdmNndAAADmwAAAAwbmRpbgAA + DpwAAAA+Y2hhZAAADtwAAAAsbW1vZAAADwgAAAAoYlRSQwAABkAAAAgMZ1RSQwAABkAA + AAgMYWFiZwAADkwAAAAgYWFnZwAADkwAAAAgZGVzYwAAAAAAAAAIRGlzcGxheQAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1sdWMAAAAAAAAAIgAAAAxockhSAAAAFAAA + Aahrb0tSAAAADAAAAbxuYk5PAAAAEgAAAchpZAAAAAAAEgAAAdpodUhVAAAAFAAAAexj + c0NaAAAAFgAAAgBkYURLAAAAHAAAAhZ1a1VBAAAAHAAAAjJhcgAAAAAAFAAAAk5pdElU + AAAAFAAAAmJyb1JPAAAAEgAAAnZubE5MAAAAFgAAAohoZUlMAAAAFgAAAp5lc0VTAAAA + EgAAAnZmaUZJAAAAEAAAArR6aFRXAAAADAAAAsR2aVZOAAAADgAAAtBza1NLAAAAFgAA + At56aENOAAAADAAAAsRydVJVAAAAJAAAAvRmckZSAAAAFgAAAxhtcwAAAAAAEgAAAy5j + YUVTAAAAGAAAA0B0aFRIAAAADAAAA1hlc1hMAAAAEgAAAnZkZURFAAAAEAAAA2RlblVT + AAAAEgAAA3RwdEJSAAAAGAAAA4ZwbFBMAAAAEgAAA55lbEdSAAAAIgAAA7BzdlNFAAAA + EAAAA9J0clRSAAAAFAAAA+JqYUpQAAAADAAAA/ZwdFBUAAAAFgAABAIATABDAEQAIAB1 + ACAAYgBvAGoAac7st+wAIABMAEMARABGAGEAcgBnAGUALQBMAEMARABMAEMARAAgAFcA + YQByAG4AYQBTAHoA7QBuAGUAcwAgAEwAQwBEAEIAYQByAGUAdgBuAP0AIABMAEMARABM + AEMARAAtAGYAYQByAHYAZQBzAGsA5gByAG0EGgQ+BDsETAQ+BEAEPgQyBDgEOQAgAEwA + QwBEIA8ATABDAEQAIAZFBkQGSAZGBikATABDAEQAIABjAG8AbABvAHIAaQBMAEMARAAg + AGMAbwBsAG8AcgBLAGwAZQB1AHIAZQBuAC0ATABDAEQgDwBMAEMARAAgBeYF0QXiBdUF + 4AXZAFYA5AByAGkALQBMAEMARF9pgnIAIABMAEMARABMAEMARAAgAE0A4AB1AEYAYQBy + AGUAYgBuAOkAIABMAEMARAQmBDIENQRCBD0EPgQ5ACAEFgQaAC0ENAQ4BEEEPwQ7BDUE + OQBMAEMARAAgAGMAbwB1AGwAZQB1AHIAVwBhAHIAbgBhACAATABDAEQATABDAEQAIABl + AG4AIABjAG8AbABvAHIATABDAEQAIA4qDjUARgBhAHIAYgAtAEwAQwBEAEMAbwBsAG8A + cgAgAEwAQwBEAEwAQwBEACAAQwBvAGwAbwByAGkAZABvAEsAbwBsAG8AcgAgAEwAQwBE + A4gDswPHA8EDyQO8A7cAIAO/A7gDzAO9A7cAIABMAEMARABGAOQAcgBnAC0ATABDAEQA + UgBlAG4AawBsAGkAIABMAEMARDCrMOkw/ABMAEMARABMAEMARAAgAGEAIABDAG8AcgBl + AHN0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSBJbmMuLCAyMDE2AABYWVogAAAAAAAA8xYA + AQAAAAEWylhZWiAAAAAAAABxwAAAOYoAAAFnWFlaIAAAAAAAAGEjAAC55gAAE/ZYWVog + AAAAAAAAI/IAAAyQAAC90GN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAtADIA + NgA7AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCjAKgArQCy + ALcAvADBAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4B + RQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gID + AgwCFAIdAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUD + AAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQt + BDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYF + pgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysHPQdP + B2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJ + TwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1ELaQuA + C5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakNww3eDfgO + Ew4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDX + EPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MTpBPFE+UU + BhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdl + F4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQb + OxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+HukfEx8+ + H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNmI5Qj + wiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhx + KKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYt + qy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy1DMN + M0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5 + BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8h + P2E/oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF + 3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6 + TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZU + QlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0VblVvl + XDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBjQ2OXY+tk + QGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2una/9sV2yv + bQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUodYV1 + 4XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+wn8j + f4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6J + M4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS45NN + k7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc951kndKe + QJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3 + qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1 + E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDs + wWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXN + tc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2 + 2vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3mlucf56no + Mui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe + 9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf//cGFyYQAAAAAAAwAAAAJm + ZgAA8qcAAA1ZAAAT0AAACg52Y2d0AAAAAAAAAAEAAQAAAAAAAAABAAAAAQAAAAAAAAAB + AAAAAQAAAAAAAAABAABuZGluAAAAAAAAADYAAKdAAABVgAAATMAAAJ7AAAAlgAAADMAA + AFAAAABUQAACMzMAAjMzAAIzMwAAAAAAAAAAc2YzMgAAAAAAAQxyAAAF+P//8x0AAAe6 + AAD9cv//+53///2kAAAD2QAAwHFtbW9kAAAAAAAABhAAAKAiAAAAAM0jgswAAAAAAAAA + AAAAAAAAAAAAgATSHB0eH1okY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGj + HiAhVk5TRGF0YVhOU09iamVjdNIcHSMkXE5TQ29sb3JTcGFjZaIlIVxOU0NvbG9yU3Bh + Y2XSHB0nKFdOU0NvbG9yoichXxAPTlNLZXllZEFyY2hpdmVy0SssVHJvb3SAAQAIABEA + GgAjAC0AMgA3AD8ARQBQAF0AYwBwAIUAjACsANYA2ADaANwA4QDnAOkA6wDwAPgQLBAu + EDMQPhBHEFUQWRBgEGkQbhB7EH4QixCQEJgQmxCtELAQtQAAAAAAAAIBAAAAAAAAAC0A + AAAAAAAAAAAAAAAAABC3 + + ANSIRedColor + + YnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T + Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECcwLjg2Mjc0NTA5 + OCAwLjE5NjA3ODQzMTQgMC4xODQzMTM3MjU1IDFPECgwLjgzMDYzMTk3MTQgMC4wOTg0 + OTQwNjc3OSAwLjExODI1NjUwOTMAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu + ZGF0YU8RDzAAAA8wYXBwbAIQAABtbnRyUkdCIFhZWiAH4AAKABkAFwAKADphY3NwQVBQ + TAAAAABBUFBMAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFkZXNjAAABUAAAAGJk + c2NtAAABtAAABBhjcHJ0AAAFzAAAACN3dHB0AAAF8AAAABRyWFlaAAAGBAAAABRnWFla + AAAGGAAAABRiWFlaAAAGLAAAABRyVFJDAAAGQAAACAxhYXJnAAAOTAAAACB2Y2d0AAAO + bAAAADBuZGluAAAOnAAAAD5jaGFkAAAO3AAAACxtbW9kAAAPCAAAAChiVFJDAAAGQAAA + CAxnVFJDAAAGQAAACAxhYWJnAAAOTAAAACBhYWdnAAAOTAAAACBkZXNjAAAAAAAAAAhE + aXNwbGF5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAiAAAA + DGhySFIAAAAUAAABqGtvS1IAAAAMAAABvG5iTk8AAAASAAAByGlkAAAAAAASAAAB2mh1 + SFUAAAAUAAAB7GNzQ1oAAAAWAAACAGRhREsAAAAcAAACFnVrVUEAAAAcAAACMmFyAAAA + AAAUAAACTml0SVQAAAAUAAACYnJvUk8AAAASAAACdm5sTkwAAAAWAAACiGhlSUwAAAAW + AAACnmVzRVMAAAASAAACdmZpRkkAAAAQAAACtHpoVFcAAAAMAAACxHZpVk4AAAAOAAAC + 0HNrU0sAAAAWAAAC3npoQ04AAAAMAAACxHJ1UlUAAAAkAAAC9GZyRlIAAAAWAAADGG1z + AAAAAAASAAADLmNhRVMAAAAYAAADQHRoVEgAAAAMAAADWGVzWEwAAAASAAACdmRlREUA + AAAQAAADZGVuVVMAAAASAAADdHB0QlIAAAAYAAADhnBsUEwAAAASAAADnmVsR1IAAAAi + AAADsHN2U0UAAAAQAAAD0nRyVFIAAAAUAAAD4mphSlAAAAAMAAAD9nB0UFQAAAAWAAAE + AgBMAEMARAAgAHUAIABiAG8AagBpzuy37AAgAEwAQwBEAEYAYQByAGcAZQAtAEwAQwBE + AEwAQwBEACAAVwBhAHIAbgBhAFMAegDtAG4AZQBzACAATABDAEQAQgBhAHIAZQB2AG4A + /QAgAEwAQwBEAEwAQwBEAC0AZgBhAHIAdgBlAHMAawDmAHIAbQQaBD4EOwRMBD4EQAQ+ + BDIEOAQ5ACAATABDAEQgDwBMAEMARAAgBkUGRAZIBkYGKQBMAEMARAAgAGMAbwBsAG8A + cgBpAEwAQwBEACAAYwBvAGwAbwByAEsAbABlAHUAcgBlAG4ALQBMAEMARCAPAEwAQwBE + ACAF5gXRBeIF1QXgBdkAVgDkAHIAaQAtAEwAQwBEX2mCcgAgAEwAQwBEAEwAQwBEACAA + TQDgAHUARgBhAHIAZQBiAG4A6QAgAEwAQwBEBCYEMgQ1BEIEPQQ+BDkAIAQWBBoALQQ0 + BDgEQQQ/BDsENQQ5AEwAQwBEACAAYwBvAHUAbABlAHUAcgBXAGEAcgBuAGEAIABMAEMA + RABMAEMARAAgAGUAbgAgAGMAbwBsAG8AcgBMAEMARAAgDioONQBGAGEAcgBiAC0ATABD + AEQAQwBvAGwAbwByACAATABDAEQATABDAEQAIABDAG8AbABvAHIAaQBkAG8ASwBvAGwA + bwByACAATABDAEQDiAOzA8cDwQPJA7wDtwAgA78DuAPMA70DtwAgAEwAQwBEAEYA5ABy + AGcALQBMAEMARABSAGUAbgBrAGwAaQAgAEwAQwBEMKsw6TD8AEwAQwBEAEwAQwBEACAA + YQAgAEMAbwByAGUAc3RleHQAAAAAQ29weXJpZ2h0IEFwcGxlIEluYy4sIDIwMTYAAFhZ + WiAAAAAAAADzFgABAAAAARbKWFlaIAAAAAAAAHHAAAA5igAAAWdYWVogAAAAAAAAYSMA + ALnmAAAT9lhZWiAAAAAAAAAj8gAADJAAAL3QY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZ + AB4AIwAoAC0AMgA2ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUA + mgCfAKMAqACtALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEf + ASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB + 2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLB + AssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD + 7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJ + BVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG + 9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjS + COcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvML + CwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10 + DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQ + QxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxND + E2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8W + shbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpR + GncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAe + ah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKv + It0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kn + eierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxu + LKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox + 8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDec + N9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE9 + 4D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RH + RIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxL + U0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8 + UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4Wgda + VlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJ + Ypxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q + 92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4 + dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9 + QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobX + hzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaR + P5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuv + nByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum + /adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJL + ssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+ + hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3 + yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX + 4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T8 + 5YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozz + GfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//9wYXJh + AAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKDnZjZ3QAAAAAAAAAAQABAAAAAAAAAAEA + AAABAAAAAAAAAAEAAAABAAAAAAAAAAEAAG5kaW4AAAAAAAAANgAAp0AAAFWAAABMwAAA + nsAAACWAAAAMwAAAUAAAAFRAAAIzMwACMzMAAjMzAAAAAAAAAABzZjMyAAAAAAABDHIA + AAX4///zHQAAB7oAAP1y///7nf///aQAAAPZAADAcW1tb2QAAAAAAAAGEAAAoCIAAAAA + zSOCzAAAAAAAAAAAAAAAAAAAAACABNIcHR4fWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNN + dXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN00hwdIyRcTlNDb2xvclNwYWNloiUh + XE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFfEA9OU0tleWVkQXJjaGl2ZXLRKyxU + cm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBjAHAAhQCMALYA4QDjAOUA5wDsAPIA + 9AD2APsBAxA3EDkQPhBJEFIQYBBkEGsQdBB5EIYQiRCWEJsQoxCmELgQuxDAAAAAAAAA + AgEAAAAAAAAALQAAAAAAAAAAAAAAAAAAEMI= + + ANSIWhiteColor + + YnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T + Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjkzMzMzMzMz + MzMgMC45MDk4MDM5MjE2IDAuODM1Mjk0MTE3NiAxTxAnMC45MTcwMzQ4NjQ0IDAuODkx + NzcxMzE2NSAwLjc5MzQ0MzkxODIAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu + ZGF0YU8RDzAAAA8wYXBwbAIQAABtbnRyUkdCIFhZWiAH4AAKABkAFwAKADphY3NwQVBQ + TAAAAABBUFBMAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFkZXNjAAABUAAAAGJk + c2NtAAABtAAABBhjcHJ0AAAFzAAAACN3dHB0AAAF8AAAABRyWFlaAAAGBAAAABRnWFla + AAAGGAAAABRiWFlaAAAGLAAAABRyVFJDAAAGQAAACAxhYXJnAAAOTAAAACB2Y2d0AAAO + bAAAADBuZGluAAAOnAAAAD5jaGFkAAAO3AAAACxtbW9kAAAPCAAAAChiVFJDAAAGQAAA + CAxnVFJDAAAGQAAACAxhYWJnAAAOTAAAACBhYWdnAAAOTAAAACBkZXNjAAAAAAAAAAhE + aXNwbGF5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAiAAAA + DGhySFIAAAAUAAABqGtvS1IAAAAMAAABvG5iTk8AAAASAAAByGlkAAAAAAASAAAB2mh1 + SFUAAAAUAAAB7GNzQ1oAAAAWAAACAGRhREsAAAAcAAACFnVrVUEAAAAcAAACMmFyAAAA + AAAUAAACTml0SVQAAAAUAAACYnJvUk8AAAASAAACdm5sTkwAAAAWAAACiGhlSUwAAAAW + AAACnmVzRVMAAAASAAACdmZpRkkAAAAQAAACtHpoVFcAAAAMAAACxHZpVk4AAAAOAAAC + 0HNrU0sAAAAWAAAC3npoQ04AAAAMAAACxHJ1UlUAAAAkAAAC9GZyRlIAAAAWAAADGG1z + AAAAAAASAAADLmNhRVMAAAAYAAADQHRoVEgAAAAMAAADWGVzWEwAAAASAAACdmRlREUA + AAAQAAADZGVuVVMAAAASAAADdHB0QlIAAAAYAAADhnBsUEwAAAASAAADnmVsR1IAAAAi + AAADsHN2U0UAAAAQAAAD0nRyVFIAAAAUAAAD4mphSlAAAAAMAAAD9nB0UFQAAAAWAAAE + AgBMAEMARAAgAHUAIABiAG8AagBpzuy37AAgAEwAQwBEAEYAYQByAGcAZQAtAEwAQwBE + AEwAQwBEACAAVwBhAHIAbgBhAFMAegDtAG4AZQBzACAATABDAEQAQgBhAHIAZQB2AG4A + /QAgAEwAQwBEAEwAQwBEAC0AZgBhAHIAdgBlAHMAawDmAHIAbQQaBD4EOwRMBD4EQAQ+ + BDIEOAQ5ACAATABDAEQgDwBMAEMARAAgBkUGRAZIBkYGKQBMAEMARAAgAGMAbwBsAG8A + cgBpAEwAQwBEACAAYwBvAGwAbwByAEsAbABlAHUAcgBlAG4ALQBMAEMARCAPAEwAQwBE + ACAF5gXRBeIF1QXgBdkAVgDkAHIAaQAtAEwAQwBEX2mCcgAgAEwAQwBEAEwAQwBEACAA + TQDgAHUARgBhAHIAZQBiAG4A6QAgAEwAQwBEBCYEMgQ1BEIEPQQ+BDkAIAQWBBoALQQ0 + BDgEQQQ/BDsENQQ5AEwAQwBEACAAYwBvAHUAbABlAHUAcgBXAGEAcgBuAGEAIABMAEMA + RABMAEMARAAgAGUAbgAgAGMAbwBsAG8AcgBMAEMARAAgDioONQBGAGEAcgBiAC0ATABD + AEQAQwBvAGwAbwByACAATABDAEQATABDAEQAIABDAG8AbABvAHIAaQBkAG8ASwBvAGwA + bwByACAATABDAEQDiAOzA8cDwQPJA7wDtwAgA78DuAPMA70DtwAgAEwAQwBEAEYA5ABy + AGcALQBMAEMARABSAGUAbgBrAGwAaQAgAEwAQwBEMKsw6TD8AEwAQwBEAEwAQwBEACAA + YQAgAEMAbwByAGUAc3RleHQAAAAAQ29weXJpZ2h0IEFwcGxlIEluYy4sIDIwMTYAAFhZ + WiAAAAAAAADzFgABAAAAARbKWFlaIAAAAAAAAHHAAAA5igAAAWdYWVogAAAAAAAAYSMA + ALnmAAAT9lhZWiAAAAAAAAAj8gAADJAAAL3QY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZ + AB4AIwAoAC0AMgA2ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUA + mgCfAKMAqACtALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEf + ASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB + 2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLB + AssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD + 7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJ + BVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG + 9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjS + COcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvML + CwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10 + DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQ + QxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxND + E2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8W + shbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpR + GncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAe + ah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKv + It0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kn + eierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxu + LKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox + 8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDec + N9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE9 + 4D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RH + RIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxL + U0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8 + UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4Wgda + VlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJ + Ypxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q + 92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4 + dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9 + QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobX + hzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaR + P5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuv + nByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum + /adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJL + ssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+ + hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3 + yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX + 4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T8 + 5YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozz + GfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//9wYXJh + AAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKDnZjZ3QAAAAAAAAAAQABAAAAAAAAAAEA + AAABAAAAAAAAAAEAAAABAAAAAAAAAAEAAG5kaW4AAAAAAAAANgAAp0AAAFWAAABMwAAA + nsAAACWAAAAMwAAAUAAAAFRAAAIzMwACMzMAAjMzAAAAAAAAAABzZjMyAAAAAAABDHIA + AAX4///zHQAAB7oAAP1y///7nf///aQAAAPZAADAcW1tb2QAAAAAAAAGEAAAoCIAAAAA + zSOCzAAAAAAAAAAAAAAAAAAAAACABNIcHR4fWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNN + dXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN00hwdIyRcTlNDb2xvclNwYWNloiUh + XE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFfEA9OU0tleWVkQXJjaGl2ZXLRKyxU + cm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBjAHAAhQCMALcA4QDjAOUA5wDsAPIA + 9AD2APsBAxA3EDkQPhBJEFIQYBBkEGsQdBB5EIYQiRCWEJsQoxCmELgQuxDAAAAAAAAA + AgEAAAAAAAAALQAAAAAAAAAAAAAAAAAAEMI= + + ANSIYellowColor + + YnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T + Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPEBwwLjcwOTgwMzky + MTYgMC41MzcyNTQ5MDIgMCAxTxAcMC42NTIzODU5NTAxIDAuNDcxOTQxNTMwNyAwABAB + gAKABtIUDRUWVU5TSUNDgAOABdIYDRkaV05TLmRhdGFPEQ8wAAAPMGFwcGwCEAAAbW50 + clJHQiBYWVogB+AACgAZABcACgA6YWNzcEFQUEwAAAAAQVBQTAAAAAAAAAAAAAAAAAAA + AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAARZGVzYwAAAVAAAABiZHNjbQAAAbQAAAQYY3BydAAABcwAAAAj + d3RwdAAABfAAAAAUclhZWgAABgQAAAAUZ1hZWgAABhgAAAAUYlhZWgAABiwAAAAUclRS + QwAABkAAAAgMYWFyZwAADkwAAAAgdmNndAAADmwAAAAwbmRpbgAADpwAAAA+Y2hhZAAA + DtwAAAAsbW1vZAAADwgAAAAoYlRSQwAABkAAAAgMZ1RSQwAABkAAAAgMYWFiZwAADkwA + AAAgYWFnZwAADkwAAAAgZGVzYwAAAAAAAAAIRGlzcGxheQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAG1sdWMAAAAAAAAAIgAAAAxockhSAAAAFAAAAahrb0tSAAAADAAA + AbxuYk5PAAAAEgAAAchpZAAAAAAAEgAAAdpodUhVAAAAFAAAAexjc0NaAAAAFgAAAgBk + YURLAAAAHAAAAhZ1a1VBAAAAHAAAAjJhcgAAAAAAFAAAAk5pdElUAAAAFAAAAmJyb1JP + AAAAEgAAAnZubE5MAAAAFgAAAohoZUlMAAAAFgAAAp5lc0VTAAAAEgAAAnZmaUZJAAAA + EAAAArR6aFRXAAAADAAAAsR2aVZOAAAADgAAAtBza1NLAAAAFgAAAt56aENOAAAADAAA + AsRydVJVAAAAJAAAAvRmckZSAAAAFgAAAxhtcwAAAAAAEgAAAy5jYUVTAAAAGAAAA0B0 + aFRIAAAADAAAA1hlc1hMAAAAEgAAAnZkZURFAAAAEAAAA2RlblVTAAAAEgAAA3RwdEJS + AAAAGAAAA4ZwbFBMAAAAEgAAA55lbEdSAAAAIgAAA7BzdlNFAAAAEAAAA9J0clRSAAAA + FAAAA+JqYUpQAAAADAAAA/ZwdFBUAAAAFgAABAIATABDAEQAIAB1ACAAYgBvAGoAac7s + t+wAIABMAEMARABGAGEAcgBnAGUALQBMAEMARABMAEMARAAgAFcAYQByAG4AYQBTAHoA + 7QBuAGUAcwAgAEwAQwBEAEIAYQByAGUAdgBuAP0AIABMAEMARABMAEMARAAtAGYAYQBy + AHYAZQBzAGsA5gByAG0EGgQ+BDsETAQ+BEAEPgQyBDgEOQAgAEwAQwBEIA8ATABDAEQA + IAZFBkQGSAZGBikATABDAEQAIABjAG8AbABvAHIAaQBMAEMARAAgAGMAbwBsAG8AcgBL + AGwAZQB1AHIAZQBuAC0ATABDAEQgDwBMAEMARAAgBeYF0QXiBdUF4AXZAFYA5AByAGkA + LQBMAEMARF9pgnIAIABMAEMARABMAEMARAAgAE0A4AB1AEYAYQByAGUAYgBuAOkAIABM + AEMARAQmBDIENQRCBD0EPgQ5ACAEFgQaAC0ENAQ4BEEEPwQ7BDUEOQBMAEMARAAgAGMA + bwB1AGwAZQB1AHIAVwBhAHIAbgBhACAATABDAEQATABDAEQAIABlAG4AIABjAG8AbABv + AHIATABDAEQAIA4qDjUARgBhAHIAYgAtAEwAQwBEAEMAbwBsAG8AcgAgAEwAQwBEAEwA + QwBEACAAQwBvAGwAbwByAGkAZABvAEsAbwBsAG8AcgAgAEwAQwBEA4gDswPHA8EDyQO8 + A7cAIAO/A7gDzAO9A7cAIABMAEMARABGAOQAcgBnAC0ATABDAEQAUgBlAG4AawBsAGkA + IABMAEMARDCrMOkw/ABMAEMARABMAEMARAAgAGEAIABDAG8AcgBlAHN0ZXh0AAAAAENv + cHlyaWdodCBBcHBsZSBJbmMuLCAyMDE2AABYWVogAAAAAAAA8xYAAQAAAAEWylhZWiAA + AAAAAABxwAAAOYoAAAFnWFlaIAAAAAAAAGEjAAC55gAAE/ZYWVogAAAAAAAAI/IAAAyQ + AAC90GN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAtADIANgA7AEAARQBKAE8A + VABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCjAKgArQCyALcAvADBAMYAywDQ + ANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIBWQFgAWcB + bgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4 + AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgD + QwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQtBDsESARVBGMEcQR+ + BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF1QXlBfYG + BgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeGB5kHrAe/ + B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJTwlkCXkJjwmkCboJ + zwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1ELaQuAC5gLsAvIC+EL+QwS + DCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakNww3eDfgOEw4uDkkOZA5/DpsO + tg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDXEPURExExEU8RbRGM + EaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MTpBPFE+UUBhQnFEkUahSLFK0U + zhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhA + GGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4obshvaHAIc + KhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/H+ogFSBB + IGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk + 2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymd + KdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYtqy3hLhYuTC6CLrcu + 7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy1DMNM0YzfzO4M/E0KzRl + NJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85vDn5OjY6 + dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/iQCNAZECm + QOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdGq0bwRzVH + e0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2TTdxOJU5u + TrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtVKFV1VcJW + D1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0VblVvlXDVchlzWXSddeF3J + XhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBjQ2OXY+tkQGSUZOllPWWSZedm + PWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2una/9sV2yvbQhtYG25bhJua27E + bx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUodYV14XY+dpt2+HdWd7N4 + EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+wn8jf4R/5YBHgKiBCoFr + gc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZif6KZIrKizCL + lov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS45NNk7aUIJSKlPSVX5XJ + ljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc951kndKeQJ6unx2fi5/6oGmg + 2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqPqwKrdavp + rFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2ebbwt2i3 + 4LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48JfwtvDWMPU + xFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQ + utE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF3IrdEN2W + 3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3mlucf56noMui86Ubp0Opb6uXr + cOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe9m32+/eK+Bn4qPk4 + +cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf//cGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT + 0AAACg52Y2d0AAAAAAAAAAEAAQAAAAAAAAABAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAB + AABuZGluAAAAAAAAADYAAKdAAABVgAAATMAAAJ7AAAAlgAAADMAAAFAAAABUQAACMzMA + AjMzAAIzMwAAAAAAAAAAc2YzMgAAAAAAAQxyAAAF+P//8x0AAAe6AAD9cv//+53///2k + AAAD2QAAwHFtbW9kAAAAAAAABhAAAKAiAAAAAM0jgswAAAAAAAAAAAAAAAAAAAAAgATS + HB0eH1okY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHiAhVk5TRGF0YVhO + U09iamVjdNIcHSMkXE5TQ29sb3JTcGFjZaIlIVxOU0NvbG9yU3BhY2XSHB0nKFdOU0Nv + bG9yoichXxAPTlNLZXllZEFyY2hpdmVy0SssVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8A + RQBQAF0AYwBwAIUAjACrAMoAzADOANAA1QDbAN0A3wDkAOwQIBAiECcQMhA7EEkQTRBU + EF0QYhBvEHIQfxCEEIwQjxChEKQQqQAAAAAAAAIBAAAAAAAAAC0AAAAAAAAAAAAAAAAA + ABCr + + BackgroundColor + + YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECYw + LjEyNTQ5MDE5NjEgMC4xMzcyNTQ5MDIgMC4xNzI1NDkwMTk2ABABgALSEBESE1okY2xh + c3NuYW1lWCRjbGFzc2VzV05TQ29sb3KiEhRYTlNPYmplY3RfEA9OU0tleWVkQXJjaGl2 + ZXLRFxhUcm9vdIABCBEaIy0yNztBSE5bYouNj5SfqLCzvM7R1gAAAAAAAAEBAAAAAAAA + ABkAAAAAAAAAAAAAAAAAAADY + + Bell + + BlinkText + + BookmarkRestorations + + CursorBlink + + CursorColor + + YnBsaXN0MDDUAQIDBAUGKyxYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKcHCBMZHSQoVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T + Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjE0NzgyNjUw + NDUgMC4xNDkyOTAxMzMyIDAuMTQ5MjkwMTMzMiAxTxAnMC4xMTA5ODY1NzU1IDAuMTEy + MDQ2MzkwOCAwLjExMjAyNTE5MzkAEAGAAoAG0xQVDRYXGFROU0lEVU5TSUNDEAeAA4AF + 0hoNGxxXTlMuZGF0YU8RDEgAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAx + AABhY3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0 + AAABUAAAADNkZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAAC + GAAAABRnWFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAA + AIh2dWVkAAADTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0 + ZWNoAAAEMAAAAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0 + AAAAAENvcHlyaWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVz + YwAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2 + LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAWFlaIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAA + AABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2 + z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBo + dHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNv + bG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQg + UkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAA + AAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAA + AAAAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0y + LjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPt + zAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8A + FAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQ + AJUAmgCfAKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMB + GQEfASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJ + AdEB2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwC + tgLBAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPT + A+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsF + OgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbR + BuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoI + vgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrc + CvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUAN + Wg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJ + ECYQQxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMT + IxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZs + Fo8WshbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQa + KhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4W + HkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUi + giKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcY + J0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUs + OSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGC + Mbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3 + YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1h + PaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BE + A0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrE + SwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZS + MVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4 + WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh + 9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpI + ap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFz + XXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyB + fOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6G + cobXhzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBu + kNaRP5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWb + QpuvnByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYa + poum/adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx + 1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2P + vgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnK + OMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY + 11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vk + c+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/ + 8ozzGfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//+A + BNIeHyAhWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMgIiNWTlNEYXRh + WE5TT2JqZWN00h4fJSZcTlNDb2xvclNwYWNloicjXE5TQ29sb3JTcGFjZdIeHykqV05T + Q29sb3KiKSNfEA9OU0tleWVkQXJjaGl2ZXLRLS5Ucm9vdIABAAgAEQAaACMALQAyADcA + PwBFAFAAXQBjAHAAhQCMALcA4QDjAOUA5wDuAPMA+QD7AP0A/wEEAQwNWA1aDV8Nag1z + DYENhQ2MDZUNmg2nDaoNtw28DcQNxw3ZDdwN4QAAAAAAAAIBAAAAAAAAAC8AAAAAAAAA + AAAAAAAAAA3j + + CursorType + 2 + Font + + YnBsaXN0MDDUAQIDBAUGGBlYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKQHCBESVSRudWxs1AkKCwwNDg8QVk5TU2l6ZVhOU2ZGbGFnc1ZOU05hbWVWJGNs + YXNzI0AqAAAAAAAAEBCAAoADXxAaU2F1Y2VDb2RlUG93ZXJsaW5lLVJlZ3VsYXLSExQV + FlokY2xhc3NuYW1lWCRjbGFzc2VzVk5TRm9udKIVF1hOU09iamVjdF8QD05TS2V5ZWRB + cmNoaXZlctEaG1Ryb290gAEIERojLTI3PEJLUltiaXJ0dniVmqWutbjB09bbAAAAAAAA + AQEAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAN0= + + FontAntialias + + ProfileCurrentVersion + 2.0499999999999998 + SelectionColor + + YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECcw + LjE2NzAwMTYxMTYgMC4xODA4MDM3ODI5IDAuMjMwMTMwNTUzMgAQAYAC0hAREhNaJGNs + YXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp + dmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA + AAAZAAAAAAAAAAAAAAAAAAAA2Q== + + ShowActiveProcessArgumentsInTitle + + ShowActiveProcessInTabTitle + + ShowActiveProcessInTitle + + ShowComponentsWhenTabHasCustomTitle + + ShowDimensionsInTitle + + ShowRepresentedURLPathInTabTitle + + ShowShellCommandInTitle + + ShowTTYNameInTitle + + TextBoldColor + + YnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T + Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjk3MjU0OTAx + OTYgMC45NzI1NDkwMTk2IDAuOTcyNTQ5MDE5NiAxTxAnMC45NjUzMzU5MDU2IDAuOTY1 + NTIxMzM1NiAwLjk2NTMwNDk3MDcAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu + ZGF0YU8RDzAAAA8wYXBwbAIQAABtbnRyUkdCIFhZWiAH4AAKABkAFwAKADphY3NwQVBQ + TAAAAABBUFBMAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFkZXNjAAABUAAAAGJk + c2NtAAABtAAABBhjcHJ0AAAFzAAAACN3dHB0AAAF8AAAABRyWFlaAAAGBAAAABRnWFla + AAAGGAAAABRiWFlaAAAGLAAAABRyVFJDAAAGQAAACAxhYXJnAAAOTAAAACB2Y2d0AAAO + bAAAADBuZGluAAAOnAAAAD5jaGFkAAAO3AAAACxtbW9kAAAPCAAAAChiVFJDAAAGQAAA + CAxnVFJDAAAGQAAACAxhYWJnAAAOTAAAACBhYWdnAAAOTAAAACBkZXNjAAAAAAAAAAhE + aXNwbGF5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAiAAAA + DGhySFIAAAAUAAABqGtvS1IAAAAMAAABvG5iTk8AAAASAAAByGlkAAAAAAASAAAB2mh1 + SFUAAAAUAAAB7GNzQ1oAAAAWAAACAGRhREsAAAAcAAACFnVrVUEAAAAcAAACMmFyAAAA + AAAUAAACTml0SVQAAAAUAAACYnJvUk8AAAASAAACdm5sTkwAAAAWAAACiGhlSUwAAAAW + AAACnmVzRVMAAAASAAACdmZpRkkAAAAQAAACtHpoVFcAAAAMAAACxHZpVk4AAAAOAAAC + 0HNrU0sAAAAWAAAC3npoQ04AAAAMAAACxHJ1UlUAAAAkAAAC9GZyRlIAAAAWAAADGG1z + AAAAAAASAAADLmNhRVMAAAAYAAADQHRoVEgAAAAMAAADWGVzWEwAAAASAAACdmRlREUA + AAAQAAADZGVuVVMAAAASAAADdHB0QlIAAAAYAAADhnBsUEwAAAASAAADnmVsR1IAAAAi + AAADsHN2U0UAAAAQAAAD0nRyVFIAAAAUAAAD4mphSlAAAAAMAAAD9nB0UFQAAAAWAAAE + AgBMAEMARAAgAHUAIABiAG8AagBpzuy37AAgAEwAQwBEAEYAYQByAGcAZQAtAEwAQwBE + AEwAQwBEACAAVwBhAHIAbgBhAFMAegDtAG4AZQBzACAATABDAEQAQgBhAHIAZQB2AG4A + /QAgAEwAQwBEAEwAQwBEAC0AZgBhAHIAdgBlAHMAawDmAHIAbQQaBD4EOwRMBD4EQAQ+ + BDIEOAQ5ACAATABDAEQgDwBMAEMARAAgBkUGRAZIBkYGKQBMAEMARAAgAGMAbwBsAG8A + cgBpAEwAQwBEACAAYwBvAGwAbwByAEsAbABlAHUAcgBlAG4ALQBMAEMARCAPAEwAQwBE + ACAF5gXRBeIF1QXgBdkAVgDkAHIAaQAtAEwAQwBEX2mCcgAgAEwAQwBEAEwAQwBEACAA + TQDgAHUARgBhAHIAZQBiAG4A6QAgAEwAQwBEBCYEMgQ1BEIEPQQ+BDkAIAQWBBoALQQ0 + BDgEQQQ/BDsENQQ5AEwAQwBEACAAYwBvAHUAbABlAHUAcgBXAGEAcgBuAGEAIABMAEMA + RABMAEMARAAgAGUAbgAgAGMAbwBsAG8AcgBMAEMARAAgDioONQBGAGEAcgBiAC0ATABD + AEQAQwBvAGwAbwByACAATABDAEQATABDAEQAIABDAG8AbABvAHIAaQBkAG8ASwBvAGwA + bwByACAATABDAEQDiAOzA8cDwQPJA7wDtwAgA78DuAPMA70DtwAgAEwAQwBEAEYA5ABy + AGcALQBMAEMARABSAGUAbgBrAGwAaQAgAEwAQwBEMKsw6TD8AEwAQwBEAEwAQwBEACAA + YQAgAEMAbwByAGUAc3RleHQAAAAAQ29weXJpZ2h0IEFwcGxlIEluYy4sIDIwMTYAAFhZ + WiAAAAAAAADzFgABAAAAARbKWFlaIAAAAAAAAHHAAAA5igAAAWdYWVogAAAAAAAAYSMA + ALnmAAAT9lhZWiAAAAAAAAAj8gAADJAAAL3QY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZ + AB4AIwAoAC0AMgA2ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUA + mgCfAKMAqACtALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEf + ASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB + 2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLB + AssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD + 7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJ + BVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG + 9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjS + COcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvML + CwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10 + DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQ + QxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxND + E2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8W + shbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpR + GncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAe + ah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKv + It0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kn + eierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxu + LKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox + 8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDec + N9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE9 + 4D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RH + RIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxL + U0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8 + UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4Wgda + VlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJ + Ypxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q + 92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4 + dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9 + QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobX + hzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaR + P5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuv + nByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum + /adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJL + ssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+ + hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3 + yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX + 4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T8 + 5YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozz + GfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//9wYXJh + AAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKDnZjZ3QAAAAAAAAAAQABAAAAAAAAAAEA + AAABAAAAAAAAAAEAAAABAAAAAAAAAAEAAG5kaW4AAAAAAAAANgAAp0AAAFWAAABMwAAA + nsAAACWAAAAMwAAAUAAAAFRAAAIzMwACMzMAAjMzAAAAAAAAAABzZjMyAAAAAAABDHIA + AAX4///zHQAAB7oAAP1y///7nf///aQAAAPZAADAcW1tb2QAAAAAAAAGEAAAoCIAAAAA + zSOCzAAAAAAAAAAAAAAAAAAAAACABNIcHR4fWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNN + dXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN00hwdIyRcTlNDb2xvclNwYWNloiUh + XE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFfEA9OU0tleWVkQXJjaGl2ZXLRKyxU + cm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBjAHAAhQCMALcA4QDjAOUA5wDsAPIA + 9AD2APsBAxA3EDkQPhBJEFIQYBBkEGsQdBB5EIYQiRCWEJsQoxCmELgQuxDAAAAAAAAA + AgEAAAAAAAAALQAAAAAAAAAAAAAAAAAAEMI= + + TextColor + + YnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS + AAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T + Q29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECcwLjkzNzI1NDkw + MiAwLjk0MTE3NjQ3MDYgMC45MjE1Njg2Mjc1IDFPECcwLjkyMTUxNjQxODUgMC45Mjc4 + NTc1Nzc4IDAuOTAxMTA2ODM0NAAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5k + YXRhTxEPMAAADzBhcHBsAhAAAG1udHJSR0IgWFlaIAfgAAoAGQAXAAoAOmFjc3BBUFBM + AAAAAEFQUEwAAAAAAAAAAAAAAAAAAAAAAAD21gABAAAAANMtYXBwbAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWRlc2MAAAFQAAAAYmRz + Y20AAAG0AAAEGGNwcnQAAAXMAAAAI3d0cHQAAAXwAAAAFHJYWVoAAAYEAAAAFGdYWVoA + AAYYAAAAFGJYWVoAAAYsAAAAFHJUUkMAAAZAAAAIDGFhcmcAAA5MAAAAIHZjZ3QAAA5s + AAAAMG5kaW4AAA6cAAAAPmNoYWQAAA7cAAAALG1tb2QAAA8IAAAAKGJUUkMAAAZAAAAI + DGdUUkMAAAZAAAAIDGFhYmcAAA5MAAAAIGFhZ2cAAA5MAAAAIGRlc2MAAAAAAAAACERp + c3BsYXkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAACIAAAAM + aHJIUgAAABQAAAGoa29LUgAAAAwAAAG8bmJOTwAAABIAAAHIaWQAAAAAABIAAAHaaHVI + VQAAABQAAAHsY3NDWgAAABYAAAIAZGFESwAAABwAAAIWdWtVQQAAABwAAAIyYXIAAAAA + ABQAAAJOaXRJVAAAABQAAAJicm9STwAAABIAAAJ2bmxOTAAAABYAAAKIaGVJTAAAABYA + AAKeZXNFUwAAABIAAAJ2ZmlGSQAAABAAAAK0emhUVwAAAAwAAALEdmlWTgAAAA4AAALQ + c2tTSwAAABYAAALeemhDTgAAAAwAAALEcnVSVQAAACQAAAL0ZnJGUgAAABYAAAMYbXMA + AAAAABIAAAMuY2FFUwAAABgAAANAdGhUSAAAAAwAAANYZXNYTAAAABIAAAJ2ZGVERQAA + ABAAAANkZW5VUwAAABIAAAN0cHRCUgAAABgAAAOGcGxQTAAAABIAAAOeZWxHUgAAACIA + AAOwc3ZTRQAAABAAAAPSdHJUUgAAABQAAAPiamFKUAAAAAwAAAP2cHRQVAAAABYAAAQC + AEwAQwBEACAAdQAgAGIAbwBqAGnO7LfsACAATABDAEQARgBhAHIAZwBlAC0ATABDAEQA + TABDAEQAIABXAGEAcgBuAGEAUwB6AO0AbgBlAHMAIABMAEMARABCAGEAcgBlAHYAbgD9 + ACAATABDAEQATABDAEQALQBmAGEAcgB2AGUAcwBrAOYAcgBtBBoEPgQ7BEwEPgRABD4E + MgQ4BDkAIABMAEMARCAPAEwAQwBEACAGRQZEBkgGRgYpAEwAQwBEACAAYwBvAGwAbwBy + AGkATABDAEQAIABjAG8AbABvAHIASwBsAGUAdQByAGUAbgAtAEwAQwBEIA8ATABDAEQA + IAXmBdEF4gXVBeAF2QBWAOQAcgBpAC0ATABDAERfaYJyACAATABDAEQATABDAEQAIABN + AOAAdQBGAGEAcgBlAGIAbgDpACAATABDAEQEJgQyBDUEQgQ9BD4EOQAgBBYEGgAtBDQE + OARBBD8EOwQ1BDkATABDAEQAIABjAG8AdQBsAGUAdQByAFcAYQByAG4AYQAgAEwAQwBE + AEwAQwBEACAAZQBuACAAYwBvAGwAbwByAEwAQwBEACAOKg41AEYAYQByAGIALQBMAEMA + RABDAG8AbABvAHIAIABMAEMARABMAEMARAAgAEMAbwBsAG8AcgBpAGQAbwBLAG8AbABv + AHIAIABMAEMARAOIA7MDxwPBA8kDvAO3ACADvwO4A8wDvQO3ACAATABDAEQARgDkAHIA + ZwAtAEwAQwBEAFIAZQBuAGsAbABpACAATABDAEQwqzDpMPwATABDAEQATABDAEQAIABh + ACAAQwBvAHIAZQBzdGV4dAAAAABDb3B5cmlnaHQgQXBwbGUgSW5jLiwgMjAxNgAAWFla + IAAAAAAAAPMWAAEAAAABFspYWVogAAAAAAAAccAAADmKAAABZ1hZWiAAAAAAAABhIwAA + ueYAABP2WFlaIAAAAAAAACPyAAAMkAAAvdBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkA + HgAjACgALQAyADYAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCa + AJ8AowCoAK0AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8B + JQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZ + AeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsEC + ywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APs + A/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkF + WAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1 + BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII + 5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsL + CyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQN + jg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBD + EGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MT + YxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxay + FtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEa + dxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5q + HpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i + 3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6 + J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4s + oizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHy + MioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w3 + 1zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3g + PiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdE + ikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtT + S5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxS + x1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pW + WqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1Ykli + nGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3 + a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0 + FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1B + faF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteH + O4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/ + kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+c + HJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9 + p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuy + wrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6E + vv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfL + Nsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg + 2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5Pzl + hOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ + 86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//3BhcmEA + AAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAAoOdmNndAAAAAAAAAABAAEAAAAAAAAAAQAA + AAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAbmRpbgAAAAAAAAA2AACnQAAAVYAAAEzAAACe + wAAAJYAAAAzAAABQAAAAVEAAAjMzAAIzMwACMzMAAAAAAAAAAHNmMzIAAAAAAAEMcgAA + Bfj///MdAAAHugAA/XL///ud///9pAAAA9kAAMBxbW1vZAAAAAAAAAYQAACgIgAAAADN + I4LMAAAAAAAAAAAAAAAAAAAAAIAE0hwdHh9aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011 + dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TSHB0jJFxOU0NvbG9yU3BhY2WiJSFc + TlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8QD05TS2V5ZWRBcmNoaXZlctErLFRy + b290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMAcACFAIwAtgDgAOIA5ADmAOsA8QDz + APUA+gECEDYQOBA9EEgQURBfEGMQahBzEHgQhRCIEJUQmhCiEKUQtxC6EL8AAAAAAAAC + AQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAQwQ== + + UseBrightBold + + columnCount + 120 + name + Michi_terminal + rowCount + 30 + shellExitAction + 0 + type + Window Settings + useOptionAsMetaKey + + + diff --git a/vim/colors/PaperColor.vim b/vim/colors/PaperColor.vim deleted file mode 100644 index 1cab272..0000000 --- a/vim/colors/PaperColor.vim +++ /dev/null @@ -1,2090 +0,0 @@ -" Theme: PaperColor -" Author: Nikyle Nguyen -" License: MIT -" Source: http://github.com/NLKNguyen/papercolor-theme - - -" Note on navigating this source code: -" - Use folding feature to collapse/uncollapse blocks of marked code -" zM to fold all markers in this file to see the structure of the source code -" zR to unfold all recursively -" za to toggle a fold -" See: http://vim.wikia.com/wiki/Folding -" - The main section where functions are actually called is located at the end. -" - The first section right after this note is where themes are defined. Theme -" designers only need to work on this section. - -" THEMES: {{{ - -let s:themes = {} - -" Theme name should be lowercase -let s:themes['default'] = { - \ 'maintainer' : 'Nikyle Nguyen', - \ 'description' : 'Original PaperColor Theme, inspired by Google Material Design' - \ } - -" Theme can have 'light' and/or 'dark' color palette. -" Color values can be HEX and/or 256-color. Use empty string '' if not provided. -" Only color00 -> color15 are required. The rest are optional. -let s:themes['default'].light = { - \ 'TEST_256_COLOR_CONSISTENCY' : 1, - \ 'palette' : { - \ 'color00' : ['#eeeeee', '255'], - \ 'color01' : ['#af0000', '124'], - \ 'color02' : ['#008700', '28'], - \ 'color03' : ['#5f8700', '64'], - \ 'color04' : ['#0087af', '31'], - \ 'color05' : ['#878787', '102'], - \ 'color06' : ['#005f87', '24'], - \ 'color07' : ['#444444', '238'], - \ 'color08' : ['#bcbcbc', '250'], - \ 'color09' : ['#d70000', '160'], - \ 'color10' : ['#d70087', '162'], - \ 'color11' : ['#8700af', '91'], - \ 'color12' : ['#d75f00', '166'], - \ 'color13' : ['#d75f00', '166'], - \ 'color14' : ['#005faf', '25'], - \ 'color15' : ['#005f87', '24'], - \ 'color16' : ['#0087af', '31'], - \ 'color17' : ['#008700', '28'], - \ 'cursor_fg' : ['#eeeeee', '255'], - \ 'cursor_bg' : ['#005f87', '24'], - \ 'cursorline' : ['#e4e4e4', '254'], - \ 'cursorcolumn' : ['#e4e4e4', '254'], - \ 'cursorlinenr_fg' : ['#af5f00', '130'], - \ 'cursorlinenr_bg' : ['#eeeeee', '255'], - \ 'popupmenu_fg' : ['#444444', '238'], - \ 'popupmenu_bg' : ['#d0d0d0', '252'], - \ 'search_fg' : ['#444444', '238'], - \ 'search_bg' : ['#ffff5f', '227'], - \ 'linenumber_fg' : ['#b2b2b2', '249'], - \ 'linenumber_bg' : ['#eeeeee', '255'], - \ 'vertsplit_fg' : ['#005f87', '24'], - \ 'vertsplit_bg' : ['#eeeeee', '255'], - \ 'statusline_active_fg' : ['#e4e4e4', '254'], - \ 'statusline_active_bg' : ['#005f87', '24'], - \ 'statusline_inactive_fg' : ['#444444', '238'], - \ 'statusline_inactive_bg' : ['#d0d0d0', '252'], - \ 'todo_fg' : ['#00af5f', '35'], - \ 'todo_bg' : ['#eeeeee', '255'], - \ 'error_fg' : ['#af0000', '124'], - \ 'error_bg' : ['#ffd7ff', '225'], - \ 'matchparen_bg' : ['#c6c6c6', '251'], - \ 'matchparen_fg' : ['#005f87', '24'], - \ 'visual_fg' : ['#eeeeee', '255'], - \ 'visual_bg' : ['#0087af', '31'], - \ 'folded_fg' : ['#0087af', '31'], - \ 'folded_bg' : ['#afd7ff', '153'], - \ 'wildmenu_fg': ['#444444', '238'], - \ 'wildmenu_bg': ['#ffff00', '226'], - \ 'spellbad': ['#ffafd7', '218'], - \ 'spellcap': ['#ffffaf', '229'], - \ 'spellrare': ['#afff87', '156'], - \ 'spelllocal': ['#d7d7ff', '189'], - \ 'diffadd_fg': ['#008700', '28'], - \ 'diffadd_bg': ['#afffaf', '157'], - \ 'diffdelete_fg': ['#af0000', '124'], - \ 'diffdelete_bg': ['#ffd7ff', '225'], - \ 'difftext_fg': ['#0087af', '31'], - \ 'difftext_bg': ['#ffffd7', '230'], - \ 'diffchange_fg': ['#444444', '238'], - \ 'diffchange_bg': ['#ffd787', '222'], - \ 'tabline_bg': ['#005f87', '24'], - \ 'tabline_active_fg': ['#444444', '238'], - \ 'tabline_active_bg': ['#e4e4e4', '254'], - \ 'tabline_inactive_fg': ['#eeeeee', '255'], - \ 'tabline_inactive_bg': ['#0087af', '31'], - \ 'buftabline_bg': ['#005f87', '24'], - \ 'buftabline_current_fg': ['#444444', '238'], - \ 'buftabline_current_bg': ['#e4e4e4', '254'], - \ 'buftabline_active_fg': ['#eeeeee', '255'], - \ 'buftabline_active_bg': ['#005faf', '25'], - \ 'buftabline_inactive_fg': ['#eeeeee', '255'], - \ 'buftabline_inactive_bg': ['#0087af', '31'] - \ } - \ } - -let s:themes['default'].dark = { - \ 'TEST_256_COLOR_CONSISTENCY' : 1, - \ 'palette' : { - \ 'color00' : ['#1c1c1c', '234'], - \ 'color01' : ['#af005f', '125'], - \ 'color02' : ['#5faf00', '70'], - \ 'color03' : ['#d7af5f', '179'], - \ 'color04' : ['#5fafd7', '74'], - \ 'color05' : ['#808080', '244'], - \ 'color06' : ['#d7875f', '173'], - \ 'color07' : ['#d0d0d0', '252'], - \ 'color08' : ['#585858', '240'], - \ 'color09' : ['#5faf5f', '71'], - \ 'color10' : ['#afd700', '148'], - \ 'color11' : ['#af87d7', '140'], - \ 'color12' : ['#ffaf00', '214'], - \ 'color13' : ['#ff5faf', '205'], - \ 'color14' : ['#00afaf', '37'], - \ 'color15' : ['#5f8787', '66'], - \ 'color16' : ['#5fafd7', '74'], - \ 'color17' : ['#d7af00', '178'], - \ 'cursor_fg' : ['#1c1c1c', '234'], - \ 'cursor_bg' : ['#c6c6c6', '251'], - \ 'cursorline' : ['#303030', '236'], - \ 'cursorcolumn' : ['#303030', '236'], - \ 'cursorlinenr_fg' : ['#ffff00', '226'], - \ 'cursorlinenr_bg' : ['#1c1c1c', '234'], - \ 'popupmenu_fg' : ['#c6c6c6', '251'], - \ 'popupmenu_bg' : ['#303030', '236'], - \ 'search_fg' : ['#000000', '16'], - \ 'search_bg' : ['#00875f', '29'], - \ 'linenumber_fg' : ['#585858', '240'], - \ 'linenumber_bg' : ['#1c1c1c', '234'], - \ 'vertsplit_fg' : ['#5f8787', '66'], - \ 'vertsplit_bg' : ['#1c1c1c', '234'], - \ 'statusline_active_fg' : ['#1c1c1c', '234'], - \ 'statusline_active_bg' : ['#5f8787', '66'], - \ 'statusline_inactive_fg' : ['#bcbcbc', '250'], - \ 'statusline_inactive_bg' : ['#3a3a3a', '237'], - \ 'todo_fg' : ['#ff8700', '208'], - \ 'todo_bg' : ['#1c1c1c', '234'], - \ 'error_fg' : ['#af005f', '125'], - \ 'error_bg' : ['#5f0000', '52'], - \ 'matchparen_bg' : ['#4e4e4e', '239'], - \ 'matchparen_fg' : ['#c6c6c6', '251'], - \ 'visual_fg' : ['#000000', '16'], - \ 'visual_bg' : ['#8787af', '103'], - \ 'folded_fg' : ['#d787ff', '177'], - \ 'folded_bg' : ['#5f005f', '53'], - \ 'wildmenu_fg': ['#1c1c1c', '234'], - \ 'wildmenu_bg': ['#afd700', '148'], - \ 'tabline_bg': ['#262626', '235'], - \ 'tabline_active_fg': ['#121212', '233'], - \ 'tabline_active_bg': ['#00afaf', '37'], - \ 'tabline_inactive_fg': ['#bcbcbc', '250'], - \ 'tabline_inactive_bg': ['#585858', '240'], - \ 'spellbad': ['#5f0000', '52'], - \ 'spellcap': ['#5f005f', '53'], - \ 'spellrare': ['#005f00', '22'], - \ 'spelllocal': ['#00005f', '17'], - \ 'diffadd_fg': ['#87d700', '112'], - \ 'diffadd_bg': ['#005f00', '22'], - \ 'diffdelete_fg': ['#af005f', '125'], - \ 'diffdelete_bg': ['#5f0000', '52'], - \ 'difftext_fg': ['#5fffff', '87'], - \ 'difftext_bg': ['#008787', '30'], - \ 'diffchange_fg': ['#d0d0d0', '252'], - \ 'diffchange_bg': ['#005f5f', '23'] - \ } - \ } - -" }}} - -" Get Selected Theme: {{{ - -let s:theme_name = 'default' -if exists("g:PaperColor_Theme") && has_key(s:themes, tolower(g:PaperColor_Theme)) - let s:theme_name = tolower(g:PaperColor_Theme) -endif -let s:selected_theme = s:themes[s:theme_name] -" }}} - -" Get Theme Variant: either dark or light {{{ -let s:is_dark=(&background == 'dark') - -if s:is_dark - if has_key(s:selected_theme, 'dark') - let s:palette = s:selected_theme['dark'].palette - else " in case the theme only provides the other variant - let s:palette = s:selected_theme['light'].palette - endif - -else " is light background - if has_key(s:selected_theme, 'light') - let s:palette = s:selected_theme['light'].palette - else " in case the theme only provides the other variant - let s:palette = s:selected_theme['dark'].palette - endif -endif -" }}} - -" Systematic User-Config Options: {{{ -" Example config in .vimrc -" let g:PaperColor_Theme_Options = { -" \ 'theme': { -" \ 'default': { -" \ 'allow_bold': 1, -" \ 'allow_italic': 0, -" \ 'transparent_background': 1 -" \ } -" \ }, -" \ 'language': { -" \ 'python': { -" \ 'highlight_builtins' : 1 -" \ }, -" \ 'c': { -" \ 'highlight_builtins' : 1 -" \ }, -" \ 'cpp': { -" \ 'highlight_standard_library': 1 -" \ } -" \ } -" \ } -" -let s:options = {} -if exists("g:PaperColor_Theme_Options") - let s:options = g:PaperColor_Theme_Options -endif - -" }}} - -" Theme Options: {{{ -" Part of user-config options -let s:theme_options = {} -if has_key(s:options, 'theme') - let s:theme_options = s:options['theme'] -endif - - -" Function to obtain theme option for the current theme -" @param option - string -" @return the value of that option if specified; empty string otherwise -" Example: s:Theme_Options('transparent_background') -" returns 1 if there is an option for current theme in `theme` section in -" g:PaperColor_Theme_Options such as: -" 'theme': { -" \ 'default': { -" \ 'transparent_background': 1 -" \ } -" } -" OR it could specify for the exact light or dark variant of the theme, -" which will take higher precedence for the current theme variant -" 'theme': { -" \ 'default': { -" \ 'transparent_background': 0 -" \ }, -" \ 'default.light': { -" \ 'transparent_background': 1 -" \ } -" } -fun! s:Theme_Options(option) - let l:value = '' - - let l:variant = 'light' - if s:is_dark - let l:variant = 'dark' - endif - let l:specific_theme_variant = s:theme_name . '.' . l:variant - - if has_key(s:theme_options, l:specific_theme_variant) - let l:theme_option = s:theme_options[l:specific_theme_variant] - if has_key(l:theme_option, a:option) - let l:value = l:theme_option[a:option] - endif - elseif has_key(s:theme_options, s:theme_name) - let l:theme_option = s:theme_options[s:theme_name] - if has_key(l:theme_option, a:option) - let l:value = l:theme_option[a:option] - endif - endif - - return l:value -endfun - -" These options will be checked at many place so better be cached to variables -let s:TRANSPARENT_BACKGROUND = s:Theme_Options('transparent_background') == 1 - - -" }}} - -" Language Options: {{{ -" Part of user-config options -let s:language_options = {} -if has_key(s:options, 'language') - let s:language_options = s:options['language'] -endif - -" Function to obtain a language option -" @param option - string pattern [language].[option] -" @param value - number or string -" @return the option value if it is provided; empty string otherwise -" Example: s:Language_Options('python.highlight_builtins', 1) -" returns 1 if there is an option in `language` section in -" g:PaperColor_Theme_Options such as: -" 'language': { -" \ 'python': { -" \ 'highlight_builtins': 1 -" \ } -" } -fun! s:Language_Options(option) - let l:parts = split(a:option, "\\.") - let l:language = l:parts[0] - let l:option = l:parts[1] - - if has_key(s:language_options, l:language) - let l:language_option = s:language_options[l:language] - if has_key(l:language_option, l:option) - return l:language_option[l:option] - endif - endif - - return '' -endfun - -" }}} - - - -" HEX TO 256-COLOR CONVERTER: {{{ -" Returns an approximate grey index for the given grey level -fun! s:grey_number(x) - if &t_Co == 88 - if a:x < 23 - return 0 - elseif a:x < 69 - return 1 - elseif a:x < 103 - return 2 - elseif a:x < 127 - return 3 - elseif a:x < 150 - return 4 - elseif a:x < 173 - return 5 - elseif a:x < 196 - return 6 - elseif a:x < 219 - return 7 - elseif a:x < 243 - return 8 - else - return 9 - endif - else - if a:x < 14 - return 0 - else - let l:n = (a:x - 8) / 10 - let l:m = (a:x - 8) % 10 - if l:m < 5 - return l:n - else - return l:n + 1 - endif - endif - endif -endfun - -" Returns the actual grey level represented by the grey index -fun! s:grey_level(n) - if &t_Co == 88 - if a:n == 0 - return 0 - elseif a:n == 1 - return 46 - elseif a:n == 2 - return 92 - elseif a:n == 3 - return 115 - elseif a:n == 4 - return 139 - elseif a:n == 5 - return 162 - elseif a:n == 6 - return 185 - elseif a:n == 7 - return 208 - elseif a:n == 8 - return 231 - else - return 255 - endif - else - if a:n == 0 - return 0 - else - return 8 + (a:n * 10) - endif - endif -endfun - -" Returns the palette index for the given grey index -fun! s:grey_colour(n) - if &t_Co == 88 - if a:n == 0 - return 16 - elseif a:n == 9 - return 79 - else - return 79 + a:n - endif - else - if a:n == 0 - return 16 - elseif a:n == 25 - return 231 - else - return 231 + a:n - endif - endif -endfun - -" Returns an approximate colour index for the given colour level -fun! s:rgb_number(x) - if &t_Co == 88 - if a:x < 69 - return 0 - elseif a:x < 172 - return 1 - elseif a:x < 230 - return 2 - else - return 3 - endif - else - if a:x < 75 - return 0 - else - let l:n = (a:x - 55) / 40 - let l:m = (a:x - 55) % 40 - if l:m < 20 - return l:n - else - return l:n + 1 - endif - endif - endif -endfun - -" Returns the actual colour level for the given colour index -fun! s:rgb_level(n) - if &t_Co == 88 - if a:n == 0 - return 0 - elseif a:n == 1 - return 139 - elseif a:n == 2 - return 205 - else - return 255 - endif - else - if a:n == 0 - return 0 - else - return 55 + (a:n * 40) - endif - endif -endfun - -" Returns the palette index for the given R/G/B colour indices -fun! s:rgb_colour(x, y, z) - if &t_Co == 88 - return 16 + (a:x * 16) + (a:y * 4) + a:z - else - return 16 + (a:x * 36) + (a:y * 6) + a:z - endif -endfun - -" Returns the palette index to approximate the given R/G/B colour levels -fun! s:colour(r, g, b) - " Get the closest grey - let l:gx = s:grey_number(a:r) - let l:gy = s:grey_number(a:g) - let l:gz = s:grey_number(a:b) - - " Get the closest colour - let l:x = s:rgb_number(a:r) - let l:y = s:rgb_number(a:g) - let l:z = s:rgb_number(a:b) - - if l:gx == l:gy && l:gy == l:gz - " There are two possibilities - let l:dgr = s:grey_level(l:gx) - a:r - let l:dgg = s:grey_level(l:gy) - a:g - let l:dgb = s:grey_level(l:gz) - a:b - let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb) - let l:dr = s:rgb_level(l:gx) - a:r - let l:dg = s:rgb_level(l:gy) - a:g - let l:db = s:rgb_level(l:gz) - a:b - let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db) - if l:dgrey < l:drgb - " Use the grey - return s:grey_colour(l:gx) - else - " Use the colour - return s:rgb_colour(l:x, l:y, l:z) - endif - else - " Only one possibility - return s:rgb_colour(l:x, l:y, l:z) - endif -endfun - -" Returns the palette index to approximate the '#rrggbb' hex string -fun! s:to_256(rgb) - let l:r = ("0x" . strpart(a:rgb, 1, 2)) + 0 - let l:g = ("0x" . strpart(a:rgb, 3, 2)) + 0 - let l:b = ("0x" . strpart(a:rgb, 5, 2)) + 0 - - return s:colour(l:r, l:g, l:b) -endfun - -" Sets the highlighting for the given group -fun! s:HL(group, fg, bg, attr) - let l:command = "hi " . a:group - - let l:highlight = '' - if s:mode == s:MODE_TRUE_COLOR " GUI VIM - - if !empty(a:fg) - let l:highlight .= " guifg=" . a:fg[0] - endif - if !empty(a:bg) - let l:highlight .= " guibg=" . a:bg[0] - endif - if a:attr != "" - let l:highlight .= " gui=" . a:attr - endif - - if !empty(a:fg) - let l:highlight .= " ctermfg=" . a:fg[1] - endif - if !empty(a:bg) - let l:highlight .= " ctermbg=" . a:bg[1] - endif - if a:attr != "" - let l:highlight .= " cterm=" . a:attr - endif - - elseif s:mode == s:MODE_256_COLOR " 256-color Terminal - - if !empty(a:fg) - let l:highlight .= " ctermfg=" . a:fg[1] - endif - if !empty(a:bg) - let l:highlight .= " ctermbg=" . a:bg[1] - endif - if a:attr != "" - let l:highlight .= " cterm=" . a:attr - endif - - elseif s:mode == s:MODE_TRUE_OR_256_COLOR - - if !empty(a:fg) - let l:highlight .= " guifg=" . a:fg[0] - endif - if !empty(a:bg) - let l:highlight .= " guibg=" . a:bg[0] - endif - if a:attr != "" - let l:highlight .= " gui=" . a:attr - endif - - if !empty(a:fg) - let l:highlight .= " ctermfg=" . a:fg[1] - endif - if !empty(a:bg) - let l:highlight .= " ctermbg=" . a:bg[1] - endif - if a:attr != "" - let l:highlight .= " cterm=" . a:attr - endif - - else " 16-color Terminal - - if !empty(a:fg) - let l:highlight .= " ctermfg=" . a:fg[2] - endif - if !empty(a:bg) - let l:highlight .= " ctermbg=" . a:bg[2] - endif - if a:attr != "" - let l:highlight .= " cterm=" . a:attr - endif - - endif - - " exec l:command - " call add(s:highlightings, 'hi ' . a:group . ' ' . l:highlight) - call add(s:highlightings, [a:group, l:highlight]) -endfun - -fun! s:Load_Settings_Override(custom) - if has_key(a:custom, 'cursorline') - let s:cursorline = [a:custom['cursorline'], '' . s:to_256(a:custom['cursorline'])] - endif - if has_key(a:custom, 'background') - let s:background = [a:custom['background'], '' . s:to_256(a:custom['background'])] - endif - if has_key(a:custom, 'matchparen') - let s:matchparen = [a:custom['matchparen'], '' . s:to_256(a:custom['matchparen'])] - endif - if has_key(a:custom, 'comment') - let s:comment = [a:custom['comment'], '' . s:to_256(a:custom['comment'])] - endif -endfun -" }}} - -" 256-COLOR TO HEX TABLE: {{{ - -""" Xterm 256 color dictionary -" See: http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html -" -let s:to_HEX = { - \ '00': '#000000', '01': '#800000', '02': '#008000', '03': '#808000', '04': '#000080', - \ '05': '#800080', '06': '#008080', '07': '#c0c0c0', '08': '#808080', '09': '#ff0000', - \ '10': '#00ff00', '11': '#ffff00', '12': '#0000ff', '13': '#ff00ff', '14': '#00ffff', - \ '15': '#ffffff', '16': '#000000', '17': '#00005f', '18': '#000087', '19': '#0000af', - \ '20': '#0000d7', '21': '#0000ff', '22': '#005f00', '23': '#005f5f', '24': '#005f87', - \ '25': '#005faf', '26': '#005fd7', '27': '#005fff', '28': '#008700', '29': '#00875f', - \ '30': '#008787', '31': '#0087af', '32': '#0087d7', '33': '#0087ff', '34': '#00af00', - \ '35': '#00af5f', '36': '#00af87', '37': '#00afaf', '38': '#00afd7', '39': '#00afff', - \ '40': '#00d700', '41': '#00d75f', '42': '#00d787', '43': '#00d7af', '44': '#00d7d7', - \ '45': '#00d7ff', '46': '#00ff00', '47': '#00ff5f', '48': '#00ff87', '49': '#00ffaf', - \ '50': '#00ffd7', '51': '#00ffff', '52': '#5f0000', '53': '#5f005f', '54': '#5f0087', - \ '55': '#5f00af', '56': '#5f00d7', '57': '#5f00ff', '58': '#5f5f00', '59': '#5f5f5f', - \ '60': '#5f5f87', '61': '#5f5faf', '62': '#5f5fd7', '63': '#5f5fff', '64': '#5f8700', - \ '65': '#5f875f', '66': '#5f8787', '67': '#5f87af', '68': '#5f87d7', '69': '#5f87ff', - \ '70': '#5faf00', '71': '#5faf5f', '72': '#5faf87', '73': '#5fafaf', '74': '#5fafd7', - \ '75': '#5fafff', '76': '#5fd700', '77': '#5fd75f', '78': '#5fd787', '79': '#5fd7af', - \ '80': '#5fd7d7', '81': '#5fd7ff', '82': '#5fff00', '83': '#5fff5f', '84': '#5fff87', - \ '85': '#5fffaf', '86': '#5fffd7', '87': '#5fffff', '88': '#870000', '89': '#87005f', - \ '90': '#870087', '91': '#8700af', '92': '#8700d7', '93': '#8700ff', '94': '#875f00', - \ '95': '#875f5f', '96': '#875f87', '97': '#875faf', '98': '#875fd7', '99': '#875fff', - \ '100': '#878700', '101': '#87875f', '102': '#878787', '103': '#8787af', '104': '#8787d7', - \ '105': '#8787ff', '106': '#87af00', '107': '#87af5f', '108': '#87af87', '109': '#87afaf', - \ '110': '#87afd7', '111': '#87afff', '112': '#87d700', '113': '#87d75f', '114': '#87d787', - \ '115': '#87d7af', '116': '#87d7d7', '117': '#87d7ff', '118': '#87ff00', '119': '#87ff5f', - \ '120': '#87ff87', '121': '#87ffaf', '122': '#87ffd7', '123': '#87ffff', '124': '#af0000', - \ '125': '#af005f', '126': '#af0087', '127': '#af00af', '128': '#af00d7', '129': '#af00ff', - \ '130': '#af5f00', '131': '#af5f5f', '132': '#af5f87', '133': '#af5faf', '134': '#af5fd7', - \ '135': '#af5fff', '136': '#af8700', '137': '#af875f', '138': '#af8787', '139': '#af87af', - \ '140': '#af87d7', '141': '#af87ff', '142': '#afaf00', '143': '#afaf5f', '144': '#afaf87', - \ '145': '#afafaf', '146': '#afafd7', '147': '#afafff', '148': '#afd700', '149': '#afd75f', - \ '150': '#afd787', '151': '#afd7af', '152': '#afd7d7', '153': '#afd7ff', '154': '#afff00', - \ '155': '#afff5f', '156': '#afff87', '157': '#afffaf', '158': '#afffd7', '159': '#afffff', - \ '160': '#d70000', '161': '#d7005f', '162': '#d70087', '163': '#d700af', '164': '#d700d7', - \ '165': '#d700ff', '166': '#d75f00', '167': '#d75f5f', '168': '#d75f87', '169': '#d75faf', - \ '170': '#d75fd7', '171': '#d75fff', '172': '#d78700', '173': '#d7875f', '174': '#d78787', - \ '175': '#d787af', '176': '#d787d7', '177': '#d787ff', '178': '#d7af00', '179': '#d7af5f', - \ '180': '#d7af87', '181': '#d7afaf', '182': '#d7afd7', '183': '#d7afff', '184': '#d7d700', - \ '185': '#d7d75f', '186': '#d7d787', '187': '#d7d7af', '188': '#d7d7d7', '189': '#d7d7ff', - \ '190': '#d7ff00', '191': '#d7ff5f', '192': '#d7ff87', '193': '#d7ffaf', '194': '#d7ffd7', - \ '195': '#d7ffff', '196': '#ff0000', '197': '#ff005f', '198': '#ff0087', '199': '#ff00af', - \ '200': '#ff00d7', '201': '#ff00ff', '202': '#ff5f00', '203': '#ff5f5f', '204': '#ff5f87', - \ '205': '#ff5faf', '206': '#ff5fd7', '207': '#ff5fff', '208': '#ff8700', '209': '#ff875f', - \ '210': '#ff8787', '211': '#ff87af', '212': '#ff87d7', '213': '#ff87ff', '214': '#ffaf00', - \ '215': '#ffaf5f', '216': '#ffaf87', '217': '#ffafaf', '218': '#ffafd7', '219': '#ffafff', - \ '220': '#ffd700', '221': '#ffd75f', '222': '#ffd787', '223': '#ffd7af', '224': '#ffd7d7', - \ '225': '#ffd7ff', '226': '#ffff00', '227': '#ffff5f', '228': '#ffff87', '229': '#ffffaf', - \ '230': '#ffffd7', '231': '#ffffff', '232': '#080808', '233': '#121212', '234': '#1c1c1c', - \ '235': '#262626', '236': '#303030', '237': '#3a3a3a', '238': '#444444', '239': '#4e4e4e', - \ '240': '#585858', '241': '#626262', '242': '#6c6c6c', '243': '#767676', '244': '#808080', - \ '245': '#8a8a8a', '246': '#949494', '247': '#9e9e9e', '248': '#a8a8a8', '249': '#b2b2b2', - \ '250': '#bcbcbc', '251': '#c6c6c6', '252': '#d0d0d0', '253': '#dadada', '254': '#e4e4e4', - \ '255': '#eeeeee' } - -" }}} - -" COLOR MODE IDENTIFICATION: {{{ -let s:MODE_16_COLOR = 0 -let s:MODE_256_COLOR = 1 -let s:MODE_TRUE_COLOR = 2 -let s:MODE_TRUE_OR_256_COLOR = 3 " for code generation purpose, not for theme usage - -if has("gui_running") || has('termguicolors') && &termguicolors || has('nvim') && $NVIM_TUI_ENABLE_TRUE_COLOR - let s:mode = s:MODE_TRUE_COLOR -elseif (&t_Co == 256) - let s:mode = s:MODE_256_COLOR -else - let s:mode = s:MODE_16_COLOR -endif - -" }}} - -" COLOR MODE ADAPTATION: {{{ -" Handle Preprocessing For Current Color Set If Necessary -fun! s:adapt_to_environment() - let s:bold = "bold" - let s:italic = "italic" - if s:mode == s:MODE_TRUE_COLOR - " TODO: if require auto-gui-color coversion - elseif s:mode == s:MODE_256_COLOR - " TODO: if require auto-256-color coversion - elseif s:mode == s:MODE_TRUE_OR_256_COLOR - " TODO: - else " if s:use_16_color - let s:bold = "" - endif -endfun -" }}} - -" SET COLOR VARIABLES: {{{ -fun! s:set_color_variables() - " Array format [, <256-Base>, <16-Base>] - " 16-Base is terminal's native color palette that can be alternated through - " the terminal settings. The 16-color names are according to `:h cterm-colors` - " Use 16: targetcolor[-1] - " Use 256: targetcolor[-2] " GUI can be omitted - " Use GUI: targetcolor[0] " 256 can be ommitted - - " BASIC COLORS: - " color00-15 are required by all themes. - " These are also how the terminal color palette for the target theme should be. - " See README for theme design guideline - " - " An example format of the below variable's value: ['#262626', '234', 'Black'] - " Where the 1st value is HEX color for GUI Vim, 2nd value is for 256-color terminal, - " and the color name on the right is for 16-color terminal (the actual terminal colors - " can be different from what the color names suggest). See :h cterm-colors - " - " Depending on the provided color palette and current Vim, the 1st and 2nd - " parameter might not exist, for example, on 16-color terminal, the variables below - " only store the color names to use the terminal color palette which is the only - " thing available therefore no need for GUI-color or 256-color. - let s:background = get(s:palette, 'color00') + ['Black'] - let s:negative = get(s:palette, 'color01') + ['DarkRed'] - let s:positive = get(s:palette, 'color02') + ['DarkGreen'] - let s:olive = get(s:palette, 'color03') + ['DarkYellow'] " string - let s:neutral = get(s:palette, 'color04') + ['DarkBlue'] - let s:comment = get(s:palette, 'color05') + ['DarkMagenta'] - let s:navy = get(s:palette, 'color06') + ['DarkCyan'] " storageclass - let s:foreground = get(s:palette, 'color07') + ['LightGray'] - - let s:nontext = get(s:palette, 'color08') + ['DarkGray'] - let s:red = get(s:palette, 'color09') + ['LightRed'] " import / try/catch - let s:pink = get(s:palette, 'color10') + ['LightGreen'] " statement, type - let s:purple = get(s:palette, 'color11') + ['LightYellow'] " if / conditional - let s:accent = get(s:palette, 'color12') + ['LightBlue'] - let s:orange = get(s:palette, 'color13') + ['LightMagenta'] " number - let s:blue = get(s:palette, 'color14') + ['LightCyan'] " other keyword - let s:highlight = get(s:palette, 'color15') + ['White'] - - let s:transparent = [s:background[0], 'none', 'none'] - " EXTENDED COLORS: - " From here on, all colors are optional and must have default values (3rd parameter of the - " `get` command) that point to the above basic colors in case the target theme doesn't - " provide the extended colors. The default values should be reasonably sensible. - " The terminal color must be provided also. - - let s:aqua = get(s:palette, 'color16', get(s:palette, 'color14')) + ['LightCyan'] - let s:green = get(s:palette, 'color17', get(s:palette, 'color13')) + ['LightMagenta'] - let s:wine = get(s:palette, 'color18', get(s:palette, 'color11')) + ['LightYellow'] - - " LineNumber: when set number - let s:linenumber_fg = get(s:palette, 'linenumber_fg', get(s:palette, 'color08')) + ['DarkGray'] - let s:linenumber_bg = get(s:palette, 'linenumber_bg', get(s:palette, 'color00')) + ['Black'] - - " Vertical Split: when there are more than 1 window side by side, ex: - let s:vertsplit_fg = get(s:palette, 'vertsplit_fg', get(s:palette, 'color15')) + ['White'] - let s:vertsplit_bg = get(s:palette, 'vertsplit_bg', get(s:palette, 'color00')) + ['Black'] - - " Statusline: when set status=2 - let s:statusline_active_fg = get(s:palette, 'statusline_active_fg', get(s:palette, 'color00')) + ['Black'] - let s:statusline_active_bg = get(s:palette, 'statusline_active_bg', get(s:palette, 'color15')) + ['White'] - let s:statusline_inactive_fg = get(s:palette, 'statusline_inactive_fg', get(s:palette, 'color07')) + ['LightGray'] - let s:statusline_inactive_bg = get(s:palette, 'statusline_inactive_bg', get(s:palette, 'color08')) + ['DarkGray'] - - - " Cursor: in normal mode - let s:cursor_fg = get(s:palette, 'cursor_fg', get(s:palette, 'color00')) + ['Black'] - let s:cursor_bg = get(s:palette, 'cursor_bg', get(s:palette, 'color07')) + ['LightGray'] - - let s:cursorline = get(s:palette, 'cursorline', get(s:palette, 'color00')) + ['Black'] - - " CursorColumn: when set cursorcolumn - let s:cursorcolumn = get(s:palette, 'cursorcolumn', get(s:palette, 'color00')) + ['Black'] - - " CursorLine Number: when set cursorline number - let s:cursorlinenr_fg = get(s:palette, 'cursorlinenr_fg', get(s:palette, 'color13')) + ['LightMagenta'] - let s:cursorlinenr_bg = get(s:palette, 'cursorlinenr_bg', get(s:palette, 'color00')) + ['Black'] - - " Popup Menu: when for autocomplete - let s:popupmenu_fg = get(s:palette, 'popupmenu_fg', get(s:palette, 'color07')) + ['LightGray'] - let s:popupmenu_bg = get(s:palette, 'popupmenu_bg', get(s:palette, 'color08')) + ['DarkGray'] - - " Search: ex: when * on a word - let s:search_fg = get(s:palette, 'search_fg', get(s:palette, 'color00')) + ['Black'] - let s:search_bg = get(s:palette, 'search_bg', get(s:palette, 'color15')) + ['White'] - - " Todo: ex: TODO - let s:todo_fg = get(s:palette, 'todo_fg', get(s:palette, 'color05')) + ['LightYellow'] - let s:todo_bg = get(s:palette, 'todo_bg', get(s:palette, 'color00')) + ['Black'] - - " Error: ex: turn spell on and have invalid words - let s:error_fg = get(s:palette, 'error_fg', get(s:palette, 'color01')) + ['DarkRed'] - let s:error_bg = get(s:palette, 'error_bg', get(s:palette, 'color00')) + ['Black'] - - " Match Parenthesis: selecting an opening/closing pair and the other one will be highlighted - let s:matchparen_fg = get(s:palette, 'matchparen_fg', get(s:palette, 'color00')) + ['LightMagenta'] - let s:matchparen_bg = get(s:palette, 'matchparen_bg', get(s:palette, 'color05')) + ['Black'] - - " Visual: - let s:visual_fg = get(s:palette, 'visual_fg', get(s:palette, 'color08')) + ['White'] - let s:visual_bg = get(s:palette, 'visual_bg', get(s:palette, 'color07')) + ['Black'] - - " Folded: - let s:folded_fg = get(s:palette, 'folded_fg', get(s:palette, 'color00')) + ['Black'] - let s:folded_bg = get(s:palette, 'folded_bg', get(s:palette, 'color05')) + ['DarkYellow'] - - " WildMenu: Autocomplete command, ex: :color - let s:wildmenu_fg = get(s:palette, 'wildmenu_fg', get(s:palette, 'color00')) + ['Black'] - let s:wildmenu_bg = get(s:palette, 'wildmenu_bg', get(s:palette, 'color06')) + ['LightGray'] - - " Spelling: when spell on and there are spelling problems like this for example: papercolor. a vim color scheme - let s:spellbad = get(s:palette, 'spellbad', get(s:palette, 'color04')) + ['DarkRed'] - let s:spellcap = get(s:palette, 'spellcap', get(s:palette, 'color05')) + ['DarkMagenta'] - let s:spellrare = get(s:palette, 'spellrare', get(s:palette, 'color06')) + ['DarkYellow'] - let s:spelllocal = get(s:palette, 'spelllocal', get(s:palette, 'color01')) + ['DarkBlue'] - - " Diff: - let s:diffadd_fg = get(s:palette, 'diffadd_fg', get(s:palette, 'color00')) + ['Black'] - let s:diffadd_bg = get(s:palette, 'diffadd_bg', get(s:palette, 'color02')) + ['DarkGreen'] - - let s:diffdelete_fg = get(s:palette, 'diffdelete_fg', get(s:palette, 'color00')) + ['Black'] - let s:diffdelete_bg = get(s:palette, 'diffdelete_bg', get(s:palette, 'color04')) + ['DarkRed'] - - let s:difftext_fg = get(s:palette, 'difftext_fg', get(s:palette, 'color00')) + ['Black'] - let s:difftext_bg = get(s:palette, 'difftext_bg', get(s:palette, 'color06')) + ['DarkYellow'] - - let s:diffchange_fg = get(s:palette, 'diffchange_fg', get(s:palette, 'color00')) + ['Black'] - let s:diffchange_bg = get(s:palette, 'diffchange_bg', get(s:palette, 'color14')) + ['LightYellow'] - - " Tabline: when having tabs, ex: :tabnew - let s:tabline_bg = get(s:palette, 'tabline_bg', get(s:palette, 'color00')) + ['Black'] - let s:tabline_active_fg = get(s:palette, 'tabline_active_fg', get(s:palette, 'color07')) + ['LightGray'] - let s:tabline_active_bg = get(s:palette, 'tabline_active_bg', get(s:palette, 'color00')) + ['Black'] - let s:tabline_inactive_fg = get(s:palette, 'tabline_inactive_fg', get(s:palette, 'color07')) + ['Black'] - let s:tabline_inactive_bg = get(s:palette, 'tabline_inactive_bg', get(s:palette, 'color08')) + ['DarkMagenta'] - - " Plugin: BufTabLine https://github.com/ap/vim-buftabline - let s:buftabline_bg = get(s:palette, 'buftabline_bg', get(s:palette, 'color00')) + ['Black'] - let s:buftabline_current_fg = get(s:palette, 'buftabline_current_fg', get(s:palette, 'color07')) + ['LightGray'] - let s:buftabline_current_bg = get(s:palette, 'buftabline_current_bg', get(s:palette, 'color05')) + ['DarkMagenta'] - let s:buftabline_active_fg = get(s:palette, 'buftabline_active_fg', get(s:palette, 'color07')) + ['LightGray'] - let s:buftabline_active_bg = get(s:palette, 'buftabline_active_bg', get(s:palette, 'color12')) + ['LightBlue'] - let s:buftabline_inactive_fg = get(s:palette, 'buftabline_inactive_fg', get(s:palette, 'color07')) + ['LightGray'] - let s:buftabline_inactive_bg = get(s:palette, 'buftabline_inactive_bg', get(s:palette, 'color00')) + ['Black'] - -endfun -" }}} - -" SET SYNTAX HIGHLIGHTING: {{{ - -fun! s:set_highlightings_variable() - let s:highlightings = [] - " Normal group should be executed first. Other parts assume that. - if s:TRANSPARENT_BACKGROUND - call s:HL("Normal", s:foreground, "", "") - call s:HL("NonText", s:nontext, "", "") - call s:HL("LineNr", s:linenumber_fg, "", "") - call s:HL("Conceal", s:linenumber_fg, "", "") - call s:HL("VertSplit", s:vertsplit_fg, "", "none") - call s:HL("FoldColumn", s:folded_fg, s:transparent, "none") - else - call s:HL("Normal", s:foreground, s:background, "") - call s:HL("NonText", s:nontext, s:background, "") - call s:HL("LineNr", s:linenumber_fg, s:linenumber_bg, "") - call s:HL("Conceal", s:linenumber_fg, s:linenumber_bg, "") - call s:HL("VertSplit", s:vertsplit_bg, s:vertsplit_fg, "") - call s:HL("FoldColumn", s:folded_fg, s:background, "none") - endif - - call s:HL("Cursor", s:cursor_fg, s:cursor_bg, "") - call s:HL("SpecialKey", s:nontext, "", "") - call s:HL("Search", s:search_fg, s:search_bg, "") - call s:HL("StatusLine", s:statusline_active_bg, s:statusline_active_fg, "") - call s:HL("StatusLineNC", s:statusline_inactive_bg, s:statusline_inactive_fg, "") - call s:HL("Visual", s:visual_fg, s:visual_bg, "") - call s:HL("Directory", s:blue, "", "") - call s:HL("ModeMsg", s:olive, "", "") - call s:HL("MoreMsg", s:olive, "", "") - call s:HL("Question", s:olive, "", "") - call s:HL("WarningMsg", s:pink, "", "") - call s:HL("MatchParen", s:matchparen_fg, s:matchparen_bg, "") - call s:HL("Folded", s:folded_fg, s:folded_bg, "") - call s:HL("WildMenu", s:wildmenu_fg, s:wildmenu_bg, s:bold) - - if version >= 700 - call s:HL("CursorLine", "", s:cursorline, "none") - if s:mode == s:MODE_16_COLOR - call s:HL("CursorLineNr", s:cursorlinenr_fg, s:cursorlinenr_bg, "") - else - call s:HL("CursorLineNr", s:cursorlinenr_fg, s:cursorlinenr_bg, "none") - endif - call s:HL("CursorColumn", "", s:cursorcolumn, "none") - call s:HL("PMenu", s:popupmenu_fg, s:popupmenu_bg, "none") - call s:HL("PMenuSel", s:popupmenu_fg, s:popupmenu_bg, "reverse") - if s:TRANSPARENT_BACKGROUND - call s:HL("SignColumn", s:green, "", "none") - else - call s:HL("SignColumn", s:green, s:background, "none") - endif - end - if version >= 703 - call s:HL("ColorColumn", "", s:cursorcolumn, "none") - end - - call s:HL("TabLine", s:tabline_inactive_fg, s:tabline_inactive_bg, "none") - call s:HL("TabLineFill", s:tabline_bg, s:tabline_bg, "none") - call s:HL("TabLineSel", s:tabline_active_fg, s:tabline_active_bg, "none") - - call s:HL("BufTabLineCurrent", s:buftabline_current_fg, s:buftabline_current_bg, "None") - call s:HL("BufTabLineActive", s:buftabline_active_fg, s:buftabline_active_bg, "None") - call s:HL("BufTabLineHidden", s:buftabline_inactive_fg, s:buftabline_inactive_bg, "None") - call s:HL("BufTabLineFill", "", s:buftabline_bg, "None") - - " Standard Group Highlighting: - call s:HL("Comment", s:comment, "", "") - - call s:HL("Constant", s:orange, "", "") - call s:HL("String", s:olive, "", "") - call s:HL("Character", s:olive, "", "") - call s:HL("Number", s:orange, "", "") - call s:HL("Boolean", s:green, "", s:bold) - call s:HL("Float", s:orange, "", "") - - call s:HL("Identifier", s:navy, "", "") - call s:HL("Function", s:foreground, "", "") - - call s:HL("Statement", s:pink, "", "none") - call s:HL("Conditional", s:purple, "", s:bold) - call s:HL("Repeat", s:purple, "", s:bold) - call s:HL("Label", s:blue, "", "") - call s:HL("Operator", s:aqua, "", "none") - call s:HL("Keyword", s:blue, "", "") - call s:HL("Exception", s:red, "", "") - - call s:HL("PreProc", s:blue, "", "") - call s:HL("Include", s:red, "", "") - call s:HL("Define", s:blue, "", "") - call s:HL("Macro", s:blue, "", "") - call s:HL("PreCondit", s:aqua, "", "") - - call s:HL("Type", s:pink, "", s:bold) - call s:HL("StorageClass", s:navy, "", s:bold) - call s:HL("Structure", s:blue, "", s:bold) - call s:HL("Typedef", s:pink, "", s:bold) - - call s:HL("Special", s:foreground, "", "") - call s:HL("SpecialChar", s:foreground, "", "") - call s:HL("Tag", s:green, "", "") - call s:HL("Delimiter",s:aqua, "", "") - call s:HL("SpecialComment", s:comment, "", s:bold) - call s:HL("Debug", s:orange, "", "") - - call s:HL("Error", s:error_fg, s:error_bg, "") - call s:HL("Todo", s:todo_fg, s:todo_bg, s:bold) - - call s:HL("Title", s:comment, "", "") - call s:HL("Global", s:blue, "", "") - - - " Extension {{{ - " VimL Highlighting - call s:HL("vimCommand", s:pink, "", "") - call s:HL("vimVar", s:navy, "", "") - call s:HL("vimFuncKey", s:pink, "", "") - call s:HL("vimFunction", s:blue, "", s:bold) - call s:HL("vimNotFunc", s:pink, "", "") - call s:HL("vimMap", s:red, "", "") - call s:HL("vimAutoEvent", s:aqua, "", s:bold) - call s:HL("vimMapModKey", s:aqua, "", "") - call s:HL("vimFuncName", s:purple, "", "") - call s:HL("vimIsCommand", s:foreground, "", "") - call s:HL("vimFuncVar", s:aqua, "", "") - call s:HL("vimLet", s:red, "", "") - call s:HL("vimContinue", s:aqua, "", "") - call s:HL("vimMapRhsExtend", s:foreground, "", "") - call s:HL("vimCommentTitle", s:comment, "", s:bold) - call s:HL("vimBracket", s:aqua, "", "") - call s:HL("vimParenSep", s:aqua, "", "") - call s:HL("vimNotation", s:aqua, "", "") - call s:HL("vimOper", s:foreground, "", "") - call s:HL("vimOperParen", s:foreground, "", "") - call s:HL("vimSynType", s:purple, "", "") - call s:HL("vimSynReg", s:pink, "", "none") - call s:HL("vimSynKeyRegion", s:green, "", "") - call s:HL("vimSynRegOpt", s:blue, "", "") - call s:HL("vimSynMtchOpt", s:blue, "", "") - call s:HL("vimSynContains", s:pink, "", "") - call s:HL("vimGroupName", s:foreground, "", "") - call s:HL("vimGroupList", s:foreground, "", "") - call s:HL("vimHiGroup", s:foreground, "", "") - call s:HL("vimGroup", s:navy, "", s:bold) - call s:HL("vimOnlyOption", s:blue, "", "") - - " Makefile Highlighting - call s:HL("makeIdent", s:blue, "", "") - call s:HL("makeSpecTarget", s:olive, "", "") - call s:HL("makeTarget", s:red, "", "") - call s:HL("makeStatement", s:aqua, "", s:bold) - call s:HL("makeCommands", s:foreground, "", "") - call s:HL("makeSpecial", s:orange, "", s:bold) - - " CMake Highlighting - call s:HL("cmakeStatement", s:pink, "", "") - call s:HL("cmakeArguments", s:foreground, "", "") - call s:HL("cmakeVariableValue", s:blue, "", "") - call s:HL("cmakeOperators", s:red, "", "") - - " C Highlighting - call s:HL("cType", s:pink, "", s:bold) - call s:HL("cFormat", s:olive, "", "") - call s:HL("cStorageClass", s:navy, "", s:bold) - - call s:HL("cBoolean", s:green, "", "") - call s:HL("cCharacter", s:olive, "", "") - call s:HL("cConstant", s:green, "", s:bold) - call s:HL("cConditional", s:purple, "", s:bold) - call s:HL("cSpecial", s:olive, "", s:bold) - call s:HL("cDefine", s:blue, "", "") - call s:HL("cNumber", s:orange, "", "") - call s:HL("cPreCondit", s:aqua, "", "") - call s:HL("cRepeat", s:purple, "", s:bold) - call s:HL("cLabel",s:aqua, "", "") - " call s:HL("cAnsiFunction",s:aqua, "", s:bold) - " call s:HL("cAnsiName",s:pink, "", "") - call s:HL("cDelimiter",s:blue, "", "") - " call s:HL("cBraces",s:foreground, "", "") - " call s:HL("cIdentifier",s:blue, s:pink, "") - " call s:HL("cSemiColon","", s:blue, "") - call s:HL("cOperator",s:aqua, "", "") - " call s:HL("cStatement",s:pink, "", "") - " call s:HL("cTodo", s:comment, "", s:bold) - " call s:HL("cStructure", s:blue, "", s:bold) - call s:HL("cCustomParen", s:foreground, "", "") - " call s:HL("cCustomFunc", s:foreground, "", "") - " call s:HL("cUserFunction",s:blue, "", s:bold) - call s:HL("cOctalZero", s:purple, "", s:bold) - if s:Language_Options('c.highlight_builtins') == 1 - call s:HL("cFunction", s:blue, "", "") - else - call s:HL("cFunction", s:foreground, "", "") - endif - - " CPP highlighting - call s:HL("cppBoolean", s:navy, "", "") - call s:HL("cppSTLnamespace", s:purple, "", "") - call s:HL("cppSTLexception", s:pink, "", "") - call s:HL("cppSTLfunctional", s:foreground, "", s:bold) - call s:HL("cppSTLiterator", s:foreground, "", s:bold) - call s:HL("cppExceptions", s:red, "", "") - call s:HL("cppStatement", s:blue, "", "") - call s:HL("cppStorageClass", s:navy, "", s:bold) - call s:HL("cppAccess",s:blue, "", "") - if s:Language_Options('cpp.highlight_standard_library') == 1 - call s:HL("cppSTLconstant", s:green, "", s:bold) - call s:HL("cppSTLtype", s:pink, "", s:bold) - call s:HL("cppSTLfunction", s:blue, "", "") - call s:HL("cppSTLios", s:olive, "", s:bold) - else - call s:HL("cppSTLconstant", s:foreground, "", "") - call s:HL("cppSTLtype", s:foreground, "", "") - call s:HL("cppSTLfunction", s:foreground, "", "") - call s:HL("cppSTLios", s:foreground, "", "") - endif - " call s:HL("cppSTL",s:blue, "", "") - - - " Lex highlighting - call s:HL("lexCFunctions", s:foreground, "", "") - call s:HL("lexAbbrv", s:purple, "", "") - call s:HL("lexAbbrvRegExp", s:aqua, "", "") - call s:HL("lexAbbrvComment", s:comment, "", "") - call s:HL("lexBrace", s:navy, "", "") - call s:HL("lexPat", s:aqua, "", "") - call s:HL("lexPatComment", s:comment, "", "") - call s:HL("lexPatTag", s:orange, "", "") - " call s:HL("lexPatBlock", s:foreground, "", s:bold) - call s:HL("lexSlashQuote", s:foreground, "", "") - call s:HL("lexSep", s:foreground, "", "") - call s:HL("lexStartState", s:orange, "", "") - call s:HL("lexPatTagZone", s:olive, "", s:bold) - call s:HL("lexMorePat", s:olive, "", s:bold) - call s:HL("lexOptions", s:olive, "", s:bold) - call s:HL("lexPatString", s:olive, "", "") - - " Yacc highlighting - call s:HL("yaccNonterminal", s:navy, "", "") - call s:HL("yaccDelim", s:orange, "", "") - call s:HL("yaccInitKey", s:aqua, "", "") - call s:HL("yaccInit", s:navy, "", "") - call s:HL("yaccKey", s:purple, "", "") - call s:HL("yaccVar", s:aqua, "", "") - - " NASM highlighting - call s:HL("nasmStdInstruction", s:navy, "", "") - call s:HL("nasmGen08Register", s:aqua, "", "") - call s:HL("nasmGen16Register", s:aqua, "", "") - call s:HL("nasmGen32Register", s:aqua, "", "") - call s:HL("nasmGen64Register", s:aqua, "", "") - call s:HL("nasmHexNumber", s:purple, "", "") - call s:HL("nasmStorage", s:aqua, "", s:bold) - call s:HL("nasmLabel", s:pink, "", "") - call s:HL("nasmDirective", s:blue, "", s:bold) - call s:HL("nasmLocalLabel", s:orange, "", "") - - " GAS highlighting - call s:HL("gasSymbol", s:pink, "", "") - call s:HL("gasDirective", s:blue, "", s:bold) - call s:HL("gasOpcode_386_Base", s:navy, "", "") - call s:HL("gasDecimalNumber", s:purple, "", "") - call s:HL("gasSymbolRef", s:pink, "", "") - call s:HL("gasRegisterX86", s:blue, "", "") - call s:HL("gasOpcode_P6_Base", s:navy, "", "") - call s:HL("gasDirectiveStore", s:foreground, "", s:bold) - - " MIPS highlighting - call s:HL("mipsInstruction", s:pink, "", "") - call s:HL("mipsRegister", s:navy, "", "") - call s:HL("mipsLabel", s:aqua, "", s:bold) - call s:HL("mipsDirective", s:purple, "", s:bold) - - " Shell/Bash highlighting - call s:HL("bashStatement", s:foreground, "", s:bold) - call s:HL("shDerefVar", s:aqua, "", s:bold) - call s:HL("shDerefSimple", s:aqua, "", "") - call s:HL("shFunction", s:orange, "", s:bold) - call s:HL("shStatement", s:foreground, "", "") - call s:HL("shLoop", s:purple, "", s:bold) - call s:HL("shQuote", s:olive, "", "") - call s:HL("shCaseEsac", s:aqua, "", s:bold) - call s:HL("shSnglCase", s:purple, "", "none") - call s:HL("shFunctionOne", s:navy, "", "") - call s:HL("shCase", s:navy, "", "") - call s:HL("shSetList", s:navy, "", "") - " @see Dockerfile Highlighting section for more sh* - - " HTML Highlighting - call s:HL("htmlTitle", s:green, "", s:bold) - call s:HL("htmlH1", s:green, "", s:bold) - call s:HL("htmlH2", s:aqua, "", s:bold) - call s:HL("htmlH3", s:purple, "", s:bold) - call s:HL("htmlH4", s:orange, "", s:bold) - call s:HL("htmlTag", s:comment, "", "") - call s:HL("htmlTagName", s:wine, "", "") - call s:HL("htmlArg", s:pink, "", "") - call s:HL("htmlEndTag", s:comment, "", "") - call s:HL("htmlString", s:blue, "", "") - call s:HL("htmlScriptTag", s:comment, "", "") - call s:HL("htmlBold", s:foreground, "", s:bold) - call s:HL("htmlItalic", s:comment, "", s:bold) - call s:HL("htmlBoldItalic", s:navy, "", s:bold) - " call s:HL("htmlLink", s:blue, "", s:bold) - call s:HL("htmlTagN", s:wine, "", s:bold) - call s:HL("htmlSpecialTagName", s:wine, "", "") - call s:HL("htmlComment", s:comment, "", "") - call s:HL("htmlCommentPart", s:comment, "", "") - - " CSS Highlighting - call s:HL("cssIdentifier", s:pink, "", "") - call s:HL("cssPositioningProp", s:foreground, "", "") - call s:HL("cssNoise", s:foreground, "", "") - call s:HL("cssBoxProp", s:foreground, "", "") - call s:HL("cssTableAttr", s:purple, "", "") - call s:HL("cssPositioningAttr", s:navy, "", "") - call s:HL("cssValueLength", s:orange, "", "") - call s:HL("cssFunctionName", s:blue, "", "") - call s:HL("cssUnitDecorators", s:aqua, "", "") - call s:HL("cssColor", s:blue, "", s:bold) - call s:HL("cssBraces", s:pink, "", "") - call s:HL("cssBackgroundProp", s:foreground, "", "") - call s:HL("cssTextProp", s:foreground, "", "") - call s:HL("cssDimensionProp", s:foreground, "", "") - call s:HL("cssClassName", s:pink, "", "") - - " Markdown Highlighting - call s:HL("markdownHeadingRule", s:pink, "", s:bold) - call s:HL("markdownH1", s:pink, "", s:bold) - call s:HL("markdownH2", s:orange, "", s:bold) - call s:HL("markdownBlockquote", s:pink, "", "") - call s:HL("markdownCodeBlock", s:olive, "", "") - call s:HL("markdownCode", s:olive, "", "") - call s:HL("markdownLink", s:blue, "", s:bold) - call s:HL("markdownUrl", s:blue, "", "") - call s:HL("markdownLinkText", s:pink, "", "") - call s:HL("markdownLinkTextDelimiter", s:purple, "", "") - call s:HL("markdownLinkDelimiter", s:purple, "", "") - call s:HL("markdownCodeDelimiter", s:blue, "", "") - - call s:HL("mkdCode", s:olive, "", "") - call s:HL("mkdLink", s:blue, "", s:bold) - call s:HL("mkdURL", s:comment, "", "") - call s:HL("mkdString", s:foreground, "", "") - call s:HL("mkdBlockQuote", s:foreground, s:popupmenu_bg, "") - call s:HL("mkdLinkTitle", s:pink, "", "") - call s:HL("mkdDelimiter", s:aqua, "", "") - call s:HL("mkdRule", s:pink, "", "") - - " reStructuredText Highlighting - call s:HL("rstSections", s:pink, "", s:bold) - call s:HL("rstDelimiter", s:pink, "", s:bold) - call s:HL("rstExplicitMarkup", s:pink, "", s:bold) - call s:HL("rstDirective", s:blue, "", "") - call s:HL("rstHyperlinkTarget", s:green, "", "") - call s:HL("rstExDirective", s:foreground, "", "") - call s:HL("rstInlineLiteral", s:olive, "", "") - call s:HL("rstInterpretedTextOrHyperlinkReference", s:blue, "", "") - - " Python Highlighting - call s:HL("pythonImport", s:pink, "", s:bold) - call s:HL("pythonExceptions", s:red, "", "") - call s:HL("pythonException", s:purple, "", s:bold) - call s:HL("pythonInclude", s:red, "", "") - call s:HL("pythonStatement", s:pink, "", "") - call s:HL("pythonConditional", s:purple, "", s:bold) - call s:HL("pythonRepeat", s:purple, "", s:bold) - call s:HL("pythonFunction", s:aqua, "", s:bold) - call s:HL("pythonPreCondit", s:purple, "", "") - call s:HL("pythonExClass", s:orange, "", "") - call s:HL("pythonOperator", s:purple, "", s:bold) - call s:HL("pythonBuiltin", s:foreground, "", "") - call s:HL("pythonDecorator", s:orange, "", "") - - call s:HL("pythonString", s:olive, "", "") - call s:HL("pythonEscape", s:olive, "", s:bold) - call s:HL("pythonStrFormatting", s:olive, "", s:bold) - - call s:HL("pythonBoolean", s:green, "", s:bold) - call s:HL("pythonExClass", s:red, "", "") - call s:HL("pythonBytesEscape", s:olive, "", s:bold) - call s:HL("pythonDottedName", s:purple, "", "") - call s:HL("pythonStrFormat", s:foreground, "", "") - - if s:Language_Options('python.highlight_builtins') == 1 - call s:HL("pythonBuiltinFunc", s:blue, "", "") - call s:HL("pythonBuiltinObj", s:red, "", "") - else - call s:HL("pythonBuiltinFunc", s:foreground, "", "") - call s:HL("pythonBuiltinObj", s:foreground, "", "") - endif - - " Java Highlighting - call s:HL("javaExternal", s:pink, "", "") - call s:HL("javaAnnotation", s:orange, "", "") - call s:HL("javaTypedef", s:aqua, "", "") - call s:HL("javaClassDecl", s:aqua, "", s:bold) - call s:HL("javaScopeDecl", s:blue, "", s:bold) - call s:HL("javaStorageClass", s:navy, "", s:bold) - call s:HL("javaBoolean", s:green, "", s:bold) - call s:HL("javaConstant", s:blue, "", "") - call s:HL("javaCommentTitle", s:wine, "", "") - call s:HL("javaDocTags", s:aqua, "", "") - call s:HL("javaDocComment", s:comment, "", "") - call s:HL("javaDocParam", s:foreground, "", "") - call s:HL("javaStatement", s:pink, "", "") - - " JavaScript Highlighting - call s:HL("javaScriptBraces", s:blue, "", "") - call s:HL("javaScriptParens", s:blue, "", "") - call s:HL("javaScriptIdentifier", s:pink, "", "") - call s:HL("javaScriptFunction", s:blue, "", s:bold) - call s:HL("javaScriptConditional", s:purple, "", s:bold) - call s:HL("javaScriptRepeat", s:purple, "", s:bold) - call s:HL("javaScriptBoolean", s:green, "", s:bold) - call s:HL("javaScriptNumber", s:orange, "", "") - call s:HL("javaScriptMember", s:navy, "", "") - call s:HL("javaScriptReserved", s:navy, "", "") - call s:HL("javascriptNull", s:comment, "", s:bold) - call s:HL("javascriptGlobal", s:foreground, "", "") - call s:HL("javascriptStatement", s:pink, "", "") - call s:HL("javaScriptMessage", s:foreground, "", "") - call s:HL("javaScriptMember", s:foreground, "", "") - - " @target https://github.com/pangloss/vim-javascript - call s:HL("jsFuncParens", s:blue, "", "") - call s:HL("jsFuncBraces", s:blue, "", "") - call s:HL("jsParens", s:blue, "", "") - call s:HL("jsBraces", s:blue, "", "") - call s:HL("jsNoise", s:blue, "", "") - - " Json Highlighting - " @target https://github.com/elzr/vim-json - call s:HL("jsonKeyword", s:blue, "", "") - call s:HL("jsonString", s:olive, "", "") - call s:HL("jsonQuote", s:comment, "", "") - call s:HL("jsonNoise", s:foreground, "", "") - call s:HL("jsonKeywordMatch", s:foreground, "", "") - call s:HL("jsonBraces", s:foreground, "", "") - call s:HL("jsonNumber", s:orange, "", "") - call s:HL("jsonNull", s:purple, "", s:bold) - call s:HL("jsonBoolean", s:green, "", s:bold) - call s:HL("jsonCommentError", s:pink, s:background , "") - - " Go Highlighting - call s:HL("goDirective", s:red, "", "") - call s:HL("goDeclaration", s:blue, "", s:bold) - call s:HL("goStatement", s:pink, "", "") - call s:HL("goConditional", s:purple, "", s:bold) - call s:HL("goConstants", s:orange, "", "") - call s:HL("goFunction", s:orange, "", "") - " call s:HL("goTodo", s:comment, "", s:bold) - call s:HL("goDeclType", s:blue, "", "") - call s:HL("goBuiltins", s:purple, "", "") - - " Systemtap Highlighting - " call s:HL("stapBlock", s:comment, "", "none") - call s:HL("stapComment", s:comment, "", "none") - call s:HL("stapProbe", s:aqua, "", s:bold) - call s:HL("stapStat", s:navy, "", s:bold) - call s:HL("stapFunc", s:foreground, "", "") - call s:HL("stapString", s:olive, "", "") - call s:HL("stapTarget", s:navy, "", "") - call s:HL("stapStatement", s:pink, "", "") - call s:HL("stapType", s:pink, "", s:bold) - call s:HL("stapSharpBang", s:comment, "", "") - call s:HL("stapDeclaration", s:pink, "", "") - call s:HL("stapCMacro", s:blue, "", "") - - " DTrace Highlighting - call s:HL("dtraceProbe", s:blue, "", "") - call s:HL("dtracePredicate", s:purple, "", s:bold) - call s:HL("dtraceComment", s:comment, "", "") - call s:HL("dtraceFunction", s:foreground, "", "") - call s:HL("dtraceAggregatingFunction", s:blue, "", s:bold) - call s:HL("dtraceStatement", s:navy, "", s:bold) - call s:HL("dtraceIdentifier", s:pink, "", "") - call s:HL("dtraceOption", s:pink, "", "") - call s:HL("dtraceConstant", s:orange, "", "") - call s:HL("dtraceType", s:pink, "", s:bold) - - " PlantUML Highlighting - call s:HL("plantumlPreProc", s:orange, "", s:bold) - call s:HL("plantumlDirectedOrVerticalArrowRL", s:pink, "", "") - call s:HL("plantumlDirectedOrVerticalArrowLR", s:pink, "", "") - call s:HL("plantumlString", s:olive, "", "") - call s:HL("plantumlActivityThing", s:purple, "", "") - call s:HL("plantumlText", s:navy, "", "") - call s:HL("plantumlClassPublic", s:olive, "", s:bold) - call s:HL("plantumlClassPrivate", s:red, "", "") - call s:HL("plantumlColonLine", s:orange, "", "") - call s:HL("plantumlClass", s:navy, "", "") - call s:HL("plantumlHorizontalArrow", s:pink, "", "") - call s:HL("plantumlTypeKeyword", s:blue, "", s:bold) - call s:HL("plantumlKeyword", s:pink, "", s:bold) - - call s:HL("plantumlType", s:blue, "", s:bold) - call s:HL("plantumlBlock", s:pink, "", s:bold) - call s:HL("plantumlPreposition", s:orange, "", "") - call s:HL("plantumlLayout", s:blue, "", s:bold) - call s:HL("plantumlNote", s:orange, "", "") - call s:HL("plantumlLifecycle", s:aqua, "", "") - call s:HL("plantumlParticipant", s:foreground, "", s:bold) - - - " Haskell Highlighting - call s:HL("haskellType", s:aqua, "", s:bold) - call s:HL("haskellIdentifier", s:orange, "", s:bold) - call s:HL("haskellOperators", s:pink, "", "") - call s:HL("haskellWhere", s:foreground, "", s:bold) - call s:HL("haskellDelimiter", s:aqua, "", "") - call s:HL("haskellImportKeywords", s:pink, "", "") - call s:HL("haskellStatement", s:purple, "", s:bold) - - - " SQL/MySQL Highlighting - call s:HL("sqlStatement", s:pink, "", s:bold) - call s:HL("sqlType", s:blue, "", s:bold) - call s:HL("sqlKeyword", s:pink, "", "") - call s:HL("sqlOperator", s:aqua, "", "") - call s:HL("sqlSpecial", s:green, "", s:bold) - - call s:HL("mysqlVariable", s:olive, "", s:bold) - call s:HL("mysqlType", s:blue, "", s:bold) - call s:HL("mysqlKeyword", s:pink, "", "") - call s:HL("mysqlOperator", s:aqua, "", "") - call s:HL("mysqlSpecial", s:green, "", s:bold) - - - " Octave/MATLAB Highlighting - call s:HL("octaveVariable", s:foreground, "", "") - call s:HL("octaveDelimiter", s:pink, "", "") - call s:HL("octaveQueryVar", s:foreground, "", "") - call s:HL("octaveSemicolon", s:purple, "", "") - call s:HL("octaveFunction", s:navy, "", "") - call s:HL("octaveSetVar", s:blue, "", "") - call s:HL("octaveUserVar", s:foreground, "", "") - call s:HL("octaveArithmeticOperator", s:aqua, "", "") - call s:HL("octaveBeginKeyword", s:purple, "", s:bold) - call s:HL("octaveElseKeyword", s:purple, "", s:bold) - call s:HL("octaveEndKeyword", s:purple, "", s:bold) - call s:HL("octaveStatement", s:pink, "", "") - - " Ruby Highlighting - call s:HL("rubyModule", s:navy, "", s:bold) - call s:HL("rubyClass", s:pink, "", s:bold) - call s:HL("rubyPseudoVariable", s:comment, "", s:bold) - call s:HL("rubyKeyword", s:pink, "", "") - call s:HL("rubyInstanceVariable", s:purple, "", "") - call s:HL("rubyFunction", s:foreground, "", s:bold) - call s:HL("rubyDefine", s:pink, "", "") - call s:HL("rubySymbol", s:aqua, "", "") - call s:HL("rubyConstant", s:blue, "", "") - call s:HL("rubyAccess", s:navy, "", "") - call s:HL("rubyAttribute", s:green, "", "") - call s:HL("rubyInclude", s:red, "", "") - call s:HL("rubyLocalVariableOrMethod", s:orange, "", "") - call s:HL("rubyCurlyBlock", s:foreground, "", "") - call s:HL("rubyCurlyBlockDelimiter", s:aqua, "", "") - call s:HL("rubyArrayDelimiter", s:aqua, "", "") - call s:HL("rubyStringDelimiter", s:olive, "", "") - call s:HL("rubyInterpolationDelimiter", s:orange, "", "") - call s:HL("rubyConditional", s:purple, "", s:bold) - call s:HL("rubyRepeat", s:purple, "", s:bold) - call s:HL("rubyControl", s:purple, "", s:bold) - call s:HL("rubyException", s:purple, "", s:bold) - call s:HL("rubyExceptional", s:purple, "", s:bold) - call s:HL("rubyBoolean", s:green, "", s:bold) - - " Fortran Highlighting - call s:HL("fortranUnitHeader", s:foreground, "", s:bold) - call s:HL("fortranType", s:pink, "", s:bold) - call s:HL("fortranStructure", s:blue, "", s:bold) - call s:HL("fortranStorageClass", s:navy, "", s:bold) - call s:HL("fortranStorageClassR", s:navy, "", s:bold) - call s:HL("fortranKeyword", s:pink, "", "") - call s:HL("fortranReadWrite", s:blue, "", "") - call s:HL("fortranIO", s:navy, "", "") - - " R Highlighting - call s:HL("rType", s:blue, "", "") - call s:HL("rArrow", s:pink, "", "") - call s:HL("rDollar", s:blue, "", "") - - " XXD Highlighting - call s:HL("xxdAddress", s:navy, "", "") - call s:HL("xxdSep", s:pink, "", "") - call s:HL("xxdAscii", s:pink, "", "") - call s:HL("xxdDot", s:aqua, "", "") - - " PHP Highlighting - call s:HL("phpIdentifier", s:foreground, "", "") - call s:HL("phpVarSelector", s:pink, "", "") - call s:HL("phpKeyword", s:blue, "", "") - call s:HL("phpRepeat", s:purple, "", s:bold) - call s:HL("phpConditional", s:purple, "", s:bold) - call s:HL("phpStatement", s:pink, "", "") - call s:HL("phpAssignByRef", s:aqua, "", s:bold) - call s:HL("phpSpecialFunction", s:blue, "", "") - call s:HL("phpFunctions", s:blue, "", "") - call s:HL("phpComparison", s:aqua, "", "") - call s:HL("phpBackslashSequences", s:olive, "", s:bold) - call s:HL("phpMemberSelector", s:blue, "", "") - call s:HL("phpStorageClass", s:purple, "", s:bold) - call s:HL("phpDefine", s:navy, "", "") - call s:HL("phpIntVar", s:navy, "",s:bold) - - " Perl Highlighting - call s:HL("perlFiledescRead", s:green, "", "") - call s:HL("perlMatchStartEnd", s:pink, "", "") - call s:HL("perlStatementFlow", s:pink, "", "") - call s:HL("perlStatementStorage", s:pink, "", "") - call s:HL("perlFunction", s:pink, "", s:bold) - call s:HL("perlMethod", s:foreground, "", "") - call s:HL("perlStatementFiledesc", s:orange, "", "") - call s:HL("perlVarPlain", s:navy, "", "") - call s:HL("perlSharpBang", s:comment, "", "") - call s:HL("perlStatementInclude", s:aqua, "", s:bold) - call s:HL("perlStatementScalar", s:purple, "", "") - call s:HL("perlSubName", s:aqua, "", s:bold) - call s:HL("perlSpecialString", s:olive, "", s:bold) - - " Pascal Highlighting - call s:HL("pascalType", s:pink, "", s:bold) - call s:HL("pascalStatement", s:blue, "", s:bold) - call s:HL("pascalPredefined", s:pink, "", "") - call s:HL("pascalFunction", s:foreground, "", "") - call s:HL("pascalStruct", s:navy, "", s:bold) - call s:HL("pascalOperator", s:aqua, "", s:bold) - call s:HL("pascalPreProc", s:green, "", "") - call s:HL("pascalAcces", s:navy, "", s:bold) - - " Lua Highlighting - call s:HL("luaFunc", s:foreground, "", "") - call s:HL("luaIn", s:blue, "", s:bold) - call s:HL("luaFunction", s:pink, "", "") - call s:HL("luaStatement", s:blue, "", "") - call s:HL("luaRepeat", s:blue, "", s:bold) - call s:HL("luaCondStart", s:purple, "", s:bold) - call s:HL("luaTable", s:aqua, "", s:bold) - call s:HL("luaConstant", s:green, "", s:bold) - call s:HL("luaElse", s:purple, "", s:bold) - call s:HL("luaCondElseif", s:purple, "", s:bold) - call s:HL("luaCond", s:purple, "", s:bold) - call s:HL("luaCondEnd", s:purple, "", "") - - " Clojure highlighting: - call s:HL("clojureConstant", s:blue, "", "") - call s:HL("clojureBoolean", s:orange, "", "") - call s:HL("clojureCharacter", s:olive, "", "") - call s:HL("clojureKeyword", s:pink, "", "") - call s:HL("clojureNumber", s:orange, "", "") - call s:HL("clojureString", s:olive, "", "") - call s:HL("clojureRegexp", s:purple, "", "") - call s:HL("clojureRegexpEscape", s:pink, "", "") - call s:HL("clojureParen", s:aqua, "", "") - call s:HL("clojureVariable", s:olive, "", "") - call s:HL("clojureCond", s:blue, "", "") - call s:HL("clojureDefine", s:blue, "", s:bold) - call s:HL("clojureException", s:red, "", "") - call s:HL("clojureFunc", s:navy, "", "") - call s:HL("clojureMacro", s:blue, "", "") - call s:HL("clojureRepeat", s:blue, "", "") - call s:HL("clojureSpecial", s:blue, "", s:bold) - call s:HL("clojureQuote", s:blue, "", "") - call s:HL("clojureUnquote", s:blue, "", "") - call s:HL("clojureMeta", s:blue, "", "") - call s:HL("clojureDeref", s:blue, "", "") - call s:HL("clojureAnonArg", s:blue, "", "") - call s:HL("clojureRepeat", s:blue, "", "") - call s:HL("clojureDispatch", s:aqua, "", "") - - " Dockerfile Highlighting - " @target https://github.com/docker/docker/tree/master/contrib/syntax/vim - call s:HL("dockerfileKeyword", s:blue, "", "") - call s:HL("shDerefVar", s:purple, "", s:bold) - call s:HL("shOperator", s:aqua, "", "") - call s:HL("shOption", s:navy, "", "") - call s:HL("shLine", s:foreground, "", "") - call s:HL("shWrapLineOperator", s:pink, "", "") - - " NGINX Highlighting - " @target https://github.com/evanmiller/nginx-vim-syntax - call s:HL("ngxDirectiveBlock", s:pink, "", s:bold) - call s:HL("ngxDirective", s:blue, "", "none") - call s:HL("ngxDirectiveImportant", s:blue, "", s:bold) - call s:HL("ngxString", s:olive, "", "") - call s:HL("ngxVariableString", s:purple, "", "") - call s:HL("ngxVariable", s:purple, "", "none") - - " Yaml Highlighting - call s:HL("yamlBlockMappingKey", s:blue, "", "") - call s:HL("yamlKeyValueDelimiter", s:pink, "", "") - call s:HL("yamlBlockCollectionItemStart", s:pink, "", "") - - " Qt QML Highlighting - call s:HL("qmlObjectLiteralType", s:pink, "", "") - call s:HL("qmlReserved", s:purple, "", "") - call s:HL("qmlBindingProperty", s:navy, "", "") - call s:HL("qmlType", s:navy, "", "") - - " Dosini Highlighting - call s:HL("dosiniHeader", s:pink, "", "") - call s:HL("dosiniLabel", s:blue, "", "") - - " Mail highlighting - call s:HL("mailHeaderKey", s:blue, "", "") - call s:HL("mailHeaderEmail", s:purple, "", "") - call s:HL("mailSubject", s:pink, "", "") - call s:HL("mailHeader", s:comment, "", "") - call s:HL("mailURL", s:aqua, "", "") - call s:HL("mailEmail", s:purple, "", "") - call s:HL("mailQuoted1", s:olive, "", "") - call s:HL("mailQuoted2", s:navy, "", "") - - " XML Highlighting - call s:HL("xmlProcessingDelim", s:pink, "", "") - call s:HL("xmlString", s:olive, "", "") - call s:HL("xmlEqual", s:orange, "", "") - call s:HL("xmlAttrib", s:navy, "", "") - call s:HL("xmlAttribPunct", s:pink, "", "") - call s:HL("xmlTag", s:blue, "", "") - call s:HL("xmlTagName", s:blue, "", "") - call s:HL("xmlEndTag", s:blue, "", "") - call s:HL("xmlNamespace", s:orange, "", "") - - " Exlixir Highlighting - " @target https://github.com/elixir-lang/vim-elixir - call s:HL("elixirAlias", s:blue, "", s:bold) - call s:HL("elixirAtom", s:navy, "", "") - call s:HL("elixirVariable", s:navy, "", "") - call s:HL("elixirUnusedVariable", s:foreground, "", s:bold) - call s:HL("elixirInclude", s:purple, "", "") - call s:HL("elixirStringDelimiter", s:olive, "", "") - call s:HL("elixirKeyword", s:purple, "", s:bold) - call s:HL("elixirFunctionDeclaration", s:aqua, "", s:bold) - call s:HL("elixirBlockDefinition", s:pink, "", "") - call s:HL("elixirDefine", s:pink, "", "") - call s:HL("elixirStructDefine", s:pink, "", "") - call s:HL("elixirPrivateDefine", s:pink, "", "") - call s:HL("elixirModuleDefine", s:pink, "", "") - call s:HL("elixirProtocolDefine", s:pink, "", "") - call s:HL("elixirImplDefine", s:pink, "", "") - call s:HL("elixirModuleDeclaration", s:aqua, "", s:bold) - call s:HL("elixirDocString", s:olive, "", "") - call s:HL("elixirDocTest", s:green, "", s:bold) - - " Erlang Highlighting - call s:HL("erlangBIF", s:purple, "", s:bold) - call s:HL("erlangBracket", s:pink, "", "") - call s:HL("erlangLocalFuncCall", s:foreground, "", "") - call s:HL("erlangVariable", s:foreground, "", "") - call s:HL("erlangAtom", s:navy, "", "") - call s:HL("erlangAttribute", s:blue, "", s:bold) - call s:HL("erlangRecordDef", s:blue, "", s:bold) - call s:HL("erlangRecord", s:blue, "", "") - call s:HL("erlangRightArrow", s:blue, "", s:bold) - call s:HL("erlangStringModifier", s:olive, "", s:bold) - call s:HL("erlangInclude", s:blue, "", s:bold) - call s:HL("erlangKeyword", s:pink, "", "") - call s:HL("erlangGlobalFuncCall", s:foreground, "", "") - - " Cucumber Highlighting - call s:HL("cucumberFeature", s:blue, "", s:bold) - call s:HL("cucumberBackground", s:pink, "", s:bold) - call s:HL("cucumberScenario", s:pink, "", s:bold) - call s:HL("cucumberGiven", s:orange, "", "") - call s:HL("cucumberGivenAnd", s:blue, "", "") - call s:HL("cucumberThen", s:orange, "", "") - call s:HL("cucumberThenAnd", s:blue, "", "") - call s:HL("cucumberWhen", s:purple, "", s:bold) - call s:HL("cucumberScenarioOutline", s:pink, "", s:bold) - call s:HL("cucumberExamples", s:aqua, "", "") - call s:HL("cucumberTags", s:aqua, "", "") - call s:HL("cucumberPlaceholder", s:aqua, "", "") - " }}} - - " Plugin: Netrw - call s:HL("netrwVersion", s:red, "", "") - call s:HL("netrwList", s:pink, "", "") - call s:HL("netrwHidePat", s:olive, "", "") - call s:HL("netrwQuickHelp", s:blue, "", "") - call s:HL("netrwHelpCmd", s:blue, "", "") - call s:HL("netrwDir", s:aqua, "", s:bold) - call s:HL("netrwClassify", s:pink, "", "") - call s:HL("netrwExe", s:green, "", "") - call s:HL("netrwSuffixes", s:comment, "", "") - call s:HL("netrwTreeBar", s:linenumber_fg, "", "") - - " Plugin: NERDTree - call s:HL("NERDTreeUp", s:comment, "", "") - call s:HL("NERDTreeHelpCommand", s:pink, "", "") - call s:HL("NERDTreeHelpTitle", s:blue, "", s:bold) - call s:HL("NERDTreeHelpKey", s:pink, "", "") - call s:HL("NERDTreeHelp", s:foreground, "", "") - call s:HL("NERDTreeToggleOff", s:red, "", "") - call s:HL("NERDTreeToggleOn", s:green, "", "") - call s:HL("NERDTreeDir", s:blue, "", s:bold) - call s:HL("NERDTreeDirSlash", s:pink, "", "") - call s:HL("NERDTreeFile", s:foreground, "", "") - call s:HL("NERDTreeExecFile", s:green, "", "") - call s:HL("NERDTreeOpenable", s:pink, "", s:bold) - call s:HL("NERDTreeClosable", s:pink, "", "") - - " Plugin: Tagbar - call s:HL("TagbarHelpTitle", s:blue, "", s:bold) - call s:HL("TagbarHelp", s:foreground, "", "") - call s:HL("TagbarKind", s:pink, "", "") - call s:HL("TagbarSignature", s:aqua, "", "") - - " Plugin: Vimdiff - call s:HL("DiffAdd", s:diffadd_fg, s:diffadd_bg, "none") - call s:HL("DiffChange", s:diffchange_fg, s:diffchange_bg, "none") - call s:HL("DiffDelete", s:diffdelete_fg, s:diffdelete_bg, "none") - call s:HL("DiffText", s:difftext_fg, s:difftext_bg, "none") - - " Plugin: AGit - call s:HL("agitStatAdded", s:diffadd_fg, "", "") - call s:HL("agitStatRemoved", s:diffdelete_fg, "", "") - - call s:HL("agitDiffAdd", s:diffadd_fg, "", "") - call s:HL("agitDiffRemove", s:diffdelete_fg, "", "") - - call s:HL("agitDiffHeader", s:pink, "", "") - call s:HL("agitDiff", s:foreground, "", "") - - call s:HL("agitDiffIndex", s:purple, "", "") - call s:HL("agitDiffFileName", s:aqua, "", "") - - call s:HL("agitLog", s:foreground, "", "") - call s:HL("agitAuthorMark", s:olive, "", "") - - call s:HL("agitDateMark", s:comment, "", "") - - call s:HL("agitHeaderLabel", s:aqua, "", "") - - call s:HL("agitHead", s:olive, "", "") - call s:HL("agitHeader", s:olive, "", "") - - " Plugin: Spell Checking - call s:HL("SpellBad", s:foreground, s:spellbad, "") - call s:HL("SpellCap", s:foreground, s:spellcap, "") - call s:HL("SpellRare", s:foreground, s:spellrare, "") - call s:HL("SpellLocal", s:foreground, s:spelllocal, "") - - " Plugin: Indent Guides - call s:HL("IndentGuidesOdd", "", s:background, "") - call s:HL("IndentGuidesEven", "", s:cursorline, "") - - " Plugin: Startify - call s:HL("StartifyFile", s:blue, "", s:bold) - call s:HL("StartifyNumber", s:orange, "", "") - call s:HL("StartifyHeader", s:comment, "", "") - call s:HL("StartifySection", s:pink, "", "") - call s:HL("StartifyPath", s:foreground, "", "") - call s:HL("StartifySlash", s:navy, "", "") - call s:HL("StartifyBracket", s:aqua, "", "") - call s:HL("StartifySpecial", s:aqua, "", "") - - " Git - call s:HL("diffAdded", s:olive, "", "") - call s:HL("diffRemoved", s:pink, "", "") - " call s:HL("gitcommitSummary", "", "", s:bold) - -endfun -" }}} - -" APPLY SYNTAX HIGHLIGHTING: {{{ - -fun! s:apply_highlightings() - " Handle background switching right after `Normal` group because of - " God-know-why reason. It's assumed that the first group in the list - " is `Normal` group. - let l:normal = s:highlightings[0] - exec 'hi ' . l:normal[0] . l:normal[1] - - " Switching between dark & light variant through `set background` - if s:is_dark " DARK VARIANT - set background=dark - else " LIGHT VARIANT - set background=light - endif - - " The rest of syntax highlighting groups - for h in s:highlightings[1:] - exec 'hi ' . h[0] . h[1] - endfor - -endfun - -"}}} - -" =========================== TESTING ===================================== -" Run unit testing :call g:PaperColor_Test() - -" UNIT TESTING: {{{ - -fun! s:test_report(test, verbose) - if a:test[1] != '' - echo a:test[0] - echo '==> failed. ' . a:test[1] - return 1 - - elseif a:verbose == 1 - echo a:test[0] - echo '==> passed.' - return 0 - - endif -endfun - -fun! s:palettes_should_have_color00_to_color15() - let l:premise = "All color palettes should have color00 to color15, each has 2 components" - let l:error = '' - - for [name, theme] in items(s:themes) - - for l:variant in ['light', 'dark'] - if has_key(theme, l:variant) - let l:palette = theme[l:variant].palette - - for l:color in ['color00', 'color01', 'color02', 'color03', - \ 'color04', 'color05', 'color06', 'color07', - \ 'color08', 'color09', 'color10', 'color11', - \ 'color12', 'color13', 'color14', 'color15' ] - if !has_key(l:palette, l:color) - let l:error .= "s:themes['" . name . "']." . l:variant . ".palette doesn't have " . l:color - break - else - let l:value = l:palette[l:color] - if len(l:value) != 2 - let l:error .= "s:themes['" . name . "']." . l:variant . ".palette." . l:color . " doesn't have required value" - break - endif - endif - endfor - - if l:error != '' - return [l:premise, l:error] - endif - endif - endfor - - endfor - - return [l:premise, l:error] -endfun -" ------------------------------------------------------------------ - -fun! s:colors_should_have_correct_format() - let l:premise = "All colors should have correct format like this ['#abcdef', '123'] or []" - let l:error = '' - - for [name, theme] in items(s:themes) - - for l:variant in ['light', 'dark'] - if has_key(theme, l:variant) - let l:palette = theme[l:variant].palette - - let l:msg_prefix = "\ns:themes['" . name . "']." . l:variant . ".palette." - for [l:color, l:value] in items(l:palette) - - let l:value = l:palette[l:color] - if len(l:value) != 2 && len(l:value) != 0 - let l:error .= msg_prefix . l:color . " doesn't have length 2 or 0" - continue - endif - - if len(l:value) == 2 - if l:value[0] == '' && l:value[1] == '' - let l:error .= msg_prefix . l:color . " doesn't have at least 1 non-empty value" - continue - endif - - if stridx(l:value[0], ' ') != -1 - let l:error .= msg_prefix . l:color . " has space in the first value" - continue - endif - - if stridx(l:value[1], ' ') != -1 - let l:error .= msg_prefix . l:color . " has space in the second value" - continue - endif - - if l:value[0] != '' && l:value[0][0] != '#' - let l:error .= msg_prefix . l:color . " doesn't have '#' at the beginning of the first value" - continue - endif - endif - - endfor - - " if l:error != '' - " return [l:premise, l:error] - " endif - - endif - endfor - - endfor - - return [l:premise, l:error] -endfun -" ------------------------------------------------------------------ - -fun! s:expected_256_only_colors_should_be_consistent() - let l:premise = 'Palletes that are marked for TEST_256_COLOR_CONSISTENCY should have consitent values of HEX and 256 for each color' - let l:error = '' - - for [name, theme] in items(s:themes) - - for l:variant in ['light', 'dark'] - if has_key(theme, l:variant) - - if has_key(theme[l:variant], 'TEST_256_COLOR_CONSISTENCY') && - \ theme[l:variant].TEST_256_COLOR_CONSISTENCY == 1 - let l:palette = theme[l:variant].palette - - for [l:color, l:value] in items(l:palette) - if len(l:value) == 2 - let l:value_hex = l:value[0] - let l:value_256 = l:value[1] - let l:expected_hex = s:to_HEX[l:value_256] - if l:value_hex != l:expected_hex - let l:error .= "\ns:themes['" . name . "']." . l:variant . ".palette " . - \ "Expected: '" . l:color ."' : ['" . l:expected_hex . "', '". l:value_256 . "']" - endif - endif - endfor " end looping through colors - - endif " had TEST_256_COLOR_CONSISTENCY - - endif " had variant - endfor " end looping through variants - - endfor " end looping through themes - - return [l:premise, l:error] -endfun -" ------------------------------------------------------------------ - -" TODO: later -" fun! s:test_converter() -" let l:premise = 'Just test converter' -" let l:error = '' - -" echo s:to_HEX['134'] . ' ' . s:to_256(s:to_HEX['134']) . ' expected 134' -" echo s:to_HEX['135'] . ' ' . s:to_256(s:to_HEX['135']) . ' expected 135' -" echo s:to_HEX['136'] . ' ' . s:to_256(s:to_HEX['136']) . ' expected 136' -" echo s:to_HEX['234'] . ' ' . s:to_256(s:to_HEX['234']) . ' expected 234' -" echo s:to_HEX['235'] . ' ' . s:to_256(s:to_HEX['235']) . ' expected 235' -" echo s:to_HEX['236'] . ' ' . s:to_256(s:to_HEX['236']) . ' expected 236' - -" return [l:premise, l:error] -" endfun -" ------------------------------------------------------------------ - -fun! g:PaperColor_Test() - let l:verbose = 1 " 0: only error - let l:test_functions = [ - \ function('s:palettes_should_have_color00_to_color15'), - \ function('s:colors_should_have_correct_format'), - \ function('s:expected_256_only_colors_should_be_consistent'), - \ ] - - if l:verbose == 1 - echo '----- PaperColor-Theme ------' - echo '-------- TEST BEGIN ---------' - endif - - let l:has_failed = 0 - - let l:counter = 0 - for l:Test in l:test_functions - let l:has_failed = l:has_failed || s:test_report(l:Test(), l:verbose) - if l:has_failed == 1 - echo ' ' - echo '[FAILED]' - echo "Failed at test function: " l:Test - echo ' ' - echo '-----------------------------' - echo '' 1.0 * l:counter / len(l:test_functions) * 100 - echon '% passed' - break - endif - let l:counter += 1 - endfor - - if l:verbose == 1 - if l:has_failed == 0 - echo '[SUCCEEDED]' - endif - echo '-------- TEST END -----------' - endif - - return l:has_failed -endfun - -" let g:PaperColor_Theme_Test = 1 -" if exists("g:PaperColor_Theme_Test") && g:PaperColor_Theme_Test == 1 -" endif -" }}} - -" INTERMEDIATE FILES GENERATOR: {{{ - -fun! s:writeToFile(message, file) - echo a:file - new - setlocal buftype=nofile bufhidden=hide noswapfile nobuflisted - put=a:message - execute 'w ' a:file - q -endfun - -let s:script_path = fnamemodify(resolve(expand(':p')), ':h') - -fun! g:PaperColor_GenerateSpecs() - " call s:generate_color_palettes() - call s:generate_vim_highlightings() -endfun - -fun! s:generate_color_palettes() - let l:content = '' - let l:indent1 = ' ' - let l:indent2 = ' ' - for [l:name, l:theme] in items(s:themes) - - let l:content .= l:name . ":\n" - for l:variant in ['light', 'dark'] - if has_key(l:theme, l:variant) - - let l:content .= l:indent1 . l:variant . ":\n" - let l:palette = l:theme[l:variant].palette - - for [l:color, l:value] in items(l:palette) - let l:value_hex = l:value[0] - " let l:value_256 = l:value[1] - let l:content .= l:indent2 . l:color . ": " . l:value_hex . "\n" - endfor " end looping through colors - - endif - endfor " end looping through variants - - endfor " end looping through themes - " echo l:content - call s:writeToFile(l:content, "palettes.yml") -endfun - -fun! s:generate_vim_highlightings() - let l:content = '' - let l:indent1 = ' ' - let l:indent2 = ' ' - let l:indent3 = ' ' - for [l:name, l:theme] in items(s:themes) - - let l:content .= l:name . ":\n" - - for l:mode in [s:MODE_TRUE_OR_256_COLOR, s:MODE_16_COLOR] - let l:is_16_color_checked = 0 - let l:mode_display_name = 'high-color' - if l:mode == s:MODE_16_COLOR - let l:mode_display_name = 'low-color' - endif - - let l:content .= l:indent1 . l:mode_display_name . ":\n" - - for l:variant in ['light', 'dark'] - if has_key(l:theme, l:variant) - if l:mode == s:MODE_16_COLOR - if l:is_16_color_checked == 1 - continue - else - let l:is_16_color_checked = 1 - endif - endif - - let l:content .= l:indent2 . l:variant . ":\n" - - let s:palette = l:theme[l:variant].palette - - let s:mode = l:mode - call s:adapt_to_environment() - call s:set_color_variables() - call s:set_highlightings_variable() - - for [l:group, l:highlighting] in s:highlightings - let l:content .= l:indent3 . l:group . ": " . l:highlighting . "\n" - endfor - - endif - endfor " end looping through variants - - endfor - - - endfor " end looping through themes - " echo l:content - call s:writeToFile(l:content, "highlightings.yml") -endfun - -" }}} - -" ============================ MAIN ======================================= - -" MAIN: {{{ - -hi clear -syntax reset -let g:colors_name = "PaperColor" - -call s:adapt_to_environment() -call s:set_color_variables() -call s:set_highlightings_variable() -call s:apply_highlightings() - -" }}} - -" ========================================================================= -" Cheers! -" vim: fdm=marker ff=unix - diff --git a/vim/colors/one.vim b/vim/colors/one.vim deleted file mode 100644 index 57beaed..0000000 --- a/vim/colors/one.vim +++ /dev/null @@ -1,834 +0,0 @@ -" Name: one vim colorscheme -" Author: Ramzi Akremi -" License: MIT -" Version: 1.1.1-pre -" URL: https://github.com/rakr/vim-one - -" Global setup =============================================================={{{ - -if exists("*X") - delf X - delf rgb - delf color - delf rgb_color - delf rgb_level - delf rgb_number - delf grey_color - delf grey_level - delf grey_number -endif - -hi clear -syntax reset -if exists('g:colors_name') - unlet g:colors_name -endif -let g:colors_name = 'one' - -if !exists('g:one_allow_italics') - let g:one_allow_italics = 0 -endif - -if has('gui_running') || &t_Co == 88 || &t_Co == 256 - " functions - " returns an approximate grey index for the given grey level - - " Utility functions -------------------------------------------------------{{{ - fun grey_number(x) - if &t_Co == 88 - if a:x < 23 - return 0 - elseif a:x < 69 - return 1 - elseif a:x < 103 - return 2 - elseif a:x < 127 - return 3 - elseif a:x < 150 - return 4 - elseif a:x < 173 - return 5 - elseif a:x < 196 - return 6 - elseif a:x < 219 - return 7 - elseif a:x < 243 - return 8 - else - return 9 - endif - else - if a:x < 14 - return 0 - else - let l:n = (a:x - 8) / 10 - let l:m = (a:x - 8) % 10 - if l:m < 5 - return l:n - else - return l:n + 1 - endif - endif - endif - endfun - - " returns the actual grey level represented by the grey index - fun grey_level(n) - if &t_Co == 88 - if a:n == 0 - return 0 - elseif a:n == 1 - return 46 - elseif a:n == 2 - return 92 - elseif a:n == 3 - return 115 - elseif a:n == 4 - return 139 - elseif a:n == 5 - return 162 - elseif a:n == 6 - return 185 - elseif a:n == 7 - return 208 - elseif a:n == 8 - return 231 - else - return 255 - endif - else - if a:n == 0 - return 0 - else - return 8 + (a:n * 10) - endif - endif - endfun - - " returns the palette index for the given grey index - fun grey_color(n) - if &t_Co == 88 - if a:n == 0 - return 16 - elseif a:n == 9 - return 79 - else - return 79 + a:n - endif - else - if a:n == 0 - return 16 - elseif a:n == 25 - return 231 - else - return 231 + a:n - endif - endif - endfun - - " returns an approximate color index for the given color level - fun rgb_number(x) - if &t_Co == 88 - if a:x < 69 - return 0 - elseif a:x < 172 - return 1 - elseif a:x < 230 - return 2 - else - return 3 - endif - else - if a:x < 75 - return 0 - else - let l:n = (a:x - 55) / 40 - let l:m = (a:x - 55) % 40 - if l:m < 20 - return l:n - else - return l:n + 1 - endif - endif - endif - endfun - - " returns the actual color level for the given color index - fun rgb_level(n) - if &t_Co == 88 - if a:n == 0 - return 0 - elseif a:n == 1 - return 139 - elseif a:n == 2 - return 205 - else - return 255 - endif - else - if a:n == 0 - return 0 - else - return 55 + (a:n * 40) - endif - endif - endfun - - " returns the palette index for the given R/G/B color indices - fun rgb_color(x, y, z) - if &t_Co == 88 - return 16 + (a:x * 16) + (a:y * 4) + a:z - else - return 16 + (a:x * 36) + (a:y * 6) + a:z - endif - endfun - - " returns the palette index to approximate the given R/G/B color levels - fun color(r, g, b) - " get the closest grey - let l:gx = grey_number(a:r) - let l:gy = grey_number(a:g) - let l:gz = grey_number(a:b) - - " get the closest color - let l:x = rgb_number(a:r) - let l:y = rgb_number(a:g) - let l:z = rgb_number(a:b) - - if l:gx == l:gy && l:gy == l:gz - " there are two possibilities - let l:dgr = grey_level(l:gx) - a:r - let l:dgg = grey_level(l:gy) - a:g - let l:dgb = grey_level(l:gz) - a:b - let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb) - let l:dr = rgb_level(l:gx) - a:r - let l:dg = rgb_level(l:gy) - a:g - let l:db = rgb_level(l:gz) - a:b - let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db) - if l:dgrey < l:drgb - " use the grey - return grey_color(l:gx) - else - " use the color - return rgb_color(l:x, l:y, l:z) - endif - else - " only one possibility - return rgb_color(l:x, l:y, l:z) - endif - endfun - - " returns the palette index to approximate the 'rrggbb' hex string - fun rgb(rgb) - let l:r = ('0x' . strpart(a:rgb, 0, 2)) + 0 - let l:g = ('0x' . strpart(a:rgb, 2, 2)) + 0 - let l:b = ('0x' . strpart(a:rgb, 4, 2)) + 0 - - return color(l:r, l:g, l:b) - endfun - - " sets the highlighting for the given group - fun X(group, fg, bg, attr) - let l:attr = a:attr - if g:one_allow_italics == 0 && l:attr ==? 'italic' - let l:attr= 'none' - endif - - let l:bg = "" - let l:fg = "" - let l:decoration = "" - - if a:bg != '' - let l:bg = " guibg=#" . a:bg . " ctermbg=" . rgb(a:bg) - endif - - if a:fg != '' - let l:fg = " guifg=#" . a:fg . " ctermfg=" . rgb(a:fg) - endif - - if a:attr != '' - let l:decoration = " gui=" . l:attr . " cterm=" . l:attr - endif - - let l:exec = l:fg . l:bg . l:decoration - - if l:exec != '' - exec "hi " . a:group . l:exec - endif - - endfun - - "}}} - - - " Color definition --------------------------------------------------------{{{ - if &background ==# 'dark' - let s:mono_1 = 'abb2bf' - let s:mono_2 = '828997' - let s:mono_3 = '5c6370' - let s:mono_4 = '4b5263' - - let s:hue_1 = '56b6c2' " cyan - let s:hue_2 = '61afef' " blue - let s:hue_3 = 'c678dd' " purple - let s:hue_4 = '98c379' " green - - let s:hue_5 = 'e06c75' " red 1 - let s:hue_5_2 = 'be5046' " red 2 - - let s:hue_6 = 'd19a66' " orange 1 - let s:hue_6_2 = 'e5c07b' " orange 2 - - let s:syntax_bg = '282c34' - let s:syntax_gutter = '636d83' - let s:syntax_cursor = '2c323c' - - let s:syntax_accent = '528bff' - - let s:vertsplit = '181a1f' - let s:special_grey = '3b4048' - let s:visual_grey = '3e4452' - let s:pmenu = '333841' - else - let s:mono_1 = '494b53' - let s:mono_2 = '696c77' - let s:mono_3 = 'a0a1a7' - let s:mono_4 = 'c2c2c3' - - let s:hue_1 = '0184bc' " cyan - let s:hue_2 = '4078f2' " blue - let s:hue_3 = 'a626a4' " purple - let s:hue_4 = '50a14f' " green - - let s:hue_5 = 'e45649' " red 1 - let s:hue_5_2 = 'ca1243' " red 2 - - let s:hue_6 = '986801' " orange 1 - let s:hue_6_2 = 'c18401' " orange 2 - - let s:syntax_bg = 'fafafa' - let s:syntax_gutter = '9e9e9e' - let s:syntax_cursor = 'f0f0f0' - - let s:syntax_accent = '526fff' - let s:syntax_accent_2 = '0083be' - - let s:vertsplit = 'e7e9e1' - let s:special_grey = 'd3d3d3' - let s:visual_grey = 'd0d0d0' - let s:pmenu = 'dfdfdf' - endif - - let s:syntax_fg = s:mono_1 - let s:syntax_fold_bg = s:mono_3 - - "}}} - - " Vim editor color --------------------------------------------------------{{{ - call X('Normal', s:syntax_fg, s:syntax_bg, '') - call X('bold', '', '', 'bold') - call X('ColorColumn', '', s:syntax_cursor, '') - call X('Conceal', s:mono_4, s:syntax_bg, '') - call X('Cursor', '', s:syntax_accent, '') - call X('CursorIM', '', '', '') - call X('CursorColumn', '', s:syntax_cursor, '') - call X('CursorLine', '', s:syntax_cursor, 'none') - call X('Directory', s:hue_2, '', '') - call X('ErrorMsg', s:hue_5, s:syntax_bg, 'none') - call X('VertSplit', s:vertsplit, '', 'none') - call X('Folded', s:syntax_bg, s:syntax_fold_bg, 'none') - call X('FoldColumn', s:mono_3, s:syntax_cursor, '') - call X('IncSearch', s:hue_6, '', '') - call X('LineNr', s:mono_4, '', '') - call X('CursorLineNr', s:syntax_fg, s:syntax_cursor, 'none') - call X('MatchParen', s:hue_5, s:syntax_cursor, 'underline,bold') - call X('Italic', '', '', 'italic') - call X('ModeMsg', s:syntax_fg, '', '') - call X('MoreMsg', s:syntax_fg, '', '') - call X('NonText', s:mono_3, '', 'none') - call X('PMenu', '', s:pmenu, '') - call X('PMenuSel', '', s:mono_4, '') - call X('PMenuSbar', '', s:syntax_bg, '') - call X('PMenuThumb', '', s:mono_1, '') - call X('Question', s:hue_2, '', '') - call X('Search', s:syntax_bg, s:hue_6_2, '') - call X('SpecialKey', s:special_grey, '', 'none') - call X('Whitespace', s:special_grey, '', 'none') - call X('StatusLine', s:syntax_fg, s:syntax_cursor, 'none') - call X('StatusLineNC', s:mono_3, '', '') - call X('TabLine', s:mono_1, s:syntax_bg, '') - call X('TabLineFill', s:mono_3, s:visual_grey, 'none') - call X('TabLineSel', s:syntax_bg, s:hue_2, '') - call X('Title', s:syntax_fg, '', 'bold') - call X('Visual', '', s:visual_grey, '') - call X('VisualNOS', '', s:visual_grey, '') - call X('WarningMsg', s:hue_5, '', '') - call X('TooLong', s:hue_5, '', '') - call X('WildMenu', s:syntax_fg, s:mono_3, '') - call X('SignColumn', '', s:syntax_bg, '') - call X('Special', s:hue_2, '', '') - " }}} - - " Vim Help highlighting ---------------------------------------------------{{{ - call X('helpCommand', s:hue_6_2, '', '') - call X('helpExample', s:hue_6_2, '', '') - call X('helpHeader', s:mono_1, '', 'bold') - call X('helpSectionDelim', s:mono_3, '', '') - " }}} - - " Standard syntax highlighting --------------------------------------------{{{ - call X('Comment', s:mono_3, '', 'italic') - call X('Constant', s:hue_4, '', '') - call X('String', s:hue_4, '', '') - call X('Character', s:hue_4, '', '') - call X('Number', s:hue_6, '', '') - call X('Boolean', s:hue_6, '', '') - call X('Float', s:hue_6, '', '') - call X('Identifier', s:hue_5, '', 'none') - call X('Function', s:hue_2, '', '') - call X('Statement', s:hue_3, '', 'none') - call X('Conditional', s:hue_3, '', '') - call X('Repeat', s:hue_3, '', '') - call X('Label', s:hue_3, '', '') - call X('Operator', s:syntax_accent, '', 'none') - call X('Keyword', s:hue_5, '', '') - call X('Exception', s:hue_3, '', '') - call X('PreProc', s:hue_6_2, '', '') - call X('Include', s:hue_2, '', '') - call X('Define', s:hue_3, '', 'none') - call X('Macro', s:hue_3, '', '') - call X('PreCondit', s:hue_6_2, '', '') - call X('Type', s:hue_6_2, '', 'none') - call X('StorageClass', s:hue_6_2, '', '') - call X('Structure', s:hue_6_2, '', '') - call X('Typedef', s:hue_6_2, '', '') - call X('Special', s:hue_2, '', '') - call X('SpecialChar', '', '', '') - call X('Tag', '', '', '') - call X('Delimiter', '', '', '') - call X('SpecialComment', '', '', '') - call X('Debug', '', '', '') - call X('Underlined', '', '', 'underline') - call X('Ignore', '', '', '') - call X('Error', s:hue_5, s:syntax_bg, 'bold') - call X('Todo', s:hue_3, s:syntax_bg, '') - " }}} - - " Diff highlighting -------------------------------------------------------{{{ - call X('DiffAdd', s:hue_4, s:visual_grey, '') - call X('DiffChange', s:hue_6, s:visual_grey, '') - call X('DiffDelete', s:hue_5, s:visual_grey, '') - call X('DiffText', s:hue_2, s:visual_grey, '') - call X('DiffAdded', s:hue_4, s:visual_grey, '') - call X('DiffFile', s:hue_5, s:visual_grey, '') - call X('DiffNewFile', s:hue_4, s:visual_grey, '') - call X('DiffLine', s:hue_2, s:visual_grey, '') - call X('DiffRemoved', s:hue_5, s:visual_grey, '') - " }}} - - " Asciidoc highlighting ---------------------------------------------------{{{ - call X('asciidocListingBlock', s:mono_2, '', '') - " }}} - - " C/C++ highlighting ------------------------------------------------------{{{ - call X('cInclude', s:hue_3, '', '') - call X('cPreCondit', s:hue_3, '', '') - call X('cPreConditMatch', s:hue_3, '', '') - - call X('cType', s:hue_3, '', '') - call X('cStorageClass', s:hue_3, '', '') - call X('cStructure', s:hue_3, '', '') - call X('cOperator', s:hue_3, '', '') - call X('cStatement', s:hue_3, '', '') - call X('cTODO', s:hue_3, '', '') - call X('cConstant', s:hue_6, '', '') - call X('cSpecial', s:hue_1, '', '') - call X('cSpecialCharacter', s:hue_1, '', '') - call X('cString', s:hue_4, '', '') - - call X('cppType', s:hue_3, '', '') - call X('cppStorageClass', s:hue_3, '', '') - call X('cppStructure', s:hue_3, '', '') - call X('cppModifier', s:hue_3, '', '') - call X('cppOperator', s:hue_3, '', '') - call X('cppAccess', s:hue_3, '', '') - call X('cppStatement', s:hue_3, '', '') - call X('cppConstant', s:hue_5, '', '') - call X('cCppString', s:hue_4, '', '') - " }}} - - " Cucumber highlighting ---------------------------------------------------{{{ - call X('cucumberGiven', s:hue_2, '', '') - call X('cucumberWhen', s:hue_2, '', '') - call X('cucumberWhenAnd', s:hue_2, '', '') - call X('cucumberThen', s:hue_2, '', '') - call X('cucumberThenAnd', s:hue_2, '', '') - call X('cucumberUnparsed', s:hue_6, '', '') - call X('cucumberFeature', s:hue_5, '', 'bold') - call X('cucumberBackground', s:hue_3, '', 'bold') - call X('cucumberScenario', s:hue_3, '', 'bold') - call X('cucumberScenarioOutline', s:hue_3, '', 'bold') - call X('cucumberTags', s:mono_3, '', 'bold') - call X('cucumberDelimiter', s:mono_3, '', 'bold') - " }}} - - " CSS/Sass highlighting ---------------------------------------------------{{{ - call X('cssAttrComma', s:hue_3, '', '') - call X('cssAttributeSelector', s:hue_4, '', '') - call X('cssBraces', s:mono_2, '', '') - call X('cssClassName', s:hue_6, '', '') - call X('cssClassNameDot', s:hue_6, '', '') - call X('cssDefinition', s:hue_3, '', '') - call X('cssFontAttr', s:hue_6, '', '') - call X('cssFontDescriptor', s:hue_3, '', '') - call X('cssFunctionName', s:hue_2, '', '') - call X('cssIdentifier', s:hue_2, '', '') - call X('cssImportant', s:hue_3, '', '') - call X('cssInclude', s:mono_1, '', '') - call X('cssIncludeKeyword', s:hue_3, '', '') - call X('cssMediaType', s:hue_6, '', '') - call X('cssProp', s:hue_1, '', '') - call X('cssPseudoClassId', s:hue_6, '', '') - call X('cssSelectorOp', s:hue_3, '', '') - call X('cssSelectorOp2', s:hue_3, '', '') - call X('cssStringQ', s:hue_4, '', '') - call X('cssStringQQ', s:hue_4, '', '') - call X('cssTagName', s:hue_5, '', '') - call X('cssAttr', s:hue_6, '', '') - - call X('sassAmpersand', s:hue_5, '', '') - call X('sassClass', s:hue_6_2, '', '') - call X('sassControl', s:hue_3, '', '') - call X('sassExtend', s:hue_3, '', '') - call X('sassFor', s:mono_1, '', '') - call X('sassProperty', s:hue_1, '', '') - call X('sassFunction', s:hue_1, '', '') - call X('sassId', s:hue_2, '', '') - call X('sassInclude', s:hue_3, '', '') - call X('sassMedia', s:hue_3, '', '') - call X('sassMediaOperators', s:mono_1, '', '') - call X('sassMixin', s:hue_3, '', '') - call X('sassMixinName', s:hue_2, '', '') - call X('sassMixing', s:hue_3, '', '') - - call X('scssSelectorName', s:hue_6_2, '', '') - " }}} - - " Elixir highlighting------------------------------------------------------{{{ - hi link elixirModuleDefine Define - call X('elixirAlias', s:hue_6_2, '', '') - call X('elixirAtom', s:hue_1, '', '') - call X('elixirBlockDefinition', s:hue_3, '', '') - call X('elixirModuleDeclaration', s:hue_6, '', '') - " }}} - - " Git and git related plugins highlighting --------------------------------{{{ - call X('gitcommitComment', s:mono_3, '', '') - call X('gitcommitUnmerged', s:hue_4, '', '') - call X('gitcommitOnBranch', '', '', '') - call X('gitcommitBranch', s:hue_3, '', '') - call X('gitcommitDiscardedType', s:hue_5, '', '') - call X('gitcommitSelectedType', s:hue_4, '', '') - call X('gitcommitHeader', '', '', '') - call X('gitcommitUntrackedFile', s:hue_1, '', '') - call X('gitcommitDiscardedFile', s:hue_5, '', '') - call X('gitcommitSelectedFile', s:hue_4, '', '') - call X('gitcommitUnmergedFile', s:hue_6_2, '', '') - call X('gitcommitFile', '', '', '') - hi link gitcommitNoBranch gitcommitBranch - hi link gitcommitUntracked gitcommitComment - hi link gitcommitDiscarded gitcommitComment - hi link gitcommitSelected gitcommitComment - hi link gitcommitDiscardedArrow gitcommitDiscardedFile - hi link gitcommitSelectedArrow gitcommitSelectedFile - hi link gitcommitUnmergedArrow gitcommitUnmergedFile - - call X('SignifySignAdd', s:hue_4, '', '') - call X('SignifySignChange', s:hue_6_2, '', '') - call X('SignifySignDelete', s:hue_5, '', '') - hi link GitGutterAdd SignifySignAdd - hi link GitGutterChange SignifySignChange - hi link GitGutterDelete SignifySignDelete - call X('diffAdded', s:hue_4, '', '') - call X('diffRemoved', s:hue_5, '', '') - " }}} - - " Go highlighting ---------------------------------------------------------{{{ - call X('goDeclaration', s:hue_3, '', '') - call X('goField', s:hue_5, '', '') - call X('goMethod', s:hue_1, '', '') - call X('goType', s:hue_3, '', '') - call X('goUnsignedInts', s:hue_1, '', '') - " }}} - - " HTML highlighting -------------------------------------------------------{{{ - call X('htmlArg', s:hue_6, '', '') - call X('htmlTagName', s:hue_5, '', '') - call X('htmlTagN', s:hue_5, '', '') - call X('htmlSpecialTagName', s:hue_5, '', '') - call X('htmlTag', s:mono_2, '', '') - call X('htmlEndTag', s:mono_2, '', '') - - call X('MatchTag', s:hue_5, s:syntax_cursor, 'underline,bold') - " }}} - - " JavaScript highlighting -------------------------------------------------{{{ - call X('coffeeString', s:hue_4, '', '') - - call X('javaScriptBraces', s:mono_2, '', '') - call X('javaScriptFunction', s:hue_3, '', '') - call X('javaScriptIdentifier', s:hue_3, '', '') - call X('javaScriptNull', s:hue_6, '', '') - call X('javaScriptNumber', s:hue_6, '', '') - call X('javaScriptRequire', s:hue_1, '', '') - call X('javaScriptReserved', s:hue_3, '', '') - " https://github.com/pangloss/vim-javascript - call X('jsArrowFunction', s:hue_3, '', '') - call X('jsBraces', s:mono_2, '', '') - call X('jsClassBraces', s:mono_2, '', '') - call X('jsClassKeywords', s:hue_3, '', '') - call X('jsDocParam', s:hue_2, '', '') - call X('jsDocTags', s:hue_3, '', '') - call X('jsFuncBraces', s:mono_2, '', '') - call X('jsFuncCall', s:hue_2, '', '') - call X('jsFuncParens', s:mono_2, '', '') - call X('jsFunction', s:hue_3, '', '') - call X('jsGlobalObjects', s:hue_6_2, '', '') - call X('jsModuleWords', s:hue_3, '', '') - call X('jsModules', s:hue_3, '', '') - call X('jsNoise', s:mono_2, '', '') - call X('jsNull', s:hue_6, '', '') - call X('jsOperator', s:hue_3, '', '') - call X('jsParens', s:mono_2, '', '') - call X('jsStorageClass', s:hue_3, '', '') - call X('jsTemplateBraces', s:hue_5_2, '', '') - call X('jsTemplateVar', s:hue_4, '', '') - call X('jsThis', s:hue_5, '', '') - call X('jsUndefined', s:hue_6, '', '') - call X('jsObjectValue', s:hue_2, '', '') - call X('jsObjectKey', s:hue_1, '', '') - " https://github.com/othree/yajs.vim - call X('javascriptArrowFunc', s:hue_3, '', '') - call X('javascriptClassExtends', s:hue_3, '', '') - call X('javascriptClassKeyword', s:hue_3, '', '') - call X('javascriptDocNotation', s:hue_3, '', '') - call X('javascriptDocParamName', s:hue_2, '', '') - call X('javascriptDocTags', s:hue_3, '', '') - call X('javascriptEndColons', s:mono_3, '', '') - call X('javascriptExport', s:hue_3, '', '') - call X('javascriptFuncArg', s:mono_1, '', '') - call X('javascriptFuncKeyword', s:hue_3, '', '') - call X('javascriptIdentifier', s:hue_5, '', '') - call X('javascriptImport', s:hue_3, '', '') - call X('javascriptObjectLabel', s:mono_1, '', '') - call X('javascriptOpSymbol', s:hue_1, '', '') - call X('javascriptOpSymbols', s:hue_1, '', '') - call X('javascriptPropertyName', s:hue_4, '', '') - call X('javascriptTemplateSB', s:hue_5_2, '', '') - call X('javascriptVariable', s:hue_3, '', '') - " }}} - - " JSON highlighting -------------------------------------------------------{{{ - call X('jsonCommentError', s:mono_1, '', '' ) - call X('jsonKeyword', s:hue_5, '', '' ) - call X('jsonQuote', s:mono_3, '', '' ) - call X('jsonTrailingCommaError', s:hue_5, '', 'reverse' ) - call X('jsonMissingCommaError', s:hue_5, '', 'reverse' ) - call X('jsonNoQuotesError', s:hue_5, '', 'reverse' ) - call X('jsonNumError', s:hue_5, '', 'reverse' ) - call X('jsonString', s:hue_4, '', '' ) - call X('jsonStringSQError', s:hue_5, '', 'reverse' ) - call X('jsonSemicolonError', s:hue_5, '', 'reverse' ) - " }}} - - " Markdown highlighting ---------------------------------------------------{{{ - call X('markdownUrl', s:mono_3, '', '') - call X('markdownBold', s:hue_6, '', 'bold') - call X('markdownItalic', s:hue_6, '', 'bold') - call X('markdownCode', s:hue_4, '', '') - call X('markdownCodeBlock', s:hue_5, '', '') - call X('markdownCodeDelimiter', s:hue_4, '', '') - call X('markdownHeadingDelimiter', s:hue_5_2, '', '') - call X('markdownH1', s:hue_5, '', '') - call X('markdownH2', s:hue_5, '', '') - call X('markdownH3', s:hue_5, '', '') - call X('markdownH3', s:hue_5, '', '') - call X('markdownH4', s:hue_5, '', '') - call X('markdownH5', s:hue_5, '', '') - call X('markdownH6', s:hue_5, '', '') - call X('markdownListMarker', s:hue_5, '', '') - " }}} - - " PHP highlighting --------------------------------------------------------{{{ - call X('phpClass', s:hue_6_2, '', '') - call X('phpFunction', s:hue_2, '', '') - call X('phpFunctions', s:hue_2, '', '') - call X('phpInclude', s:hue_3, '', '') - call X('phpKeyword', s:hue_3, '', '') - call X('phpParent', s:mono_3, '', '') - call X('phpType', s:hue_3, '', '') - call X('phpSuperGlobals', s:hue_5, '', '') - " }}} - - " Pug (Formerly Jade) highlighting ----------------------------------------{{{ - call X('pugAttributesDelimiter', s:hue_6, '', '') - call X('pugClass', s:hue_6, '', '') - call X('pugDocType', s:mono_3, '', 'italic') - call X('pugTag', s:hue_5, '', '') - " }}} - - " PureScript highlighting -------------------------------------------------{{{ - call X('purescriptKeyword', s:hue_3, '', '') - call X('purescriptModuleName', s:syntax_fg, '', '') - call X('purescriptIdentifier', s:syntax_fg, '', '') - call X('purescriptType', s:hue_6_2, '', '') - call X('purescriptTypeVar', s:hue_5, '', '') - call X('purescriptConstructor', s:hue_5, '', '') - call X('purescriptOperator', s:syntax_fg, '', '') - " }}} - - " Python highlighting -----------------------------------------------------{{{ - call X('pythonImport', s:hue_3, '', '') - call X('pythonBuiltin', s:hue_1, '', '') - call X('pythonStatement', s:hue_3, '', '') - call X('pythonParam', s:hue_6, '', '') - call X('pythonEscape', s:hue_5, '', '') - call X('pythonSelf', s:mono_2, '', 'italic') - call X('pythonClass', s:hue_2, '', '') - call X('pythonOperator', s:hue_3, '', '') - call X('pythonEscape', s:hue_5, '', '') - call X('pythonFunction', s:hue_2, '', '') - call X('pythonKeyword', s:hue_2, '', '') - call X('pythonModule', s:hue_3, '', '') - call X('pythonStringDelimiter', s:hue_4, '', '') - call X('pythonSymbol', s:hue_1, '', '') - " }}} - - " Ruby highlighting -------------------------------------------------------{{{ - call X('rubyBlock', s:hue_3, '', '') - call X('rubyBlockParameter', s:hue_5, '', '') - call X('rubyBlockParameterList', s:hue_5, '', '') - call X('rubyCapitalizedMethod', s:hue_3, '', '') - call X('rubyClass', s:hue_3, '', '') - call X('rubyConstant', s:hue_6_2, '', '') - call X('rubyControl', s:hue_3, '', '') - call X('rubyDefine', s:hue_3, '', '') - call X('rubyEscape', s:hue_5, '', '') - call X('rubyFunction', s:hue_2, '', '') - call X('rubyGlobalVariable', s:hue_5, '', '') - call X('rubyInclude', s:hue_2, '', '') - call X('rubyIncluderubyGlobalVariable', s:hue_5, '', '') - call X('rubyInstanceVariable', s:hue_5, '', '') - call X('rubyInterpolation', s:hue_1, '', '') - call X('rubyInterpolationDelimiter', s:hue_5, '', '') - call X('rubyKeyword', s:hue_2, '', '') - call X('rubyModule', s:hue_3, '', '') - call X('rubyPseudoVariable', s:hue_5, '', '') - call X('rubyRegexp', s:hue_1, '', '') - call X('rubyRegexpDelimiter', s:hue_1, '', '') - call X('rubyStringDelimiter', s:hue_4, '', '') - call X('rubySymbol', s:hue_1, '', '') - " }}} - - " Spelling highlighting ---------------------------------------------------{{{ - call X('SpellBad', '', s:syntax_bg, 'undercurl') - call X('SpellLocal', '', s:syntax_bg, 'undercurl') - call X('SpellCap', '', s:syntax_bg, 'undercurl') - call X('SpellRare', '', s:syntax_bg, 'undercurl') - " }}} - - " Vim highlighting --------------------------------------------------------{{{ - call X('vimCommand', s:hue_3, '', '') - call X('vimCommentTitle', s:mono_3, '', 'bold') - call X('vimFunction', s:hue_1, '', '') - call X('vimFuncName', s:hue_3, '', '') - call X('vimHighlight', s:hue_2, '', '') - call X('vimLineComment', s:mono_3, '', 'italic') - call X('vimParenSep', s:mono_2, '', '') - call X('vimSep', s:mono_2, '', '') - call X('vimUserFunc', s:hue_1, '', '') - call X('vimVar', s:hue_5, '', '') - " }}} - - " XML highlighting --------------------------------------------------------{{{ - call X('xmlAttrib', s:hue_6_2, '', '') - call X('xmlEndTag', s:hue_5, '', '') - call X('xmlTag', s:hue_5, '', '') - call X('xmlTagName', s:hue_5, '', '') - " }}} - - " ZSH highlighting --------------------------------------------------------{{{ - call X('zshCommands', s:syntax_fg, '', '') - call X('zshDeref', s:hue_5, '', '') - call X('zshShortDeref', s:hue_5, '', '') - call X('zshFunction', s:hue_1, '', '') - call X('zshKeyword', s:hue_3, '', '') - call X('zshSubst', s:hue_5, '', '') - call X('zshSubstDelim', s:mono_3, '', '') - call X('zshTypes', s:hue_3, '', '') - call X('zshVariableDef', s:hue_6, '', '') - " }}} - - " Rust highlighting -------------------------------------------------------{{{ - call X('rustExternCrate', s:hue_5, '', 'bold') - call X('rustIdentifier', s:hue_2, '', '') - call X('rustDeriveTrait', s:hue_4, '', '') - call X('SpecialComment', s:mono_3, '', '') - call X('rustCommentLine', s:mono_3, '', '') - call X('rustCommentLineDoc', s:mono_3, '', '') - call X('rustCommentLineDocError', s:mono_3, '', '') - call X('rustCommentBlock', s:mono_3, '', '') - call X('rustCommentBlockDoc', s:mono_3, '', '') - call X('rustCommentBlockDocError', s:mono_3, '', '') - " }}} - - " man highlighting --------------------------------------------------------{{{ - hi link manTitle String - call X('manFooter', s:mono_3, '', '') - " }}} - - " Neovim Terminal Colors --------------------------------------------------{{{ - let g:terminal_color_0 = "#353a44" - let g:terminal_color_8 = "#353a44" - let g:terminal_color_1 = "#e88388" - let g:terminal_color_9 = "#e88388" - let g:terminal_color_2 = "#a7cc8c" - let g:terminal_color_10 = "#a7cc8c" - let g:terminal_color_3 = "#ebca8d" - let g:terminal_color_11 = "#ebca8d" - let g:terminal_color_4 = "#72bef2" - let g:terminal_color_12 = "#72bef2" - let g:terminal_color_5 = "#d291e4" - let g:terminal_color_13 = "#d291e4" - let g:terminal_color_6 = "#65c2cd" - let g:terminal_color_14 = "#65c2cd" - let g:terminal_color_7 = "#e3e5e9" - let g:terminal_color_15 = "#e3e5e9" - "}}} - - " ALE (Asynchronous Lint Engine) highlighting -----------------------------{{{ - call X('ALEWarningSign', s:hue_6_2, '', '') - call X('ALEErrorSign', s:hue_5, '', '') - " }}} - - " Delete functions =========================================================={{{ - " delf X - " delf rgb - " delf color - " delf rgb_color - " delf rgb_level - " delf rgb_number - " delf grey_color - " delf grey_level - " delf grey_number - "}}} - -endif -"}}} - " Public API --------------------------------------------------------------{{{ - function! one#highlight(group, fg, bg, attr) - call X(a:group, a:fg, a:bg, a:attr) - endfunction - "}}} - -" vim: set fdl=0 fdm=marker: diff --git a/vim/colors/solarized.vim b/vim/colors/solarized.vim new file mode 100644 index 0000000..70f5223 --- /dev/null +++ b/vim/colors/solarized.vim @@ -0,0 +1,1117 @@ +" Name: Solarized vim colorscheme +" Author: Ethan Schoonover +" URL: http://ethanschoonover.com/solarized +" (see this url for latest release & screenshots) +" License: OSI approved MIT license (see end of this file) +" Created: In the middle of the night +" Modified: 2011 May 05 +" +" Usage "{{{ +" +" --------------------------------------------------------------------- +" ABOUT: +" --------------------------------------------------------------------- +" Solarized is a carefully designed selective contrast colorscheme with dual +" light and dark modes that runs in both GUI, 256 and 16 color modes. +" +" See the homepage above for screenshots and details. +" +" --------------------------------------------------------------------- +" OPTIONS: +" --------------------------------------------------------------------- +" See the "solarized.txt" help file included with this colorscheme (in the +" "doc" subdirectory) for information on options, usage, the Toggle Background +" function and more. If you have already installed Solarized, this is available +" from the Solarized menu and command line as ":help solarized" +" +" --------------------------------------------------------------------- +" INSTALLATION: +" --------------------------------------------------------------------- +" Two options for installation: manual or pathogen +" +" MANUAL INSTALLATION OPTION: +" --------------------------------------------------------------------- +" +" 1. Download the solarized distribution (available on the homepage above) +" and unarchive the file. +" 2. Move `solarized.vim` to your `.vim/colors` directory. +" 3. Move each of the files in each subdirectories to the corresponding .vim +" subdirectory (e.g. autoload/togglebg.vim goes into your .vim/autoload +" directory as .vim/autoload/togglebg.vim). +" +" RECOMMENDED PATHOGEN INSTALLATION OPTION: +" --------------------------------------------------------------------- +" +" 1. Download and install Tim Pope's Pathogen from: +" https://github.com/tpope/vim-pathogen +" +" 2. Next, move or clone the `vim-colors-solarized` directory so that it is +" a subdirectory of the `.vim/bundle` directory. +" +" a. **clone with git:** +" +" $ cd ~/.vim/bundle +" $ git clone git://github.com/altercation/vim-colors-solarized.git +" +" b. **or move manually into the pathogen bundle directory:** +" In the parent directory of vim-colors-solarized: +" +" $ mv vim-colors-solarized ~/.vim/bundle/ +" +" MODIFY VIMRC: +" +" After either Option 1 or Option 2 above, put the following two lines in your +" .vimrc: +" +" syntax enable +" set background=dark +" colorscheme solarized +" +" or, for the light background mode of Solarized: +" +" syntax enable +" set background=light +" colorscheme solarized +" +" I like to have a different background in GUI and terminal modes, so I can use +" the following if-then. However, I find vim's background autodetection to be +" pretty good and, at least with MacVim, I can leave this background value +" assignment out entirely and get the same results. +" +" if has('gui_running') +" set background=light +" else +" set background=dark +" endif +" +" See the Solarized homepage at http://ethanschoonover.com/solarized for +" screenshots which will help you select either the light or dark background. +" +" --------------------------------------------------------------------- +" COLOR VALUES +" --------------------------------------------------------------------- +" Download palettes and files from: http://ethanschoonover.com/solarized +" +" L\*a\*b values are canonical (White D65, Reference D50), other values are +" matched in sRGB space. +" +" SOLARIZED HEX 16/8 TERMCOL XTERM/HEX L*A*B sRGB HSB +" --------- ------- ---- ------- ----------- ---------- ----------- ----------- +" base03 #002b36 8/4 brblack 234 #1c1c1c 15 -12 -12 0 43 54 193 100 21 +" base02 #073642 0/4 black 235 #262626 20 -12 -12 7 54 66 192 90 26 +" base01 #586e75 10/7 brgreen 240 #4e4e4e 45 -07 -07 88 110 117 194 25 46 +" base00 #657b83 11/7 bryellow 241 #585858 50 -07 -07 101 123 131 195 23 51 +" base0 #839496 12/6 brblue 244 #808080 60 -06 -03 131 148 150 186 13 59 +" base1 #93a1a1 14/4 brcyan 245 #8a8a8a 65 -05 -02 147 161 161 180 9 63 +" base2 #eee8d5 7/7 white 254 #d7d7af 92 -00 10 238 232 213 44 11 93 +" base3 #fdf6e3 15/7 brwhite 230 #ffffd7 97 00 10 253 246 227 44 10 99 +" yellow #b58900 3/3 yellow 136 #af8700 60 10 65 181 137 0 45 100 71 +" orange #cb4b16 9/3 brred 166 #d75f00 50 50 55 203 75 22 18 89 80 +" red #dc322f 1/1 red 160 #d70000 50 65 45 220 50 47 1 79 86 +" magenta #d33682 5/5 magenta 125 #af005f 50 65 -05 211 54 130 331 74 83 +" violet #6c71c4 13/5 brmagenta 61 #5f5faf 50 15 -45 108 113 196 237 45 77 +" blue #268bd2 4/4 blue 33 #0087ff 55 -10 -45 38 139 210 205 82 82 +" cyan #2aa198 6/6 cyan 37 #00afaf 60 -35 -05 42 161 152 175 74 63 +" green #859900 2/2 green 64 #5f8700 60 -20 65 133 153 0 68 100 60 +" +" --------------------------------------------------------------------- +" COLORSCHEME HACKING +" --------------------------------------------------------------------- +" +" Useful commands for testing colorschemes: +" :source $VIMRUNTIME/syntax/hitest.vim +" :help highlight-groups +" :help cterm-colors +" :help group-name +" +" Useful links for developing colorschemes: +" http://www.vim.org/scripts/script.php?script_id=2937 +" http://vimcasts.org/episodes/creating-colorschemes-for-vim/ +" http://www.frexx.de/xterm-256-notes/" +" +" }}} +" Environment Specific Overrides "{{{ +" Allow or disallow certain features based on current terminal emulator or +" environment. + +" Terminals that support italics +let s:terms_italic=[ + \"rxvt", + \"gnome-terminal" + \] +" For reference only, terminals are known to be incomptible. +" Terminals that are in neither list need to be tested. +let s:terms_noitalic=[ + \"iTerm.app", + \"Apple_Terminal" + \] +if has("gui_running") + let s:terminal_italic=1 " TODO: could refactor to not require this at all +else + let s:terminal_italic=0 " terminals will be guilty until proven compatible + for term in s:terms_italic + if $TERM_PROGRAM =~ term + let s:terminal_italic=1 + endif + endfor +endif + +" }}} +" Default option values"{{{ +" --------------------------------------------------------------------- +" s:options_list is used to autogenerate a list of all non-default options +" using "call SolarizedOptions()" or with the "Generate .vimrc commands" +" Solarized menu option. See the "Menus" section below for the function itself. +let s:options_list=[ + \'" this block of commands has been autogenerated by solarized.vim and', + \'" includes the current, non-default Solarized option values.', + \'" To use, place these commands in your .vimrc file (replacing any', + \'" existing colorscheme commands). See also ":help solarized"', + \'', + \'" ------------------------------------------------------------------', + \'" Solarized Colorscheme Config', + \'" ------------------------------------------------------------------', + \] +let s:colorscheme_list=[ + \'syntax enable', + \'set background='.&background, + \'colorscheme solarized', + \] +let s:defaults_list=[ + \'" ------------------------------------------------------------------', + \'', + \'" The following items are available options, but do not need to be', + \'" included in your .vimrc as they are currently set to their defaults.', + \'' + \] +let s:lazycat_list=[ + \'" lazy method of appending this onto your .vimrc ":w! >> ~/.vimrc"', + \'" ------------------------------------------------------------------', + \] + +function! s:SetOption(name,default) + if type(a:default) == type(0) + let l:wrap='' + let l:ewrap='' + else + let l:wrap='"' + let l:ewrap='\"' + endif + if !exists("g:solarized_".a:name) || g:solarized_{a:name}==a:default + exe 'let g:solarized_'.a:name.'='.l:wrap.a:default.l:wrap.'"' + exe 'call add(s:defaults_list, "\" let g:solarized_'.a:name.'='.l:ewrap.g:solarized_{a:name}.l:ewrap.'")' + else + exe 'call add(s:options_list, "let g:solarized_'.a:name.'='.l:ewrap.g:solarized_{a:name}.l:ewrap.' \"default value is '.a:default.'")' + endif +endfunction + +if ($TERM_PROGRAM ==? "apple_terminal" && &t_Co < 256) + let s:solarized_termtrans_default = 1 +else + let s:solarized_termtrans_default = 0 +endif +call s:SetOption("termtrans",s:solarized_termtrans_default) +call s:SetOption("degrade",0) +call s:SetOption("bold",1) +call s:SetOption("underline",1) +call s:SetOption("italic",1) " note that we need to override this later if the terminal doesn't support +call s:SetOption("termcolors",16) +call s:SetOption("contrast","normal") +call s:SetOption("visibility","normal") +call s:SetOption("diffmode","normal") +call s:SetOption("hitrail",0) +call s:SetOption("menu",1) + +"}}} +" Colorscheme initialization "{{{ +" --------------------------------------------------------------------- +hi clear +if exists("syntax_on") + syntax reset +endif +let colors_name = "solarized" + +"}}} +" GUI & CSApprox hexadecimal palettes"{{{ +" --------------------------------------------------------------------- +" +" Set both gui and terminal color values in separate conditional statements +" Due to possibility that CSApprox is running (though I suppose we could just +" leave the hex values out entirely in that case and include only cterm colors) +" We also check to see if user has set solarized (force use of the +" neutral gray monotone palette component) +if (has("gui_running") && g:solarized_degrade == 0) + let s:vmode = "gui" + let s:base03 = "#002b36" + let s:base02 = "#073642" + let s:base01 = "#586e75" + let s:base00 = "#657b83" + let s:base0 = "#839496" + let s:base1 = "#93a1a1" + let s:base2 = "#eee8d5" + let s:base3 = "#fdf6e3" + let s:yellow = "#b58900" + let s:orange = "#cb4b16" + let s:red = "#dc322f" + let s:magenta = "#d33682" + let s:violet = "#6c71c4" + let s:blue = "#268bd2" + let s:cyan = "#2aa198" + "let s:green = "#859900" "original + let s:green = "#719e07" "experimental +elseif (has("gui_running") && g:solarized_degrade == 1) + " These colors are identical to the 256 color mode. They may be viewed + " while in gui mode via "let g:solarized_degrade=1", though this is not + " recommened and is for testing only. + let s:vmode = "gui" + let s:base03 = "#1c1c1c" + let s:base02 = "#262626" + let s:base01 = "#4e4e4e" + let s:base00 = "#585858" + let s:base0 = "#808080" + let s:base1 = "#8a8a8a" + let s:base2 = "#d7d7af" + let s:base3 = "#ffffd7" + let s:yellow = "#af8700" + let s:orange = "#d75f00" + let s:red = "#af0000" + let s:magenta = "#af005f" + let s:violet = "#5f5faf" + let s:blue = "#0087ff" + let s:cyan = "#00afaf" + let s:green = "#5f8700" +elseif g:solarized_termcolors != 256 && &t_Co >= 16 + let s:vmode = "cterm" + let s:base03 = "8" + let s:base02 = "0" + let s:base01 = "10" + let s:base00 = "11" + let s:base0 = "12" + let s:base1 = "14" + let s:base2 = "7" + let s:base3 = "15" + let s:yellow = "3" + let s:orange = "9" + let s:red = "1" + let s:magenta = "5" + let s:violet = "13" + let s:blue = "4" + let s:cyan = "6" + let s:green = "2" +elseif g:solarized_termcolors == 256 + let s:vmode = "cterm" + let s:base03 = "234" + let s:base02 = "235" + let s:base01 = "239" + let s:base00 = "240" + let s:base0 = "244" + let s:base1 = "245" + let s:base2 = "187" + let s:base3 = "230" + let s:yellow = "136" + let s:orange = "166" + let s:red = "124" + let s:magenta = "125" + let s:violet = "61" + let s:blue = "33" + let s:cyan = "37" + let s:green = "64" +else + let s:vmode = "cterm" + let s:bright = "* term=bold cterm=bold" +" let s:base03 = "0".s:bright +" let s:base02 = "0" +" let s:base01 = "2".s:bright +" let s:base00 = "3".s:bright +" let s:base0 = "4".s:bright +" let s:base1 = "6".s:bright +" let s:base2 = "7" +" let s:base3 = "7".s:bright +" let s:yellow = "3" +" let s:orange = "1".s:bright +" let s:red = "1" +" let s:magenta = "5" +" let s:violet = "5".s:bright +" let s:blue = "4" +" let s:cyan = "6" +" let s:green = "2" + let s:base03 = "DarkGray" " 0* + let s:base02 = "Black" " 0 + let s:base01 = "LightGreen" " 2* + let s:base00 = "LightYellow" " 3* + let s:base0 = "LightBlue" " 4* + let s:base1 = "LightCyan" " 6* + let s:base2 = "LightGray" " 7 + let s:base3 = "White" " 7* + let s:yellow = "DarkYellow" " 3 + let s:orange = "LightRed" " 1* + let s:red = "DarkRed" " 1 + let s:magenta = "DarkMagenta" " 5 + let s:violet = "LightMagenta" " 5* + let s:blue = "DarkBlue" " 4 + let s:cyan = "DarkCyan" " 6 + let s:green = "DarkGreen" " 2 + +endif +"}}} +" Formatting options and null values for passthrough effect "{{{ +" --------------------------------------------------------------------- + let s:none = "NONE" + let s:none = "NONE" + let s:t_none = "NONE" + let s:n = "NONE" + let s:c = ",undercurl" + let s:r = ",reverse" + let s:s = ",standout" + let s:ou = "" + let s:ob = "" +"}}} +" Background value based on termtrans setting "{{{ +" --------------------------------------------------------------------- +if (has("gui_running") || g:solarized_termtrans == 0) + let s:back = s:base03 +else + let s:back = "NONE" +endif +"}}} +" Alternate light scheme "{{{ +" --------------------------------------------------------------------- +if &background == "light" + let s:temp03 = s:base03 + let s:temp02 = s:base02 + let s:temp01 = s:base01 + let s:temp00 = s:base00 + let s:base03 = s:base3 + let s:base02 = s:base2 + let s:base01 = s:base1 + let s:base00 = s:base0 + let s:base0 = s:temp00 + let s:base1 = s:temp01 + let s:base2 = s:temp02 + let s:base3 = s:temp03 + if (s:back != "NONE") + let s:back = s:base03 + endif +endif +"}}} +" Optional contrast schemes "{{{ +" --------------------------------------------------------------------- +if g:solarized_contrast == "high" + let s:base01 = s:base00 + let s:base00 = s:base0 + let s:base0 = s:base1 + let s:base1 = s:base2 + let s:base2 = s:base3 + let s:back = s:back +endif +if g:solarized_contrast == "low" + let s:back = s:base02 + let s:ou = ",underline" +endif +"}}} +" Overrides dependent on user specified values and environment "{{{ +" --------------------------------------------------------------------- +if (g:solarized_bold == 0 || &t_Co == 8 ) + let s:b = "" + let s:bb = ",bold" +else + let s:b = ",bold" + let s:bb = "" +endif + +if g:solarized_underline == 0 + let s:u = "" +else + let s:u = ",underline" +endif + +if g:solarized_italic == 0 || s:terminal_italic == 0 + let s:i = "" +else + let s:i = ",italic" +endif +"}}} +" Highlighting primitives"{{{ +" --------------------------------------------------------------------- + +exe "let s:bg_none = ' ".s:vmode."bg=".s:none ."'" +exe "let s:bg_back = ' ".s:vmode."bg=".s:back ."'" +exe "let s:bg_base03 = ' ".s:vmode."bg=".s:base03 ."'" +exe "let s:bg_base02 = ' ".s:vmode."bg=".s:base02 ."'" +exe "let s:bg_base01 = ' ".s:vmode."bg=".s:base01 ."'" +exe "let s:bg_base00 = ' ".s:vmode."bg=".s:base00 ."'" +exe "let s:bg_base0 = ' ".s:vmode."bg=".s:base0 ."'" +exe "let s:bg_base1 = ' ".s:vmode."bg=".s:base1 ."'" +exe "let s:bg_base2 = ' ".s:vmode."bg=".s:base2 ."'" +exe "let s:bg_base3 = ' ".s:vmode."bg=".s:base3 ."'" +exe "let s:bg_green = ' ".s:vmode."bg=".s:green ."'" +exe "let s:bg_yellow = ' ".s:vmode."bg=".s:yellow ."'" +exe "let s:bg_orange = ' ".s:vmode."bg=".s:orange ."'" +exe "let s:bg_red = ' ".s:vmode."bg=".s:red ."'" +exe "let s:bg_magenta = ' ".s:vmode."bg=".s:magenta."'" +exe "let s:bg_violet = ' ".s:vmode."bg=".s:violet ."'" +exe "let s:bg_blue = ' ".s:vmode."bg=".s:blue ."'" +exe "let s:bg_cyan = ' ".s:vmode."bg=".s:cyan ."'" + +exe "let s:fg_none = ' ".s:vmode."fg=".s:none ."'" +exe "let s:fg_back = ' ".s:vmode."fg=".s:back ."'" +exe "let s:fg_base03 = ' ".s:vmode."fg=".s:base03 ."'" +exe "let s:fg_base02 = ' ".s:vmode."fg=".s:base02 ."'" +exe "let s:fg_base01 = ' ".s:vmode."fg=".s:base01 ."'" +exe "let s:fg_base00 = ' ".s:vmode."fg=".s:base00 ."'" +exe "let s:fg_base0 = ' ".s:vmode."fg=".s:base0 ."'" +exe "let s:fg_base1 = ' ".s:vmode."fg=".s:base1 ."'" +exe "let s:fg_base2 = ' ".s:vmode."fg=".s:base2 ."'" +exe "let s:fg_base3 = ' ".s:vmode."fg=".s:base3 ."'" +exe "let s:fg_green = ' ".s:vmode."fg=".s:green ."'" +exe "let s:fg_yellow = ' ".s:vmode."fg=".s:yellow ."'" +exe "let s:fg_orange = ' ".s:vmode."fg=".s:orange ."'" +exe "let s:fg_red = ' ".s:vmode."fg=".s:red ."'" +exe "let s:fg_magenta = ' ".s:vmode."fg=".s:magenta."'" +exe "let s:fg_violet = ' ".s:vmode."fg=".s:violet ."'" +exe "let s:fg_blue = ' ".s:vmode."fg=".s:blue ."'" +exe "let s:fg_cyan = ' ".s:vmode."fg=".s:cyan ."'" + +exe "let s:fmt_none = ' ".s:vmode."=NONE". " term=NONE". "'" +exe "let s:fmt_bold = ' ".s:vmode."=NONE".s:b. " term=NONE".s:b."'" +exe "let s:fmt_bldi = ' ".s:vmode."=NONE".s:b. " term=NONE".s:b."'" +exe "let s:fmt_undr = ' ".s:vmode."=NONE".s:u. " term=NONE".s:u."'" +exe "let s:fmt_undb = ' ".s:vmode."=NONE".s:u.s:b. " term=NONE".s:u.s:b."'" +exe "let s:fmt_undi = ' ".s:vmode."=NONE".s:u. " term=NONE".s:u."'" +exe "let s:fmt_uopt = ' ".s:vmode."=NONE".s:ou. " term=NONE".s:ou."'" +exe "let s:fmt_curl = ' ".s:vmode."=NONE".s:c. " term=NONE".s:c."'" +exe "let s:fmt_ital = ' ".s:vmode."=NONE".s:i. " term=NONE".s:i."'" +exe "let s:fmt_stnd = ' ".s:vmode."=NONE".s:s. " term=NONE".s:s."'" +exe "let s:fmt_revr = ' ".s:vmode."=NONE".s:r. " term=NONE".s:r."'" +exe "let s:fmt_revb = ' ".s:vmode."=NONE".s:r.s:b. " term=NONE".s:r.s:b."'" +" revbb (reverse bold for bright colors) is only set to actual bold in low +" color terminals (t_co=8, such as OS X Terminal.app) and should only be used +" with colors 8-15. +exe "let s:fmt_revbb = ' ".s:vmode."=NONE".s:r.s:bb. " term=NONE".s:r.s:bb."'" +exe "let s:fmt_revbbu = ' ".s:vmode."=NONE".s:r.s:bb.s:u." term=NONE".s:r.s:bb.s:u."'" + +if has("gui_running") + exe "let s:sp_none = ' guisp=".s:none ."'" + exe "let s:sp_back = ' guisp=".s:back ."'" + exe "let s:sp_base03 = ' guisp=".s:base03 ."'" + exe "let s:sp_base02 = ' guisp=".s:base02 ."'" + exe "let s:sp_base01 = ' guisp=".s:base01 ."'" + exe "let s:sp_base00 = ' guisp=".s:base00 ."'" + exe "let s:sp_base0 = ' guisp=".s:base0 ."'" + exe "let s:sp_base1 = ' guisp=".s:base1 ."'" + exe "let s:sp_base2 = ' guisp=".s:base2 ."'" + exe "let s:sp_base3 = ' guisp=".s:base3 ."'" + exe "let s:sp_green = ' guisp=".s:green ."'" + exe "let s:sp_yellow = ' guisp=".s:yellow ."'" + exe "let s:sp_orange = ' guisp=".s:orange ."'" + exe "let s:sp_red = ' guisp=".s:red ."'" + exe "let s:sp_magenta = ' guisp=".s:magenta."'" + exe "let s:sp_violet = ' guisp=".s:violet ."'" + exe "let s:sp_blue = ' guisp=".s:blue ."'" + exe "let s:sp_cyan = ' guisp=".s:cyan ."'" +else + let s:sp_none = "" + let s:sp_back = "" + let s:sp_base03 = "" + let s:sp_base02 = "" + let s:sp_base01 = "" + let s:sp_base00 = "" + let s:sp_base0 = "" + let s:sp_base1 = "" + let s:sp_base2 = "" + let s:sp_base3 = "" + let s:sp_green = "" + let s:sp_yellow = "" + let s:sp_orange = "" + let s:sp_red = "" + let s:sp_magenta = "" + let s:sp_violet = "" + let s:sp_blue = "" + let s:sp_cyan = "" +endif + +"}}} +" Basic highlighting"{{{ +" --------------------------------------------------------------------- +" note that link syntax to avoid duplicate configuration doesn't work with the +" exe compiled formats + +exe "hi! Normal" .s:fmt_none .s:fg_base0 .s:bg_back + +exe "hi! Comment" .s:fmt_ital .s:fg_base01 .s:bg_none +" *Comment any comment + +exe "hi! Constant" .s:fmt_none .s:fg_cyan .s:bg_none +" *Constant any constant +" String a string constant: "this is a string" +" Character a character constant: 'c', '\n' +" Number a number constant: 234, 0xff +" Boolean a boolean constant: TRUE, false +" Float a floating point constant: 2.3e10 + +exe "hi! Identifier" .s:fmt_none .s:fg_blue .s:bg_none +" *Identifier any variable name +" Function function name (also: methods for classes) +" +exe "hi! Statement" .s:fmt_none .s:fg_green .s:bg_none +" *Statement any statement +" Conditional if, then, else, endif, switch, etc. +" Repeat for, do, while, etc. +" Label case, default, etc. +" Operator "sizeof", "+", "*", etc. +" Keyword any other keyword +" Exception try, catch, throw + +exe "hi! PreProc" .s:fmt_none .s:fg_orange .s:bg_none +" *PreProc generic Preprocessor +" Include preprocessor #include +" Define preprocessor #define +" Macro same as Define +" PreCondit preprocessor #if, #else, #endif, etc. + +exe "hi! Type" .s:fmt_none .s:fg_yellow .s:bg_none +" *Type int, long, char, etc. +" StorageClass static, register, volatile, etc. +" Structure struct, union, enum, etc. +" Typedef A typedef + +exe "hi! Special" .s:fmt_none .s:fg_red .s:bg_none +" *Special any special symbol +" SpecialChar special character in a constant +" Tag you can use CTRL-] on this +" Delimiter character that needs attention +" SpecialComment special things inside a comment +" Debug debugging statements + +exe "hi! Underlined" .s:fmt_none .s:fg_violet .s:bg_none +" *Underlined text that stands out, HTML links + +exe "hi! Ignore" .s:fmt_none .s:fg_none .s:bg_none +" *Ignore left blank, hidden |hl-Ignore| + +exe "hi! Error" .s:fmt_bold .s:fg_red .s:bg_none +" *Error any erroneous construct + +exe "hi! Todo" .s:fmt_bold .s:fg_magenta.s:bg_none +" *Todo anything that needs extra attention; mostly the +" keywords TODO FIXME and XXX +" +"}}} +" Extended highlighting "{{{ +" --------------------------------------------------------------------- +if (g:solarized_visibility=="high") + exe "hi! SpecialKey" .s:fmt_revr .s:fg_red .s:bg_none + exe "hi! NonText" .s:fmt_bold .s:fg_red .s:bg_none +elseif (g:solarized_visibility=="low") + exe "hi! SpecialKey" .s:fmt_bold .s:fg_base02 .s:bg_none + exe "hi! NonText" .s:fmt_bold .s:fg_base02 .s:bg_none +else + exe "hi! SpecialKey" .s:fmt_bold .s:fg_base00 .s:bg_base02 + exe "hi! NonText" .s:fmt_bold .s:fg_base00 .s:bg_none +endif +exe "hi! StatusLine" .s:fmt_none .s:fg_base1 .s:bg_base02 .s:fmt_revbb +exe "hi! StatusLineNC" .s:fmt_none .s:fg_base00 .s:bg_base02 .s:fmt_revbb +exe "hi! Visual" .s:fmt_none .s:fg_base01 .s:bg_base03 .s:fmt_revbb +exe "hi! Directory" .s:fmt_none .s:fg_blue .s:bg_none +exe "hi! ErrorMsg" .s:fmt_revr .s:fg_red .s:bg_none +exe "hi! IncSearch" .s:fmt_stnd .s:fg_orange .s:bg_none +exe "hi! Search" .s:fmt_revr .s:fg_yellow .s:bg_none +exe "hi! MoreMsg" .s:fmt_none .s:fg_blue .s:bg_none +exe "hi! ModeMsg" .s:fmt_none .s:fg_blue .s:bg_none +exe "hi! LineNr" .s:fmt_none .s:fg_base01 .s:bg_base02 +exe "hi! Question" .s:fmt_bold .s:fg_cyan .s:bg_none +if ( has("gui_running") || &t_Co > 8 ) + exe "hi! VertSplit" .s:fmt_none .s:fg_base00 .s:bg_base00 +else + exe "hi! VertSplit" .s:fmt_revbb .s:fg_base00 .s:bg_base02 +endif +exe "hi! Title" .s:fmt_bold .s:fg_orange .s:bg_none +exe "hi! VisualNOS" .s:fmt_stnd .s:fg_none .s:bg_base02 .s:fmt_revbb +exe "hi! WarningMsg" .s:fmt_bold .s:fg_red .s:bg_none +exe "hi! WildMenu" .s:fmt_none .s:fg_base2 .s:bg_base02 .s:fmt_revbb +exe "hi! Folded" .s:fmt_undb .s:fg_base0 .s:bg_base02 .s:sp_base03 +exe "hi! FoldColumn" .s:fmt_none .s:fg_base0 .s:bg_base02 +if (g:solarized_diffmode=="high") +exe "hi! DiffAdd" .s:fmt_revr .s:fg_green .s:bg_none +exe "hi! DiffChange" .s:fmt_revr .s:fg_yellow .s:bg_none +exe "hi! DiffDelete" .s:fmt_revr .s:fg_red .s:bg_none +exe "hi! DiffText" .s:fmt_revr .s:fg_blue .s:bg_none +elseif (g:solarized_diffmode=="low") +exe "hi! DiffAdd" .s:fmt_undr .s:fg_green .s:bg_none .s:sp_green +exe "hi! DiffChange" .s:fmt_undr .s:fg_yellow .s:bg_none .s:sp_yellow +exe "hi! DiffDelete" .s:fmt_bold .s:fg_red .s:bg_none +exe "hi! DiffText" .s:fmt_undr .s:fg_blue .s:bg_none .s:sp_blue +else " normal + if has("gui_running") +exe "hi! DiffAdd" .s:fmt_bold .s:fg_green .s:bg_base02 .s:sp_green +exe "hi! DiffChange" .s:fmt_bold .s:fg_yellow .s:bg_base02 .s:sp_yellow +exe "hi! DiffDelete" .s:fmt_bold .s:fg_red .s:bg_base02 +exe "hi! DiffText" .s:fmt_bold .s:fg_blue .s:bg_base02 .s:sp_blue + else +exe "hi! DiffAdd" .s:fmt_none .s:fg_green .s:bg_base02 .s:sp_green +exe "hi! DiffChange" .s:fmt_none .s:fg_yellow .s:bg_base02 .s:sp_yellow +exe "hi! DiffDelete" .s:fmt_none .s:fg_red .s:bg_base02 +exe "hi! DiffText" .s:fmt_none .s:fg_blue .s:bg_base02 .s:sp_blue + endif +endif +exe "hi! SignColumn" .s:fmt_none .s:fg_base0 +exe "hi! Conceal" .s:fmt_none .s:fg_blue .s:bg_none +exe "hi! SpellBad" .s:fmt_curl .s:fg_none .s:bg_none .s:sp_red +exe "hi! SpellCap" .s:fmt_curl .s:fg_none .s:bg_none .s:sp_violet +exe "hi! SpellRare" .s:fmt_curl .s:fg_none .s:bg_none .s:sp_cyan +exe "hi! SpellLocal" .s:fmt_curl .s:fg_none .s:bg_none .s:sp_yellow +exe "hi! Pmenu" .s:fmt_none .s:fg_base0 .s:bg_base02 .s:fmt_revbb +exe "hi! PmenuSel" .s:fmt_none .s:fg_base01 .s:bg_base2 .s:fmt_revbb +exe "hi! PmenuSbar" .s:fmt_none .s:fg_base2 .s:bg_base0 .s:fmt_revbb +exe "hi! PmenuThumb" .s:fmt_none .s:fg_base0 .s:bg_base03 .s:fmt_revbb +exe "hi! TabLine" .s:fmt_undr .s:fg_base0 .s:bg_base02 .s:sp_base0 +exe "hi! TabLineFill" .s:fmt_undr .s:fg_base0 .s:bg_base02 .s:sp_base0 +exe "hi! TabLineSel" .s:fmt_undr .s:fg_base01 .s:bg_base2 .s:sp_base0 .s:fmt_revbbu +exe "hi! CursorColumn" .s:fmt_none .s:fg_none .s:bg_base02 +exe "hi! CursorLine" .s:fmt_uopt .s:fg_none .s:bg_base02 .s:sp_base1 +exe "hi! ColorColumn" .s:fmt_none .s:fg_none .s:bg_base02 +exe "hi! Cursor" .s:fmt_none .s:fg_base03 .s:bg_base0 +hi! link lCursor Cursor +exe "hi! MatchParen" .s:fmt_bold .s:fg_red .s:bg_base01 + +"}}} +" vim syntax highlighting "{{{ +" --------------------------------------------------------------------- +"exe "hi! vimLineComment" . s:fg_base01 .s:bg_none .s:fmt_ital +"hi! link vimComment Comment +"hi! link vimLineComment Comment +hi! link vimVar Identifier +hi! link vimFunc Function +hi! link vimUserFunc Function +hi! link helpSpecial Special +hi! link vimSet Normal +hi! link vimSetEqual Normal +exe "hi! vimCommentString" .s:fmt_none .s:fg_violet .s:bg_none +exe "hi! vimCommand" .s:fmt_none .s:fg_yellow .s:bg_none +exe "hi! vimCmdSep" .s:fmt_bold .s:fg_blue .s:bg_none +exe "hi! helpExample" .s:fmt_none .s:fg_base1 .s:bg_none +exe "hi! helpOption" .s:fmt_none .s:fg_cyan .s:bg_none +exe "hi! helpNote" .s:fmt_none .s:fg_magenta.s:bg_none +exe "hi! helpVim" .s:fmt_none .s:fg_magenta.s:bg_none +exe "hi! helpHyperTextJump" .s:fmt_undr .s:fg_blue .s:bg_none +exe "hi! helpHyperTextEntry".s:fmt_none .s:fg_green .s:bg_none +exe "hi! vimIsCommand" .s:fmt_none .s:fg_base00 .s:bg_none +exe "hi! vimSynMtchOpt" .s:fmt_none .s:fg_yellow .s:bg_none +exe "hi! vimSynType" .s:fmt_none .s:fg_cyan .s:bg_none +exe "hi! vimHiLink" .s:fmt_none .s:fg_blue .s:bg_none +exe "hi! vimHiGroup" .s:fmt_none .s:fg_blue .s:bg_none +exe "hi! vimGroup" .s:fmt_undb .s:fg_blue .s:bg_none +"}}} +" diff highlighting "{{{ +" --------------------------------------------------------------------- +hi! link diffAdded Statement +hi! link diffLine Identifier +"}}} +" git & gitcommit highlighting "{{{ +"git +"exe "hi! gitDateHeader" +"exe "hi! gitIdentityHeader" +"exe "hi! gitIdentityKeyword" +"exe "hi! gitNotesHeader" +"exe "hi! gitReflogHeader" +"exe "hi! gitKeyword" +"exe "hi! gitIdentity" +"exe "hi! gitEmailDelimiter" +"exe "hi! gitEmail" +"exe "hi! gitDate" +"exe "hi! gitMode" +"exe "hi! gitHashAbbrev" +"exe "hi! gitHash" +"exe "hi! gitReflogMiddle" +"exe "hi! gitReference" +"exe "hi! gitStage" +"exe "hi! gitType" +"exe "hi! gitDiffAdded" +"exe "hi! gitDiffRemoved" +"gitcommit +"exe "hi! gitcommitSummary" +exe "hi! gitcommitComment" .s:fmt_ital .s:fg_base01 .s:bg_none +hi! link gitcommitUntracked gitcommitComment +hi! link gitcommitDiscarded gitcommitComment +hi! link gitcommitSelected gitcommitComment +exe "hi! gitcommitUnmerged" .s:fmt_bold .s:fg_green .s:bg_none +exe "hi! gitcommitOnBranch" .s:fmt_bold .s:fg_base01 .s:bg_none +exe "hi! gitcommitBranch" .s:fmt_bold .s:fg_magenta .s:bg_none +hi! link gitcommitNoBranch gitcommitBranch +exe "hi! gitcommitDiscardedType".s:fmt_none .s:fg_red .s:bg_none +exe "hi! gitcommitSelectedType" .s:fmt_none .s:fg_green .s:bg_none +"exe "hi! gitcommitUnmergedType" +"exe "hi! gitcommitType" +"exe "hi! gitcommitNoChanges" +"exe "hi! gitcommitHeader" +exe "hi! gitcommitHeader" .s:fmt_none .s:fg_base01 .s:bg_none +exe "hi! gitcommitUntrackedFile".s:fmt_bold .s:fg_cyan .s:bg_none +exe "hi! gitcommitDiscardedFile".s:fmt_bold .s:fg_red .s:bg_none +exe "hi! gitcommitSelectedFile" .s:fmt_bold .s:fg_green .s:bg_none +exe "hi! gitcommitUnmergedFile" .s:fmt_bold .s:fg_yellow .s:bg_none +exe "hi! gitcommitFile" .s:fmt_bold .s:fg_base0 .s:bg_none +hi! link gitcommitDiscardedArrow gitcommitDiscardedFile +hi! link gitcommitSelectedArrow gitcommitSelectedFile +hi! link gitcommitUnmergedArrow gitcommitUnmergedFile +"exe "hi! gitcommitArrow" +"exe "hi! gitcommitOverflow" +"exe "hi! gitcommitBlank" +" }}} +" html highlighting "{{{ +" --------------------------------------------------------------------- +exe "hi! htmlTag" .s:fmt_none .s:fg_base01 .s:bg_none +exe "hi! htmlEndTag" .s:fmt_none .s:fg_base01 .s:bg_none +exe "hi! htmlTagN" .s:fmt_bold .s:fg_base1 .s:bg_none +exe "hi! htmlTagName" .s:fmt_bold .s:fg_blue .s:bg_none +exe "hi! htmlSpecialTagName".s:fmt_ital .s:fg_blue .s:bg_none +exe "hi! htmlArg" .s:fmt_none .s:fg_base00 .s:bg_none +exe "hi! javaScript" .s:fmt_none .s:fg_yellow .s:bg_none +"}}} +" perl highlighting "{{{ +" --------------------------------------------------------------------- +exe "hi! perlHereDoc" . s:fg_base1 .s:bg_back .s:fmt_none +exe "hi! perlVarPlain" . s:fg_yellow .s:bg_back .s:fmt_none +exe "hi! perlStatementFileDesc". s:fg_cyan.s:bg_back.s:fmt_none + +"}}} +" tex highlighting "{{{ +" --------------------------------------------------------------------- +exe "hi! texStatement" . s:fg_cyan .s:bg_back .s:fmt_none +exe "hi! texMathZoneX" . s:fg_yellow .s:bg_back .s:fmt_none +exe "hi! texMathMatcher" . s:fg_yellow .s:bg_back .s:fmt_none +exe "hi! texMathMatcher" . s:fg_yellow .s:bg_back .s:fmt_none +exe "hi! texRefLabel" . s:fg_yellow .s:bg_back .s:fmt_none +"}}} +" ruby highlighting "{{{ +" --------------------------------------------------------------------- +exe "hi! rubyDefine" . s:fg_base1 .s:bg_back .s:fmt_bold +"rubyInclude +"rubySharpBang +"rubyAccess +"rubyPredefinedVariable +"rubyBoolean +"rubyClassVariable +"rubyBeginEnd +"rubyRepeatModifier +"hi! link rubyArrayDelimiter Special " [ , , ] +"rubyCurlyBlock { , , } + +"hi! link rubyClass Keyword +"hi! link rubyModule Keyword +"hi! link rubyKeyword Keyword +"hi! link rubyOperator Operator +"hi! link rubyIdentifier Identifier +"hi! link rubyInstanceVariable Identifier +"hi! link rubyGlobalVariable Identifier +"hi! link rubyClassVariable Identifier +"hi! link rubyConstant Type +"}}} +" haskell syntax highlighting"{{{ +" --------------------------------------------------------------------- +" For use with syntax/haskell.vim : Haskell Syntax File +" http://www.vim.org/scripts/script.php?script_id=3034 +" See also Steffen Siering's github repository: +" http://github.com/urso/dotrc/blob/master/vim/syntax/haskell.vim +" --------------------------------------------------------------------- +" +" Treat True and False specially, see the plugin referenced above +let hs_highlight_boolean=1 +" highlight delims, see the plugin referenced above +let hs_highlight_delimiters=1 + +exe "hi! cPreCondit". s:fg_orange.s:bg_none .s:fmt_none + +exe "hi! VarId" . s:fg_blue .s:bg_none .s:fmt_none +exe "hi! ConId" . s:fg_yellow .s:bg_none .s:fmt_none +exe "hi! hsImport" . s:fg_magenta.s:bg_none .s:fmt_none +exe "hi! hsString" . s:fg_base00 .s:bg_none .s:fmt_none + +exe "hi! hsStructure" . s:fg_cyan .s:bg_none .s:fmt_none +exe "hi! hs_hlFunctionName" . s:fg_blue .s:bg_none +exe "hi! hsStatement" . s:fg_cyan .s:bg_none .s:fmt_none +exe "hi! hsImportLabel" . s:fg_cyan .s:bg_none .s:fmt_none +exe "hi! hs_OpFunctionName" . s:fg_yellow .s:bg_none .s:fmt_none +exe "hi! hs_DeclareFunction" . s:fg_orange .s:bg_none .s:fmt_none +exe "hi! hsVarSym" . s:fg_cyan .s:bg_none .s:fmt_none +exe "hi! hsType" . s:fg_yellow .s:bg_none .s:fmt_none +exe "hi! hsTypedef" . s:fg_cyan .s:bg_none .s:fmt_none +exe "hi! hsModuleName" . s:fg_green .s:bg_none .s:fmt_undr +exe "hi! hsModuleStartLabel" . s:fg_magenta.s:bg_none .s:fmt_none +hi! link hsImportParams Delimiter +hi! link hsDelimTypeExport Delimiter +hi! link hsModuleStartLabel hsStructure +hi! link hsModuleWhereLabel hsModuleStartLabel + +" following is for the haskell-conceal plugin +" the first two items don't have an impact, but better safe +exe "hi! hsNiceOperator" . s:fg_cyan .s:bg_none .s:fmt_none +exe "hi! hsniceoperator" . s:fg_cyan .s:bg_none .s:fmt_none + +"}}} +" pandoc markdown syntax highlighting "{{{ +" --------------------------------------------------------------------- + +"PandocHiLink pandocNormalBlock +exe "hi! pandocTitleBlock" .s:fg_blue .s:bg_none .s:fmt_none +exe "hi! pandocTitleBlockTitle" .s:fg_blue .s:bg_none .s:fmt_bold +exe "hi! pandocTitleComment" .s:fg_blue .s:bg_none .s:fmt_bold +exe "hi! pandocComment" .s:fg_base01 .s:bg_none .s:fmt_ital +exe "hi! pandocVerbatimBlock" .s:fg_yellow .s:bg_none .s:fmt_none +hi! link pandocVerbatimBlockDeep pandocVerbatimBlock +hi! link pandocCodeBlock pandocVerbatimBlock +hi! link pandocCodeBlockDelim pandocVerbatimBlock +exe "hi! pandocBlockQuote" .s:fg_blue .s:bg_none .s:fmt_none +exe "hi! pandocBlockQuoteLeader1" .s:fg_blue .s:bg_none .s:fmt_none +exe "hi! pandocBlockQuoteLeader2" .s:fg_cyan .s:bg_none .s:fmt_none +exe "hi! pandocBlockQuoteLeader3" .s:fg_yellow .s:bg_none .s:fmt_none +exe "hi! pandocBlockQuoteLeader4" .s:fg_red .s:bg_none .s:fmt_none +exe "hi! pandocBlockQuoteLeader5" .s:fg_base0 .s:bg_none .s:fmt_none +exe "hi! pandocBlockQuoteLeader6" .s:fg_base01 .s:bg_none .s:fmt_none +exe "hi! pandocListMarker" .s:fg_magenta.s:bg_none .s:fmt_none +exe "hi! pandocListReference" .s:fg_magenta.s:bg_none .s:fmt_undr + +" Definitions +" --------------------------------------------------------------------- +let s:fg_pdef = s:fg_violet +exe "hi! pandocDefinitionBlock" .s:fg_pdef .s:bg_none .s:fmt_none +exe "hi! pandocDefinitionTerm" .s:fg_pdef .s:bg_none .s:fmt_stnd +exe "hi! pandocDefinitionIndctr" .s:fg_pdef .s:bg_none .s:fmt_bold +exe "hi! pandocEmphasisDefinition" .s:fg_pdef .s:bg_none .s:fmt_ital +exe "hi! pandocEmphasisNestedDefinition" .s:fg_pdef .s:bg_none .s:fmt_bldi +exe "hi! pandocStrongEmphasisDefinition" .s:fg_pdef .s:bg_none .s:fmt_bold +exe "hi! pandocStrongEmphasisNestedDefinition" .s:fg_pdef.s:bg_none.s:fmt_bldi +exe "hi! pandocStrongEmphasisEmphasisDefinition" .s:fg_pdef.s:bg_none.s:fmt_bldi +exe "hi! pandocStrikeoutDefinition" .s:fg_pdef .s:bg_none .s:fmt_revr +exe "hi! pandocVerbatimInlineDefinition" .s:fg_pdef .s:bg_none .s:fmt_none +exe "hi! pandocSuperscriptDefinition" .s:fg_pdef .s:bg_none .s:fmt_none +exe "hi! pandocSubscriptDefinition" .s:fg_pdef .s:bg_none .s:fmt_none + +" Tables +" --------------------------------------------------------------------- +let s:fg_ptable = s:fg_blue +exe "hi! pandocTable" .s:fg_ptable.s:bg_none .s:fmt_none +exe "hi! pandocTableStructure" .s:fg_ptable.s:bg_none .s:fmt_none +hi! link pandocTableStructureTop pandocTableStructre +hi! link pandocTableStructureEnd pandocTableStructre +exe "hi! pandocTableZebraLight" .s:fg_ptable.s:bg_base03.s:fmt_none +exe "hi! pandocTableZebraDark" .s:fg_ptable.s:bg_base02.s:fmt_none +exe "hi! pandocEmphasisTable" .s:fg_ptable.s:bg_none .s:fmt_ital +exe "hi! pandocEmphasisNestedTable" .s:fg_ptable.s:bg_none .s:fmt_bldi +exe "hi! pandocStrongEmphasisTable" .s:fg_ptable.s:bg_none .s:fmt_bold +exe "hi! pandocStrongEmphasisNestedTable" .s:fg_ptable.s:bg_none .s:fmt_bldi +exe "hi! pandocStrongEmphasisEmphasisTable" .s:fg_ptable.s:bg_none .s:fmt_bldi +exe "hi! pandocStrikeoutTable" .s:fg_ptable.s:bg_none .s:fmt_revr +exe "hi! pandocVerbatimInlineTable" .s:fg_ptable.s:bg_none .s:fmt_none +exe "hi! pandocSuperscriptTable" .s:fg_ptable.s:bg_none .s:fmt_none +exe "hi! pandocSubscriptTable" .s:fg_ptable.s:bg_none .s:fmt_none + +" Headings +" --------------------------------------------------------------------- +let s:fg_phead = s:fg_orange +exe "hi! pandocHeading" .s:fg_phead .s:bg_none.s:fmt_bold +exe "hi! pandocHeadingMarker" .s:fg_yellow.s:bg_none.s:fmt_bold +exe "hi! pandocEmphasisHeading" .s:fg_phead .s:bg_none.s:fmt_bldi +exe "hi! pandocEmphasisNestedHeading" .s:fg_phead .s:bg_none.s:fmt_bldi +exe "hi! pandocStrongEmphasisHeading" .s:fg_phead .s:bg_none.s:fmt_bold +exe "hi! pandocStrongEmphasisNestedHeading" .s:fg_phead .s:bg_none.s:fmt_bldi +exe "hi! pandocStrongEmphasisEmphasisHeading".s:fg_phead .s:bg_none.s:fmt_bldi +exe "hi! pandocStrikeoutHeading" .s:fg_phead .s:bg_none.s:fmt_revr +exe "hi! pandocVerbatimInlineHeading" .s:fg_phead .s:bg_none.s:fmt_bold +exe "hi! pandocSuperscriptHeading" .s:fg_phead .s:bg_none.s:fmt_bold +exe "hi! pandocSubscriptHeading" .s:fg_phead .s:bg_none.s:fmt_bold + +" Links +" --------------------------------------------------------------------- +exe "hi! pandocLinkDelim" .s:fg_base01 .s:bg_none .s:fmt_none +exe "hi! pandocLinkLabel" .s:fg_blue .s:bg_none .s:fmt_undr +exe "hi! pandocLinkText" .s:fg_blue .s:bg_none .s:fmt_undb +exe "hi! pandocLinkURL" .s:fg_base00 .s:bg_none .s:fmt_undr +exe "hi! pandocLinkTitle" .s:fg_base00 .s:bg_none .s:fmt_undi +exe "hi! pandocLinkTitleDelim" .s:fg_base01 .s:bg_none .s:fmt_undi .s:sp_base00 +exe "hi! pandocLinkDefinition" .s:fg_cyan .s:bg_none .s:fmt_undr .s:sp_base00 +exe "hi! pandocLinkDefinitionID" .s:fg_blue .s:bg_none .s:fmt_bold +exe "hi! pandocImageCaption" .s:fg_violet .s:bg_none .s:fmt_undb +exe "hi! pandocFootnoteLink" .s:fg_green .s:bg_none .s:fmt_undr +exe "hi! pandocFootnoteDefLink" .s:fg_green .s:bg_none .s:fmt_bold +exe "hi! pandocFootnoteInline" .s:fg_green .s:bg_none .s:fmt_undb +exe "hi! pandocFootnote" .s:fg_green .s:bg_none .s:fmt_none +exe "hi! pandocCitationDelim" .s:fg_magenta.s:bg_none .s:fmt_none +exe "hi! pandocCitation" .s:fg_magenta.s:bg_none .s:fmt_none +exe "hi! pandocCitationID" .s:fg_magenta.s:bg_none .s:fmt_undr +exe "hi! pandocCitationRef" .s:fg_magenta.s:bg_none .s:fmt_none + +" Main Styles +" --------------------------------------------------------------------- +exe "hi! pandocStyleDelim" .s:fg_base01 .s:bg_none .s:fmt_none +exe "hi! pandocEmphasis" .s:fg_base0 .s:bg_none .s:fmt_ital +exe "hi! pandocEmphasisNested" .s:fg_base0 .s:bg_none .s:fmt_bldi +exe "hi! pandocStrongEmphasis" .s:fg_base0 .s:bg_none .s:fmt_bold +exe "hi! pandocStrongEmphasisNested" .s:fg_base0 .s:bg_none .s:fmt_bldi +exe "hi! pandocStrongEmphasisEmphasis" .s:fg_base0 .s:bg_none .s:fmt_bldi +exe "hi! pandocStrikeout" .s:fg_base01 .s:bg_none .s:fmt_revr +exe "hi! pandocVerbatimInline" .s:fg_yellow .s:bg_none .s:fmt_none +exe "hi! pandocSuperscript" .s:fg_violet .s:bg_none .s:fmt_none +exe "hi! pandocSubscript" .s:fg_violet .s:bg_none .s:fmt_none + +exe "hi! pandocRule" .s:fg_blue .s:bg_none .s:fmt_bold +exe "hi! pandocRuleLine" .s:fg_blue .s:bg_none .s:fmt_bold +exe "hi! pandocEscapePair" .s:fg_red .s:bg_none .s:fmt_bold +exe "hi! pandocCitationRef" .s:fg_magenta.s:bg_none .s:fmt_none +exe "hi! pandocNonBreakingSpace" . s:fg_red .s:bg_none .s:fmt_revr +hi! link pandocEscapedCharacter pandocEscapePair +hi! link pandocLineBreak pandocEscapePair + +" Embedded Code +" --------------------------------------------------------------------- +exe "hi! pandocMetadataDelim" .s:fg_base01 .s:bg_none .s:fmt_none +exe "hi! pandocMetadata" .s:fg_blue .s:bg_none .s:fmt_none +exe "hi! pandocMetadataKey" .s:fg_blue .s:bg_none .s:fmt_none +exe "hi! pandocMetadata" .s:fg_blue .s:bg_none .s:fmt_bold +hi! link pandocMetadataTitle pandocMetadata + +"}}} +" Utility autocommand "{{{ +" --------------------------------------------------------------------- +" In cases where Solarized is initialized inside a terminal vim session and +" then transferred to a gui session via the command `:gui`, the gui vim process +" does not re-read the colorscheme (or .vimrc for that matter) so any `has_gui` +" related code that sets gui specific values isn't executed. +" +" Currently, Solarized sets only the cterm or gui values for the colorscheme +" depending on gui or terminal mode. It's possible that, if the following +" autocommand method is deemed excessively poor form, that approach will be +" used again and the autocommand below will be dropped. +" +" However it seems relatively benign in this case to include the autocommand +" here. It fires only in cases where vim is transferring from terminal to gui +" mode (detected with the script scope s:vmode variable). It also allows for +" other potential terminal customizations that might make gui mode suboptimal. +" +autocmd GUIEnter * if (s:vmode != "gui") | exe "colorscheme " . g:colors_name | endif +"}}} +" Highlight Trailing Space {{{ +" Experimental: Different highlight when on cursorline +function! s:SolarizedHiTrail() + if g:solarized_hitrail==0 + hi! clear solarizedTrailingSpace + else + syn match solarizedTrailingSpace "\s*$" + exe "hi! solarizedTrailingSpace " .s:fmt_undr .s:fg_red .s:bg_none .s:sp_red + endif +endfunction +augroup SolarizedHiTrail + autocmd! + if g:solarized_hitrail==1 + autocmd! Syntax * call s:SolarizedHiTrail() + autocmd! ColorScheme * if g:colors_name == "solarized" | call s:SolarizedHiTrail() | else | augroup! s:SolarizedHiTrail | endif + endif +augroup END +" }}} +" Menus "{{{ +" --------------------------------------------------------------------- +" Turn off Solarized menu by including the following assignment in your .vimrc: +" +" let g:solarized_menu=0 + +function! s:SolarizedOptions() + new "new buffer + setf vim "vim filetype + let failed = append(0, s:defaults_list) + let failed = append(0, s:colorscheme_list) + let failed = append(0, s:options_list) + let failed = append(0, s:lazycat_list) + 0 "jump back to the top +endfunction +if !exists(":SolarizedOptions") + command SolarizedOptions :call s:SolarizedOptions() +endif + +function! SolarizedMenu() + if exists("g:loaded_solarized_menu") + try + silent! aunmenu Solarized + endtry + endif + let g:loaded_solarized_menu = 1 + + if g:colors_name == "solarized" && g:solarized_menu != 0 + + amenu &Solarized.&Contrast.&Low\ Contrast :let g:solarized_contrast="low" \| colorscheme solarized + amenu &Solarized.&Contrast.&Normal\ Contrast :let g:solarized_contrast="normal" \| colorscheme solarized + amenu &Solarized.&Contrast.&High\ Contrast :let g:solarized_contrast="high" \| colorscheme solarized + an &Solarized.&Contrast.-sep- + amenu &Solarized.&Contrast.&Help:\ Contrast :help 'solarized_contrast' + + amenu &Solarized.&Visibility.&Low\ Visibility :let g:solarized_visibility="low" \| colorscheme solarized + amenu &Solarized.&Visibility.&Normal\ Visibility :let g:solarized_visibility="normal" \| colorscheme solarized + amenu &Solarized.&Visibility.&High\ Visibility :let g:solarized_visibility="high" \| colorscheme solarized + an &Solarized.&Visibility.-sep- + amenu &Solarized.&Visibility.&Help:\ Visibility :help 'solarized_visibility' + + amenu &Solarized.&Background.&Toggle\ Background :ToggleBG + amenu &Solarized.&Background.&Dark\ Background :set background=dark \| colorscheme solarized + amenu &Solarized.&Background.&Light\ Background :set background=light \| colorscheme solarized + an &Solarized.&Background.-sep- + amenu &Solarized.&Background.&Help:\ ToggleBG :help togglebg + + if g:solarized_bold==0 | let l:boldswitch="On" | else | let l:boldswitch="Off" | endif + exe "amenu &Solarized.&Styling.&Turn\\ Bold\\ ".l:boldswitch." :let g:solarized_bold=(abs(g:solarized_bold-1)) \\| colorscheme solarized" + if g:solarized_italic==0 | let l:italicswitch="On" | else | let l:italicswitch="Off" | endif + exe "amenu &Solarized.&Styling.&Turn\\ Italic\\ ".l:italicswitch." :let g:solarized_italic=(abs(g:solarized_italic-1)) \\| colorscheme solarized" + if g:solarized_underline==0 | let l:underlineswitch="On" | else | let l:underlineswitch="Off" | endif + exe "amenu &Solarized.&Styling.&Turn\\ Underline\\ ".l:underlineswitch." :let g:solarized_underline=(abs(g:solarized_underline-1)) \\| colorscheme solarized" + + amenu &Solarized.&Diff\ Mode.&Low\ Diff\ Mode :let g:solarized_diffmode="low" \| colorscheme solarized + amenu &Solarized.&Diff\ Mode.&Normal\ Diff\ Mode :let g:solarized_diffmode="normal" \| colorscheme solarized + amenu &Solarized.&Diff\ Mode.&High\ Diff\ Mode :let g:solarized_diffmode="high" \| colorscheme solarized + + if g:solarized_hitrail==0 | let l:hitrailswitch="On" | else | let l:hitrailswitch="Off" | endif + exe "amenu &Solarized.&Experimental.&Turn\\ Highlight\\ Trailing\\ Spaces\\ ".l:hitrailswitch." :let g:solarized_hitrail=(abs(g:solarized_hitrail-1)) \\| colorscheme solarized" + an &Solarized.&Experimental.-sep- + amenu &Solarized.&Experimental.&Help:\ HiTrail :help 'solarized_hitrail' + + an &Solarized.-sep1- + + amenu &Solarized.&Autogenerate\ options :SolarizedOptions + + an &Solarized.-sep2- + + amenu &Solarized.&Help.&Solarized\ Help :help solarized + amenu &Solarized.&Help.&Toggle\ Background\ Help :help togglebg + amenu &Solarized.&Help.&Removing\ This\ Menu :help solarized-menu + + an 9999.77 &Help.&Solarized\ Colorscheme :help solarized + an 9999.78 &Help.&Toggle\ Background :help togglebg + an 9999.79 &Help.-sep3- + + endif +endfunction + +autocmd ColorScheme * if g:colors_name != "solarized" | silent! aunmenu Solarized | else | call SolarizedMenu() | endif + +"}}} +" License "{{{ +" --------------------------------------------------------------------- +" +" Copyright (c) 2011 Ethan Schoonover +" +" 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. +" +" vim:foldmethod=marker:foldlevel=0 +"}}} diff --git a/vimrc b/vimrc index 2fdab9a..bba78ae 100644 --- a/vimrc +++ b/vimrc @@ -57,7 +57,7 @@ endif " let g:molokai_original = 1 " colorscheme molokai set background=light -colorscheme one +colorscheme solarized " Map let mapleader = "_"