From 154e5573395fd37e03b2fcf0c024a075749ee1b7 Mon Sep 17 00:00:00 2001 From: Syed Daanish Date: Sat, 31 Jan 2026 23:23:08 +0000 Subject: [PATCH] Fix memory leaks --- Makefile | 2 +- README.md | 5 +- include/scripting/decl.h | 1 + include/scripting/libcrib.rb | 8 + include/scripting/ruby_compiled.h | 672 +++++++++++++++--------------- include/syntax/decl.h | 6 +- include/syntax/langs.h | 7 + samples/ruby.rb | 8 +- src/editor/indents.cc | 15 +- src/scripting/process.cc | 89 +++- 10 files changed, 440 insertions(+), 373 deletions(-) diff --git a/Makefile b/Makefile index bc7c0bb..409014f 100644 --- a/Makefile +++ b/Makefile @@ -20,8 +20,8 @@ CFLAGS_DEBUG :=\ -O0 -fno-inline -gsplit-dwarf \ -g -fno-omit-frame-pointer \ -Wno-unused-command-line-argument \ - -fsanitize=address \ -I./include -I./libs -I/home/syed/main/crib/libs/mruby/include +# -fsanitize=address \ CFLAGS_RELEASE :=\ -static --target=x86_64-linux-musl \ diff --git a/README.md b/README.md index 7c326cf..97c5ba3 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,8 @@ Binary can be installed with the following command: curl https://syedm.dev/crib | sh ``` -It requires `libmagic` to be installed (most systems have it preinstalled).
Currently only for Linux.
-*Tested with arch linux and ubuntu*
+*Tested with arch linux and ubuntu and void*
## Building @@ -99,7 +98,7 @@ The following lsp's are added by default and can be installed anywhere in your ` #### Compiler -`clang++` should work fine but `c++23+` is required.
+`g++` or `clang++` should work fine but `c++20+` is required.
Can remove `ccache` if you want from the makefile.
#### Compliling diff --git a/include/scripting/decl.h b/include/scripting/decl.h index 18af6ea..c62e2bc 100644 --- a/include/scripting/decl.h +++ b/include/scripting/decl.h @@ -6,6 +6,7 @@ extern std::unordered_map> custom_highlighters; +extern mrb_state *mrb; struct BarLight { uint32_t start; diff --git a/include/scripting/libcrib.rb b/include/scripting/libcrib.rb index e0d26ec..f685ea5 100644 --- a/include/scripting/libcrib.rb +++ b/include/scripting/libcrib.rb @@ -286,6 +286,11 @@ module C extensions: ["sh"], filenames: ["bash_profile", "bashrc"], lsp: "bash-language-server" + }, + default: { + color: 0x6d8086, + symbol: "󰈚 ", + extensions: [] } } @theme = { @@ -347,6 +352,9 @@ module C mode_symbol = " " end lang_info = C.languages[info[:lang_name]] + if lang_info.nil? + lang_info = C.languages[:default] + end filename = File.basename(info[:filename]) starting = " #{mode_symbol} #{info[:mode].to_s.upcase}  #{lang_info[:symbol]}#{filename}" highlights = [] diff --git a/include/scripting/ruby_compiled.h b/include/scripting/ruby_compiled.h index d2f4413..f1f872d 100644 --- a/include/scripting/ruby_compiled.h +++ b/include/scripting/ruby_compiled.h @@ -1,8 +1,8 @@ #pragma once constexpr unsigned char _tmp___crib_precompiled_mrb[] = { - 0x52, 0x49, 0x54, 0x45, 0x30, 0x34, 0x30, 0x30, 0x00, 0x00, 0x24, 0x8f, + 0x52, 0x49, 0x54, 0x45, 0x30, 0x34, 0x30, 0x30, 0x00, 0x00, 0x24, 0xd5, 0x4d, 0x41, 0x54, 0x5a, 0x30, 0x30, 0x30, 0x30, 0x49, 0x52, 0x45, 0x50, - 0x00, 0x00, 0x23, 0x50, 0x30, 0x34, 0x30, 0x30, 0x00, 0x00, 0x00, 0x48, + 0x00, 0x00, 0x23, 0x96, 0x30, 0x34, 0x30, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x11, 0x01, 0x68, 0x01, 0x00, 0x69, 0x01, 0x00, 0x11, 0x01, 0x68, 0x01, 0x01, 0x69, 0x01, 0x01, 0x11, 0x01, 0x68, 0x01, 0x02, 0x69, 0x01, 0x02, @@ -233,8 +233,8 @@ constexpr unsigned char _tmp___crib_precompiled_mrb[] = { 0x01, 0x00, 0x03, 0x00, 0x00, 0x02, 0x6d, 0x30, 0x00, 0x00, 0x00, 0x07, 0x1b, 0x5d, 0x35, 0x32, 0x3b, 0x63, 0x3b, 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x02, 0x00, 0x04, 0x70, 0x61, 0x63, 0x6b, 0x00, 0x00, 0x05, - 0x70, 0x72, 0x69, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x0f, 0x88, 0x00, 0x01, - 0x00, 0x4c, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0x83, 0x5c, 0x01, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x0f, 0xac, 0x00, 0x01, + 0x00, 0x4c, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0x9e, 0x5c, 0x01, 0x00, 0x5c, 0x02, 0x01, 0x5c, 0x03, 0x02, 0x5c, 0x04, 0x03, 0x5c, 0x05, 0x04, 0x5c, 0x06, 0x05, 0x5c, 0x07, 0x06, 0x5c, 0x08, 0x07, 0x52, 0x02, 0x07, 0x5c, 0x03, 0x08, 0x52, 0x04, 0x00, 0x5c, 0x05, 0x09, 0x5c, 0x06, @@ -352,153 +352,156 @@ constexpr unsigned char _tmp___crib_precompiled_mrb[] = { 0x5a, 0x5e, 0x10, 0x44, 0x03, 0x5c, 0x45, 0x6a, 0x10, 0x46, 0x04, 0x5c, 0x47, 0x6b, 0x52, 0x47, 0x01, 0x10, 0x48, 0x25, 0x5c, 0x49, 0x6c, 0x5c, 0x4a, 0x6d, 0x52, 0x49, 0x02, 0x10, 0x4a, 0x05, 0x5c, 0x4b, 0x0b, 0x5e, - 0x42, 0x05, 0x5e, 0x01, 0x21, 0x1a, 0x01, 0x27, 0x10, 0x01, 0x28, 0x10, - 0x02, 0x29, 0x0f, 0x03, 0x00, 0xee, 0xee, 0xee, 0x5e, 0x02, 0x01, 0x10, - 0x03, 0x2a, 0x10, 0x04, 0x29, 0x0f, 0x05, 0x00, 0x7d, 0xcf, 0xff, 0x5e, - 0x04, 0x01, 0x10, 0x05, 0x2b, 0x10, 0x06, 0x29, 0x0f, 0x07, 0x00, 0xef, - 0x51, 0x68, 0x5e, 0x06, 0x01, 0x10, 0x07, 0x2c, 0x10, 0x08, 0x29, 0x0f, - 0x09, 0x00, 0xaa, 0xaa, 0xaa, 0x10, 0x0a, 0x2d, 0x13, 0x0b, 0x5e, 0x08, - 0x02, 0x10, 0x09, 0x2e, 0x10, 0x0a, 0x29, 0x0f, 0x0b, 0x00, 0xaa, 0xd9, - 0x4c, 0x5e, 0x0a, 0x01, 0x10, 0x0b, 0x2f, 0x10, 0x0c, 0x29, 0x0f, 0x0d, - 0x00, 0x7d, 0xcf, 0xff, 0x5e, 0x0c, 0x01, 0x10, 0x0d, 0x30, 0x10, 0x0e, - 0x29, 0x0f, 0x0f, 0x00, 0x7d, 0xcf, 0xff, 0x5e, 0x0e, 0x01, 0x10, 0x0f, - 0x31, 0x10, 0x10, 0x29, 0x0f, 0x11, 0x00, 0xd2, 0xa6, 0xff, 0x5e, 0x10, - 0x01, 0x10, 0x11, 0x32, 0x10, 0x12, 0x29, 0x0f, 0x13, 0x00, 0xe6, 0xc0, - 0x8a, 0x5e, 0x12, 0x01, 0x10, 0x13, 0x33, 0x10, 0x14, 0x29, 0x0f, 0x15, - 0x00, 0x7a, 0xe9, 0x3c, 0x5e, 0x14, 0x01, 0x10, 0x15, 0x34, 0x10, 0x16, - 0x29, 0x0f, 0x17, 0x00, 0xef, 0x51, 0x68, 0x5e, 0x16, 0x01, 0x10, 0x17, - 0x35, 0x10, 0x18, 0x29, 0x0f, 0x19, 0x00, 0xff, 0xaf, 0x70, 0x5e, 0x18, - 0x01, 0x10, 0x19, 0x36, 0x10, 0x1a, 0x29, 0x0f, 0x1b, 0x00, 0xff, 0x8f, - 0x40, 0x5e, 0x1a, 0x01, 0x10, 0x1b, 0x37, 0x10, 0x1c, 0x29, 0x0f, 0x1d, - 0x00, 0xf0, 0x71, 0x78, 0x5e, 0x1c, 0x01, 0x10, 0x1d, 0x38, 0x10, 0x1e, - 0x29, 0x0f, 0x1f, 0x00, 0xff, 0xff, 0xff, 0x10, 0x20, 0x2d, 0x13, 0x21, - 0x5e, 0x1e, 0x02, 0x10, 0x1f, 0x39, 0x10, 0x20, 0x29, 0x0f, 0x21, 0x00, - 0xff, 0xaf, 0x70, 0x5e, 0x20, 0x01, 0x10, 0x21, 0x3a, 0x10, 0x22, 0x29, - 0x0f, 0x23, 0x00, 0xf0, 0x71, 0x78, 0x5e, 0x22, 0x01, 0x10, 0x23, 0x3b, - 0x10, 0x24, 0x29, 0x0f, 0x25, 0x00, 0x7d, 0xcf, 0xff, 0x5e, 0x24, 0x01, - 0x10, 0x25, 0x3c, 0x10, 0x26, 0x29, 0x0f, 0x27, 0x00, 0x95, 0xe6, 0xcb, - 0x5e, 0x26, 0x01, 0x10, 0x27, 0x3d, 0x10, 0x28, 0x29, 0x0f, 0x29, 0x00, - 0xf0, 0x71, 0x78, 0x5e, 0x28, 0x01, 0x10, 0x29, 0x3e, 0x10, 0x2a, 0x29, - 0x0f, 0x2b, 0x00, 0x7d, 0xcf, 0xff, 0x5e, 0x2a, 0x01, 0x10, 0x2b, 0x3f, - 0x10, 0x2c, 0x29, 0x0f, 0x2d, 0x00, 0xff, 0x8f, 0x40, 0x5e, 0x2c, 0x01, - 0x10, 0x2d, 0x40, 0x10, 0x2e, 0x29, 0x0f, 0x2f, 0x00, 0xd2, 0xa6, 0xff, - 0x5e, 0x2e, 0x01, 0x10, 0x2f, 0x41, 0x10, 0x30, 0x29, 0x0f, 0x31, 0x00, - 0xd2, 0xa6, 0xff, 0x5e, 0x30, 0x01, 0x10, 0x31, 0x42, 0x10, 0x32, 0x29, - 0x0f, 0x33, 0x00, 0xff, 0xaf, 0xaf, 0x5e, 0x32, 0x01, 0x10, 0x33, 0x43, - 0x10, 0x34, 0x29, 0x0f, 0x35, 0x00, 0xff, 0xff, 0x00, 0x5e, 0x34, 0x01, - 0x10, 0x35, 0x44, 0x10, 0x36, 0x29, 0x0f, 0x37, 0x00, 0x0f, 0xff, 0x0f, - 0x5e, 0x36, 0x01, 0x10, 0x37, 0x45, 0x10, 0x38, 0x29, 0x0f, 0x39, 0x00, - 0xff, 0x0f, 0x0f, 0x5e, 0x38, 0x01, 0x5e, 0x01, 0x1c, 0x1a, 0x01, 0x46, - 0x10, 0x01, 0x47, 0x1a, 0x01, 0x48, 0x5e, 0x01, 0x00, 0x1a, 0x01, 0x49, - 0x5e, 0x01, 0x00, 0x1a, 0x01, 0x4a, 0x5e, 0x01, 0x00, 0x1a, 0x01, 0x4b, - 0x11, 0x01, 0x1a, 0x01, 0x4c, 0x11, 0x01, 0x1a, 0x01, 0x4d, 0x62, 0x02, - 0x00, 0x31, 0x01, 0x4e, 0x00, 0x1a, 0x01, 0x4f, 0x62, 0x02, 0x01, 0x31, - 0x01, 0x4e, 0x00, 0x1a, 0x01, 0x50, 0x62, 0x02, 0x02, 0x31, 0x01, 0x4e, - 0x00, 0x1a, 0x01, 0x51, 0x12, 0x01, 0x6f, 0x01, 0x69, 0x01, 0x03, 0x3d, - 0x01, 0x00, 0x6e, 0x00, 0x00, 0x06, 0x63, 0x6c, 0x61, 0x6e, 0x67, 0x64, - 0x00, 0x00, 0x00, 0x12, 0x2d, 0x2d, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, - 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x00, 0x00, - 0x00, 0x0c, 0x2d, 0x2d, 0x63, 0x6c, 0x61, 0x6e, 0x67, 0x2d, 0x74, 0x69, - 0x64, 0x79, 0x00, 0x00, 0x00, 0x1b, 0x2d, 0x2d, 0x63, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x73, 0x74, 0x79, 0x6c, 0x65, - 0x3d, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x00, 0x00, 0x00, - 0x18, 0x2d, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2d, 0x69, 0x6e, - 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x6e, 0x65, 0x76, 0x65, - 0x72, 0x00, 0x00, 0x00, 0x14, 0x2d, 0x2d, 0x70, 0x63, 0x68, 0x2d, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x3d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, - 0x79, 0x00, 0x00, 0x00, 0x12, 0x2d, 0x2d, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x2d, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x3d, 0x35, 0x30, 0x00, - 0x00, 0x00, 0x0b, 0x2d, 0x2d, 0x6c, 0x6f, 0x67, 0x3d, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x00, 0x00, 0x00, 0x08, 0x72, 0x75, 0x62, 0x79, 0x2d, 0x6c, - 0x73, 0x70, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x6f, 0x6c, 0x61, 0x72, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x00, 0x00, 0x00, 0x05, 0x73, 0x74, 0x64, 0x69, - 0x6f, 0x00, 0x00, 0x00, 0x14, 0x62, 0x61, 0x73, 0x68, 0x2d, 0x6c, 0x61, - 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x00, 0x00, 0x00, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x00, 0x00, - 0x00, 0x1a, 0x76, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x2d, 0x63, 0x73, 0x73, + 0x42, 0x05, 0x10, 0x43, 0x27, 0x10, 0x44, 0x02, 0x0f, 0x45, 0x00, 0x6d, + 0x80, 0x86, 0x10, 0x46, 0x03, 0x5c, 0x47, 0x6e, 0x10, 0x48, 0x04, 0x52, + 0x49, 0x00, 0x5e, 0x44, 0x03, 0x5e, 0x01, 0x22, 0x1a, 0x01, 0x28, 0x10, + 0x01, 0x27, 0x10, 0x02, 0x29, 0x0f, 0x03, 0x00, 0xee, 0xee, 0xee, 0x5e, + 0x02, 0x01, 0x10, 0x03, 0x2a, 0x10, 0x04, 0x29, 0x0f, 0x05, 0x00, 0x7d, + 0xcf, 0xff, 0x5e, 0x04, 0x01, 0x10, 0x05, 0x2b, 0x10, 0x06, 0x29, 0x0f, + 0x07, 0x00, 0xef, 0x51, 0x68, 0x5e, 0x06, 0x01, 0x10, 0x07, 0x2c, 0x10, + 0x08, 0x29, 0x0f, 0x09, 0x00, 0xaa, 0xaa, 0xaa, 0x10, 0x0a, 0x2d, 0x13, + 0x0b, 0x5e, 0x08, 0x02, 0x10, 0x09, 0x2e, 0x10, 0x0a, 0x29, 0x0f, 0x0b, + 0x00, 0xaa, 0xd9, 0x4c, 0x5e, 0x0a, 0x01, 0x10, 0x0b, 0x2f, 0x10, 0x0c, + 0x29, 0x0f, 0x0d, 0x00, 0x7d, 0xcf, 0xff, 0x5e, 0x0c, 0x01, 0x10, 0x0d, + 0x30, 0x10, 0x0e, 0x29, 0x0f, 0x0f, 0x00, 0x7d, 0xcf, 0xff, 0x5e, 0x0e, + 0x01, 0x10, 0x0f, 0x31, 0x10, 0x10, 0x29, 0x0f, 0x11, 0x00, 0xd2, 0xa6, + 0xff, 0x5e, 0x10, 0x01, 0x10, 0x11, 0x32, 0x10, 0x12, 0x29, 0x0f, 0x13, + 0x00, 0xe6, 0xc0, 0x8a, 0x5e, 0x12, 0x01, 0x10, 0x13, 0x33, 0x10, 0x14, + 0x29, 0x0f, 0x15, 0x00, 0x7a, 0xe9, 0x3c, 0x5e, 0x14, 0x01, 0x10, 0x15, + 0x34, 0x10, 0x16, 0x29, 0x0f, 0x17, 0x00, 0xef, 0x51, 0x68, 0x5e, 0x16, + 0x01, 0x10, 0x17, 0x35, 0x10, 0x18, 0x29, 0x0f, 0x19, 0x00, 0xff, 0xaf, + 0x70, 0x5e, 0x18, 0x01, 0x10, 0x19, 0x36, 0x10, 0x1a, 0x29, 0x0f, 0x1b, + 0x00, 0xff, 0x8f, 0x40, 0x5e, 0x1a, 0x01, 0x10, 0x1b, 0x37, 0x10, 0x1c, + 0x29, 0x0f, 0x1d, 0x00, 0xf0, 0x71, 0x78, 0x5e, 0x1c, 0x01, 0x10, 0x1d, + 0x38, 0x10, 0x1e, 0x29, 0x0f, 0x1f, 0x00, 0xff, 0xff, 0xff, 0x10, 0x20, + 0x2d, 0x13, 0x21, 0x5e, 0x1e, 0x02, 0x10, 0x1f, 0x39, 0x10, 0x20, 0x29, + 0x0f, 0x21, 0x00, 0xff, 0xaf, 0x70, 0x5e, 0x20, 0x01, 0x10, 0x21, 0x3a, + 0x10, 0x22, 0x29, 0x0f, 0x23, 0x00, 0xf0, 0x71, 0x78, 0x5e, 0x22, 0x01, + 0x10, 0x23, 0x3b, 0x10, 0x24, 0x29, 0x0f, 0x25, 0x00, 0x7d, 0xcf, 0xff, + 0x5e, 0x24, 0x01, 0x10, 0x25, 0x3c, 0x10, 0x26, 0x29, 0x0f, 0x27, 0x00, + 0x95, 0xe6, 0xcb, 0x5e, 0x26, 0x01, 0x10, 0x27, 0x3d, 0x10, 0x28, 0x29, + 0x0f, 0x29, 0x00, 0xf0, 0x71, 0x78, 0x5e, 0x28, 0x01, 0x10, 0x29, 0x3e, + 0x10, 0x2a, 0x29, 0x0f, 0x2b, 0x00, 0x7d, 0xcf, 0xff, 0x5e, 0x2a, 0x01, + 0x10, 0x2b, 0x3f, 0x10, 0x2c, 0x29, 0x0f, 0x2d, 0x00, 0xff, 0x8f, 0x40, + 0x5e, 0x2c, 0x01, 0x10, 0x2d, 0x40, 0x10, 0x2e, 0x29, 0x0f, 0x2f, 0x00, + 0xd2, 0xa6, 0xff, 0x5e, 0x2e, 0x01, 0x10, 0x2f, 0x41, 0x10, 0x30, 0x29, + 0x0f, 0x31, 0x00, 0xd2, 0xa6, 0xff, 0x5e, 0x30, 0x01, 0x10, 0x31, 0x42, + 0x10, 0x32, 0x29, 0x0f, 0x33, 0x00, 0xff, 0xaf, 0xaf, 0x5e, 0x32, 0x01, + 0x10, 0x33, 0x43, 0x10, 0x34, 0x29, 0x0f, 0x35, 0x00, 0xff, 0xff, 0x00, + 0x5e, 0x34, 0x01, 0x10, 0x35, 0x44, 0x10, 0x36, 0x29, 0x0f, 0x37, 0x00, + 0x0f, 0xff, 0x0f, 0x5e, 0x36, 0x01, 0x10, 0x37, 0x45, 0x10, 0x38, 0x29, + 0x0f, 0x39, 0x00, 0xff, 0x0f, 0x0f, 0x5e, 0x38, 0x01, 0x5e, 0x01, 0x1c, + 0x1a, 0x01, 0x46, 0x10, 0x01, 0x47, 0x1a, 0x01, 0x48, 0x5e, 0x01, 0x00, + 0x1a, 0x01, 0x49, 0x5e, 0x01, 0x00, 0x1a, 0x01, 0x4a, 0x5e, 0x01, 0x00, + 0x1a, 0x01, 0x4b, 0x11, 0x01, 0x1a, 0x01, 0x4c, 0x11, 0x01, 0x1a, 0x01, + 0x4d, 0x62, 0x02, 0x00, 0x31, 0x01, 0x4e, 0x00, 0x1a, 0x01, 0x4f, 0x62, + 0x02, 0x01, 0x31, 0x01, 0x4e, 0x00, 0x1a, 0x01, 0x50, 0x62, 0x02, 0x02, + 0x31, 0x01, 0x4e, 0x00, 0x1a, 0x01, 0x51, 0x12, 0x01, 0x6f, 0x01, 0x69, + 0x01, 0x03, 0x3d, 0x01, 0x00, 0x6f, 0x00, 0x00, 0x06, 0x63, 0x6c, 0x61, + 0x6e, 0x67, 0x64, 0x00, 0x00, 0x00, 0x12, 0x2d, 0x2d, 0x62, 0x61, 0x63, + 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x00, 0x00, 0x00, 0x0c, 0x2d, 0x2d, 0x63, 0x6c, 0x61, 0x6e, 0x67, + 0x2d, 0x74, 0x69, 0x64, 0x79, 0x00, 0x00, 0x00, 0x1b, 0x2d, 0x2d, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x73, 0x74, + 0x79, 0x6c, 0x65, 0x3d, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, + 0x00, 0x00, 0x00, 0x18, 0x2d, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x2d, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x6e, + 0x65, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, 0x14, 0x2d, 0x2d, 0x70, 0x63, + 0x68, 0x2d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x3d, 0x6d, 0x65, + 0x6d, 0x6f, 0x72, 0x79, 0x00, 0x00, 0x00, 0x12, 0x2d, 0x2d, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x2d, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x3d, + 0x35, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x2d, 0x2d, 0x6c, 0x6f, 0x67, 0x3d, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x00, 0x00, 0x00, 0x08, 0x72, 0x75, 0x62, + 0x79, 0x2d, 0x6c, 0x73, 0x70, 0x00, 0x00, 0x00, 0x0a, 0x73, 0x6f, 0x6c, + 0x61, 0x72, 0x67, 0x72, 0x61, 0x70, 0x68, 0x00, 0x00, 0x00, 0x05, 0x73, + 0x74, 0x64, 0x69, 0x6f, 0x00, 0x00, 0x00, 0x14, 0x62, 0x61, 0x73, 0x68, 0x2d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2d, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, 0x07, 0x2d, 0x2d, 0x73, 0x74, - 0x64, 0x69, 0x6f, 0x00, 0x00, 0x00, 0x1b, 0x76, 0x73, 0x63, 0x6f, 0x64, - 0x65, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2d, 0x6c, 0x61, 0x6e, 0x67, 0x75, + 0x72, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x00, 0x00, 0x00, 0x1a, 0x76, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x2d, + 0x63, 0x73, 0x73, 0x2d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, + 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, 0x07, 0x2d, + 0x2d, 0x73, 0x74, 0x64, 0x69, 0x6f, 0x00, 0x00, 0x00, 0x1b, 0x76, 0x73, + 0x63, 0x6f, 0x64, 0x65, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2d, 0x6c, 0x61, + 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x00, 0x00, 0x00, 0x08, 0x66, 0x69, 0x73, 0x68, 0x2d, 0x6c, 0x73, + 0x70, 0x00, 0x00, 0x00, 0x05, 0x67, 0x6f, 0x70, 0x6c, 0x73, 0x00, 0x00, + 0x00, 0x05, 0x73, 0x65, 0x72, 0x76, 0x65, 0x00, 0x00, 0x00, 0x17, 0x68, + 0x61, 0x73, 0x6b, 0x65, 0x6c, 0x6c, 0x2d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x00, 0x00, - 0x00, 0x08, 0x66, 0x69, 0x73, 0x68, 0x2d, 0x6c, 0x73, 0x70, 0x00, 0x00, - 0x00, 0x05, 0x67, 0x6f, 0x70, 0x6c, 0x73, 0x00, 0x00, 0x00, 0x05, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x00, 0x00, 0x00, 0x17, 0x68, 0x61, 0x73, 0x6b, - 0x65, 0x6c, 0x6c, 0x2d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, - 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, 0x03, 0x6c, - 0x73, 0x70, 0x00, 0x00, 0x00, 0x15, 0x65, 0x6d, 0x6d, 0x65, 0x74, 0x2d, - 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2d, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, 0x1a, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x2d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, - 0x67, 0x65, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, - 0x13, 0x6c, 0x75, 0x61, 0x2d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, - 0x65, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, 0x12, - 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2d, 0x6c, 0x61, 0x6e, 0x67, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, 0x0d, 0x72, 0x75, - 0x73, 0x74, 0x2d, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x72, 0x00, - 0x00, 0x00, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x65, - 0x6e, 0x73, 0x65, 0x00, 0x00, 0x00, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x73, - 0x6d, 0x61, 0x6e, 0x00, 0x00, 0x00, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x00, 0x00, 0x00, 0x15, 0x6e, 0x67, 0x69, 0x6e, 0x78, 0x2d, 0x6c, - 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2d, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x74, 0x61, 0x70, 0x6c, 0x6f, 0x00, - 0x00, 0x00, 0x14, 0x79, 0x61, 0x6d, 0x6c, 0x2d, 0x6c, 0x61, 0x6e, 0x67, + 0x00, 0x03, 0x6c, 0x73, 0x70, 0x00, 0x00, 0x00, 0x15, 0x65, 0x6d, 0x6d, + 0x65, 0x74, 0x2d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2d, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, 0x1a, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2d, 0x6c, 0x61, 0x6e, + 0x67, 0x75, 0x61, 0x67, 0x65, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x00, 0x00, 0x00, 0x13, 0x6c, 0x75, 0x61, 0x2d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x00, - 0x00, 0x00, 0x04, 0x73, 0x71, 0x6c, 0x73, 0x00, 0x00, 0x00, 0x14, 0x6d, - 0x61, 0x6b, 0x65, 0x2d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, - 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, 0x13, 0x73, - 0x71, 0x6c, 0x2d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2d, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, 0x02, 0x75, 0x70, - 0x00, 0x00, 0x00, 0x08, 0x2d, 0x2d, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x00, 0x00, 0x00, 0x04, 0xee, 0x98, 0x9e, 0x20, 0x00, 0x00, 0x00, 0x01, - 0x63, 0x00, 0x00, 0x00, 0x04, 0xee, 0x98, 0x9d, 0x20, 0x00, 0x00, 0x00, - 0x03, 0x63, 0x70, 0x70, 0x00, 0x00, 0x00, 0x02, 0x63, 0x63, 0x00, 0x00, - 0x00, 0x03, 0x63, 0x78, 0x78, 0x00, 0x00, 0x00, 0x04, 0xef, 0x83, 0xbd, - 0x20, 0x00, 0x00, 0x00, 0x01, 0x68, 0x00, 0x00, 0x00, 0x03, 0x68, 0x70, - 0x70, 0x00, 0x00, 0x00, 0x04, 0xee, 0x9a, 0xb8, 0x20, 0x00, 0x00, 0x00, - 0x03, 0x63, 0x73, 0x73, 0x00, 0x00, 0x00, 0x04, 0xee, 0xb9, 0x81, 0x20, - 0x00, 0x00, 0x00, 0x04, 0x66, 0x69, 0x73, 0x68, 0x00, 0x00, 0x00, 0x04, - 0xee, 0x98, 0xa7, 0x20, 0x00, 0x00, 0x00, 0x02, 0x67, 0x6f, 0x00, 0x00, - 0x00, 0x03, 0x6d, 0x6f, 0x64, 0x00, 0x00, 0x00, 0x04, 0xee, 0x9d, 0xb7, - 0x20, 0x00, 0x00, 0x00, 0x02, 0x68, 0x73, 0x00, 0x00, 0x00, 0x03, 0x6c, - 0x68, 0x73, 0x00, 0x00, 0x00, 0x04, 0xef, 0x84, 0xa1, 0x20, 0x00, 0x00, - 0x00, 0x04, 0x68, 0x74, 0x6d, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x68, 0x74, - 0x6d, 0x00, 0x00, 0x00, 0x04, 0xef, 0x8b, 0xaf, 0x20, 0x00, 0x00, 0x00, - 0x02, 0x6a, 0x73, 0x00, 0x00, 0x00, 0x04, 0xee, 0x9a, 0x9d, 0x20, 0x00, - 0x00, 0x00, 0x02, 0x74, 0x73, 0x00, 0x00, 0x00, 0x02, 0x7b, 0x7d, 0x00, - 0x00, 0x00, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x6a, - 0x73, 0x6f, 0x6e, 0x63, 0x00, 0x00, 0x00, 0x03, 0x65, 0x72, 0x62, 0x00, - 0x00, 0x00, 0x05, 0xf3, 0xb0, 0xa2, 0xb1, 0x20, 0x00, 0x00, 0x00, 0x03, - 0x6c, 0x75, 0x61, 0x00, 0x00, 0x00, 0x05, 0xf3, 0xb0, 0x8c, 0xa0, 0x20, - 0x00, 0x00, 0x00, 0x02, 0x70, 0x79, 0x00, 0x00, 0x00, 0x07, 0x70, 0x79, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x00, 0x00, 0x00, 0x05, 0xf3, 0xb1, 0x98, - 0x97, 0x20, 0x00, 0x00, 0x00, 0x02, 0x72, 0x73, 0x00, 0x00, 0x00, 0x05, - 0xf3, 0xb0, 0x8c, 0x9f, 0x20, 0x00, 0x00, 0x00, 0x03, 0x70, 0x68, 0x70, - 0x00, 0x00, 0x00, 0x04, 0xee, 0xba, 0xab, 0x20, 0x00, 0x00, 0x00, 0x02, - 0x6d, 0x64, 0x00, 0x00, 0x00, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x64, 0x6f, - 0x77, 0x6e, 0x00, 0x00, 0x00, 0x04, 0xee, 0x98, 0x95, 0x20, 0x00, 0x00, - 0x00, 0x04, 0x63, 0x6f, 0x6e, 0x66, 0x00, 0x00, 0x00, 0x04, 0xee, 0x9a, - 0xb2, 0x20, 0x00, 0x00, 0x00, 0x04, 0x74, 0x6f, 0x6d, 0x6c, 0x00, 0x00, - 0x00, 0x03, 0x79, 0x6d, 0x6c, 0x00, 0x00, 0x00, 0x04, 0x79, 0x61, 0x6d, - 0x6c, 0x00, 0x00, 0x00, 0x04, 0xee, 0x99, 0x8d, 0x20, 0x00, 0x00, 0x00, - 0x03, 0x73, 0x71, 0x6c, 0x00, 0x00, 0x00, 0x04, 0xee, 0x99, 0xb3, 0x20, - 0x00, 0x00, 0x00, 0x08, 0x4d, 0x61, 0x6b, 0x65, 0x66, 0x69, 0x6c, 0x65, - 0x00, 0x00, 0x00, 0x08, 0x6d, 0x61, 0x6b, 0x65, 0x66, 0x69, 0x6c, 0x65, - 0x00, 0x00, 0x00, 0x04, 0xee, 0x99, 0x9f, 0x20, 0x00, 0x00, 0x00, 0x02, - 0x67, 0x64, 0x00, 0x00, 0x00, 0x04, 0xef, 0x80, 0xad, 0x20, 0x00, 0x00, - 0x00, 0x03, 0x6d, 0x61, 0x6e, 0x00, 0x00, 0x00, 0x04, 0xee, 0x9c, 0xa8, - 0x20, 0x00, 0x00, 0x00, 0x04, 0x64, 0x69, 0x66, 0x66, 0x00, 0x00, 0x00, - 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x00, 0x00, 0x00, 0x04, 0xee, 0x99, - 0x9d, 0x20, 0x00, 0x00, 0x00, 0x0d, 0x67, 0x69, 0x74, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x00, 0x00, 0x00, 0x09, 0x67, - 0x69, 0x74, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x00, 0x00, 0x00, 0x02, - 0x2e, 0x2a, 0x00, 0x00, 0x00, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x00, - 0x00, 0x00, 0x03, 0x69, 0x6e, 0x69, 0x00, 0x00, 0x00, 0x05, 0xf3, 0xb0, - 0xb4, 0xad, 0x20, 0x00, 0x00, 0x00, 0x02, 0x72, 0x62, 0x00, 0x00, 0x00, - 0x07, 0x47, 0x65, 0x6d, 0x66, 0x69, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x04, - 0xee, 0xaf, 0x8a, 0x20, 0x00, 0x00, 0x00, 0x02, 0x73, 0x68, 0x00, 0x00, - 0x00, 0x0c, 0x62, 0x61, 0x73, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x00, 0x00, 0x00, 0x06, 0x62, 0x61, 0x73, 0x68, 0x72, 0x63, + 0x00, 0x00, 0x12, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2d, 0x6c, + 0x61, 0x6e, 0x67, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, + 0x0d, 0x72, 0x75, 0x73, 0x74, 0x2d, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, + 0x65, 0x72, 0x00, 0x00, 0x00, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x6c, 0x65, + 0x70, 0x68, 0x65, 0x6e, 0x73, 0x65, 0x00, 0x00, 0x00, 0x08, 0x6d, 0x61, + 0x72, 0x6b, 0x73, 0x6d, 0x61, 0x6e, 0x00, 0x00, 0x00, 0x06, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, 0x15, 0x6e, 0x67, 0x69, 0x6e, + 0x78, 0x2d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2d, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, 0x05, 0x74, 0x61, 0x70, + 0x6c, 0x6f, 0x00, 0x00, 0x00, 0x14, 0x79, 0x61, 0x6d, 0x6c, 0x2d, 0x6c, + 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2d, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x00, 0x00, 0x00, 0x04, 0x73, 0x71, 0x6c, 0x73, 0x00, 0x00, + 0x00, 0x14, 0x6d, 0x61, 0x6b, 0x65, 0x2d, 0x6c, 0x61, 0x6e, 0x67, 0x75, + 0x61, 0x67, 0x65, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x00, 0x00, + 0x00, 0x13, 0x73, 0x71, 0x6c, 0x2d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, + 0x67, 0x65, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, + 0x02, 0x75, 0x70, 0x00, 0x00, 0x00, 0x08, 0x2d, 0x2d, 0x6d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x00, 0x00, 0x00, 0x04, 0xee, 0x98, 0x9e, 0x20, 0x00, + 0x00, 0x00, 0x01, 0x63, 0x00, 0x00, 0x00, 0x04, 0xee, 0x98, 0x9d, 0x20, + 0x00, 0x00, 0x00, 0x03, 0x63, 0x70, 0x70, 0x00, 0x00, 0x00, 0x02, 0x63, + 0x63, 0x00, 0x00, 0x00, 0x03, 0x63, 0x78, 0x78, 0x00, 0x00, 0x00, 0x04, + 0xef, 0x83, 0xbd, 0x20, 0x00, 0x00, 0x00, 0x01, 0x68, 0x00, 0x00, 0x00, + 0x03, 0x68, 0x70, 0x70, 0x00, 0x00, 0x00, 0x04, 0xee, 0x9a, 0xb8, 0x20, + 0x00, 0x00, 0x00, 0x03, 0x63, 0x73, 0x73, 0x00, 0x00, 0x00, 0x04, 0xee, + 0xb9, 0x81, 0x20, 0x00, 0x00, 0x00, 0x04, 0x66, 0x69, 0x73, 0x68, 0x00, + 0x00, 0x00, 0x04, 0xee, 0x98, 0xa7, 0x20, 0x00, 0x00, 0x00, 0x02, 0x67, + 0x6f, 0x00, 0x00, 0x00, 0x03, 0x6d, 0x6f, 0x64, 0x00, 0x00, 0x00, 0x04, + 0xee, 0x9d, 0xb7, 0x20, 0x00, 0x00, 0x00, 0x02, 0x68, 0x73, 0x00, 0x00, + 0x00, 0x03, 0x6c, 0x68, 0x73, 0x00, 0x00, 0x00, 0x04, 0xef, 0x84, 0xa1, + 0x20, 0x00, 0x00, 0x00, 0x04, 0x68, 0x74, 0x6d, 0x6c, 0x00, 0x00, 0x00, + 0x03, 0x68, 0x74, 0x6d, 0x00, 0x00, 0x00, 0x04, 0xef, 0x8b, 0xaf, 0x20, + 0x00, 0x00, 0x00, 0x02, 0x6a, 0x73, 0x00, 0x00, 0x00, 0x04, 0xee, 0x9a, + 0x9d, 0x20, 0x00, 0x00, 0x00, 0x02, 0x74, 0x73, 0x00, 0x00, 0x00, 0x02, + 0x7b, 0x7d, 0x00, 0x00, 0x00, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x00, 0x00, + 0x00, 0x05, 0x6a, 0x73, 0x6f, 0x6e, 0x63, 0x00, 0x00, 0x00, 0x03, 0x65, + 0x72, 0x62, 0x00, 0x00, 0x00, 0x05, 0xf3, 0xb0, 0xa2, 0xb1, 0x20, 0x00, + 0x00, 0x00, 0x03, 0x6c, 0x75, 0x61, 0x00, 0x00, 0x00, 0x05, 0xf3, 0xb0, + 0x8c, 0xa0, 0x20, 0x00, 0x00, 0x00, 0x02, 0x70, 0x79, 0x00, 0x00, 0x00, + 0x07, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x00, 0x00, 0x00, 0x05, + 0xf3, 0xb1, 0x98, 0x97, 0x20, 0x00, 0x00, 0x00, 0x02, 0x72, 0x73, 0x00, + 0x00, 0x00, 0x05, 0xf3, 0xb0, 0x8c, 0x9f, 0x20, 0x00, 0x00, 0x00, 0x03, + 0x70, 0x68, 0x70, 0x00, 0x00, 0x00, 0x04, 0xee, 0xba, 0xab, 0x20, 0x00, + 0x00, 0x00, 0x02, 0x6d, 0x64, 0x00, 0x00, 0x00, 0x08, 0x6d, 0x61, 0x72, + 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x00, 0x00, 0x00, 0x04, 0xee, 0x98, 0x95, + 0x20, 0x00, 0x00, 0x00, 0x04, 0x63, 0x6f, 0x6e, 0x66, 0x00, 0x00, 0x00, + 0x04, 0xee, 0x9a, 0xb2, 0x20, 0x00, 0x00, 0x00, 0x04, 0x74, 0x6f, 0x6d, + 0x6c, 0x00, 0x00, 0x00, 0x03, 0x79, 0x6d, 0x6c, 0x00, 0x00, 0x00, 0x04, + 0x79, 0x61, 0x6d, 0x6c, 0x00, 0x00, 0x00, 0x04, 0xee, 0x99, 0x8d, 0x20, + 0x00, 0x00, 0x00, 0x03, 0x73, 0x71, 0x6c, 0x00, 0x00, 0x00, 0x04, 0xee, + 0x99, 0xb3, 0x20, 0x00, 0x00, 0x00, 0x08, 0x4d, 0x61, 0x6b, 0x65, 0x66, + 0x69, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x08, 0x6d, 0x61, 0x6b, 0x65, 0x66, + 0x69, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x04, 0xee, 0x99, 0x9f, 0x20, 0x00, + 0x00, 0x00, 0x02, 0x67, 0x64, 0x00, 0x00, 0x00, 0x04, 0xef, 0x80, 0xad, + 0x20, 0x00, 0x00, 0x00, 0x03, 0x6d, 0x61, 0x6e, 0x00, 0x00, 0x00, 0x04, + 0xee, 0x9c, 0xa8, 0x20, 0x00, 0x00, 0x00, 0x04, 0x64, 0x69, 0x66, 0x66, + 0x00, 0x00, 0x00, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x00, 0x00, 0x00, + 0x04, 0xee, 0x99, 0x9d, 0x20, 0x00, 0x00, 0x00, 0x0d, 0x67, 0x69, 0x74, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x00, 0x00, + 0x00, 0x09, 0x67, 0x69, 0x74, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x00, + 0x00, 0x00, 0x02, 0x2e, 0x2a, 0x00, 0x00, 0x00, 0x05, 0x72, 0x65, 0x67, + 0x65, 0x78, 0x00, 0x00, 0x00, 0x03, 0x69, 0x6e, 0x69, 0x00, 0x00, 0x00, + 0x05, 0xf3, 0xb0, 0xb4, 0xad, 0x20, 0x00, 0x00, 0x00, 0x02, 0x72, 0x62, + 0x00, 0x00, 0x00, 0x07, 0x47, 0x65, 0x6d, 0x66, 0x69, 0x6c, 0x65, 0x00, + 0x00, 0x00, 0x04, 0xee, 0xaf, 0x8a, 0x20, 0x00, 0x00, 0x00, 0x02, 0x73, + 0x68, 0x00, 0x00, 0x00, 0x0c, 0x62, 0x61, 0x73, 0x68, 0x5f, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x06, 0x62, 0x61, 0x73, + 0x68, 0x72, 0x63, 0x00, 0x00, 0x00, 0x05, 0xf3, 0xb0, 0x88, 0x9a, 0x20, 0x00, 0x00, 0x52, 0x00, 0x0b, 0x40, 0x6c, 0x73, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x00, 0x00, 0x01, 0x63, 0x00, 0x00, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x00, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, @@ -526,8 +529,8 @@ constexpr unsigned char _tmp___crib_precompiled_mrb[] = { 0x65, 0x78, 0x00, 0x00, 0x03, 0x69, 0x6e, 0x69, 0x00, 0x00, 0x04, 0x72, 0x75, 0x62, 0x79, 0x00, 0x00, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x00, 0x00, 0x04, 0x62, 0x61, 0x73, 0x68, 0x00, 0x00, - 0x0a, 0x40, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x00, - 0x00, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x00, 0x00, 0x02, + 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x00, 0x00, 0x0a, 0x40, + 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x00, 0x00, 0x02, 0x66, 0x67, 0x00, 0x00, 0x07, 0x73, 0x68, 0x65, 0x62, 0x61, 0x6e, 0x67, 0x00, 0x00, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x00, 0x00, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x00, 0x06, 0x69, 0x74, 0x61, @@ -565,8 +568,8 @@ constexpr unsigned char _tmp___crib_precompiled_mrb[] = { 0x72, 0x6f, 0x63, 0x00, 0x00, 0x06, 0x40, 0x62, 0x5f, 0x62, 0x61, 0x72, 0x00, 0x00, 0x07, 0x40, 0x62, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x00, 0x00, 0x08, 0x40, 0x62, 0x5f, 0x70, 0x61, 0x73, 0x74, 0x65, 0x00, 0x00, 0x00, - 0x03, 0x31, 0x00, 0x09, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x01, 0x39, 0x04, 0x00, 0x00, 0x0f, 0x03, 0x00, 0x82, 0xaa, 0xff, + 0x03, 0x53, 0x00, 0x09, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x19, 0x39, 0x04, 0x00, 0x00, 0x0f, 0x03, 0x00, 0x82, 0xaa, 0xff, 0x5c, 0x04, 0x00, 0x01, 0x09, 0x01, 0x10, 0x0a, 0x00, 0x23, 0x09, 0x10, 0x0a, 0x01, 0x01, 0x0b, 0x09, 0x32, 0x0a, 0x02, 0x01, 0x28, 0x0a, 0x00, 0x0c, 0x0f, 0x03, 0x00, 0x82, 0xaa, 0xff, 0x5c, 0x04, 0x01, 0x26, 0x00, @@ -580,205 +583,208 @@ constexpr unsigned char _tmp___crib_precompiled_mrb[] = { 0x09, 0x32, 0x0a, 0x02, 0x01, 0x28, 0x0a, 0x00, 0x0c, 0x0f, 0x03, 0x00, 0xf2, 0x9c, 0xc3, 0x5c, 0x04, 0x05, 0x26, 0x00, 0x00, 0x1d, 0x09, 0x07, 0x33, 0x09, 0x08, 0x01, 0x0a, 0x01, 0x10, 0x0b, 0x09, 0x23, 0x0a, 0x23, - 0x09, 0x01, 0x05, 0x09, 0x1d, 0x09, 0x0a, 0x01, 0x0a, 0x01, 0x10, 0x0b, - 0x0b, 0x23, 0x0a, 0x32, 0x09, 0x0c, 0x01, 0x01, 0x06, 0x09, 0x5c, 0x09, + 0x09, 0x01, 0x05, 0x09, 0x01, 0x09, 0x05, 0x29, 0x09, 0x00, 0x03, 0x26, + 0x00, 0x0e, 0x1d, 0x09, 0x07, 0x33, 0x09, 0x08, 0x10, 0x0a, 0x0a, 0x23, + 0x09, 0x01, 0x05, 0x09, 0x1d, 0x09, 0x0b, 0x01, 0x0a, 0x01, 0x10, 0x0b, + 0x0c, 0x23, 0x0a, 0x32, 0x09, 0x0d, 0x01, 0x01, 0x06, 0x09, 0x5c, 0x09, 0x06, 0x01, 0x0a, 0x04, 0x5d, 0x09, 0x5c, 0x0a, 0x06, 0x5d, 0x09, 0x01, - 0x0a, 0x01, 0x10, 0x0b, 0x00, 0x23, 0x0a, 0x33, 0x0a, 0x0d, 0x33, 0x0a, - 0x0e, 0x5d, 0x09, 0x5c, 0x0a, 0x07, 0x5d, 0x09, 0x01, 0x0a, 0x05, 0x10, - 0x0b, 0x0f, 0x23, 0x0a, 0x5d, 0x09, 0x5c, 0x0a, 0x08, 0x5d, 0x09, 0x01, + 0x0a, 0x01, 0x10, 0x0b, 0x00, 0x23, 0x0a, 0x33, 0x0a, 0x0e, 0x33, 0x0a, + 0x0f, 0x5d, 0x09, 0x5c, 0x0a, 0x07, 0x5d, 0x09, 0x01, 0x0a, 0x05, 0x10, + 0x0b, 0x10, 0x23, 0x0a, 0x5d, 0x09, 0x5c, 0x0a, 0x08, 0x5d, 0x09, 0x01, 0x0a, 0x06, 0x5d, 0x09, 0x5c, 0x0a, 0x09, 0x5d, 0x09, 0x01, 0x07, 0x09, - 0x52, 0x08, 0x00, 0x01, 0x09, 0x08, 0x10, 0x0a, 0x10, 0x0f, 0x0b, 0x00, - 0x0b, 0x0e, 0x14, 0x10, 0x0c, 0x11, 0x01, 0x0d, 0x03, 0x10, 0x0e, 0x12, - 0x08, 0x0f, 0x10, 0x10, 0x13, 0x06, 0x11, 0x10, 0x12, 0x14, 0x03, 0x13, - 0x0a, 0x5e, 0x0a, 0x05, 0x32, 0x09, 0x15, 0x01, 0x01, 0x09, 0x08, 0x10, - 0x0a, 0x10, 0x01, 0x0b, 0x03, 0x10, 0x0c, 0x11, 0x0f, 0x0d, 0x00, 0x33, - 0x36, 0x3c, 0x10, 0x0e, 0x13, 0x03, 0x0f, 0x0a, 0x10, 0x10, 0x14, 0x07, - 0x11, 0x5e, 0x0a, 0x04, 0x32, 0x09, 0x15, 0x01, 0x01, 0x09, 0x08, 0x10, - 0x0a, 0x10, 0x0f, 0x0b, 0x00, 0x33, 0x36, 0x3c, 0x10, 0x0c, 0x11, 0x0f, - 0x0d, 0x00, 0x24, 0x27, 0x2d, 0x10, 0x0e, 0x13, 0x03, 0x0f, 0x0b, 0x10, - 0x10, 0x14, 0x07, 0x11, 0x5e, 0x0a, 0x04, 0x32, 0x09, 0x15, 0x01, 0x01, - 0x09, 0x08, 0x10, 0x0a, 0x10, 0x01, 0x0b, 0x05, 0x10, 0x0c, 0x16, 0x23, - 0x0b, 0x10, 0x0c, 0x11, 0x0f, 0x0d, 0x00, 0x24, 0x27, 0x2d, 0x10, 0x0e, - 0x13, 0x03, 0x0f, 0x0d, 0x10, 0x10, 0x14, 0x08, 0x11, 0x5e, 0x0a, 0x04, - 0x32, 0x09, 0x15, 0x01, 0x01, 0x09, 0x08, 0x10, 0x0a, 0x10, 0x0f, 0x0b, - 0x00, 0xce, 0xd4, 0xdf, 0x10, 0x0c, 0x11, 0x0f, 0x0d, 0x00, 0x24, 0x27, - 0x2d, 0x10, 0x0e, 0x13, 0x03, 0x0f, 0x0f, 0x10, 0x10, 0x14, 0x01, 0x11, - 0x06, 0x33, 0x11, 0x14, 0x5e, 0x0a, 0x04, 0x32, 0x09, 0x15, 0x01, 0x01, - 0x09, 0x08, 0x10, 0x0a, 0x10, 0x0f, 0x0b, 0x00, 0x24, 0x27, 0x2d, 0x10, - 0x0c, 0x11, 0x06, 0x0d, 0x10, 0x0e, 0x13, 0x03, 0x0f, 0x0f, 0x01, 0x10, - 0x06, 0x33, 0x10, 0x14, 0x45, 0x0f, 0x10, 0x10, 0x14, 0x07, 0x11, 0x5e, - 0x0a, 0x04, 0x32, 0x09, 0x15, 0x01, 0x10, 0x09, 0x17, 0x01, 0x0a, 0x07, - 0x10, 0x0b, 0x18, 0x01, 0x0c, 0x08, 0x5e, 0x09, 0x02, 0x3d, 0x09, 0x00, + 0x52, 0x08, 0x00, 0x01, 0x09, 0x08, 0x10, 0x0a, 0x11, 0x0f, 0x0b, 0x00, + 0x0b, 0x0e, 0x14, 0x10, 0x0c, 0x12, 0x01, 0x0d, 0x03, 0x10, 0x0e, 0x13, + 0x08, 0x0f, 0x10, 0x10, 0x14, 0x06, 0x11, 0x10, 0x12, 0x15, 0x03, 0x13, + 0x0a, 0x5e, 0x0a, 0x05, 0x32, 0x09, 0x16, 0x01, 0x01, 0x09, 0x08, 0x10, + 0x0a, 0x11, 0x01, 0x0b, 0x03, 0x10, 0x0c, 0x12, 0x0f, 0x0d, 0x00, 0x33, + 0x36, 0x3c, 0x10, 0x0e, 0x14, 0x03, 0x0f, 0x0a, 0x10, 0x10, 0x15, 0x07, + 0x11, 0x5e, 0x0a, 0x04, 0x32, 0x09, 0x16, 0x01, 0x01, 0x09, 0x08, 0x10, + 0x0a, 0x11, 0x0f, 0x0b, 0x00, 0x33, 0x36, 0x3c, 0x10, 0x0c, 0x12, 0x0f, + 0x0d, 0x00, 0x24, 0x27, 0x2d, 0x10, 0x0e, 0x14, 0x03, 0x0f, 0x0b, 0x10, + 0x10, 0x15, 0x07, 0x11, 0x5e, 0x0a, 0x04, 0x32, 0x09, 0x16, 0x01, 0x01, + 0x09, 0x08, 0x10, 0x0a, 0x11, 0x01, 0x0b, 0x05, 0x10, 0x0c, 0x17, 0x23, + 0x0b, 0x10, 0x0c, 0x12, 0x0f, 0x0d, 0x00, 0x24, 0x27, 0x2d, 0x10, 0x0e, + 0x14, 0x03, 0x0f, 0x0d, 0x10, 0x10, 0x15, 0x08, 0x11, 0x5e, 0x0a, 0x04, + 0x32, 0x09, 0x16, 0x01, 0x01, 0x09, 0x08, 0x10, 0x0a, 0x11, 0x0f, 0x0b, + 0x00, 0xce, 0xd4, 0xdf, 0x10, 0x0c, 0x12, 0x0f, 0x0d, 0x00, 0x24, 0x27, + 0x2d, 0x10, 0x0e, 0x14, 0x03, 0x0f, 0x0f, 0x10, 0x10, 0x15, 0x01, 0x11, + 0x06, 0x33, 0x11, 0x15, 0x5e, 0x0a, 0x04, 0x32, 0x09, 0x16, 0x01, 0x01, + 0x09, 0x08, 0x10, 0x0a, 0x11, 0x0f, 0x0b, 0x00, 0x24, 0x27, 0x2d, 0x10, + 0x0c, 0x12, 0x06, 0x0d, 0x10, 0x0e, 0x14, 0x03, 0x0f, 0x0f, 0x01, 0x10, + 0x06, 0x33, 0x10, 0x15, 0x45, 0x0f, 0x10, 0x10, 0x15, 0x07, 0x11, 0x5e, + 0x0a, 0x04, 0x32, 0x09, 0x16, 0x01, 0x10, 0x09, 0x18, 0x01, 0x0a, 0x07, + 0x10, 0x0b, 0x19, 0x01, 0x0c, 0x08, 0x5e, 0x09, 0x02, 0x3d, 0x09, 0x00, 0x0a, 0x00, 0x00, 0x02, 0x20, 0x20, 0x00, 0x00, 0x00, 0x04, 0xee, 0x99, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x05, 0xf3, 0xb1, 0x93, 0xa7, 0x20, 0x00, 0x00, 0x00, 0x05, 0xf3, 0xb1, 0xa9, 0xa7, 0x20, 0x00, 0x00, 0x00, 0x04, 0xef, 0x84, 0xa0, 0x20, 0x00, 0x00, 0x00, 0x04, 0xee, 0xba, 0xa2, 0x20, 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x08, 0x20, 0xee, 0x82, 0xb4, 0xee, 0x82, 0xb4, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0xee, 0x82, 0xb4, 0x00, 0x00, 0x19, 0x00, 0x04, 0x6d, 0x6f, 0x64, + 0x03, 0xee, 0x82, 0xb4, 0x00, 0x00, 0x1a, 0x00, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x00, 0x00, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x00, 0x00, 0x03, 0x3d, 0x3d, 0x3d, 0x00, 0x00, 0x06, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x00, 0x00, 0x06, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x00, 0x00, 0x06, 0x72, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x00, 0x00, 0x06, 0x6a, 0x75, 0x6d, 0x70, 0x65, 0x72, 0x00, 0x00, 0x01, 0x43, 0x00, 0x00, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x00, 0x00, 0x09, 0x6c, - 0x61, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x04, 0x46, - 0x69, 0x6c, 0x65, 0x00, 0x00, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x00, 0x00, 0x08, 0x62, 0x61, 0x73, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x00, 0x00, 0x04, 0x74, 0x6f, 0x5f, 0x73, 0x00, 0x00, 0x06, 0x75, - 0x70, 0x63, 0x61, 0x73, 0x65, 0x00, 0x00, 0x06, 0x73, 0x79, 0x6d, 0x62, - 0x6f, 0x6c, 0x00, 0x00, 0x02, 0x66, 0x67, 0x00, 0x00, 0x02, 0x62, 0x67, - 0x00, 0x00, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x00, 0x00, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x00, 0x00, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x00, 0x00, 0x02, 0x3c, 0x3c, 0x00, 0x00, 0x05, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x00, 0x00, 0x04, 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x0a, - 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x00, 0x00, - 0x00, 0x00, 0x37, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x39, 0x04, 0x00, 0x00, 0x1d, 0x03, 0x00, 0x01, 0x04, - 0x01, 0x32, 0x03, 0x01, 0x01, 0x3d, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x09, 0x43, 0x6c, 0x69, 0x70, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x00, 0x00, - 0x04, 0x63, 0x6f, 0x70, 0x79, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x39, 0x00, - 0x00, 0x00, 0x1d, 0x02, 0x00, 0x33, 0x02, 0x01, 0x3d, 0x02, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x09, 0x43, 0x6c, 0x69, 0x70, 0x62, 0x6f, 0x61, 0x72, - 0x64, 0x00, 0x00, 0x05, 0x70, 0x61, 0x73, 0x74, 0x65, 0x00, 0x00, 0x00, - 0x01, 0x46, 0x00, 0x01, 0x00, 0x09, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x47, 0x10, 0x02, 0x00, 0x10, 0x03, 0x01, 0x10, 0x04, 0x02, 0x10, - 0x05, 0x03, 0x10, 0x06, 0x04, 0x2f, 0x01, 0x05, 0x05, 0x10, 0x02, 0x06, - 0x10, 0x03, 0x07, 0x10, 0x04, 0x08, 0x10, 0x05, 0x09, 0x10, 0x06, 0x0a, - 0x10, 0x07, 0x0b, 0x2f, 0x01, 0x0c, 0x06, 0x6b, 0x01, 0x0d, 0x00, 0x6b, - 0x01, 0x0e, 0x01, 0x6b, 0x01, 0x0f, 0x02, 0x6b, 0x01, 0x10, 0x03, 0x6b, - 0x01, 0x11, 0x04, 0x6b, 0x01, 0x12, 0x05, 0x6b, 0x01, 0x13, 0x06, 0x3d, - 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, - 0x00, 0x00, 0x0a, 0x6c, 0x73, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x00, 0x00, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, - 0x73, 0x00, 0x00, 0x0c, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x65, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x73, 0x00, 0x00, 0x0c, 0x68, 0x69, 0x67, 0x68, 0x6c, - 0x69, 0x67, 0x68, 0x74, 0x65, 0x72, 0x73, 0x00, 0x00, 0x0d, 0x61, 0x74, - 0x74, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x00, - 0x00, 0x09, 0x62, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x00, - 0x00, 0x0a, 0x62, 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, - 0x00, 0x00, 0x12, 0x62, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x68, - 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x00, 0x00, 0x05, - 0x62, 0x5f, 0x62, 0x61, 0x72, 0x00, 0x00, 0x06, 0x62, 0x5f, 0x63, 0x6f, - 0x70, 0x79, 0x00, 0x00, 0x07, 0x62, 0x5f, 0x70, 0x61, 0x73, 0x74, 0x65, - 0x00, 0x00, 0x0b, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x72, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x00, 0x00, 0x04, 0x62, 0x61, 0x72, 0x3d, 0x00, 0x00, 0x07, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x00, 0x00, 0x08, 0x73, 0x68, - 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x00, 0x00, 0x04, 0x63, 0x6f, 0x70, - 0x79, 0x00, 0x00, 0x05, 0x70, 0x61, 0x73, 0x74, 0x65, 0x00, 0x00, 0x10, - 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x00, 0x00, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x00, - 0x00, 0x00, 0x00, 0x2c, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0x39, 0x00, 0x00, 0x01, 0x01, 0x02, 0x01, 0x01, - 0x03, 0x02, 0x1a, 0x03, 0x00, 0x3d, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x06, 0x40, 0x62, 0x5f, 0x62, 0x61, 0x72, 0x00, 0x00, 0x00, 0x00, 0x30, - 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x39, 0x00, 0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x03, 0x02, 0x1a, 0x03, - 0x00, 0x3d, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x40, 0x62, 0x5f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x00, 0x00, 0x00, 0x00, 0x31, - 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x39, 0x00, 0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x03, 0x02, 0x1a, 0x03, - 0x00, 0x3d, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x40, 0x62, 0x5f, - 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0x39, 0x00, 0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x03, 0x02, 0x1a, - 0x03, 0x00, 0x3d, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x07, 0x40, 0x62, - 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x03, + 0x61, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x07, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x00, 0x00, 0x04, 0x46, 0x69, 0x6c, + 0x65, 0x00, 0x00, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x00, 0x00, 0x08, 0x62, 0x61, 0x73, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x00, + 0x00, 0x04, 0x74, 0x6f, 0x5f, 0x73, 0x00, 0x00, 0x06, 0x75, 0x70, 0x63, + 0x61, 0x73, 0x65, 0x00, 0x00, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, + 0x00, 0x00, 0x02, 0x66, 0x67, 0x00, 0x00, 0x02, 0x62, 0x67, 0x00, 0x00, + 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x00, 0x00, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x00, 0x00, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x00, + 0x00, 0x02, 0x3c, 0x3c, 0x00, 0x00, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, + 0x00, 0x00, 0x04, 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x0a, 0x68, 0x69, + 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x00, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x39, 0x04, 0x00, 0x00, 0x1d, 0x03, 0x00, 0x01, 0x04, 0x01, 0x32, + 0x03, 0x01, 0x01, 0x3d, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x43, + 0x6c, 0x69, 0x70, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x00, 0x00, 0x04, 0x63, + 0x6f, 0x70, 0x79, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x39, 0x00, 0x00, 0x00, + 0x1d, 0x02, 0x00, 0x33, 0x02, 0x01, 0x3d, 0x02, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x09, 0x43, 0x6c, 0x69, 0x70, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x00, + 0x00, 0x05, 0x70, 0x61, 0x73, 0x74, 0x65, 0x00, 0x00, 0x00, 0x01, 0x46, + 0x00, 0x01, 0x00, 0x09, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, + 0x10, 0x02, 0x00, 0x10, 0x03, 0x01, 0x10, 0x04, 0x02, 0x10, 0x05, 0x03, + 0x10, 0x06, 0x04, 0x2f, 0x01, 0x05, 0x05, 0x10, 0x02, 0x06, 0x10, 0x03, + 0x07, 0x10, 0x04, 0x08, 0x10, 0x05, 0x09, 0x10, 0x06, 0x0a, 0x10, 0x07, + 0x0b, 0x2f, 0x01, 0x0c, 0x06, 0x6b, 0x01, 0x0d, 0x00, 0x6b, 0x01, 0x0e, + 0x01, 0x6b, 0x01, 0x0f, 0x02, 0x6b, 0x01, 0x10, 0x03, 0x6b, 0x01, 0x11, + 0x04, 0x6b, 0x01, 0x12, 0x05, 0x6b, 0x01, 0x13, 0x06, 0x3d, 0x01, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x00, 0x00, + 0x0a, 0x6c, 0x73, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x00, + 0x00, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x00, + 0x00, 0x0c, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x73, 0x00, 0x00, 0x0c, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, + 0x68, 0x74, 0x65, 0x72, 0x73, 0x00, 0x00, 0x0d, 0x61, 0x74, 0x74, 0x72, + 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x00, 0x00, 0x09, + 0x62, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x00, 0x00, 0x0a, + 0x62, 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x00, 0x00, + 0x12, 0x62, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x68, 0x69, 0x67, + 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x00, 0x00, 0x05, 0x62, 0x5f, + 0x62, 0x61, 0x72, 0x00, 0x00, 0x06, 0x62, 0x5f, 0x63, 0x6f, 0x70, 0x79, + 0x00, 0x00, 0x07, 0x62, 0x5f, 0x70, 0x61, 0x73, 0x74, 0x65, 0x00, 0x00, + 0x0b, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x00, 0x00, 0x04, 0x62, 0x61, 0x72, 0x3d, 0x00, 0x00, 0x07, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x75, 0x70, 0x00, 0x00, 0x08, 0x73, 0x68, 0x75, 0x74, + 0x64, 0x6f, 0x77, 0x6e, 0x00, 0x00, 0x04, 0x63, 0x6f, 0x70, 0x79, 0x00, + 0x00, 0x05, 0x70, 0x61, 0x73, 0x74, 0x65, 0x00, 0x00, 0x10, 0x65, 0x78, + 0x74, 0x72, 0x61, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x00, 0x00, 0x04, 0x62, 0x69, 0x6e, 0x64, 0x00, 0x00, 0x00, + 0x00, 0x2c, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0f, 0x39, 0x00, 0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x03, 0x02, + 0x1a, 0x03, 0x00, 0x3d, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x06, 0x40, + 0x62, 0x5f, 0x62, 0x61, 0x72, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x39, 0x00, 0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x03, 0x02, 0x1a, 0x03, 0x00, 0x3d, - 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x40, 0x62, 0x5f, 0x70, 0x61, - 0x73, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x03, 0x00, 0x04, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x40, 0x62, 0x5f, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x75, 0x70, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x03, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x39, 0x00, + 0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x03, 0x02, 0x1a, 0x03, 0x00, 0x3d, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x40, 0x62, 0x5f, 0x73, 0x68, + 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x39, + 0x00, 0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x03, 0x02, 0x1a, 0x03, 0x00, + 0x3d, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x07, 0x40, 0x62, 0x5f, 0x63, + 0x6f, 0x70, 0x79, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x39, 0x00, 0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x03, 0x02, 0x1a, 0x03, 0x00, 0x3d, 0x03, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x13, 0x40, 0x62, 0x5f, 0x65, 0x78, 0x74, 0x72, - 0x61, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x00, 0x00, 0x00, 0x01, 0x43, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc1, 0x39, 0x04, 0x40, 0x01, 0x26, 0x00, 0x06, - 0x26, 0x00, 0x05, 0x26, 0x00, 0x04, 0x11, 0x02, 0x11, 0x03, 0x01, 0x05, - 0x04, 0x01, 0x08, 0x01, 0x1d, 0x09, 0x00, 0x32, 0x08, 0x01, 0x01, 0x27, - 0x08, 0x00, 0x07, 0x01, 0x08, 0x01, 0x53, 0x01, 0x08, 0x01, 0x01, 0x08, - 0x02, 0x29, 0x08, 0x00, 0x03, 0x26, 0x00, 0x31, 0x12, 0x06, 0x1d, 0x08, - 0x02, 0x33, 0x08, 0x03, 0x01, 0x07, 0x08, 0x01, 0x08, 0x07, 0x10, 0x09, - 0x04, 0x62, 0x0a, 0x00, 0x34, 0x08, 0x05, 0x01, 0x30, 0x08, 0x06, 0x28, - 0x08, 0x00, 0x0d, 0x01, 0x08, 0x07, 0x01, 0x09, 0x05, 0x34, 0x08, 0x07, - 0x00, 0x26, 0x00, 0x02, 0x11, 0x08, 0x26, 0x00, 0x5b, 0x30, 0x08, 0x06, - 0x28, 0x08, 0x00, 0x22, 0x01, 0x08, 0x02, 0x1d, 0x09, 0x00, 0x32, 0x08, - 0x01, 0x01, 0x27, 0x08, 0x00, 0x07, 0x01, 0x08, 0x02, 0x53, 0x02, 0x08, - 0x01, 0x01, 0x08, 0x01, 0x62, 0x09, 0x01, 0x34, 0x08, 0x08, 0x00, 0x26, - 0x00, 0x32, 0x01, 0x08, 0x03, 0x1d, 0x09, 0x09, 0x32, 0x08, 0x01, 0x01, - 0x28, 0x08, 0x00, 0x22, 0x01, 0x08, 0x02, 0x1d, 0x09, 0x00, 0x32, 0x08, - 0x01, 0x01, 0x27, 0x08, 0x00, 0x07, 0x01, 0x08, 0x02, 0x53, 0x02, 0x08, - 0x01, 0x01, 0x08, 0x01, 0x62, 0x09, 0x02, 0x34, 0x08, 0x08, 0x00, 0x26, - 0x00, 0x02, 0x11, 0x08, 0x3d, 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x05, - 0x41, 0x72, 0x72, 0x61, 0x79, 0x00, 0x00, 0x05, 0x69, 0x73, 0x5f, 0x61, - 0x3f, 0x00, 0x00, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x00, 0x00, - 0x03, 0x6e, 0x65, 0x77, 0x00, 0x00, 0x03, 0x73, 0x65, 0x74, 0x00, 0x00, - 0x17, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x67, - 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x00, 0x00, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x69, 0x76, - 0x65, 0x6e, 0x3f, 0x00, 0x00, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x00, 0x00, 0x04, 0x65, 0x61, - 0x63, 0x68, 0x00, 0x00, 0x06, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x00, - 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x26, 0x39, 0x04, 0x20, 0x01, 0x26, 0x00, 0x03, 0x26, - 0x00, 0x02, 0x11, 0x02, 0x01, 0x04, 0x03, 0x21, 0x05, 0x06, 0x00, 0x21, - 0x06, 0x01, 0x00, 0x01, 0x07, 0x01, 0x01, 0x08, 0x02, 0x01, 0x09, 0x04, - 0x34, 0x05, 0x00, 0x03, 0x3d, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, - 0x62, 0x69, 0x6e, 0x64, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x03, 0x00, - 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x39, 0x04, 0x00, - 0x00, 0x21, 0x03, 0x02, 0x00, 0x62, 0x04, 0x00, 0x34, 0x03, 0x00, 0x00, - 0x3d, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x65, 0x61, 0x63, 0x68, - 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x5e, 0x39, 0x04, 0x00, 0x00, 0x19, 0x03, 0x00, - 0x21, 0x04, 0x01, 0x00, 0x23, 0x03, 0x27, 0x03, 0x00, 0x0f, 0x5e, 0x03, - 0x00, 0x19, 0x04, 0x00, 0x21, 0x05, 0x01, 0x00, 0x01, 0x06, 0x03, 0x25, + 0x00, 0x00, 0x01, 0x00, 0x08, 0x40, 0x62, 0x5f, 0x70, 0x61, 0x73, 0x74, + 0x65, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x39, 0x00, 0x00, 0x01, 0x01, 0x02, + 0x01, 0x01, 0x03, 0x02, 0x1a, 0x03, 0x00, 0x3d, 0x03, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x13, 0x40, 0x62, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, + 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x00, 0x00, + 0x00, 0x01, 0x43, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc1, 0x39, 0x04, 0x40, 0x01, 0x26, 0x00, 0x06, 0x26, 0x00, + 0x05, 0x26, 0x00, 0x04, 0x11, 0x02, 0x11, 0x03, 0x01, 0x05, 0x04, 0x01, + 0x08, 0x01, 0x1d, 0x09, 0x00, 0x32, 0x08, 0x01, 0x01, 0x27, 0x08, 0x00, + 0x07, 0x01, 0x08, 0x01, 0x53, 0x01, 0x08, 0x01, 0x01, 0x08, 0x02, 0x29, + 0x08, 0x00, 0x03, 0x26, 0x00, 0x31, 0x12, 0x06, 0x1d, 0x08, 0x02, 0x33, + 0x08, 0x03, 0x01, 0x07, 0x08, 0x01, 0x08, 0x07, 0x10, 0x09, 0x04, 0x62, + 0x0a, 0x00, 0x34, 0x08, 0x05, 0x01, 0x30, 0x08, 0x06, 0x28, 0x08, 0x00, + 0x0d, 0x01, 0x08, 0x07, 0x01, 0x09, 0x05, 0x34, 0x08, 0x07, 0x00, 0x26, + 0x00, 0x02, 0x11, 0x08, 0x26, 0x00, 0x5b, 0x30, 0x08, 0x06, 0x28, 0x08, + 0x00, 0x22, 0x01, 0x08, 0x02, 0x1d, 0x09, 0x00, 0x32, 0x08, 0x01, 0x01, + 0x27, 0x08, 0x00, 0x07, 0x01, 0x08, 0x02, 0x53, 0x02, 0x08, 0x01, 0x01, + 0x08, 0x01, 0x62, 0x09, 0x01, 0x34, 0x08, 0x08, 0x00, 0x26, 0x00, 0x32, + 0x01, 0x08, 0x03, 0x1d, 0x09, 0x09, 0x32, 0x08, 0x01, 0x01, 0x28, 0x08, + 0x00, 0x22, 0x01, 0x08, 0x02, 0x1d, 0x09, 0x00, 0x32, 0x08, 0x01, 0x01, + 0x27, 0x08, 0x00, 0x07, 0x01, 0x08, 0x02, 0x53, 0x02, 0x08, 0x01, 0x01, + 0x08, 0x01, 0x62, 0x09, 0x02, 0x34, 0x08, 0x08, 0x00, 0x26, 0x00, 0x02, + 0x11, 0x08, 0x3d, 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x05, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x00, 0x00, 0x05, 0x69, 0x73, 0x5f, 0x61, 0x3f, 0x00, + 0x00, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x00, 0x00, 0x03, 0x6e, + 0x65, 0x77, 0x00, 0x00, 0x03, 0x73, 0x65, 0x74, 0x00, 0x00, 0x17, 0x64, + 0x65, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, + 0x74, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x00, 0x00, + 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x69, 0x76, 0x65, 0x6e, + 0x3f, 0x00, 0x00, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x65, 0x78, 0x65, 0x63, 0x00, 0x00, 0x04, 0x65, 0x61, 0x63, 0x68, + 0x00, 0x00, 0x06, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x39, 0x04, 0x20, 0x01, 0x26, 0x00, 0x03, 0x26, 0x00, 0x02, + 0x11, 0x02, 0x01, 0x04, 0x03, 0x21, 0x05, 0x06, 0x00, 0x21, 0x06, 0x01, + 0x00, 0x01, 0x07, 0x01, 0x01, 0x08, 0x02, 0x01, 0x09, 0x04, 0x34, 0x05, + 0x00, 0x03, 0x3d, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x62, 0x69, + 0x6e, 0x64, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x39, 0x04, 0x00, 0x00, 0x21, + 0x03, 0x02, 0x00, 0x62, 0x04, 0x00, 0x34, 0x03, 0x00, 0x00, 0x3d, 0x03, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x65, 0x61, 0x63, 0x68, 0x00, 0x00, + 0x00, 0x00, 0x87, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5e, 0x39, 0x04, 0x00, 0x00, 0x19, 0x03, 0x00, 0x21, 0x04, + 0x01, 0x00, 0x23, 0x03, 0x27, 0x03, 0x00, 0x0f, 0x5e, 0x03, 0x00, 0x19, + 0x04, 0x00, 0x21, 0x05, 0x01, 0x00, 0x01, 0x06, 0x03, 0x25, 0x04, 0x19, + 0x03, 0x00, 0x21, 0x04, 0x01, 0x00, 0x23, 0x03, 0x01, 0x04, 0x01, 0x23, + 0x03, 0x27, 0x03, 0x00, 0x14, 0x52, 0x03, 0x00, 0x19, 0x04, 0x00, 0x21, + 0x05, 0x01, 0x00, 0x23, 0x04, 0x01, 0x05, 0x01, 0x01, 0x06, 0x03, 0x25, 0x04, 0x19, 0x03, 0x00, 0x21, 0x04, 0x01, 0x00, 0x23, 0x03, 0x01, 0x04, - 0x01, 0x23, 0x03, 0x27, 0x03, 0x00, 0x14, 0x52, 0x03, 0x00, 0x19, 0x04, - 0x00, 0x21, 0x05, 0x01, 0x00, 0x23, 0x04, 0x01, 0x05, 0x01, 0x01, 0x06, - 0x03, 0x25, 0x04, 0x19, 0x03, 0x00, 0x21, 0x04, 0x01, 0x00, 0x23, 0x03, - 0x01, 0x04, 0x01, 0x23, 0x03, 0x21, 0x04, 0x05, 0x01, 0x32, 0x03, 0x01, - 0x01, 0x3d, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0d, 0x40, 0x6b, 0x65, - 0x79, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x00, 0x00, - 0x02, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x03, 0x00, 0x05, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x39, 0x04, 0x00, 0x00, - 0x21, 0x03, 0x02, 0x00, 0x62, 0x04, 0x00, 0x34, 0x03, 0x00, 0x00, 0x3d, - 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x65, 0x61, 0x63, 0x68, 0x00, - 0x00, 0x00, 0x00, 0x84, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x5e, 0x39, 0x04, 0x00, 0x00, 0x19, 0x03, 0x00, 0x21, - 0x04, 0x01, 0x00, 0x23, 0x03, 0x27, 0x03, 0x00, 0x0f, 0x5e, 0x03, 0x00, - 0x19, 0x04, 0x00, 0x21, 0x05, 0x01, 0x00, 0x01, 0x06, 0x03, 0x25, 0x04, + 0x01, 0x23, 0x03, 0x21, 0x04, 0x05, 0x01, 0x32, 0x03, 0x01, 0x01, 0x3d, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0d, 0x40, 0x6b, 0x65, 0x79, 0x5f, + 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x00, 0x00, 0x02, 0x3c, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x03, 0x00, 0x05, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x39, 0x04, 0x00, 0x00, 0x21, 0x03, + 0x02, 0x00, 0x62, 0x04, 0x00, 0x34, 0x03, 0x00, 0x00, 0x3d, 0x03, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x04, 0x65, 0x61, 0x63, 0x68, 0x00, 0x00, 0x00, + 0x00, 0x84, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5e, 0x39, 0x04, 0x00, 0x00, 0x19, 0x03, 0x00, 0x21, 0x04, 0x01, + 0x00, 0x23, 0x03, 0x27, 0x03, 0x00, 0x0f, 0x5e, 0x03, 0x00, 0x19, 0x04, + 0x00, 0x21, 0x05, 0x01, 0x00, 0x01, 0x06, 0x03, 0x25, 0x04, 0x19, 0x03, + 0x00, 0x21, 0x04, 0x01, 0x00, 0x23, 0x03, 0x01, 0x04, 0x01, 0x23, 0x03, + 0x27, 0x03, 0x00, 0x14, 0x52, 0x03, 0x00, 0x19, 0x04, 0x00, 0x21, 0x05, + 0x01, 0x00, 0x23, 0x04, 0x01, 0x05, 0x01, 0x01, 0x06, 0x03, 0x25, 0x04, 0x19, 0x03, 0x00, 0x21, 0x04, 0x01, 0x00, 0x23, 0x03, 0x01, 0x04, 0x01, - 0x23, 0x03, 0x27, 0x03, 0x00, 0x14, 0x52, 0x03, 0x00, 0x19, 0x04, 0x00, - 0x21, 0x05, 0x01, 0x00, 0x23, 0x04, 0x01, 0x05, 0x01, 0x01, 0x06, 0x03, - 0x25, 0x04, 0x19, 0x03, 0x00, 0x21, 0x04, 0x01, 0x00, 0x23, 0x03, 0x01, - 0x04, 0x01, 0x23, 0x03, 0x21, 0x04, 0x03, 0x01, 0x32, 0x03, 0x01, 0x01, - 0x3d, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x40, 0x6b, 0x65, 0x79, - 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x73, 0x00, 0x00, 0x02, 0x3c, 0x3c, 0x00, - 0x4c, 0x56, 0x41, 0x52, 0x00, 0x00, 0x01, 0x23, 0x00, 0x00, 0x00, 0x16, - 0x00, 0x03, 0x63, 0x6d, 0x64, 0x00, 0x04, 0x74, 0x65, 0x78, 0x74, 0x00, - 0x01, 0x66, 0x00, 0x07, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x00, - 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x00, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x5f, - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x0b, 0x6d, 0x6f, 0x64, 0x65, 0x5f, - 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x00, 0x09, 0x6c, 0x61, 0x6e, 0x67, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x00, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x00, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, - 0x67, 0x00, 0x0a, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x00, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x05, 0x6d, 0x6f, - 0x64, 0x65, 0x73, 0x00, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x00, 0x06, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x03, 0x61, 0x70, 0x70, 0x00, 0x03, - 0x64, 0x73, 0x6c, 0x00, 0x01, 0x6b, 0x00, 0x03, 0x61, 0x63, 0x74, 0x00, - 0x03, 0x62, 0x6c, 0x6b, 0x00, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x00, 0x03, - 0x6b, 0x65, 0x79, 0x00, 0x00, 0xff, 0xff, 0x00, 0x01, 0xff, 0xff, 0x00, - 0x02, 0xff, 0xff, 0x00, 0x02, 0xff, 0xff, 0x00, 0x02, 0xff, 0xff, 0x00, - 0x02, 0xff, 0xff, 0x00, 0x02, 0xff, 0xff, 0xff, 0xff, 0x00, 0x01, 0xff, - 0xff, 0x00, 0x03, 0x00, 0x04, 0xff, 0xff, 0x00, 0x05, 0x00, 0x06, 0x00, - 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x01, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x00, 0x0b, 0xff, 0xff, 0x00, 0x0b, 0xff, 0xff, 0x00, - 0x0b, 0xff, 0xff, 0x00, 0x0b, 0xff, 0xff, 0x00, 0x0b, 0xff, 0xff, 0x00, - 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0xff, 0xff, 0x00, 0x0b, 0x00, - 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0xff, 0xff, 0x00, 0x13, 0x00, - 0x14, 0xff, 0xff, 0x00, 0x15, 0xff, 0xff, 0x00, 0x14, 0xff, 0xff, 0x00, - 0x15, 0xff, 0xff, 0x45, 0x4e, 0x44, 0x00, 0x00, 0x00, 0x00, 0x08 + 0x23, 0x03, 0x21, 0x04, 0x03, 0x01, 0x32, 0x03, 0x01, 0x01, 0x3d, 0x03, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x40, 0x6b, 0x65, 0x79, 0x5f, 0x62, + 0x69, 0x6e, 0x64, 0x73, 0x00, 0x00, 0x02, 0x3c, 0x3c, 0x00, 0x4c, 0x56, + 0x41, 0x52, 0x00, 0x00, 0x01, 0x23, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, + 0x63, 0x6d, 0x64, 0x00, 0x04, 0x74, 0x65, 0x78, 0x74, 0x00, 0x01, 0x66, + 0x00, 0x07, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x00, 0x04, 0x69, + 0x6e, 0x66, 0x6f, 0x00, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x00, 0x0b, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x79, + 0x6d, 0x62, 0x6f, 0x6c, 0x00, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x5f, 0x69, + 0x6e, 0x66, 0x6f, 0x00, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x00, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x00, + 0x0a, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x00, + 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x00, 0x05, 0x6d, 0x6f, 0x64, 0x65, + 0x73, 0x00, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x00, 0x06, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x00, 0x03, 0x61, 0x70, 0x70, 0x00, 0x03, 0x64, 0x73, + 0x6c, 0x00, 0x01, 0x6b, 0x00, 0x03, 0x61, 0x63, 0x74, 0x00, 0x03, 0x62, + 0x6c, 0x6b, 0x00, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x00, 0x03, 0x6b, 0x65, + 0x79, 0x00, 0x00, 0xff, 0xff, 0x00, 0x01, 0xff, 0xff, 0x00, 0x02, 0xff, + 0xff, 0x00, 0x02, 0xff, 0xff, 0x00, 0x02, 0xff, 0xff, 0x00, 0x02, 0xff, + 0xff, 0x00, 0x02, 0xff, 0xff, 0xff, 0xff, 0x00, 0x01, 0xff, 0xff, 0x00, + 0x03, 0x00, 0x04, 0xff, 0xff, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x0b, 0xff, 0xff, 0x00, 0x0b, 0xff, 0xff, 0x00, 0x0b, 0xff, + 0xff, 0x00, 0x0b, 0xff, 0xff, 0x00, 0x0b, 0xff, 0xff, 0x00, 0x0b, 0x00, + 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x0f, 0x00, + 0x10, 0x00, 0x11, 0x00, 0x12, 0xff, 0xff, 0x00, 0x13, 0x00, 0x14, 0xff, + 0xff, 0x00, 0x15, 0xff, 0xff, 0x00, 0x14, 0xff, 0xff, 0x00, 0x15, 0xff, + 0xff, 0x45, 0x4e, 0x44, 0x00, 0x00, 0x00, 0x00, 0x08 }; -constexpr unsigned int _tmp___crib_precompiled_mrb_len = 9359; +constexpr unsigned int _tmp___crib_precompiled_mrb_len = 9429; diff --git a/include/syntax/decl.h b/include/syntax/decl.h index cff61b9..a229d9d 100644 --- a/include/syntax/decl.h +++ b/include/syntax/decl.h @@ -3,6 +3,7 @@ #include "io/knot.h" #include "io/sysio.h" +#include "pch.h" #include "syntax/trie.h" struct Highlight { @@ -40,9 +41,4 @@ struct LineData { std::shared_ptr out_state{nullptr}; }; -struct CustomState { - mrb_value state; - CustomState(mrb_value s) : state(s) {} -}; - #endif diff --git a/include/syntax/langs.h b/include/syntax/langs.h index 384628a..89bfe52 100644 --- a/include/syntax/langs.h +++ b/include/syntax/langs.h @@ -1,6 +1,7 @@ #ifndef SYNTAX_LANGS_H #define SYNTAX_LANGS_H +#include "scripting/decl.h" #include "syntax/decl.h" #define DEF_LANG(name) \ @@ -15,6 +16,12 @@ #name, { name##_parse, name##_state_match } \ } +struct CustomState { + mrb_value state; + CustomState(mrb_value s) : state(s) { mrb_gc_register(mrb, state); } + ~CustomState() { mrb_gc_unregister(mrb, state); } +}; + template inline std::shared_ptr ensure_state(std::shared_ptr state) { using U = typename T::full_state_type; diff --git a/samples/ruby.rb b/samples/ruby.rb index 9f86f8c..8e4733e 100644 --- a/samples/ruby.rb +++ b/samples/ruby.rb @@ -24,10 +24,10 @@ s wow 々〆〤]/ UNICORE = / - s - {#{ss}} - \C-s\u{10} - / +s +{#{ss}} +\C-s\u{10} +/ UNINITCORE = %( diff --git a/src/editor/indents.cc b/src/editor/indents.cc index 3c6301b..6abecb0 100644 --- a/src/editor/indents.cc +++ b/src/editor/indents.cc @@ -226,8 +226,8 @@ void IndentationEngine::insert_new_line(Coord cursor) { if (!end_matched && is_end_start != kLangtoBlockEndsStart.end()) for (auto end : is_end_start->second) if (starts_with(trim(line), end)) { - cursor.col = - set_indent(cursor.row, (int64_t)indent_expected(cursor.row) - 1); + cursor.col = set_indent( + cursor.row, (int64_t)indent_expected(cursor.row) - (int64_t)1); break; } lock.lock(); @@ -248,7 +248,7 @@ void IndentationEngine::insert_new_line(Coord cursor) { } std::string ending = trim(std::string(line + cursor.col, len - cursor.col)); std::string before = trim(std::string(line, cursor.col)); - uint32_t c_indent = indent_real(line, len); + int64_t c_indent = indent_real(line, len); if (!ending.empty()) { bool ending_valid = false; bool starting_valid = false; @@ -271,14 +271,13 @@ void IndentationEngine::insert_new_line(Coord cursor) { if (is_end_set != kLangtoBlockStartsEnd.end()) for (auto end : is_end_set->second) if (ends_with(before, end)) { - c_indent++; starting_valid = true; break; } if (!starting_valid && is_start_set != kLangtoBlockStartsStart.end()) for (auto end : is_start_set->second) if (starts_with(before, end)) { - c_indent++; + starting_valid = true; break; } if (ending_valid && starting_valid) @@ -286,7 +285,7 @@ void IndentationEngine::insert_new_line(Coord cursor) { (indent == 1 ? std::string(c_indent, '\t') : std::string(c_indent * indent, ' ')) + ending; - else if (ending_valid && c_indent) + else if (ending_valid) c_indent--; } auto is_end_set = kLangtoBlockStartsEnd.find(editor->lang.name); @@ -305,11 +304,13 @@ void IndentationEngine::insert_new_line(Coord cursor) { c_indent++; break; } + if (c_indent < 0) + c_indent = 0; formatted = "\n" + (indent == 1 ? std::string(c_indent, '\t') : std::string(c_indent * indent, ' ')) + ending; - Coord new_cursor = {cursor.row + 1, c_indent * indent}; + Coord new_cursor = {cursor.row + 1, (uint32_t)c_indent * indent}; edit_replace(editor, cursor, {cursor.row, len}, formatted.data(), formatted.size()); editor->cursor = new_cursor; diff --git a/src/scripting/process.cc b/src/scripting/process.cc index 94460a3..49b12a7 100644 --- a/src/scripting/process.cc +++ b/src/scripting/process.cc @@ -1,9 +1,9 @@ #include "io/sysio.h" #include "main.h" +#include "pch.h" #include "scripting/decl.h" #include "scripting/ruby_compiled.h" #include "utils/utils.h" -#include std::unordered_map> custom_highlighters; @@ -73,6 +73,39 @@ void ruby_start() { mrb_value block = mrb_funcall(mrb, mod_val, "b_startup", 0); if (!mrb_nil_p(block)) mrb_funcall(mrb, block, "call", 0); + mrb_garbage_collect(mrb); +} + +static mrb_value sym_fg; +static mrb_value sym_bg; +static mrb_value sym_flags; +static mrb_value sym_start; +static mrb_value sym_length; +static mrb_value sym_mode; +static mrb_value sym_lang_name; +static mrb_value sym_filename; +static mrb_value sym_width; +static mrb_value sym_normal; +static mrb_value sym_insert; +static mrb_value sym_select; +static mrb_value sym_runner; +static mrb_value sym_jumper; + +inline void initialize_symbols() { + sym_fg = mrb_symbol_value(mrb_intern_cstr(mrb, "fg")); + sym_bg = mrb_symbol_value(mrb_intern_cstr(mrb, "bg")); + sym_flags = mrb_symbol_value(mrb_intern_cstr(mrb, "flags")); + sym_start = mrb_symbol_value(mrb_intern_cstr(mrb, "start")); + sym_length = mrb_symbol_value(mrb_intern_cstr(mrb, "length")); + sym_mode = mrb_symbol_value(mrb_intern_cstr(mrb, "mode")); + sym_lang_name = mrb_symbol_value(mrb_intern_cstr(mrb, "lang_name")); + sym_filename = mrb_symbol_value(mrb_intern_cstr(mrb, "filename")); + sym_width = mrb_symbol_value(mrb_intern_cstr(mrb, "width")); + sym_normal = mrb_symbol_value(mrb_intern_cstr(mrb, "normal")); + sym_insert = mrb_symbol_value(mrb_intern_cstr(mrb, "insert")); + sym_select = mrb_symbol_value(mrb_intern_cstr(mrb, "select")); + sym_runner = mrb_symbol_value(mrb_intern_cstr(mrb, "runner")); + sym_jumper = mrb_symbol_value(mrb_intern_cstr(mrb, "jumper")); } inline static std::vector @@ -85,14 +118,11 @@ convert_highlights(mrb_state *mrb, mrb_value highlights_val) { mrb_value item = mrb_ary_ref(mrb, highlights_val, i); if (!mrb_hash_p(item)) continue; - auto get_sym = [&](const char *name) { - return mrb_symbol_value(mrb_intern_cstr(mrb, name)); - }; - mrb_value fg_v = mrb_hash_get(mrb, item, get_sym("fg")); - mrb_value bg_v = mrb_hash_get(mrb, item, get_sym("bg")); - mrb_value flags_v = mrb_hash_get(mrb, item, get_sym("flags")); - mrb_value start_v = mrb_hash_get(mrb, item, get_sym("start")); - mrb_value length_v = mrb_hash_get(mrb, item, get_sym("length")); + mrb_value fg_v = mrb_hash_get(mrb, item, sym_fg); + mrb_value bg_v = mrb_hash_get(mrb, item, sym_bg); + mrb_value flags_v = mrb_hash_get(mrb, item, sym_flags); + mrb_value start_v = mrb_hash_get(mrb, item, sym_start); + mrb_value length_v = mrb_hash_get(mrb, item, sym_length); BarLight bl{}; if (!mrb_nil_p(fg_v)) bl.highlight.fg = (uint32_t)mrb_fixnum(fg_v); @@ -114,36 +144,42 @@ BarLine bar_contents(uint8_t mode, std::string lang_name, uint32_t warnings, std::string foldername, uint32_t line, uint32_t max_line, uint32_t width) { BarLine bar_line; + static bool initialed = false; + if (!initialed) { + initialize_symbols(); + initialed = true; + } + int ai = mrb_gc_arena_save(mrb); mrb_value info = mrb_hash_new(mrb); - mrb_value key_mode = mrb_symbol_value(mrb_intern_cstr(mrb, "mode")); + mrb_value key_mode = sym_mode; mrb_value val_mode; switch (mode) { case NORMAL: - val_mode = mrb_symbol_value(mrb_intern_cstr(mrb, "normal")); + val_mode = sym_normal; break; case INSERT: - val_mode = mrb_symbol_value(mrb_intern_cstr(mrb, "insert")); + val_mode = sym_insert; break; case SELECT: - val_mode = mrb_symbol_value(mrb_intern_cstr(mrb, "select")); + val_mode = sym_select; break; case RUNNER: - val_mode = mrb_symbol_value(mrb_intern_cstr(mrb, "runner")); + val_mode = sym_runner; break; case JUMPER: - val_mode = mrb_symbol_value(mrb_intern_cstr(mrb, "jumper")); + val_mode = sym_jumper; break; } mrb_hash_set(mrb, info, key_mode, val_mode); - mrb_value key_lang_name = mrb_symbol_value(mrb_intern_cstr(mrb, "lang_name")); + mrb_value key_lang_name = sym_lang_name; mrb_value val_lang_name = mrb_symbol_value(mrb_intern_cstr(mrb, lang_name.c_str())); mrb_hash_set(mrb, info, key_lang_name, val_lang_name); - mrb_value key_filename = mrb_symbol_value(mrb_intern_cstr(mrb, "filename")); + mrb_value key_filename = sym_filename; mrb_value val_filename = mrb_str_new(mrb, filename.c_str(), filename.length()); mrb_hash_set(mrb, info, key_filename, val_filename); - mrb_value key_width = mrb_symbol_value(mrb_intern_cstr(mrb, "width")); + mrb_value key_width = sym_width; mrb_value val_width = mrb_fixnum_value(width); mrb_hash_set(mrb, info, key_width, val_width); mrb_value mod_val = mrb_obj_value(C_module); @@ -164,10 +200,12 @@ BarLine bar_contents(uint8_t mode, std::string lang_name, uint32_t warnings, mrb_value highlights_val = mrb_hash_get( mrb, val_line, mrb_symbol_value(mrb_intern_cstr(mrb, "highlights"))); bar_line.highlights = convert_highlights(mrb, highlights_val); + mrb_gc_arena_restore(mrb, ai); return bar_line; } void ruby_copy(const char *text, size_t len) { + int ai = mrb_gc_arena_save(mrb); if (C_module == nullptr) return; mrb_value mod_val = mrb_obj_value(C_module); @@ -181,9 +219,11 @@ void ruby_copy(const char *text, size_t len) { mrb_close(mrb); exit(1); } + mrb_gc_arena_restore(mrb, ai); } std::string ruby_paste() { + int ai = mrb_gc_arena_save(mrb); if (C_module == nullptr) return ""; mrb_value mod_val = mrb_obj_value(C_module); @@ -197,10 +237,15 @@ std::string ruby_paste() { mrb_close(mrb); exit(1); } - if (mrb_string_p(val)) - return std::string(RSTRING_PTR(val), RSTRING_LEN(val)); + if (mrb_string_p(val)) { + std::string result = std::string(RSTRING_PTR(val), RSTRING_LEN(val)); + mrb_gc_arena_restore(mrb, ai); + return result; + } + mrb_gc_arena_restore(mrb, ai); return ""; } + mrb_gc_arena_restore(mrb, ai); return ""; } @@ -254,6 +299,7 @@ void load_custom_highlighters() { mrb_hash_get(mrb, val_hash, mrb_symbol_value(matcher_sym)); custom_highlighters[key] = {parse_block, match_block}; } + mrb_garbage_collect(mrb); } bool custom_compare(mrb_value match_block, mrb_value state1, mrb_value state2) { @@ -341,6 +387,7 @@ static std::vector read_theme() { entry.strikethrough = mrb_test(strikethrough); result.push_back(entry); } + mrb_garbage_collect(mrb); return result; } @@ -409,6 +456,7 @@ std::vector read_lsps() { std::vector args = array_to_vector(args_array); result.push_back({cmd, args}); } + mrb_garbage_collect(mrb); return result; } @@ -449,6 +497,7 @@ std::vector read_languages() { lang.lsp_command = std::string(RSTRING_PTR(lsp), RSTRING_LEN(lsp)); result.push_back(lang); } + mrb_garbage_collect(mrb); return result; }