]> git.lizzy.rs Git - micro.git/commitdiff
Remove duplicate utf8 code
authorZachary Yedidia <zyedidia@gmail.com>
Mon, 8 Jan 2018 21:38:59 +0000 (16:38 -0500)
committerZachary Yedidia <zyedidia@gmail.com>
Mon, 8 Jan 2018 21:38:59 +0000 (16:38 -0500)
cmd/micro/runtime.go
runtime/plugins/autoclose/utf8/LICENSE [deleted file]
runtime/plugins/autoclose/utf8/README.md [deleted file]
runtime/plugins/autoclose/utf8/utf8.lua [deleted file]

index 43f4ca529b482a4152024774920707a3d2112ac2..a8c893105e94c508123ef75a855233d686bcc8c7 100644 (file)
@@ -42,9 +42,6 @@
 // runtime/help/plugins.md
 // runtime/help/tutorial.md
 // runtime/plugins/autoclose/autoclose.lua
-// runtime/plugins/autoclose/utf8/LICENSE
-// runtime/plugins/autoclose/utf8/README.md
-// runtime/plugins/autoclose/utf8/utf8.lua
 // runtime/plugins/ftoptions/ftoptions.lua
 // runtime/plugins/linter/linter.lua
 // runtime/plugins/literate/README.md
@@ -1071,66 +1068,6 @@ func runtimePluginsAutocloseAutocloseLua() (*asset, error) {
        return a, nil
 }
 
-var _runtimePluginsAutocloseUtf8License = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x5c\x51\xcd\x8e\xab\x36\x14\xde\xfb\x29\x3e\xcd\x6a\x46\x42\xd3\x9f\x45\x17\xdd\x79\xc0\x09\x56\xc1\x8e\x8c\x73\xd3\x2c\x09\x38\x83\x2b\x82\x11\x76\x3a\xca\xdb\x57\x87\x64\xee\xed\xdc\x15\xc2\xe7\x7c\xbf\xc7\x0e\x0e\xb5\xb4\xa8\x7c\xe7\xa6\xe8\xf0\x5c\x4b\xfb\xc2\x58\x1e\xe6\xdb\xe2\xdf\x87\x84\xe7\xee\x05\xbf\xff\xfa\xdb\x1f\x68\x92\x9b\x5d\x8a\x8c\xed\xdc\x72\xf1\x31\xfa\x30\xc1\x47\x0c\x6e\x71\xa7\x1b\xde\x97\x76\x4a\xae\xcf\x70\x5e\x9c\x43\x38\xa3\x1b\xda\xe5\xdd\x65\x48\x01\xed\x74\xc3\xec\x96\x18\x26\x84\x53\x6a\xfd\xe4\xa7\x77\xb4\xe8\xc2\x7c\x63\xe1\x8c\x34\xf8\x88\x18\xce\xe9\xa3\x5d\x1c\xda\xa9\x47\x1b\x63\xe8\x7c\x9b\x5c\x8f\x3e\x74\xd7\x8b\x9b\x52\x9b\x48\xef\xec\x47\x17\xf1\x9c\x06\x87\xa7\xe6\x81\x78\x7a\x59\x45\x7a\xd7\x8e\xcc\x4f\xa0\xd9\xe7\x08\x1f\x3e\x0d\xe1\x9a\xb0\xb8\x98\x16\xdf\x11\x47\x06\x3f\x75\xe3\xb5\x27\x0f\x9f\xe3\xd1\x5f\xfc\x43\x81\xe0\x6b\xf0\xc8\x52\xc0\x35\xba\x6c\xf5\x99\xe1\x12\x7a\x7f\xa6\xaf\x5b\x63\xcd\xd7\xd3\xe8\xe3\x90\xa1\xf7\x44\x7d\xba\x26\x97\x21\xd2\xe3\xda\x63\x46\x39\x7e\x09\x0b\xa2\x1b\x47\xd6\x85\xd9\xbb\x88\x35\xeb\x0f\x77\xeb\x0e\x59\x9f\xa9\xd0\xf4\xa8\x28\xd2\xcb\xc7\x10\x2e\x5f\x93\xf8\xc8\xce\xd7\x65\xf2\x71\x70\x2b\xa6\x0f\x88\x61\x55\xfc\xc7\x75\x89\x5e\x68\xfd\x1c\xc6\x31\x7c\x50\xb4\x2e\x4c\xbd\xa7\x44\xf1\x4f\xc6\xe8\xc8\xed\x29\xfc\xeb\xd6\x2c\xf7\xbb\x4e\x21\xf9\xee\x5e\xf7\x7a\x80\xf9\xc7\x55\x1f\xa3\x38\xb4\xe3\x88\x93\x7b\x14\xe6\x7a\xf8\x09\xed\xff\xe2\x2c\x24\x1f\x53\x3b\x25\xdf\x8e\x98\xc3\xb2\xea\xfd\x1c\xf3\x95\x31\x5b\x0a\x34\x7a\x63\x0f\xdc\x08\xc8\x06\x3b\xa3\xbf\xc9\x42\x14\x78\xe2\x0d\x64\xf3\x94\xe1\x20\x6d\xa9\xf7\x16\x07\x6e\x0c\x57\xf6\x08\xbd\x01\x57\x47\xfc\x25\x55\x91\x41\xfc\xbd\x33\xa2\x69\xa0\x0d\x93\xf5\xae\x92\xa2\xc8\x20\x55\x5e\xed\x0b\xa9\xb6\x78\xdb\x5b\x28\x6d\x51\xc9\x5a\x5a\x51\xc0\x6a\x90\xe0\x83\x4a\x8a\x86\xc8\x6a\x61\xf2\x92\x2b\xcb\xdf\x64\x25\xed\x31\x63\x1b\x69\x15\x71\x6e\xb4\x01\xc7\x8e\x1b\x2b\xf3\x7d\xc5\x0d\x76\x7b\xb3\xd3\x8d\x00\x57\x05\x94\x56\x52\x6d\x8c\x54\x5b\x51\x0b\x65\x5f\x21\x15\x94\x86\xf8\x26\x94\x45\x53\xf2\xaa\x22\x29\xc6\xf7\xb6\xd4\x86\xfc\x21\xd7\xbb\xa3\x91\xdb\xd2\xa2\xd4\x55\x21\x4c\x83\x37\x81\x4a\xf2\xb7\x4a\xdc\xa5\xd4\x11\x79\xc5\x65\x9d\xa1\xe0\x35\xdf\x8a\x15\xa5\x6d\x29\x0c\xa3\xb5\xbb\x3b\x1c\x4a\x41\x4f\xa4\xc7\x15\x78\x6e\xa5\x56\x14\x23\xd7\xca\x1a\x9e\xdb\x0c\x56\x1b\xfb\x1d\x7a\x90\x8d\xc8\xc0\x8d\x6c\xa8\x90\x8d\xd1\x75\xc6\xa8\x4e\xbd\xa1\x15\xa9\x08\xa7\xc4\x9d\x85\xaa\xc6\x97\x8b\x68\xb3\xfe\xef\x1b\xf1\x9d\x10\x85\xe0\x95\x54\xdb\x86\xc0\x14\xf1\x73\xf9\x95\xfd\x17\x00\x00\xff\xff\x10\xf3\xef\xf2\x32\x04\x00\x00")
-
-func runtimePluginsAutocloseUtf8LicenseBytes() ([]byte, error) {
-       return bindataRead(
-               _runtimePluginsAutocloseUtf8License,
-               "runtime/plugins/autoclose/utf8/LICENSE",
-       )
-}
-
-func runtimePluginsAutocloseUtf8License() (*asset, error) {
-       bytes, err := runtimePluginsAutocloseUtf8LicenseBytes()
-       if err != nil {
-               return nil, err
-       }
-
-       info := bindataFileInfo{name: "runtime/plugins/autoclose/utf8/LICENSE", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
-       a := &asset{bytes: bytes, info: info}
-       return a, nil
-}
-
-var _runtimePluginsAutocloseUtf8ReadmeMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x95\x4f\x6f\xdb\x36\x18\xc6\xcf\xe6\xa7\x78\xa1\x40\xa8\xdd\xc8\x52\xd2\x35\x5b\x11\x40\x87\x6c\xa7\x02\xc1\x76\xc8\x2e\x43\x90\x36\xb4\x44\x5b\x5c\x28\x51\x23\xa9\x28\xc6\x30\x20\xc8\x2e\x1d\x16\xb4\xa7\xed\x32\x0c\xfb\x0a\xfd\x17\x20\x5b\xd2\xe4\xb2\xb3\x23\x7d\x87\x14\x3b\xf4\x4b\x0c\x24\x6d\x47\xb5\x1b\x17\x18\x16\x20\x92\x68\xf2\x7d\xde\x1f\x1f\x92\x2f\x97\xa0\x50\xfd\x07\x3e\x2b\x30\xe2\x19\xe9\xf6\x29\x23\x90\x17\x82\x74\x59\x81\x61\xcd\x5f\x05\x41\x06\xe4\x00\x18\xed\x09\x2c\x86\x08\x7d\x9d\x50\x39\x69\xc1\x63\x2a\x1f\x83\x4a\x08\x48\x9a\xe6\x8c\x40\x89\x87\xa0\x38\xe0\x38\x36\xaa\x20\x8b\x3c\xe7\x42\x01\xcd\x14\x87\x21\x2f\x04\xe0\x3c\x67\x34\xc2\x8a\xf2\xcc\x47\x68\x8b\xa7\x04\xc8\x01\xd6\xc1\x12\xfa\x82\xa7\x90\x28\x95\xaf\x07\x41\x59\x96\x9a\xc9\xe7\x62\x10\xa4\x38\x2b\x30\x0b\xd6\xfc\xd5\xf1\xa7\x9f\xa8\x94\x2d\xad\xf9\xf7\x61\x1d\xed\xee\xee\x6e\x16\x18\x31\x1e\x61\x66\x93\x86\x20\xc8\x77\x05\x15\x04\x1c\xdd\x76\xd0\xb8\x53\x42\x08\x4e\x42\x18\xe3\x50\x72\xc1\x62\x9b\x6f\xb3\xc0\x0e\xea\x73\x01\x25\xd0\x0c\xa4\x12\x34\x1b\xf8\x83\x14\xab\x28\x69\x4b\x0f\x1c\x17\x2f\x3b\x1d\x88\x39\x02\x00\xc8\x05\xcd\x54\xbb\xec\x20\x92\xc5\xa8\xdb\xdd\xde\x46\x46\x0f\x19\x3d\xa4\xf5\x90\x86\xd9\xd9\xe9\x76\x11\x32\xf9\xaa\x3f\xea\xc3\xea\xb4\x7a\x59\x9d\xd4\x47\x1e\x54\xe7\xd5\x69\x7d\xe8\x41\x75\x51\x1f\xcd\x64\x36\xab\xd0\xc8\xbb\xfd\xc8\xcd\xdd\xd8\x95\x6e\xb4\xb3\x10\xa0\x99\x00\x59\x7d\xa4\xe5\x1b\x20\x76\xfa\x0a\x42\xf8\xfe\x07\x4b\xa5\x49\x43\x03\xed\x81\xe2\xe1\x94\x64\xcf\x83\xfd\x0f\xdb\xd0\x76\xcb\xe5\x4e\x68\x9e\x37\x34\x6a\x7b\x6f\x07\x42\xd8\x37\x34\x36\xde\x84\xe7\x98\x0a\xd9\x56\x33\xd4\x7b\xde\x7e\x83\x5b\xf1\x96\x26\xd4\x24\x2d\x6b\x9f\x85\x6d\x62\x5e\x9f\x3d\x0d\xaf\x4f\x7f\xfd\xe7\x97\x63\x0f\xde\x3e\x79\x3e\xcf\x39\x6b\x5a\xdb\xb8\x66\x3c\xeb\x84\xcd\xc6\xff\xc3\xfc\xf6\xc9\x73\x03\x7d\x7d\xf6\xb4\x65\xb9\xde\x73\xf8\x00\xc2\xa9\x73\xb2\xe8\xb5\x9b\x9b\xcd\x99\x78\xa8\x3f\xdc\x55\x70\x57\x9d\x0e\xb2\x39\x0e\x3a\xa8\xdb\xb5\x43\x9b\xbb\xd3\x9a\x82\xb4\xa8\x9d\xa6\x91\xdc\x48\xf8\xb7\x20\xf7\xff\xfe\x4d\x11\x67\x66\xc2\xb7\x28\x9b\x88\x46\xd8\xf8\x65\x95\x17\xe1\xba\xe5\xb2\x79\xad\x80\xbb\xe2\x78\xb0\xba\x98\xf7\x63\xa4\x37\xa0\xb7\x8b\xce\xa2\x2e\x66\xbc\x39\xbf\x13\x6f\x5d\x79\xf7\xc6\xe3\x7b\x73\x4e\xd8\x28\xab\xb0\x59\x60\x13\x3f\x87\x3d\x7a\x35\x3a\x19\xfd\x39\x7a\x01\xa3\xbf\xae\x8e\xaf\x7e\x1c\x9d\x8f\x2e\x61\xf4\xe2\xea\xf0\xea\x78\x9a\xaa\xe1\xb9\xce\x38\xbb\x04\xf3\x89\x9b\x52\x13\x79\x0d\x60\x75\x75\x09\x43\x5f\x72\x45\x23\xe2\xe9\x62\x2a\x08\x60\x41\x40\xea\xda\x18\x31\x2c\x25\x91\xa0\x12\xac\x20\xc2\x99\x9e\xf9\x1e\xf0\x8c\x0d\xa1\xa4\x2a\x01\x86\x15\xcd\xda\x1b\x5b\x5f\x3c\x7c\xd8\x01\x39\x4c\x7b\x9c\x49\xcf\x6c\xeb\x98\x28\x4c\x99\x04\x49\xc8\xba\x29\xaa\x72\x3d\x08\x06\x54\x25\x45\xcf\x8f\x78\x1a\x6c\x29\x92\x13\x25\x83\x49\xf5\x0f\x7a\x8c\xf7\x82\x14\x4b\x45\xc4\xf4\xc7\xa5\xcd\xfb\x9f\xad\x20\xf4\x55\x1f\x22\x5e\x08\x49\x74\x0d\x37\x18\x31\x07\xa5\x2f\x02\x25\x68\xb4\x37\x2d\xc2\x73\xc7\x49\xeb\x4c\x4f\x94\xfe\xb3\x6b\xd9\x3c\x82\x7a\xf2\x9f\x17\xca\xca\x69\x69\x46\x70\xac\x2f\x91\x7d\x22\x86\x7a\x3c\xce\x06\x04\x88\x10\x5c\x48\x1f\xbe\xe1\x05\x94\xda\xa1\x12\x8b\x8c\xc4\x3e\x42\x1b\xc0\xa8\x52\x8c\x40\x8f\x2a\x48\xb9\x20\xfa\xb2\x21\x82\x48\x45\xb3\xc1\xf4\x6e\x59\x7c\x4f\xdc\xd1\xed\x3b\xff\x09\x7f\x72\xb7\x28\x61\xaa\xfd\x65\xfd\x73\xfd\x93\x7d\x42\x75\x51\x9d\x8d\xff\x2f\xa0\x7e\x06\xd5\xcb\xea\xa2\x7a\x5d\x9d\xd6\x47\xd5\x49\x75\x56\x1f\x43\xf5\x46\x77\x3a\xe3\x9d\x22\x95\x58\xef\xd3\x2c\x6e\x3b\x6d\xbf\x3a\xf3\x97\x3b\xd5\x1b\xa7\xa3\x77\x0f\x3c\x68\xdd\xfb\xb4\xf5\x51\x35\xd4\xd0\xb1\x5b\x59\x0f\x36\xa7\xed\xdd\xab\xd7\xef\x7e\x3f\x1f\xab\xcd\x30\xda\x3e\xfb\xbc\x85\xd2\x76\xb6\x3e\x69\x66\xb0\x35\xd7\x79\x54\x5d\x6e\x1b\x26\x2b\xb7\x73\xb7\x7e\xf6\xe1\x34\xef\xc1\x9b\x45\xff\x37\x00\x00\xff\xff\x76\xcf\xbd\x32\x79\x08\x00\x00")
-
-func runtimePluginsAutocloseUtf8ReadmeMdBytes() ([]byte, error) {
-       return bindataRead(
-               _runtimePluginsAutocloseUtf8ReadmeMd,
-               "runtime/plugins/autoclose/utf8/README.md",
-       )
-}
-
-func runtimePluginsAutocloseUtf8ReadmeMd() (*asset, error) {
-       bytes, err := runtimePluginsAutocloseUtf8ReadmeMdBytes()
-       if err != nil {
-               return nil, err
-       }
-
-       info := bindataFileInfo{name: "runtime/plugins/autoclose/utf8/README.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
-       a := &asset{bytes: bytes, info: info}
-       return a, nil
-}
-
-var _runtimePluginsAutocloseUtf8Utf8Lua = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x6d\x73\xda\xc8\xf2\xef\x6b\xf8\x14\xbd\xce\x49\x01\x6b\xe1\x20\xc1\xc6\x38\x1b\x72\x8b\x60\xbc\xa1\xae\x63\x7c\x01\x6f\x4e\x8e\xcb\x9b\x12\x62\x30\x4a\x84\xc4\x91\x06\xc7\xbe\xa9\xec\x67\xff\x57\xf7\x3c\x68\x24\x04\x76\xbc\xd9\xdd\x7f\x9d\x3a\xfb\x22\x16\xf3\xd0\xfd\xeb\x9e\x9e\x9e\x9e\x9e\x91\xb6\x5e\x87\x7f\x0c\x66\x2f\x60\xcd\xe7\xed\x83\x60\xed\x82\x7d\x78\x04\x4e\xa3\x71\x54\x6f\xb4\xea\x8d\x26\xd8\xed\x17\x76\xe3\x45\xa3\xf9\x2f\x58\xb9\x09\x77\xe1\x1f\xe5\x7a\xbd\x5c\xaf\xc3\x79\x1c\xdd\xf8\x33\x96\xc0\xc5\xe4\xa4\xde\x06\xf7\xb3\x1b\x33\x48\x78\xec\x87\xd7\x30\x5f\x87\x1e\xf7\xa3\x30\x01\x7f\xb9\x0a\xd8\x92\x85\x9c\xcd\xc0\x0f\x61\xb5\x8e\x19\x04\x6b\xf7\x05\x52\xf8\x91\x78\x06\x2c\xac\x26\xb5\xf4\x77\xb2\x9e\x56\x13\x0b\x7c\x0b\x3e\x1a\xa5\x31\xbb\x61\x71\xc2\x32\x2d\xbd\x85\x1b\x57\xd7\xa1\xef\x45\x33\x66\x14\xcb\x92\x02\x22\xd7\x2c\x94\xd4\x93\xf5\xf4\x43\xc0\x42\xa3\x6e\xee\x87\xb3\x6a\xc2\x63\x0b\x62\x76\xcd\x6e\x2d\xf0\x43\x9f\x5b\xb0\x0a\x5c\xdf\x6c\xb6\x74\xb9\xb7\xd8\x68\x67\xf2\xd8\x6c\xe1\x06\x81\xd9\x80\x20\x18\xd5\x31\x5b\x05\x16\x04\xfe\x52\xd0\xc1\x96\x83\x39\x35\x9d\xb9\xdc\xa5\x21\xa9\x7a\x51\xc8\x5d\x3f\x44\xdd\xf2\x05\x83\x20\xfa\xcc\xe2\x97\xf5\x57\xeb\xd5\x8a\xc5\xe0\xb9\x09\x83\xa5\xbb\x5a\xf9\xe1\x75\x52\x03\x3f\x81\x20\x72\x67\x6c\x66\x61\xdb\x84\x21\x41\x77\x36\xf3\x71\x40\xdc\xc0\x18\x1b\x1c\x30\xf7\xc6\xf5\x03\x77\x1a\x30\x63\x44\x88\x6a\x46\xd3\xc4\x4f\x94\x60\x61\x37\x30\xc9\x4c\xd9\xc2\xbd\x61\xe0\x26\xc8\xce\x8f\x21\x8c\xc2\x8c\x4d\x78\xd1\x3a\xe4\x2c\x5e\xb9\x31\x4f\xe0\xb3\xcf\x17\x24\x02\xbb\xf5\xd8\x0a\x09\x20\x41\xbe\x70\xb9\xec\x83\x83\xea\x7a\x9c\xc5\x02\xdf\x3a\x21\xc3\x49\x38\x73\x67\x10\xcd\x61\x7a\xc7\x59\x02\xf3\x28\x46\xad\xc2\x3a\xf4\x79\x72\x50\x2e\xd7\xeb\x97\x97\xe5\x5e\xb4\xba\x8b\xfd\xeb\x05\x87\xaa\x57\x43\x0b\x7e\x5e\x77\x1a\x8d\x43\x0b\xfe\xef\x5d\xc0\x60\xbc\xf4\xf9\xa2\x8c\xc8\xa9\x4d\x02\x31\x4b\x58\x7c\xc3\x66\x07\xe5\x72\x2f\x0a\x79\xec\x4f\xd7\x3c\x8a\x93\x17\xe5\x52\x37\xf0\x97\xd1\x0d\x8c\x39\x5b\xb9\x61\xb9\x3c\x62\x33\x3f\x11\xf5\x7e\x14\x82\x1b\xce\x10\x15\x5a\x73\x12\xad\x63\x8f\x51\xc9\xd4\x0f\xdd\xf8\x0e\x81\x2d\x13\x4b\x48\x19\xc5\xf4\x37\x5a\xf3\xf2\x32\x9a\xf9\x73\xdf\x73\x91\x80\x45\x72\xad\x58\xbc\xf4\x39\xce\x8a\x95\x98\x47\x33\xa1\x04\x54\xcd\x3c\x0a\x82\xe8\x33\x8e\xb5\x17\x85\x62\xdc\x84\x32\x96\x8c\xbf\x28\x97\x01\x00\x7e\x84\x2c\xaa\x04\x75\x23\xe1\xa0\xf1\xc3\x72\x9d\x70\x88\x19\x1a\x0d\xd1\x74\xa7\xd1\x0d\x56\x29\x15\x85\x11\xf7\x3d\x66\x11\x31\x00\xbe\x40\xa3\xf1\x13\x8e\x64\x4c\xa6\xe1\x2c\x87\x68\xe6\x27\x5e\xe0\xfa\x4b\x16\x1f\x6c\x01\xe2\x87\xa6\x32\x14\x90\x55\x1c\xcd\xd6\x1e\x2b\xc2\x22\x31\x48\x44\x8f\xc2\x02\x42\x4a\x49\x69\x16\x79\x6b\x74\x39\xae\x1a\xaf\x67\x51\x0c\x11\x5f\xb0\x18\x96\x2e\x67\xb1\xef\x06\x49\xaa\x76\x6d\x91\xa6\x18\x4a\xb8\x33\xe6\x53\x3f\xac\x0f\xdd\x25\x43\x4c\x24\xc2\x9a\x2f\x22\x34\xf5\xb4\x8a\x86\xc0\xe7\x09\x62\xd6\xd6\x04\x4b\xf7\x0e\xa6\x0a\x18\x19\x33\x8f\x80\x85\xb3\x28\x4e\x18\x5a\xc8\x2a\x8e\x96\x11\x67\x20\xf4\xc3\x13\x98\xb1\xd8\xbf\x61\x33\x98\xc7\xd1\x52\xe8\x22\x89\xe6\x9c\x26\x92\xb2\x26\x41\x2c\x59\x31\x0f\x8d\x0a\x56\xb1\x8f\xa6\x16\xa3\x39\x85\xc2\xb0\x92\x84\x64\x28\x4f\xde\x0c\xc6\x30\x1e\x9e\x4c\xde\x75\x47\x7d\x18\x8c\xe1\x7c\x34\xfc\x75\x70\xdc\x3f\x86\xd7\xef\x61\xf2\xa6\x0f\xbd\xe1\xf9\xfb\xd1\xe0\x97\x37\x13\x78\x33\x3c\x3d\xee\x8f\xc6\xd0\x3d\x3b\x86\xde\xf0\x6c\x32\x1a\xbc\xbe\x98\x0c\x47\x63\xd8\xeb\x8e\x61\x30\xde\x2b\x63\x45\xf7\xec\x3d\xf4\xff\x79\x3e\xea\x8f\xc7\x30\x1c\xc1\xe0\xed\xf9\xe9\xa0\x7f\x0c\xef\xba\xa3\x51\xf7\x6c\x32\xe8\x8f\x2d\x18\x9c\xf5\x4e\x2f\x8e\x07\x67\xbf\x58\xf0\xfa\x62\x02\x67\xc3\x09\x9c\x0e\xde\x0e\x26\xfd\x63\x98\x0c\x2d\x64\x5a\xde\xec\x06\xc3\x13\x78\xdb\x1f\xf5\xde\x74\xcf\x26\xdd\xd7\x83\xd3\xc1\xe4\x3d\x01\x39\x19\x4c\xce\x90\xd7\xc9\x70\x04\x5d\x38\xef\x8e\x26\x83\xde\xc5\x69\x77\x04\xe7\x17\xa3\xf3\xe1\xb8\x0f\xdd\x51\xbf\x7c\x3c\x18\xf7\x4e\xbb\x83\xb7\xfd\xe3\x03\x18\x9c\xc1\xd9\x10\xfa\xbf\xf6\xcf\x26\x30\x7e\xd3\x3d\x3d\xcd\x49\x39\x7c\x77\xd6\x1f\x21\xf4\x8c\x88\xaf\xfb\x70\x3a\xe8\xbe\x3e\xed\x97\x89\xd1\xd9\x7b\x38\x1e\x8c\xfa\xbd\x09\x4a\x93\x3e\xf5\x06\xc7\xfd\xb3\x49\xf7\xd4\x82\xf1\x79\xbf\x37\xc0\x87\xfe\x3f\xfb\x6f\xcf\x4f\xbb\xa3\xf7\x96\xa4\x39\xee\xff\xbf\x8b\xfe\xd9\x64\xd0\x3d\x2d\x1f\x77\xdf\x76\x7f\xe9\x8f\xa1\x7a\x8f\x46\xce\x47\xc3\xde\xc5\xa8\xff\x16\x21\x0f\x4f\x60\x7c\xf1\x7a\x3c\x19\x4c\x2e\x26\x7d\xf8\x65\x38\x3c\x46\x3d\x97\xc7\xfd\xd1\xaf\x83\x5e\x7f\xfc\x33\x9c\x0e\xc7\xa4\xac\x8b\x71\xdf\x82\xe3\xee\xa4\x4b\x8c\xcf\x47\xc3\x93\xc1\x64\xfc\x33\x3e\xbf\xbe\x18\x0f\x48\x67\x83\xb3\x49\x7f\x34\xba\x38\x9f\x0c\x86\x67\x35\x78\x33\x7c\xd7\xff\xb5\x3f\x2a\xf7\xba\x17\xe3\xfe\x31\x29\x77\x78\x46\xa2\x4e\xde\xf4\x87\xa3\xf7\x48\x14\x75\x40\xba\xb7\xe0\xdd\x9b\xfe\xe4\x4d\x7f\x84\xfa\x24\x4d\x75\x51\x05\xe3\xc9\x68\xd0\x9b\x18\xcd\xca\xc3\x11\x4c\x86\xa3\x89\x21\x23\x9c\xf5\x7f\x39\x1d\xfc\xd2\x3f\xeb\xf5\x11\xcd\x10\xa9\xbc\x1b\x8c\xfb\x35\xe8\x8e\x06\x63\x6c\x30\x10\x6c\xdf\x75\xdf\xc3\xf0\x82\x44\xc6\x21\xba\x18\xf7\xcb\xf4\x68\x18\xac\x45\x03\x09\x83\x13\xe8\x1e\xff\x3a\x40\xd8\xb2\xf1\xf9\x70\x3c\x1e\x48\x33\x21\x95\xf5\xde\x80\x50\xf7\x41\xb9\x5e\xbf\xba\x2a\xd3\x22\xf5\xfa\xec\x44\xcc\xa2\xd1\x49\x0f\x9a\xcf\x9d\x23\xb9\x7a\x5d\x4c\x4e\xda\xf5\xc8\xe3\x8c\x27\xd0\x81\x1f\xab\xa2\x00\xd7\x1d\xa8\xe9\x7a\xfa\x09\xd0\x11\xbf\x6c\x78\x26\x1e\x1c\xf5\xd0\x54\x0f\x2d\xdd\xc5\x16\xf3\xb2\x03\x4f\x6f\x1b\x8d\xfa\xe1\x89\xae\x70\xd2\x8a\x9e\x53\x3f\x3e\x11\xa5\xdc\xf5\x03\xdd\xa4\x99\x36\xe9\x37\xe0\xe9\x6d\xb7\x51\x7f\x6d\xb4\x83\x67\x58\x61\xd7\xfb\x3d\x70\xaa\x46\x71\x0d\x9e\x21\x89\xec\x7f\x4f\x6f\xfb\xc7\xf0\xf4\xb6\xdd\xa8\x1f\x6d\x90\xe8\xd7\xfb\x27\x39\x12\x1a\x43\x2b\xc5\x70\x82\x18\x8e\x08\x43\x9e\x1f\xd6\xda\xf5\x93\x26\x34\x1f\x00\xe4\xa4\x25\x80\xb4\xb7\x32\xa5\x9f\x82\x69\x1b\xf9\xe1\x18\x95\x83\xc8\x73\x03\x5a\xea\x05\x20\x11\x55\x1e\x60\x81\xac\x93\xc3\x93\xd6\x61\x81\xac\x9b\xad\x97\xab\x4c\x1d\x16\xc8\x3a\x8c\xf2\x32\x75\x58\xa0\xea\xa2\x78\xe9\x72\xb3\x8e\x0a\x64\x6d\xc0\x42\xc8\xf4\x0c\x58\xa8\xaa\x30\x3a\xca\x54\x61\x81\xac\x8c\xd9\x2a\xdb\x2f\x66\x0a\x4c\xb2\x9e\x66\xab\x92\xf5\x54\x56\x89\xc0\xce\xa8\xa2\x02\xb2\xeb\x98\xf1\x75\x1c\x26\x62\xdd\x59\x2f\xa7\x2c\x4e\xe3\x22\x5a\x60\xa6\x77\x54\x97\x0b\xa7\xc0\xe5\x42\xa3\x3e\x45\x2e\x14\x14\x06\x49\x04\xb3\x68\x3d\x0d\x58\x82\xe1\x9b\xbb\xd1\xe7\xc6\x0d\xfc\x99\xcb\x23\x25\x8c\x0a\xfa\x74\xf8\x2d\xd8\x52\xa8\x5d\x2b\x97\x90\x66\x7c\x4d\x6b\x2f\xcc\xd8\xdc\x5d\x07\x3c\x29\x97\x7c\xe8\x80\x8f\x6b\x9d\x5d\xce\x36\xf1\x16\xcc\xfb\xe4\x87\xd7\xe5\x92\x3f\x07\x7e\xb7\xc2\xe8\x1e\x7e\xef\xc0\x9e\x90\x79\x0f\xc5\x08\xcb\xa5\x12\x8b\xe3\x28\xae\xee\x4d\xdd\x59\xda\xf7\x89\x8d\x0b\x69\x25\x83\xa3\x02\x55\xb9\xff\x60\xb7\x2b\xe6\x71\x8c\x80\xaf\x23\x0e\x7b\x07\x07\x8a\xfc\xc1\x01\xec\xd5\xf6\x6a\xe5\x12\x0b\x67\x29\x5b\x5f\xb0\x15\xda\xdc\xcd\xd6\x29\x64\x2b\xc7\x61\x0b\x5b\x3f\xcb\xb6\x5c\x92\x36\x0c\x1d\x1a\x11\xa9\x3d\xd2\xcd\x8c\x71\x5c\xbf\x43\x26\x07\x34\x64\x0c\x63\x14\x8c\x77\xf5\xa8\x58\x30\x75\x71\x9c\xa3\x30\xf5\x6c\xd8\x57\x0e\x96\xe8\x0a\x36\x89\xe7\xc1\x2b\x68\x50\xe8\xe4\xc1\xcb\x0e\xd8\xce\xa1\x92\x4e\x7b\xad\x72\xa9\x24\x4c\x8a\xc6\x87\x05\x09\x13\xfd\x3a\x60\x1f\xb5\xd2\xae\x8e\xd3\xcc\x77\x75\xca\x25\x25\x8a\x63\xca\x02\xfb\x60\xa3\x3c\x08\x20\x8c\x38\xd6\xca\x9e\x4a\xa7\xc2\xce\xe4\x60\x09\x89\x5d\x8c\x85\x99\x1b\x07\x77\xa8\x27\xa9\xa8\x4d\xb1\x1c\x41\xd6\x73\xe0\x25\xd8\x4e\x1b\xcd\xca\x73\xe0\x15\xd8\x47\x76\x9e\xc9\x20\xa4\xae\x79\xa3\x36\xc9\x4b\xc1\x9d\x9c\xe0\x8e\x63\x0a\xde\x3c\xca\x0b\xde\xdc\x29\xb8\xae\x6b\xe6\xea\x9c\x9c\x52\x28\x80\xe4\xd8\xee\xbb\xab\x07\x3a\xa9\x14\x55\xa1\xac\xe7\x0d\x53\x59\xb5\x6f\xd2\x96\xd2\x0d\x52\x6d\x1e\x9a\x54\xcd\x21\xf8\xe9\xe8\x51\x54\xbf\xcf\x50\x6e\xa8\xa2\x29\x55\xd1\x34\xc8\x37\xff\xa8\xa5\x34\xf3\x96\xd2\x32\x66\x97\xd3\x6a\xe5\x2d\xa5\xf5\x68\x4b\xd1\x75\xad\x5c\x5d\x73\xab\x15\xa9\xa7\xd6\x9f\x64\x4f\x52\x56\x39\xf2\xad\xd6\xf7\xb1\xa7\x56\x6b\x9b\x3d\xb5\x9a\xff\xb9\xf6\xb4\x41\xbe\x25\xc9\xb7\x0c\xf2\xad\x3f\x6a\xae\x2d\x69\xae\xe5\x87\xf4\xc5\xae\xd4\x7d\x6b\x90\x61\xe4\x66\xfc\x50\x87\x0b\xc2\xae\x8a\x22\x04\x8c\x99\xaa\x49\xed\x71\xab\x3e\xae\x79\x9f\xac\x1b\xca\x1a\xba\x7e\x9c\x60\xb3\x59\x84\xbb\xdd\x90\x57\x2b\x7b\x15\x8b\x47\xa2\x47\xf5\x53\xcd\xca\xfc\xbe\xa1\xdf\x35\xa0\x35\xfe\xbe\xe8\x21\x60\xe1\xb7\xc6\x0d\x6a\x01\x5f\x45\xb8\x81\xb0\xd5\x4f\xb1\x62\x77\x40\x26\x34\x4b\x3a\x6e\xbc\xe6\x0b\xe8\x40\xa3\x5c\x2e\x7d\x5e\xf8\x01\xa3\x7e\x2f\x3b\xb2\xfd\x2c\xc2\xa9\xae\x1a\xc9\x87\x7d\xa4\x5a\x12\xf4\xf1\xdf\xfd\x6c\xc0\x85\xae\x60\x15\x25\x1a\x8e\x1c\x6d\xd1\x59\x8f\xa1\x91\x84\x9d\xb1\x90\xfb\x9e\x1b\x04\x77\x28\x77\x1a\x6d\xca\x2c\x9c\x48\x3d\xf9\x34\x0f\x3f\x52\xa6\x29\x9f\x8b\x43\x7a\xf9\x2c\x5c\xd1\x88\x23\xcd\x34\xf1\xba\x25\x20\xfc\x08\x1d\xf8\x88\x06\x5e\xb7\xff\x80\x2e\xeb\x75\x88\xc2\xe0\x0e\x12\xc6\x21\x00\x7f\x2e\x62\xcc\x8f\xe0\x63\xd4\x74\xed\x72\xff\x86\xe9\x7e\xd0\x81\xaa\x8f\xfe\xba\x21\x65\xc4\xc7\x1a\xb6\x37\x32\xd0\xb2\x71\xc2\xdd\x98\xf7\x70\x7f\xa1\x3b\xd5\xa8\x17\xd1\x0f\x60\x5f\x78\x6f\xd5\x9c\x85\xb3\x9e\xda\x2b\x56\x3f\x1a\xcd\x3f\xaa\xe6\x1f\xa9\x39\x01\xf6\xdc\xb0\xc2\x81\xd2\xa5\xc4\x06\xa6\x6c\x1e\xc5\x0c\x89\xfc\x40\xf3\x21\x65\xfe\x4a\x53\x96\xf3\x41\x0e\xf2\xde\x9e\x1a\xf5\x7a\x5d\x78\x8e\x68\x3e\x4f\x70\x2f\xcb\x23\x58\xb9\x49\x92\x1d\xe1\x8c\x54\xaf\xef\x38\xb3\x58\x38\xc3\xbf\xa8\x6d\x4b\x8c\xe3\xb7\xd9\xa5\xf0\x53\xaa\xa6\x63\x40\x56\x6e\x4a\xf3\x12\xd6\x9b\x7a\xa5\xfb\x0d\x3a\x4f\x3c\xa7\x83\x52\x0a\x1e\xa9\xd4\x69\x9a\x94\xa6\x31\x73\x3f\x49\x2e\x92\x55\x4e\x95\x92\x20\x52\x01\x13\x1d\x31\xdf\xc7\x8d\xbb\xda\x0f\xa4\xc3\xf9\x12\x6c\x95\x1c\x65\x21\x28\xc6\x38\xcc\x0d\xbd\xc3\xcd\x4c\x3f\x75\xb4\xa0\x35\xad\x3a\xd5\xd4\x94\xbc\xbc\x14\xbe\x75\x15\xb8\xde\xe6\x1c\x4b\xc3\x7a\x57\x65\xf3\x81\xbb\xd3\x80\x15\x4d\x34\x45\x04\x39\xca\xc6\x8f\xf4\xb3\xf7\xf8\x47\xc9\xe8\xd1\x7b\x2b\x05\x8e\x58\x93\x38\x0f\xdd\x60\xa5\x9c\xa9\xdb\x36\xc6\x8a\xc1\xe3\x5d\xb4\x36\x43\x55\x10\xb2\xcf\x09\xc7\xf9\xbf\xb7\xb7\x63\x72\xa4\xfb\xdf\xce\x36\xf7\x6c\xec\xf4\xa4\x75\xac\x22\xf1\x0f\xec\xa7\x6c\xd1\x8e\xc9\xf4\x35\x5f\xf9\x70\x70\x00\x4a\xbc\x4b\xef\x8a\x42\x82\x5a\x7e\x1e\x19\xe0\x33\xd6\x28\x48\x08\xcb\x23\xef\xad\xd6\x00\xc3\x3f\x88\x2c\x83\x5c\x03\x7c\x0e\x9f\xc2\xe8\x73\x02\xee\x34\x5a\x73\x90\xa7\x68\x90\xd0\x09\x9e\x38\x63\xf2\xa2\xf0\x86\xc5\x09\xae\x29\x45\x36\x29\xc8\x91\x62\x25\x08\x63\x18\x51\x78\xfc\xf9\x21\xf0\x3e\xac\x3d\x3d\x25\x0a\x71\x89\x84\xca\x77\xc3\x25\xc8\xdd\x87\x6b\xed\x7d\x08\x24\x2e\x99\x41\x2c\x82\x26\xcf\x21\xb3\x0b\x27\x87\x64\xbd\x5a\x45\x31\x97\x87\xa1\xc5\x13\x56\x74\x7c\x74\x3c\x74\xef\x3c\x25\xfa\x8f\x8d\x65\x8a\x67\x86\x30\xb4\xcc\xdc\x78\xf0\x64\x79\x05\x0d\xb9\x88\x6c\x64\x3b\xe4\xe4\x10\x6d\x45\xaa\xc1\x69\x1b\x59\x8a\x23\x5b\xf4\x34\x0c\x5d\xba\xfa\x02\x2a\x72\x6d\xb9\x7f\x36\x16\x4f\xb0\x87\xcc\xcb\x1c\x8c\xad\xf3\xac\x5e\x87\x05\xe7\xab\x17\xcf\x9e\xb1\xf0\xe0\xb3\xff\xc9\x5f\xb1\x99\xef\x1e\x44\xf1\xf5\x33\xfc\xf5\xec\x82\xcf\xdb\x46\xa3\x19\xbb\x61\x41\xb4\x62\xf1\x81\x17\xc5\x51\xe8\x06\xee\x34\x39\xf0\xa2\xe5\x33\x34\xf0\x67\x6b\x3e\xaf\xb7\xeb\xa9\x69\xd7\xd7\xdc\x0f\x7c\x7e\xb7\x2d\x15\x97\x9e\x84\xa3\x21\xa9\x69\xf2\xb2\x03\x8d\xdb\xc3\x13\xb1\x88\x49\xc8\x99\xd6\xa0\x17\xcc\x6a\xae\xcf\x89\xde\x7d\x09\x8e\xb8\x94\x35\x70\xf9\xbb\xed\x35\x60\x1f\x96\x2e\x5f\x1c\xcc\x83\x28\xd2\xb4\xe0\x19\x34\x6e\x5b\x8d\xda\xcf\x99\x2e\x36\x75\x69\x63\x17\xdd\xf0\x69\xda\xd0\xc4\x44\x1c\x2c\xd1\x0b\x2b\x59\x38\xfb\xb9\x08\xdb\xc9\xc9\x0e\x70\x7d\xe4\xb4\x0d\x9d\xdd\x68\xec\xc2\xb7\x5d\x26\x13\x72\xda\xd7\x79\x9c\x6c\xe2\x8f\xb3\x4b\x44\xbb\x51\x20\x24\x55\x77\xd4\xd8\x66\x90\x34\x53\x20\x79\x14\xf4\x5b\xe5\xf6\x0d\x09\x4d\xf1\xb2\x52\x7d\x47\x5a\xf6\x77\xa4\xd5\xa0\xb1\x47\x5a\xd8\xe4\xe7\xf2\xfd\x1a\x16\x7f\x9a\x86\xa2\xc9\x8b\x42\xe5\x42\xea\xda\x73\xc3\x30\xc2\x30\x1c\xae\x63\xe6\x72\x3a\xe9\x75\x43\xb8\xd8\x17\xfa\xff\xa1\x22\x26\xb6\x8c\xa1\x17\xfe\x9c\x7f\x78\x8e\x70\x9d\xdf\x9e\x67\x0a\x6d\x87\x0a\x6d\x27\x5b\xda\x16\xa5\x6d\x45\xc1\xb8\x9e\x52\x36\x9e\xa1\xa3\xa7\xb3\xb8\x19\x82\xdb\x27\x8b\x1c\xdd\x07\xe1\xe5\x8c\x1c\x7a\xba\x7d\xf2\x85\xe1\xf8\xf0\x0a\x3e\x66\x26\x78\x26\xcb\xbc\xd0\x51\xbe\x3f\xd7\x24\x95\x5d\x6d\xf1\x98\x3c\xb6\x0c\xe6\x25\x6f\x01\x2a\x82\x31\x6a\xf4\x43\xdd\xde\xa7\x7e\x35\x9d\x6c\x90\x4c\x3f\x08\xc7\xa9\x6f\xf5\xf0\xd8\xf2\x2d\xbf\x66\x41\x43\xb3\x56\xe3\xff\xc4\x5b\x64\x17\x24\xa5\x26\x0d\x3b\xc1\xfd\x80\xc8\x85\x40\xaa\x37\x5a\x0c\xbc\x45\x4d\x07\xf0\xba\xa9\x93\x9d\x3b\x53\xb2\x8e\xa9\x9c\xf0\xb2\x9b\x65\x5b\x66\xaa\x2d\x9a\xb1\x86\x85\xff\xaa\x26\x8d\x3a\x3a\x3b\xd1\xab\x8e\x76\x5c\x2e\x95\x52\xde\xd4\xfe\x47\x65\x15\xc2\x2a\xed\x34\xfc\xd5\x48\x9a\x5b\x91\xd0\xbf\x4e\x06\x4f\xb3\x10\x0f\xfd\xeb\x18\xa8\xfa\x26\x2a\x41\x66\x37\x40\xdb\x51\x08\x73\x88\x9d\x02\xc4\xad\x7b\x10\xd3\xbf\xcd\x0c\xee\xd6\x0e\xdc\xf4\x6f\xd3\x40\x7f\xb2\x05\xbd\xa0\x7b\x8f\x20\xed\x9c\x20\x5a\x32\x27\x27\x59\x33\xb7\x54\x4b\x7a\x56\xe6\x92\x18\x4d\xb7\x7d\x3b\x33\xe1\x94\x39\xab\x45\x7d\x24\xb3\x61\x6e\x08\x3e\x67\xb1\xcb\xa3\x18\x3e\x2f\x7c\x6f\x91\xcd\x93\xb1\x5b\x0c\x04\xa7\x32\xfe\xa2\x94\x01\x4f\xe4\xa1\x5b\xc8\x59\x7c\xe3\x06\x45\x8b\xb7\xba\x95\x86\x48\xf4\xbd\xb4\x92\x7c\x02\x3d\x43\x54\x81\x70\x02\xe9\xc0\x7c\xc8\xed\x71\xe4\x5e\x97\x26\x15\x46\x26\x4a\xfa\xd4\xc3\x7c\xf2\x57\x35\xb1\xd1\xc6\x47\x31\xa3\x0c\x4a\xfa\x71\x5f\xd4\x8b\x34\x5a\x1a\xfd\x7d\xa0\x0b\x5d\x94\x85\x29\x99\xd9\x05\x05\x54\xf5\x27\xf7\xbc\x62\x2e\xc7\xc0\xcd\xf4\x3d\xd9\xfd\xb8\xe1\xb3\x4a\x22\x8c\x93\x0c\x70\xdc\xd3\x5f\x22\x25\x96\x8b\x56\x77\xbb\xad\x92\xe6\x98\xc1\xb5\xaf\xfc\x61\x69\x1d\x72\x3f\x2b\x93\x56\x73\x59\xcb\x16\xb8\x09\x37\xbb\xd3\x89\x99\x14\x3b\xf0\x3d\x66\x78\x46\x52\x83\x85\x1d\x6a\xe9\xda\x44\x8d\x64\x5a\xc0\x22\x6a\x46\xaa\x35\x67\x0e\x53\x3f\x4c\x98\x1b\x7b\x8b\x6a\x12\xc5\x9c\xcd\x26\xb8\xf1\xb5\xd0\xe8\x96\x16\x78\xd1\x72\xa5\x23\xf3\x05\x73\x67\x16\xd0\xe9\x79\x07\x6c\x0b\x9e\x18\x1d\x54\x9b\xa5\x3f\xcb\xae\xac\x55\xec\x05\xfb\xd4\xad\xf6\xcc\x11\x91\x22\x1d\x19\x44\xcb\x95\x9a\xf2\x22\x2a\xaf\x12\xe9\x3a\xf1\xa9\xc1\x2b\x50\x11\x39\x1a\x4d\xca\xe9\x92\x47\x22\x3b\x5c\x5d\xfa\xb3\xda\x15\xbc\x22\xa8\x3a\x5b\x53\x92\xf8\x96\x3e\x8d\xad\x5c\x1c\x4a\x25\x82\x91\x16\x8b\x91\x7f\x00\xda\x34\xc3\xb3\x15\x07\xe1\xbd\xc2\x81\x34\x91\xc8\xa1\xe0\xf1\x9a\x59\x90\x6d\xab\xcf\x73\x0a\xc9\x11\xef\x07\x92\xa3\xb6\x7a\x09\x54\xb3\xce\xa5\x9f\x6a\xc0\x73\xe3\xed\x05\x6e\x92\xbc\x75\xb9\xb7\xf8\x85\x85\xc2\xb1\x54\xa9\x4c\x5f\x3c\x35\x5c\x2a\x1a\xfc\x97\xaf\xaa\x24\x76\xc3\xeb\x5c\x91\x7f\x1d\x46\x31\x05\x13\x82\xa9\xd1\x30\x5f\x38\xf7\xe3\x84\x07\x8c\x63\xc4\xd3\x21\x41\xd2\x75\x97\x2e\xb0\xea\x0e\x9a\x38\x97\xf3\x4d\xba\x2b\x82\x59\xd3\xd5\xe8\x29\xca\x94\xb3\xf7\x2c\xf8\x60\x61\x44\xe5\xa3\xb7\x14\x66\x43\x7e\xa4\x03\x53\x96\x9e\x5c\x49\xb0\xe8\x25\xf1\x27\x89\xab\x0d\x47\x1d\x0e\xed\x3d\xdd\x4b\x8d\x49\x8b\x27\xe0\x66\x8f\x91\xf6\xea\x7b\xa6\xd9\x4d\x03\x76\x80\x73\x29\xe6\x14\x4e\xca\x3d\xbe\x72\xfa\x5e\x8d\xdc\x43\x49\xa9\xa6\x90\xe0\x6f\x26\x6b\x81\xd9\xd4\x9a\xae\x93\x1b\xf3\xca\x0f\x3f\xfc\x50\x11\x64\xb5\x9d\x97\x52\x65\x2a\x16\xca\xda\x4d\x56\x95\xab\x4a\x4a\x4e\x25\x33\x53\x2a\x92\xb9\x00\x9b\xb2\x7d\xa8\x90\x29\x1a\xd1\x23\x66\xcb\xe8\x86\x89\x1e\x35\xa0\x7c\xe4\x32\xba\xc1\x15\xab\x52\xaf\x14\x90\x16\x86\x66\xc1\x97\x82\xee\x79\x8e\x5f\x05\xcb\x52\xce\xe6\x0c\xb1\xc5\x91\x8c\x10\xfe\x41\x26\x50\x71\x85\x72\x10\xe9\x53\xf7\x05\x5d\x25\x65\x09\x0b\x79\x42\x37\x80\xc5\x68\x24\x07\x50\x1d\x9e\x9d\xbe\x87\xee\xb8\x37\x18\xd4\x36\x8d\x40\x0b\xf1\xfc\x27\x0b\x8e\x1a\x5f\x49\xf0\x2e\xd4\xe1\x5f\x3b\xda\x1e\x1d\x5a\x60\x3b\x8e\x68\xec\x42\x1d\xfe\xff\xc6\xc8\x79\x06\x38\x6f\x03\x1c\xdd\x04\x8d\x02\x23\xc7\x7b\xb0\x83\x5d\xc3\x82\xa6\xfd\xb5\x00\xbc\x1c\x5c\xdb\x39\xac\x6d\x00\x98\x19\x00\x66\x1b\x00\x66\xfe\x35\x5d\x90\xde\xce\xb4\xd5\xb6\xe0\xa7\x43\x21\x62\x03\xea\x70\xb4\xc1\xe1\xda\xe0\x70\xbd\xc1\x81\x8e\xe3\x28\x3d\x6b\x24\xb2\x65\x72\x2c\x59\xb9\x1e\xdb\xc5\xdc\xb6\xa0\x5d\x24\x70\xda\xa0\xb5\x4d\x27\xba\x49\xb3\x69\x81\xdd\x74\x76\x93\x69\xb6\x2c\xb0\x7f\x3a\xda\xdd\xe8\xb9\x8d\xaa\xb8\xa7\xd5\x4f\x87\xd8\xac\x6d\x1f\xed\x46\xd5\x76\x1a\x4d\x0b\xda\xce\x3d\xe0\xdb\x0e\x22\x6b\x3b\xcd\xdd\x6a\x68\x3b\xad\x06\x36\x6b\x3f\xbf\xa7\x59\xbb\x4d\x16\xdb\x3e\xfc\xba\x69\x29\x81\x31\x8e\xc1\xe6\x3c\x8a\x3e\xb3\x98\x92\xa9\xdf\x3a\xa3\x1e\x30\x4b\x56\x06\xeb\xd5\xa6\x09\xe1\x6a\xb8\x16\x97\xb5\x8d\x99\xf2\x50\xfe\x68\x00\xad\xc3\xdd\x83\xd6\xb6\xe0\x79\x6b\x67\x93\x23\xdb\x82\xa3\xdd\xea\xb5\x1d\x34\x35\xe7\x79\x81\x6e\x13\x43\xc0\x64\x43\x40\x9a\x07\x0f\x74\x02\x47\x68\xcd\x3b\x9c\x40\xd3\xd9\xe1\x20\x9a\xcd\x1d\x95\xcf\x1b\xdb\x2b\x7f\x3a\x2c\xac\x4d\x2d\xcb\x3e\x72\xd0\x00\x1b\x85\xf3\x4c\x12\x69\x3b\xbb\xc0\xb5\x9d\x5d\xe8\xda\x4e\xf3\x68\x57\x6d\xfb\x70\x97\x5f\x74\xda\xed\xcd\x31\x59\x1b\x63\xb2\xde\x18\x13\x3a\xab\x78\x94\xbd\x17\xae\x20\x19\xce\x9f\x0d\xce\x9f\x37\x38\xbb\xc1\x6a\xe1\x86\xeb\x25\x8b\x7d\xef\x31\xf6\x5e\xe8\xb1\xff\x9a\xd5\xee\xd6\x10\xec\x76\x43\xb0\x05\xbb\x75\x67\xcc\xf3\x97\xee\xa3\x17\x9e\x1d\x62\x1c\x1a\x62\x9c\xdc\x27\x46\xc3\x10\x63\xfe\x1f\x1e\x4c\x95\xf2\x61\xbf\x06\x59\x2c\xeb\x03\x45\xd5\x92\x3e\x54\xd0\x3f\x2a\xe7\x86\x98\x5b\xc5\x13\x07\x3e\xd9\x2d\x8c\xb1\xcf\x2a\x4b\x28\xb8\xa1\x93\x2c\xf5\x36\x45\xef\xbc\xfc\x70\x44\x10\xab\x38\x03\x7b\xe2\xd8\x84\xb6\x2f\x1f\x2c\x7a\x9b\xc8\x17\x77\x8e\x84\x1c\xb5\x74\xf3\x1b\x5f\xda\x57\xf0\x52\x64\x26\xb0\x9b\x38\xb5\x52\x3f\x5e\x76\x20\xbe\x74\xae\x52\x65\x1b\x3b\x45\x23\xfc\xa5\x7f\x37\x37\x88\x6a\xc0\xd4\xae\x21\xbb\xdb\xd4\xf9\x1b\x13\xb1\xaa\x4c\x13\x07\x72\x44\x75\x23\x4a\x14\x17\x09\xcb\xc2\x99\x25\xb7\x6d\xb9\x2d\xeb\x2e\x46\x5a\xd4\xdf\x3b\x50\xb7\x75\xec\x5e\xfd\x56\x00\x79\x04\xe9\xdd\x33\x71\x49\x42\x5d\x26\xa2\xb7\xb3\xd8\x2d\x8f\x5d\x7d\xea\x69\x11\x57\x51\x16\xb3\x64\x1d\x70\xb8\x71\x83\x75\xe1\x35\x89\x64\x3d\x7d\xe7\xf3\xc5\xeb\xf4\x9a\x3a\x25\xfa\x92\xe9\x23\x2e\x27\x25\xd3\x8d\xdc\xdb\x7f\xaf\x28\xfd\xf7\x8a\xd2\x7f\xc6\x15\x25\xfd\x44\x0a\x54\x97\x20\x64\xf2\xc9\xf5\x16\x94\xe6\x64\x7c\xc9\xb8\x4b\xde\xb5\xfa\xe5\xab\xf5\xa5\x5c\xfa\xf0\x61\x29\x32\xf4\x95\x4f\x37\x95\xf2\xd7\x9a\xd9\xe3\x9c\xf6\xf3\xdf\xd2\x4d\x4f\x5d\xf2\x7f\x2c\x4e\x93\x62\xf2\x55\xe9\x6c\x52\x4c\xb6\x82\x0e\x7c\x41\xe7\xad\xaf\x3b\x76\xe0\xcb\x57\xab\x5c\x2a\x79\xee\x8a\xaf\x63\x9d\x24\xfb\xaa\x1d\x6c\x26\xd3\x40\x58\x2f\x89\xc1\x15\x74\x40\x51\x4d\xcf\xb2\xb4\x2c\x69\xa3\xb4\x0d\x8e\x49\x0e\xbc\xb8\x99\x52\xc5\xdf\xb5\x22\xaf\xda\xab\xc9\xb5\x04\x8b\xf0\x67\xba\x5c\x48\xba\x2f\x42\x76\xcb\x4f\xb0\xb6\xb6\x51\x3c\xe6\x71\x35\xbb\x40\xab\x5a\x8c\xc5\xb8\xac\x4b\xd7\x99\x42\x84\xdc\x8d\xff\x10\xbe\xf9\x3a\x08\x46\xc8\x6e\x18\x9e\x3d\x06\x6a\x56\xbe\x7b\xd0\x2e\xfd\x70\x9d\x7c\x4f\xb8\x29\x2e\x99\x79\x2e\x42\xb5\x15\xce\xbf\xd7\x2c\x21\xce\x7f\xa5\x02\x1f\x02\x74\x03\xa9\xb4\xff\xaa\x3f\x2b\x82\xf9\xa1\x96\x9e\xa7\x04\xa9\x4d\x1f\xa8\x59\x73\xe9\xcf\xae\x30\x96\xa9\x17\xd7\xd8\x57\x69\x77\x59\x31\x33\xce\x7a\x55\x1f\xe1\xe6\xad\x6d\x34\xb6\x54\x38\x57\x06\x38\xba\x20\xf5\x00\xd2\x74\x80\x66\xfc\x80\x7d\x08\xd4\x48\xa4\x08\x3b\x92\x9e\x1e\x12\x0a\xfa\xd0\x65\x5a\x10\xc8\x38\x6f\xcb\x28\xa8\x61\xd8\x66\xc6\x8f\x9f\x90\x12\xde\x18\xfd\xf2\xce\xe1\xda\xa2\x46\x63\xf8\xe8\xc8\xef\x5b\x6d\x5a\xf3\x8f\x56\xdf\xce\xde\xc9\xb1\x57\x6b\xde\x37\x5a\xeb\xd4\x0d\xdc\xd0\x63\x71\x35\xe1\x71\x7a\x96\x9c\xac\x97\x99\x93\xc6\xa9\x67\x01\xf3\x72\x97\x0a\xc0\xb6\xc0\x96\xfb\x0a\x5d\xe6\x58\xe6\x6b\x34\xf2\x04\x02\xe3\xa8\xa9\x57\x43\xd3\x60\x61\x95\xd1\xfc\xcd\x90\x54\xdb\x92\xa9\x97\xdb\xa7\xb0\x7b\xe6\xba\xd7\xa3\x60\xc0\xa3\xc0\x0a\x51\xbf\x82\x46\x6a\x64\x42\x0c\xfc\x57\x2a\x87\x96\x7f\x2c\xec\x98\xcd\xb6\x2d\x00\x45\x86\x97\xf1\xae\x1a\xc0\xd4\x2b\x62\x2a\x0f\x4f\xef\xf1\xce\x26\xa4\x28\x96\x04\xeb\xb6\x01\x2f\x1d\x8d\x62\x33\x37\xf6\xc7\x3b\x67\x90\x9e\x0e\x66\xfc\x5f\xd6\xe6\xa5\x97\x72\x61\xda\x59\x23\xbc\xc7\xa9\x6b\x43\x64\xff\xa6\xe9\xb4\x31\x35\x0a\x55\xec\xcf\xc1\xf4\x2b\xf0\xca\xe8\xe4\xc6\x48\x9c\xc6\x55\x03\x8c\xa3\x25\x51\xa7\x00\x3d\xd3\x31\xc3\xce\x0f\xaf\x4f\x59\x7a\xa6\x91\xd6\x44\x2b\xe3\x4c\xa8\x00\x72\xe8\x07\x45\x93\x25\x70\x13\xc2\xbc\xfb\xc4\x4f\xda\x3a\xd1\x30\x0e\xef\xaa\x5a\x8f\xe9\xb4\xb8\x66\x61\xf6\x58\x8f\x42\x9c\x22\x4b\x37\x37\x81\xd7\x2c\xbd\x45\xa0\x30\xd6\xaa\xe9\x61\xa5\x8a\xb8\xe4\x71\xe0\x34\xd9\x72\x1e\x28\xa4\xf4\xe7\xb9\xa3\x9f\x4c\x26\x61\xc3\x26\x2c\x15\x60\x15\x1e\x9e\xaa\x18\xb1\x56\xcb\x26\x42\xa4\xa6\xcc\x13\x3d\xfa\xe2\x4f\xc5\x76\x9a\xad\x9f\x9e\x1f\xb6\x8f\x2a\x16\x62\xb5\x2d\x1a\x16\x63\xc9\xa6\x68\x5f\xea\xdd\x28\x7d\x28\x4a\xd5\x55\x26\x90\x4a\x25\x4d\x4b\xc9\x6f\xcc\xef\x7b\x89\xaa\x25\x5d\x1f\x3a\x7b\x35\x23\x33\xa5\x13\x75\xd3\xca\xdf\x84\x5f\x3a\x69\xf1\x63\x6a\x29\x53\x4c\x7d\xbb\x32\x31\xb2\x88\x7d\x54\x37\xfd\x3d\x52\xe4\xef\x43\x35\xcd\xfb\x19\x03\x4e\x91\x41\x54\x9e\x56\xe0\xe0\x00\xbc\xac\x1f\xdd\xc8\x29\x65\x9c\xa0\xd0\xe1\x8f\xdf\x43\x87\x18\x68\x3f\x4c\x83\x5a\x20\x75\x9e\xec\xcb\x37\xf5\x48\x5d\xe0\xce\x39\x8b\xa1\xa2\x6e\x2c\x4b\x1d\xa2\xfa\x12\x45\x57\x09\x97\xb1\x84\xfd\x3f\xd1\x12\xfe\xf7\x4b\x5f\xff\x0e\xd2\x8b\xed\xc7\xdf\x2a\xc6\xff\xf9\x0e\x62\xe8\x6d\xcb\xdf\x2a\xc9\x6f\x39\x49\xa6\xc6\xad\x4e\xc9\x6f\x63\x8d\x35\x6f\x4f\xfc\x69\xc0\xfe\x91\x07\xc6\xb0\x18\x83\x44\xb1\x22\x16\x21\xe4\x51\x3f\x9c\xfd\x25\xe8\x2e\xff\xbc\x59\x9c\xba\x6e\x59\xa1\x9d\x76\x91\x3b\xdd\xf0\xdf\x45\xab\x4f\xf5\xef\x5a\x7d\x0a\x89\xaa\xbd\x8a\x05\x5f\xbe\x16\x2d\x32\x5e\x62\xc1\x93\x7c\xe3\x07\xae\x46\x99\x7d\x9b\x97\x5c\x3e\xf1\x92\x2b\x05\x95\xa2\xe9\xe2\xd5\xce\xae\x91\x9e\x6a\xf2\x38\x6d\x63\x57\xb5\x01\xe7\xea\x80\x2d\x57\xfc\x4e\xda\x1a\x14\xda\x48\xed\xef\x5d\xf3\x3d\x97\x42\xda\xcc\x71\x4f\x92\xaa\x82\x6e\x19\xba\x2b\x13\x4c\x6e\x86\x48\x59\x5f\xc0\x5e\x75\x0f\xe8\x13\x66\xe1\x75\x25\x6f\xa4\x0f\x1e\x90\x68\x55\xf5\xdc\x55\x91\x75\x1e\xfc\x85\x73\xc9\xdc\xbc\x78\xbd\x9a\x7e\x01\xa7\x27\x8f\x4f\x0a\x07\xf2\x69\x06\x60\xfe\xd2\x9b\xe1\x63\xfe\x7c\xf0\x85\x21\x76\xf1\x4e\x2e\x3d\xc2\x7a\xe2\x25\xe6\xe6\x77\xeb\x30\xd7\x32\xc3\xac\x7a\xe7\x25\x7a\x84\x34\xe6\x21\xe0\xf6\x8e\x99\x9d\x8d\x3f\x87\xac\x57\x37\x77\x7b\xb8\xaf\xfb\xfd\x01\xfb\x3a\x63\x27\xac\x06\xa9\x78\xc7\xa7\xf7\x4c\xc6\x9e\x57\x6d\x47\x33\xef\x82\xb0\x60\x8e\xd4\xf0\x2f\x41\xa7\x6c\xba\x7a\xde\x57\xef\xa2\x65\x68\x8c\xe9\xfd\xb6\x62\x12\xe2\xdd\x37\xfd\xb8\x49\x20\xe1\x31\x6d\xa9\x8b\x28\x88\x69\x1e\x05\x33\xd5\x82\xe8\x90\xc8\xc6\x3d\x70\x93\x81\x62\x1b\x6f\x90\x24\x13\x4a\x14\x1e\x91\xb1\x4a\x74\x3b\xc5\x23\x63\x58\xe9\x08\x6e\x64\x4e\x1f\x8b\x76\x53\xa3\xf6\x63\x25\x99\xa7\x30\xbe\x9b\x68\x5b\x46\xf2\xdb\xc7\x41\xa6\x7f\x8a\x85\xfe\x53\x45\x4b\x65\x5b\xc5\x91\xc7\x92\x24\x2f\x10\x6e\x12\x62\x79\x20\x45\x47\x6b\xa6\xa9\x23\xe8\x44\x46\x80\xe2\xaf\x38\x7f\x55\xc6\x2c\x13\x33\x1d\xa8\x8a\xda\xf4\x60\x53\xb7\xd6\x67\xa7\x3c\xae\xc1\xbe\x2c\xdf\x37\x88\xa4\x29\x97\x0c\xd1\xc2\x19\xb3\x51\x25\xdd\x40\x27\xcf\xc6\xce\xb6\xd1\xda\x92\x65\xe4\x0a\xd4\xed\xea\x87\x69\xdf\xce\x7c\x39\x26\x4d\x06\x9d\x8b\x93\xe9\xd4\x4c\x33\xb5\xaf\xef\x38\x33\x5e\xdd\xd0\x97\xfb\x71\x31\x4e\xb1\xa4\x17\xfb\x95\xc4\x2f\x21\x27\xa1\x5e\x5d\xea\xf5\xcb\x4b\x90\x5e\x1a\x79\xa7\x2d\x8d\x15\x48\x7e\xa2\x85\x5e\x9c\x98\xde\x71\x56\xb1\x34\x1a\xb9\xd6\x78\x8b\xb4\x28\xcd\xe5\xea\x93\x7a\x9d\xd4\xd5\xc4\xeb\x9a\x63\x1d\xcb\x1f\x49\x6e\xb3\xa7\xd1\x4b\x3f\xaa\x0c\x6d\xba\xd0\x3e\x88\xbe\xc2\x9a\x3e\x65\x73\x0e\x9b\xc3\x05\x57\x74\x86\x52\xa2\x0b\xe2\x99\xdc\xb5\xa6\x95\x25\x55\xaf\x4b\xd5\x7a\x0b\x37\xae\x58\x80\xb8\x32\x77\x69\x16\x72\x31\xd7\xb3\x48\x64\x51\xf5\xcf\xab\x6a\x51\x73\x2d\xe8\xf6\x6e\x75\x3b\x77\x8c\x51\x36\x2c\x46\xcd\x21\x65\x01\x99\x43\x21\x95\x0b\x54\xb7\x6b\x56\xae\x1f\x1b\xdf\xf4\x41\x02\x3a\xe8\x56\xc7\x2f\xfe\x9c\xaa\x65\xd0\xbb\xed\x96\x96\x8e\xeb\xb1\xed\xa5\x7d\x55\x7c\x43\x6b\xa3\x75\x46\xd1\xb2\xab\x7c\x70\x54\xf0\x9e\xbd\x60\xa5\x0e\xcf\x4d\x61\x33\xb6\x69\x5b\xb0\x0e\x57\xae\xf7\xa9\x6a\xee\x1f\x0c\x2f\x28\x29\xa8\x63\x63\xf5\x5e\x59\xc1\x37\x28\xcd\xcb\x2b\xbb\x3f\x49\xbe\x71\x08\x9e\x39\xc8\x4e\xd3\xd2\x5b\x0f\xd1\xb3\xa0\x5e\x48\x0f\x2d\xdf\x88\xa3\x8f\x9a\xe7\x70\x52\xcb\x22\xa0\xdb\x3e\x8a\x5e\xc2\x3f\xd0\xa1\x5f\x99\xbb\x33\xf3\x68\x4d\x3b\xe7\x2f\x5b\xc5\xac\x89\xd3\x7a\x6a\x78\x69\xeb\x1b\x55\xba\xa8\x99\x5e\xb2\xd2\x6f\xf7\xd1\x08\x50\xb5\x05\xcd\x5a\xfe\xa2\x55\x66\xdc\x15\x5d\xf5\x44\x07\x8e\xc6\x25\x24\x25\xf2\xf5\x56\x99\xb7\x7d\xe7\xbd\x24\x76\xfa\x1d\xa8\x2a\x86\xa2\xd6\xb6\x6c\xfa\xac\x43\xe5\xb7\x8a\x58\xa3\x44\xbb\x28\x06\x99\xa2\xa4\xdf\x66\xa2\x5f\x5e\xf0\xb1\x37\xdf\xe0\x4b\xc3\x80\xdd\x8a\x54\x54\x50\x99\x45\xda\x2c\x19\x6c\x94\x1e\xd4\x59\x91\x6e\x4e\x77\x56\xc3\x19\xd8\x88\xb5\xb9\x79\xb7\x2d\xab\xf7\x6c\xeb\xda\xe6\x2c\xba\x7f\x18\xd2\x89\x53\xf4\x8a\x9c\xfa\x6c\x87\xf8\x6a\xbe\x1b\x5f\xa7\xd7\xa2\x62\x5a\x42\x2b\x95\xf4\x4b\x1a\xd8\x48\xec\xb5\xc5\x78\x56\xb2\xef\xb5\x6e\xa4\x81\xe5\x17\x2d\xd6\x4b\x79\x19\xd0\x43\x4f\x95\x39\x1d\x41\x7a\x7a\xc1\x34\xde\x63\x32\x0f\x16\xbe\x71\x1b\x27\x60\xe3\xbf\x07\x07\xe0\x65\xfc\x8f\x6a\x13\xd2\xb9\x9b\x91\xf4\x57\xac\xb0\x22\xe5\x92\xa1\x84\xaa\xb9\x0c\xd7\xcb\xab\x07\xb3\x2b\x4a\x8b\x1b\xdb\x3b\xb1\x47\xcd\xe9\x95\x9c\x6c\xc5\xb8\x00\x46\xb4\x57\xc1\x25\xb1\xb7\xc9\x11\xd1\x63\xe3\x8a\x9e\x71\x74\x8a\x29\xa9\x11\xae\x18\x73\xfd\x09\x76\xcd\x9c\xa4\xa6\x1c\xaa\xd2\xf0\xb0\x89\x05\x76\xad\xa6\xc8\x6b\x59\x8d\xb6\x12\x82\xd1\x46\x47\xdf\xd2\x2e\x63\xc6\xc9\xde\x8c\xb9\x9f\x7e\x8e\x37\x3b\xf3\x77\xfe\x0f\x1c\x4a\xf4\x17\xe3\x09\xfa\x2b\x2e\x12\x6e\x18\xa8\xbc\x57\x18\xb3\x1b\x91\x42\xb4\x37\x5f\xb3\xdb\xf4\x2f\x74\x30\xb5\xe1\x42\x7d\x5e\xad\xe9\x57\x00\x43\x71\x3c\x2b\xc2\xbc\x27\xa2\x8d\xfa\x02\xac\x00\xf4\x7b\x07\x42\xf3\xbb\x2c\xa4\xe1\x0e\x7c\xb9\x6c\x5c\xe5\xa3\x90\x82\xd9\x69\x6d\xb8\xd9\xaf\xe5\x9c\x49\x65\xd7\x57\x21\x61\x4a\x4b\x7c\x53\xa5\x54\x22\x87\x57\x30\x93\x4b\xa9\x4e\x72\x1e\x09\x45\x0b\xe5\x73\x5e\xf8\xdc\x40\x6e\x83\x51\xb3\x20\x34\x9d\x0a\xb6\x11\xe1\x89\xf8\x9f\x9f\x98\xb1\xbc\x28\x4a\xd6\xd3\x54\x2b\xa2\x48\x7d\xc8\xa7\x63\x7e\xd6\x47\x54\x79\xc2\x95\xaa\x7b\x83\xa2\x30\x7d\x8b\x3d\xff\xf5\x87\x03\xe1\x55\x32\x07\xb0\xa2\x62\x9a\x06\x9a\x99\x0e\xe9\xe7\xab\x95\xbf\x17\xe5\xe2\xbe\xb0\x2a\x17\x6b\x96\xe0\x20\x6b\x4c\x9b\x92\x35\xf2\xeb\xd3\x1d\x6d\xd3\xa2\x3c\xfd\x7a\x36\x7d\x36\x5b\xb0\x15\x5f\xc6\xee\xc8\x4f\x64\x4b\x6d\xd1\x57\x95\x3a\xe2\xcd\x21\x29\x2a\x7d\x00\xaa\x23\x5e\xae\x50\xda\x52\x9f\xbf\x8e\xd9\xaa\x6c\xac\x01\xe5\xff\x09\x00\x00\xff\xff\x00\xa0\x31\x16\x78\x66\x00\x00")
-
-func runtimePluginsAutocloseUtf8Utf8LuaBytes() ([]byte, error) {
-       return bindataRead(
-               _runtimePluginsAutocloseUtf8Utf8Lua,
-               "runtime/plugins/autoclose/utf8/utf8.lua",
-       )
-}
-
-func runtimePluginsAutocloseUtf8Utf8Lua() (*asset, error) {
-       bytes, err := runtimePluginsAutocloseUtf8Utf8LuaBytes()
-       if err != nil {
-               return nil, err
-       }
-
-       info := bindataFileInfo{name: "runtime/plugins/autoclose/utf8/utf8.lua", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
-       a := &asset{bytes: bytes, info: info}
-       return a, nil
-}
-
 var _runtimePluginsFtoptionsFtoptionsLua = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x51\xb1\x6a\xc3\x30\x10\xdd\xf5\x15\x87\xa6\x04\x4a\x86\x76\xf6\xd0\x2e\x1d\x33\x04\xba\x94\x0e\xaa\x7d\x17\x1f\x95\xef\x84\x75\x6e\xf0\xdf\x17\x29\x4e\x42\x29\x0e\xf4\xa6\xd3\x7b\x4f\xef\xe9\x21\x26\x78\x45\xdb\x27\x63\x95\x8d\x27\xd3\xba\x65\xbf\x85\xa6\x01\xe1\x08\xd6\xa3\x38\x00\x80\xe7\xae\xfb\x2b\x7b\x00\x1b\x27\xdc\x3a\x94\xce\x39\x9a\xa4\x2d\x30\xa8\xbc\x31\x9e\xf6\x09\x65\xf3\xcd\x78\xda\xd6\xfb\x4c\x20\x6a\x6b\x69\xd7\x98\x32\x23\xda\x34\x9e\x8f\xd5\xb8\x2c\x51\xdb\x10\x81\x0c\x1a\x28\x9e\xbb\x97\x89\x76\x07\x34\x63\x39\xe6\x77\x4f\x1c\xd1\xe6\x84\xfe\xc3\x5d\xc2\x8a\xb4\x01\x7f\x54\x0f\x3a\x56\x70\x41\x86\xf0\x85\x45\xef\x7f\x87\x1e\x6e\x0f\xb3\xf0\x99\x4d\x73\x0a\x2d\x96\x8a\x5e\x89\xfc\xb9\x04\xc6\x8c\x37\x6f\xe2\xdc\x5f\xdd\x97\x59\xa8\x34\x5b\xaf\x72\x97\x7c\xbc\xcb\x3e\xad\xb0\x73\x18\xe2\x0a\x25\x3c\xfc\xa3\x93\x5c\x2a\x49\x57\xbf\xef\x27\x00\x00\xff\xff\xe7\xc7\xa0\xb2\x0a\x02\x00\x00")
 
 func runtimePluginsFtoptionsFtoptionsLuaBytes() ([]byte, error) {
@@ -3605,9 +3542,6 @@ var _bindata = map[string]func() (*asset, error){
        "runtime/help/plugins.md": runtimeHelpPluginsMd,
        "runtime/help/tutorial.md": runtimeHelpTutorialMd,
        "runtime/plugins/autoclose/autoclose.lua": runtimePluginsAutocloseAutocloseLua,
-       "runtime/plugins/autoclose/utf8/LICENSE": runtimePluginsAutocloseUtf8License,
-       "runtime/plugins/autoclose/utf8/README.md": runtimePluginsAutocloseUtf8ReadmeMd,
-       "runtime/plugins/autoclose/utf8/utf8.lua": runtimePluginsAutocloseUtf8Utf8Lua,
        "runtime/plugins/ftoptions/ftoptions.lua": runtimePluginsFtoptionsFtoptionsLua,
        "runtime/plugins/linter/linter.lua": runtimePluginsLinterLinterLua,
        "runtime/plugins/literate/README.md": runtimePluginsLiterateReadmeMd,
@@ -3820,11 +3754,6 @@ var _bintree = &bintree{nil, map[string]*bintree{
                "plugins": &bintree{nil, map[string]*bintree{
                        "autoclose": &bintree{nil, map[string]*bintree{
                                "autoclose.lua": &bintree{runtimePluginsAutocloseAutocloseLua, map[string]*bintree{}},
-                               "utf8": &bintree{nil, map[string]*bintree{
-                                       "LICENSE": &bintree{runtimePluginsAutocloseUtf8License, map[string]*bintree{}},
-                                       "README.md": &bintree{runtimePluginsAutocloseUtf8ReadmeMd, map[string]*bintree{}},
-                                       "utf8.lua": &bintree{runtimePluginsAutocloseUtf8Utf8Lua, map[string]*bintree{}},
-                               }},
                        }},
                        "ftoptions": &bintree{nil, map[string]*bintree{
                                "ftoptions.lua": &bintree{runtimePluginsFtoptionsFtoptionsLua, map[string]*bintree{}},
diff --git a/runtime/plugins/autoclose/utf8/LICENSE b/runtime/plugins/autoclose/utf8/LICENSE
deleted file mode 100644 (file)
index fd3b301..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016 Stepets
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/runtime/plugins/autoclose/utf8/README.md b/runtime/plugins/autoclose/utf8/README.md
deleted file mode 100644 (file)
index 39105c1..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-# utf8.lua
-one-file pure-lua 5.1 regex library
-
-This library _is_ the simple way to add utf8 support into your application.
-
-Some examples from http://www.lua.org/manual/5.1/manual.html#5.4 :
-```Lua
-local utf8 = require "utf8"
-
-local s = "hello world from Lua"
-for w in string.gmatch(s, "%a+") do
-    print(w)
-end
---[[
-hello
-world
-from
-Lua
-]]--
-
-s = "Привет, мир, от Lua"
-for w in utf8.gmatch(s, "[^%p%d%s%c]+") do
-    print(w)
-end
---[[
-Привет
-мир
-от
-Lua
-]]--
-
-local t = {}
-s = "from=world, to=Lua"
-for k, v in string.gmatch(s, "(%w+)=(%w+)") do
-    t[k] = v
-end
-for k,v in pairs(t) do
-    print(k,v)
-end
---[[
-to     Lua
-from   world
-]]--
-
-t = {}
-s = "从=世界, 到=Lua"
-for k, v in utf8.gmatch(s, "([^%p%s%c]+)=([^%p%s%c]+)") do
-    t[k] = v
-end
-for k,v in pairs(t) do
-    print(k,v)
-end
---[[
-到    Lua
-从    世界
-]]--
-
-local x = string.gsub("hello world", "(%w+)", "%1 %1")
-print(x)
---hello hello world world
-
-x = utf8.gsub("Ahoj světe", "([^%p%s%c]+)", "%1 %1")
-print(x)
---Ahoj Ahoj světe světe
-
-x = string.gsub("hello world", "%w+", "%0 %0", 1)
-print(x)
---hello hello world
-
-x = utf8.gsub("Ahoj světe", "[^%p%s%c]+", "%0 %0", 1)
-print(x)
---Ahoj Ahoj světe
-
-x = string.gsub("hello world from Lua", "(%w+)%s*(%w+)", "%2 %1")
-print(x)
---world hello Lua from
-
-x = utf8.gsub("γεια κόσμο από Lua", "([^%p%s%c]+)%s*([^%p%s%c]+)", "%2 %1")
-print(x)
---κόσμο γεια Lua από
-```
-Notice, there are some classes that can work only with latin(ASCII) symbols,
-for details see: https://github.com/Stepets/utf8.lua/blob/master/utf8.lua#L470
-
-Of course you can do this trick:
-```Lua
-for k,v in pairs(utf8) do
-        string[k] = v
-end
-```
-But this can lead to very strange errors. You were warned.
-
-A little bit more interesting examples:
-```Lua
-local utf8 = require 'utf8'
-for k,v in pairs(utf8) do
-        string[k] = v
-end
-
-local str = "пыщпыщ ололоо я водитель нло"
-print(str:find("(.л.+)н"))
--- 8   26      ололоо я водитель 
-
-print(str:gsub("ло+", "보라"))
--- пыщпыщ о보라보라 я водитель н보라    3
-
-print(str:match("^п[лопыщ ]*я"))
--- пыщпыщ ололоо я
-```
diff --git a/runtime/plugins/autoclose/utf8/utf8.lua b/runtime/plugins/autoclose/utf8/utf8.lua
deleted file mode 100644 (file)
index 7f13914..0000000
+++ /dev/null
@@ -1,1045 +0,0 @@
--- $Id: utf8.lua 179 2009-04-03 18:10:03Z pasta $
---
--- Provides UTF-8 aware string functions implemented in pure lua:
--- * utf8len(s)
--- * utf8sub(s, i, j)
--- * utf8reverse(s)
--- * utf8char(unicode)
--- * utf8unicode(s, i, j)
--- * utf8gensub(s, sub_len)
--- * utf8find(str, regex, init, plain)
--- * utf8match(str, regex, init)
--- * utf8gmatch(str, regex, all)
--- * utf8gsub(str, regex, repl, limit)
---
--- If utf8data.lua (containing the lower<->upper case mappings) is loaded, these
--- additional functions are available:
--- * utf8upper(s)
--- * utf8lower(s)
---
--- All functions behave as their non UTF-8 aware counterparts with the exception
--- that UTF-8 characters are used instead of bytes for all units.
-
---[[
-Copyright (c) 2006-2007, Kyle Smith
-All rights reserved.
-
-Contributors:
-       Alimov Stepan
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-    * Neither the name of the author nor the names of its contributors may be
-      used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---]]
-
--- ABNF from RFC 3629
---
--- UTF8-octets = *( UTF8-char )
--- UTF8-char   = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4
--- UTF8-1      = %x00-7F
--- UTF8-2      = %xC2-DF UTF8-tail
--- UTF8-3      = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) /
---               %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )
--- UTF8-4      = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) /
---               %xF4 %x80-8F 2( UTF8-tail )
--- UTF8-tail   = %x80-BF
---
-
-local byte    = string.byte
-local char    = string.char
-local dump    = string.dump
-local find    = string.find
-local format  = string.format
-local len     = string.len
-local lower   = string.lower
-local rep     = string.rep
-local sub     = string.sub
-local upper   = string.upper
-
--- returns the number of bytes used by the UTF-8 character at byte i in s
--- also doubles as a UTF-8 character validator
-local function utf8charbytes (s, i)
-       -- argument defaults
-       i = i or 1
-
-       -- argument checking
-       if type(s) ~= "string" then
-               error("bad argument #1 to 'utf8charbytes' (string expected, got ".. type(s).. ")")
-       end
-       if type(i) ~= "number" then
-               error("bad argument #2 to 'utf8charbytes' (number expected, got ".. type(i).. ")")
-       end
-
-       local c = byte(s, i)
-
-       -- determine bytes needed for character, based on RFC 3629
-       -- validate byte 1
-       if c > 0 and c <= 127 then
-               -- UTF8-1
-               return 1
-
-       elseif c >= 194 and c <= 223 then
-               -- UTF8-2
-               local c2 = byte(s, i + 1)
-
-               if not c2 then
-                       error("UTF-8 string terminated early")
-               end
-
-               -- validate byte 2
-               if c2 < 128 or c2 > 191 then
-                       error("Invalid UTF-8 character")
-               end
-
-               return 2
-
-       elseif c >= 224 and c <= 239 then
-               -- UTF8-3
-               local c2 = byte(s, i + 1)
-               local c3 = byte(s, i + 2)
-
-               if not c2 or not c3 then
-                       error("UTF-8 string terminated early")
-               end
-
-               -- validate byte 2
-               if c == 224 and (c2 < 160 or c2 > 191) then
-                       error("Invalid UTF-8 character")
-               elseif c == 237 and (c2 < 128 or c2 > 159) then
-                       error("Invalid UTF-8 character")
-               elseif c2 < 128 or c2 > 191 then
-                       error("Invalid UTF-8 character")
-               end
-
-               -- validate byte 3
-               if c3 < 128 or c3 > 191 then
-                       error("Invalid UTF-8 character")
-               end
-
-               return 3
-
-       elseif c >= 240 and c <= 244 then
-               -- UTF8-4
-               local c2 = byte(s, i + 1)
-               local c3 = byte(s, i + 2)
-               local c4 = byte(s, i + 3)
-
-               if not c2 or not c3 or not c4 then
-                       error("UTF-8 string terminated early")
-               end
-
-               -- validate byte 2
-               if c == 240 and (c2 < 144 or c2 > 191) then
-                       error("Invalid UTF-8 character")
-               elseif c == 244 and (c2 < 128 or c2 > 143) then
-                       error("Invalid UTF-8 character")
-               elseif c2 < 128 or c2 > 191 then
-                       error("Invalid UTF-8 character")
-               end
-
-               -- validate byte 3
-               if c3 < 128 or c3 > 191 then
-                       error("Invalid UTF-8 character")
-               end
-
-               -- validate byte 4
-               if c4 < 128 or c4 > 191 then
-                       error("Invalid UTF-8 character")
-               end
-
-               return 4
-
-       else
-               error("Invalid UTF-8 character")
-       end
-end
-
--- returns the number of characters in a UTF-8 string
-local function utf8len (s)
-       -- argument checking
-       if type(s) ~= "string" then
-               for k,v in pairs(s) do print('"',tostring(k),'"',tostring(v),'"') end
-               error("bad argument #1 to 'utf8len' (string expected, got ".. type(s).. ")")
-       end
-
-       local pos = 1
-       local bytes = len(s)
-       local length = 0
-
-       while pos <= bytes do
-               length = length + 1
-               pos = pos + utf8charbytes(s, pos)
-       end
-
-       return length
-end
-
--- functions identically to string.sub except that i and j are UTF-8 characters
--- instead of bytes
-local function utf8sub (s, i, j)
-       -- argument defaults
-       j = j or -1
-
-       local pos = 1
-       local bytes = len(s)
-       local length = 0
-
-       -- only set l if i or j is negative
-       local l = (i >= 0 and j >= 0) or utf8len(s)
-       local startChar = (i >= 0) and i or l + i + 1
-       local endChar   = (j >= 0) and j or l + j + 1
-
-       -- can't have start before end!
-       if startChar > endChar then
-               return ""
-       end
-
-       -- byte offsets to pass to string.sub
-       local startByte,endByte = 1,bytes
-
-       while pos <= bytes do
-               length = length + 1
-
-               if length == startChar then
-                       startByte = pos
-               end
-
-               pos = pos + utf8charbytes(s, pos)
-
-               if length == endChar then
-                       endByte = pos - 1
-                       break
-               end
-       end
-
-       if startChar > length then startByte = bytes+1   end
-       if endChar   < 1      then endByte   = 0         end
-
-       return sub(s, startByte, endByte)
-end
-
---[[
--- replace UTF-8 characters based on a mapping table
-local function utf8replace (s, mapping)
-       -- argument checking
-       if type(s) ~= "string" then
-               error("bad argument #1 to 'utf8replace' (string expected, got ".. type(s).. ")")
-       end
-       if type(mapping) ~= "table" then
-               error("bad argument #2 to 'utf8replace' (table expected, got ".. type(mapping).. ")")
-       end
-
-       local pos = 1
-       local bytes = len(s)
-       local charbytes
-       local newstr = ""
-
-       while pos <= bytes do
-               charbytes = utf8charbytes(s, pos)
-               local c = sub(s, pos, pos + charbytes - 1)
-
-               newstr = newstr .. (mapping[c] or c)
-
-               pos = pos + charbytes
-       end
-
-       return newstr
-end
-
-
--- identical to string.upper except it knows about unicode simple case conversions
-local function utf8upper (s)
-       return utf8replace(s, utf8_lc_uc)
-end
-
--- identical to string.lower except it knows about unicode simple case conversions
-local function utf8lower (s)
-       return utf8replace(s, utf8_uc_lc)
-end
-]]
-
--- identical to string.reverse except that it supports UTF-8
-local function utf8reverse (s)
-       -- argument checking
-       if type(s) ~= "string" then
-               error("bad argument #1 to 'utf8reverse' (string expected, got ".. type(s).. ")")
-       end
-
-       local bytes = len(s)
-       local pos = bytes
-       local charbytes
-       local newstr = ""
-
-       while pos > 0 do
-               local c = byte(s, pos)
-               while c >= 128 and c <= 191 do
-                       pos = pos - 1
-                       c = byte(s, pos)
-               end
-
-               charbytes = utf8charbytes(s, pos)
-
-               newstr = newstr .. sub(s, pos, pos + charbytes - 1)
-
-               pos = pos - 1
-       end
-
-       return newstr
-end
-
--- http://en.wikipedia.org/wiki/Utf8
--- http://developer.coronalabs.com/code/utf-8-conversion-utility
-local function utf8char(unicode)
-       if unicode <= 0x7F then return char(unicode) end
-
-       if (unicode <= 0x7FF) then
-               local Byte0 = 0xC0 + math.floor(unicode / 0x40);
-               local Byte1 = 0x80 + (unicode % 0x40);
-               return char(Byte0, Byte1);
-       end;
-
-       if (unicode <= 0xFFFF) then
-               local Byte0 = 0xE0 +  math.floor(unicode / 0x1000);
-               local Byte1 = 0x80 + (math.floor(unicode / 0x40) % 0x40);
-               local Byte2 = 0x80 + (unicode % 0x40);
-               return char(Byte0, Byte1, Byte2);
-       end;
-
-       if (unicode <= 0x10FFFF) then
-               local code = unicode
-               local Byte3= 0x80 + (code % 0x40);
-               code       = math.floor(code / 0x40)
-               local Byte2= 0x80 + (code % 0x40);
-               code       = math.floor(code / 0x40)
-               local Byte1= 0x80 + (code % 0x40);
-               code       = math.floor(code / 0x40)
-               local Byte0= 0xF0 + code;
-
-               return char(Byte0, Byte1, Byte2, Byte3);
-       end;
-
-       error 'Unicode cannot be greater than U+10FFFF!'
-end
-
-local shift_6  = 2^6
-local shift_12 = 2^12
-local shift_18 = 2^18
-
-local utf8unicode
-utf8unicode = function(str, i, j, byte_pos)
-       i = i or 1
-       j = j or i
-
-       if i > j then return end
-
-       local ch,bytes
-
-       if byte_pos then
-               bytes = utf8charbytes(str,byte_pos)
-               ch  = sub(str,byte_pos,byte_pos-1+bytes)
-       else
-               ch,byte_pos = utf8sub(str,i,i), 0
-               bytes       = #ch
-       end
-
-       local unicode
-
-       if bytes == 1 then unicode = byte(ch) end
-       if bytes == 2 then
-               local byte0,byte1 = byte(ch,1,2)
-               local code0,code1 = byte0-0xC0,byte1-0x80
-               unicode = code0*shift_6 + code1
-       end
-       if bytes == 3 then
-               local byte0,byte1,byte2 = byte(ch,1,3)
-               local code0,code1,code2 = byte0-0xE0,byte1-0x80,byte2-0x80
-               unicode = code0*shift_12 + code1*shift_6 + code2
-       end
-       if bytes == 4 then
-               local byte0,byte1,byte2,byte3 = byte(ch,1,4)
-               local code0,code1,code2,code3 = byte0-0xF0,byte1-0x80,byte2-0x80,byte3-0x80
-               unicode = code0*shift_18 + code1*shift_12 + code2*shift_6 + code3
-       end
-
-       return unicode,utf8unicode(str, i+1, j, byte_pos+bytes)
-end
-
--- Returns an iterator which returns the next substring and its byte interval
-local function utf8gensub(str, sub_len)
-       sub_len        = sub_len or 1
-       local byte_pos = 1
-       local length   = #str
-       return function(skip)
-               if skip then byte_pos = byte_pos + skip end
-               local char_count = 0
-               local start      = byte_pos
-               repeat
-                       if byte_pos > length then return end
-                       char_count  = char_count + 1
-                       local bytes = utf8charbytes(str,byte_pos)
-                       byte_pos    = byte_pos+bytes
-
-               until char_count == sub_len
-
-               local last  = byte_pos-1
-               local slice = sub(str,start,last)
-               return slice, start, last
-       end
-end
-
-local function binsearch(sortedTable, item, comp)
-       local head, tail = 1, #sortedTable
-       local mid = math.floor((head + tail)/2)
-       if not comp then
-               while (tail - head) > 1 do
-                       if sortedTable[tonumber(mid)] > item then
-                               tail = mid
-                       else
-                               head = mid
-                       end
-                       mid = math.floor((head + tail)/2)
-               end
-       end
-       if sortedTable[tonumber(head)] == item then
-               return true, tonumber(head)
-       elseif sortedTable[tonumber(tail)] == item then
-               return true, tonumber(tail)
-       else
-               return false
-       end
-end
-local function classMatchGenerator(class, plain)
-       local codes = {}
-       local ranges = {}
-       local ignore = false
-       local range = false
-       local firstletter = true
-       local unmatch = false
-
-       local it = utf8gensub(class)
-
-       local skip
-       for c, _, be in it do
-               skip = be
-               if not ignore and not plain then
-                       if c == "%" then
-                               ignore = true
-                       elseif c == "-" then
-                               table.insert(codes, utf8unicode(c))
-                               range = true
-                       elseif c == "^" then
-                               if not firstletter then
-                                       error('!!!')
-                               else
-                                       unmatch = true
-                               end
-                       elseif c == ']' then
-                               break
-                       else
-                               if not range then
-                                       table.insert(codes, utf8unicode(c))
-                               else
-                                       table.remove(codes) -- removing '-'
-                                       table.insert(ranges, {table.remove(codes), utf8unicode(c)})
-                                       range = false
-                               end
-                       end
-               elseif ignore and not plain then
-                       if c == 'a' then -- %a: represents all letters. (ONLY ASCII)
-                               table.insert(ranges, {65, 90}) -- A - Z
-                               table.insert(ranges, {97, 122}) -- a - z
-                       elseif c == 'c' then -- %c: represents all control characters.
-                               table.insert(ranges, {0, 31})
-                               table.insert(codes, 127)
-                       elseif c == 'd' then -- %d: represents all digits.
-                               table.insert(ranges, {48, 57}) -- 0 - 9
-                       elseif c == 'g' then -- %g: represents all printable characters except space.
-                               table.insert(ranges, {1, 8})
-                               table.insert(ranges, {14, 31})
-                               table.insert(ranges, {33, 132})
-                               table.insert(ranges, {134, 159})
-                               table.insert(ranges, {161, 5759})
-                               table.insert(ranges, {5761, 8191})
-                               table.insert(ranges, {8203, 8231})
-                               table.insert(ranges, {8234, 8238})
-                               table.insert(ranges, {8240, 8286})
-                               table.insert(ranges, {8288, 12287})
-                       elseif c == 'l' then -- %l: represents all lowercase letters. (ONLY ASCII)
-                               table.insert(ranges, {97, 122}) -- a - z
-                       elseif c == 'p' then -- %p: represents all punctuation characters. (ONLY ASCII)
-                               table.insert(ranges, {33, 47})
-                               table.insert(ranges, {58, 64})
-                               table.insert(ranges, {91, 96})
-                               table.insert(ranges, {123, 126})
-                       elseif c == 's' then -- %s: represents all space characters.
-                               table.insert(ranges, {9, 13})
-                               table.insert(codes, 32)
-                               table.insert(codes, 133)
-                               table.insert(codes, 160)
-                               table.insert(codes, 5760)
-                               table.insert(ranges, {8192, 8202})
-                               table.insert(codes, 8232)
-                               table.insert(codes, 8233)
-                               table.insert(codes, 8239)
-                               table.insert(codes, 8287)
-                               table.insert(codes, 12288)
-                       elseif c == 'u' then -- %u: represents all uppercase letters. (ONLY ASCII)
-                               table.insert(ranges, {65, 90}) -- A - Z
-                       elseif c == 'w' then -- %w: represents all alphanumeric characters. (ONLY ASCII)
-                               table.insert(ranges, {48, 57}) -- 0 - 9
-                               table.insert(ranges, {65, 90}) -- A - Z
-                               table.insert(ranges, {97, 122}) -- a - z
-                       elseif c == 'x' then -- %x: represents all hexadecimal digits.
-                               table.insert(ranges, {48, 57}) -- 0 - 9
-                               table.insert(ranges, {65, 70}) -- A - F
-                               table.insert(ranges, {97, 102}) -- a - f
-                       else
-                               if not range then
-                                       table.insert(codes, utf8unicode(c))
-                               else
-                                       table.remove(codes) -- removing '-'
-                                       table.insert(ranges, {table.remove(codes), utf8unicode(c)})
-                                       range = false
-                               end
-                       end
-                       ignore = false
-               else
-                       if not range then
-                               table.insert(codes, utf8unicode(c))
-                       else
-                               table.remove(codes) -- removing '-'
-                               table.insert(ranges, {table.remove(codes), utf8unicode(c)})
-                               range = false
-                       end
-                       ignore = false
-               end
-
-               firstletter = false
-       end
-
-       table.sort(codes)
-
-       local function inRanges(charCode)
-               for _,r in ipairs(ranges) do
-                       if r[1] <= charCode and charCode <= r[2] then
-                               return true
-                       end
-               end
-               return false
-       end
-       if not unmatch then
-               return function(charCode)
-                       return binsearch(codes, charCode) or inRanges(charCode)
-               end, skip
-       else
-               return function(charCode)
-                       return charCode ~= -1 and not (binsearch(codes, charCode) or inRanges(charCode))
-               end, skip
-       end
-end
-
---[[
--- utf8sub with extra argument, and extra result value
-local function utf8subWithBytes (s, i, j, sb)
-       -- argument defaults
-       j = j or -1
-
-       local pos = sb or 1
-       local bytes = len(s)
-       local length = 0
-
-       -- only set l if i or j is negative
-       local l = (i >= 0 and j >= 0) or utf8len(s)
-       local startChar = (i >= 0) and i or l + i + 1
-       local endChar   = (j >= 0) and j or l + j + 1
-
-       -- can't have start before end!
-       if startChar > endChar then
-               return ""
-       end
-
-       -- byte offsets to pass to string.sub
-       local startByte,endByte = 1,bytes
-
-       while pos <= bytes do
-               length = length + 1
-
-               if length == startChar then
-                       startByte = pos
-               end
-
-               pos = pos + utf8charbytes(s, pos)
-
-               if length == endChar then
-                       endByte = pos - 1
-                       break
-               end
-       end
-
-       if startChar > length then startByte = bytes+1   end
-       if endChar   < 1      then endByte   = 0         end
-
-       return sub(s, startByte, endByte), endByte + 1
-end
-]]
-
-local cache = setmetatable({},{
-       __mode = 'kv'
-})
-local cachePlain = setmetatable({},{
-       __mode = 'kv'
-})
-local function matcherGenerator(regex, plain)
-       local matcher = {
-               functions = {},
-               captures = {}
-       }
-       if not plain then
-               cache[regex] =  matcher
-       else
-               cachePlain[regex] = matcher
-       end
-       local function simple(func)
-               return function(cC)
-                       if func(cC) then
-                               matcher:nextFunc()
-                               matcher:nextStr()
-                       else
-                               matcher:reset()
-                       end
-               end
-       end
-       local function star(func)
-               return function(cC)
-                       if func(cC) then
-                               matcher:fullResetOnNextFunc()
-                               matcher:nextStr()
-                       else
-                               matcher:nextFunc()
-                       end
-               end
-       end
-       local function minus(func)
-               return function(cC)
-                       if func(cC) then
-                               matcher:fullResetOnNextStr()
-                       end
-                       matcher:nextFunc()
-               end
-       end
-       local function question(func)
-               return function(cC)
-                       if func(cC) then
-                               matcher:fullResetOnNextFunc()
-                               matcher:nextStr()
-                       end
-                       matcher:nextFunc()
-               end
-       end
-
-       local function capture(id)
-               return function(_)
-                       local l = matcher.captures[id][2] - matcher.captures[id][1]
-                       local captured = utf8sub(matcher.string, matcher.captures[id][1], matcher.captures[id][2])
-                       local check = utf8sub(matcher.string, matcher.str, matcher.str + l)
-                       if captured == check then
-                               for _ = 0, l do
-                                       matcher:nextStr()
-                               end
-                               matcher:nextFunc()
-                       else
-                               matcher:reset()
-                       end
-               end
-       end
-       local function captureStart(id)
-               return function(_)
-                       matcher.captures[id][1] = matcher.str
-                       matcher:nextFunc()
-               end
-       end
-       local function captureStop(id)
-               return function(_)
-                       matcher.captures[id][2] = matcher.str - 1
-                       matcher:nextFunc()
-               end
-       end
-
-       local function balancer(str)
-               local sum = 0
-               local bc, ec = utf8sub(str, 1, 1), utf8sub(str, 2, 2)
-               local skip = len(bc) + len(ec)
-               bc, ec = utf8unicode(bc), utf8unicode(ec)
-               return function(cC)
-                       if cC == ec and sum > 0 then
-                               sum = sum - 1
-                               if sum == 0 then
-                                       matcher:nextFunc()
-                               end
-                               matcher:nextStr()
-                       elseif cC == bc then
-                               sum = sum + 1
-                               matcher:nextStr()
-                       else
-                               if sum == 0 or cC == -1 then
-                                       sum = 0
-                                       matcher:reset()
-                               else
-                                       matcher:nextStr()
-                               end
-                       end
-               end, skip
-       end
-
-       matcher.functions[1] = function(_)
-               matcher:fullResetOnNextStr()
-               matcher.seqStart = matcher.str
-               matcher:nextFunc()
-               if (matcher.str > matcher.startStr and matcher.fromStart) or matcher.str >= matcher.stringLen then
-                       matcher.stop = true
-                       matcher.seqStart = nil
-               end
-       end
-
-       local lastFunc
-       local ignore = false
-       local skip = nil
-       local it = (function()
-               local gen = utf8gensub(regex)
-               return function()
-                       return gen(skip)
-               end
-       end)()
-       local cs = {}
-       for c, bs, be in it do
-               skip = nil
-               if plain then
-                       table.insert(matcher.functions, simple(classMatchGenerator(c, plain)))
-               else
-                       if ignore then
-                               if find('123456789', c, 1, true) then
-                                       if lastFunc then
-                                               table.insert(matcher.functions, simple(lastFunc))
-                                               lastFunc = nil
-                                       end
-                                       table.insert(matcher.functions, capture(tonumber(c)))
-                               elseif c == 'b' then
-                                       if lastFunc then
-                                               table.insert(matcher.functions, simple(lastFunc))
-                                               lastFunc = nil
-                                       end
-                                       local b
-                                       b, skip = balancer(sub(regex, be + 1, be + 9))
-                                       table.insert(matcher.functions, b)
-                               else
-                                       lastFunc = classMatchGenerator('%' .. c)
-                               end
-                               ignore = false
-                       else
-                               if c == '*' then
-                                       if lastFunc then
-                                               table.insert(matcher.functions, star(lastFunc))
-                                               lastFunc = nil
-                                       else
-                                               error('invalid regex after ' .. sub(regex, 1, bs))
-                                       end
-                               elseif c == '+' then
-                                       if lastFunc then
-                                               table.insert(matcher.functions, simple(lastFunc))
-                                               table.insert(matcher.functions, star(lastFunc))
-                                               lastFunc = nil
-                                       else
-                                               error('invalid regex after ' .. sub(regex, 1, bs))
-                                       end
-                               elseif c == '-' then
-                                       if lastFunc then
-                                               table.insert(matcher.functions, minus(lastFunc))
-                                               lastFunc = nil
-                                       else
-                                               error('invalid regex after ' .. sub(regex, 1, bs))
-                                       end
-                               elseif c == '?' then
-                                       if lastFunc then
-                                               table.insert(matcher.functions, question(lastFunc))
-                                               lastFunc = nil
-                                       else
-                                               error('invalid regex after ' .. sub(regex, 1, bs))
-                                       end
-                               elseif c == '^' then
-                                       if bs == 1 then
-                                               matcher.fromStart = true
-                                       else
-                                               error('invalid regex after ' .. sub(regex, 1, bs))
-                                       end
-                               elseif c == '$' then
-                                       if be == len(regex) then
-                                               matcher.toEnd = true
-                                       else
-                                               error('invalid regex after ' .. sub(regex, 1, bs))
-                                       end
-                               elseif c == '[' then
-                                       if lastFunc then
-                                               table.insert(matcher.functions, simple(lastFunc))
-                                       end
-                                       lastFunc, skip = classMatchGenerator(sub(regex, be + 1))
-                               elseif c == '(' then
-                                       if lastFunc then
-                                               table.insert(matcher.functions, simple(lastFunc))
-                                               lastFunc = nil
-                                       end
-                                       table.insert(matcher.captures, {})
-                                       table.insert(cs, #matcher.captures)
-                                       table.insert(matcher.functions, captureStart(cs[#cs]))
-                                       if sub(regex, be + 1, be + 1) == ')' then matcher.captures[#matcher.captures].empty = true end
-                               elseif c == ')' then
-                                       if lastFunc then
-                                               table.insert(matcher.functions, simple(lastFunc))
-                                               lastFunc = nil
-                                       end
-                                       local cap = table.remove(cs)
-                                       if not cap then
-                                               error('invalid capture: "(" missing')
-                                       end
-                                       table.insert(matcher.functions, captureStop(cap))
-                               elseif c == '.' then
-                                       if lastFunc then
-                                               table.insert(matcher.functions, simple(lastFunc))
-                                       end
-                                       lastFunc = function(cC) return cC ~= -1 end
-                               elseif c == '%' then
-                                       ignore = true
-                               else
-                                       if lastFunc then
-                                               table.insert(matcher.functions, simple(lastFunc))
-                                       end
-                                       lastFunc = classMatchGenerator(c)
-                               end
-                       end
-               end
-       end
-       if #cs > 0 then
-               error('invalid capture: ")" missing')
-       end
-       if lastFunc then
-               table.insert(matcher.functions, simple(lastFunc))
-       end
-
-       table.insert(matcher.functions, function()
-               if matcher.toEnd and matcher.str ~= matcher.stringLen then
-                       matcher:reset()
-               else
-                       matcher.stop = true
-               end
-       end)
-
-       matcher.nextFunc = function(self)
-               self.func = self.func + 1
-       end
-       matcher.nextStr = function(self)
-               self.str = self.str + 1
-       end
-       matcher.strReset = function(self)
-               local oldReset = self.reset
-               local str = self.str
-               self.reset = function(s)
-                       s.str = str
-                       s.reset = oldReset
-               end
-       end
-       matcher.fullResetOnNextFunc = function(self)
-               local oldReset = self.reset
-               local func = self.func +1
-               local str = self.str
-               self.reset = function(s)
-                       s.func = func
-                       s.str = str
-                       s.reset = oldReset
-               end
-       end
-       matcher.fullResetOnNextStr = function(self)
-               local oldReset = self.reset
-               local str = self.str + 1
-               local func = self.func
-               self.reset = function(s)
-                       s.func = func
-                       s.str = str
-                       s.reset = oldReset
-               end
-       end
-
-       matcher.process = function(self, str, start)
-
-               self.func = 1
-               start = start or 1
-               self.startStr = (start >= 0) and start or utf8len(str) + start + 1
-               self.seqStart = self.startStr
-               self.str = self.startStr
-               self.stringLen = utf8len(str) + 1
-               self.string = str
-               self.stop = false
-
-               self.reset = function(s)
-                       s.func = 1
-               end
-
-               -- local lastPos = self.str
-               -- local lastByte
-               local ch
-               while not self.stop do
-                       if self.str < self.stringLen then
-                               --[[ if lastPos < self.str then
-                                       print('last byte', lastByte)
-                                       ch, lastByte = utf8subWithBytes(str, 1, self.str - lastPos - 1, lastByte)
-                                       ch, lastByte = utf8subWithBytes(str, 1, 1, lastByte)
-                                       lastByte = lastByte - 1
-                               else
-                                       ch, lastByte = utf8subWithBytes(str, self.str, self.str)
-                               end
-                               lastPos = self.str ]]
-                               ch = utf8sub(str, self.str,self.str)
-                               --print('char', ch, utf8unicode(ch))
-                               self.functions[self.func](utf8unicode(ch))
-                       else
-                               self.functions[self.func](-1)
-                       end
-               end
-
-               if self.seqStart then
-                       local captures = {}
-                       for _,pair in pairs(self.captures) do
-                               if pair.empty then
-                                       table.insert(captures, pair[1])
-                               else
-                                       table.insert(captures, utf8sub(str, pair[1], pair[2]))
-                               end
-                       end
-                       return self.seqStart, self.str - 1, unpack(captures)
-               end
-       end
-
-       return matcher
-end
-
--- string.find
-local function utf8find(str, regex, init, plain)
-       local matcher = cache[regex] or matcherGenerator(regex, plain)
-       return matcher:process(str, init)
-end
-
--- string.match
-local function utf8match(str, regex, init)
-       init = init or 1
-       local found = {utf8find(str, regex, init)}
-       if found[1] then
-               if found[3] then
-                       return unpack(found, 3)
-               end
-               return utf8sub(str, found[1], found[2])
-       end
-end
-
--- string.gmatch
-local function utf8gmatch(str, regex, all)
-       regex = (utf8sub(regex,1,1) ~= '^') and regex or '%' .. regex
-       local lastChar = 1
-       return function()
-               local found = {utf8find(str, regex, lastChar)}
-               if found[1] then
-                       lastChar = found[2] + 1
-                       if found[all and 1 or 3] then
-                               return unpack(found, all and 1 or 3)
-                       end
-                       return utf8sub(str, found[1], found[2])
-               end
-       end
-end
-
-local function replace(repl, args)
-       local ret = ''
-       if type(repl) == 'string' then
-               local ignore = false
-               local num
-               for c in utf8gensub(repl) do
-                       if not ignore then
-                               if c == '%' then
-                                       ignore = true
-                               else
-                                       ret = ret .. c
-                               end
-                       else
-                               num = tonumber(c)
-                               if num then
-                                       ret = ret .. args[num]
-                               else
-                                       ret = ret .. c
-                               end
-                               ignore = false
-                       end
-               end
-       elseif type(repl) == 'table' then
-               ret = repl[args[1] or args[0]] or ''
-       elseif type(repl) == 'function' then
-               if #args > 0 then
-                       ret = repl(unpack(args, 1)) or ''
-               else
-                       ret = repl(args[0]) or ''
-               end
-       end
-       return ret
-end
--- string.gsub
-local function utf8gsub(str, regex, repl, limit)
-       limit = limit or -1
-       local ret = ''
-       local prevEnd = 1
-       local it = utf8gmatch(str, regex, true)
-       local found = {it()}
-       local n = 0
-       while #found > 0 and limit ~= n do
-               local args = {[0] = utf8sub(str, found[1], found[2]), unpack(found, 3)}
-               ret = ret .. utf8sub(str, prevEnd, found[1] - 1)
-               .. replace(repl, args)
-               prevEnd = found[2] + 1
-               n = n + 1
-               found = {it()}
-       end
-       return ret .. utf8sub(str, prevEnd), n
-end
-
-local utf8 = {}
-utf8.len = utf8len
-utf8.sub = utf8sub
-utf8.reverse = utf8reverse
-utf8.char = utf8char
-utf8.unicode = utf8unicode
-utf8.gensub = utf8gensub
-utf8.byte = utf8unicode
-utf8.find    = utf8find
-utf8.match   = utf8match
-utf8.gmatch  = utf8gmatch
-utf8.gsub    = utf8gsub
-utf8.dump    = dump
-utf8.format = format
-utf8.lower = lower
-utf8.upper = upper
-utf8.rep     = rep
-return utf8