From b3b068fe59800344d3c676ba663eb5ed2dde5cf9 Mon Sep 17 00:00:00 2001 From: Unrud Date: Sun, 30 Sep 2018 00:26:31 +0200 Subject: [PATCH] Use internal constants for pointer buttons, instead of x11 mapping --- bindata.generated.go | 4 ++-- main.go | 4 ++-- plugin.go | 11 ++++++++++- plugin_portal.go | 8 ++++---- plugin_windows.go | 18 ++++++++---------- plugin_x11.go | 23 ++++++++++++++++++----- webdata/fn.js | 16 ++++++++++------ 7 files changed, 54 insertions(+), 30 deletions(-) diff --git a/bindata.generated.go b/bindata.generated.go index aef277e..a02e2c8 100644 --- a/bindata.generated.go +++ b/bindata.generated.go @@ -75,7 +75,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _webdataFnJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3a\x6d\x6f\xdb\x38\xd2\xdf\xf3\x2b\xa6\xfa\x50\xc8\x8d\x63\xc7\x29\xfa\xec\xa2\xae\xfb\x9c\x37\x75\x37\xc1\x35\x4d\x60\xbb\xb7\x35\x82\x60\x41\x4b\x63\x5b\x5b\x99\xd4\x8a\x54\x1c\xf7\xda\xff\x7e\xa0\x5e\x49\x8a\x92\xd3\x5e\xf7\x3e\x1c\xce\x40\x53\x99\x9c\x19\xce\xfb\x0b\xe5\xfe\xb3\x23\x78\x06\x00\x70\xce\xa2\x7d\x1c\xac\x37\x02\x5c\xaf\x03\x67\xa7\x83\x9f\xe1\x03\x8d\x13\xff\x55\x22\xff\xfe\x8d\x25\x22\x64\xec\x53\xcf\x63\xdb\xd7\x47\x50\x20\xcd\x37\x01\x87\x55\x10\x22\x04\x1c\x22\x12\x0b\x60\x2b\x98\xe2\x96\x09\x3c\x99\xb3\xc4\xdb\x44\xc4\xef\x55\xe0\x6f\x19\x5b\x92\x58\xc2\xae\x62\x44\xe0\x6c\x25\x76\x24\xc6\x97\xb0\x67\x09\x78\x84\x42\x8c\x7e\xc0\x45\x1c\x2c\x13\x81\x10\x08\x20\xd4\xef\xb3\x18\xb6\xcc\x0f\x56\xfb\x9c\x48\x20\x20\xa1\x3e\xc6\x20\x36\x08\x02\xe3\x2d\x97\x87\xca\x2f\xbf\xbe\xff\x00\xbf\x22\xc5\x98\x84\x70\x93\x2c\xc3\xc0\x83\x77\x81\x87\x94\x23\x10\x0e\x91\x5c\xe1\x1b\xf4\x61\x59\x90\x92\x48\x6f\x25\x27\xb3\x9c\x13\x78\xcb\x12\xea\x13\x11\x30\xda\x05\x0c\xc4\x06\x63\xb8\xc7\x98\x07\x8c\xc2\xf3\xe2\x98\x9c\x66\x17\x58\x9c\xd3\x71\x89\x90\x22\xc4\xc0\x22\x89\xda\x01\x42\xf7\x10\x12\x51\x61\x2b\x4a\x30\xd4\x23\xb5\x51\x09\xed\x43\x40\xd3\x43\x36\x2c\x42\x10\x1b\x22\xa4\xbc\xbb\x20\x0c\x61\x89\x90\x70\x5c\x25\x61\x37\x27\xb4\x4c\x04\xfc\x76\x39\xbf\xb8\xfe\x30\x87\xf1\xfb\x05\xfc\x36\x9e\x4e\xc7\xef\xe7\x8b\x21\xec\x02\xb1\x61\x89\x00\xbc\xc7\x8c\x5a\xb0\x8d\xc2\x00\x7d\xd8\x91\x38\x26\x54\xec\x81\xad\x72\x22\x57\x93\xe9\xf9\xc5\xf8\xfd\x7c\xfc\xcb\xe5\xbb\xcb\xf9\x02\x58\x0c\x6f\x2f\xe7\xef\x27\xb3\x19\xbc\xbd\x9e\xc2\x18\x6e\xc6\xd3\xf9\xe5\xf9\x87\x77\xe3\x29\xdc\x7c\x98\xde\x5c\xcf\x26\x3d\x80\x19\x4a\xe6\x30\xa7\xd1\xa2\xf7\x55\x6a\xbd\x18\xc1\x47\x41\x82\x90\x57\x7a\x58\xb0\x04\xf8\x86\x25\xa1\x0f\x1b\x72\x8f\x10\xa3\x87\xc1\x3d\xfa\x40\xc0\x63\xd1\xfe\xb0\x4d\x33\x32\x24\x64\x74\x9d\x0a\x9c\x7b\x57\x0f\xe0\x72\x05\x94\x89\x2e\x70\x44\x78\xb5\x11\x22\x7a\xd9\xef\xef\x76\xbb\xde\x9a\x26\x3d\x16\xaf\xfb\x61\x46\x80\xf7\x5f\x4b\x76\xfa\x47\x47\xfd\x3e\xdc\x0e\x20\xb5\x48\x17\xce\xb2\x07\xe4\x5d\x78\x5e\x3c\xde\x1d\x79\x8c\x72\x01\xf3\xeb\x0f\xe7\x17\xbf\x5f\x5d\xff\x63\xf2\xfb\xfc\x62\x3a\x99\x5d\x5c\xbf\x7b\x03\x23\xb8\x1d\x9c\x76\x61\xf0\x42\xfe\xbb\x1b\x6a\xa0\xf3\xcb\xab\x89\xb4\xcf\x08\xce\x5e\x9c\x0e\xd3\x83\x6e\xa3\x87\x3e\xef\xc2\x36\x09\xc5\x5d\x17\x7a\xbd\x5e\x41\xfc\xe6\xfa\xf2\xfd\x7c\x32\xfd\x7d\x7c\x7e\x3e\x79\x37\x99\x8e\xe7\x97\xd7\xef\x25\xf1\x23\xa9\xe3\xdb\xd3\x2e\x9c\xde\x75\xb3\xe7\x9f\x7f\xea\xc2\xa0\xf8\x32\xf8\xe9\xb9\xf2\xed\xc5\x8b\xe7\x5d\x38\xbb\x3b\xba\x1b\x1e\x1d\xdd\x93\x18\x76\x7c\x98\xfe\x1f\x11\xbf\x7c\x08\xc9\x12\xc3\x7c\x5f\x48\x01\xaf\x98\x54\xfc\x08\x56\x24\xe4\x38\xac\xd6\x67\x42\x86\xf4\x08\x4e\x95\xb5\x77\x84\x8b\x09\xf5\x8d\xd5\x29\x86\x48\x38\xfa\xe7\x2c\xa1\x0a\x06\xa3\x6b\x16\xd0\x75\xae\x45\x29\xcc\x5d\xb6\xb1\x65\xf7\xf8\x71\x96\x6c\x2b\x50\xb9\xb2\xd0\x56\xb8\x17\xb3\x30\xfc\x68\x59\xd3\xe1\xfc\x98\xac\xd7\x01\x5d\xeb\x02\x14\xab\xf3\x60\x8b\x32\x16\x46\x40\x93\x30\x54\xa9\x68\x28\x47\xab\x84\x7a\x32\x78\x61\x95\x84\x21\xf7\x62\x44\x3a\xa1\x64\x19\xa2\xef\x76\xe0\x9f\xa9\x72\x63\x14\x49\x4c\xc1\xf5\x99\x97\x6c\x91\x8a\x5e\x0d\x14\xbe\x7c\x49\x21\xe5\xa7\x84\xda\xe1\xf2\x53\x20\xde\x3e\x0a\x76\xcb\x3e\x4b\xc0\xd9\x61\x40\xde\x4a\x30\x95\xaa\x33\x3c\xfa\xaa\x08\x16\xe3\x9f\x09\x72\x85\x11\x17\x0b\xc9\x82\x15\xb8\xd8\xab\x01\x14\xdb\xf2\x63\xd9\x76\x3b\xc3\x74\xfb\x2b\x60\xc8\x31\x27\x92\x49\x3b\x6d\x27\xd5\x00\x64\x25\xb8\x65\x9f\x15\xc0\x99\x85\x9a\x0d\xc2\x4e\x8a\x1f\xe0\xcb\x02\x50\x12\xd2\x74\x89\x0f\x81\x06\xa3\xe8\xb1\x34\x91\x0e\xa3\x1e\xd4\x00\x62\xe1\xd9\x70\xa2\xc9\x61\x92\x36\xc0\x36\xc2\x5b\xf6\xf9\x9c\x50\x0f\x43\xbb\x76\xdb\xe0\x5a\xc9\xf2\x47\xf0\x6a\x02\xd9\x75\xad\x44\x59\x88\x12\xef\x51\x01\x99\x81\x3e\x2e\x20\x5b\x60\xf5\x80\x6c\x03\xe4\xad\x04\x65\xf2\x31\xe2\x91\xf8\x7e\x85\xe2\x6d\x08\x5d\xe3\xe4\x1e\xa9\x78\x17\x70\x21\x2b\x9e\x1b\xe6\x0f\x56\xef\xaa\x8b\xfa\x64\x34\x4a\x3b\xa3\x55\x40\xd1\xb7\xea\x9b\xf8\xbe\x7e\x82\xb3\x32\x18\x70\xba\x50\x9e\x7a\xc8\x19\xeb\xf2\x7e\x0f\x07\x19\xad\xef\xe3\xc3\x6a\x9c\xef\x61\x62\xcb\x3e\x7f\x27\x07\x16\xab\x7f\x0f\x03\x57\xb3\x8a\xce\x79\xd3\xf9\x9a\xf7\xc8\x26\x29\xad\xab\xae\xc8\xfa\x16\x11\x6c\x71\x26\xc8\x36\x32\xa2\xa3\x3a\x3f\xf0\x91\x8a\x60\x15\x60\xfc\x32\xab\xda\xbd\x6a\xa5\x5b\x42\x45\x64\x8d\x1f\x0b\x80\xf4\x8b\xb1\x97\x76\x05\x2d\x00\x0b\x75\x6f\x61\xec\xd5\x90\x15\x80\x52\x82\x97\xd5\x63\x26\xb9\x1e\x38\x6a\x57\x71\x49\x7d\x7c\xf8\x65\x7f\xe9\xbb\x81\x3f\x67\x6f\x03\x5a\x6a\x5c\xb6\x9e\xae\xac\xf6\x41\xda\x2a\x40\x00\xaf\x8c\x7e\xa4\x17\x22\x5d\x8b\xcd\x10\x82\xe3\x63\xd5\x4e\x29\x92\xec\x70\x74\xf0\xdb\xe0\x4e\x51\xd8\xf0\xa8\xd2\xeb\x0a\x5c\x09\x3f\x02\x93\x87\xe2\x93\x9b\x22\x18\x96\xab\x5f\x8f\xaa\xbf\xf9\xee\xc9\x40\x17\xd3\x23\xa1\x97\xc8\x29\xe2\x86\x05\x54\x60\x3c\xf6\x3c\x0c\x31\x4e\xa7\x93\xab\x24\x14\x2e\x8f\x10\x5b\xc5\xb5\x75\x94\x4d\x42\xf3\x33\x18\x59\x11\x6e\x83\xbb\xdb\xd3\xbb\x8a\x73\xd2\x06\x38\x50\x00\xa5\x5a\xf8\x19\xbc\x1a\x81\xc6\x68\xf1\xf1\x18\x15\x01\x4d\xd0\xd4\x49\xa9\x51\xa9\xd0\xd3\x06\x4d\x92\x33\x1b\x1a\x1f\x34\xb2\x06\x27\x30\x30\xe4\x38\x04\xac\xca\x52\x54\x9a\x4c\xe7\x70\x02\x7c\xd0\x81\x7e\x2a\x5f\xfa\xdc\x81\x67\xe0\x12\xf9\x85\x0c\x3a\x70\x0c\x64\x30\x54\x0c\x2c\xc5\x69\xb1\x05\xbc\xd6\xe5\xcc\x0f\xb3\xf2\xd6\x46\x46\xe3\x5a\x73\xad\x81\x19\x40\x6f\xf4\xee\xb8\xac\xa8\x4d\x5d\xb3\xdc\xdb\xf1\x1e\x47\xea\xbb\xce\x72\x30\x3c\x75\x8c\x62\x96\x44\x3e\x11\x28\x07\x89\x31\xf5\x67\x69\x7f\x5d\x12\x2d\x1b\x7e\x18\xc1\x15\x11\x9b\x9e\x88\x13\xea\xb9\xc5\x0c\x90\xa7\xb7\x72\x08\xa8\x43\x2d\x2a\x28\xa9\xca\x74\x97\x2c\x79\x46\xa1\x03\xaf\x47\x30\x80\x2f\x5f\x40\x5b\x5f\x64\xeb\xaa\x5e\xcb\xa1\xe3\x64\x94\x3d\x0f\xb5\xad\x85\xb2\xb5\xa8\xb6\x4a\xb1\xb7\x0e\x1c\xe7\x72\x1c\x83\x33\x2c\xbe\x2d\x3a\xaa\xc2\x95\xc1\x45\x97\xa3\x9a\x66\x14\x79\xf3\x71\xc6\x06\xd9\x24\x73\x4e\xc7\x22\x75\x8e\x57\x97\x5b\x19\xa4\x4e\x46\xc5\xb7\xa1\xb1\xbd\xd0\xb6\x17\xe6\x76\x36\x2c\x89\x58\x8d\xd7\x52\x33\x5c\xea\xa2\x90\xba\xd0\x4d\xc1\x8e\xad\x78\x6d\x08\xf5\x43\x4c\x6b\x81\x8b\xf7\x42\x6d\x70\xac\x29\xba\x96\x0a\xb4\xf1\x14\xef\x45\xaf\x2c\x18\x43\x1d\xc6\x18\x6d\xb5\x3d\xcb\xd0\x5a\xec\xd7\x67\x4a\xdd\xc4\xa2\x9c\x68\xe5\xe1\x59\xc7\xe0\xe7\x3c\x0f\x1b\xf3\xb1\x68\xaf\x3b\x52\x7c\x51\xd5\x1a\x41\xe2\x35\x66\xed\x44\x44\x7c\x78\xfa\x14\x1a\x37\xd3\x89\xfe\x5b\x12\xac\xe4\x3a\x8a\x51\x36\x21\x6f\x70\x45\x64\x35\xe9\x54\x70\x86\x0d\xa2\x84\x6f\x5c\xa3\xdf\x48\xb9\xe8\xea\xaa\xef\x74\x0c\x05\x6b\x77\x05\xaa\x94\x4f\x0a\xfd\x9a\x3c\x2b\xf7\x02\xcd\x99\xa2\x16\xb4\x6d\x09\x43\x97\x5b\xbb\x53\x68\x8b\x4e\x23\x30\xda\x03\xb4\x10\xcb\xcc\x9e\xd2\x3a\x69\xe3\x6f\x5a\x26\x44\x12\x17\xa9\xd7\x40\x32\x64\x6c\x4b\xc8\x16\x67\xd5\x03\x54\x2f\xa8\x65\x20\x9b\xec\x54\x71\xbc\x72\x8c\xe3\x2d\x37\x25\x3a\x71\x5b\x5c\x4f\xa8\xaf\x46\xf5\x5f\x16\x2f\x59\x9f\xf6\x60\x34\x6a\x55\x47\x28\x6c\x7d\x9b\x61\x32\x89\xff\xaa\xde\x66\xb4\xc5\x8e\x11\x1d\x3c\x0a\x03\x0f\x25\xa1\x2e\x0c\xcc\x08\xd0\x52\xcc\xf1\x71\x63\x7c\x34\xa4\xb0\xbf\xd0\x6c\xa0\x26\x1c\x3d\x13\xbe\xb6\xde\x73\xe6\x56\xa8\x65\xe1\x22\xc3\x56\xae\xf7\xf5\x11\xc9\xbc\x4c\x67\xc6\xd1\xb2\xa8\x3d\x7d\x5a\xcb\xc3\xea\xa9\xb5\x3e\xe4\x07\x9f\xf9\x44\x11\xeb\xe9\x53\xdd\x34\x70\xa2\x96\x9e\x57\xfa\x2d\xaf\xe9\x9b\xcb\x44\x08\x46\xeb\xd9\xcf\x56\x7c\x8c\x92\x0d\xd9\xfd\x7e\x86\x3e\x50\xac\x57\xcd\xa0\x76\x2a\x67\x8d\x54\x9e\x7f\x03\x95\xe7\x8d\x54\xac\x7d\x77\x65\x11\x59\xf8\x73\x58\xd9\x07\x0c\x1c\x23\xdc\x0a\x3a\x16\x71\xeb\x99\x8e\xa3\x28\x92\x64\xad\x63\xed\x1a\xaa\xaf\x09\xd7\x10\x2b\x26\x87\xa7\x4e\xad\x4e\xd8\x52\x5a\x76\xf5\xf5\xbf\xac\xf6\x43\xb2\x5a\x43\xda\x80\xff\x74\x9d\x92\x2c\x98\x26\xe5\xc9\xf6\x63\x15\xb1\xf9\xca\x42\x5f\xf9\x6f\x32\x7b\xda\x8d\x55\x06\x31\x51\xd3\x37\x29\x01\x17\x45\x03\xc4\xff\x8c\x45\x36\x8b\x44\x6c\xa7\xf2\x94\xde\x03\xc1\x49\xed\xca\xc4\x7f\xc8\xf7\xd2\x8c\xd9\x95\xf9\xe9\x58\x3b\x41\x7e\x9a\x08\x2e\x5a\x08\x2e\x4a\x82\x86\x2b\x34\xd7\x80\xd6\xba\xa6\x5e\xd6\x16\x9f\x54\x72\x3b\xd6\xad\xfd\x08\x39\x82\xdb\x28\xb5\x14\x91\xd7\xa3\xe6\x2a\x52\x7c\x5a\x22\x46\x37\xe7\x57\xcd\x9f\x52\x77\xfa\x16\x23\x0d\x75\xf4\x7d\x1d\xbd\xd5\x24\x3a\xba\x94\xf7\x0d\x86\x82\x98\x99\xa0\x81\x84\x25\x53\xa4\xd1\x78\x3c\x92\x82\x3c\x3b\x7c\x1f\x56\x4e\xc2\xfe\x43\x07\xfa\xca\xf9\xcf\x60\x70\x7a\x7a\xda\xd1\xe8\x2e\x52\xba\xfb\x6f\xa3\xbb\x3f\x40\xb7\x51\xb1\x16\x3b\x1c\xc6\x5a\x58\xd4\xdf\x8e\x55\xa9\xd8\x9a\x7c\x8d\xae\xaf\xbd\xc5\x29\xd2\x78\x9b\x7f\xb6\xf6\x5b\xe9\xed\xc4\xc1\x41\xef\x78\x94\x5a\xb9\x61\xb2\xcb\x76\x17\xd6\xd6\xa5\xf1\xe0\x5a\x0f\x64\x5c\x80\xd4\x8e\x33\x6e\x40\xf4\x03\xcb\x27\xeb\x15\x97\xf5\x6a\x7e\x43\x42\xc9\x0d\x4e\x91\x47\x8c\x72\x74\xb7\xc8\x39\x59\xa3\x56\x68\x36\xe4\x7a\xf9\x87\x9c\xe7\x70\x07\x7f\xf0\xd9\xc5\xd8\x75\x66\x17\xe3\x93\xb3\x17\xff\xe7\x74\xc1\x99\x4f\x3e\xce\x8b\x22\x97\x81\xf6\x38\x8a\x8b\xab\xf1\xf9\xdf\x71\x5f\xd0\xb3\xc3\x65\x7c\xba\xbb\x80\xfa\x6c\xd7\x0b\x99\x97\x7a\x72\x6f\x43\xf8\xa6\xc7\x93\x25\x17\xb1\x3b\x28\x92\x66\x7e\x3f\xb8\x14\x8c\xb8\x39\xfa\x3a\x3b\xc6\x75\x7e\x59\xcc\x27\x33\xa7\x93\x5d\xf4\xe5\xd4\xea\x6f\x2e\x42\x46\x7c\xa7\x0b\x85\xf0\xda\xa5\x1f\x49\xc4\x46\x96\x2a\x8f\x08\xf3\x12\x26\xfd\x75\x40\x84\x34\x2b\xd9\xe5\x9b\x91\x35\x8a\xfc\x35\x4a\x5a\xf4\x9c\x1c\xc4\x51\xee\xcc\xbc\x90\xf1\x94\x5a\x23\x52\x06\x51\xe0\x44\xa4\x15\x38\x22\x2a\x64\x7a\x91\x72\x00\x3c\x85\x51\x39\xfa\x84\xfb\x25\x23\x71\xeb\x31\x05\x8c\x8a\x57\xbd\x72\x2a\xdb\xeb\x46\x7c\x13\x56\xa5\x23\xf0\x41\xb4\xe1\xca\xfd\x02\x3e\xd3\x4d\x8f\x8b\x7d\x88\x3d\x3f\xe0\x51\x48\x64\x96\x77\x28\xa3\xe8\x94\x6a\x68\xdd\x2f\x44\x69\x05\x92\x67\xf6\xee\x49\x98\xa0\xdc\x70\xf2\xb7\x25\xd9\x2f\x52\x6e\x62\x26\x98\xc7\xa4\x9e\x9d\x1d\xe7\x2f\x9d\xea\x9a\xb3\xf4\xd6\xa8\x84\x19\x81\x93\xfe\x86\xc7\xd1\x67\x40\x9d\x48\x41\x23\x8b\xd6\x1d\xcf\xe3\xea\x37\x5c\xce\x98\xf7\x09\x85\xab\x20\x1c\x83\xd3\xef\xcb\x31\xa0\x0a\x0d\xc6\x05\x25\x5b\x54\x5a\x13\x85\x13\x16\x0b\xf8\x7f\x70\x5e\x6a\x28\xe9\xea\x4b\x70\x1c\xb5\x9f\x71\xfa\x3b\x2e\x15\x9d\x33\xd1\x63\x34\x0f\x54\xe9\xfb\x45\x80\xa4\x97\x6e\x66\x12\xd5\x22\xc5\xd2\xf7\xa6\x66\x73\x8d\x4e\x27\x0b\x5e\x5b\xaa\x32\x03\xcf\x7e\x6f\x5b\xcf\x53\x29\x6f\x3d\x9f\x08\xa2\x76\x55\x79\x10\xb6\xda\xbb\x10\x64\x13\x70\xc1\xe2\x7d\x8f\x0b\x22\x30\x35\x5e\xe5\xf9\x86\x58\xcd\x7e\xb4\x0a\xf1\xc1\xd1\x65\x4d\xfd\x69\xc5\xbc\x84\xbb\x87\x66\x3d\xab\xff\x1a\x24\xf3\xa1\x40\x35\x55\xaa\x62\xd5\x50\xa6\x8d\x2c\xbf\x43\x30\x45\xb2\xff\x9e\x43\xb7\xcd\x63\xb5\x79\x28\x0c\xdb\x55\x68\x00\x36\x85\xbd\xa2\x96\x42\x19\x07\x53\x58\x91\x80\x2c\xc5\xc0\x0b\x03\xef\x93\x53\xbd\xd1\xad\x9c\xde\xd4\xd4\x23\x15\xda\xae\x54\x5d\xb1\x8f\x55\xda\x0f\xf2\x3d\xf9\x29\xbc\x3d\x4a\xb8\xec\xe6\x05\x2a\x89\xbe\x2b\x93\x83\xe2\x00\xca\xcb\x9c\x27\x96\xdf\x98\xa9\x92\x9b\xc9\xbe\x55\xa4\x4c\x01\x35\x94\x46\xe3\x34\x18\xe5\xdf\xf7\x70\x5b\x2c\xd6\x7f\x33\x16\x11\xbf\x7e\xe3\x92\xaf\x34\xba\x9e\x4c\x57\x3f\xcc\xed\x94\xd2\xf4\x64\x94\x66\xf0\xba\xcf\x95\x57\x0d\x42\x66\xfd\x0a\xc3\xb0\x3f\xd8\x2a\x9d\xba\xa9\x7b\x67\xde\x44\x15\x5e\xb3\x24\xde\x27\xd7\xe2\x22\x39\x18\xa3\x11\x8b\xf2\x3c\x7a\xa0\x7c\x34\xb9\x73\xe1\xcf\xa6\x88\x8f\x49\x91\xf0\x2d\xf9\xc5\x7e\xe9\x76\x40\xdc\x22\xed\xb4\x9a\x3e\x46\xd9\x61\xfe\x10\xe3\x97\xc5\x3b\xa3\x69\x53\xbd\x54\x4c\xfd\x88\x74\x1e\xe2\x72\x5a\x77\xba\xea\xbb\xcb\x6e\xf9\x3b\xcb\x03\xb8\x48\xfd\x12\x73\x42\xfd\x47\xe3\x79\xe9\xb5\x63\x89\x9a\xdd\x42\x3e\x1a\x5b\x4e\x51\x25\xae\x9c\x5b\x2a\xcc\xaf\xd5\xe3\xbf\x02\x00\x00\xff\xff\x25\x06\x2c\x5d\x02\x30\x00\x00") +var _webdataFnJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3a\x5b\x6f\xdb\x38\xd6\xef\xfe\x15\xa7\x7a\x28\xe4\xc6\xb1\xe3\x14\xfd\x66\x10\xd7\xfd\xd6\x4d\x9d\x49\xb0\xb9\xc1\x76\x76\x6a\x04\x41\x41\x4b\xc7\xb6\xa6\xb2\xa8\x11\xa9\x38\xee\xb6\xff\x7d\x41\x5d\x49\x8a\x92\xd3\x6e\x67\x1f\x16\x6b\xa0\xa9\x4c\x9e\x73\x78\xee\x17\xca\xbd\x57\x2d\x78\x05\x00\x70\x4a\xc3\x5d\xe4\xad\xd6\x1c\x6c\xa7\x0d\xc7\x47\xfd\x5f\xe1\x2e\x88\x62\xf7\x6d\x2c\xfe\xfe\x8d\xc6\xdc\xa7\xf4\x73\xd7\xa1\x9b\x77\x2d\xc8\x91\x66\x6b\x8f\xc1\xd2\xf3\x11\x3c\x06\x21\x89\x38\xd0\x25\x4c\x70\x43\x39\x1e\xce\x68\xec\xac\x43\xe2\x76\x4b\xf0\x33\x4a\x17\x24\x12\xb0\xcb\x08\x11\x18\x5d\xf2\x2d\x89\xf0\x04\x76\x34\x06\x87\x04\x10\xa1\xeb\x31\x1e\x79\x8b\x98\x23\x78\x1c\x48\xe0\xf6\x68\x04\x1b\xea\x7a\xcb\x5d\x46\xc4\xe3\x10\x07\x2e\x46\xc0\xd7\x08\x1c\xa3\x0d\x13\x87\x8a\x2f\xbf\x5d\xdf\xc1\x6f\x18\x60\x44\x7c\xb8\x8d\x17\xbe\xe7\xc0\xa5\xe7\x60\xc0\x10\x08\x83\x50\xac\xb0\x35\xba\xb0\xc8\x49\x09\xa4\x33\xc1\xc9\x34\xe3\x04\xce\x68\x1c\xb8\x84\x7b\x34\xe8\x00\x7a\x7c\x8d\x11\x3c\x62\xc4\x3c\x1a\xc0\xeb\xfc\x98\x8c\x66\x07\x68\x94\xd1\xb1\x09\x17\x22\x44\x40\x43\x81\xda\x06\x12\xec\xc0\x27\xbc\xc4\x96\x94\xa0\xa9\x47\x68\xa3\x14\xda\x05\x2f\x48\x0e\x59\xd3\x10\x81\xaf\x09\x17\xf2\x6e\x3d\xdf\x87\x05\x42\xcc\x70\x19\xfb\x9d\x8c\xd0\x22\xe6\xf0\xfb\xc5\xec\xfc\xe6\x6e\x06\xa3\xeb\x39\xfc\x3e\x9a\x4c\x46\xd7\xb3\xf9\x00\xb6\x1e\x5f\xd3\x98\x03\x3e\x62\x4a\xcd\xdb\x84\xbe\x87\x2e\x6c\x49\x14\x91\x80\xef\x80\x2e\x33\x22\x57\xe3\xc9\xe9\xf9\xe8\x7a\x36\x7a\x7f\x71\x79\x31\x9b\x03\x8d\xe0\xec\x62\x76\x3d\x9e\x4e\xe1\xec\x66\x02\x23\xb8\x1d\x4d\x66\x17\xa7\x77\x97\xa3\x09\xdc\xde\x4d\x6e\x6f\xa6\xe3\x2e\xc0\x14\x05\x73\x98\xd1\x68\xd0\xfb\x32\xb1\x5e\x84\xe0\x22\x27\x9e\xcf\x4a\x3d\xcc\x69\x0c\x6c\x4d\x63\xdf\x85\x35\x79\x44\x88\xd0\x41\xef\x11\x5d\x20\xe0\xd0\x70\xb7\xdf\xa6\x29\x19\xe2\xd3\x60\x95\x08\x9c\x79\x57\x17\xe0\x62\x09\x01\xe5\x1d\x60\x88\xf0\x76\xcd\x79\x78\xd2\xeb\x6d\xb7\xdb\xee\x2a\x88\xbb\x34\x5a\xf5\xfc\x94\x00\xeb\xbd\x13\xec\xf4\x5a\xad\x5e\x0f\xee\xfb\x90\x58\xa4\x03\xc7\xe9\x03\xb2\x0e\xbc\xce\x1f\x1f\x5a\x0e\x0d\x18\x87\xd9\xcd\xdd\xe9\xf9\xa7\xab\x9b\x7f\x8c\x3f\xcd\xce\x27\xe3\xe9\xf9\xcd\xe5\x07\x18\xc2\x7d\xff\xa8\x03\xfd\x37\xe2\xdf\xc3\x40\x01\x9d\x5d\x5c\x8d\x85\x7d\x86\x70\xfc\xe6\x68\x90\x1c\x74\x1f\x3e\xf5\x58\x07\x36\xb1\xcf\x1f\x3a\xd0\xed\x76\x73\xe2\xb7\x37\x17\xd7\xb3\xf1\xe4\xd3\xe8\xf4\x74\x7c\x39\x9e\x8c\x66\x17\x37\xd7\x82\x78\x4b\xe8\xf8\xfe\xa8\x03\x47\x0f\x9d\xf4\xf9\xd7\x5f\x3a\xd0\xcf\xbf\xf4\x7f\x79\x2d\x7d\x7b\xf3\xe6\x75\x07\x8e\x1f\x5a\x0f\x83\x96\x46\xf6\xfd\xdd\x6c\x76\x73\xfd\xe9\x72\x7c\x26\xd8\x39\x1a\x98\xb7\x27\x17\xbf\x9d\x8b\xfd\x7e\xcd\xfe\xd5\xc5\x87\x0f\x97\x63\x21\xcf\xa0\xd5\x7a\x24\x11\x6c\xd9\x20\xf9\x3f\x24\x6e\xf1\xe0\x93\x05\xfa\xd9\x3e\x17\x1a\xbc\xa2\xc2\xb2\x43\x58\x12\x9f\xe1\xa0\x5c\x9f\x72\x91\x33\x12\x6e\x8a\xb5\x4b\xc2\xf8\x38\x70\xb5\xd5\x09\xfa\x48\x18\xba\xa7\x34\x0e\x24\x0c\x1a\xac\xa8\x17\xac\x32\x33\x09\x6d\x3d\xa4\x1b\x1b\xfa\x88\x1f\xa7\xf1\xa6\x04\x15\x2b\x73\x65\x85\x39\x11\xf5\xfd\x8f\x86\x35\x15\xce\x8d\xc8\x6a\xe5\x05\x2b\x55\x80\x7c\x75\xe6\x6d\x50\x04\xdb\x10\x82\xd8\xf7\x65\x2a\x0a\x4a\x6b\x19\x07\x8e\xc8\x0e\xb0\x8c\x7d\x9f\x39\x11\x62\x30\x0e\xc8\xc2\x47\xd7\x6e\xc3\x3f\x13\xeb\x45\xc8\xe3\x28\x00\xdb\xa5\x4e\xbc\xc1\x80\x77\x2b\xa0\xf0\xf5\x6b\x02\x29\x3e\x05\xd4\x16\x17\x9f\x3d\x7e\xf6\x2c\xd8\x0d\xfd\x22\x00\xa7\xfb\x01\x59\x23\xc1\x44\xaa\xf6\xa0\xf5\x4d\x12\x2c\xc2\x3f\x63\x64\x12\x23\x36\xe6\x92\x79\x4b\xb0\xb1\x5b\x01\xc8\xb7\xc5\xc7\xb0\x6d\xb7\x07\xc9\xf6\x37\x40\x9f\x61\x46\x24\x95\x76\xd2\x4c\xaa\x06\xc8\x48\x70\x43\xbf\x48\x80\x53\x03\x35\x13\x84\x99\x14\xdb\xc3\x97\x01\xa0\x20\xa4\xe8\x12\x9f\x3c\x05\x46\xd2\x63\x61\x22\x15\x46\x3e\xa8\x06\xc4\xc0\xb3\xe6\x44\xe3\xfd\x24\x4d\x80\x4d\x84\x37\xf4\xcb\x29\x09\x1c\xf4\xcd\xda\x6d\x82\x6b\x24\xcb\x9e\xc1\xab\x0e\x64\xd6\xb5\x14\x65\x3e\x0a\xbc\x67\x05\x64\x0a\xfa\xbc\x80\x6c\x80\x55\x03\xb2\x09\x90\x35\x12\x14\xc9\x47\x8b\x47\xe2\xba\x25\x8a\xb3\x26\xc1\x0a\xc7\x8f\x18\xf0\x4b\x8f\x71\x51\x52\x6d\x3f\x7b\x30\x7a\x57\x55\xd4\x17\xc3\x61\xd2\x7a\x2d\xbd\x00\x5d\xa3\xbe\x89\xeb\xaa\x27\x58\x4b\x8d\x01\xab\x03\xc5\xa9\xfb\x9c\xb1\x2a\xef\x8f\x70\x90\xd2\xfa\x31\x3e\x8c\xc6\xf9\x11\x26\x36\xf4\xcb\x0f\x72\x60\xb0\xfa\x8f\x30\x70\x35\x2d\xe9\x9c\xd6\x9d\xaf\x78\x8f\xe8\xc2\x92\xba\x6a\xf3\xb4\x31\xe2\xde\x06\xa7\x9c\x6c\x42\x2d\x3a\xca\xf3\x3d\x17\x03\xee\x2d\x3d\x8c\x4e\xd2\xaa\xdd\x2d\x57\x3a\x05\x54\x48\x56\xf8\x31\x07\x48\xbe\x68\x7b\x49\x57\xd0\x00\x30\x97\xf7\xe6\xda\x5e\x05\x59\x02\x28\x24\x38\x29\x1f\x53\xc9\xd5\xc0\x91\xbb\x8a\x8b\xc0\xc5\xa7\xf7\xbb\x0b\xd7\xf6\xdc\x19\x3d\xf3\x82\x42\xe3\xa2\xb7\xb5\x45\xb5\xf7\x92\x56\x01\x3c\x78\xab\xf5\x23\x5d\x1f\x83\x15\x5f\x0f\xc0\x3b\x38\x90\xed\x94\x20\x89\x0e\x47\x05\xbf\xf7\x1e\x24\x85\x0d\x5a\xa5\x5e\x97\x60\x0b\xf8\x21\xe8\x3c\xe4\x9f\xcc\x14\xde\xa0\x58\xfd\xd6\x2a\xff\x66\xbb\x87\x7d\x55\x4c\x87\xf8\x4e\x2c\xc6\x94\x5b\xea\x05\x1c\xa3\x91\xe3\xa0\x8f\x51\x32\xfe\x5c\xc5\x3e\xb7\x59\x88\xd8\x28\xae\xa9\x65\xad\x13\x9a\x1d\xc3\xd0\x88\x70\xef\x3d\xdc\x1f\x3d\x94\x9c\x93\x26\xc0\xbe\x04\x28\xd4\xc2\x8e\xe1\xed\x10\x14\x46\xf3\x8f\x43\x03\xee\x05\x31\xea\x3a\x29\x34\x2a\x14\x7a\x54\xa3\x49\x72\x6c\x42\x63\xfd\x5a\xd6\xe0\x10\xfa\x9a\x1c\xfb\x80\x65\x59\xf2\x4a\x93\xea\x1c\x0e\x81\xf5\xdb\xd0\x4b\xe4\x4b\x9e\xdb\xf0\x0a\x6c\x22\xbe\x90\x7e\x1b\x0e\x80\xf4\x07\x92\x81\x85\x38\x0d\xb6\x80\x77\xaa\x9c\xd9\x61\x46\xde\x9a\xc8\x28\x5c\x2b\xae\xd5\xd7\x03\xe8\x83\xda\x1d\x17\x15\xb5\xae\x6b\x16\x7b\x5b\xd6\x65\x18\xb8\xb6\xb5\xb0\xe0\xc0\x38\xb7\x1c\x80\x35\x38\xb2\xb4\x32\x17\x87\x2e\xe1\x28\x46\x8c\x51\xe0\x4e\x93\xce\xbb\x38\xae\x18\x05\x60\x08\x57\x84\xaf\xbb\x3c\x8a\x03\xc7\xce\xa7\x83\x2c\xf1\x15\xe3\x41\x15\x6a\x5e\x42\x09\x25\x27\xbb\x64\xc1\x52\x0a\x6d\x78\x37\x84\x3e\x7c\xfd\x0a\xca\xfa\x3c\x5d\x97\x35\x5e\x8c\x23\x87\xc3\xf4\x79\xa0\x6c\xcd\xa5\xad\x79\xb9\x55\x28\x64\x23\x14\x92\xca\x21\x54\x90\x7f\x9b\xb7\x65\x53\x48\x23\x8d\x2a\x47\x39\xe7\x48\xf2\x66\x83\x8e\x09\xb2\x4e\xe6\x8c\x8e\x41\xea\x0c\xaf\x2a\xb7\x34\x62\x1d\x0e\xf3\x6f\x03\x6d\x7b\xae\x6c\xcf\xf5\xed\x74\x8c\xe2\x91\x1c\xc9\x85\x66\x98\xd0\x45\x2e\x75\xae\x9b\x9c\x1d\x53\x59\x5b\x93\xc0\xf5\x31\xa9\x12\x36\x3e\x72\xb9\xf5\x31\x26\xef\x4a\x92\x50\x06\x57\x7c\xe4\xdd\xa2\x94\x0c\x54\x18\x6d\xe8\x55\xf6\x0c\xe3\x6c\xbe\x5f\x9d\x36\x55\x13\xf3\x62\xd6\x15\x87\xa7\xbd\x84\x9b\xf1\x3c\xa8\xcd\xd4\xbc\xb9\x22\x09\xf1\x79\x59\x85\x38\x89\x56\x98\x36\x1a\x21\x71\xe1\xe5\x4b\xa8\xdd\x4c\x66\xfd\xef\x49\xbd\x82\xeb\x30\x42\xd1\x9e\x7c\xc0\x25\x11\x75\xa6\x5d\xc2\x69\x36\x08\x63\xb6\xb6\xb5\x4e\x24\xe1\xa2\xa3\xaa\xbe\xdd\xd6\x14\xac\xdc\x22\xc8\x52\xbe\xc8\xf5\xab\xf3\x2c\xdd\x18\xd4\x67\x8a\x4a\xd0\x36\x25\x0c\x55\x6e\xe5\xb6\xa1\x29\x3a\xb5\xc0\x68\x0e\xd0\x5c\x2c\x3d\xaf\x0a\xeb\x24\x23\x81\x6e\x19\x1f\x49\x94\x27\x65\x0d\x49\x93\xb1\x29\x55\x1b\x9c\x55\x0d\x50\xb5\xd4\x16\x81\xac\xb3\x53\xc6\xf1\xd2\xd2\x8e\x37\xdc\xa1\xa8\xc4\x4d\x71\x3d\x0e\x5c\x39\xaa\xff\xb2\x78\x49\x3b\xb8\x27\xad\x85\x2b\x7b\x45\x6e\xea\xe8\x34\x93\x09\xfc\xb7\xd5\x06\xa4\x29\x76\xb4\xe8\x60\xa1\xef\x39\x28\x08\x75\xa0\xaf\x47\x80\x92\x62\x0e\x0e\x6a\xe3\xa3\x26\x85\xfd\x85\x66\x03\x39\xe1\xa8\x99\xf0\x9d\xf1\x8a\x35\xb3\x42\x25\x0b\xe7\x19\xb6\x74\xbd\x6f\xcf\x48\xe6\x45\x3a\xd3\x8e\x16\x45\xed\xe5\xcb\x4a\x1e\x96\x4f\xfd\x8e\x0e\xe5\x27\x73\xf3\x42\x12\xf8\xe5\x4b\xd5\x68\x70\x28\x17\xa5\xb7\xea\xd5\xb3\xee\xb5\x8b\x98\x73\x1a\x54\xf3\xa2\xa9\x2c\x69\xc5\x1c\xd2\x97\x0e\x29\xba\x41\x78\xc9\xd2\xe5\x24\x6b\xa6\x7b\xfc\x5c\xba\xc9\x7d\xf4\x77\x10\x7e\xfd\x5c\xc2\xe9\x45\xb6\x29\xc8\x54\x23\x67\xf8\xc2\xae\x7d\x4b\x8b\xe0\x9c\xb6\x51\x1b\x3a\x23\xd5\x74\xca\x90\xe7\x99\xb8\xd2\x30\x77\x34\x2b\x56\x54\x50\x13\x90\x3a\xcf\x47\x56\xa5\x18\x99\xf2\x66\x7a\xf3\xf6\xbf\xd4\xf9\x53\x52\x67\x4d\x6e\x82\xff\x74\x31\x14\x2c\xe8\x26\x65\xf1\xe6\x63\x19\xfc\xd9\xca\x5c\x5d\xf9\x6f\x32\x7b\xd2\xf2\x95\x06\xd1\x51\x93\x17\x39\x1e\xe3\x79\x97\xc5\xfe\x8c\x78\x3a\xf0\x84\x74\x2b\xf3\x94\x5c\x43\xc1\x61\xe5\xc6\xc6\x7d\xca\xf6\x92\xe4\xdb\x11\x89\xed\x40\x39\x41\x7c\xea\x08\xce\x1b\x08\xce\x0b\x82\x9a\x2b\xd4\x97\x93\xc6\xe2\x29\xdf\x15\xe7\x9f\x44\x72\x33\xd6\xbd\xf9\x88\x43\xe8\x3f\x98\x28\x35\xd4\xa3\x77\xc3\xfa\x82\x94\x7f\x1a\x22\x46\x35\xe7\x37\xc5\x9f\x12\x77\xfa\x1e\x23\x0d\x54\xf4\x5d\x15\xbd\xd1\x24\x2a\xba\x90\xf7\x03\xfa\x9c\xe8\x99\xa0\x86\x84\x21\x53\x24\xd1\x78\x30\x14\x82\xbc\xda\x7f\x1d\x57\x8c\xdb\xee\x53\x1b\x7a\xd2\xf9\xaf\xa0\x7f\x74\x74\xd4\x56\xe8\xce\x13\xba\xbb\xef\xa3\xbb\xdb\x43\xb7\x56\xb1\x06\x3b\xec\xc7\x9a\x1b\xd4\xdf\x8c\x55\xaa\xd8\x98\x7c\xb5\xd6\xb2\xb9\x5b\xca\xd3\x78\x93\x7f\x36\xb6\x6e\xc9\x15\xc8\xde\x69\xf2\x60\x98\x58\xb9\x66\x7c\x4c\x77\xe7\xc6\x06\xa7\xf6\xe0\x4a\xf3\xa4\xdd\xb2\x54\x8e\xd3\xae\x59\xd4\x03\x8b\x27\xe3\x3d\x9a\xf1\xcd\xc0\x9a\xf8\x82\x1b\x9c\x20\x0b\x69\xc0\xd0\xde\x20\x63\x64\x85\x4a\xa1\x59\x93\x9b\xc5\x1f\x62\x68\xc4\x2d\xfc\xc1\xa6\xe7\x23\xdb\x9a\x9e\x8f\x0e\x8f\xdf\xfc\x9f\xd5\x01\x6b\x36\xfe\x38\xcb\x8b\x5c\x0a\xda\x65\xc8\xcf\xaf\x46\xa7\x7f\xc7\x5d\x4e\xcf\x0c\x97\xf2\x69\x6f\xbd\xc0\xa5\xdb\xae\x4f\x9d\xc4\x93\xbb\x6b\xc2\xd6\x5d\x16\x2f\x18\x8f\xec\x7e\x9e\x34\xb3\xeb\xc9\x05\xa7\xc4\xce\xd0\x57\xe9\x31\xb6\xf5\x7e\x3e\x1b\x4f\xad\x76\x7a\x9b\x98\x51\xab\xbe\x38\xf1\x29\x71\xad\x0e\xe4\xc2\x2b\x37\x8b\x24\xe6\x6b\x51\xaa\x1c\xc2\xf5\x9b\x9e\xe4\xc7\x09\x21\x06\x69\xc9\x2e\x5e\xcc\xac\x90\x67\x6f\x71\x92\xa2\x67\x65\x20\x96\x74\x31\xe7\xf8\x94\x25\xd4\x6a\x91\x52\x88\x1c\x27\x24\x8d\xc0\x21\x91\x21\x93\xdb\x9a\x3d\xe0\x09\x8c\xcc\xd1\x67\xdc\x2d\x28\x89\x1a\x8f\xc9\x61\x64\xbc\xf2\x8d\x57\xd1\x84\xd7\xe2\xeb\xb0\x32\x1d\x8e\x4f\xbc\x09\x57\xec\xe7\xf0\xa9\x6e\xba\x8c\xef\x7c\xec\xba\x1e\x0b\x7d\x22\xb2\xbc\x15\xd0\x00\xad\x42\x0d\x8d\xfb\xb9\x28\x8d\x40\xe2\xcc\xee\x23\xf1\x63\x14\x1b\x56\xf6\xb2\x26\xfd\x41\xcc\x6d\x44\x39\x75\xa8\xd0\xb3\xb5\x65\xec\xc4\x2a\xef\x52\x0b\x6f\x0d\x0b\x98\x21\x58\xc9\x6f\x94\x2c\x75\xd0\x54\x89\xe4\x34\xd2\x68\xdd\xb2\x2c\xae\x7e\xc7\xc5\x94\x3a\x9f\x91\xdb\x12\xc2\x01\x58\xbd\x9e\x18\x03\xca\xd0\xa0\x8c\x07\x64\x83\x52\x6b\x22\x71\x42\x23\x0e\xff\x0f\xd6\x89\x82\x92\xac\x9e\x80\x65\xc9\xfd\x8c\xd5\xdb\x32\xa1\xe8\x8c\x89\x2e\x0d\xb2\x40\x15\xbe\x9f\x07\x48\x72\xb3\xa7\x27\x51\x25\x52\x0c\x7d\x6f\x62\x36\x5b\xeb\x74\xd2\xe0\x35\xa5\x2a\x3d\xf0\xcc\x97\xc3\xd5\x3c\x95\xf0\xd6\x75\x09\x27\x72\x57\x95\x05\x61\xa3\xbd\x73\x41\xd6\x1e\xe3\x34\xda\x75\x19\x27\x1c\x13\xe3\x95\x9e\xaf\x89\x55\xef\x47\x4b\x1f\x9f\x2c\x55\xd6\xc4\x9f\x96\xd4\x89\x99\xbd\x6f\xd6\x33\xfa\xaf\x46\x32\x1b\x0a\x64\x53\x25\x2a\x96\x0d\xa5\xdb\xc8\xf0\x33\x08\x5d\x24\xf3\xcf\x49\x54\xdb\x3c\x57\x9b\xfb\xc2\xb0\x59\x85\x1a\x60\x5d\xd8\x4b\x6a\xc9\x95\xb1\x37\x85\xe5\x09\xc8\x50\x0c\x1c\xdf\x73\x3e\x5b\xe5\x0b\xe5\xd2\xe9\x75\x4d\x3d\x53\xa1\xcd\x4a\x55\x15\xfb\x5c\xa5\xfd\x24\xdf\x13\x9f\xdc\xdb\xc3\x98\x89\x6e\x9e\xa3\x94\xe8\x3b\x22\x39\x48\x0e\x20\xbd\x31\x7a\x61\xf8\x89\x9b\x2c\xb9\x9e\xec\x1b\x45\x4a\x15\x50\x41\xa9\x35\x4e\x8d\x51\xfe\x7d\x0f\x37\xc5\x62\xf5\x27\x6b\x21\x71\xab\x37\x2e\xd9\x4a\xad\xeb\x89\x74\xf5\xd3\xdc\x4e\x2a\x4d\x2f\x86\x49\x06\xaf\xfa\x5c\x71\xd5\xc0\x45\xd6\x2f\x31\x34\xfb\x83\xa9\xd2\xc9\x9b\xaa\x77\x66\x4d\x54\xee\x35\x0b\xe2\x7c\xb6\x0d\x2e\x92\x81\xd1\x20\xa4\x61\x96\x47\xf7\x94\x8f\x3a\x77\xce\xfd\x59\x17\xf1\x39\x29\x12\xbe\x27\xbf\x98\x2f\xdd\xf6\x88\x9b\xa7\x9d\x46\xd3\x47\x28\x3a\xcc\x9f\x62\xfc\xa2\x78\xa7\x34\x4d\xaa\x17\x8a\xa9\x1e\x91\xcc\x43\x4c\x4c\xeb\x56\x47\x7e\x41\xda\x29\x7e\xe6\xb9\x07\x17\x03\xb7\xc0\x1c\x07\xee\xb3\xf1\x9c\xe4\xda\xb1\x40\x4d\x6f\x21\x9f\x8d\x2d\xa6\xa8\x02\x57\xcc\x2d\x25\xe6\xb7\xf2\xf1\x5f\x01\x00\x00\xff\xff\x85\x6f\x62\xc1\xe2\x30\x00\x00") func webdataFnJsBytes() ([]byte, error) { return bindataRead( @@ -90,7 +90,7 @@ func webdataFnJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "webdata/fn.js", size: 12290, mode: os.FileMode(436), modTime: time.Unix(1, 0)} + info := bindataFileInfo{name: "webdata/fn.js", size: 12514, mode: os.FileMode(436), modTime: time.Unix(1, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/main.go b/main.go index 5b37a91..fb81b74 100644 --- a/main.go +++ b/main.go @@ -84,14 +84,14 @@ func processCommand(plugin Plugin, command string) error { return plugin.PointerScroll(int(x), int(y)) } if command[0] == 'b' { - if x <= 0 || x > 3 { + if x < 0 || x >= int64(PointerButtonLimit) { return errors.New("unsupported pointer button") } b := true if y == 0 { b = false } - return plugin.PointerButton(uint(x), b) + return plugin.PointerButton(PointerButton(x), b) } return errors.New("unsupported command") } diff --git a/plugin.go b/plugin.go index 64482fc..c5d7a6e 100644 --- a/plugin.go +++ b/plugin.go @@ -19,6 +19,15 @@ package main +type PointerButton int + +const ( + PointerButtonLeft PointerButton = iota + PointerButtonRight + PointerButtonMiddle + PointerButtonLimit +) + type PluginInfo struct { Name string Init func() (Plugin, error) @@ -41,7 +50,7 @@ func (e UnsupportedPlatformError) Error() string { type Plugin interface { Close() error KeyboardText(text string) error - PointerButton(button uint, press bool) error + PointerButton(button PointerButton, press bool) error PointerMove(deltaX, deltaY int) error PointerScroll(deltaHorizontal, deltaVertical int) error PointerScrollFinish() error diff --git a/plugin_portal.go b/plugin_portal.go index f83f44f..242ff57 100644 --- a/plugin_portal.go +++ b/plugin_portal.go @@ -208,18 +208,18 @@ func (p *portalPlugin) KeyboardText(text string) error { return nil } -func (p *portalPlugin) PointerButton(button uint, press bool) error { +func (p *portalPlugin) PointerButton(button PointerButton, press bool) error { p.lock.RLock() defer p.lock.RUnlock() if p.bus == nil { return errors.New("dbus connection closed") } var btn int32 - if button == 1 { + if button == PointerButtonLeft { btn = btnLeft - } else if button == 2 { + } else if button == PointerButtonMiddle { btn = btnMiddle - } else if button == 3 { + } else if button == PointerButtonRight { btn = btnRight } else { return errors.New("unsupported pointer button") diff --git a/plugin_windows.go b/plugin_windows.go index 3978a7d..c3344ce 100644 --- a/plugin_windows.go +++ b/plugin_windows.go @@ -106,21 +106,19 @@ func (p *windowsPlugin) KeyboardText(text string) error { return nil } -func (p *windowsPlugin) PointerButton(button uint, press bool) error { - input := mouseInput{ - typ: inputMouse, - } - if button == 1 && press { +func (p *windowsPlugin) PointerButton(button PointerButton, press bool) error { + input := mouseInput{typ: inputMouse} + if button == PointerButtonLeft && press { input.dwFlags = mouseeventfLeftdown - } else if button == 1 { + } else if button == PointerButtonLeft { input.dwFlags = mouseeventfLeftup - } else if button == 2 && press { + } else if button == PointerButtonMiddle && press { input.dwFlags = mouseeventfMiddledown - } else if button == 2 { + } else if button == PointerButtonMiddle { input.dwFlags = mouseeventfMiddleup - } else if button == 3 && press { + } else if button == PointerButtonRight && press { input.dwFlags = mouseeventfRightdown - } else if button == 3 { + } else if button == PointerButtonRight { input.dwFlags = mouseeventfRightup } else { return errors.New("unsupported pointer button") diff --git a/plugin_x11.go b/plugin_x11.go index 0ead480..bbe4a65 100644 --- a/plugin_x11.go +++ b/plugin_x11.go @@ -135,7 +135,7 @@ keycodes: return nil } -func (p *x11Plugin) PointerButton(button uint, press bool) error { +func (p *x11Plugin) sendButton(button uint, press bool) error { p.lock.Lock() defer p.lock.Unlock() if p.display == nil { @@ -153,6 +153,19 @@ func (p *x11Plugin) PointerButton(button uint, press bool) error { return nil } +func (p *x11Plugin) PointerButton(button PointerButton, press bool) error { + if button == PointerButtonLeft { + return p.sendButton(1, press) + } + if button == PointerButtonRight { + return p.sendButton(3, press) + } + if button == PointerButtonMiddle { + return p.sendButton(2, press) + } + return errors.New("unsupported pointer button") +} + func (p *x11Plugin) PointerMove(deltaX, deltaY int) error { p.lock.Lock() defer p.lock.Unlock() @@ -177,10 +190,10 @@ func (p *x11Plugin) PointerScroll(deltaHorizontal, deltaVertical int) error { stepsHorizontal = -stepsHorizontal } for i := 0; i < stepsHorizontal; i++ { - if err := p.PointerButton(buttonHorizontal, true); err != nil { + if err := p.sendButton(buttonHorizontal, true); err != nil { return err } - if err := p.PointerButton(buttonHorizontal, false); err != nil { + if err := p.sendButton(buttonHorizontal, false); err != nil { return err } } @@ -190,10 +203,10 @@ func (p *x11Plugin) PointerScroll(deltaHorizontal, deltaVertical int) error { stepsVertical = -stepsVertical } for i := 0; i < stepsVertical; i++ { - if err := p.PointerButton(buttonVertical, true); err != nil { + if err := p.sendButton(buttonVertical, true); err != nil { return err } - if err := p.PointerButton(buttonVertical, false); err != nil { + if err := p.sendButton(buttonVertical, false); err != nil { return err } } diff --git a/webdata/fn.js b/webdata/fn.js index 72cad38..552ee0c 100644 --- a/webdata/fn.js +++ b/webdata/fn.js @@ -28,6 +28,10 @@ const POINTER_ACCELERATION = [ [553, 2] ]; +const POINTER_BUTTON_LEFT = 0; +const POINTER_BUTTON_RIGHT = 1; +const POINTER_BUTTON_MIDDLE = 2; + var ws; var pad; var padlabel; @@ -141,7 +145,7 @@ function calculatePointerAccelerationMult(speed) { function onDraggingTimeout() { draggingTimeout = null; - ws.send("b1;0"); + ws.send("b" + POINTER_BUTTON_LEFT + ";0"); } function updateMoveAndScroll() { @@ -215,20 +219,20 @@ function handleEnd(evt) { } if (ongoingTouches.length == 0 && touchReleasedCount >= 1 && dragging) { - ws.send("b1;0"); + ws.send("b" + POINTER_BUTTON_LEFT + ";0"); } if (ongoingTouches.length == 0 && touchReleasedCount >= 1 && !touchMoved && evt.timeStamp - touchStart < TOUCH_TIMEOUT) { var button = 0; if (touchReleasedCount == 1) { - button = 1; + button = POINTER_BUTTON_LEFT; } else if (touchReleasedCount == 2) { - button = 3; + button = POINTER_BUTTON_RIGHT; } else if (touchReleasedCount == 3) { - button = 2; + button = POINTER_BUTTON_MIDDLE; } ws.send("b" + button + ";1"); - if (button == 1) { + if (button == POINTER_BUTTON_LEFT) { draggingTimeout = setTimeout(onDraggingTimeout, TOUCH_TIMEOUT); } else { ws.send("b" + button + ";0");